Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: chrome/browser/extensions/api/web_request/web_request_api_unittest.cc

Issue 51953002: [Net] Add a priority parameter to URLRequest's constructor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <map> 5 #include <map>
6 #include <queue> 6 #include <queue>
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 24 matching lines...) Expand all
35 #include "chrome/test/base/testing_browser_process.h" 35 #include "chrome/test/base/testing_browser_process.h"
36 #include "chrome/test/base/testing_pref_service_syncable.h" 36 #include "chrome/test/base/testing_pref_service_syncable.h"
37 #include "chrome/test/base/testing_profile.h" 37 #include "chrome/test/base/testing_profile.h"
38 #include "chrome/test/base/testing_profile_manager.h" 38 #include "chrome/test/base/testing_profile_manager.h"
39 #include "content/public/common/url_constants.h" 39 #include "content/public/common/url_constants.h"
40 #include "content/public/test/test_browser_thread_bundle.h" 40 #include "content/public/test/test_browser_thread_bundle.h"
41 #include "extensions/common/features/feature.h" 41 #include "extensions/common/features/feature.h"
42 #include "net/base/auth.h" 42 #include "net/base/auth.h"
43 #include "net/base/capturing_net_log.h" 43 #include "net/base/capturing_net_log.h"
44 #include "net/base/net_util.h" 44 #include "net/base/net_util.h"
45 #include "net/base/request_priority.h"
45 #include "net/base/upload_bytes_element_reader.h" 46 #include "net/base/upload_bytes_element_reader.h"
46 #include "net/base/upload_data_stream.h" 47 #include "net/base/upload_data_stream.h"
47 #include "net/base/upload_file_element_reader.h" 48 #include "net/base/upload_file_element_reader.h"
48 #include "net/dns/mock_host_resolver.h" 49 #include "net/dns/mock_host_resolver.h"
49 #include "net/url_request/url_request_job_factory_impl.h" 50 #include "net/url_request/url_request_job_factory_impl.h"
50 #include "net/url_request/url_request_test_util.h" 51 #include "net/url_request/url_request_test_util.h"
51 #include "testing/gtest/include/gtest/gtest-message.h" 52 #include "testing/gtest/include/gtest/gtest-message.h"
52 #include "testing/gtest/include/gtest/gtest.h" 53 #include "testing/gtest/include/gtest/gtest.h"
53 54
54 namespace helpers = extension_web_request_api_helpers; 55 namespace helpers = extension_web_request_api_helpers;
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 234
234 net::URLRequestJobFactoryImpl job_factory; 235 net::URLRequestJobFactoryImpl job_factory;
235 job_factory.SetProtocolHandler( 236 job_factory.SetProtocolHandler(
236 chrome::kAboutScheme, 237 chrome::kAboutScheme,
237 new chrome_browser_net::AboutProtocolHandler()); 238 new chrome_browser_net::AboutProtocolHandler());
238 context_->set_job_factory(&job_factory); 239 context_->set_job_factory(&job_factory);
239 240
240 GURL redirect_url("about:redirected"); 241 GURL redirect_url("about:redirected");
241 GURL not_chosen_redirect_url("about:not_chosen"); 242 GURL not_chosen_redirect_url("about:not_chosen");
242 243
243 net::URLRequest request(GURL("about:blank"), &delegate_, context_.get()); 244 net::URLRequest request(
245 GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_, context_.get());
244 { 246 {
245 // onBeforeRequest will be dispatched twice initially. The second response - 247 // onBeforeRequest will be dispatched twice initially. The second response -
246 // the redirect - should win, since it has a later |install_time|. The 248 // the redirect - should win, since it has a later |install_time|. The
247 // redirect will dispatch another pair of onBeforeRequest. There, the first 249 // redirect will dispatch another pair of onBeforeRequest. There, the first
248 // response should win (later |install_time|). 250 // response should win (later |install_time|).
249 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 251 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
250 252
251 // Extension1 response. Arrives first, but ignored due to install_time. 253 // Extension1 response. Arrives first, but ignored due to install_time.
252 response = new ExtensionWebRequestEventRouter::EventResponse( 254 response = new ExtensionWebRequestEventRouter::EventResponse(
253 extension1_id, base::Time::FromDoubleT(1)); 255 extension1_id, base::Time::FromDoubleT(1));
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 289
288 EXPECT_TRUE(!request.is_pending()); 290 EXPECT_TRUE(!request.is_pending());
289 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); 291 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status());
290 EXPECT_EQ(0, request.status().error()); 292 EXPECT_EQ(0, request.status().error());
291 EXPECT_EQ(redirect_url, request.url()); 293 EXPECT_EQ(redirect_url, request.url());
292 EXPECT_EQ(2U, request.url_chain().size()); 294 EXPECT_EQ(2U, request.url_chain().size());
293 EXPECT_EQ(0U, ipc_sender_.GetNumTasks()); 295 EXPECT_EQ(0U, ipc_sender_.GetNumTasks());
294 } 296 }
295 297
296 // Now test the same thing but the extensions answer in reverse order. 298 // Now test the same thing but the extensions answer in reverse order.
297 net::URLRequest request2(GURL("about:blank"), &delegate_, context_.get()); 299 net::URLRequest request2(
300 GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_, context_.get());
298 { 301 {
299 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 302 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
300 303
301 // Extension2 response. Arrives first, and chosen because of install_time. 304 // Extension2 response. Arrives first, and chosen because of install_time.
302 response = new ExtensionWebRequestEventRouter::EventResponse( 305 response = new ExtensionWebRequestEventRouter::EventResponse(
303 extension2_id, base::Time::FromDoubleT(2)); 306 extension2_id, base::Time::FromDoubleT(2));
304 response->new_url = redirect_url; 307 response->new_url = redirect_url;
305 ipc_sender_.PushTask( 308 ipc_sender_.PushTask(
306 base::Bind(&EventHandledOnIOThread, 309 base::Bind(&EventHandledOnIOThread,
307 &profile_, extension2_id, kEventName, kEventName + "/2", 310 &profile_, extension2_id, kEventName, kEventName + "/2",
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 363 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
361 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", 364 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1",
362 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1, 365 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1,
363 ipc_sender_factory.GetWeakPtr()); 366 ipc_sender_factory.GetWeakPtr());
364 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 367 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
365 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", 368 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2",
366 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1, 369 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1,
367 ipc_sender_factory.GetWeakPtr()); 370 ipc_sender_factory.GetWeakPtr());
368 371
369 GURL request_url("about:blank"); 372 GURL request_url("about:blank");
370 net::URLRequest request(request_url, &delegate_, context_.get()); 373 net::URLRequest request(
374 request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get());
371 375
372 // onBeforeRequest will be dispatched twice. The second response - 376 // onBeforeRequest will be dispatched twice. The second response -
373 // the redirect - would win, since it has a later |install_time|, but 377 // the redirect - would win, since it has a later |install_time|, but
374 // the first response takes precedence because cancel >> redirect. 378 // the first response takes precedence because cancel >> redirect.
375 GURL redirect_url("about:redirected"); 379 GURL redirect_url("about:redirected");
376 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 380 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
377 381
378 // Extension1 response. Arrives first, would be ignored in principle due to 382 // Extension1 response. Arrives first, would be ignored in principle due to
379 // install_time but "cancel" always wins. 383 // install_time but "cancel" always wins.
380 response = new ExtensionWebRequestEventRouter::EventResponse( 384 response = new ExtensionWebRequestEventRouter::EventResponse(
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); 431 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
428 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 432 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
429 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", 433 &profile_, extension_id, extension_id, kEventName, kEventName + "/1",
430 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1, 434 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1,
431 ipc_sender_factory.GetWeakPtr()); 435 ipc_sender_factory.GetWeakPtr());
432 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 436 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
433 &profile_, extension_id, extension_id, kEventName2, kEventName2 + "/1", 437 &profile_, extension_id, extension_id, kEventName2, kEventName2 + "/1",
434 filter, 0, -1, -1, ipc_sender_factory.GetWeakPtr()); 438 filter, 0, -1, -1, ipc_sender_factory.GetWeakPtr());
435 439
436 GURL request_url("about:blank"); 440 GURL request_url("about:blank");
437 net::URLRequest request(request_url, &delegate_, context_.get()); 441 net::URLRequest request(
442 request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get());
438 443
439 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 444 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
440 445
441 // Extension response for the OnBeforeRequest handler. This should not be 446 // Extension response for the OnBeforeRequest handler. This should not be
442 // processed because request is canceled before the handler responds. 447 // processed because request is canceled before the handler responds.
443 response = new ExtensionWebRequestEventRouter::EventResponse( 448 response = new ExtensionWebRequestEventRouter::EventResponse(
444 extension_id, base::Time::FromDoubleT(1)); 449 extension_id, base::Time::FromDoubleT(1));
445 GURL redirect_url("about:redirected"); 450 GURL redirect_url("about:redirected");
446 response->new_url = redirect_url; 451 response->new_url = redirect_url;
447 ipc_sender_.PushTask( 452 ipc_sender_.PushTask(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 495
491 } // namespace 496 } // namespace
492 497
493 void ExtensionWebRequestTest::FireURLRequestWithData( 498 void ExtensionWebRequestTest::FireURLRequestWithData(
494 const std::string& method, 499 const std::string& method,
495 const char* content_type, 500 const char* content_type,
496 const std::vector<char>& bytes_1, 501 const std::vector<char>& bytes_1,
497 const std::vector<char>& bytes_2) { 502 const std::vector<char>& bytes_2) {
498 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme. 503 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme.
499 GURL request_url("http://www.example.com"); 504 GURL request_url("http://www.example.com");
500 net::URLRequest request(request_url, &delegate_, context_.get()); 505 net::URLRequest request(
506 request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get());
501 request.set_method(method); 507 request.set_method(method);
502 if (content_type != NULL) 508 if (content_type != NULL)
503 request.SetExtraRequestHeaderByName(net::HttpRequestHeaders::kContentType, 509 request.SetExtraRequestHeaderByName(net::HttpRequestHeaders::kContentType,
504 content_type, 510 content_type,
505 true /* overwrite */); 511 true /* overwrite */);
506 ScopedVector<net::UploadElementReader> element_readers; 512 ScopedVector<net::UploadElementReader> element_readers;
507 element_readers.push_back(new net::UploadBytesElementReader( 513 element_readers.push_back(new net::UploadBytesElementReader(
508 &(bytes_1[0]), bytes_1.size())); 514 &(bytes_1[0]), bytes_1.size()));
509 element_readers.push_back( 515 element_readers.push_back(
510 new net::UploadFileElementReader(base::MessageLoopProxy::current().get(), 516 new net::UploadFileElementReader(base::MessageLoopProxy::current().get(),
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 709
704 // Subscribe to OnBeforeRequest with requestBody requirement. 710 // Subscribe to OnBeforeRequest with requestBody requirement.
705 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 711 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
706 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", 712 &profile_, extension_id, extension_id, kEventName, kEventName + "/1",
707 filter, extra_info_spec, -1, -1, ipc_sender_factory.GetWeakPtr()); 713 filter, extra_info_spec, -1, -1, ipc_sender_factory.GetWeakPtr());
708 714
709 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme. 715 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme.
710 const GURL request_url("http://www.example.com"); 716 const GURL request_url("http://www.example.com");
711 717
712 for (size_t i = 0; i < arraysize(kMethods); ++i) { 718 for (size_t i = 0; i < arraysize(kMethods); ++i) {
713 net::URLRequest request(request_url, &delegate_, context_.get()); 719 net::URLRequest request(
720 request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get());
714 request.set_method(kMethods[i]); 721 request.set_method(kMethods[i]);
715 ipc_sender_.PushTask(base::Bind(&base::DoNothing)); 722 ipc_sender_.PushTask(base::Bind(&base::DoNothing));
716 request.Start(); 723 request.Start();
717 } 724 }
718 725
719 // We inspect the result in the message list of |ipc_sender_| later. 726 // We inspect the result in the message list of |ipc_sender_| later.
720 base::MessageLoop::current()->RunUntilIdle(); 727 base::MessageLoop::current()->RunUntilIdle();
721 728
722 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( 729 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener(
723 &profile_, extension_id, kEventName + "/1"); 730 &profile_, extension_id, kEventName + "/1");
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 ipc_sender_factory.GetWeakPtr()); 829 ipc_sender_factory.GetWeakPtr());
823 830
824 // Install one extension that observes the final headers. 831 // Install one extension that observes the final headers.
825 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 832 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
826 &profile_, extension3_id, extension3_id, keys::kOnSendHeadersEvent, 833 &profile_, extension3_id, extension3_id, keys::kOnSendHeadersEvent,
827 std::string(keys::kOnSendHeadersEvent) + "/3", filter, 834 std::string(keys::kOnSendHeadersEvent) + "/3", filter,
828 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, -1, -1, 835 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, -1, -1,
829 ipc_sender_factory.GetWeakPtr()); 836 ipc_sender_factory.GetWeakPtr());
830 837
831 GURL request_url("http://doesnotexist/does_not_exist.html"); 838 GURL request_url("http://doesnotexist/does_not_exist.html");
832 net::URLRequest request(request_url, &delegate_, context_.get()); 839 net::URLRequest request(
840 request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get());
833 841
834 // Initialize headers available before extensions are notified of the 842 // Initialize headers available before extensions are notified of the
835 // onBeforeSendHeaders event. 843 // onBeforeSendHeaders event.
836 HeaderModificationTest test = GetParam(); 844 HeaderModificationTest test = GetParam();
837 net::HttpRequestHeaders before_headers; 845 net::HttpRequestHeaders before_headers;
838 for (int i = 0; i < test.before_size; ++i) 846 for (int i = 0; i < test.before_size; ++i)
839 before_headers.SetHeader(test.before[i].name, test.before[i].value); 847 before_headers.SetHeader(test.before[i].name, test.before[i].value);
840 request.SetExtraRequestHeaders(before_headers); 848 request.SetExtraRequestHeaders(before_headers);
841 849
842 // Gather the modifications to the headers for the respective extensions. 850 // Gather the modifications to the headers for the respective extensions.
(...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after
2130 EXPECT_TRUE(credentials_set); 2138 EXPECT_TRUE(credentials_set);
2131 EXPECT_FALSE(auth3.Empty()); 2139 EXPECT_FALSE(auth3.Empty());
2132 EXPECT_EQ(username, auth1.username()); 2140 EXPECT_EQ(username, auth1.username());
2133 EXPECT_EQ(password, auth1.password()); 2141 EXPECT_EQ(password, auth1.password());
2134 EXPECT_EQ(1u, warning_set.size()); 2142 EXPECT_EQ(1u, warning_set.size());
2135 EXPECT_TRUE(HasWarning(warning_set, "extid2")); 2143 EXPECT_TRUE(HasWarning(warning_set, "extid2"));
2136 EXPECT_EQ(3u, capturing_net_log.GetSize()); 2144 EXPECT_EQ(3u, capturing_net_log.GetSize());
2137 } 2145 }
2138 2146
2139 } // namespace extensions 2147 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698