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 |