Remove AtomRendererBindings
After the simplification of code this class is no longer needed.
This commit is contained in:
		
					parent
					
						
							
								0bcc9b7713
							
						
					
				
			
			
				commit
				
					
						91320a9e55
					
				
			
		
					 6 changed files with 45 additions and 127 deletions
				
			
		
							
								
								
									
										2
									
								
								atom.gyp
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								atom.gyp
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -266,8 +266,6 @@
 | 
			
		|||
      'atom/renderer/api/atom_api_spell_check_client.h',
 | 
			
		||||
      'atom/renderer/api/atom_api_web_frame.cc',
 | 
			
		||||
      'atom/renderer/api/atom_api_web_frame.h',
 | 
			
		||||
      'atom/renderer/api/atom_renderer_bindings.cc',
 | 
			
		||||
      'atom/renderer/api/atom_renderer_bindings.h',
 | 
			
		||||
      'atom/renderer/atom_render_view_observer.cc',
 | 
			
		||||
      'atom/renderer/atom_render_view_observer.h',
 | 
			
		||||
      'atom/renderer/atom_renderer_client.cc',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,71 +0,0 @@
 | 
			
		|||
// Copyright (c) 2013 GitHub, Inc.
 | 
			
		||||
// Use of this source code is governed by the MIT license that can be
 | 
			
		||||
// found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
#include "atom/renderer/api/atom_renderer_bindings.h"
 | 
			
		||||
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
#include "atom/common/native_mate_converters/string16_converter.h"
 | 
			
		||||
#include "atom/common/native_mate_converters/v8_value_converter.h"
 | 
			
		||||
#include "base/memory/scoped_ptr.h"
 | 
			
		||||
#include "base/values.h"
 | 
			
		||||
#include "content/public/renderer/render_view.h"
 | 
			
		||||
#include "third_party/WebKit/public/web/WebFrame.h"
 | 
			
		||||
#include "third_party/WebKit/public/web/WebView.h"
 | 
			
		||||
 | 
			
		||||
#include "atom/common/node_includes.h"
 | 
			
		||||
 | 
			
		||||
namespace atom {
 | 
			
		||||
 | 
			
		||||
namespace {
 | 
			
		||||
 | 
			
		||||
v8::Handle<v8::Object> GetProcessObject(v8::Handle<v8::Context> context) {
 | 
			
		||||
  v8::Handle<v8::Object> process = context->Global()->Get(
 | 
			
		||||
      mate::StringToV8(context->GetIsolate(), "process"))->ToObject();
 | 
			
		||||
  DCHECK(!process.IsEmpty());
 | 
			
		||||
 | 
			
		||||
  return process;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}  // namespace
 | 
			
		||||
 | 
			
