1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file. 4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/extensions/extension_event_router_forwarder.h" 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "base/message_loop.h" 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/profiles/profile_manager.h" 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/test/testing_browser_process_test.h" 10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/test/testing_profile.h" 11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/test/thread_test_helper.h" 12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/browser_thread.h" 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "googleurl/src/gurl.h" 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "testing/gmock/include/gmock/gmock.h" 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "testing/gtest/include/gtest/gtest.h" 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "ui/base/system_monitor/system_monitor.h" 17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 18dc0f95d653279beabeb9817299e2902918ba123eKristian Monsennamespace { 19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenconst char kEventName[] = "event_name"; 21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenconst char kEventArgs[] = "event_args"; 22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenconst char kExt[] = "extension"; 23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass MockExtensionEventRouterForwarder : public ExtensionEventRouterForwarder { 25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public: 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual ~MockExtensionEventRouterForwarder() {} 27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen MOCK_METHOD6(CallExtensionEventRouter, 29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void(Profile*, const std::string&, const std::string&, const std::string&, 30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen Profile*, const GURL&)); 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}; 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} // namespace 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass ExtensionEventRouterForwarderTest : public TestingBrowserProcessTest { 36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen protected: 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ExtensionEventRouterForwarderTest() 38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen : ui_thread_(BrowserThread::UI, &message_loop_), 39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen io_thread_(BrowserThread::IO) { 40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } 41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ~ExtensionEventRouterForwarderTest() { 43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void SetUp() { 46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Inject a BrowserProcess with a ProfileManager. 47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_TRUE(io_thread_.Start()); 48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TestingBrowserProcess* browser_process = testing_browser_process_.get(); 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen browser_process->SetProfileManager(new ProfileManager); 51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_ = new TestingProfile(); 53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile2_ = new TestingProfile(); 54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen browser_process->profile_manager()->RegisterProfile(profile1_, true); 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen browser_process->profile_manager()->RegisterProfile(profile2_, true); 57dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } 58dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 59dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen TestingProfile* CreateIncognitoProfile(TestingProfile* base) { 60dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen TestingProfile* incognito = new TestingProfile(); 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen incognito->set_incognito(true); 62dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen base->SetOffTheRecordProfile(incognito); 63dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return incognito; 64dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } 65dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 66dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen MessageLoopForUI message_loop_; 67dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen BrowserThread ui_thread_; 68dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen BrowserThread io_thread_; 69dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ui::SystemMonitor dummy; 70dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Profiles are weak pointers, owned by ProfileManager in |browser_process_|. 71dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen TestingProfile* profile1_; 72dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen TestingProfile* profile2_; 73dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}; 74dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 75dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, BroadcastRendererUI) { 76dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 77dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 78dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 79dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 80dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 81dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_, "", kEventName, kEventArgs, profile1_, url)); 82dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 83dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 84dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile2_, "", kEventName, kEventArgs, profile2_, url)); 85dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router->BroadcastEventToRenderers(kEventName, kEventArgs, url); 86dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 87dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 88dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, BroadcastRendererUIIncognito) { 89dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 90dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 91dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen using ::testing::_; 92dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 93dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen Profile* incognito = CreateIncognitoProfile(profile1_); 94dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 95dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 96dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_, "", kEventName, kEventArgs, profile1_, url)); 97dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 98dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(incognito, _, _, _, _, _)).Times(0); 99dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 100dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 101dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile2_, "", kEventName, kEventArgs, profile2_, url)); 102dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router->BroadcastEventToRenderers(kEventName, kEventArgs, url); 103dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 104dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 105dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// This is the canonical test for passing control flow from the IO thread 106dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// to the UI thread. Repeating this for all public functions of 107dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// ExtensionEventRouterForwarder would not increase coverage. 108dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, BroadcastRendererIO) { 109dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 110dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 111dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 112dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 113dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 114dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_, "", kEventName, kEventArgs, profile1_, url)); 115dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 116dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 117dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile2_, "", kEventName, kEventArgs, profile2_, url)); 118dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 119dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen NewRunnableMethod( 120dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router.get(), 121dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen &MockExtensionEventRouterForwarder::BroadcastEventToRenderers, 122dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen std::string(kEventName), std::string(kEventArgs), url)); 123dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 124dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Wait for IO thread's message loop to be processed 125dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<ThreadTestHelper> helper( 126dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new ThreadTestHelper(BrowserThread::IO)); 127dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_TRUE(helper->Run()); 128dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 129dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen MessageLoop::current()->RunAllPending(); 130dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 131dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 132dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, UnicastRendererUIRestricted) { 133dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 134dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 135dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen using ::testing::_; 136dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 137dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 138dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 139dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_, "", kEventName, kEventArgs, profile1_, url)); 140dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 141dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(profile2_, _, _, _, _, _)).Times(0); 142dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router->DispatchEventToRenderers(kEventName, kEventArgs, 143dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_->GetRuntimeId(), 144dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen true, url); 145dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 146dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 147dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, 148dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen UnicastRendererUIRestrictedIncognito1) { 149dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 150dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 151dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen Profile* incognito = CreateIncognitoProfile(profile1_); 152dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen using ::testing::_; 153dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 154dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 155dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 156dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_, "", kEventName, kEventArgs, profile1_, url)); 157dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 158dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(incognito, _, _, _, _, _)).Times(0); 159dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 160dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(profile2_, _, _, _, _, _)).Times(0); 161dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router->DispatchEventToRenderers(kEventName, kEventArgs, 162dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_->GetRuntimeId(), 163dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen true, url); 164dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 165dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 166dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, 167dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen UnicastRendererUIRestrictedIncognito2) { 168dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 169dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 170dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen Profile* incognito = CreateIncognitoProfile(profile1_); 171dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen using ::testing::_; 172dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 173dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 174dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(profile1_, _, _, _, _, _)).Times(0); 175dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 176dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 177dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen incognito, "", kEventName, kEventArgs, incognito, url)); 178dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 179dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(profile2_, _, _, _, _, _)).Times(0); 180dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router->DispatchEventToRenderers(kEventName, kEventArgs, 181dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen incognito->GetRuntimeId(), 182dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen true, url); 183dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 184dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 185dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, UnicastRendererUIUnrestricted) { 186dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 187dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 188dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen using ::testing::_; 189dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 190dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 191dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 192dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_, "", kEventName, kEventArgs, NULL, url)); 193dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 194dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(profile2_, _, _, _, _, _)).Times(0); 195dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router->DispatchEventToRenderers(kEventName, kEventArgs, 196dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_->GetRuntimeId(), 197dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen false, url); 198dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 199dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 200dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, 201dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen UnicastRendererUIUnrestrictedIncognito) { 202dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 203dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 204dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen Profile* incognito = CreateIncognitoProfile(profile1_); 205dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen using ::testing::_; 206dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 207dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 208dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 209dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_, "", kEventName, kEventArgs, NULL, url)); 210dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 211dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(incognito, _, _, _, _, _)).Times(0); 212dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 213dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(profile2_, _, _, _, _, _)).Times(0); 214dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router->DispatchEventToRenderers(kEventName, kEventArgs, 215dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_->GetRuntimeId(), 216dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen false, url); 217dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 218dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 219dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, BroadcastExtensionUI) { 220dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 221dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 222dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 223dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 224dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 225dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_, kExt, kEventName, kEventArgs, profile1_, url)); 226dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 227dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 228dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile2_, kExt, kEventName, kEventArgs, profile2_, url)); 229dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router->BroadcastEventToExtension(kExt, kEventName, kEventArgs, url); 230dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 231dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 232dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, UnicastExtensionUIRestricted) { 233dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 234dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 235dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen using ::testing::_; 236dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 237dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 238dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 239dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_, kExt, kEventName, kEventArgs, profile1_, url)); 240dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 241dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(profile2_, _, _, _, _, _)).Times(0); 242dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router->DispatchEventToExtension(kExt, kEventName, kEventArgs, 243dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_->GetRuntimeId(), 244dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen true, url); 245dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 246dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 247dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(ExtensionEventRouterForwarderTest, UnicastExtensionUIUnrestricted) { 248dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<MockExtensionEventRouterForwarder> event_router( 249dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen new MockExtensionEventRouterForwarder); 250dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen using ::testing::_; 251dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url; 252dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 253dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter( 254dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_, kExt, kEventName, kEventArgs, NULL, url)); 255dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen EXPECT_CALL(*event_router, 256dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CallExtensionEventRouter(profile2_, _, _, _, _, _)).Times(0); 257dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen event_router->DispatchEventToExtension(kExt, kEventName, kEventArgs, 258dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen profile1_->GetRuntimeId(), 259dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen false, url); 260dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 261