diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-26 23:51:09 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-26 23:51:09 +0000 |
commit | 39755c360cd4c5884f590aa0548cdd72d30dbdb0 (patch) | |
tree | bf599e2be3b4b226f7be5ca4a3327d22e4561f2b /chrome/browser | |
parent | 84ec056834c1625b7b7d316817b018564f76e22a (diff) | |
download | chromium_src-39755c360cd4c5884f590aa0548cdd72d30dbdb0.zip chromium_src-39755c360cd4c5884f590aa0548cdd72d30dbdb0.tar.gz chromium_src-39755c360cd4c5884f590aa0548cdd72d30dbdb0.tar.bz2 |
Revert 83100 - Remove weird dependency on extensions from webui.Re-plumb extension request messages in a more sane way.Before, each RVH had ProcessWebUIMessage(), which wasserving as a manual way of plumbing both WebUI andextension messages to the right place, even though onlya few RVHD responded to either message.Instead of this, we now just teach more of the stack howto handle IPC messages in general, and delegate them upthrough the stack, giving each layer a chance to handlethem if it knows how.The result is simpler and smaller:179 insertions(+), 252 deletions(-)BUG=80311Review URL: http://codereview.chromium.org/6901021
TBR=aa@chromium.org
Review URL: http://codereview.chromium.org/6905045
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83103 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
17 files changed, 97 insertions, 117 deletions
diff --git a/chrome/browser/chromeos/notifications/balloon_view_host.cc b/chrome/browser/chromeos/notifications/balloon_view_host.cc index 87b978c..1e9be4f 100644 --- a/chrome/browser/chromeos/notifications/balloon_view_host.cc +++ b/chrome/browser/chromeos/notifications/balloon_view_host.cc @@ -7,9 +7,6 @@ #include "base/stl_util-inl.h" #include "base/values.h" #include "chrome/common/extensions/extension_messages.h" -#include "content/chrome/view_messages.h" -#include "ipc/ipc_message.h" -#include "ipc/ipc_message_macros.h" namespace chromeos { @@ -18,15 +15,6 @@ BalloonViewHost::~BalloonViewHost() { message_callbacks_.end()); } -bool BalloonViewHost::OnMessageReceived(const IPC::Message& message) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(WebUI, message) - IPC_MESSAGE_HANDLER(ViewHostMsg_WebUISend, OnWebUISend) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - bool BalloonViewHost::AddWebUIMessageCallback( const std::string& message, MessageCallback* callback) { @@ -37,9 +25,10 @@ bool BalloonViewHost::AddWebUIMessageCallback( return ret.second; } -void BalloonViewHost::OnWebUISend(const GURL& source_url, - const std::string& name, - const ListValue& args) { +void BalloonViewHost::ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params) { + ::BalloonViewHost::ProcessWebUIMessage(params); + // Look up the callback for this message. MessageCallbackMap::const_iterator callback = message_callbacks_.find(params.name); diff --git a/chrome/browser/chromeos/notifications/balloon_view_host.h b/chrome/browser/chromeos/notifications/balloon_view_host.h index 44bea08..5b6a3ca5 100644 --- a/chrome/browser/chromeos/notifications/balloon_view_host.h +++ b/chrome/browser/chromeos/notifications/balloon_view_host.h @@ -12,7 +12,6 @@ #include <string> #include "base/callback.h" -#include "base/compiler_specific.h" #include "ui/gfx/native_widget_types.h" class ListValue; @@ -34,19 +33,15 @@ class BalloonViewHost : public ::BalloonViewHost { bool AddWebUIMessageCallback(const std::string& message, MessageCallback* callback); - private: - // RenderViewHostDelegate - virtual void OnMessageReceived(const IPC::Message& message) OVERRIDE; + // Process WebUI message. + virtual void ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params); + private: // A map of message name -> message handling callback. typedef std::map<std::string, MessageCallback*> MessageCallbackMap; MessageCallbackMap message_callbacks_; - // Message handlers. - virtual void OnWebUISend(const GURL& source_url, - const std::string& name, - const ListValue& args); - DISALLOW_COPY_AND_ASSIGN(BalloonViewHost); }; diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc index efca9b6..26b466b 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.cc +++ b/chrome/browser/extensions/extension_function_dispatcher.cc @@ -26,6 +26,7 @@ #include "chrome/browser/extensions/extension_idle_api.h" #include "chrome/browser/extensions/extension_infobar_module.h" #include "chrome/browser/extensions/extension_management_api.h" +#include "chrome/browser/extensions/extension_message_service.h" #include "chrome/browser/extensions/extension_metrics_module.h" #include "chrome/browser/extensions/extension_module.h" #include "chrome/browser/extensions/extension_omnibox_api.h" @@ -53,13 +54,10 @@ #include "chrome/browser/ui/webui/favicon_source.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/url_constants.h" -#include "content/browser/child_process_security_policy.h" #include "content/browser/renderer_host/render_process_host.h" #include "content/browser/renderer_host/render_view_host.h" #include "content/common/notification_service.h" #include "content/common/result_codes.h" -#include "ipc/ipc_message.h" -#include "ipc/ipc_message_macros.h" #include "third_party/skia/include/core/SkBitmap.h" #if defined(TOOLKIT_VIEWS) @@ -475,28 +473,8 @@ Browser* ExtensionFunctionDispatcher::GetCurrentBrowser( return browser; } -bool ExtensionFunctionDispatcher::OnMessageReceived( - const IPC::Message& message) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(ExtensionFunctionDispatcher, message) - IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void ExtensionFunctionDispatcher::OnRequest( - const ExtensionHostMsg_Request_Params& params) { - if (!ChildProcessSecurityPolicy::GetInstance()-> - HasExtensionBindings(render_view_host_->process()->id())) { - // This can happen if someone uses window.open() to open an extension URL - // from a non-extension context. - render_view_host_->Send(new ExtensionMsg_Response( - render_view_host_->routing_id(), params.request_id, false, - std::string(), "Access to extension API denied.")); - return; - } - +void ExtensionFunctionDispatcher::HandleRequest( + const ExtensionHostMsg_DomMessage_Params& params) { scoped_refptr<ExtensionFunction> function( FactoryRegistry::GetInstance()->NewFunction(params.name)); function->set_dispatcher_peer(peer_); diff --git a/chrome/browser/extensions/extension_function_dispatcher.h b/chrome/browser/extensions/extension_function_dispatcher.h index 9f91d9d..cb67988 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.h +++ b/chrome/browser/extensions/extension_function_dispatcher.h @@ -11,7 +11,6 @@ #include "base/memory/ref_counted.h" #include "googleurl/src/gurl.h" -#include "ipc/ipc_channel.h" #include "ui/gfx/native_widget_types.h" class Browser; @@ -21,7 +20,7 @@ class ListValue; class Profile; class RenderViewHost; class TabContents; -struct ExtensionHostMsg_Request_Params; +struct ExtensionHostMsg_DomMessage_Params; // A factory function for creating new ExtensionFunction instances. typedef ExtensionFunction* (*ExtensionFunctionFactory)(); @@ -29,7 +28,7 @@ typedef ExtensionFunction* (*ExtensionFunctionFactory)(); // ExtensionFunctionDispatcher receives requests to execute functions from // Chromium extensions running in a RenderViewHost and dispatches them to the // appropriate handler. It lives entirely on the UI thread. -class ExtensionFunctionDispatcher : public IPC::Channel::Listener { +class ExtensionFunctionDispatcher { public: class Delegate { public: @@ -86,8 +85,8 @@ class ExtensionFunctionDispatcher : public IPC::Channel::Listener { Delegate* delegate() { return delegate_; } - // If |message| is an extension request, handle it. Returns true if handled. - virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; + // Handle a request to execute an extension function. + void HandleRequest(const ExtensionHostMsg_DomMessage_Params& params); // Send a response to a function. void SendResponse(ExtensionFunction* api, bool success); @@ -122,9 +121,6 @@ class ExtensionFunctionDispatcher : public IPC::Channel::Listener { const Extension* extension, const GURL& url); - // Message handlers. - void OnRequest(const ExtensionHostMsg_Request_Params& params); - // We need to keep a pointer to the profile because we use it in the dtor // in sending EXTENSION_FUNCTION_DISPATCHER_DESTROYED, but by that point // the render_view_host_ has been deleted. diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc index d2e5bec..74f28e3 100644 --- a/chrome/browser/extensions/extension_host.cc +++ b/chrome/browser/extensions/extension_host.cc @@ -546,6 +546,13 @@ WebPreferences ExtensionHost::GetWebkitPrefs() { return webkit_prefs; } +void ExtensionHost::ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params) { + if (extension_function_dispatcher_.get()) { + extension_function_dispatcher_->HandleRequest(params); + } +} + RenderViewHostDelegate::View* ExtensionHost::GetViewDelegate() { return this; } @@ -777,11 +784,6 @@ ViewType::Type ExtensionHost::GetRenderViewType() const { } bool ExtensionHost::OnMessageReceived(const IPC::Message& message) { - if (extension_function_dispatcher_.get() && - extension_function_dispatcher_->OnMessageReceived(message)) { - return true; - } - bool handled = true; IPC_BEGIN_MESSAGE_MAP(ExtensionHost, message) IPC_MESSAGE_HANDLER(ViewHostMsg_RunFileChooser, OnRunFileChooser) diff --git a/chrome/browser/extensions/extension_host.h b/chrome/browser/extensions/extension_host.h index 1a23d20..63adef8 100644 --- a/chrome/browser/extensions/extension_host.h +++ b/chrome/browser/extensions/extension_host.h @@ -128,6 +128,8 @@ class ExtensionHost : public RenderViewHostDelegate, // RenderViewHostDelegate implementation. virtual RenderViewHostDelegate::View* GetViewDelegate(); virtual WebPreferences GetWebkitPrefs(); + virtual void ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params); virtual void RunJavaScriptMessage(const std::wstring& message, const std::wstring& default_prompt, const GURL& frame_url, diff --git a/chrome/browser/extensions/extension_message_handler.cc b/chrome/browser/extensions/extension_message_handler.cc index 4447dac..52517cb 100644 --- a/chrome/browser/extensions/extension_message_handler.cc +++ b/chrome/browser/extensions/extension_message_handler.cc @@ -10,6 +10,7 @@ #include "content/browser/child_process_security_policy.h" #include "content/browser/renderer_host/render_process_host.h" #include "content/browser/renderer_host/render_view_host.h" +#include "content/browser/renderer_host/render_view_host_delegate.h" ExtensionMessageHandler::ExtensionMessageHandler( RenderViewHost* render_view_host) @@ -24,6 +25,7 @@ bool ExtensionMessageHandler::OnMessageReceived( bool handled = true; IPC_BEGIN_MESSAGE_MAP(ExtensionMessageHandler, message) IPC_MESSAGE_HANDLER(ExtensionHostMsg_PostMessage, OnPostMessage) + IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled; @@ -37,3 +39,18 @@ void ExtensionMessageHandler::OnPostMessage(int port_id, port_id, message); } } + +void ExtensionMessageHandler::OnRequest( + const ExtensionHostMsg_DomMessage_Params& params) { + if (!ChildProcessSecurityPolicy::GetInstance()-> + HasExtensionBindings(render_view_host()->process()->id())) { + // This can happen if someone uses window.open() to open an extension URL + // from a non-extension context. + Send(new ExtensionMsg_Response( + routing_id(), params.request_id, false, std::string(), + "Access to extension API denied.")); + return; + } + + render_view_host()->delegate()->ProcessWebUIMessage(params); +} diff --git a/chrome/browser/extensions/extension_message_handler.h b/chrome/browser/extensions/extension_message_handler.h index 0ba4940..3a5c050 100644 --- a/chrome/browser/extensions/extension_message_handler.h +++ b/chrome/browser/extensions/extension_message_handler.h @@ -14,12 +14,6 @@ struct ExtensionHostMsg_DomMessage_Params; // Filters and dispatches extension-related IPC messages that arrive from // renderers. There is one of these objects for each RenderViewHost in Chrome. // Contrast this with ExtensionTabHelper, which is only created for TabContents. -// -// TODO(aa): Handling of content script messaging should be able to move to EFD -// once there is an EFD for every RVHD where extension code can run. Then we -// could eliminate this class. Right now, we don't end up with an EFD for tab -// contents unless that tab contents is hosting chrome-extension:// URLs. That -// still leaves content scripts. See also: crbug.com/80307. class ExtensionMessageHandler : public RenderViewHostObserver { public: // |sender| is guaranteed to outlive this object. @@ -32,6 +26,7 @@ class ExtensionMessageHandler : public RenderViewHostObserver { private: // Message handlers. void OnPostMessage(int port_id, const std::string& message); + void OnRequest(const ExtensionHostMsg_DomMessage_Params& params); DISALLOW_COPY_AND_ASSIGN(ExtensionMessageHandler); }; diff --git a/chrome/browser/extensions/extension_web_ui.cc b/chrome/browser/extensions/extension_web_ui.cc index 7192c03..1a9b122 100644 --- a/chrome/browser/extensions/extension_web_ui.cc +++ b/chrome/browser/extensions/extension_web_ui.cc @@ -28,7 +28,6 @@ #include "content/browser/tab_contents/tab_contents.h" #include "content/common/bindings_policy.h" #include "content/common/page_transition_types.h" -#include "ipc/ipc_message.h" #include "net/base/file_stream.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/gfx/codec/png_codec.h" @@ -185,11 +184,9 @@ void ExtensionWebUI::RenderViewReused(RenderViewHost* render_view_host) { ResetExtensionBookmarkManagerEventRouter(); } -bool ExtensionWebUI::OnMessageReceived(const IPC::Message& message) { - if (extension_function_dispatcher_.get()) - return extension_function_dispatcher_->OnMessageReceived(message); - - return false; +void ExtensionWebUI::ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params) { + extension_function_dispatcher_->HandleRequest(params); } Browser* ExtensionWebUI::GetBrowser() { diff --git a/chrome/browser/extensions/extension_web_ui.h b/chrome/browser/extensions/extension_web_ui.h index f41ead3..34f0899 100644 --- a/chrome/browser/extensions/extension_web_ui.h +++ b/chrome/browser/extensions/extension_web_ui.h @@ -14,7 +14,6 @@ #include "chrome/browser/favicon_service.h" #include "chrome/common/extensions/extension.h" #include "content/browser/webui/web_ui.h" -#include "ipc/ipc_channel.h" class GURL; class ListValue; @@ -22,7 +21,7 @@ class PrefService; class Profile; class RenderViewHost; class TabContents; -struct ExtensionHostMsg_Request_Params; +struct ExtensionHostMsg_DomMessage_Params; // This class implements WebUI for extensions and allows extensions to put UI in // the main tab contents area. For example, each extension can specify an @@ -43,9 +42,10 @@ class ExtensionWebUI } // WebUI - virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; virtual void RenderViewCreated(RenderViewHost* render_view_host); virtual void RenderViewReused(RenderViewHost* render_view_host); + virtual void ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params); // ExtensionFunctionDispatcher::Delegate virtual Browser* GetBrowser(); diff --git a/chrome/browser/notifications/balloon_host.cc b/chrome/browser/notifications/balloon_host.cc index 3d600a0..ff6a035 100644 --- a/chrome/browser/notifications/balloon_host.cc +++ b/chrome/browser/notifications/balloon_host.cc @@ -22,7 +22,6 @@ #include "content/common/notification_type.h" #include "content/common/renderer_preferences.h" #include "content/common/view_messages.h" -#include "ipc/ipc_message.h" #include "webkit/glue/webpreferences.h" BalloonHost::BalloonHost(Balloon* balloon) @@ -132,11 +131,11 @@ RenderViewHostDelegate::View* BalloonHost::GetViewDelegate() { return this; } -bool BalloonHost::OnMessageReceived(const IPC::Message& message) { - if (extension_function_dispatcher_.get()) - return extension_function_dispatcher_->OnMessageReceived(message); - - return false; +void BalloonHost::ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params) { + if (extension_function_dispatcher_.get()) { + extension_function_dispatcher_->HandleRequest(params); + } } // RenderViewHostDelegate::View methods implemented to allow links to diff --git a/chrome/browser/notifications/balloon_host.h b/chrome/browser/notifications/balloon_host.h index 9a70e61..475d6bd 100644 --- a/chrome/browser/notifications/balloon_host.h +++ b/chrome/browser/notifications/balloon_host.h @@ -9,7 +9,6 @@ #include <string> #include <vector> -#include "base/compiler_specific.h" #include "base/scoped_ptr.h" #include "chrome/browser/extensions/extension_function_dispatcher.h" #include "chrome/browser/tab_contents/render_view_host_delegate_helper.h" @@ -24,10 +23,6 @@ class SiteInstance; struct RendererPreferences; struct WebPreferences; -namespace IPC { -class Message; -} - class BalloonHost : public RenderViewHostDelegate, public RenderViewHostDelegate::View, public ExtensionFunctionDispatcher::Delegate, @@ -66,6 +61,8 @@ class BalloonHost : public RenderViewHostDelegate, virtual int GetBrowserWindowID() const; virtual ViewType::Type GetRenderViewType() const; virtual RenderViewHostDelegate::View* GetViewDelegate(); + virtual void ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params); // NotificationObserver override. virtual void Observe(NotificationType type, @@ -134,9 +131,6 @@ class BalloonHost : public RenderViewHostDelegate, RenderViewHost* render_view_host_; private: - // RenderViewHostDelegate - virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; - // Called to send an event that the balloon has been disconnected from // a renderer (if should_notify_on_disconnect_ is true). void NotifyDisconnect(); diff --git a/chrome/browser/tab_contents/background_contents.cc b/chrome/browser/tab_contents/background_contents.cc index e5f98b8..c994fad 100644 --- a/chrome/browser/tab_contents/background_contents.cc +++ b/chrome/browser/tab_contents/background_contents.cc @@ -10,6 +10,7 @@ #include "chrome/browser/renderer_preferences_util.h" #include "chrome/browser/ui/webui/chrome_web_ui_factory.h" #include "chrome/common/extensions/extension_constants.h" +#include "chrome/common/extensions/extension_messages.h" #include "chrome/common/url_constants.h" #include "chrome/common/view_types.h" #include "content/browser/browsing_instance.h" @@ -207,6 +208,15 @@ WebPreferences BackgroundContents::GetWebkitPrefs() { false); // is_web_ui } +void BackgroundContents::ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params) { + // TODO(rafaelw): It may make sense for extensions to be able to open + // BackgroundContents to chrome-extension://<id> pages. Consider implementing. + render_view_host_->Send(new ExtensionMsg_Response( + render_view_host_->routing_id(), params.request_id, false, + std::string(), "Access to extension API denied.")); +} + void BackgroundContents::CreateNewWindow( int route_id, const ViewHostMsg_CreateWindow_Params& params) { diff --git a/chrome/browser/tab_contents/background_contents.h b/chrome/browser/tab_contents/background_contents.h index f4e8874..1e7a451e 100644 --- a/chrome/browser/tab_contents/background_contents.h +++ b/chrome/browser/tab_contents/background_contents.h @@ -19,6 +19,7 @@ #include "webkit/glue/window_open_disposition.h" class TabContents; +struct ExtensionHostMsg_DomMessage_Params; struct WebPreferences; namespace gfx { @@ -67,6 +68,8 @@ class BackgroundContents : public RenderViewHostDelegate, virtual void DidNavigate(RenderViewHost* render_view_host, const ViewHostMsg_FrameNavigate_Params& params); virtual WebPreferences GetWebkitPrefs(); + virtual void ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params); virtual void RunJavaScriptMessage(const std::wstring& message, const std::wstring& default_prompt, const GURL& frame_url, diff --git a/chrome/browser/ui/webui/sync_internals_ui.cc b/chrome/browser/ui/webui/sync_internals_ui.cc index e11eb23..8ab946e1 100644 --- a/chrome/browser/ui/webui/sync_internals_ui.cc +++ b/chrome/browser/ui/webui/sync_internals_ui.cc @@ -42,10 +42,10 @@ SyncInternalsUI::~SyncInternalsUI() { } } -void SyncInternalsUI::OnWebUISend(const GURL& source_url, - const std::string& name, - const ListValue& content) { - browser_sync::JsArgList args(content); +void SyncInternalsUI::ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params) { + const std::string& name = params.name; + browser_sync::JsArgList args(params.arguments); VLOG(1) << "Received message: " << name << " with args " << args.ToString(); // We handle this case directly because it needs to work even if diff --git a/chrome/browser/ui/webui/sync_internals_ui.h b/chrome/browser/ui/webui/sync_internals_ui.h index e5a8118..589b712 100644 --- a/chrome/browser/ui/webui/sync_internals_ui.h +++ b/chrome/browser/ui/webui/sync_internals_ui.h @@ -8,7 +8,6 @@ #include <string> -#include "base/compiler_specific.h" #include "base/basictypes.h" #include "chrome/browser/sync/js_event_handler.h" #include "content/browser/webui/web_ui.h" @@ -36,13 +35,12 @@ class SyncInternalsUI : public WebUI, public browser_sync::JsEventHandler { // // TODO(akalin): Add a simple isSyncEnabled() message and make // getAboutInfo() be handled by the sync service. - virtual void OnWebUISend(const GURL& source_url, - const std::string& name, - const ListValue& args) OVERRIDE; + virtual void ProcessWebUIMessage( + const ExtensionHostMsg_DomMessage_Params& params); // browser_sync::JsEventHandler implementation. virtual void HandleJsEvent(const std::string& name, - const browser_sync::JsArgList& args) OVERRIDE; + const browser_sync::JsArgList& args); private: // Returns the sync service's JsFrontend object, or NULL if the sync diff --git a/chrome/browser/ui/webui/sync_internals_ui_unittest.cc b/chrome/browser/ui/webui/sync_internals_ui_unittest.cc index 27b46a7..1407f10 100644 --- a/chrome/browser/ui/webui/sync_internals_ui_unittest.cc +++ b/chrome/browser/ui/webui/sync_internals_ui_unittest.cc @@ -12,6 +12,7 @@ #include "chrome/browser/sync/js_arg_list.h" #include "chrome/browser/sync/js_test_util.h" #include "chrome/browser/sync/profile_sync_service_mock.h" +#include "chrome/common/extensions/extension_messages.h" #include "chrome/test/profile_mock.h" #include "content/browser/browser_thread.h" #include "content/browser/renderer_host/test_render_view_host.h" @@ -160,33 +161,33 @@ TEST_F(SyncInternalsUITest, HandleJsEventNullService) { GetTestSyncInternalsUI()->HandleJsEvent("testMessage", JsArgList(args)); } -TEST_F(SyncInternalsUITest, OnWebUISendBasic) { +TEST_F(SyncInternalsUITest, ProcessWebUIMessageBasic) { ExpectSetupTeardownCalls(); - std::string name = "testName"; - ListValue args; - args.Append(Value::CreateIntegerValue(10)); + ExtensionHostMsg_DomMessage_Params params; + params.name = "testName"; + params.arguments.Append(Value::CreateIntegerValue(10)); EXPECT_CALL(mock_js_backend_, - ProcessMessage(name, HasArgsAsList(args), + ProcessMessage(params.name, HasArgsAsList(params.arguments), GetTestSyncInternalsUIAddress())); ConstructTestSyncInternalsUI(); - GetTestSyncInternalsUI()->OnWebUISend(GURL(), name, args); + GetTestSyncInternalsUI()->ProcessWebUIMessage(params); } -TEST_F(SyncInternalsUITest, OnWebUISendBasicNullService) { +TEST_F(SyncInternalsUITest, ProcessWebUIMessageBasicNullService) { ExpectSetupTeardownCallsNullService(); ConstructTestSyncInternalsUI(); - std::string name = "testName"; - ListValue args; - args.Append(Value::CreateIntegerValue(5)); + ExtensionHostMsg_DomMessage_Params params; + params.name = "testName"; + params.arguments.Append(Value::CreateIntegerValue(5)); // Should drop the message. - GetTestSyncInternalsUI()->OnWebUISend(GURL(), name, args); + GetTestSyncInternalsUI()->ProcessWebUIMessage(params); } namespace { @@ -194,28 +195,32 @@ const char kAboutInfoCall[] = "onGetAboutInfoFinished({\"summary\":\"SYNC DISABLED\"});"; } // namespace -TEST_F(SyncInternalsUITest, OnWebUISendGetAboutInfo) { +TEST_F(SyncInternalsUITest, ProcessWebUIMessageGetAboutInfo) { ExpectSetupTeardownCalls(); + ExtensionHostMsg_DomMessage_Params params; + params.name = "getAboutInfo"; + ConstructTestSyncInternalsUI(); EXPECT_CALL(*GetTestSyncInternalsUI(), ExecuteJavascript(ASCIIToUTF16(kAboutInfoCall))); - ListValue args; - GetTestSyncInternalsUI()->OnWebUISend(GURL(), "getAboutInfo", args); + GetTestSyncInternalsUI()->ProcessWebUIMessage(params); } -TEST_F(SyncInternalsUITest, OnWebUISendGetAboutInfoNullService) { +TEST_F(SyncInternalsUITest, ProcessWebUIMessageGetAboutInfoNullService) { ExpectSetupTeardownCallsNullService(); + ExtensionHostMsg_DomMessage_Params params; + params.name = "getAboutInfo"; + ConstructTestSyncInternalsUI(); EXPECT_CALL(*GetTestSyncInternalsUI(), ExecuteJavascript(ASCIIToUTF16(kAboutInfoCall))); - ListValue args; - GetTestSyncInternalsUI()->OnWebUISend(GURL(), "getAboutInfo", args); + GetTestSyncInternalsUI()->ProcessWebUIMessage(params); } } // namespace |