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

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

Issue 2804023003: Network traffic annotation added to chrome/browser/ unittests. (Closed)
Patch Set: Another missing header added. Created 3 years, 8 months 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
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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <map> 8 #include <map>
9 #include <memory> 9 #include <memory>
10 #include <queue> 10 #include <queue>
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "extensions/common/extension_messages.h" 49 #include "extensions/common/extension_messages.h"
50 #include "extensions/common/features/feature.h" 50 #include "extensions/common/features/feature.h"
51 #include "net/base/auth.h" 51 #include "net/base/auth.h"
52 #include "net/base/elements_upload_data_stream.h" 52 #include "net/base/elements_upload_data_stream.h"
53 #include "net/base/request_priority.h" 53 #include "net/base/request_priority.h"
54 #include "net/base/upload_bytes_element_reader.h" 54 #include "net/base/upload_bytes_element_reader.h"
55 #include "net/base/upload_file_element_reader.h" 55 #include "net/base/upload_file_element_reader.h"
56 #include "net/dns/mock_host_resolver.h" 56 #include "net/dns/mock_host_resolver.h"
57 #include "net/log/net_log_with_source.h" 57 #include "net/log/net_log_with_source.h"
58 #include "net/log/test_net_log.h" 58 #include "net/log/test_net_log.h"
59 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
59 #include "net/url_request/url_request_job_factory_impl.h" 60 #include "net/url_request/url_request_job_factory_impl.h"
60 #include "net/url_request/url_request_test_util.h" 61 #include "net/url_request/url_request_test_util.h"
61 #include "testing/gtest/include/gtest/gtest-message.h" 62 #include "testing/gtest/include/gtest/gtest-message.h"
62 #include "testing/gtest/include/gtest/gtest.h" 63 #include "testing/gtest/include/gtest/gtest.h"
63 64
64 namespace helpers = extension_web_request_api_helpers; 65 namespace helpers = extension_web_request_api_helpers;
65 namespace keys = extension_web_request_api_constants; 66 namespace keys = extension_web_request_api_constants;
66 namespace web_request = extensions::api::web_request; 67 namespace web_request = extensions::api::web_request;
67 68
68 using base::BinaryValue; 69 using base::BinaryValue;
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 243
243 net::URLRequestJobFactoryImpl job_factory; 244 net::URLRequestJobFactoryImpl job_factory;
244 job_factory.SetProtocolHandler( 245 job_factory.SetProtocolHandler(
245 url::kAboutScheme, 246 url::kAboutScheme,
246 base::WrapUnique(new about_handler::AboutProtocolHandler())); 247 base::WrapUnique(new about_handler::AboutProtocolHandler()));
247 context_->set_job_factory(&job_factory); 248 context_->set_job_factory(&job_factory);
248 249
249 GURL redirect_url("about:redirected"); 250 GURL redirect_url("about:redirected");
250 GURL not_chosen_redirect_url("about:not_chosen"); 251 GURL not_chosen_redirect_url("about:not_chosen");
251 252
252 std::unique_ptr<net::URLRequest> request(context_->CreateRequest( 253 std::unique_ptr<net::URLRequest> request(
253 GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_)); 254 context_->CreateRequest(GURL("about:blank"), net::DEFAULT_PRIORITY,
255 &delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
254 { 256 {
255 // onBeforeRequest will be dispatched twice initially. The second response - 257 // onBeforeRequest will be dispatched twice initially. The second response -
256 // the redirect - should win, since it has a later |install_time|. The 258 // the redirect - should win, since it has a later |install_time|. The
257 // redirect will dispatch another pair of onBeforeRequest. There, the first 259 // redirect will dispatch another pair of onBeforeRequest. There, the first
258 // response should win (later |install_time|). 260 // response should win (later |install_time|).
259 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 261 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
260 262
261 // Extension1 response. Arrives first, but ignored due to install_time. 263 // Extension1 response. Arrives first, but ignored due to install_time.
262 response = new ExtensionWebRequestEventRouter::EventResponse( 264 response = new ExtensionWebRequestEventRouter::EventResponse(
263 extension1_id, base::Time::FromDoubleT(1)); 265 extension1_id, base::Time::FromDoubleT(1));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 base::RunLoop().Run(); 298 base::RunLoop().Run();
297 299
298 EXPECT_TRUE(!request->is_pending()); 300 EXPECT_TRUE(!request->is_pending());
299 EXPECT_EQ(net::OK, delegate_.request_status()); 301 EXPECT_EQ(net::OK, delegate_.request_status());
300 EXPECT_EQ(redirect_url, request->url()); 302 EXPECT_EQ(redirect_url, request->url());
301 EXPECT_EQ(2U, request->url_chain().size()); 303 EXPECT_EQ(2U, request->url_chain().size());
302 EXPECT_EQ(0U, ipc_sender_.GetNumTasks()); 304 EXPECT_EQ(0U, ipc_sender_.GetNumTasks());
303 } 305 }
304 306
305 // Now test the same thing but the extensions answer in reverse order. 307 // Now test the same thing but the extensions answer in reverse order.
306 std::unique_ptr<net::URLRequest> request2(context_->CreateRequest( 308 std::unique_ptr<net::URLRequest> request2(
307 GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_)); 309 context_->CreateRequest(GURL("about:blank"), net::DEFAULT_PRIORITY,
310 &delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
308 { 311 {
309 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 312 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
310 313
311 // Extension2 response. Arrives first, and chosen because of install_time. 314 // Extension2 response. Arrives first, and chosen because of install_time.
312 response = new ExtensionWebRequestEventRouter::EventResponse( 315 response = new ExtensionWebRequestEventRouter::EventResponse(
313 extension2_id, base::Time::FromDoubleT(2)); 316 extension2_id, base::Time::FromDoubleT(2));
314 response->new_url = redirect_url; 317 response->new_url = redirect_url;
315 ipc_sender_.PushTask( 318 ipc_sender_.PushTask(
316 base::Bind(&EventHandledOnIOThread, 319 base::Bind(&EventHandledOnIOThread,
317 &profile_, extension2_id, kEventName, kEventName + "/2", 320 &profile_, extension2_id, kEventName, kEventName + "/2",
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName, 377 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName,
375 kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0, 378 kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0,
376 ipc_sender_factory.GetWeakPtr()); 379 ipc_sender_factory.GetWeakPtr());
377 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 380 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
378 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName, 381 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName,
379 kEventName + "/2", filter, ExtraInfoSpec::BLOCKING, 0, 0, 382 kEventName + "/2", filter, ExtraInfoSpec::BLOCKING, 0, 0,
380 ipc_sender_factory.GetWeakPtr()); 383 ipc_sender_factory.GetWeakPtr());
381 384
382 GURL request_url("about:blank"); 385 GURL request_url("about:blank");
383 std::unique_ptr<net::URLRequest> request( 386 std::unique_ptr<net::URLRequest> request(
384 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_)); 387 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_,
388 TRAFFIC_ANNOTATION_FOR_TESTS));
385 389
386 // onBeforeRequest will be dispatched twice. The second response - 390 // onBeforeRequest will be dispatched twice. The second response -
387 // the redirect - would win, since it has a later |install_time|, but 391 // the redirect - would win, since it has a later |install_time|, but
388 // the first response takes precedence because cancel >> redirect. 392 // the first response takes precedence because cancel >> redirect.
389 GURL redirect_url("about:redirected"); 393 GURL redirect_url("about:redirected");
390 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 394 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
391 395
392 // Extension1 response. Arrives first, would be ignored in principle due to 396 // Extension1 response. Arrives first, would be ignored in principle due to
393 // install_time but "cancel" always wins. 397 // install_time but "cancel" always wins.
394 response = new ExtensionWebRequestEventRouter::EventResponse( 398 response = new ExtensionWebRequestEventRouter::EventResponse(
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 449 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
446 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName, 450 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName,
447 kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0, 451 kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0,
448 ipc_sender_factory.GetWeakPtr()); 452 ipc_sender_factory.GetWeakPtr());
449 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 453 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
450 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName2, 454 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName2,
451 kEventName2 + "/1", filter, 0, 0, 0, ipc_sender_factory.GetWeakPtr()); 455 kEventName2 + "/1", filter, 0, 0, 0, ipc_sender_factory.GetWeakPtr());
452 456
453 GURL request_url("about:blank"); 457 GURL request_url("about:blank");
454 std::unique_ptr<net::URLRequest> request( 458 std::unique_ptr<net::URLRequest> request(
455 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_)); 459 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_,
460 TRAFFIC_ANNOTATION_FOR_TESTS));
456 461
457 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 462 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
458 463
459 // Extension response for the OnBeforeRequest handler. This should not be 464 // Extension response for the OnBeforeRequest handler. This should not be
460 // processed because request is canceled before the handler responds. 465 // processed because request is canceled before the handler responds.
461 response = new ExtensionWebRequestEventRouter::EventResponse( 466 response = new ExtensionWebRequestEventRouter::EventResponse(
462 extension_id, base::Time::FromDoubleT(1)); 467 extension_id, base::Time::FromDoubleT(1));
463 GURL redirect_url("about:redirected"); 468 GURL redirect_url("about:redirected");
464 response->new_url = redirect_url; 469 response->new_url = redirect_url;
465 ipc_sender_.PushTask( 470 ipc_sender_.PushTask(
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 } // namespace 518 } // namespace
514 519
515 void ExtensionWebRequestTest::FireURLRequestWithData( 520 void ExtensionWebRequestTest::FireURLRequestWithData(
516 const std::string& method, 521 const std::string& method,
517 const char* content_type, 522 const char* content_type,
518 const std::vector<char>& bytes_1, 523 const std::vector<char>& bytes_1,
519 const std::vector<char>& bytes_2) { 524 const std::vector<char>& bytes_2) {
520 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme. 525 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme.
521 GURL request_url("http://www.example.com"); 526 GURL request_url("http://www.example.com");
522 std::unique_ptr<net::URLRequest> request( 527 std::unique_ptr<net::URLRequest> request(
523 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_)); 528 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_,
529 TRAFFIC_ANNOTATION_FOR_TESTS));
524 request->set_method(method); 530 request->set_method(method);
525 if (content_type != NULL) { 531 if (content_type != NULL) {
526 request->SetExtraRequestHeaderByName(net::HttpRequestHeaders::kContentType, 532 request->SetExtraRequestHeaderByName(net::HttpRequestHeaders::kContentType,
527 content_type, 533 content_type,
528 true /* overwrite */); 534 true /* overwrite */);
529 } 535 }
530 std::vector<std::unique_ptr<net::UploadElementReader>> element_readers; 536 std::vector<std::unique_ptr<net::UploadElementReader>> element_readers;
531 element_readers.push_back(base::MakeUnique<net::UploadBytesElementReader>( 537 element_readers.push_back(base::MakeUnique<net::UploadBytesElementReader>(
532 &(bytes_1[0]), bytes_1.size())); 538 &(bytes_1[0]), bytes_1.size()));
533 element_readers.push_back(base::MakeUnique<net::UploadFileElementReader>( 539 element_readers.push_back(base::MakeUnique<net::UploadFileElementReader>(
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
816 // Subscribe to OnBeforeRequest with requestBody requirement. 822 // Subscribe to OnBeforeRequest with requestBody requirement.
817 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 823 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
818 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName, 824 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName,
819 kEventName + "/1", filter, extra_info_spec, 0, 0, 825 kEventName + "/1", filter, extra_info_spec, 0, 0,
820 ipc_sender_factory.GetWeakPtr()); 826 ipc_sender_factory.GetWeakPtr());
821 827
822 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme. 828 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme.
823 const GURL request_url("http://www.example.com"); 829 const GURL request_url("http://www.example.com");
824 830
825 for (size_t i = 0; i < arraysize(kMethods); ++i) { 831 for (size_t i = 0; i < arraysize(kMethods); ++i) {
826 std::unique_ptr<net::URLRequest> request(context_->CreateRequest( 832 std::unique_ptr<net::URLRequest> request(
827 request_url, net::DEFAULT_PRIORITY, &delegate_)); 833 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_,
834 TRAFFIC_ANNOTATION_FOR_TESTS));
828 request->set_method(kMethods[i]); 835 request->set_method(kMethods[i]);
829 ipc_sender_.PushTask(base::Bind(&base::DoNothing)); 836 ipc_sender_.PushTask(base::Bind(&base::DoNothing));
830 request->Start(); 837 request->Start();
831 } 838 }
832 839
833 // We inspect the result in the message list of |ipc_sender_| later. 840 // We inspect the result in the message list of |ipc_sender_| later.
834 base::RunLoop().RunUntilIdle(); 841 base::RunLoop().RunUntilIdle();
835 842
836 ExtensionWebRequestEventRouter::EventListener::ID id1( 843 ExtensionWebRequestEventRouter::EventListener::ID id1(
837 &profile_, extension_id, kEventName + "/1", 0, 0); 844 &profile_, extension_id, kEventName + "/1", 0, 0);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 ExtensionWebRequestEventRouter::EventListener::ID id(&profile_, extension_id, 920 ExtensionWebRequestEventRouter::EventListener::ID id(&profile_, extension_id,
914 kEventName + "/1", 0, 0); 921 kEventName + "/1", 0, 0);
915 ExtensionWebRequestEventRouter::EventListener* listener = 922 ExtensionWebRequestEventRouter::EventListener* listener =
916 ExtensionWebRequestEventRouter::GetInstance()->FindEventListener(id); 923 ExtensionWebRequestEventRouter::GetInstance()->FindEventListener(id);
917 ASSERT_NE(nullptr, listener); 924 ASSERT_NE(nullptr, listener);
918 EXPECT_EQ(0u, listener->blocked_requests.size()); 925 EXPECT_EQ(0u, listener->blocked_requests.size());
919 926
920 // Send a request. It should block. Wait for the run loop to become idle. 927 // Send a request. It should block. Wait for the run loop to become idle.
921 GURL request_url("about:blank"); 928 GURL request_url("about:blank");
922 std::unique_ptr<net::URLRequest> request( 929 std::unique_ptr<net::URLRequest> request(
923 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_)); 930 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_,
931 TRAFFIC_ANNOTATION_FOR_TESTS));
924 // Extension response for OnErrorOccurred: Terminate the message loop. 932 // Extension response for OnErrorOccurred: Terminate the message loop.
925 { 933 {
926 base::RunLoop run_loop; 934 base::RunLoop run_loop;
927 ipc_sender_.PushTask( 935 ipc_sender_.PushTask(
928 base::Bind(base::IgnoreResult(&base::SingleThreadTaskRunner::PostTask), 936 base::Bind(base::IgnoreResult(&base::SingleThreadTaskRunner::PostTask),
929 base::ThreadTaskRunnerHandle::Get(), FROM_HERE, 937 base::ThreadTaskRunnerHandle::Get(), FROM_HERE,
930 run_loop.QuitWhenIdleClosure())); 938 run_loop.QuitWhenIdleClosure()));
931 request->Start(); 939 request->Start();
932 run_loop.Run(); 940 run_loop.Run();
933 } 941 }
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
1046 1054
1047 // Install one extension that observes the final headers. 1055 // Install one extension that observes the final headers.
1048 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 1056 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
1049 &profile_, extension3_id, extension3_id, events::FOR_TEST, 1057 &profile_, extension3_id, extension3_id, events::FOR_TEST,
1050 keys::kOnSendHeadersEvent, std::string(keys::kOnSendHeadersEvent) + "/3", 1058 keys::kOnSendHeadersEvent, std::string(keys::kOnSendHeadersEvent) + "/3",
1051 filter, ExtraInfoSpec::REQUEST_HEADERS, 0, 0, 1059 filter, ExtraInfoSpec::REQUEST_HEADERS, 0, 0,
1052 ipc_sender_factory.GetWeakPtr()); 1060 ipc_sender_factory.GetWeakPtr());
1053 1061
1054 GURL request_url("http://doesnotexist/does_not_exist.html"); 1062 GURL request_url("http://doesnotexist/does_not_exist.html");
1055 std::unique_ptr<net::URLRequest> request( 1063 std::unique_ptr<net::URLRequest> request(
1056 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_)); 1064 context_->CreateRequest(request_url, net::DEFAULT_PRIORITY, &delegate_,
1065 TRAFFIC_ANNOTATION_FOR_TESTS));
1057 1066
1058 // Initialize headers available before extensions are notified of the 1067 // Initialize headers available before extensions are notified of the
1059 // onBeforeSendHeaders event. 1068 // onBeforeSendHeaders event.
1060 HeaderModificationTest test = GetParam(); 1069 HeaderModificationTest test = GetParam();
1061 net::HttpRequestHeaders before_headers; 1070 net::HttpRequestHeaders before_headers;
1062 for (int i = 0; i < test.before_size; ++i) 1071 for (int i = 0; i < test.before_size; ++i)
1063 before_headers.SetHeader(test.before[i].name, test.before[i].value); 1072 before_headers.SetHeader(test.before[i].name, test.before[i].value);
1064 request->SetExtraRequestHeaders(before_headers); 1073 request->SetExtraRequestHeaders(before_headers);
1065 1074
1066 // Gather the modifications to the headers for the respective extensions. 1075 // Gather the modifications to the headers for the respective extensions.
(...skipping 1407 matching lines...) Expand 10 before | Expand all | Expand 10 after
2474 EXPECT_TRUE(credentials_set); 2483 EXPECT_TRUE(credentials_set);
2475 EXPECT_FALSE(auth3.Empty()); 2484 EXPECT_FALSE(auth3.Empty());
2476 EXPECT_EQ(username, auth1.username()); 2485 EXPECT_EQ(username, auth1.username());
2477 EXPECT_EQ(password, auth1.password()); 2486 EXPECT_EQ(password, auth1.password());
2478 EXPECT_EQ(1u, warning_set.size()); 2487 EXPECT_EQ(1u, warning_set.size());
2479 EXPECT_TRUE(HasWarning(warning_set, "extid2")); 2488 EXPECT_TRUE(HasWarning(warning_set, "extid2"));
2480 EXPECT_EQ(3u, capturing_net_log.GetSize()); 2489 EXPECT_EQ(3u, capturing_net_log.GetSize());
2481 } 2490 }
2482 2491
2483 } // namespace extensions 2492 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698