Commit 1ff872df authored by Jay Civelli's avatar Jay Civelli Committed by Commit Bot

Change ClientHintsBrowserTest browser tests to use URLLoaderInterceptor

Changing the ClientHintsBrowserTest browser tests to use
URLLoaderInterceptor. This fixes 2 tests with the network service.

Bug: 776589
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_mojo
Change-Id: Icfa0f2c26723de4a1c0f815411ab39e1b016d61d
Reviewed-on: https://chromium-review.googlesource.com/956753Reviewed-by: default avatarTarun Bansal <tbansal@chromium.org>
Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Commit-Queue: Jay Civelli <jcivelli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542238}
parent 65008aff
......@@ -29,54 +29,50 @@
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "net/test/embedded_test_server/http_request.h"
#include "net/test/embedded_test_server/http_response.h"
#include "net/test/url_request/url_request_mock_data_job.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
#include "net/url_request/url_request_filter.h"
#include "net/url_request/url_request_interceptor.h"
#include "net/url_request/url_request_job.h"
#include "net/url_request/url_request_test_job.h"
namespace {
// An interceptor that records count of fetches and client hint headers for
// requests to https://foo.com/non-existing-image.jpg.
class ThirdPartyRequestInterceptor : public net::URLRequestInterceptor {
class ThirdPartyURLLoaderInterceptor {
public:
ThirdPartyRequestInterceptor()
: request_count_seen_(0u), client_hints_count_seen_(0u) {}
explicit ThirdPartyURLLoaderInterceptor(const GURL intercepted_url)
: intercepted_url_(intercepted_url),
interceptor_(base::BindRepeating(
&ThirdPartyURLLoaderInterceptor::InterceptURLRequest,
base::Unretained(this))) {}
~ThirdPartyRequestInterceptor() override = default;
~ThirdPartyURLLoaderInterceptor() = default;
// net::URLRequestInterceptor implementation
net::URLRequestJob* MaybeInterceptRequest(
net::URLRequest* request,
net::NetworkDelegate* network_delegate) const override {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
size_t request_count_seen() const { return request_count_seen_; }
size_t client_hints_count_seen() const { return client_hints_count_seen_; }
net::HttpRequestHeaders headers = request->extra_request_headers();
private:
bool InterceptURLRequest(
content::URLLoaderInterceptor::RequestParams* params) {
if (params->url_request.url != intercepted_url_)
return false;
request_count_seen_++;
if (headers.HasHeader("dpr")) {
if (params->url_request.headers.HasHeader("dpr")) {
client_hints_count_seen_++;
}
if (headers.HasHeader("device-memory")) {
if (params->url_request.headers.HasHeader("device-memory")) {
client_hints_count_seen_++;
}
return new net::URLRequestMockDataJob(request, network_delegate, "contents",
1, false);
return false;
}
size_t request_count_seen() const { return request_count_seen_; }
GURL intercepted_url_;
size_t client_hints_count_seen() const { return client_hints_count_seen_; }
size_t request_count_seen_ = 0u;
private:
mutable size_t request_count_seen_;
size_t client_hints_count_seen_ = 0u;
mutable size_t client_hints_count_seen_;
content::URLLoaderInterceptor interceptor_;
DISALLOW_COPY_AND_ASSIGN(ThirdPartyRequestInterceptor);
DISALLOW_COPY_AND_ASSIGN(ThirdPartyURLLoaderInterceptor);
};
} // namespace
......@@ -151,17 +147,13 @@ class ClientHintsBrowserTest : public InProcessBrowserTest {
content::BrowserThread::IO, FROM_HERE,
base::BindOnce(&chrome_browser_net::SetUrlRequestMocksEnabled, true));
request_interceptor_ = new ThirdPartyRequestInterceptor();
std::unique_ptr<net::URLRequestInterceptor> owned_interceptor(
request_interceptor_);
content::BrowserThread::PostTask(
content::BrowserThread::IO, FROM_HERE,
base::BindOnce(&InstallMockInterceptors,
GURL("https://foo.com/non-existing-image.jpg"),
std::move(owned_interceptor)));
request_interceptor_ = std::make_unique<ThirdPartyURLLoaderInterceptor>(
GURL("https://foo.com/non-existing-image.jpg"));
base::RunLoop().RunUntilIdle();
}
void TearDownOnMainThread() override { request_interceptor_.reset(); }
void SetUpCommandLine(base::CommandLine* cmd) override {
cmd->AppendSwitch(switches::kEnableExperimentalWebPlatformFeatures);
}
......@@ -241,16 +233,6 @@ class ClientHintsBrowserTest : public InProcessBrowserTest {
}
private:
static void InstallMockInterceptors(
const GURL& url,
std::unique_ptr<net::URLRequestInterceptor> request_interceptor) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
chrome_browser_net::SetUrlRequestMocksEnabled(true);
net::URLRequestFilter::GetInstance()->AddUrlInterceptor(
url, std::move(request_interceptor));
}
// Called by |https_server_|.
void MonitorResourceRequest(const net::test_server::HttpRequest& request) {
bool is_main_frame_navigation =
......@@ -297,8 +279,7 @@ class ClientHintsBrowserTest : public InProcessBrowserTest {
size_t count_client_hints_headers_seen_;
// Not owned. May be null.
ThirdPartyRequestInterceptor* request_interceptor_;
std::unique_ptr<ThirdPartyURLLoaderInterceptor> request_interceptor_;
DISALLOW_COPY_AND_ASSIGN(ClientHintsBrowserTest);
};
......
......@@ -76,6 +76,8 @@
-WebViewTests/WebViewTest.WebViewInBackgroundPage/1
# Need support for blocking cookies via content settings:
# https://crbug.com/803452.
-ClientHintsBrowserTest.ClientHintsLifetimeNotAttachedCookiesBlocked
-ClientHintsBrowserTest.ClientHintsNoLifetimeCookiesNotAllowed
-ContentSettingsTest.AllowCookiesForASessionUsingExceptions
-ContentSettingsTest.RedirectCrossOrigin
-ContentSettingsTest.RedirectLoopCookies
......@@ -90,10 +92,6 @@
-DnsProbeBrowserTest.NoInternetProbeResultWithSlowBrokenCorrections
# crbug.com/776589 Intercepting requests with net::URLRequestFilter.
-ClientHintsBrowserTest.ClientHintsHttpsSubresourceDifferentOrigin
-ClientHintsBrowserTest.ClientHintsLifetimeNotAttachedCookiesBlocked
-ClientHintsBrowserTest.ClientHintsNoLifetimeCookiesNotAllowed
-ClientHintsBrowserTest.ClientHintsNoLifetimeScriptNotAllowed
-ContinueWhereILeftOffTest.CookiesClearedOnExit
-DevToolsSanityTest.TestNetworkPushTime
-DownloadExtensionTest.DownloadExtensionTest_Download_FileSystemURL
......
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