Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Side by Side Diff: chrome/renderer/extensions/renderer_extension_bindings.cc

Issue 570007: Replace __MSG_some_name__ template within extension css/html files with local... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/common/resource_dispatcher.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/extensions/renderer_extension_bindings.h" 5 #include "chrome/renderer/extensions/renderer_extension_bindings.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "app/resource_bundle.h" 10 #include "app/resource_bundle.h"
(...skipping 17 matching lines...) Expand all
28 // new chrome.Extension('00123456789abcdef0123456789abcdef0123456'); 28 // new chrome.Extension('00123456789abcdef0123456789abcdef0123456');
29 // var port = extension.connect(); 29 // var port = extension.connect();
30 // port.postMessage('Can you hear me now?'); 30 // port.postMessage('Can you hear me now?');
31 // port.onmessage.addListener(function(msg, port) { 31 // port.onmessage.addListener(function(msg, port) {
32 // alert('response=' + msg); 32 // alert('response=' + msg);
33 // port.postMessage('I got your reponse'); 33 // port.postMessage('I got your reponse');
34 // }); 34 // });
35 35
36 namespace { 36 namespace {
37 37
38 // A map of message name to message.
39 typedef std::map<std::string, std::string> L10nMessagesMap;
40
41 // A map of extension ID to l10n message map.
42 typedef std::map<std::string, L10nMessagesMap > ExtensionToL10nMessagesMap;
43
44 struct ExtensionData { 38 struct ExtensionData {
45 struct PortData { 39 struct PortData {
46 int ref_count; // how many contexts have a handle to this port 40 int ref_count; // how many contexts have a handle to this port
47 bool disconnected; // true if this port was forcefully disconnected 41 bool disconnected; // true if this port was forcefully disconnected
48 PortData() : ref_count(0), disconnected(false) {} 42 PortData() : ref_count(0), disconnected(false) {}
49 }; 43 };
50 std::map<int, PortData> ports; // port ID -> data 44 std::map<int, PortData> ports; // port ID -> data
51 // Maps extension ID to message map.
52 ExtensionToL10nMessagesMap extension_l10n_messages_map_;
53 }; 45 };
54 46
55 static bool HasPortData(int port_id) { 47 static bool HasPortData(int port_id) {
56 return Singleton<ExtensionData>::get()->ports.find(port_id) != 48 return Singleton<ExtensionData>::get()->ports.find(port_id) !=
57 Singleton<ExtensionData>::get()->ports.end(); 49 Singleton<ExtensionData>::get()->ports.end();
58 } 50 }
59 51
60 static ExtensionData::PortData& GetPortData(int port_id) { 52 static ExtensionData::PortData& GetPortData(int port_id) {
61 return Singleton<ExtensionData>::get()->ports[port_id]; 53 return Singleton<ExtensionData>::get()->ports[port_id];
62 } 54 }
63 55
64 static void ClearPortData(int port_id) { 56 static void ClearPortData(int port_id) {
65 Singleton<ExtensionData>::get()->ports.erase(port_id); 57 Singleton<ExtensionData>::get()->ports.erase(port_id);
66 } 58 }
67 59
68 static ExtensionToL10nMessagesMap* GetExtensionToL10nMessagesMap() {
69 return &Singleton<ExtensionData>()->extension_l10n_messages_map_;
70 }
71
72 static L10nMessagesMap* GetL10nMessagesMap(const std::string extension_id) {
73 ExtensionToL10nMessagesMap::iterator it =
74 Singleton<ExtensionData>()->extension_l10n_messages_map_.find(
75 extension_id);
76 if (it != Singleton<ExtensionData>()->extension_l10n_messages_map_.end()) {
77 return &(it->second);
78 } else {
79 return NULL;
80 }
81 }
82
83 const char kPortClosedError[] = "Attempting to use a disconnected port object"; 60 const char kPortClosedError[] = "Attempting to use a disconnected port object";
84 const char* kExtensionDeps[] = { EventBindings::kName }; 61 const char* kExtensionDeps[] = { EventBindings::kName };
85 62
86 class ExtensionImpl : public ExtensionBase { 63 class ExtensionImpl : public ExtensionBase {
87 public: 64 public:
88 ExtensionImpl() 65 ExtensionImpl()
89 : ExtensionBase(RendererExtensionBindings::kName, 66 : ExtensionBase(RendererExtensionBindings::kName,
90 GetStringResource<IDR_RENDERER_EXTENSION_BINDINGS_JS>(), 67 GetStringResource<IDR_RENDERER_EXTENSION_BINDINGS_JS>(),
91 arraysize(kExtensionDeps), kExtensionDeps) { 68 arraysize(kExtensionDeps), kExtensionDeps) {
92 } 69 }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 200
224 if (messages.empty()) 201 if (messages.empty())
225 return v8::Undefined(); 202 return v8::Undefined();
226 203
227 // Save messages we got. 204 // Save messages we got.
228 ExtensionToL10nMessagesMap& l10n_messages_map = 205 ExtensionToL10nMessagesMap& l10n_messages_map =
229 *GetExtensionToL10nMessagesMap(); 206 *GetExtensionToL10nMessagesMap();
230 l10n_messages_map[extension_id] = messages; 207 l10n_messages_map[extension_id] = messages;
231 208
232 l10n_messages = GetL10nMessagesMap(extension_id); 209 l10n_messages = GetL10nMessagesMap(extension_id);
233 if (!l10n_messages)
234 return v8::Undefined();
235 } 210 }
236 211
237 std::string message_name = *v8::String::AsciiValue(args[0]); 212 std::string message_name = *v8::String::AsciiValue(args[0]);
238 std::string message = 213 std::string message =
239 ExtensionMessageBundle::GetL10nMessage(message_name, *l10n_messages); 214 ExtensionMessageBundle::GetL10nMessage(message_name, *l10n_messages);
240 215
241 std::vector<std::string> substitutions; 216 std::vector<std::string> substitutions;
242 if (args[1]->IsNull() || args[1]->IsUndefined()) { 217 if (args[1]->IsNull() || args[1]->IsUndefined()) {
243 // chrome.i18n.getMessage("message_name"); 218 // chrome.i18n.getMessage("message_name");
244 // chrome.i18n.getMessage("message_name", null); 219 // chrome.i18n.getMessage("message_name", null);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 return extension; 299 return extension;
325 } 300 }
326 301
327 void RendererExtensionBindings::Invoke(const std::string& function_name, 302 void RendererExtensionBindings::Invoke(const std::string& function_name,
328 const ListValue& args, 303 const ListValue& args,
329 RenderView* renderview) { 304 RenderView* renderview) {
330 v8::HandleScope handle_scope; 305 v8::HandleScope handle_scope;
331 std::vector< v8::Handle<v8::Value> > argv = ListValueToV8(args); 306 std::vector< v8::Handle<v8::Value> > argv = ListValueToV8(args);
332 EventBindings::CallFunction(function_name, argv.size(), &argv[0], renderview); 307 EventBindings::CallFunction(function_name, argv.size(), &argv[0], renderview);
333 } 308 }
OLDNEW
« no previous file with comments | « chrome/common/resource_dispatcher.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698