diff options
Diffstat (limited to 'chrome/renderer')
4 files changed, 21 insertions, 22 deletions
diff --git a/chrome/renderer/extensions/dispatcher.cc b/chrome/renderer/extensions/dispatcher.cc index a55632f..39a7c26 100644 --- a/chrome/renderer/extensions/dispatcher.cc +++ b/chrome/renderer/extensions/dispatcher.cc @@ -995,9 +995,9 @@ void Dispatcher::DidCreateScriptContext( switch (context_type) { case Feature::UNSPECIFIED_CONTEXT: case Feature::WEB_PAGE_CONTEXT: - // TODO(kalman): see comment below about ExtensionAPI. - InstallBindings(module_system, v8_context, "app"); - InstallBindings(module_system, v8_context, "webstore"); + RegisterBinding("app", context); + RegisterBinding("runtime", context); // for connect() and sendMessage() + RegisterBinding("webstore", context); break; case Feature::BLESSED_EXTENSION_CONTEXT: case Feature::UNBLESSED_EXTENSION_CONTEXT: diff --git a/chrome/renderer/extensions/runtime_custom_bindings.cc b/chrome/renderer/extensions/runtime_custom_bindings.cc index 0f4801f..587fcb7 100644 --- a/chrome/renderer/extensions/runtime_custom_bindings.cc +++ b/chrome/renderer/extensions/runtime_custom_bindings.cc @@ -47,16 +47,14 @@ v8::Handle<v8::Value> RuntimeCustomBindings::OpenChannelToExtension( return v8::Undefined(); // The Javascript code should validate/fill the arguments. - CHECK(args.Length() >= 3 && - args[0]->IsString() && - args[1]->IsString() && - args[2]->IsString()); + CHECK_EQ(2, args.Length()); + CHECK(args[0]->IsString() && args[1]->IsString()); ExtensionMsg_ExternalConnectionInfo info; - info.source_id = *v8::String::Utf8Value(args[0]->ToString()); - info.target_id = *v8::String::Utf8Value(args[1]->ToString()); + info.source_id = context()->extension() ? context()->extension()->id() : ""; + info.target_id = *v8::String::Utf8Value(args[0]->ToString()); info.source_url = renderview->GetWebView()->mainFrame()->document().url(); - std::string channel_name = *v8::String::Utf8Value(args[2]->ToString()); + std::string channel_name = *v8::String::Utf8Value(args[1]->ToString()); int port_id = -1; renderview->Send(new ExtensionHostMsg_OpenChannelToExtension( renderview->GetRoutingID(), info, channel_name, &port_id)); @@ -103,4 +101,4 @@ v8::Handle<v8::Value> RuntimeCustomBindings::GetManifest( context()->v8_context()); } -} // extensions +} // namespace extensions diff --git a/chrome/renderer/resources/extensions/miscellaneous_bindings.js b/chrome/renderer/resources/extensions/miscellaneous_bindings.js index 108835c..3fc7010 100644 --- a/chrome/renderer/resources/extensions/miscellaneous_bindings.js +++ b/chrome/renderer/resources/extensions/miscellaneous_bindings.js @@ -205,7 +205,9 @@ // the right event. var isExternal = sourceExtensionId != extensionId; - var sender = {id: sourceExtensionId}; + var sender = {}; + if (sourceExtensionId != '') + sender.id = sourceExtensionId; if (sourceUrl) sender.url = sourceUrl; if (sourceTab) diff --git a/chrome/renderer/resources/extensions/runtime_custom_bindings.js b/chrome/renderer/resources/extensions/runtime_custom_bindings.js index 85f0476..66245c9 100644 --- a/chrome/renderer/resources/extensions/runtime_custom_bindings.js +++ b/chrome/renderer/resources/extensions/runtime_custom_bindings.js @@ -82,22 +82,21 @@ binding.registerCustomHook(function(binding, id, contextType) { }); apiFunctions.setHandleRequest('connect', function(targetId, connectInfo) { + // Don't let orphaned content scripts communicate with their extension. + // http://crbug.com/168263 + if (unloadEvent.wasDispatched) + throw new Error('Error connecting to extension ' + targetId); + if (!targetId) targetId = runtime.id; + var name = ''; if (connectInfo && connectInfo.name) name = connectInfo.name; - // Don't let orphaned content scripts communicate with their extension. - // http://crbug.com/168263 - if (!unloadEvent.wasDispatched) { - var portId = runtimeNatives.OpenChannelToExtension(runtime.id, - targetId, - name); - if (portId >= 0) - return miscBindings.createPort(portId, name); - } - throw new Error('Error connecting to extension ' + targetId); + var portId = runtimeNatives.OpenChannelToExtension(targetId, name); + if (portId >= 0) + return miscBindings.createPort(portId, name); }); // |