OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <queue> | 5 #include <queue> |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 | 9 |
10 #include "chrome/browser/extensions/extension_event_router_forwarder.h" | 10 #include "chrome/browser/extensions/extension_event_router_forwarder.h" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 // Tests that we handle disagreements among extensions about responses to | 104 // Tests that we handle disagreements among extensions about responses to |
105 // blocking events (redirection) by choosing the response from the | 105 // blocking events (redirection) by choosing the response from the |
106 // most-recently-installed extension. | 106 // most-recently-installed extension. |
107 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { | 107 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { |
108 std::string extension1_id("1"); | 108 std::string extension1_id("1"); |
109 std::string extension2_id("2"); | 109 std::string extension2_id("2"); |
110 ExtensionWebRequestEventRouter::RequestFilter filter; | 110 ExtensionWebRequestEventRouter::RequestFilter filter; |
111 const std::string kEventName(keys::kOnBeforeRequest); | 111 const std::string kEventName(keys::kOnBeforeRequest); |
112 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 112 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
113 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 113 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
114 &profile_, extension1_id, kEventName, kEventName + "/1", filter, | 114 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", |
115 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 115 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
116 ipc_sender_factory.GetWeakPtr()); | 116 ipc_sender_factory.GetWeakPtr()); |
117 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 117 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
118 &profile_, extension2_id, kEventName, kEventName + "/2", filter, | 118 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", |
119 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 119 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
120 ipc_sender_factory.GetWeakPtr()); | 120 ipc_sender_factory.GetWeakPtr()); |
121 | 121 |
122 GURL redirect_url("about:redirected"); | 122 GURL redirect_url("about:redirected"); |
123 GURL not_chosen_redirect_url("about:not_chosen"); | 123 GURL not_chosen_redirect_url("about:not_chosen"); |
124 | 124 |
125 net::URLRequest request(GURL("about:blank"), &delegate_); | 125 net::URLRequest request(GURL("about:blank"), &delegate_); |
126 request.set_context(context_); | 126 request.set_context(context_); |
127 { | 127 { |
128 // onBeforeRequest will be dispatched twice initially. The second response - | 128 // onBeforeRequest will be dispatched twice initially. The second response - |
129 // the redirect - should win, since it has a later |install_time|. The | 129 // the redirect - should win, since it has a later |install_time|. The |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 | 235 |
236 // Test that a request is canceled if this is requested by any extension | 236 // Test that a request is canceled if this is requested by any extension |
237 // regardless whether it is the extension with the highest precedence. | 237 // regardless whether it is the extension with the highest precedence. |
238 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) { | 238 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) { |
239 std::string extension1_id("1"); | 239 std::string extension1_id("1"); |
240 std::string extension2_id("2"); | 240 std::string extension2_id("2"); |
241 ExtensionWebRequestEventRouter::RequestFilter filter; | 241 ExtensionWebRequestEventRouter::RequestFilter filter; |
242 const std::string kEventName(keys::kOnBeforeRequest); | 242 const std::string kEventName(keys::kOnBeforeRequest); |
243 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 243 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
244 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 244 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
245 &profile_, extension1_id, kEventName, kEventName + "/1", filter, | 245 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", |
246 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 246 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
247 ipc_sender_factory.GetWeakPtr()); | 247 ipc_sender_factory.GetWeakPtr()); |
248 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 248 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
249 &profile_, extension2_id, kEventName, kEventName + "/2", filter, | 249 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", |
250 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 250 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
251 ipc_sender_factory.GetWeakPtr()); | 251 ipc_sender_factory.GetWeakPtr()); |
252 | 252 |
253 GURL request_url("about:blank"); | 253 GURL request_url("about:blank"); |
254 net::URLRequest request(request_url, &delegate_); | 254 net::URLRequest request(request_url, &delegate_); |
255 request.set_context(context_); | 255 request.set_context(context_); |
256 | 256 |
257 // onBeforeRequest will be dispatched twice. The second response - | 257 // onBeforeRequest will be dispatched twice. The second response - |
258 // the redirect - would win, since it has a later |install_time|, but | 258 // the redirect - would win, since it has a later |install_time|, but |
259 // the first response takes precedence because cancel >> redirect. | 259 // the first response takes precedence because cancel >> redirect. |
260 GURL redirect_url("about:redirected"); | 260 GURL redirect_url("about:redirected"); |
261 ExtensionWebRequestEventRouter::EventResponse* response = NULL; | 261 ExtensionWebRequestEventRouter::EventResponse* response = NULL; |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 std::string extension1_id("1"); | 356 std::string extension1_id("1"); |
357 std::string extension2_id("2"); | 357 std::string extension2_id("2"); |
358 std::string extension3_id("3"); | 358 std::string extension3_id("3"); |
359 ExtensionWebRequestEventRouter::RequestFilter filter; | 359 ExtensionWebRequestEventRouter::RequestFilter filter; |
360 const std::string kEventName(keys::kOnBeforeSendHeaders); | 360 const std::string kEventName(keys::kOnBeforeSendHeaders); |
361 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 361 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
362 | 362 |
363 // Install two extensions that can modify headers. Extension 2 has | 363 // Install two extensions that can modify headers. Extension 2 has |
364 // higher precedence than extension 1. | 364 // higher precedence than extension 1. |
365 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 365 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
366 &profile_, extension1_id, kEventName, kEventName + "/1", filter, | 366 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", |
367 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 367 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
368 ipc_sender_factory.GetWeakPtr()); | 368 ipc_sender_factory.GetWeakPtr()); |
369 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 369 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
370 &profile_, extension2_id, kEventName, kEventName + "/2", filter, | 370 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", |
371 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 371 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
372 ipc_sender_factory.GetWeakPtr()); | 372 ipc_sender_factory.GetWeakPtr()); |
373 | 373 |
374 // Install one extension that observes the final headers. | 374 // Install one extension that observes the final headers. |
375 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 375 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
376 &profile_, extension3_id, keys::kOnSendHeaders, | 376 &profile_, extension3_id, extension3_id, keys::kOnSendHeaders, |
377 std::string(keys::kOnSendHeaders) + "/3", filter, | 377 std::string(keys::kOnSendHeaders) + "/3", filter, |
378 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, | 378 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, |
379 ipc_sender_factory.GetWeakPtr()); | 379 ipc_sender_factory.GetWeakPtr()); |
380 | 380 |
381 GURL request_url("http://doesnotexist/does_not_exist.html"); | 381 GURL request_url("http://doesnotexist/does_not_exist.html"); |
382 net::URLRequest request(request_url, &delegate_); | 382 net::URLRequest request(request_url, &delegate_); |
383 request.set_context(context_); | 383 request.set_context(context_); |
384 | 384 |
385 // Initialize headers available before extensions are notified of the | 385 // Initialize headers available before extensions are notified of the |
386 // onBeforeSendHeaders event. | 386 // onBeforeSendHeaders event. |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 {"header2", "bar"} } | 645 {"header2", "bar"} } |
646 }, | 646 }, |
647 }; | 647 }; |
648 | 648 |
649 INSTANTIATE_TEST_CASE_P( | 649 INSTANTIATE_TEST_CASE_P( |
650 ExtensionWebRequest, | 650 ExtensionWebRequest, |
651 ExtensionWebRequestHeaderModificationTest, | 651 ExtensionWebRequestHeaderModificationTest, |
652 ::testing::ValuesIn(kTests)); | 652 ::testing::ValuesIn(kTests)); |
653 | 653 |
654 } // namespace | 654 } // namespace |
OLD | NEW |