summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authorjamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 10:34:49 +0000
committerjamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 10:34:49 +0000
commit09957592452c75086a523c4f8ae16491ef54673f (patch)
treea891416ae45509e33a7b51ef4d10cae648dde712 /extensions
parent5a40d60411da361e5ac216efa90a80a29ebe8b57 (diff)
downloadchromium_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.h1
-rw-r--r--extensions/extensions.gyp2
-rw-r--r--extensions/renderer/extensions_renderer_client.cc6
-rw-r--r--extensions/renderer/extensions_renderer_client.h12
-rw-r--r--extensions/renderer/test_extensions_renderer_client.cc31
-rw-r--r--extensions/renderer/test_extensions_renderer_client.h31
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_