diff options
author | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 10:34:49 +0000 |
---|---|---|
committer | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 10:34:49 +0000 |
commit | 09957592452c75086a523c4f8ae16491ef54673f (patch) | |
tree | a891416ae45509e33a7b51ef4d10cae648dde712 /extensions | |
parent | 5a40d60411da361e5ac216efa90a80a29ebe8b57 (diff) | |
download | chromium_src-09957592452c75086a523c4f8ae16491ef54673f.zip chromium_src-09957592452c75086a523c4f8ae16491ef54673f.tar.gz chromium_src-09957592452c75086a523c4f8ae16491ef54673f.tar.bz2 |
Introduce chrome.shell.createWindow stub API for app_shell
The chrome.app.window.create API has too many Chrome dependencies to be practically extracted from src/chrome. Rather than create an incomplete chrome.app.window API stub just for app_shell, introduce chrome.shell.createWindow which can be used in place of chrome.app.window with a small stub.
* Introduce chrome.shell.createWindow for app_shell.
* Introduce an app_shell_resources target to hold the resource for the chrome.shell custom bindings JS.
* Extend ExtensionsRendererClient to allow an extensions embedder to supply additional custom APIs.
* Modify the Calculator example to use a small chrome.shell polyfill for window creation.
BUG=349042
TEST=browser_tests *Extension*, app_shell --app=<path/to/calculator/app> loads calculator
TBR=isherman@chromium.org for mechanical update of existing ExtensionFunction enum in histograms.xml
Review URL: https://codereview.chromium.org/254473011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267159 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/browser/extension_function_histogram_value.h | 1 | ||||
-rw-r--r-- | extensions/extensions.gyp | 2 | ||||
-rw-r--r-- | extensions/renderer/extensions_renderer_client.cc | 6 | ||||
-rw-r--r-- | extensions/renderer/extensions_renderer_client.h | 12 | ||||
-rw-r--r-- | extensions/renderer/test_extensions_renderer_client.cc | 31 | ||||
-rw-r--r-- | extensions/renderer/test_extensions_renderer_client.h | 31 |
6 files changed, 82 insertions, 1 deletions
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h index 8d4d97e..5486d77 100644 --- a/extensions/browser/extension_function_histogram_value.h +++ b/extensions/browser/extension_function_histogram_value.h @@ -807,6 +807,7 @@ enum HistogramValue { BLUETOOTHSOCKET_GETINFO, BLUETOOTHSOCKET_GETSOCKETS, WEBSTOREPRIVATE_SIGNINFUNCTION, + SHELL_CREATEWINDOW, // Last entry: Add new entries above and ensure to update // tools/metrics/histograms/histograms/histograms.xml. ENUM_BOUNDARY diff --git a/extensions/extensions.gyp b/extensions/extensions.gyp index 255a68f..133a19e 100644 --- a/extensions/extensions.gyp +++ b/extensions/extensions.gyp @@ -510,6 +510,8 @@ 'common/test_util.h', 'common/value_builder.cc', 'common/value_builder.h', + 'renderer/test_extensions_renderer_client.cc', + 'renderer/test_extensions_renderer_client.h', ], # Disable c4267 warnings until we fix size_t to int truncations. 'msvs_disabled_warnings': [ 4267, ], diff --git a/extensions/renderer/extensions_renderer_client.cc b/extensions/renderer/extensions_renderer_client.cc index 6fb5a96..91c5aeb 100644 --- a/extensions/renderer/extensions_renderer_client.cc +++ b/extensions/renderer/extensions_renderer_client.cc @@ -5,6 +5,7 @@ #include "extensions/renderer/extensions_renderer_client.h" #include "base/basictypes.h" +#include "base/logging.h" namespace extensions { @@ -14,7 +15,10 @@ ExtensionsRendererClient* g_client = NULL; } // namespace -ExtensionsRendererClient* ExtensionsRendererClient::Get() { return g_client; } +ExtensionsRendererClient* ExtensionsRendererClient::Get() { + CHECK(g_client); + return g_client; +} void ExtensionsRendererClient::Set(ExtensionsRendererClient* client) { g_client = client; diff --git a/extensions/renderer/extensions_renderer_client.h b/extensions/renderer/extensions_renderer_client.h index b8f5255..6b06b6c 100644 --- a/extensions/renderer/extensions_renderer_client.h +++ b/extensions/renderer/extensions_renderer_client.h @@ -5,8 +5,13 @@ #ifndef EXTENSIONS_RENDERER_EXTENSIONS_RENDERER_CLIENT_H_ #define EXTENSIONS_RENDERER_EXTENSIONS_RENDERER_CLIENT_H_ +class ResourceBundleSourceMap; + namespace extensions { +class ModuleSystem; +class ScriptContext; + // Interface to allow the extensions module to make render-process-specific // queries of the embedder. Should be Set() once in the render process. // @@ -25,6 +30,13 @@ class ExtensionsRendererClient { // (third_party/WebKit/public/web/WebFrame.h) for additional context. virtual int GetLowestIsolatedWorldId() const = 0; + // Registers additional native C++ code handlers for JS API functions. + virtual void RegisterNativeHandlers(ModuleSystem* module_system, + ScriptContext* context) = 0; + + // Registers additional JS source code resources for API implementations. + virtual void PopulateSourceMap(ResourceBundleSourceMap* source_map) = 0; + // Returns the single instance of |this|. static ExtensionsRendererClient* Get(); diff --git a/extensions/renderer/test_extensions_renderer_client.cc b/extensions/renderer/test_extensions_renderer_client.cc new file mode 100644 index 0000000..4d1c021 --- /dev/null +++ b/extensions/renderer/test_extensions_renderer_client.cc @@ -0,0 +1,31 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "extensions/renderer/test_extensions_renderer_client.h" + +namespace extensions { + +TestExtensionsRendererClient::TestExtensionsRendererClient() {} + +TestExtensionsRendererClient::~TestExtensionsRendererClient() {} + +bool TestExtensionsRendererClient::IsIncognitoProcess() const { + return false; +} + +int TestExtensionsRendererClient::GetLowestIsolatedWorldId() const { + // Note that 0 is reserved for the global world. + return 1; +} + +void TestExtensionsRendererClient::RegisterNativeHandlers( + extensions::ModuleSystem* module_system, + extensions::ScriptContext* context) { +} + +void TestExtensionsRendererClient::PopulateSourceMap( + ResourceBundleSourceMap* source_map) { +} + +} // namespace extensions diff --git a/extensions/renderer/test_extensions_renderer_client.h b/extensions/renderer/test_extensions_renderer_client.h new file mode 100644 index 0000000..a71d1bb --- /dev/null +++ b/extensions/renderer/test_extensions_renderer_client.h @@ -0,0 +1,31 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef EXTENSIONS_RENDERER_TEST_EXTENSIONS_RENDERER_CLIENT_H_ +#define EXTENSIONS_RENDERER_TEST_EXTENSIONS_RENDERER_CLIENT_H_ + +#include "base/macros.h" +#include "extensions/renderer/extensions_renderer_client.h" + +namespace extensions { + +class TestExtensionsRendererClient : public ExtensionsRendererClient { + public: + TestExtensionsRendererClient(); + virtual ~TestExtensionsRendererClient(); + + // ExtensionsRendererClient implementation. + virtual bool IsIncognitoProcess() const OVERRIDE; + virtual int GetLowestIsolatedWorldId() const OVERRIDE; + virtual void RegisterNativeHandlers(ModuleSystem* module_system, + ScriptContext* context) OVERRIDE; + virtual void PopulateSourceMap(ResourceBundleSourceMap* source_map) OVERRIDE; + + private: + DISALLOW_COPY_AND_ASSIGN(TestExtensionsRendererClient); +}; + +} // namespace extensions + +#endif // EXTENSIONS_RENDERER_TEST_EXTENSIONS_RENDERER_CLIENT_H_ |