summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authormkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-10 12:23:21 +0000
committermkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-10 12:23:21 +0000
commitc26bdaef7b70bcc44e4f5c99cabe4efd0bf7f8a6 (patch)
tree1cf042d6f7831bf372fc952add64285f3cc71607 /content
parent01947b2d19beafe778fda4ee7cdfbb24085f716d (diff)
downloadchromium_src-c26bdaef7b70bcc44e4f5c99cabe4efd0bf7f8a6.zip
chromium_src-c26bdaef7b70bcc44e4f5c99cabe4efd0bf7f8a6.tar.gz
chromium_src-c26bdaef7b70bcc44e4f5c99cabe4efd0bf7f8a6.tar.bz2
Return a specific error code for unknown URL schemes.
The ERR_ABORTED error code is very general and for this particular case we already have a corresponding net:: error case. Review URL: http://codereview.chromium.org/8117003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104712 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host.cc3
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host_unittest.cc33
2 files changed, 35 insertions, 1 deletions
diff --git a/content/browser/renderer_host/resource_dispatcher_host.cc b/content/browser/renderer_host/resource_dispatcher_host.cc
index ba94ab2..aed73ab 100644
--- a/content/browser/renderer_host/resource_dispatcher_host.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host.cc
@@ -388,7 +388,8 @@ bool ResourceDispatcherHost::HandleExternalProtocol(
handler->OnResponseCompleted(
request_id,
- net::URLRequestStatus(net::URLRequestStatus::FAILED, net::ERR_ABORTED),
+ net::URLRequestStatus(net::URLRequestStatus::FAILED,
+ net::ERR_UNKNOWN_URL_SCHEME),
std::string()); // No security info necessary.
return true;
}
diff --git a/content/browser/renderer_host/resource_dispatcher_host_unittest.cc b/content/browser/renderer_host/resource_dispatcher_host_unittest.cc
index c4c35c6..e65506a 100644
--- a/content/browser/renderer_host/resource_dispatcher_host_unittest.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host_unittest.cc
@@ -1222,3 +1222,36 @@ TEST_F(ResourceDispatcherHostTest, CancelRequestsForContext) {
host_.CancelRequestsForContext(&filter_->resource_context());
EXPECT_EQ(0, host_.pending_requests());
}
+
+TEST_F(ResourceDispatcherHostTest, UnknownURLScheme) {
+ EXPECT_EQ(0, host_.pending_requests());
+
+ SetResourceType(ResourceType::MAIN_FRAME);
+ HandleScheme("http");
+
+ MakeTestRequest(0, 1, GURL("foo://bar"));
+
+ // Flush all pending requests.
+ while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
+
+ // Sorts out all the messages we saw by request.
+ ResourceIPCAccumulator::ClassifiedMessages msgs;
+ accum_.GetClassifiedMessages(&msgs);
+
+ // We should have gotten one RequestComplete message.
+ ASSERT_EQ(1U, msgs[0].size());
+ EXPECT_EQ(ResourceMsg_RequestComplete::ID, msgs[0][0].type());
+
+ // The RequestComplete message should have had status
+ // (FAILED, ERR_UNKNOWN_URL_SCHEME).
+ int request_id;
+ net::URLRequestStatus status;
+
+ void* iter = NULL;
+ EXPECT_TRUE(IPC::ReadParam(&msgs[0][0], &iter, &request_id));
+ EXPECT_TRUE(IPC::ReadParam(&msgs[0][0], &iter, &status));
+
+ EXPECT_EQ(1, request_id);
+ EXPECT_EQ(net::URLRequestStatus::FAILED, status.status());
+ EXPECT_EQ(net::ERR_UNKNOWN_URL_SCHEME, status.error());
+}