Commit abee7caa authored by Robert Ogden's avatar Robert Ogden Committed by Commit Bot

Move NavThrottle enums to a common place in //chrome/browser

Bug: 1005295
Change-Id: Icc50d85dc809eec07391039c079dfaa89f47a42a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1811869Reviewed-by: default avatarTarun Bansal <tbansal@chromium.org>
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Cr-Commit-Position: refs/heads/master@{#698607}
parent b4b172fa
......@@ -21,6 +21,7 @@
#include "chrome/browser/previews/previews_lite_page_decider.h"
#include "chrome/browser/previews/previews_lite_page_navigation_throttle.h"
#include "chrome/browser/previews/previews_lite_page_navigation_throttle_manager.h"
#include "chrome/browser/previews/previews_lite_page_url_loader_interceptor.h"
#include "chrome/browser/previews/previews_offline_helper.h"
#include "chrome/browser/previews/previews_service.h"
#include "chrome/browser/previews/previews_service_factory.h"
......@@ -82,17 +83,16 @@ bool ShouldAllowRedirectPreview(content::NavigationHandle* navigation_handle) {
PreviewsLitePageDecider* decider =
previews_service->previews_lite_page_decider();
std::vector<PreviewsLitePageNavigationThrottle::IneligibleReason>
ineligible_reasons;
std::vector<previews::LitePageRedirectIneligibleReason> ineligible_reasons;
if (!url.SchemeIs(url::kHttpsScheme)) {
ineligible_reasons.push_back(
PreviewsLitePageNavigationThrottle::IneligibleReason::kNonHttpsScheme);
previews::LitePageRedirectIneligibleReason::kNonHttpsScheme);
}
if (decider->IsServerUnavailable()) {
ineligible_reasons.push_back(PreviewsLitePageNavigationThrottle::
IneligibleReason::kServerUnavailable);
ineligible_reasons.push_back(
previews::LitePageRedirectIneligibleReason::kServerUnavailable);
}
content_settings::CookieSettings* cookie_settings =
......@@ -106,51 +106,46 @@ bool ShouldAllowRedirectPreview(content::NavigationHandle* navigation_handle) {
&setting);
if (!content_settings::CookieSettingsBase::IsAllowed(setting)) {
ineligible_reasons.push_back(
PreviewsLitePageNavigationThrottle::IneligibleReason::kCookiesBlocked);
previews::LitePageRedirectIneligibleReason::kCookiesBlocked);
}
if (!decider->has_drp_headers()) {
ineligible_reasons.push_back(PreviewsLitePageNavigationThrottle::
IneligibleReason::kInvalidProxyHeaders);
ineligible_reasons.push_back(
previews::LitePageRedirectIneligibleReason::kInvalidProxyHeaders);
}
if (previews::params::LitePageRedirectOnlyTriggerOnSuccessfulProbe()) {
if (!decider->IsServerProbeResultAvailable()) {
ineligible_reasons.push_back(
PreviewsLitePageNavigationThrottle::IneligibleReason::
kServiceProbeIncomplete);
previews::LitePageRedirectIneligibleReason::kServiceProbeIncomplete);
} else if (!decider->IsServerReachableByProbe()) {
ineligible_reasons.push_back(PreviewsLitePageNavigationThrottle::
IneligibleReason::kServiceProbeFailed);
ineligible_reasons.push_back(
previews::LitePageRedirectIneligibleReason::kServiceProbeFailed);
}
}
// Record UMA.
for (PreviewsLitePageNavigationThrottle::IneligibleReason reason :
ineligible_reasons) {
PreviewsLitePageNavigationThrottle::LogIneligibleReason(reason);
for (previews::LitePageRedirectIneligibleReason reason : ineligible_reasons) {
previews::LogLitePageRedirectIneligibleReason(reason);
}
if (!ineligible_reasons.empty())
return false;
// Check dynamic blacklists.
std::vector<PreviewsLitePageNavigationThrottle::BlacklistReason>
blacklist_reasons;
std::vector<previews::LitePageRedirectBlacklistReason> blacklist_reasons;
if (IsPrivateDomain(url)) {
blacklist_reasons.push_back(
PreviewsLitePageNavigationThrottle::BlacklistReason::
kNavigationToPrivateDomain);
previews::LitePageRedirectBlacklistReason::kNavigationToPrivateDomain);
}
if (decider->HostBlacklistedFromBypass(url.host())) {
blacklist_reasons.push_back(PreviewsLitePageNavigationThrottle::
BlacklistReason::kHostBypassBlacklisted);
blacklist_reasons.push_back(
previews::LitePageRedirectBlacklistReason::kHostBypassBlacklisted);
}
// Record UMA
for (PreviewsLitePageNavigationThrottle::BlacklistReason reason :
blacklist_reasons) {
for (previews::LitePageRedirectBlacklistReason reason : blacklist_reasons) {
UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.BlacklistReasons",
reason);
}
......@@ -160,8 +155,8 @@ bool ShouldAllowRedirectPreview(content::NavigationHandle* navigation_handle) {
// This should always be at the end, but before the control group check.
if (decider->NeedsToNotifyUser()) {
PreviewsLitePageNavigationThrottle::LogIneligibleReason(
PreviewsLitePageNavigationThrottle::IneligibleReason::kInfoBarNotSeen);
previews::LogLitePageRedirectIneligibleReason(
previews::LitePageRedirectIneligibleReason::kInfoBarNotSeen);
return false;
}
......
......@@ -37,6 +37,7 @@
#include "chrome/browser/metrics/subprocess_metrics_provider.h"
#include "chrome/browser/previews/previews_lite_page_decider.h"
#include "chrome/browser/previews/previews_lite_page_navigation_throttle.h"
#include "chrome/browser/previews/previews_lite_page_url_loader_interceptor.h"
#include "chrome/browser/previews/previews_service.h"
#include "chrome/browser/previews/previews_service_factory.h"
#include "chrome/browser/previews/previews_ui_tab_helper.h"
......@@ -1027,8 +1028,7 @@ IN_PROC_BROWSER_TEST_P(
ui_test_utils::NavigateToURL(browser(), GURL("https://0.0.0.0/"));
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.BlacklistReasons",
PreviewsLitePageNavigationThrottle::BlacklistReason::
kNavigationToPrivateDomain,
previews::LitePageRedirectBlacklistReason::kNavigationToPrivateDomain,
1);
VerifyErrorPageLoaded();
}
......@@ -1041,8 +1041,7 @@ IN_PROC_BROWSER_TEST_P(
VerifyErrorPageLoaded();
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.BlacklistReasons",
PreviewsLitePageNavigationThrottle::BlacklistReason::
kNavigationToPrivateDomain,
previews::LitePageRedirectBlacklistReason::kNavigationToPrivateDomain,
1);
}
......@@ -1099,8 +1098,7 @@ IN_PROC_BROWSER_TEST_P(
VerifyPreviewNotLoaded();
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.IneligibleReasons",
PreviewsLitePageNavigationThrottle::IneligibleReason::kCookiesBlocked,
1);
previews::LitePageRedirectIneligibleReason::kCookiesBlocked, 1);
// Reset state for other tests.
CookieSettingsFactory::GetForProfile(browser()->profile())
......@@ -1191,8 +1189,8 @@ IN_PROC_BROWSER_TEST_P(
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.IneligibleReasons",
static_cast<int>(PreviewsLitePageNavigationThrottle::IneligibleReason::
kInvalidProxyHeaders),
static_cast<int>(
previews::LitePageRedirectIneligibleReason::kInvalidProxyHeaders),
1);
}
......@@ -1273,7 +1271,7 @@ IN_PROC_BROWSER_TEST_P(PreviewsLitePageServerBrowserTest,
ClearDeciderState();
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kRedirect, 1);
previews::LitePageRedirectServerResponse::kRedirect, 1);
}
{
......@@ -1286,10 +1284,10 @@ IN_PROC_BROWSER_TEST_P(PreviewsLitePageServerBrowserTest,
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kRedirect, 1);
previews::LitePageRedirectServerResponse::kRedirect, 1);
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kOk, 1);
previews::LitePageRedirectServerResponse::kOk, 1);
}
}
......@@ -1304,8 +1302,7 @@ IN_PROC_BROWSER_TEST_P(PreviewsLitePageServerBrowserTest,
ClearDeciderState();
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kPreviewUnavailable,
1);
previews::LitePageRedirectServerResponse::kPreviewUnavailable, 1);
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.HostBlacklistedOnBypass", false, 1);
......@@ -1321,8 +1318,7 @@ IN_PROC_BROWSER_TEST_P(PreviewsLitePageServerBrowserTest,
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kPreviewUnavailable,
1);
previews::LitePageRedirectServerResponse::kPreviewUnavailable, 1);
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.HostBlacklistedOnBypass", true, 1);
......@@ -1330,9 +1326,7 @@ IN_PROC_BROWSER_TEST_P(PreviewsLitePageServerBrowserTest,
VerifyPreviewNotLoaded();
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.BlacklistReasons",
PreviewsLitePageNavigationThrottle::BlacklistReason::
kHostBypassBlacklisted,
1);
previews::LitePageRedirectBlacklistReason::kHostBypassBlacklisted, 1);
ClearDeciderState();
ui_test_utils::NavigateToURL(browser(), HttpsLitePageURL(kSuccess));
......@@ -1347,7 +1341,7 @@ IN_PROC_BROWSER_TEST_P(PreviewsLitePageServerBrowserTest,
ClearDeciderState();
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kAuthFailure, 1);
previews::LitePageRedirectServerResponse::kAuthFailure, 1);
}
{
......@@ -1358,8 +1352,7 @@ IN_PROC_BROWSER_TEST_P(PreviewsLitePageServerBrowserTest,
ClearDeciderState();
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kServiceUnavailable,
1);
previews::LitePageRedirectServerResponse::kServiceUnavailable, 1);
}
}
......@@ -1607,7 +1600,7 @@ IN_PROC_BROWSER_TEST_P(PreviewsLitePageServerTimeoutBrowserTest,
ClearDeciderState();
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kTimeout, 1);
previews::LitePageRedirectServerResponse::kTimeout, 1);
}
{
......@@ -1658,9 +1651,7 @@ IN_PROC_BROWSER_TEST_P(
VerifyPreviewNotLoaded();
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.IneligibleReasons",
PreviewsLitePageNavigationThrottle::IneligibleReason::
kServiceProbeFailed,
1);
previews::LitePageRedirectIneligibleReason::kServiceProbeFailed, 1);
}
}
......@@ -1786,7 +1777,7 @@ IN_PROC_BROWSER_TEST_P(
->GetMessageText());
histogram_tester.ExpectBucketCount(
"Previews.ServerLitePage.IneligibleReasons",
PreviewsLitePageNavigationThrottle::IneligibleReason::kInfoBarNotSeen, 1);
previews::LitePageRedirectIneligibleReason::kInfoBarNotSeen, 1);
}
class PreviewsLitePageDSDisabledBrowserTest
......
......@@ -65,14 +65,6 @@ bool HandlePreviewsLitePageURLRewriteReverse(
return false;
}
// static
void PreviewsLitePageNavigationThrottle::LogIneligibleReason(
IneligibleReason reason) {
UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.IneligibleReasons",
reason);
}
// static
GURL PreviewsLitePageNavigationThrottle::GetPreviewsURLForURL(
const GURL& original_url) {
......
......@@ -33,85 +33,9 @@ bool HandlePreviewsLitePageURLRewriteReverse(
class PreviewsLitePageNavigationThrottle {
public:
// Reasons that a navigation is blacklisted from this preview. This enum must
// remain synchronized with the enum |PreviewsServerLitePageBlacklistReason|
// in tools/metrics/histograms/enums.xml.
enum class BlacklistReason {
kPathSuffixBlacklisted_DEPRECATED = 0,
kNavigationToPreviewsDomain = 1,
kNavigationToPrivateDomain = 2,
kHostBypassBlacklisted = 3,
kMaxValue = kHostBypassBlacklisted,
};
// Reasons that a navigation is not eligible for this preview. This enum must
// remain synchronized with the enum |PreviewsServerLitePageIneligibleReason|
// in tools/metrics/histograms/enums.xml.
enum class IneligibleReason {
kNonHttpsScheme = 0,
kHttpPost_DEPRECATED = 1,
kSubframeNavigation = 2,
kServerUnavailable = 3,
kInfoBarNotSeen = 4,
kNetworkNotSlow_DEPRECATED = 5,
kLoadOriginalReload = 6,
kCookiesBlocked = 7,
kECTUnknown_DEPRECATED = 8,
kExceededMaxNavigationRestarts = 9,
kPreviewsState_DEPRECATED = 10,
kInvalidProxyHeaders = 11,
kServiceProbeIncomplete = 12,
kServiceProbeFailed = 13,
kMaxValue = kServiceProbeFailed,
};
// The response type from the previews server. This enum must
// remain synchronized with the enum |PreviewsServerLitePageServerResponse| in
// tools/metrics/histograms/enums.xml.
enum class ServerResponse {
// A preview was served (HTTP 200).
kOk = 0,
// The client was redirected to another page (HTTP 307).
kRedirect = 1,
// The requested preview was not available (HTTP 307).
kPreviewUnavailable = 2,
// The previews server is not available (HTTP 503).
kServiceUnavailable = 3,
// The previews server responded with some other HTTP code.
kOther = 4,
// There was some network error and we did not get a response from the
// previews server.
kFailed = 5,
// The previews server did not respond after a timeout.
kTimeout = 6,
// The previews server rejected our authentication (HTTP 403).
kAuthFailure = 7,
// No response headers were available from the preview server.
kNoResponseHeaders = 8,
// The connection was closed without getting a response.
kOnCompleteBeforeOnResponse = 9,
// There was an error connecting to the previews server.
kConnectionError = 10,
kMaxValue = kConnectionError,
};
// Returns the URL for a preview given by the url.
static GURL GetPreviewsURLForURL(const GURL& original_url);
// Records an entry in the ineligibility histogram.
static void LogIneligibleReason(IneligibleReason reason);
// Gets the ServerLitePageInfo struct from an existing attempted lite page
// navigation, if there is one. If not, returns a new ServerLitePageInfo
// initialized with metadata from navigation_handle() and |this| that is owned
......
......@@ -21,8 +21,8 @@
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "chrome/browser/previews/previews_lite_page_decider.h"
#include "chrome/browser/previews/previews_lite_page_navigation_throttle.h"
#include "chrome/browser/previews/previews_lite_page_navigation_throttle_manager.h"
#include "chrome/browser/previews/previews_lite_page_url_loader_interceptor.h"
#include "chrome/browser/previews/previews_service.h"
#include "chrome/browser/previews/previews_service_factory.h"
#include "chrome/browser/profiles/profile.h"
......@@ -195,9 +195,8 @@ void PreviewsLitePageServingURLLoader::Timeout() {
if (result_callback_.is_null())
return;
UMA_HISTOGRAM_ENUMERATION(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kTimeout);
UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.ServerResponse",
previews::LitePageRedirectServerResponse::kTimeout);
Fallback();
}
......@@ -259,16 +258,16 @@ void PreviewsLitePageServingURLLoader::OnReceiveResponse(
if (!response_headers) {
UMA_HISTOGRAM_ENUMERATION(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kNoResponseHeaders);
previews::LitePageRedirectServerResponse::kNoResponseHeaders);
Fallback();
return;
}
if (response_headers->response_code() != net::HTTP_OK) {
if (response_headers->response_code() == net::HTTP_SERVICE_UNAVAILABLE) {
UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::
ServerResponse::kServiceUnavailable);
UMA_HISTOGRAM_ENUMERATION(
"Previews.ServerLitePage.ServerResponse",
previews::LitePageRedirectServerResponse::kServiceUnavailable);
std::string retry_after_header;
base::TimeDelta retry_after = base::TimeDelta::FromSeconds(base::RandInt(
60, previews::params::PreviewServerLoadshedMaxSeconds()));
......@@ -281,20 +280,19 @@ void PreviewsLitePageServingURLLoader::OnReceiveResponse(
} else if (response_headers->response_code() == net::HTTP_FORBIDDEN) {
UMA_HISTOGRAM_ENUMERATION(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kAuthFailure);
previews::LitePageRedirectServerResponse::kAuthFailure);
} else {
UMA_HISTOGRAM_ENUMERATION(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kOther);
previews::LitePageRedirectServerResponse::kOther);
}
Fallback();
return;
}
UMA_HISTOGRAM_ENUMERATION(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kOk);
UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.ServerResponse",
previews::LitePageRedirectServerResponse::kOk);
// Store head and pause new messages until the forwarding client is set up.
// Make a deep copy of ResourceResponseHead before passing it cross-thread.
......@@ -333,9 +331,9 @@ void PreviewsLitePageServingURLLoader::OnReceiveRedirect(
if (previews::ExtractOriginalURLFromLitePageRedirectURL(previews_url_,
&original_url) &&
GURL(original_url) == redirect_info.new_url) {
UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::
ServerResponse::kPreviewUnavailable);
UMA_HISTOGRAM_ENUMERATION(
"Previews.ServerLitePage.ServerResponse",
previews::LitePageRedirectServerResponse::kPreviewUnavailable);
const net::HttpResponseHeaders* response_headers = head->headers.get();
std::string chrome_proxy_header;
......@@ -359,7 +357,7 @@ void PreviewsLitePageServingURLLoader::OnReceiveRedirect(
UMA_HISTOGRAM_ENUMERATION(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kRedirect);
previews::LitePageRedirectServerResponse::kRedirect);
std::move(result_callback_)
.Run(ServingLoaderResult::kRedirect, redirect_info, resource_response_);
......@@ -405,9 +403,9 @@ void PreviewsLitePageServingURLLoader::OnComplete(
"Previews.ServerLitePage.ServerNetError.BeforeCommit",
-status.error_code);
UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::
kOnCompleteBeforeOnResponse);
UMA_HISTOGRAM_ENUMERATION(
"Previews.ServerLitePage.ServerResponse",
previews::LitePageRedirectServerResponse::kOnCompleteBeforeOnResponse);
// If OnComplete is called before, OnReceiveResponse, this is indicative of a
// failure of some sort.
......@@ -449,7 +447,7 @@ void PreviewsLitePageServingURLLoader::OnConnectionError() {
if (!result_callback_.is_null()) {
UMA_HISTOGRAM_ENUMERATION(
"Previews.ServerLitePage.ServerResponse",
PreviewsLitePageNavigationThrottle::ServerResponse::kConnectionError);
previews::LitePageRedirectServerResponse::kConnectionError);
Fallback();
return;
}
......
......@@ -77,6 +77,12 @@ net::HttpRequestHeaders GetChromeProxyHeaders(
} // namespace
void LogLitePageRedirectIneligibleReason(
LitePageRedirectIneligibleReason reason) {
UMA_HISTOGRAM_ENUMERATION("Previews.ServerLitePage.IneligibleReasons",
reason);
}
PreviewsLitePageURLLoaderInterceptor::PreviewsLitePageURLLoaderInterceptor(
const scoped_refptr<network::SharedURLLoaderFactory>&
network_loader_factory,
......
......@@ -21,6 +21,85 @@
namespace previews {
// Reasons that a navigation is blacklisted from a lite page redirect preview.
// This enum must remain synchronized with the enum
// |PreviewsServerLitePageBlacklistReason| in
// tools/metrics/histograms/enums.xml.
enum class LitePageRedirectBlacklistReason {
// DEPRECATED: kPathSuffixBlacklisted = 0,
kNavigationToPreviewsDomain = 1,
kNavigationToPrivateDomain = 2,
kHostBypassBlacklisted = 3,
kMaxValue = kHostBypassBlacklisted,
};
// Reasons that a navigation is not eligible for a lite page redirect preview.
// This enum must remain synchronized with the enum
// |PreviewsServerLitePageIneligibleReason| in
// tools/metrics/histograms/enums.xml.
enum class LitePageRedirectIneligibleReason {
kNonHttpsScheme = 0,
// DEPRECATED: kHttpPost = 1,
kSubframeNavigation = 2,
kServerUnavailable = 3,
kInfoBarNotSeen = 4,
// DEPRECATED: kNetworkNotSlow = 5,
kLoadOriginalReload = 6,
kCookiesBlocked = 7,
// DEPRECATED: kECTUnknown = 8,
kExceededMaxNavigationRestarts = 9,
// DEPRECATED: kPreviewsState = 10,
kInvalidProxyHeaders = 11,
kServiceProbeIncomplete = 12,
kServiceProbeFailed = 13,
kMaxValue = kServiceProbeFailed,
};
// The response type from the previews server. This enum must
// remain synchronized with the enum |PreviewsServerLitePageServerResponse| in
// tools/metrics/histograms/enums.xml.
enum class LitePageRedirectServerResponse {
// A preview was served (HTTP 200).
kOk = 0,
// The client was redirected to another page (HTTP 307).
kRedirect = 1,
// The requested preview was not available (HTTP 307).
kPreviewUnavailable = 2,
// The previews server is not available (HTTP 503).
kServiceUnavailable = 3,
// The previews server responded with some other HTTP code.
kOther = 4,
// There was some network error and we did not get a response from the
// previews server.
kFailed = 5,
// The previews server did not respond after a timeout.
kTimeout = 6,
// The previews server rejected our authentication (HTTP 403).
kAuthFailure = 7,
// No response headers were available from the preview server.
kNoResponseHeaders = 8,
// The connection was closed without getting a response.
kOnCompleteBeforeOnResponse = 9,
// There was an error connecting to the previews server.
kConnectionError = 10,
kMaxValue = kConnectionError,
};
// Records an entry in the lite page redirect ineligibility histogram.
void LogLitePageRedirectIneligibleReason(
LitePageRedirectIneligibleReason reason);
// A class that attempts to intercept requests and fetch the Lite Page version
// of the request. Its lifetime matches that of the content/ navigation loader
// code. Currently, not fully implemented.
......
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