summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavidben <davidben@chromium.org>2015-06-03 09:24:02 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-03 16:24:25 +0000
commite7938cf52a9aeb936c1cb005faaafb9f2b16cd4f (patch)
tree9a335575ded0d38750b3052363e5aedebf4bbdb2
parentbaa70976bf3b485195a4b3801f2ab1d331f35ef3 (diff)
downloadchromium_src-e7938cf52a9aeb936c1cb005faaafb9f2b16cd4f.zip
chromium_src-e7938cf52a9aeb936c1cb005faaafb9f2b16cd4f.tar.gz
chromium_src-e7938cf52a9aeb936c1cb005faaafb9f2b16cd4f.tar.bz2
Remove URLRequestStatus mutators and introduce FromError.
As the first step to folding URLRequestStatus into net errors, remove mutators so callers are required to specify status and error together. Also add a FromError function which sets the status field automatically. BUG=490309 Review URL: https://codereview.chromium.org/1164823002 Cr-Commit-Position: refs/heads/master@{#332625}
-rw-r--r--chrome/browser/autofill/autofill_interactive_uitest.cc8
-rw-r--r--chrome/browser/translate/translate_browsertest.cc4
-rw-r--r--chrome/browser/translate/translate_manager_render_view_host_unittest.cc14
-rw-r--r--components/domain_reliability/monitor_unittest.cc21
-rw-r--r--components/domain_reliability/uploader_unittest.cc4
-rw-r--r--content/browser/loader/redirect_to_file_resource_handler.cc4
-rw-r--r--content/browser/speech/google_one_shot_remote_engine_unittest.cc7
-rw-r--r--content/browser/speech/speech_recognizer_impl_unittest.cc14
-rw-r--r--content/test/mock_google_streaming_server.cc7
-rw-r--r--net/net.gypi1
-rw-r--r--net/url_request/url_fetcher_core.cc3
-rw-r--r--net/url_request/url_request.cc3
-rw-r--r--net/url_request/url_request_status.cc23
-rw-r--r--net/url_request/url_request_status.h22
14 files changed, 74 insertions, 61 deletions
diff --git a/chrome/browser/autofill/autofill_interactive_uitest.cc b/chrome/browser/autofill/autofill_interactive_uitest.cc
index 9aa9017..400c02d 100644
--- a/chrome/browser/autofill/autofill_interactive_uitest.cc
+++ b/chrome/browser/autofill/autofill_interactive_uitest.cc
@@ -46,7 +46,9 @@
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_renderer_host.h"
+#include "net/base/net_errors.h"
#include "net/url_request/test_url_fetcher_factory.h"
+#include "net/url_request/url_request_status.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/events/keycodes/keyboard_codes.h"
@@ -221,9 +223,7 @@ class AutofillInteractiveTest : public InProcessBrowserTest {
void SimulateURLFetch(bool success) {
net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
- net::URLRequestStatus status;
- status.set_status(success ? net::URLRequestStatus::SUCCESS :
- net::URLRequestStatus::FAILED);
+ net::Error error = success ? net::OK : net::ERR_FAILED;
std::string script = " var google = {};"
"google.translate = (function() {"
@@ -253,7 +253,7 @@ class AutofillInteractiveTest : public InProcessBrowserTest {
"cr.googleTranslate.onTranslateElementLoad();";
fetcher->set_url(fetcher->GetOriginalURL());
- fetcher->set_status(status);
+ fetcher->set_status(net::URLRequestStatus::FromError(error));
fetcher->set_response_code(success ? 200 : 500);
fetcher->SetResponseString(script);
fetcher->delegate()->OnURLFetchComplete(fetcher);
diff --git a/chrome/browser/translate/translate_browsertest.cc b/chrome/browser/translate/translate_browsertest.cc
index 16860e7..70c49f3 100644
--- a/chrome/browser/translate/translate_browsertest.cc
+++ b/chrome/browser/translate/translate_browsertest.cc
@@ -178,9 +178,7 @@ IN_PROC_BROWSER_TEST_F(TranslateBrowserTest, TranslateInIsolatedWorld) {
net::TestURLFetcher* fetcher =
factory.GetFetcherByID(translate::TranslateScript::kFetcherId);
ASSERT_TRUE(fetcher);
- net::URLRequestStatus status;
- status.set_status(net::URLRequestStatus::SUCCESS);
- fetcher->set_status(status);
+ fetcher->set_status(net::URLRequestStatus());
fetcher->set_url(fetcher->GetOriginalURL());
fetcher->set_response_code(net::HTTP_OK);
fetcher->SetResponseString(element_js);
diff --git a/chrome/browser/translate/translate_manager_render_view_host_unittest.cc b/chrome/browser/translate/translate_manager_render_view_host_unittest.cc
index ec7a7a4..e5a90db 100644
--- a/chrome/browser/translate/translate_manager_render_view_host_unittest.cc
+++ b/chrome/browser/translate/translate_manager_render_view_host_unittest.cc
@@ -47,8 +47,10 @@
#include "content/public/common/url_constants.h"
#include "content/public/test/mock_render_process_host.h"
#include "content/public/test/test_renderer_host.h"
+#include "net/base/net_errors.h"
#include "net/url_request/test_url_fetcher_factory.h"
#include "net/url_request/url_fetcher_delegate.h"
+#include "net/url_request/url_request_status.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "third_party/WebKit/public/web/WebContextMenuData.h"
#include "url/gurl.h"
@@ -291,11 +293,9 @@ class TranslateManagerRenderViewHostTest
net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(
translate::TranslateScript::kFetcherId);
ASSERT_TRUE(fetcher);
- net::URLRequestStatus status;
- status.set_status(success ? net::URLRequestStatus::SUCCESS
- : net::URLRequestStatus::FAILED);
+ net::Error error = success ? net::OK : net::ERR_FAILED;
fetcher->set_url(fetcher->GetOriginalURL());
- fetcher->set_status(status);
+ fetcher->set_status(net::URLRequestStatus::FromError(error));
fetcher->set_response_code(success ? 200 : 500);
fetcher->delegate()->OnURLFetchComplete(fetcher);
}
@@ -305,9 +305,7 @@ class TranslateManagerRenderViewHostTest
const std::vector<std::string>& languages,
bool use_alpha_languages,
const std::vector<std::string>& alpha_languages) {
- net::URLRequestStatus status;
- status.set_status(success ? net::URLRequestStatus::SUCCESS
- : net::URLRequestStatus::FAILED);
+ net::Error error = success ? net::OK : net::ERR_FAILED;
std::string data;
if (success) {
@@ -342,7 +340,7 @@ class TranslateManagerRenderViewHostTest
translate::TranslateLanguageList::kFetcherId);
ASSERT_TRUE(fetcher != NULL);
fetcher->set_url(fetcher->GetOriginalURL());
- fetcher->set_status(status);
+ fetcher->set_status(net::URLRequestStatus::FromError(error));
fetcher->set_response_code(success ? 200 : 500);
fetcher->SetResponseString(data);
fetcher->delegate()->OnURLFetchComplete(fetcher);
diff --git a/components/domain_reliability/monitor_unittest.cc b/components/domain_reliability/monitor_unittest.cc
index ea432a5..9089287 100644
--- a/components/domain_reliability/monitor_unittest.cc
+++ b/components/domain_reliability/monitor_unittest.cc
@@ -66,8 +66,6 @@ class DomainReliabilityMonitorTest : public testing::Test {
static RequestInfo MakeRequestInfo() {
RequestInfo request;
request.status = net::URLRequestStatus();
- request.status.set_status(net::URLRequestStatus::SUCCESS);
- request.status.set_error(net::OK);
request.response_info.socket_address =
net::HostPortPair::FromString("12.34.56.78:80");
request.response_info.headers = MakeHttpResponseHeaders(
@@ -153,8 +151,7 @@ TEST_F(DomainReliabilityMonitorTest, NotReported) {
TEST_F(DomainReliabilityMonitorTest, NetworkFailure) {
RequestInfo request = MakeRequestInfo();
request.url = GURL("http://example/always_report");
- request.status.set_status(net::URLRequestStatus::FAILED);
- request.status.set_error(net::ERR_CONNECTION_RESET);
+ request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
request.response_info.headers = nullptr;
OnRequestLegComplete(request);
@@ -176,8 +173,7 @@ TEST_F(DomainReliabilityMonitorTest, ServerFailure) {
TEST_F(DomainReliabilityMonitorTest, NotReportedFailure) {
RequestInfo request = MakeRequestInfo();
request.url = GURL("http://example/never_report");
- request.status.set_status(net::URLRequestStatus::FAILED);
- request.status.set_error(net::ERR_CONNECTION_RESET);
+ request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
OnRequestLegComplete(request);
EXPECT_EQ(0u, CountPendingBeacons());
@@ -230,8 +226,8 @@ TEST_F(DomainReliabilityMonitorTest, IsUpload) {
TEST_F(DomainReliabilityMonitorTest, LocalError) {
RequestInfo request = MakeRequestInfo();
request.url = GURL("http://example/always_report");
- request.status.set_status(net::URLRequestStatus::FAILED);
- request.status.set_error(net::ERR_PROXY_CONNECTION_FAILED);
+ request.status =
+ net::URLRequestStatus::FromError(net::ERR_PROXY_CONNECTION_FAILED);
OnRequestLegComplete(request);
EXPECT_EQ(0u, CountPendingBeacons());
@@ -276,8 +272,8 @@ TEST_F(DomainReliabilityMonitorTest, NoCachedIPFromFailedRevalidationRequest) {
RequestInfo request = MakeRequestInfo();
request.url = GURL("http://example/always_report");
request.response_info.was_cached = true;
- request.status.set_status(net::URLRequestStatus::FAILED);
- request.status.set_error(net::ERR_NAME_RESOLUTION_FAILED);
+ request.status =
+ net::URLRequestStatus::FromError(net::ERR_NAME_RESOLUTION_FAILED);
OnRequestLegComplete(request);
BeaconVector beacons;
@@ -343,10 +339,13 @@ TEST_F(DomainReliabilityMonitorTest, ClearContexts) {
EXPECT_EQ(0u, monitor_.contexts_size_for_testing());
}
+// TODO(davidben): When https://crbug.com/490311 is resolved, this test can be
+// removed.
TEST_F(DomainReliabilityMonitorTest, IgnoreSuccessError) {
RequestInfo request = MakeRequestInfo();
request.url = GURL("http://example/always_report");
- request.status.set_error(net::ERR_QUIC_PROTOCOL_ERROR);
+ request.status = net::URLRequestStatus(net::URLRequestStatus::SUCCESS,
+ net::ERR_QUIC_PROTOCOL_ERROR);
OnRequestLegComplete(request);
BeaconVector beacons;
diff --git a/components/domain_reliability/uploader_unittest.cc b/components/domain_reliability/uploader_unittest.cc
index 989cd66..b3dfa5a 100644
--- a/components/domain_reliability/uploader_unittest.cc
+++ b/components/domain_reliability/uploader_unittest.cc
@@ -91,9 +91,7 @@ class DomainReliabilityUploaderTest : public testing::Test {
EXPECT_TRUE(fetcher);
net::URLRequestStatus status;
- status.set_status(net::URLRequestStatus::FAILED);
- status.set_error(error);
- fetcher->set_status(status);
+ fetcher->set_status(net::URLRequestStatus::FromError(error));
fetcher->set_response_code(-1);
fetcher->delegate()->OnURLFetchComplete(fetcher);
}
diff --git a/content/browser/loader/redirect_to_file_resource_handler.cc b/content/browser/loader/redirect_to_file_resource_handler.cc
index 6f40213..e87a23b 100644
--- a/content/browser/loader/redirect_to_file_resource_handler.cc
+++ b/content/browser/loader/redirect_to_file_resource_handler.cc
@@ -281,8 +281,8 @@ void RedirectToFileResourceHandler::DidWriteToFile(int result) {
if (completed_during_write_ && completed_status_.is_success()) {
// If the request successfully completed mid-write, but the write failed,
// convert the status to a failure for downstream.
- completed_status_.set_status(net::URLRequestStatus::CANCELED);
- completed_status_.set_error(net::ERR_FAILED);
+ completed_status_ = net::URLRequestStatus(net::URLRequestStatus::CANCELED,
+ net::ERR_FAILED);
}
if (!completed_during_write_)
controller()->CancelWithError(net::ERR_FAILED);
diff --git a/content/browser/speech/google_one_shot_remote_engine_unittest.cc b/content/browser/speech/google_one_shot_remote_engine_unittest.cc
index 1695010..3896f5c 100644
--- a/content/browser/speech/google_one_shot_remote_engine_unittest.cc
+++ b/content/browser/speech/google_one_shot_remote_engine_unittest.cc
@@ -8,6 +8,7 @@
#include "content/browser/speech/google_one_shot_remote_engine.h"
#include "content/public/common/speech_recognition_error.h"
#include "content/public/common/speech_recognition_result.h"
+#include "net/base/net_errors.h"
#include "net/url_request/test_url_fetcher_factory.h"
#include "net/url_request/url_request_context_getter.h"
#include "net/url_request/url_request_status.h"
@@ -65,10 +66,8 @@ void GoogleOneShotRemoteEngineTest::CreateAndTestRequest(
ASSERT_TRUE(fetcher);
fetcher->set_url(fetcher->GetOriginalURL());
- net::URLRequestStatus status;
- status.set_status(success ? net::URLRequestStatus::SUCCESS :
- net::URLRequestStatus::FAILED);
- fetcher->set_status(status);
+ fetcher->set_status(
+ net::URLRequestStatus::FromError(success ? net::OK : net::ERR_FAILED));
fetcher->set_response_code(success ? 200 : 500);
fetcher->SetResponseString(http_response);
diff --git a/content/browser/speech/speech_recognizer_impl_unittest.cc b/content/browser/speech/speech_recognizer_impl_unittest.cc
index 3e8ef28..ba6b06a 100644
--- a/content/browser/speech/speech_recognizer_impl_unittest.cc
+++ b/content/browser/speech/speech_recognizer_impl_unittest.cc
@@ -261,9 +261,7 @@ TEST_F(SpeechRecognizerImplTest, StopWithData) {
ASSERT_TRUE(fetcher);
fetcher->set_url(fetcher->GetOriginalURL());
- net::URLRequestStatus status;
- status.set_status(net::URLRequestStatus::SUCCESS);
- fetcher->set_status(status);
+ fetcher->set_status(net::URLRequestStatus());
fetcher->set_response_code(200);
fetcher->SetResponseString(
"{\"status\":0,\"hypotheses\":[{\"utterance\":\"123\"}]}");
@@ -317,10 +315,8 @@ TEST_F(SpeechRecognizerImplTest, ConnectionError) {
// Issue the network callback to complete the process.
fetcher->set_url(fetcher->GetOriginalURL());
- net::URLRequestStatus status;
- status.set_status(net::URLRequestStatus::FAILED);
- status.set_error(net::ERR_CONNECTION_REFUSED);
- fetcher->set_status(status);
+ fetcher->set_status(
+ net::URLRequestStatus::FromError(net::ERR_CONNECTION_REFUSED));
fetcher->set_response_code(0);
fetcher->SetResponseString(std::string());
fetcher->delegate()->OnURLFetchComplete(fetcher);
@@ -354,9 +350,7 @@ TEST_F(SpeechRecognizerImplTest, ServerError) {
// Issue the network callback to complete the process.
fetcher->set_url(fetcher->GetOriginalURL());
- net::URLRequestStatus status;
- status.set_status(net::URLRequestStatus::SUCCESS);
- fetcher->set_status(status);
+ fetcher->set_status(net::URLRequestStatus());
fetcher->set_response_code(500);
fetcher->SetResponseString("Internal Server Error");
fetcher->delegate()->OnURLFetchComplete(fetcher);
diff --git a/content/test/mock_google_streaming_server.cc b/content/test/mock_google_streaming_server.cc
index 5e13609..5d8b846 100644
--- a/content/test/mock_google_streaming_server.cc
+++ b/content/test/mock_google_streaming_server.cc
@@ -14,6 +14,7 @@
#include "content/browser/speech/proto/google_streaming_api.pb.h"
#include "content/browser/speech/speech_recognition_manager_impl.h"
#include "net/base/escape.h"
+#include "net/base/net_errors.h"
#include "net/url_request/url_fetcher_delegate.h"
#include "net/url_request/url_request_status.h"
@@ -129,10 +130,8 @@ void MockGoogleStreamingServer::SimulateServerResponse(
bool success, const std::string& http_response) {
net::TestURLFetcher* fetcher = GetURLFetcher(true);
- net::URLRequestStatus status;
- status.set_status(success ? net::URLRequestStatus::SUCCESS :
- net::URLRequestStatus::FAILED);
- fetcher->set_status(status);
+ fetcher->set_status(
+ net::URLRequestStatus::FromError(success ? net::OK : net::ERR_FAILED));
fetcher->set_response_code(success ? 200 : 500);
fetcher->SetResponseString(http_response);
fetcher->delegate()->OnURLFetchDownloadProgress(fetcher, 0, 0);
diff --git a/net/net.gypi b/net/net.gypi
index 355b9d0..8d16b0c 100644
--- a/net/net.gypi
+++ b/net/net.gypi
@@ -1223,6 +1223,7 @@
'url_request/url_request_redirect_job.h',
'url_request/url_request_simple_job.cc',
'url_request/url_request_simple_job.h',
+ 'url_request/url_request_status.cc',
'url_request/url_request_status.h',
'url_request/url_request_test_job.cc',
'url_request/url_request_test_job.h',
diff --git a/net/url_request/url_fetcher_core.cc b/net/url_request/url_fetcher_core.cc
index d34f20f..0279911 100644
--- a/net/url_request/url_fetcher_core.cc
+++ b/net/url_request/url_fetcher_core.cc
@@ -668,8 +668,7 @@ void URLFetcherCore::CancelURLRequest(int error) {
// URLRequestJob::NotifyDone(). But, because the request was released
// immediately after being canceled, the request could not call
// OnReadCompleted() which overwrites |status_| with the error status.
- status_.set_status(URLRequestStatus::CANCELED);
- status_.set_error(error);
+ status_ = URLRequestStatus(URLRequestStatus::CANCELED, error);
// Release the reference to the request context. There could be multiple
// references to URLFetcher::Core at this point so it may take a while to
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
index 7496bb3..e10fe4e 100644
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -688,8 +688,7 @@ void URLRequest::DoCancel(int error, const SSLInfo& ssl_info) {
// If the URL request already has an error status, then canceling is a no-op.
// Plus, we don't want to change the error status once it has been set.
if (status_.is_success()) {
- status_.set_status(URLRequestStatus::CANCELED);
- status_.set_error(error);
+ status_ = URLRequestStatus(URLRequestStatus::CANCELED, error);
response_info_.ssl_info = ssl_info;
// If the request hasn't already been completed, log a cancellation event.
diff --git a/net/url_request/url_request_status.cc b/net/url_request/url_request_status.cc
new file mode 100644
index 0000000..c4643f2
--- /dev/null
+++ b/net/url_request/url_request_status.cc
@@ -0,0 +1,23 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/url_request/url_request_status.h"
+
+#include "net/base/net_errors.h"
+
+namespace net {
+
+URLRequestStatus URLRequestStatus::FromError(int error) {
+ if (error == OK) {
+ return URLRequestStatus(SUCCESS, OK);
+ } else if (error == ERR_IO_PENDING) {
+ return URLRequestStatus(IO_PENDING, ERR_IO_PENDING);
+ } else if (error == ERR_ABORTED) {
+ return URLRequestStatus(CANCELED, ERR_ABORTED);
+ } else {
+ return URLRequestStatus(FAILED, error);
+ }
+}
+
+} // namespace net
diff --git a/net/url_request/url_request_status.h b/net/url_request/url_request_status.h
index 521a3d45..0236687 100644
--- a/net/url_request/url_request_status.h
+++ b/net/url_request/url_request_status.h
@@ -1,18 +1,17 @@
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-//
-// This file's dependencies should be kept to a minimum so that it can be
-// included in WebKit code that doesn't rely on much of common.
#ifndef NET_URL_REQUEST_URL_REQUEST_STATUS_H_
#define NET_URL_REQUEST_URL_REQUEST_STATUS_H_
+#include "net/base/net_export.h"
+
namespace net {
// Represents the result of a URL request. It encodes errors and various
// types of success.
-class URLRequestStatus {
+class NET_EXPORT URLRequestStatus {
public:
enum Status {
// Request succeeded, |error_| will be 0.
@@ -29,14 +28,21 @@ class URLRequestStatus {
FAILED,
};
+ // Creates a successful URLRequestStatus.
URLRequestStatus() : status_(SUCCESS), error_(0) {}
- URLRequestStatus(Status s, int e) : status_(s), error_(e) {}
- Status status() const { return status_; }
- void set_status(Status s) { status_ = s; }
+ // Creates a URLRequestStatus with specified status and error parameters. New
+ // consumers should use URLRequestStatus::FromError instead.
+ URLRequestStatus(Status status, int error) : status_(status), error_(error) {}
+ // Creates a URLRequestStatus, initializing the status from |error|. OK maps
+ // to SUCCESS, ERR_IO_PENDING maps to IO_PENDING, ERR_ABORTED maps to CANCELED
+ // and all others map to FAILED. Other combinations of status and error are
+ // deprecated. See https://crbug.com/490311.
+ static URLRequestStatus FromError(int error);
+
+ Status status() const { return status_; }
int error() const { return error_; }
- void set_error(int e) { error_ = e; }
// Returns true if the status is success, which makes some calling code more
// convenient because this is the most common test.