Commit 19c76086 authored by Yoichi Osato's avatar Yoichi Osato Committed by Commit Bot

Refactor PingLoaderTest not to copy ResourceRequest

This patch introduced a subset of ResourceRequest for test checking.
This is a preparation to make ResourceRequest non-copyable.

Bug: 787704
Change-Id: Ibca48006e4cf9ec6fd75fc935e3d32135d319d33
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1989736Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Commit-Queue: Yoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#729644}
parent 121812d1
...@@ -19,6 +19,27 @@ namespace blink { ...@@ -19,6 +19,27 @@ namespace blink {
namespace { namespace {
class PartialResourceRequest {
public:
PartialResourceRequest() : PartialResourceRequest(ResourceRequest()) {}
PartialResourceRequest(const ResourceRequest& request)
: url_(request.Url()), priority_(request.Priority()) {
http_header_fields_.Adopt(request.HttpHeaderFields().CopyData());
}
bool IsNull() const { return url_.IsNull(); }
const KURL& Url() const { return url_; }
const AtomicString& HttpHeaderField(const AtomicString& name) const {
return http_header_fields_.Get(name);
}
ResourceLoadPriority Priority() const { return priority_; }
private:
KURL url_;
HTTPHeaderMap http_header_fields_;
ResourceLoadPriority priority_;
};
class PingLocalFrameClient : public EmptyLocalFrameClient { class PingLocalFrameClient : public EmptyLocalFrameClient {
public: public:
std::unique_ptr<WebURLLoaderFactory> CreateURLLoaderFactory() override { std::unique_ptr<WebURLLoaderFactory> CreateURLLoaderFactory() override {
...@@ -27,13 +48,13 @@ class PingLocalFrameClient : public EmptyLocalFrameClient { ...@@ -27,13 +48,13 @@ class PingLocalFrameClient : public EmptyLocalFrameClient {
void DispatchWillSendRequest(ResourceRequest& request) override { void DispatchWillSendRequest(ResourceRequest& request) override {
if (request.GetKeepalive()) if (request.GetKeepalive())
ping_request_ = request; ping_request_ = PartialResourceRequest(request);
} }
const ResourceRequest& PingRequest() const { return ping_request_; } const PartialResourceRequest& PingRequest() const { return ping_request_; }
private: private:
ResourceRequest ping_request_; PartialResourceRequest ping_request_;
}; };
class PingLoaderTest : public PageTestBase { class PingLoaderTest : public PageTestBase {
...@@ -55,14 +76,14 @@ class PingLoaderTest : public PageTestBase { ...@@ -55,14 +76,14 @@ class PingLoaderTest : public PageTestBase {
ASSERT_EQ(url.GetString(), GetDocument().Url().GetString()); ASSERT_EQ(url.GetString(), GetDocument().Url().GetString());
} }
const ResourceRequest& PingAndGetRequest(const KURL& ping_url) { const PartialResourceRequest& PingAndGetRequest(const KURL& ping_url) {
KURL destination_url("http://navigation.destination"); KURL destination_url("http://navigation.destination");
// TODO(crbug.com/751425): We should use the mock functionality // TODO(crbug.com/751425): We should use the mock functionality
// via |PageTestBase::dummy_page_holder_|. // via |PageTestBase::dummy_page_holder_|.
url_test_helpers::RegisterMockedURLLoad( url_test_helpers::RegisterMockedURLLoad(
ping_url, test::CoreTestDataPath("bar.html"), "text/html"); ping_url, test::CoreTestDataPath("bar.html"), "text/html");
PingLoader::SendLinkAuditPing(&GetFrame(), ping_url, destination_url); PingLoader::SendLinkAuditPing(&GetFrame(), ping_url, destination_url);
const ResourceRequest& ping_request = client_->PingRequest(); const PartialResourceRequest& ping_request = client_->PingRequest();
if (!ping_request.IsNull()) { if (!ping_request.IsNull()) {
EXPECT_EQ(destination_url.GetString(), EXPECT_EQ(destination_url.GetString(),
ping_request.HttpHeaderField("Ping-To")); ping_request.HttpHeaderField("Ping-To"));
...@@ -80,7 +101,7 @@ class PingLoaderTest : public PageTestBase { ...@@ -80,7 +101,7 @@ class PingLoaderTest : public PageTestBase {
TEST_F(PingLoaderTest, HTTPSToHTTPS) { TEST_F(PingLoaderTest, HTTPSToHTTPS) {
KURL ping_url("https://localhost/bar.html"); KURL ping_url("https://localhost/bar.html");
SetDocumentURL(KURL("https://127.0.0.1:8000/foo.html")); SetDocumentURL(KURL("https://127.0.0.1:8000/foo.html"));
const ResourceRequest& ping_request = PingAndGetRequest(ping_url); const PartialResourceRequest& ping_request = PingAndGetRequest(ping_url);
ASSERT_FALSE(ping_request.IsNull()); ASSERT_FALSE(ping_request.IsNull());
EXPECT_EQ(ping_url, ping_request.Url()); EXPECT_EQ(ping_url, ping_request.Url());
EXPECT_EQ(String(), ping_request.HttpHeaderField("Ping-From")); EXPECT_EQ(String(), ping_request.HttpHeaderField("Ping-From"));
...@@ -90,7 +111,7 @@ TEST_F(PingLoaderTest, HTTPToHTTPS) { ...@@ -90,7 +111,7 @@ TEST_F(PingLoaderTest, HTTPToHTTPS) {
KURL document_url("http://127.0.0.1:8000/foo.html"); KURL document_url("http://127.0.0.1:8000/foo.html");
KURL ping_url("https://localhost/bar.html"); KURL ping_url("https://localhost/bar.html");
SetDocumentURL(document_url); SetDocumentURL(document_url);
const ResourceRequest& ping_request = PingAndGetRequest(ping_url); const PartialResourceRequest& ping_request = PingAndGetRequest(ping_url);
ASSERT_FALSE(ping_request.IsNull()); ASSERT_FALSE(ping_request.IsNull());
EXPECT_EQ(ping_url, ping_request.Url()); EXPECT_EQ(ping_url, ping_request.Url());
EXPECT_EQ(document_url.GetString(), EXPECT_EQ(document_url.GetString(),
...@@ -99,7 +120,7 @@ TEST_F(PingLoaderTest, HTTPToHTTPS) { ...@@ -99,7 +120,7 @@ TEST_F(PingLoaderTest, HTTPToHTTPS) {
TEST_F(PingLoaderTest, NonHTTPPingTarget) { TEST_F(PingLoaderTest, NonHTTPPingTarget) {
SetDocumentURL(KURL("http://127.0.0.1:8000/foo.html")); SetDocumentURL(KURL("http://127.0.0.1:8000/foo.html"));
const ResourceRequest& ping_request = const PartialResourceRequest& ping_request =
PingAndGetRequest(KURL("ftp://localhost/bar.html")); PingAndGetRequest(KURL("ftp://localhost/bar.html"));
ASSERT_TRUE(ping_request.IsNull()); ASSERT_TRUE(ping_request.IsNull());
} }
...@@ -115,7 +136,7 @@ TEST_F(PingLoaderTest, LinkAuditPingPriority) { ...@@ -115,7 +136,7 @@ TEST_F(PingLoaderTest, LinkAuditPingPriority) {
ping_url, test::CoreTestDataPath("bar.html"), "text/html"); ping_url, test::CoreTestDataPath("bar.html"), "text/html");
PingLoader::SendLinkAuditPing(&GetFrame(), ping_url, destination_url); PingLoader::SendLinkAuditPing(&GetFrame(), ping_url, destination_url);
url_test_helpers::ServeAsynchronousRequests(); url_test_helpers::ServeAsynchronousRequests();
const ResourceRequest& request = client_->PingRequest(); const PartialResourceRequest& request = client_->PingRequest();
ASSERT_FALSE(request.IsNull()); ASSERT_FALSE(request.IsNull());
ASSERT_EQ(request.Url(), ping_url); ASSERT_EQ(request.Url(), ping_url);
EXPECT_EQ(ResourceLoadPriority::kVeryLow, request.Priority()); EXPECT_EQ(ResourceLoadPriority::kVeryLow, request.Priority());
...@@ -132,7 +153,7 @@ TEST_F(PingLoaderTest, ViolationPriority) { ...@@ -132,7 +153,7 @@ TEST_F(PingLoaderTest, ViolationPriority) {
PingLoader::SendViolationReport(&GetFrame(), ping_url, PingLoader::SendViolationReport(&GetFrame(), ping_url,
EncodedFormData::Create()); EncodedFormData::Create());
url_test_helpers::ServeAsynchronousRequests(); url_test_helpers::ServeAsynchronousRequests();
const ResourceRequest& request = client_->PingRequest(); const PartialResourceRequest& request = client_->PingRequest();
ASSERT_FALSE(request.IsNull()); ASSERT_FALSE(request.IsNull());
ASSERT_EQ(request.Url(), ping_url); ASSERT_EQ(request.Url(), ping_url);
EXPECT_EQ(ResourceLoadPriority::kVeryLow, request.Priority()); EXPECT_EQ(ResourceLoadPriority::kVeryLow, request.Priority());
...@@ -148,7 +169,7 @@ TEST_F(PingLoaderTest, BeaconPriority) { ...@@ -148,7 +169,7 @@ TEST_F(PingLoaderTest, BeaconPriority) {
ping_url, test::CoreTestDataPath("bar.html"), "text/html"); ping_url, test::CoreTestDataPath("bar.html"), "text/html");
PingLoader::SendBeacon(&GetFrame(), ping_url, "hello"); PingLoader::SendBeacon(&GetFrame(), ping_url, "hello");
url_test_helpers::ServeAsynchronousRequests(); url_test_helpers::ServeAsynchronousRequests();
const ResourceRequest& request = client_->PingRequest(); const PartialResourceRequest& request = client_->PingRequest();
ASSERT_FALSE(request.IsNull()); ASSERT_FALSE(request.IsNull());
ASSERT_EQ(request.Url(), ping_url); ASSERT_EQ(request.Url(), ping_url);
EXPECT_EQ(ResourceLoadPriority::kVeryLow, request.Priority()); EXPECT_EQ(ResourceLoadPriority::kVeryLow, request.Priority());
......
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