Commit c044fe66 authored by Doug Arnett's avatar Doug Arnett Committed by Commit Bot

Logs a previews coin flip holdback event to interventions-internals page

Currently there is no visibility in interventions-internals if a coin
flip is preventing you from seeing a preview. This posts a new event
to that page when a coin flip happens.

Bug: 1000436
Change-Id: I5e1367891acb3e5f57e045a6e55335b081a25357
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1785821
Commit-Queue: Doug Arnett <dougarnett@chromium.org>
Reviewed-by: default avatarRobert Ogden <robertogden@chromium.org>
Reviewed-by: default avatarTarun Bansal <tbansal@chromium.org>
Cr-Commit-Position: refs/heads/master@{#693836}
parent cdc31e82
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "base/optional.h" #include "base/optional.h"
#include "base/rand_util.h" #include "base/rand_util.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/time/default_clock.h"
#include "chrome/browser/content_settings/cookie_settings_factory.h" #include "chrome/browser/content_settings/cookie_settings_factory.h"
#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.h" #include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.h"
#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings_factory.h" #include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings_factory.h"
...@@ -29,6 +30,7 @@ ...@@ -29,6 +30,7 @@
#include "components/content_settings/core/browser/cookie_settings.h" #include "components/content_settings/core/browser/cookie_settings.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.h"
#include "components/previews/content/previews_ui_service.h"
#include "components/previews/content/previews_user_data.h" #include "components/previews/content/previews_user_data.h"
#include "components/previews/core/previews_experiments.h" #include "components/previews/core/previews_experiments.h"
#include "components/previews/core/previews_features.h" #include "components/previews/core/previews_features.h"
...@@ -357,6 +359,26 @@ void UpdatePreviewsUserDataAndRecordCoinFlipResult( ...@@ -357,6 +359,26 @@ void UpdatePreviewsUserDataAndRecordCoinFlipResult(
previews::CoinFlipHoldbackResult result) { previews::CoinFlipHoldbackResult result) {
DCHECK_NE(result, previews::CoinFlipHoldbackResult::kNotSet); DCHECK_NE(result, previews::CoinFlipHoldbackResult::kNotSet);
// Log a coin flip holdback to the interventions-internals page.
if (result == previews::CoinFlipHoldbackResult::kHoldback) {
auto* previews_service =
navigation_handle && navigation_handle->GetWebContents()
? PreviewsServiceFactory::GetForProfile(Profile::FromBrowserContext(
navigation_handle->GetWebContents()->GetBrowserContext()))
: nullptr;
if (previews_service && previews_service->previews_ui_service()) {
PreviewsEligibilityReason reason =
PreviewsEligibilityReason::COINFLIP_HOLDBACK;
PreviewsType type =
previews_user_data->PreHoldbackCommittedPreviewsType();
std::vector<PreviewsEligibilityReason> passed_reasons;
previews_service->previews_ui_service()->LogPreviewDecisionMade(
reason, navigation_handle->GetURL(),
base::DefaultClock::GetInstance()->Now(), type,
std::move(passed_reasons), previews_user_data->page_id());
}
}
// We only want to record the coin flip once per navigation when set, so if it // We only want to record the coin flip once per navigation when set, so if it
// is already set then we're done. // is already set then we're done.
if (previews_user_data->coin_flip_holdback_result() != if (previews_user_data->coin_flip_holdback_result() !=
......
...@@ -85,6 +85,8 @@ enum class PreviewsEligibilityReason { ...@@ -85,6 +85,8 @@ enum class PreviewsEligibilityReason {
// optimization guide did not allow this preview type in the current browser // optimization guide did not allow this preview type in the current browser
// conditions. // conditions.
NOT_ALLOWED_BY_OPTIMIZATION_GUIDE = 19, NOT_ALLOWED_BY_OPTIMIZATION_GUIDE = 19,
// The preview was not performed due to a coinflip experiment holdback.
COINFLIP_HOLDBACK = 20,
LAST, LAST,
}; };
......
...@@ -98,6 +98,9 @@ std::string GetReasonDescription(PreviewsEligibilityReason reason, ...@@ -98,6 +98,9 @@ std::string GetReasonDescription(PreviewsEligibilityReason reason,
case PreviewsEligibilityReason::NOT_ALLOWED_BY_OPTIMIZATION_GUIDE: case PreviewsEligibilityReason::NOT_ALLOWED_BY_OPTIMIZATION_GUIDE:
return want_inverse_description ? "Allowed by server rules" return want_inverse_description ? "Allowed by server rules"
: "Not allowed by server rules"; : "Not allowed by server rules";
case PreviewsEligibilityReason::COINFLIP_HOLDBACK:
DCHECK(!want_inverse_description);
return "Coin flip holdback encountered";
case PreviewsEligibilityReason::LAST: case PreviewsEligibilityReason::LAST:
break; break;
} }
......
...@@ -49250,6 +49250,7 @@ Called by update_net_trust_anchors.py.--> ...@@ -49250,6 +49250,7 @@ Called by update_net_trust_anchors.py.-->
<int value="17" label="Optimization hints not loaded."/> <int value="17" label="Optimization hints not loaded."/>
<int value="18" label="The navigation URL had an excluded media suffix."/> <int value="18" label="The navigation URL had an excluded media suffix."/>
<int value="19" label="Not allowed by server rules provided to the client."/> <int value="19" label="Not allowed by server rules provided to the client."/>
<int value="20" label="Coin flip holdback encountered."/>
</enum> </enum>
<enum name="PreviewsHintCacheLevelDBStoreLoadMetadataResult"> <enum name="PreviewsHintCacheLevelDBStoreLoadMetadataResult">
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