diff options
author | mkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-10 12:23:21 +0000 |
---|---|---|
committer | mkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-10 12:23:21 +0000 |
commit | c26bdaef7b70bcc44e4f5c99cabe4efd0bf7f8a6 (patch) | |
tree | 1cf042d6f7831bf372fc952add64285f3cc71607 /content | |
parent | 01947b2d19beafe778fda4ee7cdfbb24085f716d (diff) | |
download | chromium_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.cc | 3 | ||||
-rw-r--r-- | content/browser/renderer_host/resource_dispatcher_host_unittest.cc | 33 |
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()); +} |