diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-01 04:38:24 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-01 04:38:24 +0000 |
commit | 3fda6cda9e170c4f75c8c15cc1082b4f6e42cfdb (patch) | |
tree | 1041d6b8e4055ac5fab8d09db216048b44d58f0c /chrome/renderer | |
parent | 014010e750ac79058bd94b03caf9a6f7a5166e99 (diff) | |
download | chromium_src-3fda6cda9e170c4f75c8c15cc1082b4f6e42cfdb.zip chromium_src-3fda6cda9e170c4f75c8c15cc1082b4f6e42cfdb.tar.gz chromium_src-3fda6cda9e170c4f75c8c15cc1082b4f6e42cfdb.tar.bz2 |
Rename ExtensionBase to ChromeV8Extension and simplify.
Remove JsOnlyV8Extensions since we can just create instances of ChromeV8Extension where necessary.
Instead of using made-up names like "chrome/extensionprocessbindings", standardize on the path to the file as the name of an extension.
Review URL: http://codereview.chromium.org/8100014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103624 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
15 files changed, 88 insertions, 164 deletions
diff --git a/chrome/renderer/automation/dom_automation_v8_extension.cc b/chrome/renderer/automation/dom_automation_v8_extension.cc deleted file mode 100644 index 7794b19..0000000 --- a/chrome/renderer/automation/dom_automation_v8_extension.cc +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) 2011 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 "chrome/renderer/automation/dom_automation_v8_extension.h" - -#include "chrome/renderer/extensions/extension_base.h" -#include "grit/renderer_resources.h" -#include "v8/include/v8.h" - -const char kName[] = "chrome/domautomation"; - -v8::Extension* DomAutomationV8Extension::Get() { - static v8::Extension* extension = - new v8::Extension( - kName, ExtensionBase::GetStringResource(IDR_DOM_AUTOMATION_JS), 0, - NULL); - return extension; -} diff --git a/chrome/renderer/automation/dom_automation_v8_extension.h b/chrome/renderer/automation/dom_automation_v8_extension.h deleted file mode 100644 index ddffd04..0000000 --- a/chrome/renderer/automation/dom_automation_v8_extension.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2011 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 CHROME_RENDERER_AUTOMATION_DOM_AUTOMATION_V8_EXTENSION_H_ -#define CHROME_RENDERER_AUTOMATION_DOM_AUTOMATION_V8_EXTENSION_H_ -#pragma once - -namespace v8 { -class Extension; -} - -class DomAutomationV8Extension { - public: - static v8::Extension* Get(); -}; - -#endif // CHROME_RENDERER_AUTOMATION_DOM_AUTOMATION_V8_EXTENSION_H_ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc index 88d41cf..39a108a 100644 --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc @@ -26,13 +26,13 @@ #include "chrome/renderer/autofill/autofill_agent.h" #include "chrome/renderer/autofill/password_autofill_manager.h" #include "chrome/renderer/automation/automation_renderer_helper.h" -#include "chrome/renderer/automation/dom_automation_v8_extension.h" #include "chrome/renderer/benchmarking_extension.h" #include "chrome/renderer/blocked_plugin.h" #include "chrome/renderer/chrome_ppapi_interfaces.h" #include "chrome/renderer/chrome_render_process_observer.h" #include "chrome/renderer/chrome_render_view_observer.h" #include "chrome/renderer/content_settings_observer.h" +#include "chrome/renderer/extensions/chrome_v8_extension.h" #include "chrome/renderer/extensions/extension_bindings_context.h" #include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/extension_helper.h" @@ -181,7 +181,8 @@ void ChromeContentRendererClient::RenderThreadStarted() { if (CommandLine::ForCurrentProcess()->HasSwitch( switches::kDomAutomationController)) { - thread->RegisterExtension(DomAutomationV8Extension::Get()); + thread->RegisterExtension(new ChromeV8Extension( + "dom_automation.js", IDR_DOM_AUTOMATION_JS, NULL)); } if (CommandLine::ForCurrentProcess()->HasSwitch( diff --git a/chrome/renderer/extensions/extension_base.cc b/chrome/renderer/extensions/chrome_v8_extension.cc index d72bf50..e4e254a 100644 --- a/chrome/renderer/extensions/extension_base.cc +++ b/chrome/renderer/extensions/chrome_v8_extension.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/renderer/extensions/extension_base.h" +#include "chrome/renderer/extensions/chrome_v8_extension.h" #include "base/logging.h" #include "base/lazy_instance.h" @@ -35,7 +35,7 @@ static base::LazyInstance<StringMap> g_string_map(base::LINKER_INITIALIZED); } // namespace // static -const char* ExtensionBase::GetStringResource(int resource_id) { +const char* ChromeV8Extension::GetStringResource(int resource_id) { StringMap* strings = g_string_map.Pointer(); StringMap::iterator it = strings->find(resource_id); if (it == strings->end()) { @@ -48,7 +48,7 @@ const char* ExtensionBase::GetStringResource(int resource_id) { } // static -RenderView* ExtensionBase::GetCurrentRenderView() { +RenderView* ChromeV8Extension::GetCurrentRenderView() { WebFrame* webframe = WebFrame::frameForCurrentContext(); DCHECK(webframe) << "RetrieveCurrentFrame called when not in a V8 context."; if (!webframe) @@ -63,7 +63,27 @@ RenderView* ExtensionBase::GetCurrentRenderView() { return renderview; } -const Extension* ExtensionBase::GetExtensionForCurrentRenderView() const { +ChromeV8Extension::ChromeV8Extension(const char* name, int resource_id, + ExtensionDispatcher* extension_dispatcher) + : v8::Extension(name, + GetStringResource(resource_id), + 0, // num dependencies + NULL), // dependencies array + extension_dispatcher_(extension_dispatcher) { +} + +ChromeV8Extension::ChromeV8Extension(const char* name, int resource_id, + int dependency_count, + const char** dependencies, + ExtensionDispatcher* extension_dispatcher) + : v8::Extension(name, + GetStringResource(resource_id), + dependency_count, + dependencies), + extension_dispatcher_(extension_dispatcher) { +} + +const Extension* ChromeV8Extension::GetExtensionForCurrentRenderView() const { RenderView* renderview = GetCurrentRenderView(); if (!renderview) return NULL; // this can happen as a tab is closing. @@ -76,7 +96,7 @@ const Extension* ExtensionBase::GetExtensionForCurrentRenderView() const { return extensions->GetByURL(url); } -bool ExtensionBase::CheckPermissionForCurrentRenderView( +bool ChromeV8Extension::CheckPermissionForCurrentRenderView( const std::string& function_name) const { const ::Extension* extension = GetExtensionForCurrentRenderView(); if (extension && @@ -94,7 +114,7 @@ bool ExtensionBase::CheckPermissionForCurrentRenderView( } v8::Handle<v8::FunctionTemplate> - ExtensionBase::GetNativeFunction(v8::Handle<v8::String> name) { + ChromeV8Extension::GetNativeFunction(v8::Handle<v8::String> name) { if (name->Equals(v8::String::New("GetChromeHidden"))) { return v8::FunctionTemplate::New(GetChromeHidden); } @@ -106,12 +126,12 @@ v8::Handle<v8::FunctionTemplate> return v8::Handle<v8::FunctionTemplate>(); } -v8::Handle<v8::Value> ExtensionBase::GetChromeHidden( +v8::Handle<v8::Value> ChromeV8Extension::GetChromeHidden( const v8::Arguments& args) { return GetChromeHidden(v8::Context::GetCurrent()); } -v8::Handle<v8::Value> ExtensionBase::GetChromeHidden( +v8::Handle<v8::Value> ChromeV8Extension::GetChromeHidden( const v8::Handle<v8::Context>& context) { v8::Local<v8::Object> global = context->Global(); v8::Local<v8::Value> hidden = global->GetHiddenValue( @@ -133,7 +153,7 @@ v8::Handle<v8::Value> ExtensionBase::GetChromeHidden( return v8::Local<v8::Object>::Cast(hidden); } -v8::Handle<v8::Value> ExtensionBase::Print(const v8::Arguments& args) { +v8::Handle<v8::Value> ChromeV8Extension::Print(const v8::Arguments& args) { if (args.Length() < 1) return v8::Undefined(); diff --git a/chrome/renderer/extensions/extension_base.h b/chrome/renderer/extensions/chrome_v8_extension.h index 9e9efb1..d635a63 100644 --- a/chrome/renderer/extensions/extension_base.h +++ b/chrome/renderer/extensions/chrome_v8_extension.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_RENDERER_EXTENSIONS_EXTENSION_BASE_H_ -#define CHROME_RENDERER_EXTENSIONS_EXTENSION_BASE_H_ +#ifndef CHROME_RENDERER_EXTENSIONS_CHROME_V8_EXTENSION_H_ +#define CHROME_RENDERER_EXTENSIONS_CHROME_V8_EXTENSION_H_ #pragma once #include "base/logging.h" @@ -21,18 +21,20 @@ class WebFrame; // This is a base class for chrome extension bindings. Common features that // are shared by different modules go here. -class ExtensionBase : public v8::Extension { +// +// TODO(aa): Remove the extension-system specific bits of this and move to +// renderer/, or even to renderer/bindings and use DEPS to enforce separation +// from extension system. +class ChromeV8Extension : public v8::Extension { public: - static const char* GetStringResource(int resource_id); - - ExtensionBase(const char* name, - const char* source, - int dep_count, - const char** deps, - ExtensionDispatcher* extension_dispatcher) - : v8::Extension(name, source, dep_count, deps), - extension_dispatcher_(extension_dispatcher) { - } + ChromeV8Extension(const char* name, + int resource_id, + ExtensionDispatcher* extension_dispatcher); + ChromeV8Extension(const char* name, + int resource_id, + int dependency_count, + const char** dependencies, + ExtensionDispatcher* extension_dispatcher); // Derived classes should call this at the end of their implementation in // order to expose common native functions, like GetChromeHidden, to the @@ -40,7 +42,6 @@ class ExtensionBase : public v8::Extension { virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction(v8::Handle<v8::String> name); - // TODO(jstritar): Used for testing http://crbug.com/91582. Remove when done. ExtensionDispatcher* extension_dispatcher() { return extension_dispatcher_; } // Returns a hidden variable for use by the bindings in the specified context @@ -76,8 +77,10 @@ class ExtensionBase : public v8::Extension { ExtensionDispatcher* extension_dispatcher_; private: + static const char* GetStringResource(int resource_id); + // Helper to print from bindings javascript. static v8::Handle<v8::Value> Print(const v8::Arguments& args); }; -#endif // CHROME_RENDERER_EXTENSIONS_EXTENSION_BASE_H_ +#endif // CHROME_RENDERER_EXTENSIONS_CHROME_V8_EXTENSION_H_ diff --git a/chrome/renderer/extensions/event_bindings.cc b/chrome/renderer/extensions/event_bindings.cc index ed65e3f..f4f9b66 100644 --- a/chrome/renderer/extensions/event_bindings.cc +++ b/chrome/renderer/extensions/event_bindings.cc @@ -12,12 +12,11 @@ #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/extensions/extension_set.h" #include "chrome/common/url_constants.h" +#include "chrome/renderer/extensions/chrome_v8_extension.h" #include "chrome/renderer/extensions/event_bindings.h" -#include "chrome/renderer/extensions/extension_base.h" #include "chrome/renderer/extensions/extension_bindings_context.h" #include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/extension_process_bindings.h" -#include "chrome/renderer/extensions/js_only_v8_extensions.h" #include "chrome/renderer/extensions/user_script_slave.h" #include "content/renderer/render_thread.h" #include "content/renderer/render_view.h" @@ -57,12 +56,12 @@ static EventListenerCounts& GetListenerCounts(const std::string& extension_id) { return g_singleton_data.Get().listener_counts_[extension_id]; } -class ExtensionImpl : public ExtensionBase { +class ExtensionImpl : public ChromeV8Extension { public: explicit ExtensionImpl(ExtensionDispatcher* dispatcher) - : ExtensionBase(EventBindings::kName, - GetStringResource(IDR_EVENT_BINDINGS_JS), - 0, NULL, dispatcher) { + : ChromeV8Extension("extensions/event.js", + IDR_EVENT_BINDINGS_JS, + dispatcher) { } ~ExtensionImpl() {} @@ -75,7 +74,7 @@ class ExtensionImpl : public ExtensionBase { } else if (name->Equals(v8::String::New("GetExternalFileEntry"))) { return v8::FunctionTemplate::New(GetExternalFileEntry); } - return ExtensionBase::GetNativeFunction(name); + return ChromeV8Extension::GetNativeFunction(name); } // Attach an event name to an object. @@ -165,8 +164,6 @@ class ExtensionImpl : public ExtensionBase { } // namespace -const char* EventBindings::kName = "chrome/EventBindings"; - v8::Extension* EventBindings::Get(ExtensionDispatcher* dispatcher) { static v8::Extension* extension = new ExtensionImpl(dispatcher); return extension; diff --git a/chrome/renderer/extensions/event_bindings.h b/chrome/renderer/extensions/event_bindings.h index 98cbf39..42c9450 100644 --- a/chrome/renderer/extensions/event_bindings.h +++ b/chrome/renderer/extensions/event_bindings.h @@ -16,8 +16,6 @@ class Extension; // This class deals with the javascript bindings related to Event objects. class EventBindings { public: - static const char* kName; // The v8::Extension name, for dependencies. - static v8::Extension* Get(ExtensionDispatcher* dispatcher); // Allow RenderThread to be mocked out. It would be better if diff --git a/chrome/renderer/extensions/extension_api_json_validity_unittest.cc b/chrome/renderer/extensions/extension_api_json_validity_unittest.cc index f382923..29de3d8 100644 --- a/chrome/renderer/extensions/extension_api_json_validity_unittest.cc +++ b/chrome/renderer/extensions/extension_api_json_validity_unittest.cc @@ -7,11 +7,11 @@ #include "base/memory/scoped_ptr.h" #include "base/path_service.h" #include "chrome/common/chrome_paths.h" -#include "chrome/renderer/extensions/extension_base.h" #include "chrome/test/base/v8_unit_test.h" #include "content/common/json_value_serializer.h" #include "grit/common_resources.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/base/resource/resource_bundle.h" namespace { @@ -130,7 +130,8 @@ TEST_F(ExtensionApiJsonValidityTest, Basic) { // chrome/renderer/resources/extension_process_bindings.js . TEST_F(ExtensionApiJsonValidityTest, MAYBE_WithV8) { std::string ext_api_string = - ExtensionBase::GetStringResource(IDR_EXTENSION_API_JSON); + ResourceBundle::GetSharedInstance().GetRawDataResource( + IDR_EXTENSION_API_JSON).as_string(); // Create a global variable holding the text of extension_api.json . SetGlobalStringVar("ext_api_json_text", ext_api_string); diff --git a/chrome/renderer/extensions/extension_bindings_context.cc b/chrome/renderer/extensions/extension_bindings_context.cc index 6755f91..a6ad33e 100644 --- a/chrome/renderer/extensions/extension_bindings_context.cc +++ b/chrome/renderer/extensions/extension_bindings_context.cc @@ -12,7 +12,7 @@ #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_set.h" #include "chrome/renderer/chrome_render_process_observer.h" -#include "chrome/renderer/extensions/extension_base.h" +#include "chrome/renderer/extensions/chrome_v8_extension.h" #include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/user_script_slave.h" #include "content/common/url_constants.h" @@ -250,7 +250,7 @@ v8::Handle<v8::Value> ExtensionBindingsContext::CallChromeHiddenMethod( // Look up the function name, which may be a sub-property like // "Port.dispatchOnMessage" in the hidden global variable. v8::Local<v8::Value> value = v8::Local<v8::Value>::New( - ExtensionBase::GetChromeHidden(v8_context_)); + ChromeV8Extension::GetChromeHidden(v8_context_)); std::vector<std::string> components; base::SplitStringDontTrim(function_name, '.', &components); for (size_t i = 0; i < components.size(); ++i) { diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_dispatcher.cc index 2ce242c..b8865dd 100644 --- a/chrome/renderer/extensions/extension_dispatcher.cc +++ b/chrome/renderer/extensions/extension_dispatcher.cc @@ -12,15 +12,16 @@ #include "chrome/common/extensions/extension_permission_set.h" #include "chrome/common/url_constants.h" #include "chrome/renderer/extensions/chrome_app_bindings.h" +#include "chrome/renderer/extensions/chrome_v8_extension.h" #include "chrome/renderer/extensions/chrome_webstore_bindings.h" #include "chrome/renderer/extensions/event_bindings.h" #include "chrome/renderer/extensions/extension_bindings_context.h" #include "chrome/renderer/extensions/extension_groups.h" #include "chrome/renderer/extensions/extension_process_bindings.h" -#include "chrome/renderer/extensions/js_only_v8_extensions.h" #include "chrome/renderer/extensions/renderer_extension_bindings.h" #include "chrome/renderer/extensions/user_script_slave.h" #include "content/renderer/render_thread.h" +#include "grit/renderer_resources.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityPolicy.h" @@ -90,11 +91,13 @@ void ExtensionDispatcher::WebKitInitialized() { RegisterExtension(ChromeWebstoreExtension::Get(), false); // Add v8 extensions related to chrome extensions. - RegisterExtension(ExtensionProcessBindings::Get(this), true); - RegisterExtension(JsonSchemaJsV8Extension::Get(), true); + RegisterExtension(new ChromeV8Extension( + "extensions/json_schema.js", IDR_JSON_SCHEMA_JS, NULL), true); RegisterExtension(EventBindings::Get(this), true); RegisterExtension(RendererExtensionBindings::Get(this), true); - RegisterExtension(ExtensionApiTestV8Extension::Get(), true); + RegisterExtension(ExtensionProcessBindings::Get(this), true); + RegisterExtension(new ChromeV8Extension( + "extensions/apitest.js", IDR_EXTENSION_APITEST_JS, NULL), true); // Initialize host permissions for any extensions that were activated before // WebKit was initialized. diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index 38eb20d..1ab49f8 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -26,12 +26,11 @@ #include "chrome/common/render_messages.h" #include "chrome/common/url_constants.h" #include "chrome/renderer/chrome_render_process_observer.h" +#include "chrome/renderer/extensions/chrome_v8_extension.h" #include "chrome/renderer/extensions/event_bindings.h" #include "chrome/renderer/extensions/extension_bindings_context.h" -#include "chrome/renderer/extensions/extension_base.h" #include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/extension_helper.h" -#include "chrome/renderer/extensions/js_only_v8_extensions.h" #include "chrome/renderer/extensions/renderer_extension_bindings.h" #include "chrome/renderer/extensions/user_script_slave.h" #include "chrome/renderer/static_v8_external_string_resource.h" @@ -54,12 +53,11 @@ using WebKit::WebView; namespace { -const char kExtensionName[] = "chrome/ExtensionProcessBindings"; const char* kExtensionDeps[] = { - EventBindings::kName, - JsonSchemaJsV8Extension::kName, - RendererExtensionBindings::kName, - ExtensionApiTestV8Extension::kName, + "extensions/event.js", + "extensions/json_schema.js", + "extensions/renderer_extension_bindings.js", + "extensions/apitest.js" }; // Contains info relevant to a pending API request. @@ -155,14 +153,14 @@ class ExtensionViewAccumulator : public RenderViewVisitor { int index_; }; -class ExtensionImpl : public ExtensionBase { +class ExtensionImpl : public ChromeV8Extension { public: explicit ExtensionImpl(ExtensionDispatcher* extension_dispatcher) - : ExtensionBase(kExtensionName, - GetStringResource(IDR_EXTENSION_PROCESS_BINDINGS_JS), - arraysize(kExtensionDeps), - kExtensionDeps, - extension_dispatcher) { + : ChromeV8Extension("extensions/extension_process_bindings.js", + IDR_EXTENSION_PROCESS_BINDINGS_JS, + arraysize(kExtensionDeps), + kExtensionDeps, + extension_dispatcher) { } ~ExtensionImpl() {} @@ -202,7 +200,7 @@ class ExtensionImpl : public ExtensionBase { return v8::FunctionTemplate::New(CreateBlob, v8::External::New(this)); } - return ExtensionBase::GetNativeFunction(name); + return ChromeV8Extension::GetNativeFunction(name); } private: diff --git a/chrome/renderer/extensions/js_only_v8_extensions.cc b/chrome/renderer/extensions/js_only_v8_extensions.cc deleted file mode 100644 index 0ee892e..0000000 --- a/chrome/renderer/extensions/js_only_v8_extensions.cc +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) 2011 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 "chrome/renderer/extensions/js_only_v8_extensions.h" - -#include "chrome/renderer/extensions/extension_base.h" -#include "grit/renderer_resources.h" -#include "v8/include/v8.h" - -// JsonSchemaJsV8Extension -const char* JsonSchemaJsV8Extension::kName = "chrome/jsonschema"; -v8::Extension* JsonSchemaJsV8Extension::Get() { - static v8::Extension* extension = new ExtensionBase( - kName, ExtensionBase::GetStringResource(IDR_JSON_SCHEMA_JS), 0, NULL, - NULL); - return extension; -} - -// ExtensionApiTestV8Extension -const char* ExtensionApiTestV8Extension::kName = "chrome/extensionapitest"; -v8::Extension* ExtensionApiTestV8Extension::Get() { - static v8::Extension* extension = new ExtensionBase( - kName, ExtensionBase::GetStringResource(IDR_EXTENSION_APITEST_JS), 0, - NULL, NULL); - return extension; -} diff --git a/chrome/renderer/extensions/js_only_v8_extensions.h b/chrome/renderer/extensions/js_only_v8_extensions.h deleted file mode 100644 index dac0498..0000000 --- a/chrome/renderer/extensions/js_only_v8_extensions.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) 2011 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 CHROME_RENDERER_EXTENSIONS_JS_ONLY_V8_EXTENSIONS_H_ -#define CHROME_RENDERER_EXTENSIONS_JS_ONLY_V8_EXTENSIONS_H_ -#pragma once - -namespace v8 { -class Extension; -} - -// This file contains various V8 Extensions that are JavaScript only, and -// don't have any C++ native functions. - -class JsonSchemaJsV8Extension { - public: - static const char* kName; - static v8::Extension* Get(); -}; - -class ExtensionApiTestV8Extension { - public: - static const char* kName; - static v8::Extension* Get(); -}; - -#endif // CHROME_RENDERER_EXTENSIONS_JS_ONLY_V8_EXTENSIONS_H_ diff --git a/chrome/renderer/extensions/renderer_extension_bindings.cc b/chrome/renderer/extensions/renderer_extension_bindings.cc index 4e7811b..c52233b 100644 --- a/chrome/renderer/extensions/renderer_extension_bindings.cc +++ b/chrome/renderer/extensions/renderer_extension_bindings.cc @@ -12,8 +12,8 @@ #include "chrome/common/extensions/extension_message_bundle.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/url_constants.h" +#include "chrome/renderer/extensions/chrome_v8_extension.h" #include "chrome/renderer/extensions/event_bindings.h" -#include "chrome/renderer/extensions/extension_base.h" #include "chrome/renderer/extensions/extension_bindings_context.h" #include "chrome/renderer/extensions/extension_dispatcher.h" #include "content/renderer/render_thread.h" @@ -59,14 +59,15 @@ static void ClearPortData(int port_id) { } const char kPortClosedError[] = "Attempting to use a disconnected port object"; -const char* kExtensionDeps[] = { EventBindings::kName }; +const char* kExtensionDeps[] = { "extensions/event.js" }; -class ExtensionImpl : public ExtensionBase { +class ExtensionImpl : public ChromeV8Extension { public: explicit ExtensionImpl(ExtensionDispatcher* dispatcher) - : ExtensionBase(RendererExtensionBindings::kName, - GetStringResource(IDR_RENDERER_EXTENSION_BINDINGS_JS), - arraysize(kExtensionDeps), kExtensionDeps, dispatcher) { + : ChromeV8Extension("extensions/renderer_extension_bindings.js", + IDR_RENDERER_EXTENSION_BINDINGS_JS, + arraysize(kExtensionDeps), kExtensionDeps, + dispatcher) { } ~ExtensionImpl() {} @@ -85,7 +86,7 @@ class ExtensionImpl : public ExtensionBase { } else if (name->Equals(v8::String::New("GetL10nMessage"))) { return v8::FunctionTemplate::New(GetL10nMessage); } - return ExtensionBase::GetNativeFunction(name); + return ChromeV8Extension::GetNativeFunction(name); } // Creates a new messaging channel to the given extension. @@ -246,9 +247,6 @@ class ExtensionImpl : public ExtensionBase { } // namespace -const char* RendererExtensionBindings::kName = - "chrome/RendererExtensionBindings"; - v8::Extension* RendererExtensionBindings::Get(ExtensionDispatcher* dispatcher) { static v8::Extension* extension = new ExtensionImpl(dispatcher); return extension; diff --git a/chrome/renderer/extensions/renderer_extension_bindings.h b/chrome/renderer/extensions/renderer_extension_bindings.h index 021611e..59a3928 100644 --- a/chrome/renderer/extensions/renderer_extension_bindings.h +++ b/chrome/renderer/extensions/renderer_extension_bindings.h @@ -19,9 +19,6 @@ class Extension; // used by both web renderers and extension processes. class RendererExtensionBindings { public: - // Name of extension, for dependencies. - static const char* kName; - // Creates an instance of the extension. static v8::Extension* Get(ExtensionDispatcher* dispatcher); |