Commit 1d1284ce authored by Ryan Sturm's avatar Ryan Sturm Committed by Chromium LUCI CQ

Adding a device memory threshold to search prefetch

This CL adds a minimum required device memory threshold required to
initiate search prefetch requests. The default value is chosen based on
some Canary/Dev data.

Bug: 1163189
Change-Id: Ib161d9ca1f207a25711dc4d48b1812522a1e8c76
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2611865Reviewed-by: default avatarRobert Ogden <robertogden@chromium.org>
Commit-Queue: Ryan Sturm <ryansturm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#840379}
parent 2c0e33a5
......@@ -7,6 +7,7 @@
#include <string>
#include "base/command_line.h"
#include "base/system/sys_info.h"
// Enables the feature completely with a few skipped checks to make local
// testing easier.
......@@ -26,9 +27,19 @@ bool SearchPrefetchServiceIsEnabled() {
}
bool SearchPrefetchServicePrefetchingIsEnabled() {
return base::CommandLine::ForCurrentProcess()->HasSwitch(
kSearchPrefetchServiceCommandLineFlag) ||
base::FeatureList::IsEnabled(kSearchPrefetchServicePrefetching);
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
kSearchPrefetchServiceCommandLineFlag)) {
return true;
}
if (!base::FeatureList::IsEnabled(kSearchPrefetchServicePrefetching)) {
return false;
}
return base::SysInfo::AmountOfPhysicalMemoryMB() >
base::GetFieldTrialParamByFeatureAsInt(
kSearchPrefetchServicePrefetching, "device_memory_threshold_MB",
3000);
}
base::TimeDelta SearchPrefetchCachingLimit() {
......
......@@ -678,7 +678,8 @@ class SearchPrefetchServiceEnabledBrowserTest
feature_list_.InitWithFeaturesAndParameters(
{{kSearchPrefetchServicePrefetching,
{{"stream_responses", GetParam() ? "true" : "false"},
{"cache_size", "1"}}},
{"cache_size", "1"},
{"device_memory_threshold_MB", "0"}}},
{{kSearchPrefetchService}, {}}},
{});
}
......@@ -2217,7 +2218,8 @@ class SearchPrefetchServiceZeroCacheTimeBrowserTest
SearchPrefetchServiceZeroCacheTimeBrowserTest() {
feature_list_.InitWithFeaturesAndParameters(
{{kSearchPrefetchServicePrefetching,
{{"prefetch_caching_limit_ms", "10"}}},
{{"prefetch_caching_limit_ms", "10"},
{"device_memory_threshold_MB", "0"}}},
{{kSearchPrefetchService}, {}}},
{});
......@@ -2290,7 +2292,8 @@ class SearchPrefetchServiceZeroErrorTimeBrowserTest
SearchPrefetchServiceZeroErrorTimeBrowserTest() {
feature_list_.InitWithFeaturesAndParameters(
{{kSearchPrefetchServicePrefetching,
{{"error_backoff_duration_ms", "10"}}},
{{"error_backoff_duration_ms", "10"},
{"device_memory_threshold_MB", "0"}}},
{{kSearchPrefetchService}, {}}},
{});
}
......@@ -2333,7 +2336,8 @@ class SearchPrefetchServiceDefaultMatchOnlyBrowserTest
SearchPrefetchServiceDefaultMatchOnlyBrowserTest() {
feature_list_.InitWithFeaturesAndParameters(
{{kSearchPrefetchServicePrefetching,
{{"only_prefetch_default_match", "true"}}},
{{"only_prefetch_default_match", "true"},
{"device_memory_threshold_MB", "0"}}},
{{kSearchPrefetchService}, {}}},
{});
}
......@@ -2384,6 +2388,39 @@ IN_PROC_BROWSER_TEST_F(SearchPrefetchServiceDefaultMatchOnlyBrowserTest,
EXPECT_FALSE(base::Contains(inner_html, "prefetch"));
}
class SearchPrefetchServiceLowMemoryDeviceBrowserTest
: public SearchPrefetchBaseBrowserTest {
public:
SearchPrefetchServiceLowMemoryDeviceBrowserTest() {
feature_list_.InitWithFeaturesAndParameters(
{{kSearchPrefetchServicePrefetching,
{{"device_memory_threshold_MB", "2000000000"}}},
{{kSearchPrefetchService}, {}}},
{});
}
private:
base::test::ScopedFeatureList feature_list_;
};
IN_PROC_BROWSER_TEST_F(SearchPrefetchServiceLowMemoryDeviceBrowserTest,
NoFetchWhenLowMemoryDevice) {
auto* search_prefetch_service =
SearchPrefetchServiceFactory::GetForProfile(browser()->profile());
EXPECT_NE(nullptr, search_prefetch_service);
std::string search_terms = "prefetch_content";
GURL prefetch_url = GetSearchServerQueryURL(search_terms);
EXPECT_FALSE(search_prefetch_service->MaybePrefetchURL(prefetch_url));
auto prefetch_status =
search_prefetch_service->GetSearchPrefetchStatusForTesting(
base::ASCIIToUTF16(search_terms));
EXPECT_FALSE(prefetch_status.has_value());
}
class GooglePFTest : public InProcessBrowserTest {
public:
GooglePFTest() = default;
......
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