summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions
diff options
context:
space:
mode:
authorsatish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-08 10:43:08 +0000
committersatish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-08 10:43:08 +0000
commit687b96058845cdaa59f9d81c468f81222e60bdfd (patch)
tree9c97670a35e5f6abe40f3c4bf50ee7b5a257a0e3 /chrome/renderer/extensions
parentd22618c155cd40c5740755a5f0bcaab59f13f9a7 (diff)
downloadchromium_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')
-rw-r--r--chrome/renderer/extensions/bindings_utils.cc14
-rw-r--r--chrome/renderer/extensions/bindings_utils.h15
-rw-r--r--chrome/renderer/extensions/event_bindings.cc2
-rw-r--r--chrome/renderer/extensions/extension_api_json_validity_unittest.cc2
-rw-r--r--chrome/renderer/extensions/extension_process_bindings.cc4
-rw-r--r--chrome/renderer/extensions/js_only_v8_extensions.cc6
-rw-r--r--chrome/renderer/extensions/renderer_extension_bindings.cc2
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() {}