diff options
author | ilevy@chromium.org <ilevy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-26 18:32:15 +0000 |
---|---|---|
committer | ilevy@chromium.org <ilevy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-26 18:32:15 +0000 |
commit | 6a17121ff86c9561766b1622e42a613a4768dc1d (patch) | |
tree | 8d1b4fd24ccc50d66d458134c0f49a8d76442359 /chrome/renderer/extensions/extension_custom_bindings.cc | |
parent | ccef5edd857c23650107922aedb39681ebff7c38 (diff) | |
download | chromium_src-6a17121ff86c9561766b1622e42a613a4768dc1d.zip chromium_src-6a17121ff86c9561766b1622e42a613a4768dc1d.tar.gz chromium_src-6a17121ff86c9561766b1622e42a613a4768dc1d.tar.bz2 |
Revert 158830 - Revert 156678 - Native messaging now uses the MessageService back-end.
Reason: Regression in a ChromeOS extension causing it to continue running after
unloading.
BUG=142915
Review URL: https://codereview.chromium.org/10818013
TBR=eaugusti@chromium.org
TBR=mpcomplete@chromium.org
TBR=mmoss, rouslan
Review URL: https://codereview.chromium.org/10991044
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@158833 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions/extension_custom_bindings.cc')
-rw-r--r-- | chrome/renderer/extensions/extension_custom_bindings.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/chrome/renderer/extensions/extension_custom_bindings.cc b/chrome/renderer/extensions/extension_custom_bindings.cc index 685c180..e3c5afc 100644 --- a/chrome/renderer/extensions/extension_custom_bindings.cc +++ b/chrome/renderer/extensions/extension_custom_bindings.cc @@ -15,6 +15,7 @@ #include "chrome/renderer/extensions/dispatcher.h" #include "chrome/renderer/extensions/extension_helper.h" #include "content/public/renderer/render_view.h" +#include "content/public/renderer/v8_value_converter.h" #include "grit/renderer_resources.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" @@ -31,6 +32,7 @@ ExtensionCustomBindings::ExtensionCustomBindings(Dispatcher* dispatcher) : ChromeV8Extension(dispatcher) { RouteStaticFunction("GetExtensionViews", &GetExtensionViews); RouteStaticFunction("OpenChannelToExtension", &OpenChannelToExtension); + RouteStaticFunction("OpenChannelToNativeApp", &OpenChannelToNativeApp); } // static @@ -123,4 +125,36 @@ v8::Handle<v8::Value> ExtensionCustomBindings::OpenChannelToExtension( return v8::Integer::New(port_id); } +// static +v8::Handle<v8::Value> ExtensionCustomBindings::OpenChannelToNativeApp( + const v8::Arguments& args) { + // Get the current RenderView so that we can send a routed IPC message from + // the correct source. + content::RenderView* renderview = GetCurrentRenderView(); + if (!renderview) + return v8::Undefined(); + + // The Javascript code should validate/fill the arguments. + CHECK(args.Length() >= 3 && + args[0]->IsString() && + args[1]->IsString() && + args[2]->IsString() && + args[3]->IsString()); + + std::string extension_id = *v8::String::Utf8Value(args[0]->ToString()); + std::string native_app_name = *v8::String::Utf8Value(args[1]->ToString()); + std::string channel_name = *v8::String::Utf8Value(args[2]->ToString()); + std::string connect_message = *v8::String::Utf8Value(args[3]->ToString()); + + int port_id = -1; + renderview->Send(new ExtensionHostMsg_OpenChannelToNativeApp( + renderview->GetRoutingID(), + extension_id, + native_app_name, + channel_name, + connect_message, + &port_id)); + return v8::Integer::New(port_id); +} + } // namespace extensions |