diff options
author | davidben <davidben@chromium.org> | 2015-06-03 09:24:02 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-03 16:24:25 +0000 |
commit | e7938cf52a9aeb936c1cb005faaafb9f2b16cd4f (patch) | |
tree | 9a335575ded0d38750b3052363e5aedebf4bbdb2 | |
parent | baa70976bf3b485195a4b3801f2ab1d331f35ef3 (diff) | |
download | chromium_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.cc | 8 | ||||
-rw-r--r-- | chrome/browser/translate/translate_browsertest.cc | 4 | ||||
-rw-r--r-- | chrome/browser/translate/translate_manager_render_view_host_unittest.cc | 14 | ||||
-rw-r--r-- | components/domain_reliability/monitor_unittest.cc | 21 | ||||
-rw-r--r-- | components/domain_reliability/uploader_unittest.cc | 4 | ||||
-rw-r--r-- | content/browser/loader/redirect_to_file_resource_handler.cc | 4 | ||||
-rw-r--r-- | content/browser/speech/google_one_shot_remote_engine_unittest.cc | 7 | ||||
-rw-r--r-- | content/browser/speech/speech_recognizer_impl_unittest.cc | 14 | ||||
-rw-r--r-- | content/test/mock_google_streaming_server.cc | 7 | ||||
-rw-r--r-- | net/net.gypi | 1 | ||||
-rw-r--r-- | net/url_request/url_fetcher_core.cc | 3 | ||||
-rw-r--r-- | net/url_request/url_request.cc | 3 | ||||
-rw-r--r-- | net/url_request/url_request_status.cc | 23 | ||||
-rw-r--r-- | net/url_request/url_request_status.h | 22 |
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. |