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_spell_check_client.h',
|
||||||
'atom/renderer/api/atom_api_web_frame.cc',
|
'atom/renderer/api/atom_api_web_frame.cc',
|
||||||
'atom/renderer/api/atom_api_web_frame.h',
|
'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.cc',
|
||||||
'atom/renderer/atom_render_view_observer.h',
|
'atom/renderer/atom_render_view_observer.h',
|
||||||
'atom/renderer/atom_renderer_client.cc',
|
'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 <vector>
|
||||||
|
|
||||||
#include "atom/common/api/api_messages.h"
|
#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/common/options_switches.h"
|
||||||
#include "atom/renderer/api/atom_renderer_bindings.h"
|
|
||||||
#include "atom/renderer/atom_renderer_client.h"
|
#include "atom/renderer/atom_renderer_client.h"
|
||||||
#include "base/command_line.h"
|
#include "base/command_line.h"
|
||||||
#include "base/strings/string_number_conversions.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/WebDocument.h"
|
||||||
#include "third_party/WebKit/public/web/WebFrame.h"
|
#include "third_party/WebKit/public/web/WebFrame.h"
|
||||||
#include "third_party/WebKit/public/web/WebLocalFrame.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 "third_party/WebKit/public/web/WebView.h"
|
||||||
|
|
||||||
#include "atom/common/node_includes.h"
|
#include "atom/common/node_includes.h"
|
||||||
|
|
||||||
using blink::WebFrame;
|
|
||||||
|
|
||||||
namespace atom {
|
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(
|
AtomRenderViewObserver::AtomRenderViewObserver(
|
||||||
content::RenderView* render_view,
|
content::RenderView* render_view,
|
||||||
AtomRendererClient* renderer_client)
|
AtomRendererClient* renderer_client)
|
||||||
|
@ -82,8 +101,25 @@ void AtomRenderViewObserver::OnBrowserMessage(const base::string16& channel,
|
||||||
if (!document_created_)
|
if (!document_created_)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
renderer_client_->atom_bindings()->OnBrowserMessage(
|
if (!render_view()->GetWebView())
|
||||||
render_view(), channel, args);
|
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
|
} // namespace atom
|
||||||
|
|
|
@ -7,9 +7,9 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "atom/common/api/atom_bindings.h"
|
||||||
#include "atom/common/node_bindings.h"
|
#include "atom/common/node_bindings.h"
|
||||||
#include "atom/common/options_switches.h"
|
#include "atom/common/options_switches.h"
|
||||||
#include "atom/renderer/api/atom_renderer_bindings.h"
|
|
||||||
#include "atom/renderer/atom_render_view_observer.h"
|
#include "atom/renderer/atom_render_view_observer.h"
|
||||||
#include "chrome/renderer/printing/print_web_view_helper.h"
|
#include "chrome/renderer/printing/print_web_view_helper.h"
|
||||||
#include "chrome/renderer/tts_dispatcher.h"
|
#include "chrome/renderer/tts_dispatcher.h"
|
||||||
|
@ -18,7 +18,6 @@
|
||||||
#include "content/public/renderer/render_frame_observer.h"
|
#include "content/public/renderer/render_frame_observer.h"
|
||||||
#include "content/public/renderer/render_thread.h"
|
#include "content/public/renderer/render_thread.h"
|
||||||
#include "base/command_line.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/WebCustomElement.h"
|
||||||
#include "third_party/WebKit/public/web/WebFrame.h"
|
#include "third_party/WebKit/public/web/WebFrame.h"
|
||||||
#include "third_party/WebKit/public/web/WebPluginParams.h"
|
#include "third_party/WebKit/public/web/WebPluginParams.h"
|
||||||
|
@ -67,7 +66,7 @@ class AtomRenderFrameObserver : public content::RenderFrameObserver {
|
||||||
|
|
||||||
AtomRendererClient::AtomRendererClient()
|
AtomRendererClient::AtomRendererClient()
|
||||||
: node_bindings_(NodeBindings::Create(false)),
|
: node_bindings_(NodeBindings::Create(false)),
|
||||||
atom_bindings_(new AtomRendererBindings),
|
atom_bindings_(new AtomBindings),
|
||||||
main_frame_(nullptr),
|
main_frame_(nullptr),
|
||||||
is_initialized_(false) {
|
is_initialized_(false) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
|
||||||
class AtomRendererBindings;
|
class AtomBindings;
|
||||||
class NodeBindings;
|
class NodeBindings;
|
||||||
|
|
||||||
class AtomRendererClient : public content::ContentRendererClient,
|
class AtomRendererClient : public content::ContentRendererClient,
|
||||||
|
@ -24,8 +24,6 @@ class AtomRendererClient : public content::ContentRendererClient,
|
||||||
// Forwarded by RenderFrameObserver.
|
// Forwarded by RenderFrameObserver.
|
||||||
void DidClearWindowObject();
|
void DidClearWindowObject();
|
||||||
|
|
||||||
AtomRendererBindings* atom_bindings() const { return atom_bindings_.get(); }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum NodeIntegration {
|
enum NodeIntegration {
|
||||||
ALL,
|
ALL,
|
||||||
|
@ -61,7 +59,7 @@ class AtomRendererClient : public content::ContentRendererClient,
|
||||||
void EnableWebRuntimeFeatures();
|
void EnableWebRuntimeFeatures();
|
||||||
|
|
||||||
scoped_ptr<NodeBindings> node_bindings_;
|
scoped_ptr<NodeBindings> node_bindings_;
|
||||||
scoped_ptr<AtomRendererBindings> atom_bindings_;
|
scoped_ptr<AtomBindings> atom_bindings_;
|
||||||
|
|
||||||
// The main frame.
|
// The main frame.
|
||||||
blink::WebFrame* main_frame_;
|
blink::WebFrame* main_frame_;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue