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

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

Issue 10299002: Stop refcounting URLRequestContext. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Initialize to NULL Created 8 years, 7 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 | 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 <queue> 5 #include <queue>
6 #include <map> 6 #include <map>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 io_thread_(content::BrowserThread::IO, &message_loop_) {} 120 io_thread_(content::BrowserThread::IO, &message_loop_) {}
121 121
122 protected: 122 protected:
123 virtual void SetUp() OVERRIDE { 123 virtual void SetUp() OVERRIDE {
124 event_router_ = new ExtensionEventRouterForwarder(); 124 event_router_ = new ExtensionEventRouterForwarder();
125 enable_referrers_.Init( 125 enable_referrers_.Init(
126 prefs::kEnableReferrers, profile_.GetTestingPrefService(), NULL); 126 prefs::kEnableReferrers, profile_.GetTestingPrefService(), NULL);
127 network_delegate_.reset(new ChromeNetworkDelegate( 127 network_delegate_.reset(new ChromeNetworkDelegate(
128 event_router_.get(), NULL, NULL, &profile_, 128 event_router_.get(), NULL, NULL, &profile_,
129 CookieSettings::Factory::GetForProfile(&profile_), &enable_referrers_)); 129 CookieSettings::Factory::GetForProfile(&profile_), &enable_referrers_));
130 context_ = new TestURLRequestContext(); 130 context_.reset(new TestURLRequestContext());
131 context_->set_network_delegate(network_delegate_.get()); 131 context_->set_network_delegate(network_delegate_.get());
132 } 132 }
133 133
134 MessageLoopForIO message_loop_; 134 MessageLoopForIO message_loop_;
135 content::TestBrowserThread ui_thread_; 135 content::TestBrowserThread ui_thread_;
136 content::TestBrowserThread io_thread_; 136 content::TestBrowserThread io_thread_;
137 TestingProfile profile_; 137 TestingProfile profile_;
138 TestDelegate delegate_; 138 TestDelegate delegate_;
139 BooleanPrefMember enable_referrers_; 139 BooleanPrefMember enable_referrers_;
140 TestIPCSender ipc_sender_; 140 TestIPCSender ipc_sender_;
141 scoped_refptr<ExtensionEventRouterForwarder> event_router_; 141 scoped_refptr<ExtensionEventRouterForwarder> event_router_;
142 scoped_refptr<ExtensionInfoMap> extension_info_map_; 142 scoped_refptr<ExtensionInfoMap> extension_info_map_;
143 scoped_ptr<ChromeNetworkDelegate> network_delegate_; 143 scoped_ptr<ChromeNetworkDelegate> network_delegate_;
144 scoped_refptr<TestURLRequestContext> context_; 144 scoped_ptr<TestURLRequestContext> context_;
145 }; 145 };
146 146
147 // Tests that we handle disagreements among extensions about responses to 147 // Tests that we handle disagreements among extensions about responses to
148 // blocking events (redirection) by choosing the response from the 148 // blocking events (redirection) by choosing the response from the
149 // most-recently-installed extension. 149 // most-recently-installed extension.
150 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { 150 TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
151 std::string extension1_id("1"); 151 std::string extension1_id("1");
152 std::string extension2_id("2"); 152 std::string extension2_id("2");
153 ExtensionWebRequestEventRouter::RequestFilter filter; 153 ExtensionWebRequestEventRouter::RequestFilter filter;
154 const std::string kEventName(keys::kOnBeforeRequest); 154 const std::string kEventName(keys::kOnBeforeRequest);
155 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); 155 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
156 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 156 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
157 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", 157 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1",
158 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 158 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING,
159 ipc_sender_factory.GetWeakPtr()); 159 ipc_sender_factory.GetWeakPtr());
160 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 160 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
161 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", 161 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2",
162 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 162 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING,
163 ipc_sender_factory.GetWeakPtr()); 163 ipc_sender_factory.GetWeakPtr());
164 164
165 GURL redirect_url("about:redirected"); 165 GURL redirect_url("about:redirected");
166 GURL not_chosen_redirect_url("about:not_chosen"); 166 GURL not_chosen_redirect_url("about:not_chosen");
167 167
168 net::URLRequest request(GURL("about:blank"), &delegate_); 168 net::URLRequest request(GURL("about:blank"), &delegate_);
169 request.set_context(context_); 169 request.set_context(context_.get());
170 { 170 {
171 // onBeforeRequest will be dispatched twice initially. The second response - 171 // onBeforeRequest will be dispatched twice initially. The second response -
172 // the redirect - should win, since it has a later |install_time|. The 172 // the redirect - should win, since it has a later |install_time|. The
173 // redirect will dispatch another pair of onBeforeRequest. There, the first 173 // redirect will dispatch another pair of onBeforeRequest. There, the first
174 // response should win (later |install_time|). 174 // response should win (later |install_time|).
175 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 175 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
176 176
177 // Extension1 response. Arrives first, but ignored due to install_time. 177 // Extension1 response. Arrives first, but ignored due to install_time.
178 response = new ExtensionWebRequestEventRouter::EventResponse( 178 response = new ExtensionWebRequestEventRouter::EventResponse(
179 extension1_id, base::Time::FromDoubleT(1)); 179 extension1_id, base::Time::FromDoubleT(1));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 EXPECT_TRUE(!request.is_pending()); 214 EXPECT_TRUE(!request.is_pending());
215 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); 215 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status());
216 EXPECT_EQ(0, request.status().error()); 216 EXPECT_EQ(0, request.status().error());
217 EXPECT_EQ(redirect_url, request.url()); 217 EXPECT_EQ(redirect_url, request.url());
218 EXPECT_EQ(2U, request.url_chain().size()); 218 EXPECT_EQ(2U, request.url_chain().size());
219 EXPECT_EQ(0U, ipc_sender_.GetNumTasks()); 219 EXPECT_EQ(0U, ipc_sender_.GetNumTasks());
220 } 220 }
221 221
222 // Now test the same thing but the extensions answer in reverse order. 222 // Now test the same thing but the extensions answer in reverse order.
223 net::URLRequest request2(GURL("about:blank"), &delegate_); 223 net::URLRequest request2(GURL("about:blank"), &delegate_);
224 request2.set_context(context_); 224 request2.set_context(context_.get());
225 { 225 {
226 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 226 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
227 227
228 // Extension2 response. Arrives first, and chosen because of install_time. 228 // Extension2 response. Arrives first, and chosen because of install_time.
229 response = new ExtensionWebRequestEventRouter::EventResponse( 229 response = new ExtensionWebRequestEventRouter::EventResponse(
230 extension2_id, base::Time::FromDoubleT(2)); 230 extension2_id, base::Time::FromDoubleT(2));
231 response->new_url = redirect_url; 231 response->new_url = redirect_url;
232 ipc_sender_.PushTask( 232 ipc_sender_.PushTask(
233 base::Bind(&EventHandledOnIOThread, 233 base::Bind(&EventHandledOnIOThread,
234 &profile_, extension2_id, kEventName, kEventName + "/2", 234 &profile_, extension2_id, kEventName, kEventName + "/2",
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1", 288 &profile_, extension1_id, extension1_id, kEventName, kEventName + "/1",
289 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 289 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING,
290 ipc_sender_factory.GetWeakPtr()); 290 ipc_sender_factory.GetWeakPtr());
291 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 291 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
292 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2", 292 &profile_, extension2_id, extension2_id, kEventName, kEventName + "/2",
293 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 293 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING,
294 ipc_sender_factory.GetWeakPtr()); 294 ipc_sender_factory.GetWeakPtr());
295 295
296 GURL request_url("about:blank"); 296 GURL request_url("about:blank");
297 net::URLRequest request(request_url, &delegate_); 297 net::URLRequest request(request_url, &delegate_);
298 request.set_context(context_); 298 request.set_context(context_.get());
299 299
300 // onBeforeRequest will be dispatched twice. The second response - 300 // onBeforeRequest will be dispatched twice. The second response -
301 // the redirect - would win, since it has a later |install_time|, but 301 // the redirect - would win, since it has a later |install_time|, but
302 // the first response takes precedence because cancel >> redirect. 302 // the first response takes precedence because cancel >> redirect.
303 GURL redirect_url("about:redirected"); 303 GURL redirect_url("about:redirected");
304 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 304 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
305 305
306 // Extension1 response. Arrives first, would be ignored in principle due to 306 // Extension1 response. Arrives first, would be ignored in principle due to
307 // install_time but "cancel" always wins. 307 // install_time but "cancel" always wins.
308 response = new ExtensionWebRequestEventRouter::EventResponse( 308 response = new ExtensionWebRequestEventRouter::EventResponse(
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 356 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
357 &profile_, extension_id, extension_id, kEventName, kEventName + "/1", 357 &profile_, extension_id, extension_id, kEventName, kEventName + "/1",
358 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 358 filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING,
359 ipc_sender_factory.GetWeakPtr()); 359 ipc_sender_factory.GetWeakPtr());
360 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 360 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
361 &profile_, extension_id, extension_id, kEventName2, kEventName2 + "/1", 361 &profile_, extension_id, extension_id, kEventName2, kEventName2 + "/1",
362 filter, 0, ipc_sender_factory.GetWeakPtr()); 362 filter, 0, ipc_sender_factory.GetWeakPtr());
363 363
364 GURL request_url("about:blank"); 364 GURL request_url("about:blank");
365 net::URLRequest request(request_url, &delegate_); 365 net::URLRequest request(request_url, &delegate_);
366 request.set_context(context_); 366 request.set_context(context_.get());
367 367
368 ExtensionWebRequestEventRouter::EventResponse* response = NULL; 368 ExtensionWebRequestEventRouter::EventResponse* response = NULL;
369 369
370 // Extension response for the OnBeforeRequest handler. This should not be 370 // Extension response for the OnBeforeRequest handler. This should not be
371 // processed because request is canceled before the handler responds. 371 // processed because request is canceled before the handler responds.
372 response = new ExtensionWebRequestEventRouter::EventResponse( 372 response = new ExtensionWebRequestEventRouter::EventResponse(
373 extension_id, base::Time::FromDoubleT(1)); 373 extension_id, base::Time::FromDoubleT(1));
374 GURL redirect_url("about:redirected"); 374 GURL redirect_url("about:redirected");
375 response->new_url = redirect_url; 375 response->new_url = redirect_url;
376 ipc_sender_.PushTask( 376 ipc_sender_.PushTask(
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 io_thread_(content::BrowserThread::IO, &message_loop_) {} 437 io_thread_(content::BrowserThread::IO, &message_loop_) {}
438 438
439 protected: 439 protected:
440 virtual void SetUp() { 440 virtual void SetUp() {
441 event_router_ = new ExtensionEventRouterForwarder(); 441 event_router_ = new ExtensionEventRouterForwarder();
442 enable_referrers_.Init( 442 enable_referrers_.Init(
443 prefs::kEnableReferrers, profile_.GetTestingPrefService(), NULL); 443 prefs::kEnableReferrers, profile_.GetTestingPrefService(), NULL);
444 network_delegate_.reset(new ChromeNetworkDelegate( 444 network_delegate_.reset(new ChromeNetworkDelegate(
445 event_router_.get(), NULL, NULL, &profile_, 445 event_router_.get(), NULL, NULL, &profile_,
446 CookieSettings::Factory::GetForProfile(&profile_), &enable_referrers_)); 446 CookieSettings::Factory::GetForProfile(&profile_), &enable_referrers_));
447 context_ = new TestURLRequestContext(); 447 context_.reset(new TestURLRequestContext());
448 context_->set_network_delegate(network_delegate_.get()); 448 context_->set_network_delegate(network_delegate_.get());
449 } 449 }
450 450
451 MessageLoopForIO message_loop_; 451 MessageLoopForIO message_loop_;
452 content::TestBrowserThread ui_thread_; 452 content::TestBrowserThread ui_thread_;
453 content::TestBrowserThread io_thread_; 453 content::TestBrowserThread io_thread_;
454 TestingProfile profile_; 454 TestingProfile profile_;
455 TestDelegate delegate_; 455 TestDelegate delegate_;
456 BooleanPrefMember enable_referrers_; 456 BooleanPrefMember enable_referrers_;
457 TestIPCSender ipc_sender_; 457 TestIPCSender ipc_sender_;
458 scoped_refptr<ExtensionEventRouterForwarder> event_router_; 458 scoped_refptr<ExtensionEventRouterForwarder> event_router_;
459 scoped_refptr<ExtensionInfoMap> extension_info_map_; 459 scoped_refptr<ExtensionInfoMap> extension_info_map_;
460 scoped_ptr<ChromeNetworkDelegate> network_delegate_; 460 scoped_ptr<ChromeNetworkDelegate> network_delegate_;
461 scoped_refptr<TestURLRequestContext> context_; 461 scoped_ptr<TestURLRequestContext> context_;
462 }; 462 };
463 463
464 TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) { 464 TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) {
465 std::string extension1_id("1"); 465 std::string extension1_id("1");
466 std::string extension2_id("2"); 466 std::string extension2_id("2");
467 std::string extension3_id("3"); 467 std::string extension3_id("3");
468 ExtensionWebRequestEventRouter::RequestFilter filter; 468 ExtensionWebRequestEventRouter::RequestFilter filter;
469 const std::string kEventName(keys::kOnBeforeSendHeaders); 469 const std::string kEventName(keys::kOnBeforeSendHeaders);
470 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); 470 base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
471 471
(...skipping 10 matching lines...) Expand all
482 482
483 // Install one extension that observes the final headers. 483 // Install one extension that observes the final headers.
484 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( 484 ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
485 &profile_, extension3_id, extension3_id, keys::kOnSendHeaders, 485 &profile_, extension3_id, extension3_id, keys::kOnSendHeaders,
486 std::string(keys::kOnSendHeaders) + "/3", filter, 486 std::string(keys::kOnSendHeaders) + "/3", filter,
487 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, 487 ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS,
488 ipc_sender_factory.GetWeakPtr()); 488 ipc_sender_factory.GetWeakPtr());
489 489
490 GURL request_url("http://doesnotexist/does_not_exist.html"); 490 GURL request_url("http://doesnotexist/does_not_exist.html");
491 net::URLRequest request(request_url, &delegate_); 491 net::URLRequest request(request_url, &delegate_);
492 request.set_context(context_); 492 request.set_context(context_.get());
493 493
494 // Initialize headers available before extensions are notified of the 494 // Initialize headers available before extensions are notified of the
495 // onBeforeSendHeaders event. 495 // onBeforeSendHeaders event.
496 HeaderModificationTest test = GetParam(); 496 HeaderModificationTest test = GetParam();
497 net::HttpRequestHeaders before_headers; 497 net::HttpRequestHeaders before_headers;
498 for (int i = 0; i < test.before_size; ++i) 498 for (int i = 0; i < test.before_size; ++i)
499 before_headers.SetHeader(test.before[i].name, test.before[i].value); 499 before_headers.SetHeader(test.before[i].name, test.before[i].value);
500 request.SetExtraRequestHeaders(before_headers); 500 request.SetExtraRequestHeaders(before_headers);
501 501
502 // Gather the modifications to the headers for the respective extensions. 502 // Gather the modifications to the headers for the respective extensions.
(...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after
1500 }; 1500 };
1501 for (size_t i = 0; i < arraysize(sensitive_urls); ++i) { 1501 for (size_t i = 0; i < arraysize(sensitive_urls); ++i) {
1502 EXPECT_TRUE(helpers::HideRequestForURL(GURL(sensitive_urls[i]))) 1502 EXPECT_TRUE(helpers::HideRequestForURL(GURL(sensitive_urls[i])))
1503 << sensitive_urls[i]; 1503 << sensitive_urls[i];
1504 } 1504 }
1505 for (size_t i = 0; i < arraysize(non_sensitive_urls); ++i) { 1505 for (size_t i = 0; i < arraysize(non_sensitive_urls); ++i) {
1506 EXPECT_FALSE(helpers::HideRequestForURL(GURL(non_sensitive_urls[i]))) 1506 EXPECT_FALSE(helpers::HideRequestForURL(GURL(non_sensitive_urls[i])))
1507 << non_sensitive_urls[i]; 1507 << non_sensitive_urls[i];
1508 } 1508 }
1509 } 1509 }
OLDNEW
« no previous file with comments | « chrome/browser/browsing_data_server_bound_cert_helper_unittest.cc ('k') | chrome/browser/io_thread.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698