summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'extensions')
-rw-r--r--extensions/browser/extension_function_dispatcher.cc2
-rw-r--r--extensions/browser/extensions_browser_client.h4
-rw-r--r--extensions/browser/test_extensions_browser_client.cc2
-rw-r--r--extensions/browser/test_extensions_browser_client.h1
4 files changed, 9 insertions, 0 deletions
diff --git a/extensions/browser/extension_function_dispatcher.cc b/extensions/browser/extension_function_dispatcher.cc
index d6420e3..5e0cffe 100644
--- a/extensions/browser/extension_function_dispatcher.cc
+++ b/extensions/browser/extension_function_dispatcher.cc
@@ -375,6 +375,8 @@ void ExtensionFunctionDispatcher::DispatchWithCallbackInternal(
if (violation_error.empty()) {
scoped_ptr<base::ListValue> args(params.arguments.DeepCopy());
+ // See crbug.com/39178.
+ ExtensionsBrowserClient::Get()->PermitExternalProtocolHandler();
NotifyApiFunctionCalled(
extension->id(), params.name, args.Pass(), browser_context_);
function->Run();
diff --git a/extensions/browser/extensions_browser_client.h b/extensions/browser/extensions_browser_client.h
index 132e77a..2e3d26d 100644
--- a/extensions/browser/extensions_browser_client.h
+++ b/extensions/browser/extensions_browser_client.h
@@ -106,6 +106,10 @@ class ExtensionsBrowserClient {
// version for later comparison.
virtual bool DidVersionUpdate(content::BrowserContext* context) = 0;
+ // Permits an external protocol handler to be launched. See
+ // ExternalProtocolHandler::PermitLaunchUrl() in Chrome.
+ virtual void PermitExternalProtocolHandler() = 0;
+
// Creates a new AppSorting instance.
virtual scoped_ptr<AppSorting> CreateAppSorting() = 0;
diff --git a/extensions/browser/test_extensions_browser_client.cc b/extensions/browser/test_extensions_browser_client.cc
index 8a3fe23..739450b 100644
--- a/extensions/browser/test_extensions_browser_client.cc
+++ b/extensions/browser/test_extensions_browser_client.cc
@@ -107,6 +107,8 @@ bool TestExtensionsBrowserClient::DidVersionUpdate(BrowserContext* context) {
return false;
}
+void TestExtensionsBrowserClient::PermitExternalProtocolHandler() {}
+
scoped_ptr<AppSorting> TestExtensionsBrowserClient::CreateAppSorting() {
return scoped_ptr<AppSorting>();
}
diff --git a/extensions/browser/test_extensions_browser_client.h b/extensions/browser/test_extensions_browser_client.h
index ac82589..19f33d7 100644
--- a/extensions/browser/test_extensions_browser_client.h
+++ b/extensions/browser/test_extensions_browser_client.h
@@ -51,6 +51,7 @@ class TestExtensionsBrowserClient : public ExtensionsBrowserClient {
virtual scoped_ptr<ExtensionHostDelegate> CreateExtensionHostDelegate()
OVERRIDE;
virtual bool DidVersionUpdate(content::BrowserContext* context) OVERRIDE;
+ virtual void PermitExternalProtocolHandler() OVERRIDE;
virtual scoped_ptr<AppSorting> CreateAppSorting() OVERRIDE;
virtual bool IsRunningInForcedAppMode() OVERRIDE;
virtual ApiActivityMonitor* GetApiActivityMonitor(