diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-13 15:02:53 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-13 15:02:53 +0000 |
commit | 9f005fe34de31a4db2e5e71c1780681cf8e81f6d (patch) | |
tree | d05519124cbcb006311f551a7c23575c5545c8b0 /chrome/browser | |
parent | 115db1d73d21e02b498a8fe369f02fdca93bb2db (diff) | |
download | chromium_src-9f005fe34de31a4db2e5e71c1780681cf8e81f6d.zip chromium_src-9f005fe34de31a4db2e5e71c1780681cf8e81f6d.tar.gz chromium_src-9f005fe34de31a4db2e5e71c1780681cf8e81f6d.tar.bz2 |
Revert 44351 - Reland 44348 Add support for restricting broadcasting events to extensions based on host permissions
BUG=38398
TEST=none
TBR=jochen@chromium.org
Review URL: http://codereview.chromium.org/1642005
TBR=jochen@chromium.org
Review URL: http://codereview.chromium.org/1521027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44355 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
20 files changed, 41 insertions, 110 deletions
diff --git a/chrome/browser/automation/automation_provider.cc b/chrome/browser/automation/automation_provider.cc index e6a0360..1aac1b1 100644 --- a/chrome/browser/automation/automation_provider.cc +++ b/chrome/browser/automation/automation_provider.cc @@ -2202,7 +2202,7 @@ bool AutomationProvider::InterceptBrowserEventMessageFromExternalHost( if (profile()->GetExtensionMessageService()) { profile()->GetExtensionMessageService()->DispatchEventToRenderers( - event_name, json_args, profile()->IsOffTheRecord(), GURL()); + event_name, json_args, profile()->IsOffTheRecord()); } return true; diff --git a/chrome/browser/automation/extension_port_container.cc b/chrome/browser/automation/extension_port_container.cc index e93f42c..e167e7e 100644 --- a/chrome/browser/automation/extension_port_container.cc +++ b/chrome/browser/automation/extension_port_container.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -114,8 +114,7 @@ bool ExtensionPortContainer::Send(IPC::Message *message) { void ExtensionPortContainer::OnExtensionMessageInvoke( const std::string& function_name, const ListValue& args, - bool requires_incognito_access, - const GURL& event_url) { + bool requires_incognito_access) { if (function_name == ExtensionMessageService::kDispatchOnMessage) { DCHECK_EQ(args.GetSize(), 2u); diff --git a/chrome/browser/automation/extension_port_container.h b/chrome/browser/automation/extension_port_container.h index 8fd8299..b74709d 100644 --- a/chrome/browser/automation/extension_port_container.h +++ b/chrome/browser/automation/extension_port_container.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -13,7 +13,6 @@ class AutomationProvider; class ExtensionMessageService; -class GURL; class ListValue; class MessageLoop; class RenderViewHost; @@ -65,8 +64,7 @@ class ExtensionPortContainer : public IPC::Message::Sender { void OnExtensionMessageInvoke(const std::string& function_name, const ListValue& args, - bool requires_incognito_access, - const GURL& event_url); + bool requires_incognito_access); void OnExtensionHandleMessage(const std::string& message, int source_port_id); void OnExtensionPortDisconnected(int source_port_id); diff --git a/chrome/browser/debugger/extension_ports_remote_service.cc b/chrome/browser/debugger/extension_ports_remote_service.cc index d2a05ea..c4380d5 100644 --- a/chrome/browser/debugger/extension_ports_remote_service.cc +++ b/chrome/browser/debugger/extension_ports_remote_service.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -243,8 +243,7 @@ bool ExtensionPortsRemoteService::Send(IPC::Message *message) { void ExtensionPortsRemoteService::OnExtensionMessageInvoke( const std::string& function_name, const ListValue& args, - bool requires_incognito_access, - const GURL& event_url) { + bool requires_incognito_access) { if (function_name == ExtensionMessageService::kDispatchOnMessage) { DCHECK_EQ(args.GetSize(), 2u); std::string message; diff --git a/chrome/browser/debugger/extension_ports_remote_service.h b/chrome/browser/debugger/extension_ports_remote_service.h index 6067f44..3a9e53b 100644 --- a/chrome/browser/debugger/extension_ports_remote_service.h +++ b/chrome/browser/debugger/extension_ports_remote_service.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -21,7 +21,6 @@ class DevToolsProtocolHandler; class DevToolsRemoteMessage; class DictionaryValue; -class GURL; class ListValue; class Value; @@ -76,8 +75,7 @@ class ExtensionPortsRemoteService : public DevToolsRemoteListener, // Handles a message from the ExtensionMessageService. void OnExtensionMessageInvoke(const std::string& function_name, const ListValue& args, - bool requires_incognito_access, - const GURL& event_url); + bool requires_incognito_access); // Handles a message sent from an extension through the // ExtensionMessageService, to be passed to the external client. void OnExtensionMessage(const std::string& message, int port_id); diff --git a/chrome/browser/extensions/extension_accessibility_api.cc b/chrome/browser/extensions/extension_accessibility_api.cc index aebdda2..3b6a28f 100644 --- a/chrome/browser/extensions/extension_accessibility_api.cc +++ b/chrome/browser/extensions/extension_accessibility_api.cc @@ -176,7 +176,7 @@ void ExtensionAccessibilityEventRouter::DispatchEvent( const std::string& json_args) { if (enabled_ && profile && profile->GetExtensionMessageService()) { profile->GetExtensionMessageService()->DispatchEventToRenderers( - event_name, json_args, profile->IsOffTheRecord(), GURL()); + event_name, json_args, profile->IsOffTheRecord()); } } diff --git a/chrome/browser/extensions/extension_bookmark_manager_api.cc b/chrome/browser/extensions/extension_bookmark_manager_api.cc index 9b577a8..d057731 100644 --- a/chrome/browser/extensions/extension_bookmark_manager_api.cc +++ b/chrome/browser/extensions/extension_bookmark_manager_api.cc @@ -156,7 +156,7 @@ void ExtensionBookmarkManagerEventRouter::DispatchEvent(const char* event_name, std::string json_args; base::JSONWriter::Write(args, false, &json_args); profile_->GetExtensionMessageService()->DispatchEventToRenderers( - event_name, json_args, profile_->IsOffTheRecord(), GURL()); + event_name, json_args, profile_->IsOffTheRecord()); } void ExtensionBookmarkManagerEventRouter::DispatchDragEvent( diff --git a/chrome/browser/extensions/extension_bookmarks_module.cc b/chrome/browser/extensions/extension_bookmarks_module.cc index 629ae76..6a8cd08 100644 --- a/chrome/browser/extensions/extension_bookmarks_module.cc +++ b/chrome/browser/extensions/extension_bookmarks_module.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -95,7 +95,7 @@ void ExtensionBookmarkEventRouter::DispatchEvent(Profile *profile, const std::string json_args) { if (profile->GetExtensionMessageService()) { profile->GetExtensionMessageService()->DispatchEventToRenderers( - event_name, json_args, profile->IsOffTheRecord(), GURL()); + event_name, json_args, profile->IsOffTheRecord()); } } diff --git a/chrome/browser/extensions/extension_browser_event_router.cc b/chrome/browser/extensions/extension_browser_event_router.cc index 52d26da..9b379bc 100644 --- a/chrome/browser/extensions/extension_browser_event_router.cc +++ b/chrome/browser/extensions/extension_browser_event_router.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -89,7 +89,7 @@ static void DispatchEvent(Profile* profile, const std::string json_args) { if (profile->GetExtensionMessageService()) { profile->GetExtensionMessageService()->DispatchEventToRenderers( - event_name, json_args, profile->IsOffTheRecord(), GURL()); + event_name, json_args, profile->IsOffTheRecord()); } } diff --git a/chrome/browser/extensions/extension_devtools_bridge.cc b/chrome/browser/extensions/extension_devtools_bridge.cc index d452c04..a6399d8 100644 --- a/chrome/browser/extensions/extension_devtools_bridge.cc +++ b/chrome/browser/extensions/extension_devtools_bridge.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -65,7 +65,7 @@ void ExtensionDevToolsBridge::InspectedTabClosing() { // event in extensions. std::string json("[{}]"); profile_->GetExtensionMessageService()->DispatchEventToRenderers( - on_tab_close_event_name_, json, profile_->IsOffTheRecord(), GURL()); + on_tab_close_event_name_, json, profile_->IsOffTheRecord()); // This may result in this object being destroyed. extension_devtools_manager_->BridgeClosingForTab(tab_id_); @@ -88,7 +88,7 @@ void ExtensionDevToolsBridge::OnRpcMessage(const DevToolsMessageData& data) { && data.method_name == kApuPageEventMessageName) { std::string json = StringPrintf("[%s]", data.arguments[0].c_str()); profile_->GetExtensionMessageService()->DispatchEventToRenderers( - on_page_event_name_, json, profile_->IsOffTheRecord(), GURL()); + on_page_event_name_, json, profile_->IsOffTheRecord()); } } diff --git a/chrome/browser/extensions/extension_history_api.cc b/chrome/browser/extensions/extension_history_api.cc index 400c163..1614a80 100644 --- a/chrome/browser/extensions/extension_history_api.cc +++ b/chrome/browser/extensions/extension_history_api.cc @@ -143,7 +143,7 @@ void ExtensionHistoryEventRouter::DispatchEvent(Profile* profile, const std::string& json_args) { if (profile && profile->GetExtensionMessageService()) { profile->GetExtensionMessageService()->DispatchEventToRenderers( - event_name, json_args, profile->IsOffTheRecord(), GURL()); + event_name, json_args, profile->IsOffTheRecord()); } } diff --git a/chrome/browser/extensions/extension_idle_api.cc b/chrome/browser/extensions/extension_idle_api.cc index 949993f..688e4be 100644 --- a/chrome/browser/extensions/extension_idle_api.cc +++ b/chrome/browser/extensions/extension_idle_api.cc @@ -152,6 +152,5 @@ void ExtensionIdleEventRouter::OnIdleStateChange(Profile* profile, profile->GetExtensionMessageService()->DispatchEventToRenderers( keys::kOnStateChanged, json_args, - profile->IsOffTheRecord(), - GURL()); + profile->IsOffTheRecord()); } diff --git a/chrome/browser/extensions/extension_menu_manager.cc b/chrome/browser/extensions/extension_menu_manager.cc index bbf9909..809085e 100644 --- a/chrome/browser/extensions/extension_menu_manager.cc +++ b/chrome/browser/extensions/extension_menu_manager.cc @@ -316,7 +316,7 @@ void ExtensionMenuManager::ExecuteCommand(Profile* profile, base::JSONWriter::Write(&args, false, &json_args); std::string event_name = "contextMenu/" + item->extension_id(); service->DispatchEventToRenderers(event_name, json_args, - profile->IsOffTheRecord(), GURL()); + profile->IsOffTheRecord()); } void ExtensionMenuManager::Observe(NotificationType type, diff --git a/chrome/browser/extensions/extension_menu_manager_unittest.cc b/chrome/browser/extensions/extension_menu_manager_unittest.cc index bdc282e..e81fc04 100644 --- a/chrome/browser/extensions/extension_menu_manager_unittest.cc +++ b/chrome/browser/extensions/extension_menu_manager_unittest.cc @@ -201,10 +201,9 @@ class MockExtensionMessageService : public ExtensionMessageService { explicit MockExtensionMessageService(Profile* profile) : ExtensionMessageService(profile) {} - MOCK_METHOD4(DispatchEventToRenderers, void(const std::string& event_name, + MOCK_METHOD3(DispatchEventToRenderers, void(const std::string& event_name, const std::string& event_args, - bool has_incognito_data, - const GURL& event_url)); + bool has_incognito_data)); private: DISALLOW_COPY_AND_ASSIGN(MockExtensionMessageService); @@ -255,8 +254,7 @@ TEST_F(ExtensionMenuManagerTest, ExecuteCommand) { std::string expected_event_name = "contextMenu/" + item->extension_id(); EXPECT_CALL(*mock_message_service.get(), DispatchEventToRenderers(expected_event_name, _, - profile.IsOffTheRecord(), - GURL())) + profile.IsOffTheRecord())) .Times(1) .WillOnce(SaveArg<1>(&event_args)); diff --git a/chrome/browser/extensions/extension_message_service.cc b/chrome/browser/extensions/extension_message_service.cc index 731e7b8..2586151 100644 --- a/chrome/browser/extensions/extension_message_service.cc +++ b/chrome/browser/extensions/extension_message_service.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -70,7 +70,7 @@ static void DispatchOnConnect(const ExtensionMessageService::MessagePort& port, args.Set(4, Value::CreateStringValue(target_extension_id)); CHECK(port.sender); port.sender->Send(new ViewMsg_ExtensionMessageInvoke(port.routing_id, - ExtensionMessageService::kDispatchOnConnect, args, false, GURL())); + ExtensionMessageService::kDispatchOnConnect, args, false)); } static void DispatchOnDisconnect( @@ -78,7 +78,7 @@ static void DispatchOnDisconnect( ListValue args; args.Set(0, Value::CreateIntegerValue(source_port_id)); port.sender->Send(new ViewMsg_ExtensionMessageInvoke(port.routing_id, - ExtensionMessageService::kDispatchOnDisconnect, args, false, GURL())); + ExtensionMessageService::kDispatchOnDisconnect, args, false)); } static void DispatchOnMessage(const ExtensionMessageService::MessagePort& port, @@ -87,20 +87,18 @@ static void DispatchOnMessage(const ExtensionMessageService::MessagePort& port, args.Set(0, Value::CreateStringValue(message)); args.Set(1, Value::CreateIntegerValue(source_port_id)); port.sender->Send(new ViewMsg_ExtensionMessageInvoke(port.routing_id, - ExtensionMessageService::kDispatchOnMessage, args, false, GURL())); + ExtensionMessageService::kDispatchOnMessage, args, false)); } static void DispatchEvent(const ExtensionMessageService::MessagePort& port, const std::string& event_name, const std::string& event_args, - bool has_incognito_data, - const GURL& event_url) { + bool has_incognito_data) { ListValue args; args.Set(0, Value::CreateStringValue(event_name)); args.Set(1, Value::CreateStringValue(event_args)); port.sender->Send(new ViewMsg_ExtensionMessageInvoke(port.routing_id, - ExtensionMessageService::kDispatchEvent, args, has_incognito_data, - event_url)); + ExtensionMessageService::kDispatchEvent, args, has_incognito_data)); } } // namespace @@ -458,7 +456,7 @@ void ExtensionMessageService::PostMessageFromRenderer( void ExtensionMessageService::DispatchEventToRenderers( const std::string& event_name, const std::string& event_args, - bool has_incognito_data, const GURL& event_url) { + bool has_incognito_data) { DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI); std::set<int>& pids = listeners_[event_name]; @@ -474,8 +472,7 @@ void ExtensionMessageService::DispatchEventToRenderers( continue; } - DispatchEvent( - renderer, event_name, event_args, has_incognito_data, event_url); + DispatchEvent(renderer, event_name, event_args, has_incognito_data); } } diff --git a/chrome/browser/extensions/extension_message_service.h b/chrome/browser/extensions/extension_message_service.h index c205bb9..7d7540e 100644 --- a/chrome/browser/extensions/extension_message_service.h +++ b/chrome/browser/extensions/extension_message_service.h @@ -16,7 +16,6 @@ #include "chrome/browser/extensions/extension_devtools_manager.h" #include "ipc/ipc_message.h" -class GURL; class MessageLoop; class Profile; class RenderProcessHost; @@ -81,13 +80,10 @@ class ExtensionMessageService // Sends a message from a renderer to the given port. void PostMessageFromRenderer(int port_id, const std::string& message); - // Send an event to every registered extension renderer. If - // |has_incognito_data| is true, the event is only sent to extension with the - // permission to access incognito data. If |event_url| is not empty, the - // event is only sent to extension with host permissions for this url. + // Send an event to every registered extension renderer. virtual void DispatchEventToRenderers( const std::string& event_name, const std::string& event_args, - bool has_incognito_data, const GURL& event_url); + bool has_incognito_data); // Given an extension ID, opens a channel between the given // automation "port" or DevTools service and that extension. the diff --git a/chrome/browser/extensions/extension_messages_apitest.cc b/chrome/browser/extensions/extension_messages_apitest.cc index cc412d9..e2e969f 100644 --- a/chrome/browser/extensions/extension_messages_apitest.cc +++ b/chrome/browser/extensions/extension_messages_apitest.cc @@ -3,50 +3,6 @@ // found in the LICENSE file. #include "chrome/browser/extensions/extension_apitest.h" -#include "chrome/browser/extensions/extension_message_service.h" -#include "chrome/browser/profile.h" -#include "chrome/common/notification_registrar.h" - -namespace { - -class MessageSender : public NotificationObserver { - public: - MessageSender() { - registrar_.Add(this, NotificationType::EXTENSION_HOST_DID_STOP_LOADING, - NotificationService::AllSources()); - } - - private: - virtual void Observe(NotificationType type, - const NotificationSource& source, - const NotificationDetails& details) { - ExtensionMessageService* message_service = - Source<Profile>(source).ptr()->GetExtensionMessageService(); - - // Sends four messages to the extension. All but the third message sent - // from the origin http://b.com/ are supposed to arrive. - message_service->DispatchEventToRenderers("test.onMessage", - "[{\"lastMessage\":false,\"data\":\"no restriction\"}]", - Source<Profile>(source).ptr()->IsOffTheRecord(), - GURL()); - message_service->DispatchEventToRenderers("test.onMessage", - "[{\"lastMessage\":false,\"data\":\"http://a.com/\"}]", - Source<Profile>(source).ptr()->IsOffTheRecord(), - GURL("http://a.com/")); - message_service->DispatchEventToRenderers("test.onMessage", - "[{\"lastMessage\":false,\"data\":\"http://b.com/\"}]", - Source<Profile>(source).ptr()->IsOffTheRecord(), - GURL("http://b.com/")); - message_service->DispatchEventToRenderers("test.onMessage", - "[{\"lastMessage\":true,\"data\":\"last message\"}]", - Source<Profile>(source).ptr()->IsOffTheRecord(), - GURL()); - } - - NotificationRegistrar registrar_; -}; - -} // namespace // Tests that message passing between extensions and content scripts works. IN_PROC_BROWSER_TEST_F(ExtensionApiTest, Messaging) { @@ -64,10 +20,3 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MessagingExternal) { ASSERT_TRUE(RunExtensionTest("messaging/connect_external")) << message_; } - -// Tests that messages with event_urls are only passed to extensions with -// appropriate permissions. -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MessagingEventURL) { - MessageSender sender; - ASSERT_TRUE(RunExtensionTest("messaging/event_url")) << message_; -} diff --git a/chrome/browser/extensions/extension_messages_unittest.cc b/chrome/browser/extensions/extension_messages_unittest.cc index b90e92f..5d06654 100644 --- a/chrome/browser/extensions/extension_messages_unittest.cc +++ b/chrome/browser/extensions/extension_messages_unittest.cc @@ -18,15 +18,14 @@ static void DispatchOnConnect(int source_port_id, const std::string& name, args.Set(3, Value::CreateStringValue("")); // extension ID is empty for tests args.Set(4, Value::CreateStringValue("")); // extension ID is empty for tests RendererExtensionBindings::Invoke( - ExtensionMessageService::kDispatchOnConnect, args, NULL, false, GURL()); + ExtensionMessageService::kDispatchOnConnect, args, NULL, false); } static void DispatchOnDisconnect(int source_port_id) { ListValue args; args.Set(0, Value::CreateIntegerValue(source_port_id)); RendererExtensionBindings::Invoke( - ExtensionMessageService::kDispatchOnDisconnect, args, NULL, false, - GURL()); + ExtensionMessageService::kDispatchOnDisconnect, args, NULL, false); } static void DispatchOnMessage(const std::string& message, int source_port_id) { @@ -34,7 +33,7 @@ static void DispatchOnMessage(const std::string& message, int source_port_id) { args.Set(0, Value::CreateStringValue(message)); args.Set(1, Value::CreateIntegerValue(source_port_id)); RendererExtensionBindings::Invoke( - ExtensionMessageService::kDispatchOnMessage, args, NULL, false, GURL()); + ExtensionMessageService::kDispatchOnMessage, args, NULL, false); } // Tests that the bindings for opening a channel to an extension and sending diff --git a/chrome/browser/extensions/extension_popup_api.cc b/chrome/browser/extensions/extension_popup_api.cc index a6f85f2..f73dc7f 100644 --- a/chrome/browser/extensions/extension_popup_api.cc +++ b/chrome/browser/extensions/extension_popup_api.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -353,6 +353,5 @@ void PopupEventRouter::OnPopupClosed(Profile* profile, profile->GetExtensionMessageService()->DispatchEventToRenderers( full_event_name, base::JSONWriter::kEmptyArray, - profile->IsOffTheRecord(), - GURL()); + profile->IsOffTheRecord()); } diff --git a/chrome/browser/extensions/extension_toolstrip_api.cc b/chrome/browser/extensions/extension_toolstrip_api.cc index 3732c68..a858150 100644 --- a/chrome/browser/extensions/extension_toolstrip_api.cc +++ b/chrome/browser/extensions/extension_toolstrip_api.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -145,7 +145,7 @@ void ToolstripEventRouter::DispatchEvent(Profile *profile, base::JSONWriter::Write(&json, false, &json_args); std::string full_event_name = StringPrintf(event_name, routing_id); profile->GetExtensionMessageService()->DispatchEventToRenderers( - full_event_name, json_args, profile->IsOffTheRecord(), GURL()); + full_event_name, json_args, profile->IsOffTheRecord()); } } |