summaryrefslogtreecommitdiff
path: root/chromium/weblayer/browser/android
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/weblayer/browser/android')
-rw-r--r--chromium/weblayer/browser/android/javatests/BUILD.gn41
-rw-r--r--chromium/weblayer/browser/android/javatests/skew/expectations.txt56
-rw-r--r--chromium/weblayer/browser/android/metrics/DEPS1
-rw-r--r--chromium/weblayer/browser/android/metrics/weblayer_metrics_service_accessor.h28
-rw-r--r--chromium/weblayer/browser/android/metrics/weblayer_metrics_service_client.cc126
-rw-r--r--chromium/weblayer/browser/android/metrics/weblayer_metrics_service_client.h20
-rw-r--r--chromium/weblayer/browser/android/resource_mapper.cc1
7 files changed, 156 insertions, 117 deletions
diff --git a/chromium/weblayer/browser/android/javatests/BUILD.gn b/chromium/weblayer/browser/android/javatests/BUILD.gn
index 867ce21663e..d069ae4c405 100644
--- a/chromium/weblayer/browser/android/javatests/BUILD.gn
+++ b/chromium/weblayer/browser/android/javatests/BUILD.gn
@@ -9,7 +9,6 @@ import("//build/config/android/rules.gni")
android_library("weblayer_java_tests") {
testonly = true
sources = [
- "src/org/chromium/weblayer/test/BottomControlsTest.java",
"src/org/chromium/weblayer/test/BrowserFragmentLifecycleTest.java",
"src/org/chromium/weblayer/test/CookieManagerTest.java",
"src/org/chromium/weblayer/test/CrashReporterTest.java",
@@ -17,18 +16,17 @@ android_library("weblayer_java_tests") {
"src/org/chromium/weblayer/test/DowngradeTest.java",
"src/org/chromium/weblayer/test/DownloadCallbackTest.java",
"src/org/chromium/weblayer/test/ErrorPageCallbackTest.java",
- "src/org/chromium/weblayer/test/EventUtils.java",
"src/org/chromium/weblayer/test/ExecuteScriptTest.java",
"src/org/chromium/weblayer/test/ExternalNavigationTest.java",
"src/org/chromium/weblayer/test/FindInPageTest.java",
"src/org/chromium/weblayer/test/FullscreenCallbackTest.java",
"src/org/chromium/weblayer/test/InputTypesTest.java",
"src/org/chromium/weblayer/test/NavigationTest.java",
- "src/org/chromium/weblayer/test/NewTabCallbackImpl.java",
"src/org/chromium/weblayer/test/NewTabCallbackTest.java",
"src/org/chromium/weblayer/test/OnTabRemovedTabListCallbackImpl.java",
"src/org/chromium/weblayer/test/ProfileTest.java",
"src/org/chromium/weblayer/test/RenderingTest.java",
+ "src/org/chromium/weblayer/test/SiteSettingsTest.java",
"src/org/chromium/weblayer/test/SmokeTest.java",
"src/org/chromium/weblayer/test/TabCallbackTest.java",
"src/org/chromium/weblayer/test/TabListCallbackTest.java",
@@ -37,6 +35,7 @@ android_library("weblayer_java_tests") {
"src/org/chromium/weblayer/test/TopControlsTest.java",
"src/org/chromium/weblayer/test/WebLayerLoadingTest.java",
"src/org/chromium/weblayer/test/WebLayerTest.java",
+ "src/org/chromium/weblayer/test/WebMessageTest.java",
"src/org/chromium/weblayer/test/WebViewCompatibilityTest.java",
]
deps = [
@@ -49,8 +48,10 @@ android_library("weblayer_java_tests") {
"//third_party/android_deps:android_support_v4_java",
"//third_party/android_deps:androidx_core_core_java",
"//third_party/android_deps:androidx_fragment_fragment_java",
+ "//third_party/android_deps:espresso_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
+ "//third_party/hamcrest:hamcrest_java",
"//third_party/junit:junit",
"//weblayer/browser/java:interfaces_java",
"//weblayer/public/java",
@@ -62,12 +63,17 @@ android_library("weblayer_java_tests") {
android_library("weblayer_private_java_tests") {
testonly = true
sources = [
+ "src/org/chromium/weblayer/test/BrowserControlsTest.java",
"src/org/chromium/weblayer/test/GeolocationTest.java",
+ "src/org/chromium/weblayer/test/InfoBarTest.java",
"src/org/chromium/weblayer/test/MediaCaptureTest.java",
"src/org/chromium/weblayer/test/NetworkChangeNotifierTest.java",
+ "src/org/chromium/weblayer/test/PopupTest.java",
"src/org/chromium/weblayer/test/ResourceLoadingTest.java",
+ "src/org/chromium/weblayer/test/TranslateTest.java",
]
deps = [
+ ":weblayer_java_private_test_support",
":weblayer_java_test_support",
"//base:base_java",
"//base:base_java_test_support",
@@ -77,6 +83,7 @@ android_library("weblayer_private_java_tests") {
"//third_party/android_deps:androidx_fragment_fragment_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
+ "//third_party/hamcrest:hamcrest_java",
"//third_party/junit:junit",
"//weblayer/public/java",
"//weblayer/public/javatestutil:test_java",
@@ -88,11 +95,15 @@ android_library("weblayer_java_test_support") {
testonly = true
sources = [
"src/org/chromium/weblayer/test/BoundedCountDownLatch.java",
+ "src/org/chromium/weblayer/test/EventUtils.java",
"src/org/chromium/weblayer/test/InstrumentationActivityTestRule.java",
"src/org/chromium/weblayer/test/MinWebLayerVersion.java",
"src/org/chromium/weblayer/test/MinWebLayerVersionSkipCheck.java",
"src/org/chromium/weblayer/test/NavigationWaiter.java",
+ "src/org/chromium/weblayer/test/NewTabCallbackImpl.java",
"src/org/chromium/weblayer/test/ResourceUtil.java",
+ "src/org/chromium/weblayer/test/SiteSettingsActivityTestRule.java",
+ "src/org/chromium/weblayer/test/WebLayerActivityTestRule.java",
"src/org/chromium/weblayer/test/WebLayerJUnit4ClassRunner.java",
]
deps = [
@@ -101,8 +112,28 @@ android_library("weblayer_java_test_support") {
"//content/public/test/android:content_java_test_support",
"//net/android:net_java_test_support",
"//third_party/android_deps:androidx_core_core_java",
+ "//third_party/android_deps:androidx_fragment_fragment_java",
+ "//third_party/android_support_test_runner:rules_java",
+ "//third_party/android_support_test_runner:runner_java",
+ "//third_party/hamcrest:hamcrest_java",
+ "//third_party/junit:junit",
+ "//weblayer/public/java",
+ "//weblayer/shell/android:weblayer_shell_java",
+ ]
+}
+
+android_library("weblayer_java_private_test_support") {
+ testonly = true
+ sources = [ "src/org/chromium/weblayer/test/BrowserControlsHelper.java" ]
+ deps = [
+ ":weblayer_java_test_support",
+ "//base:base_java",
+ "//base:base_java_test_support",
+ "//content/public/test/android:content_java_test_support",
"//third_party/hamcrest:hamcrest_java",
+ "//third_party/junit:junit",
"//weblayer/public/java",
+ "//weblayer/public/javatestutil:test_java",
"//weblayer/shell/android:weblayer_shell_java",
]
}
@@ -195,11 +226,15 @@ android_test_apk("weblayer_bundle_test_apk") {
]
deps = [
":weblayer_java_test_support",
+ "//base:base_java",
+ "//base:base_java_test_support",
+ "//content/public/test/android:content_java_test_support",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit:junit",
"//weblayer/public/java",
"//weblayer/public/javatestutil:test_java",
+ "//weblayer/shell/android:weblayer_shell_java",
]
never_incremental = true
}
diff --git a/chromium/weblayer/browser/android/javatests/skew/expectations.txt b/chromium/weblayer/browser/android/javatests/skew/expectations.txt
index 56665be1d67..365f067e95e 100644
--- a/chromium/weblayer/browser/android/javatests/skew/expectations.txt
+++ b/chromium/weblayer/browser/android/javatests/skew/expectations.txt
@@ -4,16 +4,13 @@
# Lines tagged with "impl_lte_$VERSION" will be active when testing trunk client
# with versions less than or equal to $VERSION of the implementation.
#
-# tags: [ impl_lte_81 impl_lte_82 impl_lte_83 client_lte_83 ]
+# tags: [ impl_lte_83 client_lte_83 client_lte_84 ]
# results: [ Skip ]
# ---------------------------------------------
# Tests against older WebLayer implementations.
# ---------------------------------------------
-# Strict mode violation was fixed in M83 in https://crrev.com/c/2108603.
-[ impl_lte_82 ] org.chromium.weblayer.test.InputTypesTest#testColorInput [ Skip ]
-
# ExternalNavigationTests are testing intent launching that changed after M83.
[ impl_lte_83 ] org.chromium.weblayer.test.ExternalNavigationTest#testExternalIntentInNewTabLaunchedOnLinkClick [ Skip ]
[ impl_lte_83 ] org.chromium.weblayer.test.ExternalNavigationTest#testExternalIntentViaOnLoadBlocked [ Skip ]
@@ -31,57 +28,9 @@
# Fixed in https://crrev.com/c/2180022, see https://crbug.com/1077243.
[ impl_lte_83 ] org.chromium.weblayer.test.FullscreenCallbackTest#testExitFullscreenWhenTabDestroyed [ Skip ]
-# https://crbug.com/1079489.
-[ impl_lte_83 ] org.chromium.weblayer.test.BottomControlsTest#testBasic [ Skip ]
-[ impl_lte_83 ] org.chromium.weblayer.test.BottomControlsTest#testNoTopControl [ Skip ]
-
# https://crbug.com/1079491.
[ impl_lte_83 ] org.chromium.weblayer.test.NavigationTest#testSetUserAgentString [ Skip ]
-# DownloadCallback moved from Tab to Profile in M83: https://crrev.com/cc967e92032594c0e54d02e31824f92aff5f30cd
-[ impl_lte_82 ] org.chromium.weblayer.test.DownloadCallbackTest#testBasic [ Skip ]
-[ impl_lte_82 ] org.chromium.weblayer.test.DownloadCallbackTest#testInterceptDownloadByContentDisposition [ Skip ]
-[ impl_lte_82 ] org.chromium.weblayer.test.DownloadCallbackTest#testInterceptDownloadByLinkAttribute [ Skip ]
-
-# ExternalNavigationTest intent launching changed from using ApplicationContext
-# to Activity after M81.
-[ impl_lte_81 ] org.chromium.weblayer.test.ExternalNavigationTest#testExternalIntentAfterRedirectLaunched [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.ExternalNavigationTest#testExternalIntentInSameTabLaunchedOnLinkClick [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.ExternalNavigationTest#testExternalIntentWithFallbackUrlAfterRedirectLaunched [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.ExternalNavigationTest#testNonHandledExternalIntentWithFallbackUrlAfterRedirectGoesToFallbackUrl [ Skip ]
-
-# Many M81 tests are broken, see https://crbug.com/1081102.
-[ impl_lte_81 ] org.chromium.weblayer.test.BrowserFragmentLifecycleTest#restoreAfterRecreate [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.BrowserFragmentLifecycleTest#restoreTabGuidAfterRecreate [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.BrowserFragmentLifecycleTest#restoresTabGuid [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.CookieManagerTest#testCookieChanged [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.CookieManagerTest#testCookieChangedRemoveCallback [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.CookieManagerTest#testCookieChangedRemoveCallbackAfterProfileDestroyed [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.CookieManagerTest#testGetCookie [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.CookieManagerTest#testSetCookie [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.CookieManagerTest#testSetCookieInvalid [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.CookieManagerTest#testSetCookieNotSet [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.CookieManagerTest#testSetCookieNullCallback [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.CrashReporterTest#testCrashReporterLoading [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.DowngradeTest#testDowngradeDeletesData [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.InputTypesTest#testColorInput [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.NavigationTest#testRepostConfirmation [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.NavigationTest#testSetRequestHeaderInRedirect [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.NavigationTest#testSetRequestHeaderInStart [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.NavigationTest#testSetRequestHeaderThrowsExceptionInCompleted [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.NavigationTest#testSetRequestHeaderThrowsExceptionWithInvalidValue [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.NavigationTest#testStopFromOnNavigationStarted [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.ProfileTest#testDestroyAndDeleteDataFromDisk [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.ProfileTest#testDestroyAndDeleteDataFromDiskIncognito [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.ProfileTest#testEnumerateAllProfileNames [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.ProfileTest#testReuseProfile [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.TabCallbackTest#testDismissTransientUi [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.TabCallbackTest#testOnTitleUpdated [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.TabCallbackTest#testShowContextMenu [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.TabCallbackTest#testShowContextMenuImg [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.TabCallbackTest#testTabModalOverlay [ Skip ]
-[ impl_lte_81 ] org.chromium.weblayer.test.TabCallbackTest#testTabModalOverlayOnBackgroundTab [ Skip ]
-
# -------------------------------------
# Tests against older WebLayer clients.
# -------------------------------------
@@ -92,3 +41,6 @@
# Replace was removed in https://crrev.com/c/2150968, see https://crbug.com/1070851.
[ client_lte_83 ] org.chromium.weblayer.test.NavigationTest#testReplace [ Skip ]
+
+# Test was made private, https://crbug.com/1087451.
+[ client_lte_84 ] org.chromium.weblayer.test.TopControlsTest#testBasic [ Skip ]
diff --git a/chromium/weblayer/browser/android/metrics/DEPS b/chromium/weblayer/browser/android/metrics/DEPS
index d9ef433896d..44a37a03920 100644
--- a/chromium/weblayer/browser/android/metrics/DEPS
+++ b/chromium/weblayer/browser/android/metrics/DEPS
@@ -1,3 +1,4 @@
include_rules = [
"+components/metrics",
+ "+google_apis/google_api_keys.h",
]
diff --git a/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_accessor.h b/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_accessor.h
deleted file mode 100644
index 173e5d51d13..00000000000
--- a/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_accessor.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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 WEBLAYER_BROWSER_ANDROID_METRICS_WEBLAYER_METRICS_SERVICE_ACCESSOR_H_
-#define WEBLAYER_BROWSER_ANDROID_METRICS_WEBLAYER_METRICS_SERVICE_ACCESSOR_H_
-
-#include <stdint.h>
-#include <vector>
-
-#include "components/metrics/metrics_service_accessor.h"
-
-namespace weblayer {
-
-// 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 WebLayerMetricsServiceAccessor : public metrics::MetricsServiceAccessor {
- private:
- // For RegisterSyntheticMultiGroupFieldTrial.
- friend class WebLayerMetricsServiceClient;
-
- DISALLOW_IMPLICIT_CONSTRUCTORS(WebLayerMetricsServiceAccessor);
-};
-
-} // namespace weblayer
-
-#endif // WEBLAYER_BROWSER_ANDROID_METRICS_WEBLAYER_METRICS_SERVICE_ACCESSOR_H_ \ No newline at end of file
diff --git a/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_client.cc b/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_client.cc
index 4c879a069be..569fe1d44e2 100644
--- a/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_client.cc
+++ b/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_client.cc
@@ -8,14 +8,18 @@
#include <cstdint>
#include <memory>
+#include "base/base64.h"
#include "base/no_destructor.h"
-#include "base/strings/string_number_conversions.h"
+#include "components/metrics/metrics_provider.h"
#include "components/metrics/metrics_service.h"
-#include "components/variations/hashing.h"
-#include "components/variations/variations_associated_data.h"
+#include "components/page_load_metrics/browser/metrics_web_contents_observer.h"
#include "components/version_info/android/channel_getter.h"
-#include "weblayer/browser/android/metrics/weblayer_metrics_service_accessor.h"
+#include "content/public/browser/browser_context.h"
+#include "google_apis/google_api_keys.h"
+#include "weblayer/browser/browser_context_impl.h"
#include "weblayer/browser/java/jni/MetricsServiceClient_jni.h"
+#include "weblayer/browser/system_network_context_manager.h"
+#include "weblayer/browser/tab_impl.h"
namespace weblayer {
@@ -40,6 +44,28 @@ const int kBetaDevCanarySampledInRatePerMille = 990;
// consulting with the privacy team.
const int kPackageNameLimitRatePerMille = 100;
+// MetricsProvider that interfaces with page_load_metrics.
+class PageLoadMetricsProvider : public metrics::MetricsProvider {
+ public:
+ PageLoadMetricsProvider() = default;
+ ~PageLoadMetricsProvider() override = default;
+
+ // metrics:MetricsProvider implementation:
+ void OnAppEnterBackground() override {
+ auto tabs = TabImpl::GetAllTabImpl();
+ for (auto* tab : tabs) {
+ page_load_metrics::MetricsWebContentsObserver* observer =
+ page_load_metrics::MetricsWebContentsObserver::FromWebContents(
+ tab->web_contents());
+ if (observer)
+ observer->FlushMetricsOnAppEnterBackground();
+ }
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsProvider);
+};
+
} // namespace
// static
@@ -49,47 +75,55 @@ WebLayerMetricsServiceClient* WebLayerMetricsServiceClient::GetInstance() {
return client.get();
}
-WebLayerMetricsServiceClient::WebLayerMetricsServiceClient() = default;
-WebLayerMetricsServiceClient::~WebLayerMetricsServiceClient() = default;
+WebLayerMetricsServiceClient::WebLayerMetricsServiceClient() {
+ ProfileImpl::AddProfileObserver(this);
+}
+
+WebLayerMetricsServiceClient::~WebLayerMetricsServiceClient() {
+ ProfileImpl::RemoveProfileObserver(this);
+}
-void WebLayerMetricsServiceClient::RegisterSyntheticMultiGroupFieldTrial(
- base::StringPiece trial_name,
+void WebLayerMetricsServiceClient::RegisterExternalExperiments(
const std::vector<int>& experiment_ids) {
if (!GetMetricsService()) {
if (!IsConsentDetermined()) {
post_start_tasks_.push_back(base::BindOnce(
- &WebLayerMetricsServiceClient::RegisterSyntheticMultiGroupFieldTrial,
- base::Unretained(this), trial_name, experiment_ids));
+ &WebLayerMetricsServiceClient::RegisterExternalExperiments,
+ base::Unretained(this), experiment_ids));
}
return;
}
- std::vector<uint32_t> group_name_hashes;
- group_name_hashes.reserve(experiment_ids.size());
-
- variations::ActiveGroupId active_group;
- active_group.name = variations::HashName(trial_name);
- for (int experiment_id : experiment_ids) {
- active_group.group =
- variations::HashName(base::NumberToString(experiment_id));
-
- // Since external experiments are not based on Chrome's low entropy source,
- // they are only sent to Google web properties for signed in users to make
- // sure that this couldn't be used to identify a user that's not signed in.
- variations::AssociateGoogleVariationIDForceHashes(
- variations::GOOGLE_WEB_PROPERTIES_SIGNED_IN, active_group,
- static_cast<variations::VariationID>(experiment_id));
- group_name_hashes.push_back(active_group.group);
- }
-
- WebLayerMetricsServiceAccessor::RegisterSyntheticMultiGroupFieldTrial(
- GetMetricsService(), trial_name, group_name_hashes);
+ GetMetricsService()->synthetic_trial_registry()->RegisterExternalExperiments(
+ "WebLayerExperiments", experiment_ids,
+ variations::SyntheticTrialRegistry::kOverrideExistingIds);
}
int32_t WebLayerMetricsServiceClient::GetProduct() {
return metrics::ChromeUserMetricsExtension::ANDROID_WEBLAYER;
}
+bool WebLayerMetricsServiceClient::IsExternalExperimentAllowlistEnabled() {
+ // RegisterExternalExperiments() is actually used to register experiment ids
+ // coming from the app embedding WebLayer itself, rather than externally. So
+ // the allowlist shouldn't be applied.
+ return false;
+}
+
+bool WebLayerMetricsServiceClient::IsUkmAllowedForAllProfiles() {
+ for (auto* profile : ProfileImpl::GetAllProfiles()) {
+ if (!profile->GetBooleanSetting(SettingType::UKM_ENABLED))
+ return false;
+ }
+ return true;
+}
+
+std::string WebLayerMetricsServiceClient::GetUploadSigningKey() {
+ std::string decoded_key;
+ base::Base64Decode(google_apis::GetMetricsKey(), &decoded_key);
+ return decoded_key;
+}
+
int WebLayerMetricsServiceClient::GetSampleRatePerMille() {
version_info::Channel channel = version_info::android::GetChannel();
if (channel == version_info::Channel::STABLE ||
@@ -114,6 +148,38 @@ int WebLayerMetricsServiceClient::GetPackageNameLimitRatePerMille() {
return kPackageNameLimitRatePerMille;
}
+void WebLayerMetricsServiceClient::RegisterAdditionalMetricsProviders(
+ metrics::MetricsService* service) {
+ service->RegisterMetricsProvider(std::make_unique<PageLoadMetricsProvider>());
+}
+
+bool WebLayerMetricsServiceClient::EnablePersistentHistograms() {
+ return true;
+}
+
+bool WebLayerMetricsServiceClient::IsOffTheRecordSessionActive() {
+ for (auto* profile : ProfileImpl::GetAllProfiles()) {
+ if (profile->GetBrowserContext()->IsOffTheRecord())
+ return true;
+ }
+
+ return false;
+}
+
+scoped_refptr<network::SharedURLLoaderFactory>
+WebLayerMetricsServiceClient::GetURLLoaderFactory() {
+ return SystemNetworkContextManager::GetInstance()
+ ->GetSharedURLLoaderFactory();
+}
+
+void WebLayerMetricsServiceClient::ProfileCreated(ProfileImpl* profile) {
+ UpdateUkmService();
+}
+
+void WebLayerMetricsServiceClient::ProfileDestroyed(ProfileImpl* profile) {
+ UpdateUkmService();
+}
+
// static
void JNI_MetricsServiceClient_SetHaveMetricsConsent(JNIEnv* env,
jboolean user_consent,
diff --git a/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_client.h b/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_client.h
index cc07ae5a02c..a25c0516ceb 100644
--- a/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_client.h
+++ b/chromium/weblayer/browser/android/metrics/weblayer_metrics_service_client.h
@@ -18,11 +18,13 @@
#include "components/metrics/metrics_service_client.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
+#include "weblayer/browser/profile_impl.h"
namespace weblayer {
class WebLayerMetricsServiceClient
- : public ::metrics::AndroidMetricsServiceClient {
+ : public ::metrics::AndroidMetricsServiceClient,
+ public ProfileImpl::ProfileObserver {
friend class base::NoDestructor<WebLayerMetricsServiceClient>;
public:
@@ -31,20 +33,30 @@ class WebLayerMetricsServiceClient
WebLayerMetricsServiceClient();
~WebLayerMetricsServiceClient() override;
- void RegisterSyntheticMultiGroupFieldTrial(
- base::StringPiece trial_name,
- const std::vector<int>& experiment_ids);
+ void RegisterExternalExperiments(const std::vector<int>& experiment_ids);
// metrics::MetricsServiceClient
int32_t GetProduct() override;
+ bool IsExternalExperimentAllowlistEnabled() override;
+ bool IsUkmAllowedForAllProfiles() override;
+ std::string GetUploadSigningKey() override;
// metrics::AndroidMetricsServiceClient:
int GetSampleRatePerMille() override;
void OnMetricsStart() override;
void OnMetricsNotStarted() override;
int GetPackageNameLimitRatePerMille() override;
+ void RegisterAdditionalMetricsProviders(
+ metrics::MetricsService* service) override;
+ bool EnablePersistentHistograms() override;
+ bool IsOffTheRecordSessionActive() override;
+ scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
private:
+ // ProfileImpl::ProfileObserver:
+ void ProfileCreated(ProfileImpl* profile) override;
+ void ProfileDestroyed(ProfileImpl* profile) override;
+
std::vector<base::OnceClosure> post_start_tasks_;
DISALLOW_COPY_AND_ASSIGN(WebLayerMetricsServiceClient);
diff --git a/chromium/weblayer/browser/android/resource_mapper.cc b/chromium/weblayer/browser/android/resource_mapper.cc
index 24862f4b20a..ae5bcdf81d4 100644
--- a/chromium/weblayer/browser/android/resource_mapper.cc
+++ b/chromium/weblayer/browser/android/resource_mapper.cc
@@ -38,6 +38,7 @@ void ConstructMap() {
(*GetIdMap())[c_id] = resource_id_list[next_id++];
#define DECLARE_RESOURCE_ID(c_id, java_id) \
(*GetIdMap())[c_id] = resource_id_list[next_id++];
+#include "components/resources/android/blocked_content_resource_id.h"
#include "components/resources/android/page_info_resource_id.h"
#include "components/resources/android/permissions_resource_id.h"
#undef LINK_RESOURCE_ID