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

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

Issue 1272373003: Add extension event histogram values for messaging, webRequest, and webview. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: last Created 5 years, 4 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 <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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 // Tests that we handle disagreements among extensions about responses to 220 // Tests that we handle disagreements among extensions about responses to
221 // blocking events (redirection) by choosing the response from the 221 // blocking events (redirection) by choosing the response from the
222 // most-recently-installed extension. 222 // most-recently-installed extension.
223 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { 223 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
224 std::string extension1_id("1"); 224 std::string extension1_id("1");
225 std::string extension2_id("2"); 225 std::string extension2_id("2");
226 ExtensionWebRequestEventRouter::RequestFilter filter; 226 ExtensionWebRequestEventRouter::RequestFilter filter;
227 const std::string kEventName(web_request::OnBeforeRequest::kEventName); 227 const std::string kEventName(web_request::OnBeforeRequest::kEventName);
228 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); 228 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
229 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 229 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
230 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", 230 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName,
231 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, 231 kEventName + "/1", filter,
232 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
232 ipc_sender_factory.GetWeakPtr()); 233 ipc_sender_factory.GetWeakPtr());
233 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 234 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
234 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", 235 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName,
235 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, 236 kEventName + "/2", filter,
237 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
236 ipc_sender_factory.GetWeakPtr()); 238 ipc_sender_factory.GetWeakPtr());
237 239
238 net::URLRequestJobFactoryImpl job_factory; 240 net::URLRequestJobFactoryImpl job_factory;
239 job_factory.SetProtocolHandler( 241 job_factory.SetProtocolHandler(
240 url::kAboutScheme, new chrome_browser_net::AboutProtocolHandler()); 242 url::kAboutScheme, new chrome_browser_net::AboutProtocolHandler());
241 context_->set_job_factory(&job_factory); 243 context_->set_job_factory(&job_factory);
242 244
243 GURL redirect_url("about:redirected"); 245 GURL redirect_url("about:redirected");
244 GURL not_chosen_redirect_url("about:not_chosen"); 246 GURL not_chosen_redirect_url("about:not_chosen");
245 247
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 358
357 // Test that a request is canceled if this is requested by any extension 359 // Test that a request is canceled if this is requested by any extension
358 // regardless whether it is the extension with the highest precedence. 360 // regardless whether it is the extension with the highest precedence.
359 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) { 361 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) {
360 std::string extension1_id("1"); 362 std::string extension1_id("1");
361 std::string extension2_id("2"); 363 std::string extension2_id("2");
362 ExtensionWebRequestEventRouter::RequestFilter filter; 364 ExtensionWebRequestEventRouter::RequestFilter filter;
363 const std::string kEventName(web_request::OnBeforeRequest::kEventName); 365 const std::string kEventName(web_request::OnBeforeRequest::kEventName);
364 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); 366 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
365 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 367 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
366 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", 368 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName,
367 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, 369 kEventName + "/1", filter,
368 ipc_sender_factory.GetWeakPtr()); 370 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
371 ipc_sender_factory.GetWeakPtr());
369 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 372 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
370 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", 373 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName,
371 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, 374 kEventName + "/2", filter,
372 ipc_sender_factory.GetWeakPtr()); 375 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
376 ipc_sender_factory.GetWeakPtr());
373 377
374 GURL request_url("about:blank"); 378 GURL request_url("about:blank");
375 scoped_ptr<net::URLRequest> request(context_->CreateRequest( 379 scoped_ptr<net::URLRequest> request(context_->CreateRequest(
376 request_url, net::DEFAULT_PRIORITY, &delegate_)); 380 request_url, net::DEFAULT_PRIORITY, &delegate_));
377 381
378 // onBeforeRequest will be dispatched twice. The second response - 382 // onBeforeRequest will be dispatched twice. The second response -
379 // the redirect - would win, since it has a later |install_time|, but 383 // the redirect - would win, since it has a later |install_time|, but
380 // the first response takes precedence because cancel >> redirect. 384 // the first response takes precedence because cancel >> redirect.
381 GURL redirect_url("about:redirected"); 385 GURL redirect_url("about:redirected");
382 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 386 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 // is ignored. 429 // is ignored.
426 430
427 std::string extension_id("1"); 431 std::string extension_id("1");
428 ExtensionWebRequestEventRouter::RequestFilter filter; 432 ExtensionWebRequestEventRouter::RequestFilter filter;
429 433
430 // Subscribe to OnBeforeRequest and OnErrorOccurred. 434 // Subscribe to OnBeforeRequest and OnErrorOccurred.
431 const std::string kEventName(web_request::OnBeforeRequest::kEventName); 435 const std::string kEventName(web_request::OnBeforeRequest::kEventName);
432 const std::string kEventName2(web_request::OnErrorOccurred::kEventName); 436 const std::string kEventName2(web_request::OnErrorOccurred::kEventName);
433 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); 437 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
434 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 438 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
435 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", 439 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName,
436 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, 440 kEventName + "/1", filter,
437 ipc_sender_factory.GetWeakPtr()); 441 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
442 ipc_sender_factory.GetWeakPtr());
438 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 443 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
439 &profile_, extension_id, extension_id, kEventName2, kEventName2 + "/1", 444 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName2,
440 filter, 0, 0, 0, ipc_sender_factory.GetWeakPtr()); 445 kEventName2 + "/1", filter, 0, 0, 0, ipc_sender_factory.GetWeakPtr());
441 446
442 GURL request_url("about:blank"); 447 GURL request_url("about:blank");
443 scoped_ptr<net::URLRequest> request(context_->CreateRequest( 448 scoped_ptr<net::URLRequest> request(context_->CreateRequest(
444 request_url, net::DEFAULT_PRIORITY, &delegate_)); 449 request_url, net::DEFAULT_PRIORITY, &delegate_));
445 450
446 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 451 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
447 452
448 // Extension response for the OnBeforeRequest handler. This should not be 453 // Extension response for the OnBeforeRequest handler. This should not be
449 // processed because request is canceled before the handler responds. 454 // processed because request is canceled before the handler responds.
450 response = new ExtensionWebRequestEventRouter::EventResponse( 455 response = new ExtensionWebRequestEventRouter::EventResponse(
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 const std::string string_spec_post("blocking,requestBody"); 630 const std::string string_spec_post("blocking,requestBody");
626 const std::string string_spec_no_post("blocking"); 631 const std::string string_spec_no_post("blocking");
627 int extra_info_spec_empty = 0; 632 int extra_info_spec_empty = 0;
628 int extra_info_spec_body = 0; 633 int extra_info_spec_body = 0;
629 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); 634 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
630 635
631 // Part 1. 636 // Part 1.
632 // Subscribe to OnBeforeRequest with requestBody requirement. 637 // Subscribe to OnBeforeRequest with requestBody requirement.
633 ASSERT_TRUE(GenerateInfoSpec(string_spec_post, &extra_info_spec_body)); 638 ASSERT_TRUE(GenerateInfoSpec(string_spec_post, &extra_info_spec_body));
634 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 639 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
635 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", 640 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName,
636 filter, extra_info_spec_body, 0, 0, ipc_sender_factory.GetWeakPtr()); 641 kEventName + "/1", filter, extra_info_spec_body, 0, 0,
642 ipc_sender_factory.GetWeakPtr());
637 643
638 FireURLRequestWithData(kMethodPost, kMultipart, form_1, form_2); 644 FireURLRequestWithData(kMethodPost, kMultipart, form_1, form_2);
639 645
640 // We inspect the result in the message list of |ipc_sender_| later. 646 // We inspect the result in the message list of |ipc_sender_| later.
641 base::MessageLoop::current()->RunUntilIdle(); 647 base::MessageLoop::current()->RunUntilIdle();
642 648
643 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( 649 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener(
644 &profile_, extension_id, kEventName + "/1", 0, 0); 650 &profile_, extension_id, kEventName + "/1", 0, 0);
645 651
646 // Part 2. 652 // Part 2.
647 // Now subscribe to OnBeforeRequest *without* the requestBody requirement. 653 // Now subscribe to OnBeforeRequest *without* the requestBody requirement.
648 ASSERT_TRUE( 654 ASSERT_TRUE(
649 GenerateInfoSpec(string_spec_no_post, &extra_info_spec_empty)); 655 GenerateInfoSpec(string_spec_no_post, &extra_info_spec_empty));
650 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 656 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
651 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", 657 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName,
652 filter, extra_info_spec_empty, 0, 0, ipc_sender_factory.GetWeakPtr()); 658 kEventName + "/1", filter, extra_info_spec_empty, 0, 0,
659 ipc_sender_factory.GetWeakPtr());
653 660
654 FireURLRequestWithData(kMethodPost, kMultipart, form_1, form_2); 661 FireURLRequestWithData(kMethodPost, kMultipart, form_1, form_2);
655 662
656 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( 663 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener(
657 &profile_, extension_id, kEventName + "/1", 0, 0); 664 &profile_, extension_id, kEventName + "/1", 0, 0);
658 665
659 // Subscribe to OnBeforeRequest with requestBody requirement. 666 // Subscribe to OnBeforeRequest with requestBody requirement.
660 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 667 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
661 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", 668 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName,
662 filter, extra_info_spec_body, 0, 0, ipc_sender_factory.GetWeakPtr()); 669 kEventName + "/1", filter, extra_info_spec_body, 0, 0,
670 ipc_sender_factory.GetWeakPtr());
663 671
664 // Part 3. 672 // Part 3.
665 // Now send a POST request with body which is not parseable as a form. 673 // Now send a POST request with body which is not parseable as a form.
666 FireURLRequestWithData(kMethodPost, NULL /*no header*/, plain_1, plain_2); 674 FireURLRequestWithData(kMethodPost, NULL /*no header*/, plain_1, plain_2);
667 675
668 // Part 4. 676 // Part 4.
669 // Now send a PUT request with the same body as above. 677 // Now send a PUT request with the same body as above.
670 FireURLRequestWithData(kMethodPut, NULL /*no header*/, plain_1, plain_2); 678 FireURLRequestWithData(kMethodPut, NULL /*no header*/, plain_1, plain_2);
671 679
672 base::MessageLoop::current()->RunUntilIdle(); 680 base::MessageLoop::current()->RunUntilIdle();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 // Set up a dummy extension name. 717 // Set up a dummy extension name.
710 const std::string kEventName(web_request::OnBeforeRequest::kEventName); 718 const std::string kEventName(web_request::OnBeforeRequest::kEventName);
711 ExtensionWebRequestEventRouter::RequestFilter filter; 719 ExtensionWebRequestEventRouter::RequestFilter filter;
712 const std::string extension_id("1"); 720 const std::string extension_id("1");
713 int extra_info_spec = 0; 721 int extra_info_spec = 0;
714 ASSERT_TRUE(GenerateInfoSpec("blocking,requestBody", &extra_info_spec)); 722 ASSERT_TRUE(GenerateInfoSpec("blocking,requestBody", &extra_info_spec));
715 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); 723 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
716 724
717 // Subscribe to OnBeforeRequest with requestBody requirement. 725 // Subscribe to OnBeforeRequest with requestBody requirement.
718 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 726 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
719 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", 727 &profile_, extension_id, extension_id, events::FOR_TEST, kEventName,
720 filter, extra_info_spec, 0, 0, ipc_sender_factory.GetWeakPtr()); 728 kEventName + "/1", filter, extra_info_spec, 0, 0,
729 ipc_sender_factory.GetWeakPtr());
721 730
722 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme. 731 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme.
723 const GURL request_url("http://www.example.com"); 732 const GURL request_url("http://www.example.com");
724 733
725 for (size_t i = 0; i < arraysize(kMethods); ++i) { 734 for (size_t i = 0; i < arraysize(kMethods); ++i) {
726 scoped_ptr<net::URLRequest> request(context_->CreateRequest( 735 scoped_ptr<net::URLRequest> request(context_->CreateRequest(
727 request_url, net::DEFAULT_PRIORITY, &delegate_)); 736 request_url, net::DEFAULT_PRIORITY, &delegate_));
728 request->set_method(kMethods[i]); 737 request->set_method(kMethods[i]);
729 ipc_sender_.PushTask(base::Bind(&base::DoNothing)); 738 ipc_sender_.PushTask(base::Bind(&base::DoNothing));
730 request->Start(); 739 request->Start();
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 std::string extension1_id("1"); 830 std::string extension1_id("1");
822 std::string extension2_id("2"); 831 std::string extension2_id("2");
823 std::string extension3_id("3"); 832 std::string extension3_id("3");
824 ExtensionWebRequestEventRouter::RequestFilter filter; 833 ExtensionWebRequestEventRouter::RequestFilter filter;
825 const std::string kEventName(keys::kOnBeforeSendHeadersEvent); 834 const std::string kEventName(keys::kOnBeforeSendHeadersEvent);
826 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); 835 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
827 836
828 // Install two extensions that can modify headers. Extension 2 has 837 // Install two extensions that can modify headers. Extension 2 has
829 // higher precedence than extension 1. 838 // higher precedence than extension 1.
830 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 839 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
831 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", 840 &profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName,
832 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, 841 kEventName + "/1", filter,
842 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
833 ipc_sender_factory.GetWeakPtr()); 843 ipc_sender_factory.GetWeakPtr());
834 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 844 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
835 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", 845 &profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName,
836 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, 846 kEventName + "/2", filter,
847 ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
837 ipc_sender_factory.GetWeakPtr()); 848 ipc_sender_factory.GetWeakPtr());
838 849
839 // Install one extension that observes the final headers. 850 // Install one extension that observes the final headers.
840 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 851 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
841 &profile_, extension3_id, extension3_id, keys::kOnSendHeadersEvent, 852 &profile_, extension3_id, extension3_id, events::FOR_TEST,
842 std::string(keys::kOnSendHeadersEvent) + "/3", filter, 853 keys::kOnSendHeadersEvent, std::string(keys::kOnSendHeadersEvent) + "/3",
843 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, 0, 0, 854 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, 0,
844 ipc_sender_factory.GetWeakPtr()); 855 0, ipc_sender_factory.GetWeakPtr());
845 856
846 GURL request_url("http://doesnotexist/does_not_exist.html"); 857 GURL request_url("http://doesnotexist/does_not_exist.html");
847 scoped_ptr<net::URLRequest> request(context_->CreateRequest( 858 scoped_ptr<net::URLRequest> request(context_->CreateRequest(
848 request_url, net::DEFAULT_PRIORITY, &delegate_)); 859 request_url, net::DEFAULT_PRIORITY, &delegate_));
849 860
850 // Initialize headers available before extensions are notified of the 861 // Initialize headers available before extensions are notified of the
851 // onBeforeSendHeaders event. 862 // onBeforeSendHeaders event.
852 HeaderModificationTest test = GetParam(); 863 HeaderModificationTest test = GetParam();
853 net::HttpRequestHeaders before_headers; 864 net::HttpRequestHeaders before_headers;
854 for (int i = 0; i < test.before_size; ++i) 865 for (int i = 0; i < test.before_size; ++i)
(...skipping 1380 matching lines...) Expand 10 before | Expand all | Expand 10 after
2235 EXPECT_TRUE(credentials_set); 2246 EXPECT_TRUE(credentials_set);
2236 EXPECT_FALSE(auth3.Empty()); 2247 EXPECT_FALSE(auth3.Empty());
2237 EXPECT_EQ(username, auth1.username()); 2248 EXPECT_EQ(username, auth1.username());
2238 EXPECT_EQ(password, auth1.password()); 2249 EXPECT_EQ(password, auth1.password());
2239 EXPECT_EQ(1u, warning_set.size()); 2250 EXPECT_EQ(1u, warning_set.size());
2240 EXPECT_TRUE(HasWarning(warning_set, "extid2")); 2251 EXPECT_TRUE(HasWarning(warning_set, "extid2"));
2241 EXPECT_EQ(3u, capturing_net_log.GetSize()); 2252 EXPECT_EQ(3u, capturing_net_log.GetSize());
2242 } 2253 }
2243 2254
2244 } // namespace extensions 2255 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/messaging/message_service.cc ('k') | extensions/browser/api/web_request/web_request_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698