| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/browser/extensions/event_router_forwarder.h" | 5 #include "chrome/browser/extensions/event_router_forwarder.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/power_monitor/power_monitor.h" | 9 #include "base/power_monitor/power_monitor.h" |
| 10 #include "base/test/thread_test_helper.h" | 10 #include "base/test/thread_test_helper.h" |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 scoped_ptr<base::PowerMonitor> dummy; | 121 scoped_ptr<base::PowerMonitor> dummy; |
| 122 // Profiles are weak pointers, owned by ProfileManager in |browser_process_|. | 122 // Profiles are weak pointers, owned by ProfileManager in |browser_process_|. |
| 123 TestingProfile* profile1_; | 123 TestingProfile* profile1_; |
| 124 TestingProfile* profile2_; | 124 TestingProfile* profile2_; |
| 125 }; | 125 }; |
| 126 | 126 |
| 127 TEST_F(EventRouterForwarderTest, BroadcastRendererUI) { | 127 TEST_F(EventRouterForwarderTest, BroadcastRendererUI) { |
| 128 scoped_refptr<MockEventRouterForwarder> event_router( | 128 scoped_refptr<MockEventRouterForwarder> event_router( |
| 129 new MockEventRouterForwarder); | 129 new MockEventRouterForwarder); |
| 130 GURL url; | 130 GURL url; |
| 131 EXPECT_CALL(*event_router, | 131 EXPECT_CALL(*event_router.get(), |
| 132 CallEventRouter(profile1_, "", kEventName, profile1_, url)); | 132 CallEventRouter(profile1_, "", kEventName, profile1_, url)); |
| 133 EXPECT_CALL(*event_router, | 133 EXPECT_CALL(*event_router.get(), |
| 134 CallEventRouter(profile2_, "", kEventName, profile2_, url)); | 134 CallEventRouter(profile2_, "", kEventName, profile2_, url)); |
| 135 BroadcastEventToRenderers(event_router.get(), kEventName, url); | 135 BroadcastEventToRenderers(event_router.get(), kEventName, url); |
| 136 } | 136 } |
| 137 | 137 |
| 138 TEST_F(EventRouterForwarderTest, BroadcastRendererUIIncognito) { | 138 TEST_F(EventRouterForwarderTest, BroadcastRendererUIIncognito) { |
| 139 scoped_refptr<MockEventRouterForwarder> event_router( | 139 scoped_refptr<MockEventRouterForwarder> event_router( |
| 140 new MockEventRouterForwarder); | 140 new MockEventRouterForwarder); |
| 141 using ::testing::_; | 141 using ::testing::_; |
| 142 GURL url; | 142 GURL url; |
| 143 Profile* incognito = CreateIncognitoProfile(profile1_); | 143 Profile* incognito = CreateIncognitoProfile(profile1_); |
| 144 EXPECT_CALL(*event_router, | 144 EXPECT_CALL(*event_router.get(), |
| 145 CallEventRouter(profile1_, "", kEventName, profile1_, url)); | 145 CallEventRouter(profile1_, "", kEventName, profile1_, url)); |
| 146 EXPECT_CALL(*event_router, | 146 EXPECT_CALL(*event_router.get(), CallEventRouter(incognito, _, _, _, _)) |
| 147 CallEventRouter(incognito, _, _, _, _)).Times(0); | 147 .Times(0); |
| 148 EXPECT_CALL(*event_router, | 148 EXPECT_CALL(*event_router.get(), |
| 149 CallEventRouter(profile2_, "", kEventName, profile2_, url)); | 149 CallEventRouter(profile2_, "", kEventName, profile2_, url)); |
| 150 BroadcastEventToRenderers(event_router.get(), kEventName, url); | 150 BroadcastEventToRenderers(event_router.get(), kEventName, url); |
| 151 } | 151 } |
| 152 | 152 |
| 153 // This is the canonical test for passing control flow from the IO thread | 153 // This is the canonical test for passing control flow from the IO thread |
| 154 // to the UI thread. Repeating this for all public functions of | 154 // to the UI thread. Repeating this for all public functions of |
| 155 // EventRouterForwarder would not increase coverage. | 155 // EventRouterForwarder would not increase coverage. |
| 156 TEST_F(EventRouterForwarderTest, BroadcastRendererIO) { | 156 TEST_F(EventRouterForwarderTest, BroadcastRendererIO) { |
| 157 scoped_refptr<MockEventRouterForwarder> event_router( | 157 scoped_refptr<MockEventRouterForwarder> event_router( |
| 158 new MockEventRouterForwarder); | 158 new MockEventRouterForwarder); |
| 159 GURL url; | 159 GURL url; |
| 160 EXPECT_CALL(*event_router, | 160 EXPECT_CALL(*event_router.get(), |
| 161 CallEventRouter(profile1_, "", kEventName, profile1_, url)); | 161 CallEventRouter(profile1_, "", kEventName, profile1_, url)); |
| 162 EXPECT_CALL(*event_router, | 162 EXPECT_CALL(*event_router.get(), |
| 163 CallEventRouter(profile2_, "", kEventName, profile2_, url)); | 163 CallEventRouter(profile2_, "", kEventName, profile2_, url)); |
| 164 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 164 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
| 165 base::Bind( | 165 base::Bind( |
| 166 &BroadcastEventToRenderers, base::Unretained(event_router.get()), | 166 &BroadcastEventToRenderers, base::Unretained(event_router.get()), |
| 167 kEventName, url)); | 167 kEventName, url)); |
| 168 | 168 |
| 169 // Wait for IO thread's message loop to be processed | 169 // Wait for IO thread's message loop to be processed |
| 170 scoped_refptr<base::ThreadTestHelper> helper( | 170 scoped_refptr<base::ThreadTestHelper> helper( |
| 171 new base::ThreadTestHelper( | 171 new base::ThreadTestHelper( |
| 172 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO))); | 172 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO))); |
| 173 ASSERT_TRUE(helper->Run()); | 173 ASSERT_TRUE(helper->Run()); |
| 174 | 174 |
| 175 base::MessageLoop::current()->RunUntilIdle(); | 175 base::MessageLoop::current()->RunUntilIdle(); |
| 176 } | 176 } |
| 177 | 177 |
| 178 TEST_F(EventRouterForwarderTest, UnicastRendererUIRestricted) { | 178 TEST_F(EventRouterForwarderTest, UnicastRendererUIRestricted) { |
| 179 scoped_refptr<MockEventRouterForwarder> event_router( | 179 scoped_refptr<MockEventRouterForwarder> event_router( |
| 180 new MockEventRouterForwarder); | 180 new MockEventRouterForwarder); |
| 181 using ::testing::_; | 181 using ::testing::_; |
| 182 GURL url; | 182 GURL url; |
| 183 EXPECT_CALL(*event_router, | 183 EXPECT_CALL(*event_router.get(), |
| 184 CallEventRouter(profile1_, "", kEventName, profile1_, url)); | 184 CallEventRouter(profile1_, "", kEventName, profile1_, url)); |
| 185 EXPECT_CALL(*event_router, | 185 EXPECT_CALL(*event_router.get(), CallEventRouter(profile2_, _, _, _, _)) |
| 186 CallEventRouter(profile2_, _, _, _, _)).Times(0); | 186 .Times(0); |
| 187 DispatchEventToRenderers(event_router.get(), kEventName, profile1_, true, | 187 DispatchEventToRenderers(event_router.get(), kEventName, profile1_, true, |
| 188 url); | 188 url); |
| 189 } | 189 } |
| 190 | 190 |
| 191 TEST_F(EventRouterForwarderTest, UnicastRendererUIRestrictedIncognito1) { | 191 TEST_F(EventRouterForwarderTest, UnicastRendererUIRestrictedIncognito1) { |
| 192 scoped_refptr<MockEventRouterForwarder> event_router( | 192 scoped_refptr<MockEventRouterForwarder> event_router( |
| 193 new MockEventRouterForwarder); | 193 new MockEventRouterForwarder); |
| 194 Profile* incognito = CreateIncognitoProfile(profile1_); | 194 Profile* incognito = CreateIncognitoProfile(profile1_); |
| 195 using ::testing::_; | 195 using ::testing::_; |
| 196 GURL url; | 196 GURL url; |
| 197 EXPECT_CALL(*event_router, | 197 EXPECT_CALL(*event_router.get(), |
| 198 CallEventRouter(profile1_, "", kEventName, profile1_, url)); | 198 CallEventRouter(profile1_, "", kEventName, profile1_, url)); |
| 199 EXPECT_CALL(*event_router, | 199 EXPECT_CALL(*event_router.get(), CallEventRouter(incognito, _, _, _, _)) |
| 200 CallEventRouter(incognito, _, _, _, _)).Times(0); | 200 .Times(0); |
| 201 EXPECT_CALL(*event_router, | 201 EXPECT_CALL(*event_router.get(), CallEventRouter(profile2_, _, _, _, _)) |
| 202 CallEventRouter(profile2_, _, _, _, _)).Times(0); | 202 .Times(0); |
| 203 DispatchEventToRenderers(event_router.get(), kEventName, profile1_, true, | 203 DispatchEventToRenderers(event_router.get(), kEventName, profile1_, true, |
| 204 url); | 204 url); |
| 205 } | 205 } |
| 206 | 206 |
| 207 TEST_F(EventRouterForwarderTest, UnicastRendererUIRestrictedIncognito2) { | 207 TEST_F(EventRouterForwarderTest, UnicastRendererUIRestrictedIncognito2) { |
| 208 scoped_refptr<MockEventRouterForwarder> event_router( | 208 scoped_refptr<MockEventRouterForwarder> event_router( |
| 209 new MockEventRouterForwarder); | 209 new MockEventRouterForwarder); |
| 210 Profile* incognito = CreateIncognitoProfile(profile1_); | 210 Profile* incognito = CreateIncognitoProfile(profile1_); |
| 211 using ::testing::_; | 211 using ::testing::_; |
| 212 GURL url; | 212 GURL url; |
| 213 EXPECT_CALL(*event_router, | 213 EXPECT_CALL(*event_router.get(), CallEventRouter(profile1_, _, _, _, _)) |
| 214 CallEventRouter(profile1_, _, _, _, _)).Times(0); | 214 .Times(0); |
| 215 EXPECT_CALL(*event_router, | 215 EXPECT_CALL(*event_router.get(), |
| 216 CallEventRouter(incognito, "", kEventName, incognito, url)); | 216 CallEventRouter(incognito, "", kEventName, incognito, url)); |
| 217 EXPECT_CALL(*event_router, | 217 EXPECT_CALL(*event_router.get(), CallEventRouter(profile2_, _, _, _, _)) |
| 218 CallEventRouter(profile2_, _, _, _, _)).Times(0); | 218 .Times(0); |
| 219 DispatchEventToRenderers(event_router.get(), kEventName, incognito, true, | 219 DispatchEventToRenderers(event_router.get(), kEventName, incognito, true, |
| 220 url); | 220 url); |
| 221 } | 221 } |
| 222 | 222 |
| 223 TEST_F(EventRouterForwarderTest, UnicastRendererUIUnrestricted) { | 223 TEST_F(EventRouterForwarderTest, UnicastRendererUIUnrestricted) { |
| 224 scoped_refptr<MockEventRouterForwarder> event_router( | 224 scoped_refptr<MockEventRouterForwarder> event_router( |
| 225 new MockEventRouterForwarder); | 225 new MockEventRouterForwarder); |
| 226 using ::testing::_; | 226 using ::testing::_; |
| 227 GURL url; | 227 GURL url; |
| 228 EXPECT_CALL(*event_router, | 228 EXPECT_CALL(*event_router.get(), |
| 229 CallEventRouter(profile1_, "", kEventName, NULL, url)); | 229 CallEventRouter(profile1_, "", kEventName, NULL, url)); |
| 230 EXPECT_CALL(*event_router, | 230 EXPECT_CALL(*event_router.get(), CallEventRouter(profile2_, _, _, _, _)) |
| 231 CallEventRouter(profile2_, _, _, _, _)).Times(0); | 231 .Times(0); |
| 232 DispatchEventToRenderers(event_router.get(), kEventName, profile1_, false, | 232 DispatchEventToRenderers(event_router.get(), kEventName, profile1_, false, |
| 233 url); | 233 url); |
| 234 } | 234 } |
| 235 | 235 |
| 236 TEST_F(EventRouterForwarderTest, UnicastRendererUIUnrestrictedIncognito) { | 236 TEST_F(EventRouterForwarderTest, UnicastRendererUIUnrestrictedIncognito) { |
| 237 scoped_refptr<MockEventRouterForwarder> event_router( | 237 scoped_refptr<MockEventRouterForwarder> event_router( |
| 238 new MockEventRouterForwarder); | 238 new MockEventRouterForwarder); |
| 239 Profile* incognito = CreateIncognitoProfile(profile1_); | 239 Profile* incognito = CreateIncognitoProfile(profile1_); |
| 240 using ::testing::_; | 240 using ::testing::_; |
| 241 GURL url; | 241 GURL url; |
| 242 EXPECT_CALL(*event_router, | 242 EXPECT_CALL(*event_router.get(), |
| 243 CallEventRouter(profile1_, "", kEventName, NULL, url)); | 243 CallEventRouter(profile1_, "", kEventName, NULL, url)); |
| 244 EXPECT_CALL(*event_router, | 244 EXPECT_CALL(*event_router.get(), CallEventRouter(incognito, _, _, _, _)) |
| 245 CallEventRouter(incognito, _, _, _, _)).Times(0); | 245 .Times(0); |
| 246 EXPECT_CALL(*event_router, | 246 EXPECT_CALL(*event_router.get(), CallEventRouter(profile2_, _, _, _, _)) |
| 247 CallEventRouter(profile2_, _, _, _, _)).Times(0); | 247 .Times(0); |
| 248 DispatchEventToRenderers(event_router.get(), kEventName, profile1_, false, | 248 DispatchEventToRenderers(event_router.get(), kEventName, profile1_, false, |
| 249 url); | 249 url); |
| 250 } | 250 } |
| 251 | 251 |
| 252 TEST_F(EventRouterForwarderTest, BroadcastExtensionUI) { | 252 TEST_F(EventRouterForwarderTest, BroadcastExtensionUI) { |
| 253 scoped_refptr<MockEventRouterForwarder> event_router( | 253 scoped_refptr<MockEventRouterForwarder> event_router( |
| 254 new MockEventRouterForwarder); | 254 new MockEventRouterForwarder); |
| 255 GURL url; | 255 GURL url; |
| 256 EXPECT_CALL(*event_router, | 256 EXPECT_CALL(*event_router.get(), |
| 257 CallEventRouter(profile1_, kExt, kEventName, profile1_, url)); | 257 CallEventRouter(profile1_, kExt, kEventName, profile1_, url)); |
| 258 EXPECT_CALL(*event_router, | 258 EXPECT_CALL(*event_router.get(), |
| 259 CallEventRouter(profile2_, kExt, kEventName, profile2_, url)); | 259 CallEventRouter(profile2_, kExt, kEventName, profile2_, url)); |
| 260 BroadcastEventToExtension(event_router.get(), kExt, kEventName, url); | 260 BroadcastEventToExtension(event_router.get(), kExt, kEventName, url); |
| 261 } | 261 } |
| 262 | 262 |
| 263 TEST_F(EventRouterForwarderTest, UnicastExtensionUIRestricted) { | 263 TEST_F(EventRouterForwarderTest, UnicastExtensionUIRestricted) { |
| 264 scoped_refptr<MockEventRouterForwarder> event_router( | 264 scoped_refptr<MockEventRouterForwarder> event_router( |
| 265 new MockEventRouterForwarder); | 265 new MockEventRouterForwarder); |
| 266 using ::testing::_; | 266 using ::testing::_; |
| 267 GURL url; | 267 GURL url; |
| 268 EXPECT_CALL(*event_router, | 268 EXPECT_CALL(*event_router.get(), |
| 269 CallEventRouter(profile1_, kExt, kEventName, profile1_, url)); | 269 CallEventRouter(profile1_, kExt, kEventName, profile1_, url)); |
| 270 EXPECT_CALL(*event_router, | 270 EXPECT_CALL(*event_router.get(), CallEventRouter(profile2_, _, _, _, _)) |
| 271 CallEventRouter(profile2_, _, _, _, _)).Times(0); | 271 .Times(0); |
| 272 DispatchEventToExtension(event_router.get(), kExt, kEventName, profile1_, | 272 DispatchEventToExtension(event_router.get(), kExt, kEventName, profile1_, |
| 273 true, url); | 273 true, url); |
| 274 } | 274 } |
| 275 | 275 |
| 276 TEST_F(EventRouterForwarderTest, UnicastExtensionUIUnrestricted) { | 276 TEST_F(EventRouterForwarderTest, UnicastExtensionUIUnrestricted) { |
| 277 scoped_refptr<MockEventRouterForwarder> event_router( | 277 scoped_refptr<MockEventRouterForwarder> event_router( |
| 278 new MockEventRouterForwarder); | 278 new MockEventRouterForwarder); |
| 279 using ::testing::_; | 279 using ::testing::_; |
| 280 GURL url; | 280 GURL url; |
| 281 EXPECT_CALL(*event_router, | 281 EXPECT_CALL(*event_router.get(), |
| 282 CallEventRouter(profile1_, kExt, kEventName, NULL, url)); | 282 CallEventRouter(profile1_, kExt, kEventName, NULL, url)); |
| 283 EXPECT_CALL(*event_router, | 283 EXPECT_CALL(*event_router.get(), CallEventRouter(profile2_, _, _, _, _)) |
| 284 CallEventRouter(profile2_, _, _, _, _)).Times(0); | 284 .Times(0); |
| 285 DispatchEventToExtension(event_router.get(), kExt, kEventName, profile1_, | 285 DispatchEventToExtension(event_router.get(), kExt, kEventName, profile1_, |
| 286 false, url); | 286 false, url); |
| 287 } | 287 } |
| 288 | 288 |
| 289 } // namespace extensions | 289 } // namespace extensions |
| OLD | NEW |