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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <queue> | 9 #include <queue> |
10 | 10 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 using base::TimeDelta; | 70 using base::TimeDelta; |
71 using base::Value; | 71 using base::Value; |
72 using helpers::CalculateOnAuthRequiredDelta; | 72 using helpers::CalculateOnAuthRequiredDelta; |
73 using helpers::CalculateOnBeforeRequestDelta; | 73 using helpers::CalculateOnBeforeRequestDelta; |
74 using helpers::CalculateOnBeforeSendHeadersDelta; | 74 using helpers::CalculateOnBeforeSendHeadersDelta; |
75 using helpers::CalculateOnHeadersReceivedDelta; | 75 using helpers::CalculateOnHeadersReceivedDelta; |
76 using helpers::CharListToString; | 76 using helpers::CharListToString; |
77 using helpers::EventResponseDelta; | 77 using helpers::EventResponseDelta; |
78 using helpers::EventResponseDeltas; | 78 using helpers::EventResponseDeltas; |
79 using helpers::EventResponseDeltas; | 79 using helpers::EventResponseDeltas; |
| 80 using helpers::ExtraInfoSpec; |
80 using helpers::InDecreasingExtensionInstallationTimeOrder; | 81 using helpers::InDecreasingExtensionInstallationTimeOrder; |
81 using helpers::MergeCancelOfResponses; | 82 using helpers::MergeCancelOfResponses; |
82 using helpers::MergeOnBeforeRequestResponses; | 83 using helpers::MergeOnBeforeRequestResponses; |
83 using helpers::RequestCookieModification; | 84 using helpers::RequestCookieModification; |
84 using helpers::ResponseCookieModification; | 85 using helpers::ResponseCookieModification; |
85 using helpers::ResponseHeader; | 86 using helpers::ResponseHeader; |
86 using helpers::ResponseHeaders; | 87 using helpers::ResponseHeaders; |
87 using helpers::StringToCharList; | 88 using helpers::StringToCharList; |
88 | 89 |
89 namespace extensions { | 90 namespace extensions { |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 // blocking events (redirection) by choosing the response from the | 225 // blocking events (redirection) by choosing the response from the |
225 // most-recently-installed extension. | 226 // most-recently-installed extension. |
226 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { | 227 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { |
227 std::string extension1_id("1"); | 228 std::string extension1_id("1"); |
228 std::string extension2_id("2"); | 229 std::string extension2_id("2"); |
229 ExtensionWebRequestEventRouter::RequestFilter filter; | 230 ExtensionWebRequestEventRouter::RequestFilter filter; |
230 const std::string kEventName(web_request::OnBeforeRequest::kEventName); | 231 const std::string kEventName(web_request::OnBeforeRequest::kEventName); |
231 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 232 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
232 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 233 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
233 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName, | 234 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName, |
234 kEventName + "/1", filter, | 235 kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0, |
235 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, | |
236 ipc_sender_factory.GetWeakPtr()); | 236 ipc_sender_factory.GetWeakPtr()); |
237 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 237 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
238 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName, | 238 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName, |
239 kEventName + "/2", filter, | 239 kEventName + "/2", filter, ExtraInfoSpec::BLOCKING, 0, 0, |
240 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, | |
241 ipc_sender_factory.GetWeakPtr()); | 240 ipc_sender_factory.GetWeakPtr()); |
242 | 241 |
243 net::URLRequestJobFactoryImpl job_factory; | 242 net::URLRequestJobFactoryImpl job_factory; |
244 job_factory.SetProtocolHandler( | 243 job_factory.SetProtocolHandler( |
245 url::kAboutScheme, | 244 url::kAboutScheme, |
246 make_scoped_ptr(new about_handler::AboutProtocolHandler())); | 245 make_scoped_ptr(new about_handler::AboutProtocolHandler())); |
247 context_->set_job_factory(&job_factory); | 246 context_->set_job_factory(&job_factory); |
248 | 247 |
249 GURL redirect_url("about:redirected"); | 248 GURL redirect_url("about:redirected"); |
250 GURL not_chosen_redirect_url("about:not_chosen"); | 249 GURL not_chosen_redirect_url("about:not_chosen"); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 // Test that a request is canceled if this is requested by any extension | 362 // Test that a request is canceled if this is requested by any extension |
364 // regardless whether it is the extension with the highest precedence. | 363 // regardless whether it is the extension with the highest precedence. |
365 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) { | 364 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) { |
366 std::string extension1_id("1"); | 365 std::string extension1_id("1"); |
367 std::string extension2_id("2"); | 366 std::string extension2_id("2"); |
368 ExtensionWebRequestEventRouter::RequestFilter filter; | 367 ExtensionWebRequestEventRouter::RequestFilter filter; |
369 const std::string kEventName(web_request::OnBeforeRequest::kEventName); | 368 const std::string kEventName(web_request::OnBeforeRequest::kEventName); |
370 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 369 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
371 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 370 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
372 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName, | 371 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName, |
373 kEventName + "/1", filter, | 372 kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0, |
374 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, | |
375 ipc_sender_factory.GetWeakPtr()); | 373 ipc_sender_factory.GetWeakPtr()); |
376 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 374 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
377 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName, | 375 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName, |
378 kEventName + "/2", filter, | 376 kEventName + "/2", filter, ExtraInfoSpec::BLOCKING, 0, 0, |
379 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, | |
380 ipc_sender_factory.GetWeakPtr()); | 377 ipc_sender_factory.GetWeakPtr()); |
381 | 378 |
382 GURL request_url("about:blank"); | 379 GURL request_url("about:blank"); |
383 scoped_ptr<net::URLRequest> request(context_->CreateRequest( | 380 scoped_ptr<net::URLRequest> request(context_->CreateRequest( |
384 request_url, net::DEFAULT_PRIORITY, &delegate_)); | 381 request_url, net::DEFAULT_PRIORITY, &delegate_)); |
385 | 382 |
386 // onBeforeRequest will be dispatched twice. The second response - | 383 // onBeforeRequest will be dispatched twice. The second response - |
387 // the redirect - would win, since it has a later |install_time|, but | 384 // the redirect - would win, since it has a later |install_time|, but |
388 // the first response takes precedence because cancel >> redirect. | 385 // the first response takes precedence because cancel >> redirect. |
389 GURL redirect_url("about:redirected"); | 386 GURL redirect_url("about:redirected"); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
434 | 431 |
435 std::string extension_id("1"); | 432 std::string extension_id("1"); |
436 ExtensionWebRequestEventRouter::RequestFilter filter; | 433 ExtensionWebRequestEventRouter::RequestFilter filter; |
437 | 434 |
438 // Subscribe to OnBeforeRequest and OnErrorOccurred. | 435 // Subscribe to OnBeforeRequest and OnErrorOccurred. |
439 const std::string kEventName(web_request::OnBeforeRequest::kEventName); | 436 const std::string kEventName(web_request::OnBeforeRequest::kEventName); |
440 const std::string kEventName2(web_request::OnErrorOccurred::kEventName); | 437 const std::string kEventName2(web_request::OnErrorOccurred::kEventName); |
441 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 438 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
442 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 439 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
443 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName, | 440 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName, |
444 kEventName + "/1", filter, | 441 kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0, |
445 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, | |
446 ipc_sender_factory.GetWeakPtr()); | 442 ipc_sender_factory.GetWeakPtr()); |
447 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 443 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
448 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName2, | 444 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName2, |
449 kEventName2 + "/1", filter, 0, 0, 0, ipc_sender_factory.GetWeakPtr()); | 445 kEventName2 + "/1", filter, 0, 0, 0, ipc_sender_factory.GetWeakPtr()); |
450 | 446 |
451 GURL request_url("about:blank"); | 447 GURL request_url("about:blank"); |
452 scoped_ptr<net::URLRequest> request(context_->CreateRequest( | 448 scoped_ptr<net::URLRequest> request(context_->CreateRequest( |
453 request_url, net::DEFAULT_PRIORITY, &delegate_)); | 449 request_url, net::DEFAULT_PRIORITY, &delegate_)); |
454 | 450 |
455 ExtensionWebRequestEventRouter::EventResponse* response = NULL; | 451 ExtensionWebRequestEventRouter::EventResponse* response = NULL; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 | 489 |
494 // Create the numerical representation of |values|, strings passed as | 490 // Create the numerical representation of |values|, strings passed as |
495 // extraInfoSpec by the event handler. Returns true on success, otherwise false. | 491 // extraInfoSpec by the event handler. Returns true on success, otherwise false. |
496 bool GenerateInfoSpec(const std::string& values, int* result) { | 492 bool GenerateInfoSpec(const std::string& values, int* result) { |
497 // Create a base::ListValue of strings. | 493 // Create a base::ListValue of strings. |
498 base::ListValue list_value; | 494 base::ListValue list_value; |
499 for (const std::string& cur : | 495 for (const std::string& cur : |
500 base::SplitString(values, ",", base::KEEP_WHITESPACE, | 496 base::SplitString(values, ",", base::KEEP_WHITESPACE, |
501 base::SPLIT_WANT_NONEMPTY)) | 497 base::SPLIT_WANT_NONEMPTY)) |
502 list_value.Append(new base::StringValue(cur)); | 498 list_value.Append(new base::StringValue(cur)); |
503 return ExtensionWebRequestEventRouter::ExtraInfoSpec::InitFromValue( | 499 return ExtraInfoSpec::InitFromValue(list_value, result); |
504 list_value, result); | |
505 } | 500 } |
506 | 501 |
507 } // namespace | 502 } // namespace |
508 | 503 |
509 void ExtensionWebRequestTest::FireURLRequestWithData( | 504 void ExtensionWebRequestTest::FireURLRequestWithData( |
510 const std::string& method, | 505 const std::string& method, |
511 const char* content_type, | 506 const char* content_type, |
512 const std::vector<char>& bytes_1, | 507 const std::vector<char>& bytes_1, |
513 const std::vector<char>& bytes_2) { | 508 const std::vector<char>& bytes_2) { |
514 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme. | 509 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme. |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
696 EXPECT_TRUE(details->Get(*(kPath[test]), &result)); | 691 EXPECT_TRUE(details->Get(*(kPath[test]), &result)); |
697 EXPECT_TRUE(kExpected[test]->Equals(result)); | 692 EXPECT_TRUE(kExpected[test]->Equals(result)); |
698 } else { | 693 } else { |
699 EXPECT_FALSE(details->Get(*(kPath[test]), &result)); | 694 EXPECT_FALSE(details->Get(*(kPath[test]), &result)); |
700 } | 695 } |
701 } | 696 } |
702 | 697 |
703 EXPECT_EQ(i, ipc_sender_.sent_end()); | 698 EXPECT_EQ(i, ipc_sender_.sent_end()); |
704 } | 699 } |
705 | 700 |
| 701 // Tests whether requestBody is only present on the events that requested it. |
| 702 TEST_F(ExtensionWebRequestTest, MinimalAccessRequestBodyData) { |
| 703 const std::string kEventName(web_request::OnBeforeRequest::kEventName); |
| 704 ExtensionWebRequestEventRouter::RequestFilter filter; |
| 705 const std::string extension_id1("1"); |
| 706 const std::string extension_id2("2"); |
| 707 int extra_info_spec_body = 0; |
| 708 int extra_info_spec_empty = 0; |
| 709 ASSERT_TRUE(GenerateInfoSpec("requestBody", &extra_info_spec_body)); |
| 710 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
| 711 |
| 712 bool kExpected[] = { |
| 713 true, |
| 714 false, |
| 715 false, |
| 716 true, |
| 717 }; |
| 718 |
| 719 // Extension 1 with requestBody spec. |
| 720 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 721 &profile_, extension_id1, extension_id1, events::FOR_TEST, kEventName, |
| 722 kEventName + "/1", filter, extra_info_spec_body, 0, 0, |
| 723 ipc_sender_factory.GetWeakPtr()); |
| 724 |
| 725 // Extension 1 without requestBody spec. |
| 726 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 727 &profile_, extension_id1, extension_id1, events::FOR_TEST, kEventName, |
| 728 kEventName + "/2", filter, extra_info_spec_empty, 0, 0, |
| 729 ipc_sender_factory.GetWeakPtr()); |
| 730 |
| 731 // Extension 2, without requestBody spec. |
| 732 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 733 &profile_, extension_id2, extension_id2, events::FOR_TEST, kEventName, |
| 734 kEventName + "/1", filter, extra_info_spec_empty, 0, 0, |
| 735 ipc_sender_factory.GetWeakPtr()); |
| 736 |
| 737 // Extension 2, with requestBody spec. |
| 738 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 739 &profile_, extension_id2, extension_id2, events::FOR_TEST, kEventName, |
| 740 kEventName + "/2", filter, extra_info_spec_body, 0, 0, |
| 741 ipc_sender_factory.GetWeakPtr()); |
| 742 |
| 743 // Only one request is sent, but more than one event will be triggered. |
| 744 for (size_t i = 1; i < arraysize(kExpected); ++i) |
| 745 ipc_sender_.PushTask(base::Bind(&base::DoNothing)); |
| 746 |
| 747 const std::vector<char> part_of_body(1); |
| 748 FireURLRequestWithData("POST", nullptr, part_of_body, part_of_body); |
| 749 |
| 750 base::MessageLoop::current()->RunUntilIdle(); |
| 751 |
| 752 // Clean-up |
| 753 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( |
| 754 &profile_, extension_id1, kEventName + "/1", 0, 0); |
| 755 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( |
| 756 &profile_, extension_id2, kEventName + "/2", 0, 0); |
| 757 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( |
| 758 &profile_, extension_id1, kEventName + "/1", 0, 0); |
| 759 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( |
| 760 &profile_, extension_id2, kEventName + "/2", 0, 0); |
| 761 |
| 762 TestIPCSender::SentMessages::const_iterator i = ipc_sender_.sent_begin(); |
| 763 |
| 764 for (size_t test = 0; test < arraysize(kExpected); ++test, ++i) { |
| 765 SCOPED_TRACE(testing::Message("iteration number ") << test); |
| 766 EXPECT_NE(i, ipc_sender_.sent_end()); |
| 767 IPC::Message* message = i->get(); |
| 768 const base::DictionaryValue* details = nullptr; |
| 769 ExtensionMsg_MessageInvoke::Param param; |
| 770 GetPartOfMessageArguments(message, &details, ¶m); |
| 771 ASSERT_TRUE(details != nullptr); |
| 772 EXPECT_EQ(kExpected[test], details->HasKey(keys::kRequestBodyKey)); |
| 773 } |
| 774 |
| 775 EXPECT_EQ(i, ipc_sender_.sent_end()); |
| 776 } |
| 777 |
706 TEST_F(ExtensionWebRequestTest, NoAccessRequestBodyData) { | 778 TEST_F(ExtensionWebRequestTest, NoAccessRequestBodyData) { |
707 // We verify that URLRequest body is NOT accessible to OnBeforeRequest | 779 // We verify that URLRequest body is NOT accessible to OnBeforeRequest |
708 // listeners when the type of the request is different from POST or PUT, or | 780 // listeners when the type of the request is different from POST or PUT, or |
709 // when the request body is empty. 3 requests are fired, without upload data, | 781 // when the request body is empty. 3 requests are fired, without upload data, |
710 // a POST, PUT and GET request. For none of them the "requestBody" object | 782 // a POST, PUT and GET request. For none of them the "requestBody" object |
711 // property should be present in the details passed to the onBeforeRequest | 783 // property should be present in the details passed to the onBeforeRequest |
712 // event listener. | 784 // event listener. |
713 const char* const kMethods[] = { "POST", "PUT", "GET" }; | 785 const char* const kMethods[] = { "POST", "PUT", "GET" }; |
714 | 786 |
715 // Set up a dummy extension name. | 787 // Set up a dummy extension name. |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
829 std::string extension2_id("2"); | 901 std::string extension2_id("2"); |
830 std::string extension3_id("3"); | 902 std::string extension3_id("3"); |
831 ExtensionWebRequestEventRouter::RequestFilter filter; | 903 ExtensionWebRequestEventRouter::RequestFilter filter; |
832 const std::string kEventName(keys::kOnBeforeSendHeadersEvent); | 904 const std::string kEventName(keys::kOnBeforeSendHeadersEvent); |
833 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 905 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
834 | 906 |
835 // Install two extensions that can modify headers. Extension 2 has | 907 // Install two extensions that can modify headers. Extension 2 has |
836 // higher precedence than extension 1. | 908 // higher precedence than extension 1. |
837 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 909 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
838 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName, | 910 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName, |
839 kEventName + "/1", filter, | 911 kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0, |
840 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, | |
841 ipc_sender_factory.GetWeakPtr()); | 912 ipc_sender_factory.GetWeakPtr()); |
842 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 913 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
843 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName, | 914 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName, |
844 kEventName + "/2", filter, | 915 kEventName + "/2", filter, ExtraInfoSpec::BLOCKING, 0, 0, |
845 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, | |
846 ipc_sender_factory.GetWeakPtr()); | 916 ipc_sender_factory.GetWeakPtr()); |
847 | 917 |
848 // Install one extension that observes the final headers. | 918 // Install one extension that observes the final headers. |
849 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 919 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
850 &profile_, extension3_id, extension3_id, events::FOR_TEST, | 920 &profile_, extension3_id, extension3_id, events::FOR_TEST, |
851 keys::kOnSendHeadersEvent, std::string(keys::kOnSendHeadersEvent) + "/3", | 921 keys::kOnSendHeadersEvent, std::string(keys::kOnSendHeadersEvent) + "/3", |
852 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, 0, | 922 filter, ExtraInfoSpec::REQUEST_HEADERS, 0, 0, |
853 0, ipc_sender_factory.GetWeakPtr()); | 923 ipc_sender_factory.GetWeakPtr()); |
854 | 924 |
855 GURL request_url("http://doesnotexist/does_not_exist.html"); | 925 GURL request_url("http://doesnotexist/does_not_exist.html"); |
856 scoped_ptr<net::URLRequest> request(context_->CreateRequest( | 926 scoped_ptr<net::URLRequest> request(context_->CreateRequest( |
857 request_url, net::DEFAULT_PRIORITY, &delegate_)); | 927 request_url, net::DEFAULT_PRIORITY, &delegate_)); |
858 | 928 |
859 // Initialize headers available before extensions are notified of the | 929 // Initialize headers available before extensions are notified of the |
860 // onBeforeSendHeaders event. | 930 // onBeforeSendHeaders event. |
861 HeaderModificationTest test = GetParam(); | 931 HeaderModificationTest test = GetParam(); |
862 net::HttpRequestHeaders before_headers; | 932 net::HttpRequestHeaders before_headers; |
863 for (int i = 0; i < test.before_size; ++i) | 933 for (int i = 0; i < test.before_size; ++i) |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
993 | 1063 |
994 } // namespace | 1064 } // namespace |
995 | 1065 |
996 TEST_F(ExtensionWebRequestTest, InitFromValue) { | 1066 TEST_F(ExtensionWebRequestTest, InitFromValue) { |
997 TestInitFromValue(std::string(), true, 0); | 1067 TestInitFromValue(std::string(), true, 0); |
998 | 1068 |
999 // Single valid values. | 1069 // Single valid values. |
1000 TestInitFromValue( | 1070 TestInitFromValue( |
1001 "requestHeaders", | 1071 "requestHeaders", |
1002 true, | 1072 true, |
1003 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS); | 1073 ExtraInfoSpec::REQUEST_HEADERS); |
1004 TestInitFromValue( | 1074 TestInitFromValue( |
1005 "responseHeaders", | 1075 "responseHeaders", |
1006 true, | 1076 true, |
1007 ExtensionWebRequestEventRouter::ExtraInfoSpec::RESPONSE_HEADERS); | 1077 ExtraInfoSpec::RESPONSE_HEADERS); |
1008 TestInitFromValue( | 1078 TestInitFromValue( |
1009 "blocking", | 1079 "blocking", |
1010 true, | 1080 true, |
1011 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING); | 1081 ExtraInfoSpec::BLOCKING); |
1012 TestInitFromValue( | 1082 TestInitFromValue( |
1013 "asyncBlocking", | 1083 "asyncBlocking", |
1014 true, | 1084 true, |
1015 ExtensionWebRequestEventRouter::ExtraInfoSpec::ASYNC_BLOCKING); | 1085 ExtraInfoSpec::ASYNC_BLOCKING); |
1016 TestInitFromValue( | 1086 TestInitFromValue( |
1017 "requestBody", | 1087 "requestBody", |
1018 true, | 1088 true, |
1019 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_BODY); | 1089 ExtraInfoSpec::REQUEST_BODY); |
1020 | 1090 |
1021 // Multiple valid values are bitwise-or'ed. | 1091 // Multiple valid values are bitwise-or'ed. |
1022 TestInitFromValue( | 1092 TestInitFromValue( |
1023 "requestHeaders,blocking", | 1093 "requestHeaders,blocking", |
1024 true, | 1094 true, |
1025 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS | | 1095 ExtraInfoSpec::REQUEST_HEADERS | ExtraInfoSpec::BLOCKING); |
1026 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING); | |
1027 | 1096 |
1028 // Any invalid values lead to a bad parse. | 1097 // Any invalid values lead to a bad parse. |
1029 TestInitFromValue("invalidValue", false, 0); | 1098 TestInitFromValue("invalidValue", false, 0); |
1030 TestInitFromValue("blocking,invalidValue", false, 0); | 1099 TestInitFromValue("blocking,invalidValue", false, 0); |
1031 TestInitFromValue("invalidValue1,invalidValue2", false, 0); | 1100 TestInitFromValue("invalidValue1,invalidValue2", false, 0); |
1032 | 1101 |
1033 // BLOCKING and ASYNC_BLOCKING are mutually exclusive. | 1102 // BLOCKING and ASYNC_BLOCKING are mutually exclusive. |
1034 TestInitFromValue("blocking,asyncBlocking", false, 0); | 1103 TestInitFromValue("blocking,asyncBlocking", false, 0); |
1035 } | 1104 } |
1036 | 1105 |
(...skipping 1209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2246 EXPECT_TRUE(credentials_set); | 2315 EXPECT_TRUE(credentials_set); |
2247 EXPECT_FALSE(auth3.Empty()); | 2316 EXPECT_FALSE(auth3.Empty()); |
2248 EXPECT_EQ(username, auth1.username()); | 2317 EXPECT_EQ(username, auth1.username()); |
2249 EXPECT_EQ(password, auth1.password()); | 2318 EXPECT_EQ(password, auth1.password()); |
2250 EXPECT_EQ(1u, warning_set.size()); | 2319 EXPECT_EQ(1u, warning_set.size()); |
2251 EXPECT_TRUE(HasWarning(warning_set, "extid2")); | 2320 EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
2252 EXPECT_EQ(3u, capturing_net_log.GetSize()); | 2321 EXPECT_EQ(3u, capturing_net_log.GetSize()); |
2253 } | 2322 } |
2254 | 2323 |
2255 } // namespace extensions | 2324 } // namespace extensions |
OLD | NEW |