		||||
AtomRendererBindings::AtomRendererBindings() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AtomRendererBindings::~AtomRendererBindings() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AtomRendererBindings::OnBrowserMessage(content::RenderView* render_view,
 | 
			
		||||
                                            const base::string16& channel,
 | 
			
		||||
                                            const base::ListValue& args) {
 | 
			
		||||
  if (!render_view->GetWebView())
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  v8::Isolate* isolate = v8::Isolate::GetCurrent();
 | 
			
		||||
  v8::HandleScope handle_scope(isolate);
 | 
			
		||||
 | 
			
		||||
  v8::Local<v8::Context> context =
 | 
			
		||||
      render_view->GetWebView()->mainFrame()->mainWorldScriptContext();
 | 
			
		||||
  if (context.IsEmpty())
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  v8::Context::Scope context_scope(context);
 | 
			
		||||
 | 
			
		||||
  v8::Handle<v8::Object> process = GetProcessObject(context);
 | 
			
		||||
  scoped_ptr<V8ValueConverter> converter(new V8ValueConverter);
 | 
			
		||||
 | 
			
		||||
  std::vector<v8::Handle<v8::Value>> arguments;
 | 
			
		||||
  arguments.reserve(1 + args.GetSize());
 | 
			
		||||
  arguments.push_back(mate::ConvertToV8(isolate, channel));
 | 
			
		||||
 | 
			
		||||
  for (size_t i = 0; i < args.GetSize(); i++) {
 | 
			
		||||
    const base::Value* value;
 | 
			
		||||
    if (args.Get(i, &value))
 | 
			
		||||
      arguments.push_back(converter->ToV8Value(value, context));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  node::MakeCallback(isolate, process, "emit", arguments.size(), &arguments[0]);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}  // namespace atom
 | 
			
		||||
| 
						 | 
				
			
			@ -1,42 +0,0 @@
 | 
			
		|||
// Copyright (c) 2013 GitHub, Inc.
 | 
			
		||||
// Use of this source code is governed by the MIT license that can be
 | 
			
		||||
// found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
#ifndef ATOM_RENDERER_API_ATOM_RENDERER_BINDINGS_H_
 | 
			
		||||
#define ATOM_RENDERER_API_ATOM_RENDERER_BINDINGS_H_
 | 
			
		||||
 | 
			
		||||
#include "atom/common/api/atom_bindings.h"
 | 
			
		||||
 | 
			
		||||
#include "base/strings/string16.h"
 | 
			
		||||
 | 
			
		||||
namespace base {
 | 
			
		||||
class ListValue;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace content {
 | 
			
		||||
class RenderView;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace blink {
 | 
			
		||||
class WebFrame;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace atom {
 | 
			
		||||
 | 
			
		||||
class AtomRendererBindings : public AtomBindings {
 | 
			
		||||
 public:
 | 
			
		||||
  AtomRendererBindings();
 | 
			
		||||
  virtual ~AtomRendererBindings();
 | 
			
		||||
 | 
			
		||||
  // Dispatch messages from browser.
 | 
			
		||||
  void OnBrowserMessage(content::RenderView* render_view,
 | 
			
		||||
                        const base::string16& channel,
 | 
			
		||||
                        const base::ListValue& args);
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
  DISALLOW_COPY_AND_ASSIGN(AtomRendererBindings);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
}  // namespace atom
 | 
			
		||||
 | 
			
		||||
#endif  // ATOM_RENDERER_API_ATOM_RENDERER_BINDINGS_H_
 | 
			
		||||
| 
						 | 
				
			
			@ -8,8 +8,9 @@
 | 
			
		|||
#include <vector>
 | 
			
		||||
 | 
			
		||||
#include "atom/common/api/api_messages.h"
 | 
			
		||||
#include "atom/common/native_mate_converters/string16_converter.h"
 | 
			
		||||
#include "atom/common/native_mate_converters/value_converter.h"
 | 
			
		||||
#include "atom/common/options_switches.h"
 | 
			
		||||
#include "atom/renderer/api/atom_renderer_bindings.h"
 | 
			
		||||
#include "atom/renderer/atom_renderer_client.h"
 | 
			
		||||
#include "base/command_line.h"
 | 
			
		||||
#include "base/strings/string_number_conversions.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -19,14 +20,32 @@
 | 
			
		|||
#include "third_party/WebKit/public/web/WebDocument.h"
 | 
			
		||||
#include "third_party/WebKit/public/web/WebFrame.h"
 | 
			
		||||
#include "third_party/WebKit/public/web/WebLocalFrame.h"
 | 
			
		||||
#include "third_party/WebKit/public/web/WebKit.h"
 | 
			
		||||
#include "third_party/WebKit/public/web/WebView.h"
 | 
			
		||||
 | 
			
		||||
#include "atom/common/node_includes.h"
 | 
			
		||||
 | 
			
		||||
using blink::WebFrame;
 | 
			
		||||
 | 
			
		||||
namespace atom {
 | 
			
		||||
 | 
			
		||||
namespace {
 | 
			
		||||
 | 
			
		||||
v8::Handle<v8::Object> GetProcessObject(v8::Isolate* isolate,
 | 
			
		||||
                                        v8::Handle<v8::Context> context) {
 | 
			
		||||
  v8::Handle<v8::String> key = mate::StringToV8(isolate, "process");
 | 
			
		||||
  return context->Global()->Get(key)->ToObject();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::vector<v8::Handle<v8::Value>> ListValueToVector(
 | 
			
		||||
    v8::Isolate* isolate,
 | 
			
		||||
    const base::ListValue& list) {
 | 
			
		||||
  v8::Handle<v8::Value> array = mate::ConvertToV8(isolate, list);
 | 
			
		||||
  std::vector<v8::Handle<v8::Value>> result;
 | 
			
		||||
  mate::ConvertFromV8(isolate, array, &result);
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}  // namespace
 | 
			
		||||
 | 
			
		||||
AtomRenderViewObserver::AtomRenderViewObserver(
 | 
			
		||||
    content::RenderView* render_view,
 | 
			
		||||
    AtomRendererClient* renderer_client)
 | 
			
		||||
| 
						 | 
				
			
			@ -82,8 +101,25 @@ void AtomRenderViewObserver::OnBrowserMessage(const base::string16& channel,
 | 
			
		|||
  if (!document_created_)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  renderer_client_->atom_bindings()->OnBrowserMessage(
 | 
			
		||||
      render_view(), channel, args);
 | 
			
		||||
  if (!render_view()->GetWebView())
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  blink::WebFrame* frame = render_view()->GetWebView()->mainFrame();
 | 
			
		||||
  if (!frame || frame->isWebRemoteFrame())
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  v8::Isolate* isolate = blink::mainThreadIsolate();
 | 
			
		||||
  v8::HandleScope handle_scope(isolate);
 | 
			
		||||
 | 
			
		||||
  v8::Local<v8::Context> context = frame->mainWorldScriptContext();
 | 
			
		||||
  v8::Context::Scope context_scope(context);
 | 
			
		||||
 | 
			
		||||
  std::vector<v8::Handle<v8::Value>> arguments = ListValueToVector(
 | 
			
		||||
      isolate, args);
 | 
			
		||||
  arguments.insert(arguments.begin(), mate::ConvertToV8(isolate, channel));
 | 
			
		||||
 | 
			
		||||
  v8::Handle<v8::Object> process = GetProcessObject(isolate, context);
 | 
			
		||||
  node::MakeCallback(isolate, process, "emit", arguments.size(), &arguments[0]);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}  // namespace atom
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,9 +7,9 @@
 | 
			
		|||
#include <algorithm>
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
#include "atom/common/api/atom_bindings.h"
 | 
			
		||||
#include "atom/common/node_bindings.h"
 | 
			
		||||
#include "atom/common/options_switches.h"
 | 
			
		||||
#include "atom/renderer/api/atom_renderer_bindings.h"
 | 
			
		||||
#include "atom/renderer/atom_render_view_observer.h"
 | 
			
		||||
#include "chrome/renderer/printing/print_web_view_helper.h"
 | 
			
		||||
#include "chrome/renderer/tts_dispatcher.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +18,6 @@
 | 
			
		|||
#include "content/public/renderer/render_frame_observer.h"
 | 
			
		||||
#include "content/public/renderer/render_thread.h"
 | 
			
		||||
#include "base/command_line.h"
 | 
			
		||||
#include "native_mate/converter.h"
 | 
			
		||||
#include "third_party/WebKit/public/web/WebCustomElement.h"
 | 
			
		||||
#include "third_party/WebKit/public/web/WebFrame.h"
 | 
			
		||||
#include "third_party/WebKit/public/web/WebPluginParams.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +66,7 @@ class AtomRenderFrameObserver : public content::RenderFrameObserver {
 | 
			
		|||
 | 
			
		||||
AtomRendererClient::AtomRendererClient()
 | 
			
		||||
    : node_bindings_(NodeBindings::Create(false)),
 | 
			
		||||
      atom_bindings_(new AtomRendererBindings),
 | 
			
		||||
      atom_bindings_(new AtomBindings),
 | 
			
		||||
      main_frame_(nullptr),
 | 
			
		||||
      is_initialized_(false) {
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@
 | 
			
		|||
 | 
			
		||||
namespace atom {
 | 
			
		||||
 | 
			
		||||
class AtomRendererBindings;
 | 
			
		||||
class AtomBindings;
 | 
			
		||||
class NodeBindings;
 | 
			
		||||
 | 
			
		||||
class AtomRendererClient : public content::ContentRendererClient,
 | 
			
		||||
| 
						 | 
				
			
			@ -24,8 +24,6 @@ class AtomRendererClient : public content::ContentRendererClient,
 | 
			
		|||
  // Forwarded by RenderFrameObserver.
 | 
			
		||||
  void DidClearWindowObject();
 | 
			
		||||
 | 
			
		||||
  AtomRendererBindings* atom_bindings() const { return atom_bindings_.get(); }
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
  enum NodeIntegration {
 | 
			
		||||
    ALL,
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +59,7 @@ class AtomRendererClient : public content::ContentRendererClient,
 | 
			
		|||
  void EnableWebRuntimeFeatures();
 | 
			
		||||
 | 
			
		||||
  scoped_ptr<NodeBindings> node_bindings_;
 | 
			
		||||
  scoped_ptr<AtomRendererBindings> atom_bindings_;
 | 
			
		||||
  scoped_ptr<AtomBindings> atom_bindings_;
 | 
			
		||||
 | 
			
		||||
  // The main frame.
 | 
			
		||||
  blink::WebFrame* main_frame_;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue