diff options
author | satish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-08 10:43:08 +0000 |
---|---|---|
committer | satish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-08 10:43:08 +0000 |
commit | 687b96058845cdaa59f9d81c468f81222e60bdfd (patch) | |
tree | 9c97670a35e5f6abe40f3c4bf50ee7b5a257a0e3 /chrome/renderer/extensions | |
parent | d22618c155cd40c5740755a5f0bcaab59f13f9a7 (diff) | |
download | chromium_src-687b96058845cdaa59f9d81c468f81222e60bdfd.zip chromium_src-687b96058845cdaa59f9d81c468f81222e60bdfd.tar.gz chromium_src-687b96058845cdaa59f9d81c468f81222e60bdfd.tar.bz2 |
Add a new GetInstance() method for singleton classes, take 2.
This is a small step towards making all singleton classes use the Singleton<T> pattern within their code and not expect the callers to know about it.
This CL includes all files except those under chrome/browser, chrome/net, chrome/service and third_party/WebKit (these will be done in future CLs).
Suggested files to focus for reviewers:
- joi@ for files under src/ceee
- tommi@ for files under src/chrome_frame
- maruel@ for the rest of the files.
BUG=65298
TEST=all existing tests should continue to pass.
Review URL: http://codereview.chromium.org/5581008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68577 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions')
7 files changed, 23 insertions, 22 deletions
diff --git a/chrome/renderer/extensions/bindings_utils.cc b/chrome/renderer/extensions/bindings_utils.cc index 83ddeee..5b213c4 100644 --- a/chrome/renderer/extensions/bindings_utils.cc +++ b/chrome/renderer/extensions/bindings_utils.cc @@ -22,6 +22,20 @@ struct SingletonData { PendingRequestMap pending_requests; }; +typedef std::map<int, std::string> StringMap; + +const char* GetStringResource(int resource_id) { + StringMap* strings = Singleton<StringMap>::get(); + StringMap::iterator it = strings->find(resource_id); + if (it == strings->end()) { + it = strings->insert(std::make_pair( + resource_id, + ResourceBundle::GetSharedInstance().GetRawDataResource( + resource_id).as_string())).first; + } + return it->second.c_str(); +} + // ExtensionBase v8::Handle<v8::FunctionTemplate> diff --git a/chrome/renderer/extensions/bindings_utils.h b/chrome/renderer/extensions/bindings_utils.h index d1bc3b3..f506ce0 100644 --- a/chrome/renderer/extensions/bindings_utils.h +++ b/chrome/renderer/extensions/bindings_utils.h @@ -50,20 +50,7 @@ class ExtensionBase : public v8::Extension { static v8::Handle<v8::Value> GetChromeHidden(const v8::Arguments& args); }; -template<int kResourceId> -struct StringResourceTemplate { - StringResourceTemplate() - : resource(ResourceBundle::GetSharedInstance().GetRawDataResource( - kResourceId).as_string()) { - } - std::string resource; -}; - -template<int kResourceId> -const char* GetStringResource() { - return - Singleton< StringResourceTemplate<kResourceId> >::get()->resource.c_str(); -} +const char* GetStringResource(int resource_id); // Contains information about a single javascript context. struct ContextInfo { diff --git a/chrome/renderer/extensions/event_bindings.cc b/chrome/renderer/extensions/event_bindings.cc index 60c5c0d..d960509 100644 --- a/chrome/renderer/extensions/event_bindings.cc +++ b/chrome/renderer/extensions/event_bindings.cc @@ -72,7 +72,7 @@ class ExtensionImpl : public ExtensionBase { public: ExtensionImpl() : ExtensionBase(EventBindings::kName, - GetStringResource<IDR_EVENT_BINDINGS_JS>(), + GetStringResource(IDR_EVENT_BINDINGS_JS), 0, NULL) { } ~ExtensionImpl() {} diff --git a/chrome/renderer/extensions/extension_api_json_validity_unittest.cc b/chrome/renderer/extensions/extension_api_json_validity_unittest.cc index b692649..49858f2 100644 --- a/chrome/renderer/extensions/extension_api_json_validity_unittest.cc +++ b/chrome/renderer/extensions/extension_api_json_validity_unittest.cc @@ -130,7 +130,7 @@ TEST_F(ExtensionApiJsonValidityTest, Basic) { // chrome/renderer/resources/extension_process_bindings.js . TEST_F(ExtensionApiJsonValidityTest, MAYBE_WithV8) { std::string ext_api_string = - bindings_utils::GetStringResource<IDR_EXTENSION_API_JSON>(); + bindings_utils::GetStringResource(IDR_EXTENSION_API_JSON); // 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_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index 6631587..7370e3d 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -194,7 +194,7 @@ class ExtensionViewAccumulator : public RenderViewVisitor { class ExtensionImpl : public ExtensionBase { public: ExtensionImpl() : ExtensionBase( - kExtensionName, GetStringResource<IDR_EXTENSION_PROCESS_BINDINGS_JS>(), + kExtensionName, GetStringResource(IDR_EXTENSION_PROCESS_BINDINGS_JS), arraysize(kExtensionDeps), kExtensionDeps) {} static void SetFunctionNames(const std::vector<std::string>& names) { @@ -253,7 +253,7 @@ class ExtensionImpl : public ExtensionBase { private: static v8::Handle<v8::Value> GetExtensionAPIDefinition( const v8::Arguments& args) { - return v8::String::New(GetStringResource<IDR_EXTENSION_API_JSON>()); + return v8::String::New(GetStringResource(IDR_EXTENSION_API_JSON)); } static v8::Handle<v8::Value> PopupViewFinder( diff --git a/chrome/renderer/extensions/js_only_v8_extensions.cc b/chrome/renderer/extensions/js_only_v8_extensions.cc index 359e756..2549cc3 100644 --- a/chrome/renderer/extensions/js_only_v8_extensions.cc +++ b/chrome/renderer/extensions/js_only_v8_extensions.cc @@ -14,7 +14,7 @@ const char* BaseJsV8Extension::kName = "chrome/base"; v8::Extension* BaseJsV8Extension::Get() { static v8::Extension* extension = new bindings_utils::ExtensionBase( - kName, GetStringResource<IDR_BASE_JS>(), 0, NULL); + kName, GetStringResource(IDR_BASE_JS), 0, NULL); return extension; } @@ -23,7 +23,7 @@ const char* JsonSchemaJsV8Extension::kName = "chrome/jsonschema"; v8::Extension* JsonSchemaJsV8Extension::Get() { static v8::Extension* extension = new bindings_utils::ExtensionBase( - kName, GetStringResource<IDR_JSON_SCHEMA_JS>(), 0, NULL); + kName, GetStringResource(IDR_JSON_SCHEMA_JS), 0, NULL); return extension; } @@ -32,6 +32,6 @@ const char* ExtensionApiTestV8Extension::kName = "chrome/extensionapitest"; v8::Extension* ExtensionApiTestV8Extension::Get() { static v8::Extension* extension = new bindings_utils::ExtensionBase( - kName, GetStringResource<IDR_EXTENSION_APITEST_JS>(), 0, NULL); + kName, GetStringResource(IDR_EXTENSION_APITEST_JS), 0, NULL); return extension; } diff --git a/chrome/renderer/extensions/renderer_extension_bindings.cc b/chrome/renderer/extensions/renderer_extension_bindings.cc index d8fc4db..9555672 100644 --- a/chrome/renderer/extensions/renderer_extension_bindings.cc +++ b/chrome/renderer/extensions/renderer_extension_bindings.cc @@ -63,7 +63,7 @@ class ExtensionImpl : public ExtensionBase { public: ExtensionImpl() : ExtensionBase(RendererExtensionBindings::kName, - GetStringResource<IDR_RENDERER_EXTENSION_BINDINGS_JS>(), + GetStringResource(IDR_RENDERER_EXTENSION_BINDINGS_JS), arraysize(kExtensionDeps), kExtensionDeps) { } ~ExtensionImpl() {} |