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

Unified Diff: chrome/browser/extensions/api/web_request/web_request_api_unittest.cc

Issue 407093011: Allow URLRequests from one context to have different NetworkDelegates. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix new tests Created 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
diff --git a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
index 661b880094a32bf919b0daeb6865b198e2da45c5..fb1d05f3ed312894d46270b30c0446c720784243 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
@@ -11,6 +11,7 @@
#include "base/files/file_path.h"
#include "base/json/json_reader.h"
#include "base/json/json_string_value_serializer.h"
+#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/message_loop/message_loop.h"
#include "base/path_service.h"
@@ -238,8 +239,8 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
GURL redirect_url("about:redirected");
GURL not_chosen_redirect_url("about:not_chosen");
- net::URLRequest request(
- GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_, context_.get());
+ scoped_ptr<net::URLRequest> request(context_->CreateRequest(
+ GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_, NULL));
{
// onBeforeRequest will be dispatched twice initially. The second response -
// the redirect - should win, since it has a later |install_time|. The
@@ -254,7 +255,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension1_id, kEventName, kEventName + "/1",
- request.identifier(), response));
+ request->identifier(), response));
// Extension2 response. Arrives second, and chosen because of install_time.
response = new ExtensionWebRequestEventRouter::EventResponse(
@@ -263,7 +264,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension2_id, kEventName, kEventName + "/2",
- request.identifier(), response));
+ request->identifier(), response));
// Extension2 response to the redirected URL. Arrives first, and chosen.
response = new ExtensionWebRequestEventRouter::EventResponse(
@@ -271,7 +272,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension2_id, kEventName, kEventName + "/2",
- request.identifier(), response));
+ request->identifier(), response));
// Extension1 response to the redirected URL. Arrives second, and ignored.
response = new ExtensionWebRequestEventRouter::EventResponse(
@@ -279,22 +280,22 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension1_id, kEventName, kEventName + "/1",
- request.identifier(), response));
+ request->identifier(), response));
- request.Start();
+ request->Start();
base::MessageLoop::current()->Run();
- EXPECT_TRUE(!request.is_pending());
- EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status());
- EXPECT_EQ(0, request.status().error());
- EXPECT_EQ(redirect_url, request.url());
- EXPECT_EQ(2U, request.url_chain().size());
+ EXPECT_TRUE(!request->is_pending());
+ EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status());
+ EXPECT_EQ(0, request->status().error());
+ EXPECT_EQ(redirect_url, request->url());
+ EXPECT_EQ(2U, request->url_chain().size());
EXPECT_EQ(0U, ipc_sender_.GetNumTasks());
}
// Now test the same thing but the extensions answer in reverse order.
- net::URLRequest request2(
- GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_, context_.get());
+ scoped_ptr<net::URLRequest> request2(context_->CreateRequest(
+ GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_, NULL));
{
ExtensionWebRequestEventRouter::EventResponse* response = NULL;
@@ -305,7 +306,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension2_id, kEventName, kEventName + "/2",
- request2.identifier(), response));
+ request2->identifier(), response));
// Extension1 response. Arrives second, but ignored due to install_time.
response = new ExtensionWebRequestEventRouter::EventResponse(
@@ -314,7 +315,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension1_id, kEventName, kEventName + "/1",
- request2.identifier(), response));
+ request2->identifier(), response));
// Extension2 response to the redirected URL. Arrives first, and chosen.
response = new ExtensionWebRequestEventRouter::EventResponse(
@@ -322,7 +323,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension2_id, kEventName, kEventName + "/2",
- request2.identifier(), response));
+ request2->identifier(), response));
// Extension1 response to the redirected URL. Arrives second, and ignored.
response = new ExtensionWebRequestEventRouter::EventResponse(
@@ -330,16 +331,16 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension1_id, kEventName, kEventName + "/1",
- request2.identifier(), response));
+ request2->identifier(), response));
- request2.Start();
+ request2->Start();
base::MessageLoop::current()->Run();
- EXPECT_TRUE(!request2.is_pending());
- EXPECT_EQ(net::URLRequestStatus::SUCCESS, request2.status().status());
- EXPECT_EQ(0, request2.status().error());
- EXPECT_EQ(redirect_url, request2.url());
- EXPECT_EQ(2U, request2.url_chain().size());
+ EXPECT_TRUE(!request2->is_pending());
+ EXPECT_EQ(net::URLRequestStatus::SUCCESS, request2->status().status());
+ EXPECT_EQ(0, request2->status().error());
+ EXPECT_EQ(redirect_url, request2->url());
+ EXPECT_EQ(2U, request2->url_chain().size());
EXPECT_EQ(0U, ipc_sender_.GetNumTasks());
}
@@ -367,8 +368,8 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) {
ipc_sender_factory.GetWeakPtr());
GURL request_url("about:blank");
- net::URLRequest request(
- request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get());
+ scoped_ptr<net::URLRequest> request(context_->CreateRequest(
+ request_url, net::DEFAULT_PRIORITY, &delegate_, NULL));
// onBeforeRequest will be dispatched twice. The second response -
// the redirect - would win, since it has a later |install_time|, but
@@ -384,7 +385,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension1_id, kEventName, kEventName + "/1",
- request.identifier(), response));
+ request->identifier(), response));
// Extension2 response. Arrives second, but has higher precedence
// due to its later install_time.
@@ -394,17 +395,17 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension2_id, kEventName, kEventName + "/2",
- request.identifier(), response));
+ request->identifier(), response));
- request.Start();
+ request->Start();
base::MessageLoop::current()->Run();
- EXPECT_TRUE(!request.is_pending());
- EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status());
- EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, request.status().error());
- EXPECT_EQ(request_url, request.url());
- EXPECT_EQ(1U, request.url_chain().size());
+ EXPECT_TRUE(!request->is_pending());
+ EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
+ EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, request->status().error());
+ EXPECT_EQ(request_url, request->url());
+ EXPECT_EQ(1U, request->url_chain().size());
EXPECT_EQ(0U, ipc_sender_.GetNumTasks());
ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener(
@@ -435,8 +436,8 @@ TEST_F(ExtensionWebRequestTest, SimulateChancelWhileBlocked) {
filter, 0, -1, -1, ipc_sender_factory.GetWeakPtr());
GURL request_url("about:blank");
- net::URLRequest request(
- request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get());
+ scoped_ptr<net::URLRequest> request(context_->CreateRequest(
+ request_url, net::DEFAULT_PRIORITY, &delegate_, NULL));
ExtensionWebRequestEventRouter::EventResponse* response = NULL;
@@ -449,7 +450,7 @@ TEST_F(ExtensionWebRequestTest, SimulateChancelWhileBlocked) {
ipc_sender_.PushTask(
base::Bind(&EventHandledOnIOThread,
&profile_, extension_id, kEventName, kEventName + "/1",
- request.identifier(), response));
+ request->identifier(), response));
// Extension response for OnErrorOccurred: Terminate the message loop.
ipc_sender_.PushTask(
@@ -457,16 +458,16 @@ TEST_F(ExtensionWebRequestTest, SimulateChancelWhileBlocked) {
base::Unretained(base::MessageLoop::current()),
FROM_HERE, base::MessageLoop::QuitClosure()));
- request.Start();
- // request.Start() will have submitted OnBeforeRequest by the time we cancel.
- request.Cancel();
+ request->Start();
+ // request->Start() will have submitted OnBeforeRequest by the time we cancel.
+ request->Cancel();
base::MessageLoop::current()->Run();
- EXPECT_TRUE(!request.is_pending());
- EXPECT_EQ(net::URLRequestStatus::CANCELED, request.status().status());
- EXPECT_EQ(net::ERR_ABORTED, request.status().error());
- EXPECT_EQ(request_url, request.url());
- EXPECT_EQ(1U, request.url_chain().size());
+ EXPECT_TRUE(!request->is_pending());
+ EXPECT_EQ(net::URLRequestStatus::CANCELED, request->status().status());
+ EXPECT_EQ(net::ERR_ABORTED, request->status().error());
+ EXPECT_EQ(request_url, request->url());
+ EXPECT_EQ(1U, request->url_chain().size());
EXPECT_EQ(0U, ipc_sender_.GetNumTasks());
ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener(
@@ -499,13 +500,14 @@ void ExtensionWebRequestTest::FireURLRequestWithData(
const std::vector<char>& bytes_2) {
// The request URL can be arbitrary but must have an HTTP or HTTPS scheme.
GURL request_url("http://www.example.com");
- net::URLRequest request(
- request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get());
- request.set_method(method);
- if (content_type != NULL)
- request.SetExtraRequestHeaderByName(net::HttpRequestHeaders::kContentType,
- content_type,
- true /* overwrite */);
+ scoped_ptr<net::URLRequest> request(context_->CreateRequest(
+ request_url, net::DEFAULT_PRIORITY, &delegate_, NULL));
+ request->set_method(method);
+ if (content_type != NULL) {
+ request->SetExtraRequestHeaderByName(net::HttpRequestHeaders::kContentType,
+ content_type,
+ true /* overwrite */);
+ }
ScopedVector<net::UploadElementReader> element_readers;
element_readers.push_back(new net::UploadBytesElementReader(
&(bytes_1[0]), bytes_1.size()));
@@ -517,10 +519,10 @@ void ExtensionWebRequestTest::FireURLRequestWithData(
base::Time()));
element_readers.push_back(
new net::UploadBytesElementReader(&(bytes_2[0]), bytes_2.size()));
- request.set_upload(make_scoped_ptr(
+ request->set_upload(make_scoped_ptr(
new net::UploadDataStream(element_readers.Pass(), 0)));
ipc_sender_.PushTask(base::Bind(&base::DoNothing));
- request.Start();
+ request->Start();
}
TEST_F(ExtensionWebRequestTest, AccessRequestBodyData) {
@@ -713,11 +715,11 @@ TEST_F(ExtensionWebRequestTest, NoAccessRequestBodyData) {
const GURL request_url("http://www.example.com");
for (size_t i = 0; i < arraysize(kMethods); ++i) {
- net::URLRequest request(
- request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get());
- request.set_method(kMethods[i]);
+ scoped_ptr<net::URLRequest> request(context_->CreateRequest(
+ request_url, net::DEFAULT_PRIORITY, &delegate_, NULL));
+ request->set_method(kMethods[i]);
ipc_sender_.PushTask(base::Bind(&base::DoNothing));
- request.Start();
+ request->Start();
}
// We inspect the result in the message list of |ipc_sender_| later.
@@ -833,8 +835,8 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) {
ipc_sender_factory.GetWeakPtr());
GURL request_url("http://doesnotexist/does_not_exist.html");
- net::URLRequest request(
- request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get());
+ scoped_ptr<net::URLRequest> request(context_->CreateRequest(
+ request_url, net::DEFAULT_PRIORITY, &delegate_, NULL));
// Initialize headers available before extensions are notified of the
// onBeforeSendHeaders event.
@@ -842,7 +844,7 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) {
net::HttpRequestHeaders before_headers;
for (int i = 0; i < test.before_size; ++i)
before_headers.SetHeader(test.before[i].name, test.before[i].value);
- request.SetExtraRequestHeaders(before_headers);
+ request->SetExtraRequestHeaders(before_headers);
// Gather the modifications to the headers for the respective extensions.
// We assume here that all modifications of one extension are listed
@@ -855,7 +857,7 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) {
mod.extension_id == 1 ? extension1_id : extension2_id,
base::Time::FromDoubleT(mod.extension_id));
response->request_headers.reset(new net::HttpRequestHeaders());
- response->request_headers->MergeFrom(request.extra_request_headers());
+ response->request_headers->MergeFrom(request->extra_request_headers());
}
switch (mod.type) {
@@ -875,7 +877,7 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) {
base::Bind(&EventHandledOnIOThread,
&profile_, mod.extension_id == 1 ? extension1_id : extension2_id,
kEventName, kEventName + (mod.extension_id == 1 ? "/1" : "/2"),
- request.identifier(), response));
+ request->identifier(), response));
response = NULL;
}
}
@@ -884,19 +886,19 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) {
ipc_sender_.PushTask(base::Bind(&base::DoNothing));
// Note that we mess up the headers slightly:
- // request.Start() will first add additional headers (e.g. the User-Agent)
+ // request->Start() will first add additional headers (e.g. the User-Agent)
// and then send an event to the extension. When we have prepared our
// answers to the onBeforeSendHeaders events above, these headers did not
// exists and are therefore not listed in the responses. This makes
// them seem deleted.
- request.Start();
+ request->Start();
base::MessageLoop::current()->Run();
- EXPECT_TRUE(!request.is_pending());
+ EXPECT_TRUE(!request->is_pending());
// This cannot succeed as we send the request to a server that does not exist.
- EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status());
- EXPECT_EQ(request_url, request.url());
- EXPECT_EQ(1U, request.url_chain().size());
+ EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
+ EXPECT_EQ(request_url, request->url());
+ EXPECT_EQ(1U, request->url_chain().size());
EXPECT_EQ(0U, ipc_sender_.GetNumTasks());
// Calculate the expected headers.

Powered by Google App Engine
This is Rietveld 408576698