diff --git a/android/BUILD.gn b/android/BUILD.gn index ce0d2f2f76cd..2231de25179b 100644 --- a/android/BUILD.gn +++ b/android/BUILD.gn @@ -1,5 +1,6 @@ import("//build/config/android/rules.gni") import("//brave/components/brave_sync/buildflags/buildflags.gni") +import("//brave/components/p3a/buildflags.gni") declare_args() { brave_android_developer_options_code = "" @@ -17,5 +18,6 @@ java_cpp_template("brave_config_java") { defines = [ "BRAVE_ANDROID_DEVELOPER_OPTIONS_CODE=\"$brave_android_developer_options_code\"", "BRAVE_ANDROID_SYNC_ENABLED=$enable_brave_sync", + "BRAVE_ANDROID_P3A_ENABLED=$brave_p3a_enabled", ] } diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni index d0769d188530..b4eb73c41872 100644 --- a/android/brave_java_sources.gni +++ b/android/brave_java_sources.gni @@ -49,6 +49,7 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/help/BraveHelpAndFeedback.java", "../../brave/android/java/org/chromium/chrome/browser/homepage/BraveHomepageManager.java", "../../brave/android/java/org/chromium/chrome/browser/homepage/settings/BraveHomepageSettings.java", + "../../brave/android/java/org/chromium/chrome/browser/informers/BraveP3AInformers.java", "../../brave/android/java/org/chromium/chrome/browser/language/settings/BraveLanguageSettings.java", "../../brave/android/java/org/chromium/chrome/browser/local_database/BraveStatsTable.java", "../../brave/android/java/org/chromium/chrome/browser/local_database/DatabaseHelper.java", diff --git a/android/java/org/chromium/chrome/browser/app/BraveActivity.java b/android/java/org/chromium/chrome/browser/app/BraveActivity.java index c20eb641687e..46167aea8192 100644 --- a/android/java/org/chromium/chrome/browser/app/BraveActivity.java +++ b/android/java/org/chromium/chrome/browser/app/BraveActivity.java @@ -23,30 +23,39 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; + import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; -import org.chromium.base.Log; import org.chromium.base.ApplicationStatus; import org.chromium.base.CommandLine; import org.chromium.base.ContextUtils; import org.chromium.base.IntentUtils; +import org.chromium.base.Log; import org.chromium.base.annotations.JNINamespace; import org.chromium.base.task.PostTask; import org.chromium.base.task.TaskTraits; import org.chromium.chrome.R; import org.chromium.chrome.browser.ApplicationLifetime; +import org.chromium.chrome.browser.BraveConfig; import org.chromium.chrome.browser.BraveHelper; import org.chromium.chrome.browser.BraveSyncReflectionUtils; import org.chromium.chrome.browser.ChromeTabbedActivity; +import org.chromium.chrome.browser.CrossPromotionalModalDialogFragment; import org.chromium.chrome.browser.LaunchIntentDispatcher; import org.chromium.chrome.browser.bookmarks.BookmarkBridge; import org.chromium.chrome.browser.bookmarks.BookmarkModel; +import org.chromium.chrome.browser.brave_stats.BraveStatsUtil; import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent; import org.chromium.chrome.browser.flags.ChromeSwitches; +import org.chromium.chrome.browser.informers.BraveP3AInformers; import org.chromium.chrome.browser.notifications.BraveSetDefaultBrowserNotificationService; +import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil; +import org.chromium.chrome.browser.ntp.NewTabPage; import org.chromium.chrome.browser.onboarding.OnboardingActivity; import org.chromium.chrome.browser.onboarding.OnboardingPrefManager; +import org.chromium.chrome.browser.onboarding.v2.HighlightDialogFragment; +import org.chromium.chrome.browser.preferences.BravePrefServiceBridge; import org.chromium.chrome.browser.preferences.BravePreferenceKeys; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; @@ -64,19 +73,12 @@ import org.chromium.chrome.browser.toolbar.top.BraveToolbarLayout; import org.chromium.chrome.browser.util.BraveDbUtil; import org.chromium.chrome.browser.util.BraveReferrer; +import org.chromium.chrome.browser.util.PackageUtils; import org.chromium.components.bookmarks.BookmarkId; import org.chromium.components.bookmarks.BookmarkType; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.user_prefs.UserPrefs; import org.chromium.ui.widget.Toast; -import org.chromium.chrome.browser.util.PackageUtils; -import org.chromium.chrome.browser.onboarding.OnboardingPrefManager; -import org.chromium.chrome.browser.onboarding.OnboardingActivity; -import org.chromium.chrome.browser.CrossPromotionalModalDialogFragment; -import org.chromium.chrome.browser.onboarding.v2.HighlightDialogFragment; -import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil; -import org.chromium.chrome.browser.brave_stats.BraveStatsUtil; -import org.chromium.chrome.browser.ntp.NewTabPage; import java.util.Calendar; import java.util.Date; @@ -266,6 +268,23 @@ public void finishNativeInitialization() { } BraveSyncReflectionUtils.showInformers(); + if (BraveConfig.P3A_ENABLED) { + // // P3A informer should be shown not for the updated users only + // if (!PackageUtils.isFirstInstall(this)) { + // BraveP3AInformers.show(); + // } else { + // // On the first run P3A is must be set from the onboarding wizard + // } + // Uncomment ^ when onboarding UI step will be ready for P3A + + // Until we don't have P3A onboarding, P3A will be disabled, + // but available for activating through settings + if (!BravePrefServiceBridge.getInstance().hasPathP3AEnabled()) { + BravePrefServiceBridge.getInstance().setP3AEnabled(false); + } + // Remove lines above ^ when onboarding UI step will be ready for P3A + } + if (!OnboardingPrefManager.getInstance().isOneTimeNotificationStarted() && PackageUtils.isFirstInstall(this)) { RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.HOUR_3); diff --git a/android/java/org/chromium/chrome/browser/informers/BraveP3AInformers.java b/android/java/org/chromium/chrome/browser/informers/BraveP3AInformers.java new file mode 100644 index 000000000000..9890f0a7349a --- /dev/null +++ b/android/java/org/chromium/chrome/browser/informers/BraveP3AInformers.java @@ -0,0 +1,91 @@ +/* Copyright (c) 2020 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.chromium.chrome.browser.informers; + +import org.chromium.base.ApplicationStatus; +import org.chromium.base.ContextUtils; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.BraveConfig; +import org.chromium.chrome.browser.app.BraveActivity; +import org.chromium.chrome.browser.infobar.InfoBarIdentifier; +import org.chromium.chrome.browser.preferences.BravePrefServiceBridge; +import org.chromium.chrome.browser.settings.BraveSyncScreensPreference; +import org.chromium.chrome.browser.settings.SettingsLauncher; +import org.chromium.chrome.browser.settings.SettingsLauncherImpl; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.ui.messages.infobar.BraveSimpleConfirmInfoBarBuilder; +import org.chromium.chrome.browser.ui.messages.infobar.SimpleConfirmInfoBarBuilder; +import org.chromium.chrome.browser.util.TabUtils; + +public class BraveP3AInformers { + public static final String P3A_LEARN_MORE_URL = "https://brave.com/P3A"; + public static void show() { + showIfRequired(); + } + + private static void showIfRequired() { + if (!BraveConfig.P3A_ENABLED) { + return; + } + + if (BravePrefServiceBridge.getInstance().getP3ANoticeAcknowledged()) { + return; + } + + showP3AInformer(); + } + + private static void showP3AInformer() { + BraveActivity activity = BraveActivity.getBraveActivity(); + if (activity == null) return; + + Tab tab = activity.getActivityTabProvider().get(); + if (tab == null) return; + + BraveSimpleConfirmInfoBarBuilder.createInfobarWithDrawable(tab.getWebContents(), + new SimpleConfirmInfoBarBuilder.Listener() { + @Override + public void onInfoBarDismissed() { + // Pressing cross + BravePrefServiceBridge.getInstance().setP3AEnabled(true); + BravePrefServiceBridge.getInstance().setP3ANoticeAcknowledged(true); + } + + @Override + public boolean onInfoBarButtonClicked(boolean isPrimary) { + if (isPrimary) { + // Pressing `Got it` + BravePrefServiceBridge.getInstance().setP3AEnabled(true); + } else { + // Pressing `Disable` + BravePrefServiceBridge.getInstance().setP3AEnabled(false); + } + BravePrefServiceBridge.getInstance().setP3ANoticeAcknowledged(true); + + return false; + } + + @Override + public boolean onInfoBarLinkClicked() { + // Pressing learn more + TabUtils.openUrlInNewTab(false /* isIncognito */, P3A_LEARN_MORE_URL); + return false; + } + }, + // must be BRAVE_CONFIRM_P3A_INFOBAR_DELEGATE, but now it is introduced through + // src/brave/chromium_src/components/infobars/core/infobar_delegate.h and + // java enums are generated by //components/infobars/core:infobar_generated_enums + // who does not understand `brave/chromium_src` + InfoBarIdentifier.INLINE_UPDATE_READY_INFOBAR_ANDROID, activity, + R.drawable.btn_info /* drawableId */, + activity.getString(R.string.brave_confirm_p3a_infobar) /* message */, + activity.getString(R.string.brave_confirm_p3a_infobar_acknowledge) /* primaryText */, + activity.getString(R.string.brave_confirm_p3a_infobar_disable) /* secondaryText */, + activity.getString(R.string.brave_confirm_p3a_infobar_learn_more) /* linkText */, + false /* autoExpire */); + BravePrefServiceBridge.getInstance().setP3ANoticeAcknowledged(true); + } +} diff --git a/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java b/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java index dbb2a62986d4..ce93a2b9e99e 100644 --- a/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java +++ b/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java @@ -171,6 +171,26 @@ public void setReferralDownloadId(String downloadId) { BravePrefServiceBridgeJni.get().setReferralDownloadId(downloadId); } + public void setP3AEnabled(boolean value) { + BravePrefServiceBridgeJni.get().setP3AEnabled(value); + } + + public boolean getP3AEnabled() { + return BravePrefServiceBridgeJni.get().getP3AEnabled(); + } + + public boolean hasPathP3AEnabled() { + return BravePrefServiceBridgeJni.get().hasPathP3AEnabled(); + } + + public void setP3ANoticeAcknowledged(boolean value) { + BravePrefServiceBridgeJni.get().setP3ANoticeAcknowledged(value); + } + + public boolean getP3ANoticeAcknowledged() { + return BravePrefServiceBridgeJni.get().getP3ANoticeAcknowledged(); + } + @NativeMethods interface Natives { void setHTTPSEEnabled(boolean enabled); @@ -215,5 +235,11 @@ interface Natives { void setReferralInitialization(boolean value); void setReferralPromoCode(String promoCode); void setReferralDownloadId(String downloadId); + + void setP3AEnabled(boolean value); + boolean getP3AEnabled(); + boolean hasPathP3AEnabled(); + void setP3ANoticeAcknowledged(boolean value); + boolean getP3ANoticeAcknowledged(); } } diff --git a/android/java/org/chromium/chrome/browser/privacy/settings/BravePrivacySettings.java b/android/java/org/chromium/chrome/browser/privacy/settings/BravePrivacySettings.java index 7d7b16f434c1..79f02f62d5a6 100644 --- a/android/java/org/chromium/chrome/browser/privacy/settings/BravePrivacySettings.java +++ b/android/java/org/chromium/chrome/browser/privacy/settings/BravePrivacySettings.java @@ -13,6 +13,7 @@ import org.chromium.base.ContextUtils; import org.chromium.chrome.R; +import org.chromium.chrome.browser.BraveConfig; import org.chromium.chrome.browser.preferences.BravePref; import org.chromium.chrome.browser.preferences.BravePrefServiceBridge; import org.chromium.chrome.browser.preferences.Pref; @@ -30,6 +31,7 @@ public class BravePrivacySettings extends PrivacySettings { private static final String PREF_AD_BLOCK = "ad_block"; private static final String PREF_FINGERPRINTING_PROTECTION = "fingerprinting_protection"; private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit"; + private static final String PREF_SEND_P3A = "send_p3a_analytics"; private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link"; private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions"; private static final String PREF_AUTOCOMPLETE_TOP_SITES = "autocomplete_top_sites"; @@ -51,6 +53,7 @@ public class BravePrivacySettings extends PrivacySettings { private ChromeBaseCheckBoxPreference mAdBlockPref; private ChromeBaseCheckBoxPreference mFingerprintingProtectionPref; private ChromeBaseCheckBoxPreference mCloseTabsOnExitPref; + private ChromeBaseCheckBoxPreference mSendP3A; private PreferenceCategory mSocialBlockingCategory; private ChromeSwitchPreference mSocialBlockingGoogle; private ChromeSwitchPreference mSocialBlockingFacebook; @@ -77,6 +80,10 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT); mCloseTabsOnExitPref.setOnPreferenceChangeListener(this); + mSendP3A = + (ChromeBaseCheckBoxPreference) findPreference(PREF_SEND_P3A); + mSendP3A.setOnPreferenceChangeListener(this); + mSearchSuggestions = (ChromeSwitchPreference) findPreference(PREF_SEARCH_SUGGESTIONS); mSearchSuggestions.setOnPreferenceChangeListener(this); mSearchSuggestions.setManagedPreferenceDelegate(mManagedPreferenceDelegate); @@ -122,6 +129,8 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { ContextUtils.getAppSharedPreferences().edit(); sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean) newValue); sharedPreferencesEditor.apply(); + } else if (PREF_SEND_P3A.equals(key)) { + BravePrefServiceBridge.getInstance().setP3AEnabled((boolean) newValue); } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) { mPrefServiceBridge.setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue); } else if (PREF_AUTOCOMPLETE_TOP_SITES.equals(key)) { @@ -157,6 +166,12 @@ private void updatePreferences() { mSearchSuggestions.setChecked(mPrefServiceBridge.getBoolean(Pref.SEARCH_SUGGEST_ENABLED)); int order = findPreference(PREF_CLEAR_BROWSING_DATA).getOrder(); mCloseTabsOnExitPref.setOrder(++order); + if (BraveConfig.P3A_ENABLED) { + mSendP3A.setOrder(++order); + mSendP3A.setChecked(BravePrefServiceBridge.getInstance().getP3AEnabled()); + } else { + getPreferenceScreen().removePreference(mSendP3A); + } mHttpsePref.setOrder(++order); mAdBlockPref.setOrder(++order); mFingerprintingProtectionPref.setOrder(++order); diff --git a/android/java/res/xml/brave_privacy_preferences.xml b/android/java/res/xml/brave_privacy_preferences.xml index 43b011da601f..42a40c09540f 100644 --- a/android/java/res/xml/brave_privacy_preferences.xml +++ b/android/java/res/xml/brave_privacy_preferences.xml @@ -11,6 +11,11 @@ android:title="@string/close_tabs_on_exit_title" android:summary="@string/close_tabs_on_exit_summary" android:defaultValue="false" /> + - + local_state()->SetBoolean( + brave::kP3AEnabled, value); +} + +jboolean JNI_BravePrefServiceBridge_GetP3AEnabled( + JNIEnv* env) { + return g_browser_process->local_state()->GetBoolean( + brave::kP3AEnabled); +} + +jboolean JNI_BravePrefServiceBridge_HasPathP3AEnabled( + JNIEnv* env) { + return g_browser_process->local_state()->HasPrefPath(brave::kP3AEnabled); +} + +void JNI_BravePrefServiceBridge_SetP3ANoticeAcknowledged( + JNIEnv* env, + jboolean value) { + return g_browser_process->local_state()->SetBoolean( + brave::kP3ANoticeAcknowledged, value); +} + +jboolean JNI_BravePrefServiceBridge_GetP3ANoticeAcknowledged( + JNIEnv* env) { + return g_browser_process->local_state()->GetBoolean( + brave::kP3ANoticeAcknowledged); +} + +#else + +void JNI_BravePrefServiceBridge_SetP3AEnabled(JNIEnv* env, jboolean value) {} + +jboolean JNI_BravePrefServiceBridge_GetP3AEnabled(JNIEnv* env) { + return false; +} + +jboolean JNI_BravePrefServiceBridge_HasPathP3AEnabled(JNIEnv* env) {} + +void JNI_BravePrefServiceBridge_SetP3ANoticeAcknowledged(JNIEnv* env, + jboolean value) {} + +jboolean JNI_BravePrefServiceBridge_GetP3ANoticeAcknowledged(JNIEnv* env) { + return false; +} +#endif // BUILDFLAG(BRAVE_P3A_ENABLED) + } // namespace android } // namespace chrome diff --git a/browser/brave_local_state_prefs.cc b/browser/brave_local_state_prefs.cc index 85ac91284578..25f59e6f0b18 100644 --- a/browser/brave_local_state_prefs.cc +++ b/browser/brave_local_state_prefs.cc @@ -19,7 +19,6 @@ #include "brave/components/p3a/brave_p3a_service.h" #include "brave/components/p3a/buildflags.h" #include "brave/components/tor/buildflags/buildflags.h" -#include "chrome/browser/first_run/first_run.h" #include "chrome/common/pref_names.h" #include "components/metrics/metrics_pref_names.h" #include "components/prefs/pref_registry_simple.h" @@ -37,9 +36,11 @@ #include "brave/components/ipfs/ipfs_service.h" #endif +#include "brave/browser/ui/webui/new_tab_page/brave_new_tab_message_handler.h" + #if !defined(OS_ANDROID) #include "brave/browser/p3a/p3a_core_metrics.h" -#include "brave/browser/ui/webui/new_tab_page/brave_new_tab_message_handler.h" +#include "chrome/browser/first_run/first_run.h" #endif // !defined(OS_ANDROID) #if BUILDFLAG(ENABLE_WIDEVINE) @@ -74,7 +75,14 @@ void RegisterLocalStatePrefs(PrefRegistrySimple* registry) { #if BUILDFLAG(BRAVE_P3A_ENABLED) brave::BraveP3AService::RegisterPrefs(registry, +#if !defined(OS_ANDROID) first_run::IsChromeFirstRun()); +#else + // BraveP3AService::RegisterPrefs + // doesn't use this arg on Android + false); +#endif // !defined(OS_ANDROID) + #endif // BUILDFLAG(BRAVE_P3A_ENABLED) brave_shields::RegisterShieldsP3APrefs(registry); diff --git a/browser/p3a/p3a_core_metrics.h b/browser/p3a/p3a_core_metrics.h index 9e0e2cd4a2a0..37871995f043 100644 --- a/browser/p3a/p3a_core_metrics.h +++ b/browser/p3a/p3a_core_metrics.h @@ -6,6 +6,17 @@ #ifndef BRAVE_BROWSER_P3A_P3A_CORE_METRICS_H_ #define BRAVE_BROWSER_P3A_P3A_CORE_METRICS_H_ +// The classes below can be used on desktop only +// because BrowserListObserver is available on desktop only +// Brave.Uptime.BrowserOpenMinutes, Brave.Core.LastTimeIncognitoUsed and +// Brave.Core.TorEverUsed don't work on Android + +#include "build/build_config.h" + +#if defined(OS_ANDROID) +#error This file should only be included on desktop. +#endif + #include #include "base/timer/timer.h" @@ -39,6 +50,11 @@ class BraveUptimeTracker { DISALLOW_COPY_AND_ASSIGN(BraveUptimeTracker); }; +// BraveWindowTracker is under !OS_ANDROID guard because +// BrowserListObserver should only be only on desktop +// Brave.Uptime.BrowserOpenMinutes and Brave.Core.LastTimeIncognitoUsed +// don't work on Android +#if !defined(OS_ANDROID) // Periodically records P3A stats (extracted from Local State) regarding the // time when incognito windows were used. // Used as a leaking singletone. @@ -62,6 +78,7 @@ class BraveWindowTracker : public BrowserListObserver { PrefService* local_state_; DISALLOW_COPY_AND_ASSIGN(BraveWindowTracker); }; +#endif // !defined(OS_ANDROID) } // namespace brave diff --git a/browser/ui/android/strings/android_brave_strings.grd b/browser/ui/android/strings/android_brave_strings.grd index 01365b52c22e..b47c2eb71113 100644 --- a/browser/ui/android/strings/android_brave_strings.grd +++ b/browser/ui/android/strings/android_brave_strings.grd @@ -235,6 +235,12 @@ This file contains all "about" strings. It is set to NOT be translated, in tran Don't persist tabs between browsing sessions + + Automatically send completely private product analytics to Brave + + + This anonymous info only lets Brave estimate the overall usage of certain features. + Trackers & Ads Blocked @@ -819,6 +825,19 @@ until they verify, or until 90 days have passed. Begin Setup + + + Brave uses completely private product analytics to estimate the overall usage of certain features + + + Got it + + + Disable + + + Learn More + Sync could not be setup @@ -1495,7 +1514,7 @@ until they verify, or until 90 days have passed. Lets Take A Quick Tour - After you recieve your first ads payout you can come back and tip this creator! + After you recieve your first ads payout you can come back and tip this creator! Quick refresher tour diff --git a/build/android/java/templates/BraveConfig.template b/build/android/java/templates/BraveConfig.template index 165ef50043ae..ea9b61c8bce8 100644 --- a/build/android/java/templates/BraveConfig.template +++ b/build/android/java/templates/BraveConfig.template @@ -20,4 +20,10 @@ public class BraveConfig { #else public static final boolean SYNC_ENABLED = false; #endif + +#if defined(BRAVE_ANDROID_P3A_ENABLED) +public static final boolean P3A_ENABLED = BRAVE_ANDROID_P3A_ENABLED; +#else +public static final boolean P3A_ENABLED = false; +#endif } diff --git a/components/p3a/brave_histogram_rewrite.cc b/components/p3a/brave_histogram_rewrite.cc index 20b4b7bd3699..2fec5c2b1e53 100644 --- a/components/p3a/brave_histogram_rewrite.cc +++ b/components/p3a/brave_histogram_rewrite.cc @@ -19,6 +19,7 @@ constexpr const char* kBravezationHistograms[] = { "DefaultBrowser.State", "Extensions.LoadExtension", "Tabs.TabCount", + "Tabs.TabCountPerLoad", "Tabs.WindowCount", }; @@ -70,7 +71,8 @@ void DoHistogramBravezation(const char* histogram_name, return; } - if (strcmp("Tabs.TabCount", histogram_name) == 0) { + if (strcmp("Tabs.TabCount", histogram_name) == 0 || + strcmp("Tabs.TabCountPerLoad", histogram_name) == 0) { int answer = 0; if (0 <= sample && sample <= 1) { answer = 0; diff --git a/components/p3a/brave_p3a_service.cc b/components/p3a/brave_p3a_service.cc index 0d47b14f101c..e6096eaddfb5 100644 --- a/components/p3a/brave_p3a_service.cc +++ b/components/p3a/brave_p3a_service.cc @@ -194,10 +194,8 @@ void BraveP3AService::RegisterPrefs(PrefRegistrySimple* registry, registry->RegisterTimePref(kLastRotationTimeStampPref, {}); registry->RegisterBooleanPref(kP3AEnabled, true); -#if !defined(OS_ANDROID) // New users are shown the P3A notice via the welcome page. registry->RegisterBooleanPref(kP3ANoticeAcknowledged, first_run); -#endif // !defined(OS_ANDROID) } void BraveP3AService::InitCallbacks() { diff --git a/components/p3a/buildflags.gni b/components/p3a/buildflags.gni index 1168f24e5e79..a7debc729bff 100644 --- a/components/p3a/buildflags.gni +++ b/components/p3a/buildflags.gni @@ -1,5 +1,5 @@ import("//build/config/features.gni") declare_args() { - brave_p3a_enabled = !is_ios && !is_android + brave_p3a_enabled = true }