Commit 6ee78f52 authored by Yutaka Hirano's avatar Yutaka Hirano Committed by Commit Bot

Use KURL in ResourceError instead of String

Bug: None
Change-Id: I939a06f5d554101cea344f092f8de63bfb15e758
Reviewed-on: https://chromium-review.googlesource.com/575113
Commit-Queue: Yutaka Hirano <yhirano@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarTakeshi Yoshino <tyoshino@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488155}
parent c214bc44
......@@ -142,7 +142,7 @@ TEST_F(CSSPreloadScannerTest, DontReadFromClearedData) {
const char* data = "@import url('http://127.0.0.1/preload.css');";
resource->AppendData(data, strlen(data));
ResourceError error(kErrorDomainBlinkInternal, 0, url.GetString(), "");
ResourceError error(kErrorDomainBlinkInternal, 0, url, "");
resource->FinishAsError(error);
// Should not crash.
......
......@@ -237,8 +237,7 @@ void DocumentThreadableLoader::Start(const ResourceRequest& request) {
client_);
ThreadableLoaderClient* client = client_;
Clear();
client->DidFail(ResourceError(kErrorDomainBlinkInternal, 0,
request.Url().GetString(),
client->DidFail(ResourceError(kErrorDomainBlinkInternal, 0, request.Url(),
"Cross origin requests are not supported."));
return;
}
......@@ -553,7 +552,7 @@ bool DocumentThreadableLoader::RedirectReceived(
if (!actual_request_.IsNull()) {
ReportResponseReceived(resource->Identifier(), redirect_response);
HandlePreflightFailure(redirect_response.Url().GetString(),
HandlePreflightFailure(redirect_response.Url(),
"Response for preflight is invalid (redirect)");
return false;
......@@ -782,7 +781,7 @@ void DocumentThreadableLoader::HandlePreflightResponse(
"control check: ");
CrossOriginAccessControl::AccessControlErrorString(
builder, cors_status, response, GetSecurityOrigin(), request_context_);
HandlePreflightFailure(response.Url().GetString(), builder.ToString());
HandlePreflightFailure(response.Url(), builder.ToString());
return;
}
......@@ -792,7 +791,7 @@ void DocumentThreadableLoader::HandlePreflightResponse(
StringBuilder builder;
CrossOriginAccessControl::PreflightErrorString(builder, preflight_status,
response);
HandlePreflightFailure(response.Url().GetString(), builder.ToString());
HandlePreflightFailure(response.Url(), builder.ToString());
return;
}
......@@ -804,7 +803,7 @@ void DocumentThreadableLoader::HandlePreflightResponse(
StringBuilder builder;
CrossOriginAccessControl::PreflightErrorString(
builder, external_preflight_status, response);
HandlePreflightFailure(response.Url().GetString(), builder.ToString());
HandlePreflightFailure(response.Url(), builder.ToString());
return;
}
}
......@@ -818,8 +817,7 @@ void DocumentThreadableLoader::HandlePreflightResponse(
!preflight_result->AllowsCrossOriginHeaders(
actual_request_.HttpHeaderFields(),
access_control_error_description)) {
HandlePreflightFailure(response.Url().GetString(),
access_control_error_description);
HandlePreflightFailure(response.Url(), access_control_error_description);
return;
}
......@@ -1046,7 +1044,7 @@ void DocumentThreadableLoader::LoadActualRequest() {
}
void DocumentThreadableLoader::HandlePreflightFailure(
const String& url,
const KURL& url,
const String& error_description) {
// Prevent handleSuccessfulFinish() from bypassing access check.
actual_request_ = ResourceRequest();
......@@ -1112,8 +1110,7 @@ void DocumentThreadableLoader::LoadRequestAsync(
// notified and |client| is null.
if (!client)
return;
client->DidFail(ResourceError(kErrorDomainBlinkInternal, 0,
request.Url().GetString(),
client->DidFail(ResourceError(kErrorDomainBlinkInternal, 0, request.Url(),
"Failed to start loading."));
return;
}
......
......@@ -144,8 +144,7 @@ class CORE_EXPORT DocumentThreadableLoader final : public ThreadableLoader,
void LoadActualRequest();
// Clears actual_request_ and reports access control check failure to
// m_client.
void HandlePreflightFailure(const String& url,
const String& error_description);
void HandlePreflightFailure(const KURL&, const String& error_description);
// Investigates the response for the preflight request. If successful,
// the actual request will be made later in handleSuccessfulFinish().
void HandlePreflightResponse(const ResourceResponse&);
......
......@@ -648,10 +648,9 @@ TEST_P(ThreadableLoaderTest, DidFailInStart) {
CreateLoader();
CallCheckpoint(1);
EXPECT_CALL(*Client(),
DidFail(ResourceError(
kErrorDomainBlinkInternal, 0, ErrorURL().GetString(),
"Cross origin requests are not supported.")));
EXPECT_CALL(*Client(), DidFail(ResourceError(
kErrorDomainBlinkInternal, 0, ErrorURL(),
"Cross origin requests are not supported.")));
EXPECT_CALL(GetCheckpoint(), Call(2));
StartLoader(ErrorURL(), WebURLRequest::kFetchRequestModeSameOrigin);
......
......@@ -65,8 +65,8 @@ WebURLError& WebURLError::operator=(const ResourceError& error) {
WebURLError::operator ResourceError() const {
if (!reason)
return ResourceError();
ResourceError resource_error = ResourceError(
domain, reason, unreachable_url.GetString(), localized_description);
ResourceError resource_error =
ResourceError(domain, reason, unreachable_url, localized_description);
resource_error.SetStaleCopyInCache(stale_copy_in_cache);
resource_error.SetWasIgnoredByHandler(was_ignored_by_handler);
resource_error.SetIsAccessCheck(is_web_security_violation);
......
......@@ -28,7 +28,6 @@
#include "net/base/net_errors.h"
#include "platform/loader/fetch/ResourceRequest.h"
#include "platform/weborigin/KURL.h"
#include "public/platform/Platform.h"
#include "public/platform/WebString.h"
#include "public/platform/WebURL.h"
......@@ -44,15 +43,14 @@ constexpr char kThrottledErrorDescription[] =
const char kErrorDomainBlinkInternal[] = "BlinkInternal";
ResourceError ResourceError::CancelledError(const String& failing_url) {
return WebURLError(KURL(kParsedURLString, failing_url), false,
net::ERR_ABORTED);
ResourceError ResourceError::CancelledError(const KURL& url) {
return WebURLError(url, false, net::ERR_ABORTED);
}
ResourceError ResourceError::CancelledDueToAccessCheckError(
const String& failing_url,
const KURL& url,
ResourceRequestBlockedReason blocked_reason) {
ResourceError error = CancelledError(failing_url);
ResourceError error = CancelledError(url);
error.SetIsAccessCheck(true);
if (blocked_reason == ResourceRequestBlockedReason::kSubresourceFilter)
error.SetShouldCollapseInitiator(true);
......@@ -60,25 +58,23 @@ ResourceError ResourceError::CancelledDueToAccessCheckError(
}
ResourceError ResourceError::CancelledDueToAccessCheckError(
const String& failing_url,
const KURL& url,
ResourceRequestBlockedReason blocked_reason,
const String& localized_description) {
ResourceError error =
CancelledDueToAccessCheckError(failing_url, blocked_reason);
ResourceError error = CancelledDueToAccessCheckError(url, blocked_reason);
error.localized_description_ = localized_description;
return error;
}
ResourceError ResourceError::CacheMissError(const String& failing_url) {
return WebURLError(KURL(kParsedURLString, failing_url), false,
net::ERR_CACHE_MISS);
ResourceError ResourceError::CacheMissError(const KURL& url) {
return WebURLError(url, false, net::ERR_CACHE_MISS);
}
ResourceError ResourceError::Copy() const {
ResourceError error_copy;
error_copy.domain_ = domain_.IsolatedCopy();
error_copy.error_code_ = error_code_;
error_copy.failing_url_ = failing_url_.IsolatedCopy();
error_copy.failing_url_ = failing_url_.Copy();
error_copy.localized_description_ = localized_description_.IsolatedCopy();
error_copy.is_null_ = is_null_;
error_copy.is_access_check_ = is_access_check_;
......
......@@ -31,6 +31,7 @@
#include <iosfwd>
#include "net/base/net_errors.h"
#include "platform/PlatformExport.h"
#include "platform/weborigin/KURL.h"
#include "platform/wtf/Allocator.h"
#include "platform/wtf/text/WTFString.h"
......@@ -52,40 +53,28 @@ class PLATFORM_EXPORT ResourceError final {
BLOCKED_BY_XSS_AUDITOR = net::ERR_BLOCKED_BY_XSS_AUDITOR
};
static ResourceError CancelledError(const String& failing_url);
static ResourceError CancelledError(const KURL&);
static ResourceError CancelledDueToAccessCheckError(
const String& failing_url,
const KURL&,
ResourceRequestBlockedReason);
static ResourceError CancelledDueToAccessCheckError(
const String& failing_url,
const KURL&,
ResourceRequestBlockedReason,
const String& localized_description);
static ResourceError CacheMissError(const String& failing_url);
static ResourceError CacheMissError(const KURL&);
ResourceError()
: error_code_(0),
is_null_(true),
is_access_check_(false),
is_timeout_(false),
stale_copy_in_cache_(false),
was_ignored_by_handler_(false),
should_collapse_initiator_(false) {}
ResourceError() = default;
ResourceError(const String& domain,
int error_code,
const String& failing_url,
const KURL& failing_url,
const String& localized_description)
: domain_(domain),
error_code_(error_code),
failing_url_(failing_url),
localized_description_(localized_description),
is_null_(false),
is_access_check_(false),
is_timeout_(false),
stale_copy_in_cache_(false),
was_ignored_by_handler_(false),
should_collapse_initiator_(false) {}
is_null_(false) {}
// Makes a deep copy. Useful for when you need to use a ResourceError on
// another thread.
......@@ -136,15 +125,15 @@ class PLATFORM_EXPORT ResourceError final {
private:
String domain_;
int error_code_;
String failing_url_;
int error_code_ = 0;
KURL failing_url_;
String localized_description_;
bool is_null_;
bool is_access_check_;
bool is_timeout_;
bool stale_copy_in_cache_;
bool was_ignored_by_handler_;
bool should_collapse_initiator_;
bool is_null_ = true;
bool is_access_check_ = false;
bool is_timeout_ = false;
bool stale_copy_in_cache_ = false;
bool was_ignored_by_handler_ = false;
bool should_collapse_initiator_ = false;
};
inline bool operator==(const ResourceError& a, const ResourceError& b) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment