| 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 <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 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 // blocking events (redirection) by choosing the response from the | 216 // blocking events (redirection) by choosing the response from the |
| 217 // most-recently-installed extension. | 217 // most-recently-installed extension. |
| 218 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { | 218 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { |
| 219 std::string extension1_id("1"); | 219 std::string extension1_id("1"); |
| 220 std::string extension2_id("2"); | 220 std::string extension2_id("2"); |
| 221 ExtensionWebRequestEventRouter::RequestFilter filter; | 221 ExtensionWebRequestEventRouter::RequestFilter filter; |
| 222 const std::string kEventName(web_request::OnBeforeRequest::kEventName); | 222 const std::string kEventName(web_request::OnBeforeRequest::kEventName); |
| 223 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 223 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
| 224 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 224 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 225 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", | 225 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", |
| 226 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1, | 226 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, |
| 227 ipc_sender_factory.GetWeakPtr()); | 227 ipc_sender_factory.GetWeakPtr()); |
| 228 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 228 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 229 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", | 229 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", |
| 230 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1, | 230 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, |
| 231 ipc_sender_factory.GetWeakPtr()); | 231 ipc_sender_factory.GetWeakPtr()); |
| 232 | 232 |
| 233 net::URLRequestJobFactoryImpl job_factory; | 233 net::URLRequestJobFactoryImpl job_factory; |
| 234 job_factory.SetProtocolHandler( | 234 job_factory.SetProtocolHandler( |
| 235 url::kAboutScheme, new chrome_browser_net::AboutProtocolHandler()); | 235 url::kAboutScheme, new chrome_browser_net::AboutProtocolHandler()); |
| 236 context_->set_job_factory(&job_factory); | 236 context_->set_job_factory(&job_factory); |
| 237 | 237 |
| 238 GURL redirect_url("about:redirected"); | 238 GURL redirect_url("about:redirected"); |
| 239 GURL not_chosen_redirect_url("about:not_chosen"); | 239 GURL not_chosen_redirect_url("about:not_chosen"); |
| 240 | 240 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 // Test that a request is canceled if this is requested by any extension | 352 // Test that a request is canceled if this is requested by any extension |
| 353 // regardless whether it is the extension with the highest precedence. | 353 // regardless whether it is the extension with the highest precedence. |
| 354 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) { | 354 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) { |
| 355 std::string extension1_id("1"); | 355 std::string extension1_id("1"); |
| 356 std::string extension2_id("2"); | 356 std::string extension2_id("2"); |
| 357 ExtensionWebRequestEventRouter::RequestFilter filter; | 357 ExtensionWebRequestEventRouter::RequestFilter filter; |
| 358 const std::string kEventName(web_request::OnBeforeRequest::kEventName); | 358 const std::string kEventName(web_request::OnBeforeRequest::kEventName); |
| 359 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 359 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
| 360 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 360 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 361 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", | 361 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", |
| 362 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1, | 362 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, |
| 363 ipc_sender_factory.GetWeakPtr()); | 363 ipc_sender_factory.GetWeakPtr()); |
| 364 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 364 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 365 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", | 365 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", |
| 366 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1, | 366 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, |
| 367 ipc_sender_factory.GetWeakPtr()); | 367 ipc_sender_factory.GetWeakPtr()); |
| 368 | 368 |
| 369 GURL request_url("about:blank"); | 369 GURL request_url("about:blank"); |
| 370 scoped_ptr<net::URLRequest> request(context_->CreateRequest( | 370 scoped_ptr<net::URLRequest> request(context_->CreateRequest( |
| 371 request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); | 371 request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); |
| 372 | 372 |
| 373 // onBeforeRequest will be dispatched twice. The second response - | 373 // onBeforeRequest will be dispatched twice. The second response - |
| 374 // the redirect - would win, since it has a later |install_time|, but | 374 // the redirect - would win, since it has a later |install_time|, but |
| 375 // the first response takes precedence because cancel >> redirect. | 375 // the first response takes precedence because cancel >> redirect. |
| 376 GURL redirect_url("about:redirected"); | 376 GURL redirect_url("about:redirected"); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 421 | 421 |
| 422 std::string extension_id("1"); | 422 std::string extension_id("1"); |
| 423 ExtensionWebRequestEventRouter::RequestFilter filter; | 423 ExtensionWebRequestEventRouter::RequestFilter filter; |
| 424 | 424 |
| 425 // Subscribe to OnBeforeRequest and OnErrorOccurred. | 425 // Subscribe to OnBeforeRequest and OnErrorOccurred. |
| 426 const std::string kEventName(web_request::OnBeforeRequest::kEventName); | 426 const std::string kEventName(web_request::OnBeforeRequest::kEventName); |
| 427 const std::string kEventName2(web_request::OnErrorOccurred::kEventName); | 427 const std::string kEventName2(web_request::OnErrorOccurred::kEventName); |
| 428 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 428 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
| 429 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 429 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 430 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", | 430 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", |
| 431 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1, | 431 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, |
| 432 ipc_sender_factory.GetWeakPtr()); | 432 ipc_sender_factory.GetWeakPtr()); |
| 433 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 433 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 434 &profile_, extension_id, extension_id, kEventName2, kEventName2 + "/1", | 434 &profile_, extension_id, extension_id, kEventName2, kEventName2 + "/1", |
| 435 filter, 0, -1, -1, ipc_sender_factory.GetWeakPtr()); | 435 filter, 0, 0, 0, ipc_sender_factory.GetWeakPtr()); |
| 436 | 436 |
| 437 GURL request_url("about:blank"); | 437 GURL request_url("about:blank"); |
| 438 scoped_ptr<net::URLRequest> request(context_->CreateRequest( | 438 scoped_ptr<net::URLRequest> request(context_->CreateRequest( |
| 439 request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); | 439 request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); |
| 440 | 440 |
| 441 ExtensionWebRequestEventRouter::EventResponse* response = NULL; | 441 ExtensionWebRequestEventRouter::EventResponse* response = NULL; |
| 442 | 442 |
| 443 // Extension response for the OnBeforeRequest handler. This should not be | 443 // Extension response for the OnBeforeRequest handler. This should not be |
| 444 // processed because request is canceled before the handler responds. | 444 // processed because request is canceled before the handler responds. |
| 445 response = new ExtensionWebRequestEventRouter::EventResponse( | 445 response = new ExtensionWebRequestEventRouter::EventResponse( |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 const std::string string_spec_no_post("blocking"); | 618 const std::string string_spec_no_post("blocking"); |
| 619 int extra_info_spec_empty = 0; | 619 int extra_info_spec_empty = 0; |
| 620 int extra_info_spec_body = 0; | 620 int extra_info_spec_body = 0; |
| 621 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 621 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
| 622 | 622 |
| 623 // Part 1. | 623 // Part 1. |
| 624 // Subscribe to OnBeforeRequest with requestBody requirement. | 624 // Subscribe to OnBeforeRequest with requestBody requirement. |
| 625 ASSERT_TRUE(GenerateInfoSpec(string_spec_post, &extra_info_spec_body)); | 625 ASSERT_TRUE(GenerateInfoSpec(string_spec_post, &extra_info_spec_body)); |
| 626 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 626 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 627 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", | 627 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", |
| 628 filter, extra_info_spec_body, -1, -1, ipc_sender_factory.GetWeakPtr()); | 628 filter, extra_info_spec_body, 0, 0, ipc_sender_factory.GetWeakPtr()); |
| 629 | 629 |
| 630 FireURLRequestWithData(kMethodPost, kMultipart, form_1, form_2); | 630 FireURLRequestWithData(kMethodPost, kMultipart, form_1, form_2); |
| 631 | 631 |
| 632 // We inspect the result in the message list of |ipc_sender_| later. | 632 // We inspect the result in the message list of |ipc_sender_| later. |
| 633 base::MessageLoop::current()->RunUntilIdle(); | 633 base::MessageLoop::current()->RunUntilIdle(); |
| 634 | 634 |
| 635 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( | 635 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( |
| 636 &profile_, extension_id, kEventName + "/1"); | 636 &profile_, extension_id, kEventName + "/1"); |
| 637 | 637 |
| 638 // Part 2. | 638 // Part 2. |
| 639 // Now subscribe to OnBeforeRequest *without* the requestBody requirement. | 639 // Now subscribe to OnBeforeRequest *without* the requestBody requirement. |
| 640 ASSERT_TRUE( | 640 ASSERT_TRUE( |
| 641 GenerateInfoSpec(string_spec_no_post, &extra_info_spec_empty)); | 641 GenerateInfoSpec(string_spec_no_post, &extra_info_spec_empty)); |
| 642 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 642 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 643 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", | 643 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", |
| 644 filter, extra_info_spec_empty, -1, -1, ipc_sender_factory.GetWeakPtr()); | 644 filter, extra_info_spec_empty, 0, 0, ipc_sender_factory.GetWeakPtr()); |
| 645 | 645 |
| 646 FireURLRequestWithData(kMethodPost, kMultipart, form_1, form_2); | 646 FireURLRequestWithData(kMethodPost, kMultipart, form_1, form_2); |
| 647 | 647 |
| 648 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( | 648 ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( |
| 649 &profile_, extension_id, kEventName + "/1"); | 649 &profile_, extension_id, kEventName + "/1"); |
| 650 | 650 |
| 651 // Subscribe to OnBeforeRequest with requestBody requirement. | 651 // Subscribe to OnBeforeRequest with requestBody requirement. |
| 652 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 652 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 653 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", | 653 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", |
| 654 filter, extra_info_spec_body, -1, -1, ipc_sender_factory.GetWeakPtr()); | 654 filter, extra_info_spec_body, 0, 0, ipc_sender_factory.GetWeakPtr()); |
| 655 | 655 |
| 656 // Part 3. | 656 // Part 3. |
| 657 // Now send a POST request with body which is not parseable as a form. | 657 // Now send a POST request with body which is not parseable as a form. |
| 658 FireURLRequestWithData(kMethodPost, NULL /*no header*/, plain_1, plain_2); | 658 FireURLRequestWithData(kMethodPost, NULL /*no header*/, plain_1, plain_2); |
| 659 | 659 |
| 660 // Part 4. | 660 // Part 4. |
| 661 // Now send a PUT request with the same body as above. | 661 // Now send a PUT request with the same body as above. |
| 662 FireURLRequestWithData(kMethodPut, NULL /*no header*/, plain_1, plain_2); | 662 FireURLRequestWithData(kMethodPut, NULL /*no header*/, plain_1, plain_2); |
| 663 | 663 |
| 664 base::MessageLoop::current()->RunUntilIdle(); | 664 base::MessageLoop::current()->RunUntilIdle(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 702 const std::string kEventName(web_request::OnBeforeRequest::kEventName); | 702 const std::string kEventName(web_request::OnBeforeRequest::kEventName); |
| 703 ExtensionWebRequestEventRouter::RequestFilter filter; | 703 ExtensionWebRequestEventRouter::RequestFilter filter; |
| 704 const std::string extension_id("1"); | 704 const std::string extension_id("1"); |
| 705 int extra_info_spec = 0; | 705 int extra_info_spec = 0; |
| 706 ASSERT_TRUE(GenerateInfoSpec("blocking,requestBody", &extra_info_spec)); | 706 ASSERT_TRUE(GenerateInfoSpec("blocking,requestBody", &extra_info_spec)); |
| 707 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 707 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
| 708 | 708 |
| 709 // Subscribe to OnBeforeRequest with requestBody requirement. | 709 // Subscribe to OnBeforeRequest with requestBody requirement. |
| 710 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 710 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 711 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", | 711 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", |
| 712 filter, extra_info_spec, -1, -1, ipc_sender_factory.GetWeakPtr()); | 712 filter, extra_info_spec, 0, 0, ipc_sender_factory.GetWeakPtr()); |
| 713 | 713 |
| 714 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme. | 714 // The request URL can be arbitrary but must have an HTTP or HTTPS scheme. |
| 715 const GURL request_url("http://www.example.com"); | 715 const GURL request_url("http://www.example.com"); |
| 716 | 716 |
| 717 for (size_t i = 0; i < arraysize(kMethods); ++i) { | 717 for (size_t i = 0; i < arraysize(kMethods); ++i) { |
| 718 scoped_ptr<net::URLRequest> request(context_->CreateRequest( | 718 scoped_ptr<net::URLRequest> request(context_->CreateRequest( |
| 719 request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); | 719 request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); |
| 720 request->set_method(kMethods[i]); | 720 request->set_method(kMethods[i]); |
| 721 ipc_sender_.PushTask(base::Bind(&base::DoNothing)); | 721 ipc_sender_.PushTask(base::Bind(&base::DoNothing)); |
| 722 request->Start(); | 722 request->Start(); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 814 std::string extension2_id("2"); | 814 std::string extension2_id("2"); |
| 815 std::string extension3_id("3"); | 815 std::string extension3_id("3"); |
| 816 ExtensionWebRequestEventRouter::RequestFilter filter; | 816 ExtensionWebRequestEventRouter::RequestFilter filter; |
| 817 const std::string kEventName(keys::kOnBeforeSendHeadersEvent); | 817 const std::string kEventName(keys::kOnBeforeSendHeadersEvent); |
| 818 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); | 818 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
| 819 | 819 |
| 820 // Install two extensions that can modify headers. Extension 2 has | 820 // Install two extensions that can modify headers. Extension 2 has |
| 821 // higher precedence than extension 1. | 821 // higher precedence than extension 1. |
| 822 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 822 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 823 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", | 823 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", |
| 824 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1, | 824 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, |
| 825 ipc_sender_factory.GetWeakPtr()); | 825 ipc_sender_factory.GetWeakPtr()); |
| 826 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 826 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 827 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", | 827 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", |
| 828 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, -1, -1, | 828 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0, |
| 829 ipc_sender_factory.GetWeakPtr()); | 829 ipc_sender_factory.GetWeakPtr()); |
| 830 | 830 |
| 831 // Install one extension that observes the final headers. | 831 // Install one extension that observes the final headers. |
| 832 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( | 832 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
| 833 &profile_, extension3_id, extension3_id, keys::kOnSendHeadersEvent, | 833 &profile_, extension3_id, extension3_id, keys::kOnSendHeadersEvent, |
| 834 std::string(keys::kOnSendHeadersEvent) + "/3", filter, | 834 std::string(keys::kOnSendHeadersEvent) + "/3", filter, |
| 835 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, -1, -1, | 835 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, 0, 0, |
| 836 ipc_sender_factory.GetWeakPtr()); | 836 ipc_sender_factory.GetWeakPtr()); |
| 837 | 837 |
| 838 GURL request_url("http://doesnotexist/does_not_exist.html"); | 838 GURL request_url("http://doesnotexist/does_not_exist.html"); |
| 839 scoped_ptr<net::URLRequest> request(context_->CreateRequest( | 839 scoped_ptr<net::URLRequest> request(context_->CreateRequest( |
| 840 request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); | 840 request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); |
| 841 | 841 |
| 842 // Initialize headers available before extensions are notified of the | 842 // Initialize headers available before extensions are notified of the |
| 843 // onBeforeSendHeaders event. | 843 // onBeforeSendHeaders event. |
| 844 HeaderModificationTest test = GetParam(); | 844 HeaderModificationTest test = GetParam(); |
| 845 net::HttpRequestHeaders before_headers; | 845 net::HttpRequestHeaders before_headers; |
| (...skipping 1380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2226 EXPECT_TRUE(credentials_set); | 2226 EXPECT_TRUE(credentials_set); |
| 2227 EXPECT_FALSE(auth3.Empty()); | 2227 EXPECT_FALSE(auth3.Empty()); |
| 2228 EXPECT_EQ(username, auth1.username()); | 2228 EXPECT_EQ(username, auth1.username()); |
| 2229 EXPECT_EQ(password, auth1.password()); | 2229 EXPECT_EQ(password, auth1.password()); |
| 2230 EXPECT_EQ(1u, warning_set.size()); | 2230 EXPECT_EQ(1u, warning_set.size()); |
| 2231 EXPECT_TRUE(HasWarning(warning_set, "extid2")); | 2231 EXPECT_TRUE(HasWarning(warning_set, "extid2")); |
| 2232 EXPECT_EQ(3u, capturing_net_log.GetSize()); | 2232 EXPECT_EQ(3u, capturing_net_log.GetSize()); |
| 2233 } | 2233 } |
| 2234 | 2234 |
| 2235 } // namespace extensions | 2235 } // namespace extensions |
| OLD | NEW |