diff options
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/extensions/extension_process_bindings.cc | 22 | ||||
-rw-r--r-- | chrome/renderer/render_thread.cc | 8 | ||||
-rw-r--r-- | chrome/renderer/render_thread.h | 3 |
3 files changed, 20 insertions, 13 deletions
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index e7aef4b..540469f 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -423,8 +423,26 @@ class ExtensionImpl : public ExtensionBase { return v8::Undefined(); L10nMessagesMap* l10n_messages = GetL10nMessagesMap(extension_id); - if (!l10n_messages) - return v8::Undefined(); + if (!l10n_messages) { + // Get the current RenderView so that we can send a routed IPC message + // from the correct source. + RenderView* renderview = bindings_utils::GetRenderViewForCurrentContext(); + if (!renderview) + return v8::Undefined(); + + L10nMessagesMap messages; + // A sync call to load message catalogs for current extension. + renderview->Send(new ViewHostMsg_GetExtensionMessageBundle( + extension_id, &messages)); + + if (messages.empty()) + return v8::Undefined(); + + ExtensionProcessBindings::SetL10nMessages(extension_id, messages); + l10n_messages = GetL10nMessagesMap(extension_id); + if (!l10n_messages) + return v8::Undefined(); + } std::string message_name = *v8::String::AsciiValue(args[0]); std::string message = diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc index df6dc42..d1ce79d 100644 --- a/chrome/renderer/render_thread.cc +++ b/chrome/renderer/render_thread.cc @@ -329,12 +329,6 @@ void RenderThread::OnDOMStorageEvent( params.storage_type_ == DOM_STORAGE_LOCAL); } -void RenderThread::OnExtensionSetL10nMessages( - const std::string& extension_id, - const std::map<std::string, std::string>& l10n_messages) { - ExtensionProcessBindings::SetL10nMessages(extension_id, l10n_messages); -} - void RenderThread::OnControlMessageReceived(const IPC::Message& msg) { // App cache messages are handled by a delegate. if (appcache_dispatcher_->OnMessageReceived(msg)) @@ -380,8 +374,6 @@ void RenderThread::OnControlMessageReceived(const IPC::Message& msg) { OnExtensionSetHostPermissions) IPC_MESSAGE_HANDLER(ViewMsg_DOMStorageEvent, OnDOMStorageEvent) - IPC_MESSAGE_HANDLER(ViewMsg_Extension_SetL10nMessages, - OnExtensionSetL10nMessages) #if defined(IPC_MESSAGE_LOG_ENABLED) IPC_MESSAGE_HANDLER(ViewMsg_SetIPCLoggingEnabled, OnSetIPCLoggingEnabled) diff --git a/chrome/renderer/render_thread.h b/chrome/renderer/render_thread.h index 2b5693a..6769b06 100644 --- a/chrome/renderer/render_thread.h +++ b/chrome/renderer/render_thread.h @@ -169,9 +169,6 @@ class RenderThread : public RenderThreadBase, void OnExtensionSetHostPermissions( const GURL& extension_url, const std::vector<URLPattern>& permissions); - void OnExtensionSetL10nMessages( - const std::string& extension_id, - const std::map<std::string, std::string>& l10n_messages); void OnSetNextPageID(int32 next_page_id); void OnSetCSSColors(const std::vector<CSSColors::CSSColorMapping>& colors); void OnCreateNewView(gfx::NativeViewId parent_hwnd, |