| 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 <queue> | 5 #include <queue> |
| 6 #include <map> | 6 #include <map> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 160 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
| 161 ipc_sender_factory.GetWeakPtr()); | 161 ipc_sender_factory.GetWeakPtr()); |
| 162 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 162 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 163 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", | 163 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", |
| 164 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 164 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
| 165 ipc_sender_factory.GetWeakPtr()); | 165 ipc_sender_factory.GetWeakPtr()); |
| 166 | 166 |
| 167 GURL redirect_url("about:redirected"); | 167 GURL redirect_url("about:redirected"); |
| 168 GURL not_chosen_redirect_url("about:not_chosen"); | 168 GURL not_chosen_redirect_url("about:not_chosen"); |
| 169 | 169 |
| 170 net::URLRequest request(GURL("about:blank"), &delegate_); | 170 net::URLRequest request(GURL("about:blank"), &delegate_, context_.get()); |
| 171 request.set_context(context_.get()); | |
| 172 { | 171 { |
| 173 // onBeforeRequest will be dispatched twice initially. The second response - | 172 // onBeforeRequest will be dispatched twice initially. The second response - |
| 174 // the redirect - should win, since it has a later |install_time|. The | 173 // the redirect - should win, since it has a later |install_time|. The |
| 175 // redirect will dispatch another pair of onBeforeRequest. There, the first | 174 // redirect will dispatch another pair of onBeforeRequest. There, the first |
| 176 // response should win (later |install_time|). | 175 // response should win (later |install_time|). |
| 177 ExtensionWebRequestEventRouter::EventResponse* response = NULL; | 176 ExtensionWebRequestEventRouter::EventResponse* response = NULL; |
| 178 | 177 |
| 179 // Extension1 response. Arrives first, but ignored due to install_time. | 178 // Extension1 response. Arrives first, but ignored due to install_time. |
| 180 response = new ExtensionWebRequestEventRouter::EventResponse( | 179 response = new ExtensionWebRequestEventRouter::EventResponse( |
| 181 extension1_id, base::Time::FromDoubleT(1)); | 180 extension1_id, base::Time::FromDoubleT(1)); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 | 214 |
| 216 EXPECT_TRUE(!request.is_pending()); | 215 EXPECT_TRUE(!request.is_pending()); |
| 217 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); | 216 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); |
| 218 EXPECT_EQ(0, request.status().error()); | 217 EXPECT_EQ(0, request.status().error()); |
| 219 EXPECT_EQ(redirect_url, request.url()); | 218 EXPECT_EQ(redirect_url, request.url()); |
| 220 EXPECT_EQ(2U, request.url_chain().size()); | 219 EXPECT_EQ(2U, request.url_chain().size()); |
| 221 EXPECT_EQ(0U, ipc_sender_.GetNumTasks()); | 220 EXPECT_EQ(0U, ipc_sender_.GetNumTasks()); |
| 222 } | 221 } |
| 223 | 222 |
| 224 // Now test the same thing but the extensions answer in reverse order. | 223 // Now test the same thing but the extensions answer in reverse order. |
| 225 net::URLRequest request2(GURL("about:blank"), &delegate_); | 224 net::URLRequest request2(GURL("about:blank"), &delegate_, context_.get()); |
| 226 request2.set_context(context_.get()); | |
| 227 { | 225 { |
| 228 ExtensionWebRequestEventRouter::EventResponse* response = NULL; | 226 ExtensionWebRequestEventRouter::EventResponse* response = NULL; |
| 229 | 227 |
| 230 // Extension2 response. Arrives first, and chosen because of install_time. | 228 // Extension2 response. Arrives first, and chosen because of install_time. |
| 231 response = new ExtensionWebRequestEventRouter::EventResponse( | 229 response = new ExtensionWebRequestEventRouter::EventResponse( |
| 232 extension2_id, base::Time::FromDoubleT(2)); | 230 extension2_id, base::Time::FromDoubleT(2)); |
| 233 response->new_url = redirect_url; | 231 response->new_url = redirect_url; |
| 234 ipc_sender_.PushTask( | 232 ipc_sender_.PushTask( |
| 235 base::Bind(&EventHandledOnIOThread, | 233 base::Bind(&EventHandledOnIOThread, |
| 236 &profile_, extension2_id, kEventName, kEventName + "/2", | 234 &profile_, extension2_id, kEventName, kEventName + "/2", |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 287 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 290 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", | 288 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", |
| 291 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 289 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
| 292 ipc_sender_factory.GetWeakPtr()); | 290 ipc_sender_factory.GetWeakPtr()); |
| 293 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 291 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 294 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", | 292 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", |
| 295 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 293 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
| 296 ipc_sender_factory.GetWeakPtr()); | 294 ipc_sender_factory.GetWeakPtr()); |
| 297 | 295 |
| 298 GURL request_url("about:blank"); | 296 GURL request_url("about:blank"); |
| 299 net::URLRequest request(request_url, &delegate_); | 297 net::URLRequest request(request_url, &delegate_, context_.get()); |
| 300 request.set_context(context_.get()); | |
| 301 | 298 |
| 302 // onBeforeRequest will be dispatched twice. The second response - | 299 // onBeforeRequest will be dispatched twice. The second response - |
| 303 // the redirect - would win, since it has a later |install_time|, but | 300 // the redirect - would win, since it has a later |install_time|, but |
| 304 // the first response takes precedence because cancel >> redirect. | 301 // the first response takes precedence because cancel >> redirect. |
| 305 GURL redirect_url("about:redirected"); | 302 GURL redirect_url("about:redirected"); |
| 306 ExtensionWebRequestEventRouter::EventResponse* response = NULL; | 303 ExtensionWebRequestEventRouter::EventResponse* response = NULL; |
| 307 | 304 |
| 308 // Extension1 response. Arrives first, would be ignored in principle due to | 305 // Extension1 response. Arrives first, would be ignored in principle due to |
| 309 // install_time but "cancel" always wins. | 306 // install_time but "cancel" always wins. |
| 310 response = new ExtensionWebRequestEventRouter::EventResponse( | 307 response = new ExtensionWebRequestEventRouter::EventResponse( |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 354 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
| 358 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 355 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 359 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", | 356 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", |
| 360 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, | 357 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, |
| 361 ipc_sender_factory.GetWeakPtr()); | 358 ipc_sender_factory.GetWeakPtr()); |
| 362 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 359 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 363 &profile_, extension_id, extension_id, kEventName2, kEventName2 + "/1", | 360 &profile_, extension_id, extension_id, kEventName2, kEventName2 + "/1", |
| 364 filter, 0, ipc_sender_factory.GetWeakPtr()); | 361 filter, 0, ipc_sender_factory.GetWeakPtr()); |
| 365 | 362 |
| 366 GURL request_url("about:blank"); | 363 GURL request_url("about:blank"); |
| 367 net::URLRequest request(request_url, &delegate_); | 364 net::URLRequest request(request_url, &delegate_, context_.get()); |
| 368 request.set_context(context_.get()); | |
| 369 | 365 |
| 370 ExtensionWebRequestEventRouter::EventResponse* response = NULL; | 366 ExtensionWebRequestEventRouter::EventResponse* response = NULL; |
| 371 | 367 |
| 372 // Extension response for the OnBeforeRequest handler. This should not be | 368 // Extension response for the OnBeforeRequest handler. This should not be |
| 373 // processed because request is canceled before the handler responds. | 369 // processed because request is canceled before the handler responds. |
| 374 response = new ExtensionWebRequestEventRouter::EventResponse( | 370 response = new ExtensionWebRequestEventRouter::EventResponse( |
| 375 extension_id, base::Time::FromDoubleT(1)); | 371 extension_id, base::Time::FromDoubleT(1)); |
| 376 GURL redirect_url("about:redirected"); | 372 GURL redirect_url("about:redirected"); |
| 377 response->new_url = redirect_url; | 373 response->new_url = redirect_url; |
| 378 ipc_sender_.PushTask( | 374 ipc_sender_.PushTask( |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 488 ipc_sender_factory.GetWeakPtr()); | 484 ipc_sender_factory.GetWeakPtr()); |
| 489 | 485 |
| 490 // Install one extension that observes the final headers. | 486 // Install one extension that observes the final headers. |
| 491 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 487 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 492 &profile_, extension3_id, extension3_id, keys::kOnSendHeaders, | 488 &profile_, extension3_id, extension3_id, keys::kOnSendHeaders, |
| 493 std::string(keys::kOnSendHeaders) + "/3", filter, | 489 std::string(keys::kOnSendHeaders) + "/3", filter, |
| 494 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, | 490 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, |
| 495 ipc_sender_factory.GetWeakPtr()); | 491 ipc_sender_factory.GetWeakPtr()); |
| 496 | 492 |
| 497 GURL request_url("http://doesnotexist/does_not_exist.html"); | 493 GURL request_url("http://doesnotexist/does_not_exist.html"); |
| 498 net::URLRequest request(request_url, &delegate_); | 494 net::URLRequest request(request_url, &delegate_, context_.get()); |
| 499 request.set_context(context_.get()); | |
| 500 | 495 |
| 501 // Initialize headers available before extensions are notified of the | 496 // Initialize headers available before extensions are notified of the |
| 502 // onBeforeSendHeaders event. | 497 // onBeforeSendHeaders event. |
| 503 HeaderModificationTest test = GetParam(); | 498 HeaderModificationTest test = GetParam(); |
| 504 net::HttpRequestHeaders before_headers; | 499 net::HttpRequestHeaders before_headers; |
| 505 for (int i = 0; i < test.before_size; ++i) | 500 for (int i = 0; i < test.before_size; ++i) |
| 506 before_headers.SetHeader(test.before[i].name, test.before[i].value); | 501 before_headers.SetHeader(test.before[i].name, test.before[i].value); |
| 507 request.SetExtraRequestHeaders(before_headers); | 502 request.SetExtraRequestHeaders(before_headers); |
| 508 | 503 |
| 509 // Gather the modifications to the headers for the respective extensions. | 504 // Gather the modifications to the headers for the respective extensions. |
| (...skipping 1005 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1515 }; | 1510 }; |
| 1516 for (size_t i = 0; i < arraysize(sensitive_urls); ++i) { | 1511 for (size_t i = 0; i < arraysize(sensitive_urls); ++i) { |
| 1517 EXPECT_TRUE(helpers::HideRequestForURL(GURL(sensitive_urls[i]))) | 1512 EXPECT_TRUE(helpers::HideRequestForURL(GURL(sensitive_urls[i]))) |
| 1518 << sensitive_urls[i]; | 1513 << sensitive_urls[i]; |
| 1519 } | 1514 } |
| 1520 for (size_t i = 0; i < arraysize(non_sensitive_urls); ++i) { | 1515 for (size_t i = 0; i < arraysize(non_sensitive_urls); ++i) { |
| 1521 EXPECT_FALSE(helpers::HideRequestForURL(GURL(non_sensitive_urls[i]))) | 1516 EXPECT_FALSE(helpers::HideRequestForURL(GURL(non_sensitive_urls[i]))) |
| 1522 << non_sensitive_urls[i]; | 1517 << non_sensitive_urls[i]; |
| 1523 } | 1518 } |
| 1524 } | 1519 } |
| OLD | NEW |