Commit cc08626b authored by Clark DuVall's avatar Clark DuVall Committed by Chromium LUCI CQ

Log synthetic field trial for isolated splits on WebView

WebView didn't previously log the synthetic trial for isolated splits,
and may not have supported synthetic trials at all previously. This
matches the setup in chrome_browser_main.cc.

Bug: 1150162
Change-Id: I837c6b04059fcbd34248ebbe372bd08374f58b65
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2605007Reviewed-by: default avatarNate Fischer <ntfschr@chromium.org>
Commit-Queue: Clark DuVall <cduvall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#840269}
parent 79cee575
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "android_webview/browser/aw_browser_terminator.h" #include "android_webview/browser/aw_browser_terminator.h"
#include "android_webview/browser/aw_content_browser_client.h" #include "android_webview/browser/aw_content_browser_client.h"
#include "android_webview/browser/aw_web_ui_controller_factory.h" #include "android_webview/browser/aw_web_ui_controller_factory.h"
#include "android_webview/browser/metrics/aw_metrics_service_accessor.h"
#include "android_webview/browser/metrics/aw_metrics_service_client.h" #include "android_webview/browser/metrics/aw_metrics_service_client.h"
#include "android_webview/browser/network_service/aw_network_change_notifier_factory.h" #include "android_webview/browser/network_service/aw_network_change_notifier_factory.h"
#include "android_webview/browser/tracing/background_tracing_field_trial.h" #include "android_webview/browser/tracing/background_tracing_field_trial.h"
...@@ -23,6 +24,7 @@ ...@@ -23,6 +24,7 @@
#include "android_webview/common/crash_reporter/aw_crash_reporter_client.h" #include "android_webview/common/crash_reporter/aw_crash_reporter_client.h"
#include "base/android/apk_assets.h" #include "base/android/apk_assets.h"
#include "base/android/build_info.h" #include "base/android/build_info.h"
#include "base/android/bundle_utils.h"
#include "base/android/memory_pressure_listener_android.h" #include "base/android/memory_pressure_listener_android.h"
#include "base/base_paths_android.h" #include "base/base_paths_android.h"
#include "base/callback_helpers.h" #include "base/callback_helpers.h"
...@@ -37,9 +39,12 @@ ...@@ -37,9 +39,12 @@
#include "components/crash/core/common/crash_key.h" #include "components/crash/core/common/crash_key.h"
#include "components/embedder_support/android/metrics/memory_metrics_logger.h" #include "components/embedder_support/android/metrics/memory_metrics_logger.h"
#include "components/heap_profiling/multi_process/supervisor.h" #include "components/heap_profiling/multi_process/supervisor.h"
#include "components/metrics/metrics_service.h"
#include "components/services/heap_profiling/public/cpp/settings.h" #include "components/services/heap_profiling/public/cpp/settings.h"
#include "components/user_prefs/user_prefs.h" #include "components/user_prefs/user_prefs.h"
#include "components/variations/synthetic_trials_active_group_id_provider.h"
#include "components/variations/variations_crash_keys.h" #include "components/variations/variations_crash_keys.h"
#include "components/variations/variations_ids_provider.h"
#include "content/public/browser/android/synchronous_compositor.h" #include "content/public/browser/android/synchronous_compositor.h"
#include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h" #include "content/public/browser/render_process_host.h"
...@@ -118,9 +123,32 @@ int AwBrowserMainParts::PreCreateThreads() { ...@@ -118,9 +123,32 @@ int AwBrowserMainParts::PreCreateThreads() {
crash_reporter::InitializeCrashKeys(); crash_reporter::InitializeCrashKeys();
variations::InitCrashKeys(); variations::InitCrashKeys();
RegisterSyntheticTrials();
return content::RESULT_CODE_NORMAL_EXIT; return content::RESULT_CODE_NORMAL_EXIT;
} }
void AwBrowserMainParts::RegisterSyntheticTrials() {
metrics::MetricsService* metrics =
AwMetricsServiceClient::GetInstance()->GetMetricsService();
metrics->synthetic_trial_registry()->AddSyntheticTrialObserver(
variations::VariationsIdsProvider::GetInstance());
metrics->synthetic_trial_registry()->AddSyntheticTrialObserver(
variations::SyntheticTrialsActiveGroupIdProvider::GetInstance());
// If isolated splits are enabled at build time, Monochrome and Trichrome will
// have a different bundle layout, so measure N+ even though isolated splits
// are only supported by Android in O+.
if (base::android::BuildInfo::GetInstance()->sdk_int() >=
base::android::SDK_VERSION_NOUGAT) {
static constexpr char kIsolatedSplitsTrial[] = "IsolatedSplitsSynthetic";
AwMetricsServiceAccessor::RegisterSyntheticFieldTrial(
metrics, kIsolatedSplitsTrial,
base::android::BundleUtils::IsolatedSplitsEnabled() ? "Enabled"
: "Disabled");
}
}
void AwBrowserMainParts::PreMainMessageLoopRun() { void AwBrowserMainParts::PreMainMessageLoopRun() {
TRACE_EVENT0("startup", "AwBrowserMainParts::PreMainMessageLoopRun"); TRACE_EVENT0("startup", "AwBrowserMainParts::PreMainMessageLoopRun");
AwBrowserProcess::GetInstance()->PreMainMessageLoopRun(); AwBrowserProcess::GetInstance()->PreMainMessageLoopRun();
......
...@@ -35,6 +35,8 @@ class AwBrowserMainParts : public content::BrowserMainParts { ...@@ -35,6 +35,8 @@ class AwBrowserMainParts : public content::BrowserMainParts {
void PostCreateThreads() override; void PostCreateThreads() override;
private: private:
void RegisterSyntheticTrials();
// Android specific UI SingleThreadTaskExecutor. // Android specific UI SingleThreadTaskExecutor.
std::unique_ptr<base::SingleThreadTaskExecutor> main_task_executor_; std::unique_ptr<base::SingleThreadTaskExecutor> main_task_executor_;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
source_set("metrics") { source_set("metrics") {
sources = [ sources = [
"aw_metrics_service_accessor.h",
"aw_metrics_service_client.cc", "aw_metrics_service_client.cc",
"aw_metrics_service_client.h", "aw_metrics_service_client.h",
"aw_stability_metrics_provider.cc", "aw_stability_metrics_provider.cc",
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ANDROID_WEBVIEW_BROWSER_METRICS_AW_METRICS_SERVICE_ACCESSOR_H_
#define ANDROID_WEBVIEW_BROWSER_METRICS_AW_METRICS_SERVICE_ACCESSOR_H_
#include "components/metrics/metrics_service_accessor.h"
namespace android_webview {
// This class limits and documents access to metrics service helper methods.
// Since these methods are private, each user has to be explicitly declared
// as a 'friend' below.
class AwMetricsServiceAccessor : public metrics::MetricsServiceAccessor {
private:
friend class AwBrowserMainParts;
};
} // namespace android_webview
#endif // ANDROID_WEBVIEW_BROWSER_METRICS_AW_METRICS_SERVICE_ACCESSOR_H_
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