[AW] Record app data dir size in UMA.
Also fix the spelling of OffsetParentNewSpecBehavior as it's breaking a presubmit check. Test: unit test, manual test (https://photos.app.goo.gl/R344qyHJsEha6onU9) Bug: 1184061 Change-Id: I0c0b3d380e17d689479557598d4c753fca8d6518 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3671315 Commit-Queue: Qi Xiao <xiaq@chromium.org> Reviewed-by: Nate Fischer <ntfschr@chromium.org> Reviewed-by: Andrey Zaytsev <andzaytsev@google.com> Cr-Commit-Position: refs/heads/main@{#1012565}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
d297b4e451
commit
15a03a95b4
android_webview
browser
common
java
src
org
chromium
android_webview
components/embedder_support/android/metrics
tools/metrics/histograms
@@ -13,10 +13,16 @@
|
|||||||
#include "base/android/callback_android.h"
|
#include "base/android/callback_android.h"
|
||||||
#include "base/android/jni_android.h"
|
#include "base/android/jni_android.h"
|
||||||
#include "base/android/jni_string.h"
|
#include "base/android/jni_string.h"
|
||||||
|
#include "base/base_paths_android.h"
|
||||||
#include "base/feature_list.h"
|
#include "base/feature_list.h"
|
||||||
|
#include "base/files/file_util.h"
|
||||||
#include "base/metrics/histogram_functions.h"
|
#include "base/metrics/histogram_functions.h"
|
||||||
#include "base/metrics/persistent_histogram_allocator.h"
|
#include "base/metrics/persistent_histogram_allocator.h"
|
||||||
|
#include "base/path_service.h"
|
||||||
|
#include "base/task/task_traits.h"
|
||||||
|
#include "base/task/thread_pool.h"
|
||||||
#include "base/time/time.h"
|
#include "base/time/time.h"
|
||||||
|
#include "base/trace_event/trace_event.h"
|
||||||
#include "components/metrics/metrics_pref_names.h"
|
#include "components/metrics/metrics_pref_names.h"
|
||||||
#include "components/metrics/metrics_service.h"
|
#include "components/metrics/metrics_service.h"
|
||||||
#include "components/prefs/pref_service.h"
|
#include "components/prefs/pref_service.h"
|
||||||
@@ -60,6 +66,8 @@ AwMetricsServiceClient* g_aw_metrics_service_client = nullptr;
|
|||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
const base::TimeDelta kRecordAppDataDirectorySizeDelay = base::Seconds(10);
|
||||||
|
|
||||||
AwMetricsServiceClient::Delegate::Delegate() = default;
|
AwMetricsServiceClient::Delegate::Delegate() = default;
|
||||||
AwMetricsServiceClient::Delegate::~Delegate() = default;
|
AwMetricsServiceClient::Delegate::~Delegate() = default;
|
||||||
|
|
||||||
@@ -198,8 +206,36 @@ void AwMetricsServiceClient::SetAppPackageNameLoggingRuleLastUpdateTime(
|
|||||||
update_time);
|
update_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Used below in AwMetricsServiceClient::OnMetricsStart.
|
||||||
|
void RecordAppDataDirectorySize() {
|
||||||
|
TRACE_EVENT_BEGIN0("android_webview", "RecordAppDataDirectorySize");
|
||||||
|
base::TimeTicks start_time = base::TimeTicks::Now();
|
||||||
|
|
||||||
|
base::FilePath app_data_dir;
|
||||||
|
base::PathService::Get(base::DIR_ANDROID_APP_DATA, &app_data_dir);
|
||||||
|
int64_t bytes = base::ComputeDirectorySize(app_data_dir);
|
||||||
|
// Record size up to 100MB
|
||||||
|
base::UmaHistogramCounts100000("Android.WebView.AppDataDirectory.Size",
|
||||||
|
bytes / 1024);
|
||||||
|
|
||||||
|
base::UmaHistogramMediumTimes(
|
||||||
|
"Android.WebView.AppDataDirectory.TimeToComputeSize",
|
||||||
|
base::TimeTicks::Now() - start_time);
|
||||||
|
TRACE_EVENT_END0("android_webview", "RecordAppDataDirectorySize");
|
||||||
|
}
|
||||||
|
|
||||||
void AwMetricsServiceClient::OnMetricsStart() {
|
void AwMetricsServiceClient::OnMetricsStart() {
|
||||||
delegate_->AddWebViewAppStateObserver(this);
|
delegate_->AddWebViewAppStateObserver(this);
|
||||||
|
if (base::FeatureList::IsEnabled(
|
||||||
|
android_webview::features::kWebViewRecordAppDataDirectorySize) &&
|
||||||
|
IsReportingEnabled()) {
|
||||||
|
// Calculating directory size can be fairly expensive, so only do this when
|
||||||
|
// we are certain that the UMA histogram will be logged to the server.
|
||||||
|
base::ThreadPool::PostDelayedTask(
|
||||||
|
FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
|
||||||
|
base::BindOnce(&RecordAppDataDirectorySize),
|
||||||
|
kRecordAppDataDirectorySizeDelay);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AwMetricsServiceClient::OnMetricsNotStarted() {}
|
void AwMetricsServiceClient::OnMetricsNotStarted() {}
|
||||||
|
@@ -39,6 +39,12 @@ enum class BackfillInstallDate {
|
|||||||
kMaxValue = kPersistedPackageManagerInstallDate,
|
kMaxValue = kPersistedPackageManagerInstallDate,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// The amount of delay before calculating and recording the app data directory
|
||||||
|
// size, intended for avoiding IO contention when an app is initializing.
|
||||||
|
//
|
||||||
|
// Visible for testing.
|
||||||
|
extern const base::TimeDelta kRecordAppDataDirectorySizeDelay;
|
||||||
|
|
||||||
// AwMetricsServiceClient is a singleton which manages WebView metrics
|
// AwMetricsServiceClient is a singleton which manages WebView metrics
|
||||||
// collection.
|
// collection.
|
||||||
//
|
//
|
||||||
|
@@ -8,14 +8,19 @@
|
|||||||
|
|
||||||
#include "android_webview/common/aw_features.h"
|
#include "android_webview/common/aw_features.h"
|
||||||
#include "android_webview/common/metrics/app_package_name_logging_rule.h"
|
#include "android_webview/common/metrics/app_package_name_logging_rule.h"
|
||||||
|
#include "base/metrics/histogram.h"
|
||||||
#include "base/metrics/user_metrics.h"
|
#include "base/metrics/user_metrics.h"
|
||||||
#include "base/test/metrics/histogram_tester.h"
|
#include "base/test/metrics/histogram_tester.h"
|
||||||
#include "base/test/scoped_feature_list.h"
|
#include "base/test/scoped_feature_list.h"
|
||||||
|
#include "base/test/task_environment.h"
|
||||||
#include "base/test/test_simple_task_runner.h"
|
#include "base/test/test_simple_task_runner.h"
|
||||||
#include "base/time/time.h"
|
#include "base/time/time.h"
|
||||||
#include "base/version.h"
|
#include "base/version.h"
|
||||||
#include "components/embedder_support/android/metrics/android_metrics_service_client.h"
|
#include "components/embedder_support/android/metrics/android_metrics_service_client.h"
|
||||||
|
#include "components/metrics/metrics_switches.h"
|
||||||
#include "components/prefs/testing_pref_service.h"
|
#include "components/prefs/testing_pref_service.h"
|
||||||
|
#include "content/public/test/browser_task_environment.h"
|
||||||
|
#include "content/public/test/test_content_client_initializer.h"
|
||||||
#include "testing/gtest/include/gtest/gtest.h"
|
#include "testing/gtest/include/gtest/gtest.h"
|
||||||
|
|
||||||
namespace android_webview {
|
namespace android_webview {
|
||||||
@@ -38,6 +43,20 @@ class AwMetricsServiceClientTestDelegate
|
|||||||
bool HasAwContentsEverCreated() const override { return false; }
|
bool HasAwContentsEverCreated() const override { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Adds support for setting whether metric reporting is in sample.
|
||||||
|
class AwMetricsServiceTestClient : public AwMetricsServiceClient {
|
||||||
|
public:
|
||||||
|
explicit AwMetricsServiceTestClient(std::unique_ptr<Delegate> delegate)
|
||||||
|
: AwMetricsServiceClient(std::move(delegate)) {}
|
||||||
|
void SetInSample(bool in_sample) { in_sample_ = in_sample; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool IsInSample() const override { return in_sample_; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool in_sample_ = false;
|
||||||
|
};
|
||||||
|
|
||||||
class AwMetricsServiceClientTest : public testing::Test {
|
class AwMetricsServiceClientTest : public testing::Test {
|
||||||
AwMetricsServiceClientTest& operator=(const AwMetricsServiceClientTest&) =
|
AwMetricsServiceClientTest& operator=(const AwMetricsServiceClientTest&) =
|
||||||
delete;
|
delete;
|
||||||
@@ -48,21 +67,32 @@ class AwMetricsServiceClientTest : public testing::Test {
|
|||||||
AwMetricsServiceClientTest()
|
AwMetricsServiceClientTest()
|
||||||
: task_runner_(new base::TestSimpleTaskRunner),
|
: task_runner_(new base::TestSimpleTaskRunner),
|
||||||
prefs_(std::make_unique<TestingPrefServiceSimple>()),
|
prefs_(std::make_unique<TestingPrefServiceSimple>()),
|
||||||
client_(std::make_unique<AwMetricsServiceClient>(
|
client_(std::make_unique<AwMetricsServiceTestClient>(
|
||||||
std::make_unique<AwMetricsServiceClientTestDelegate>())) {
|
std::make_unique<AwMetricsServiceClientTestDelegate>())) {
|
||||||
// Required by MetricsService.
|
// Required by MetricsService.
|
||||||
base::SetRecordActionTaskRunner(task_runner_);
|
base::SetRecordActionTaskRunner(task_runner_);
|
||||||
AwMetricsServiceClient::RegisterMetricsPrefs(prefs_->registry());
|
AwMetricsServiceTestClient::RegisterMetricsPrefs(prefs_->registry());
|
||||||
client_->Initialize(prefs_.get());
|
client_->Initialize(prefs_.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
AwMetricsServiceClient* GetClient() { return client_.get(); }
|
AwMetricsServiceTestClient* GetClient() { return client_.get(); }
|
||||||
TestingPrefServiceSimple* GetPrefs() { return prefs_.get(); }
|
TestingPrefServiceSimple* GetPrefs() { return prefs_.get(); }
|
||||||
|
|
||||||
|
void TriggerDelayedRecordAppDataDirectorySize() {
|
||||||
|
task_environment_.FastForwardBy(kRecordAppDataDirectorySizeDelay);
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// Needed since starting metrics reporting triggers code that uses content::
|
||||||
|
// objects.
|
||||||
|
content::TestContentClientInitializer test_content_initializer_;
|
||||||
|
// Needed since starting metrics reporting triggers code that expects to be
|
||||||
|
// running on the browser UI thread. Also needed for its FastForwardBy method.
|
||||||
|
content::BrowserTaskEnvironment task_environment_{
|
||||||
|
base::test::TaskEnvironment::TimeSource::MOCK_TIME};
|
||||||
scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
|
scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
|
||||||
std::unique_ptr<TestingPrefServiceSimple> prefs_;
|
std::unique_ptr<TestingPrefServiceSimple> prefs_;
|
||||||
std::unique_ptr<AwMetricsServiceClient> client_;
|
std::unique_ptr<AwMetricsServiceTestClient> client_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
@@ -309,4 +339,69 @@ TEST_F(AwMetricsServiceClientTest, TestGetAppPackageNameIfLoggable) {
|
|||||||
EXPECT_TRUE(client.GetAppPackageNameIfLoggable().empty());
|
EXPECT_TRUE(client.GetAppPackageNameIfLoggable().empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(
|
||||||
|
AwMetricsServiceClientTest,
|
||||||
|
TestAppDataDirectorySize_RecordedIfFeatureEnabledConsentGrantedAndInSample) {
|
||||||
|
base::test::ScopedFeatureList scoped_list;
|
||||||
|
scoped_list.InitAndEnableFeature(
|
||||||
|
android_webview::features::kWebViewRecordAppDataDirectorySize);
|
||||||
|
base::HistogramTester histogram_tester;
|
||||||
|
|
||||||
|
GetClient()->SetInSample(true);
|
||||||
|
GetClient()->SetHaveMetricsConsent(true, true);
|
||||||
|
TriggerDelayedRecordAppDataDirectorySize();
|
||||||
|
|
||||||
|
histogram_tester.ExpectTotalCount("Android.WebView.AppDataDirectory.Size", 1);
|
||||||
|
histogram_tester.ExpectTotalCount(
|
||||||
|
"Android.WebView.AppDataDirectory.TimeToComputeSize", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(AwMetricsServiceClientTest,
|
||||||
|
TestAppDataDirectorySize_NotRecordedIfFeatureDisabled) {
|
||||||
|
base::test::ScopedFeatureList scoped_list;
|
||||||
|
scoped_list.InitAndDisableFeature(
|
||||||
|
android_webview::features::kWebViewRecordAppDataDirectorySize);
|
||||||
|
base::HistogramTester histogram_tester;
|
||||||
|
|
||||||
|
GetClient()->SetInSample(true);
|
||||||
|
GetClient()->SetHaveMetricsConsent(true, true);
|
||||||
|
TriggerDelayedRecordAppDataDirectorySize();
|
||||||
|
|
||||||
|
histogram_tester.ExpectTotalCount("Android.WebView.AppDataDirectory,Size", 0);
|
||||||
|
histogram_tester.ExpectTotalCount(
|
||||||
|
"Android.WebView.AppDataDirectory.TimeToComputeSize", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(AwMetricsServiceClientTest,
|
||||||
|
TestAppDataDirectorySize_NotRecordedIfConsentNotGranted) {
|
||||||
|
base::test::ScopedFeatureList scoped_list;
|
||||||
|
scoped_list.InitAndEnableFeature(
|
||||||
|
android_webview::features::kWebViewRecordAppDataDirectorySize);
|
||||||
|
base::HistogramTester histogram_tester;
|
||||||
|
|
||||||
|
GetClient()->SetInSample(true);
|
||||||
|
GetClient()->SetHaveMetricsConsent(true, false);
|
||||||
|
TriggerDelayedRecordAppDataDirectorySize();
|
||||||
|
|
||||||
|
histogram_tester.ExpectTotalCount("Android.WebView.AppDataDirectory.Size", 0);
|
||||||
|
histogram_tester.ExpectTotalCount(
|
||||||
|
"Android.WebView.AppDataDirectory.TimeToComputeSize", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(AwMetricsServiceClientTest,
|
||||||
|
TestAppDataDirectorySize_NotRecordedIfNotInSample) {
|
||||||
|
base::test::ScopedFeatureList scoped_list;
|
||||||
|
scoped_list.InitAndEnableFeature(
|
||||||
|
android_webview::features::kWebViewRecordAppDataDirectorySize);
|
||||||
|
base::HistogramTester histogram_tester;
|
||||||
|
|
||||||
|
GetClient()->SetInSample(false);
|
||||||
|
GetClient()->SetHaveMetricsConsent(true, true);
|
||||||
|
TriggerDelayedRecordAppDataDirectorySize();
|
||||||
|
|
||||||
|
histogram_tester.ExpectTotalCount("Android.WebView.AppDataDirectory.Size", 0);
|
||||||
|
histogram_tester.ExpectTotalCount(
|
||||||
|
"Android.WebView.AppDataDirectory.TimeToComputeSize", 0);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace android_webview
|
} // namespace android_webview
|
||||||
|
@@ -89,6 +89,11 @@ const base::Feature kWebViewMeasureScreenCoverage{
|
|||||||
const base::Feature kWebViewOriginTrials{"WebViewOriginTrials",
|
const base::Feature kWebViewOriginTrials{"WebViewOriginTrials",
|
||||||
base::FEATURE_DISABLED_BY_DEFAULT};
|
base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
|
|
||||||
|
// Whether to record size of the embedding app's data directory to the UMA
|
||||||
|
// histogram Android.WebView.AppDataDirectorySize.
|
||||||
|
const base::Feature kWebViewRecordAppDataDirectorySize{
|
||||||
|
"WebViewRecordAppDataDirectorySize", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
|
|
||||||
// Whether WebView will send variations headers on URLs where applicable.
|
// Whether WebView will send variations headers on URLs where applicable.
|
||||||
const base::Feature kWebViewSendVariationsHeaders{
|
const base::Feature kWebViewSendVariationsHeaders{
|
||||||
"WebViewSendVariationsHeaders", base::FEATURE_DISABLED_BY_DEFAULT};
|
"WebViewSendVariationsHeaders", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
|
@@ -32,6 +32,7 @@ extern const base::Feature kWebViewLegacyTlsSupport;
|
|||||||
extern const base::Feature kWebViewMeasureScreenCoverage;
|
extern const base::Feature kWebViewMeasureScreenCoverage;
|
||||||
extern const base::Feature kWebViewMixedContentAutoupgrades;
|
extern const base::Feature kWebViewMixedContentAutoupgrades;
|
||||||
extern const base::Feature kWebViewOriginTrials;
|
extern const base::Feature kWebViewOriginTrials;
|
||||||
|
extern const base::Feature kWebViewRecordAppDataDirectorySize;
|
||||||
extern const base::Feature kWebViewSendVariationsHeaders;
|
extern const base::Feature kWebViewSendVariationsHeaders;
|
||||||
extern const base::Feature kWebViewSuppressDifferentOriginSubframeJSDialogs;
|
extern const base::Feature kWebViewSuppressDifferentOriginSubframeJSDialogs;
|
||||||
extern const base::Feature kWebViewTestFeature;
|
extern const base::Feature kWebViewTestFeature;
|
||||||
|
@@ -340,6 +340,8 @@ public final class ProductionSupportedFlagList {
|
|||||||
"Run tasks in queue for 8ms before before sending a system message."),
|
"Run tasks in queue for 8ms before before sending a system message."),
|
||||||
Flag.baseFeature(BlinkFeatures.OFFSET_PARENT_NEW_SPEC_BEHAVIOR,
|
Flag.baseFeature(BlinkFeatures.OFFSET_PARENT_NEW_SPEC_BEHAVIOR,
|
||||||
"Enables new HTMLElement.offsetParent behavior to match other browsers."),
|
"Enables new HTMLElement.offsetParent behavior to match other browsers."),
|
||||||
|
Flag.baseFeature(AwFeatures.WEBVIEW_RECORD_APP_DATA_DIRECTORY_SIZE,
|
||||||
|
"Record the size of the embedding app's data directory")
|
||||||
// Add new commandline switches and features above. The final entry should have a
|
// Add new commandline switches and features above. The final entry should have a
|
||||||
// trailing comma for cleaner diffs.
|
// trailing comma for cleaner diffs.
|
||||||
};
|
};
|
||||||
|
@@ -220,7 +220,7 @@ class AndroidMetricsServiceClient : public MetricsServiceClient,
|
|||||||
// we log metrics. If this returns false, MetricsServiceClient should
|
// we log metrics. If this returns false, MetricsServiceClient should
|
||||||
// indicate reporting is disabled. Sampling is due to storage/bandwidth
|
// indicate reporting is disabled. Sampling is due to storage/bandwidth
|
||||||
// considerations.
|
// considerations.
|
||||||
bool IsInSample() const;
|
virtual bool IsInSample() const;
|
||||||
|
|
||||||
// Returns the installer type of the app.
|
// Returns the installer type of the app.
|
||||||
virtual InstallerPackageType GetInstallerPackageType();
|
virtual InstallerPackageType GetInstallerPackageType();
|
||||||
|
@@ -56239,7 +56239,6 @@ from previous Chrome versions.
|
|||||||
<int value="-1151615978" label="BorealisBigGl:disabled"/>
|
<int value="-1151615978" label="BorealisBigGl:disabled"/>
|
||||||
<int value="-1151476162" label="LacrosMergeIcuDataFile:disabled"/>
|
<int value="-1151476162" label="LacrosMergeIcuDataFile:disabled"/>
|
||||||
<int value="-1151014496" label="NearbySharingDeviceContacts:disabled"/>
|
<int value="-1151014496" label="NearbySharingDeviceContacts:disabled"/>
|
||||||
<int value="-1149544733" label="OffsetparentNewSpecBehavior:enabled"/>
|
|
||||||
<int value="-1146814438" label="TabbedAppOverflowMenuIcons:enabled"/>
|
<int value="-1146814438" label="TabbedAppOverflowMenuIcons:enabled"/>
|
||||||
<int value="-1146310028" label="HardwareSecureDecryptionFallback:enabled"/>
|
<int value="-1146310028" label="HardwareSecureDecryptionFallback:enabled"/>
|
||||||
<int value="-1145905507" label="SendTabToSelfWhenSignedIn:disabled"/>
|
<int value="-1145905507" label="SendTabToSelfWhenSignedIn:disabled"/>
|
||||||
@@ -57810,7 +57809,6 @@ from previous Chrome versions.
|
|||||||
<int value="-92116820" label="InlineUpdateFlow:enabled"/>
|
<int value="-92116820" label="InlineUpdateFlow:enabled"/>
|
||||||
<int value="-91767554" label="enable-de-jelly"/>
|
<int value="-91767554" label="enable-de-jelly"/>
|
||||||
<int value="-91370149" label="UseSerialBusEnumerator:enabled"/>
|
<int value="-91370149" label="UseSerialBusEnumerator:enabled"/>
|
||||||
<int value="-90799024" label="OffsetparentNewSpecBehavior:disabled"/>
|
|
||||||
<int value="-90521375" label="PDFTwoUpView:enabled"/>
|
<int value="-90521375" label="PDFTwoUpView:enabled"/>
|
||||||
<int value="-90032223" label="BuiltInModuleInfra:disabled"/>
|
<int value="-90032223" label="BuiltInModuleInfra:disabled"/>
|
||||||
<int value="-89690053" label="MaterialDesignUserManager:enabled"/>
|
<int value="-89690053" label="MaterialDesignUserManager:enabled"/>
|
||||||
@@ -58625,6 +58623,7 @@ from previous Chrome versions.
|
|||||||
<int value="427184788" label="WebFeed:enabled"/>
|
<int value="427184788" label="WebFeed:enabled"/>
|
||||||
<int value="427807224" label="IPH_Snooze:disabled"/>
|
<int value="427807224" label="IPH_Snooze:disabled"/>
|
||||||
<int value="427945554" label="StrictExtensionIsolation:enabled"/>
|
<int value="427945554" label="StrictExtensionIsolation:enabled"/>
|
||||||
|
<int value="428554364" label="OffsetParentNewSpecBehavior:disabled"/>
|
||||||
<int value="430776375" label="TextureLayerSkipWaitForActivation:disabled"/>
|
<int value="430776375" label="TextureLayerSkipWaitForActivation:disabled"/>
|
||||||
<int value="430959979" label="SyncStandaloneTransport:disabled"/>
|
<int value="430959979" label="SyncStandaloneTransport:disabled"/>
|
||||||
<int value="431691805" label="MediaDocumentDownloadButton:enabled"/>
|
<int value="431691805" label="MediaDocumentDownloadButton:enabled"/>
|
||||||
@@ -59117,6 +59116,7 @@ from previous Chrome versions.
|
|||||||
<int value="749516419" label="DragToSnapInClamshellMode:disabled"/>
|
<int value="749516419" label="DragToSnapInClamshellMode:disabled"/>
|
||||||
<int value="749994865" label="MessagesForAndroidSyncError:enabled"/>
|
<int value="749994865" label="MessagesForAndroidSyncError:enabled"/>
|
||||||
<int value="750028579" label="CommerceCoupons:disabled"/>
|
<int value="750028579" label="CommerceCoupons:disabled"/>
|
||||||
|
<int value="751862578" label="OffsetParentNewSpecBehavior:enabled"/>
|
||||||
<int value="752194066" label="enable-app-window-cycling"/>
|
<int value="752194066" label="enable-app-window-cycling"/>
|
||||||
<int value="752416911" label="FastPair:disabled"/>
|
<int value="752416911" label="FastPair:disabled"/>
|
||||||
<int value="752939691" label="disable-tab-for-desktop-share"/>
|
<int value="752939691" label="disable-tab-for-desktop-share"/>
|
||||||
@@ -61047,6 +61047,7 @@ from previous Chrome versions.
|
|||||||
<int value="2032880973" label="U2FSecurityKeyAPI:disabled"/>
|
<int value="2032880973" label="U2FSecurityKeyAPI:disabled"/>
|
||||||
<int value="2034198538" label="TabHoverCards:enabled"/>
|
<int value="2034198538" label="TabHoverCards:enabled"/>
|
||||||
<int value="2035415906" label="Win11StyleMenus:enabled"/>
|
<int value="2035415906" label="Win11StyleMenus:enabled"/>
|
||||||
|
<int value="2035524582" label="WebViewRecordAppDataDirectorySize:disabled"/>
|
||||||
<int value="2037562553" label="OmniboxBubbleUrlSuggestions:disabled"/>
|
<int value="2037562553" label="OmniboxBubbleUrlSuggestions:disabled"/>
|
||||||
<int value="2037756154" label="enable-impl-side-painting"/>
|
<int value="2037756154" label="enable-impl-side-painting"/>
|
||||||
<int value="2038036881" label="NewShortcutMapping:enabled"/>
|
<int value="2038036881" label="NewShortcutMapping:enabled"/>
|
||||||
@@ -61202,6 +61203,7 @@ from previous Chrome versions.
|
|||||||
<int value="2142661816" label="AllowRemoteContextForNotifications:disabled"/>
|
<int value="2142661816" label="AllowRemoteContextForNotifications:disabled"/>
|
||||||
<int value="2142979536" label="EnableManualFallbacksFilling:disabled"/>
|
<int value="2142979536" label="EnableManualFallbacksFilling:disabled"/>
|
||||||
<int value="2144581598" label="UpcomingSharingFeatures:enabled"/>
|
<int value="2144581598" label="UpcomingSharingFeatures:enabled"/>
|
||||||
|
<int value="2145140507" label="WebViewRecordAppDataDirectorySize:enabled"/>
|
||||||
</enum>
|
</enum>
|
||||||
|
|
||||||
<enum name="LoginDatabaseInitError">
|
<enum name="LoginDatabaseInitError">
|
||||||
|
@@ -3490,6 +3490,26 @@ chromium-metrics-reviews@google.com.
|
|||||||
</summary>
|
</summary>
|
||||||
</histogram>
|
</histogram>
|
||||||
|
|
||||||
|
<histogram name="Android.WebView.AppDataDirectory.Size" units="KiB"
|
||||||
|
expires_after="2022-12-01">
|
||||||
|
<owner>xiaq@chromium.org</owner>
|
||||||
|
<owner>src/android_webview/OWNERS</owner>
|
||||||
|
<summary>
|
||||||
|
Size on disk taken by the embedding app's data directory, recorded once per
|
||||||
|
WebView startup after a small delay.
|
||||||
|
</summary>
|
||||||
|
</histogram>
|
||||||
|
|
||||||
|
<histogram name="Android.WebView.AppDataDirectory.TimeToComputeSize" units="ms"
|
||||||
|
expires_after="2022-12-01">
|
||||||
|
<owner>xiaq@chromium.org</owner>
|
||||||
|
<owner>src/android_webview/OWNERS</owner>
|
||||||
|
<summary>
|
||||||
|
Time to compute the size on disk taken by the embedding app's data
|
||||||
|
directory, recorded once per WebView startup after a small delay.
|
||||||
|
</summary>
|
||||||
|
</histogram>
|
||||||
|
|
||||||
<histogram name="Android.WebView.Callback.Counts" enum="WebViewCallbackType"
|
<histogram name="Android.WebView.Callback.Counts" enum="WebViewCallbackType"
|
||||||
expires_after="2022-11-13">
|
expires_after="2022-11-13">
|
||||||
<owner>ntfschr@chromium.org</owner>
|
<owner>ntfschr@chromium.org</owner>
|
||||||
|
Reference in New Issue
Block a user