Commit c327ac15 authored by Kunihiko Sakamoto's avatar Kunihiko Sakamoto Committed by Commit Bot

Fix SignedExchangeRequestHandlerBrowserTest on Android KitKat

Setting a mock ContentBrowserClient via SetBrowserClientForTesting
doesn't work on Android KitKat. (crbug.com/864403)

After this patch, VariantMatch and VariantMismatch test cases will be
skipped in Android version < 5.

Bug: 937930,864403
Change-Id: Ia246305fbaa906c9a3f44d45b85e6b6e69b35d1f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1501954Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Reviewed-by: default avatarTsuyoshi Horo <horo@chromium.org>
Commit-Queue: Kunihiko Sakamoto <ksakamoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#637609}
parent f5b82d91
......@@ -12,6 +12,7 @@
#include "base/test/scoped_feature_list.h"
#include "base/threading/thread_restrictions.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "content/browser/frame_host/navigation_handle_impl.h"
#include "content/browser/loader/prefetch_url_loader_service.h"
#include "content/browser/storage_partition_impl.h"
......@@ -129,8 +130,18 @@ class SignedExchangeRequestHandlerBrowserTestBase
}
void SetUpOnMainThread() override {
original_client_ = SetBrowserClientForTesting(&client_);
CertVerifierBrowserTest::SetUpOnMainThread();
#if defined(OS_ANDROID)
// TODO(crbug.com/864403): It seems that we call unsupported Android APIs on
// KitKat when we set a ContentBrowserClient. Don't call such APIs and make
// this test available on KitKat.
int32_t major_version = 0, minor_version = 0, bugfix_version = 0;
base::SysInfo::OperatingSystemVersionNumbers(&major_version, &minor_version,
&bugfix_version);
if (major_version < 5)
return;
#endif
original_client_ = SetBrowserClientForTesting(&client_);
}
void TearDownOnMainThread() override {
......@@ -162,12 +173,18 @@ class SignedExchangeRequestHandlerBrowserTestBase
EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
}
void SetAcceptLangs(const std::string langs) {
// Returns false if we cannot override accept languages. It happens only on
// Android Kitkat or older systems.
bool SetAcceptLangs(const std::string langs) {
if (!original_client_)
return false;
client_.SetAcceptLangs(langs);
StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>(
BrowserContext::GetDefaultStoragePartition(
shell()->web_contents()->GetBrowserContext()));
partition->GetPrefetchURLLoaderService()->SetAcceptLanguages(langs);
return true;
}
const base::HistogramTester histogram_tester_;
......@@ -263,7 +280,8 @@ IN_PROC_BROWSER_TEST_P(SignedExchangeRequestHandlerBrowserTest, Simple) {
}
IN_PROC_BROWSER_TEST_P(SignedExchangeRequestHandlerBrowserTest, VariantMatch) {
SetAcceptLangs("en-US,fr");
if (!SetAcceptLangs("en-US,fr"))
return;
InstallUrlInterceptor(
GURL("https://cert.example.org/cert.msg"),
"content/test/data/sxg/test.example.org.public.pem.cbor");
......@@ -287,7 +305,8 @@ IN_PROC_BROWSER_TEST_P(SignedExchangeRequestHandlerBrowserTest, VariantMatch) {
IN_PROC_BROWSER_TEST_P(SignedExchangeRequestHandlerBrowserTest,
VariantMismatch) {
SetAcceptLangs("en-US,ja");
if (!SetAcceptLangs("en-US,ja"))
return;
InstallUrlInterceptor(
GURL("https://cert.example.org/cert.msg"),
"content/test/data/sxg/test.example.org.public.pem.cbor");
......
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