Skip to content

Commit

Permalink
Merge pull request #7063 from brave/bsc-ntp-p3a-1.17.x
Browse files Browse the repository at this point in the history
Add sponsored image P3A instrumentation for New Tab Page (uplift to 1.17.x)
  • Loading branch information
kjozwiak authored Nov 11, 2020
2 parents 4227165 + 86c799d commit 4452b54
Show file tree
Hide file tree
Showing 36 changed files with 354 additions and 100 deletions.
10 changes: 0 additions & 10 deletions browser/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -110,31 +110,21 @@ source_set("browser_process") {
"autoplay",
"brave_stats:stats_updater",
"browsing_data",
"browsing_data",
"browsing_data",
"content_settings",
"download",
"farbling",
"net",
"ntp_background_images",
"ntp_background_images",
"ntp_background_images",
"profiles",
"renderer_context_menu",
"search",
"search",
"themes",
"themes",
"themes",
"ui",
"//base",
"//brave/browser/net",
"//brave/browser/notifications",
"//brave/browser/tor:buildflags",
"//brave/browser/translate/buildflags",
"//brave/chromium_src:browser",
"//brave/chromium_src:browser",
"//brave/chromium_src:browser",
"//brave/common",
"//brave/common:pref_names",
"//brave/components/binance/browser/buildflags",
Expand Down
10 changes: 8 additions & 2 deletions browser/brave_browser_main_extra_parts.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,17 @@
#include "base/metrics/histogram_macros.h"
#include "brave/browser/brave_browser_process_impl.h"
#include "brave/components/brave_shields/browser/brave_shields_p3a.h"
#include "brave/components/p3a/buildflags.h"
#include "brave/components/p3a/brave_p3a_service.h"
#include "components/prefs/pref_service.h"
#include "brave/components/p3a/buildflags.h"
#include "components/metrics/metrics_pref_names.h"
#include "components/prefs/pref_service.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "third_party/widevine/cdm/buildflags.h"

#if !defined(OS_ANDROID)
#include "brave/browser/importer/brave_importer_p3a.h"
#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)

Expand All @@ -30,11 +31,16 @@ namespace {
// Records default values for some histograms because we want these stats to be
// uploaded anyways. Corresponding components will write new values according
// to their usage scenarios.
//
// For profile specific values, see browser/profiles/profile_util.cc
void RecordInitialP3AValues() {
#if !defined(OS_ANDROID)
if (first_run::IsChromeFirstRun()) {
RecordImporterP3A(importer::ImporterType::TYPE_UNKNOWN);
}

BraveNewTabMessageHandler::RecordInitialP3AValues(
g_browser_process->local_state());
#endif // !defined(OS_ANDROID)

brave_shields::MaybeRecordShieldsUsageP3A(brave_shields::kNeverClicked,
Expand Down
4 changes: 4 additions & 0 deletions browser/brave_local_state_prefs.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "brave/components/brave_shields/browser/ad_block_service.h"
#include "brave/components/brave_shields/browser/brave_shields_p3a.h"
#include "brave/components/ntp_background_images/browser/ntp_background_images_service.h"
#include "brave/components/ntp_background_images/browser/view_counter_service.h"
#include "brave/components/p3a/brave_p3a_service.h"
#include "brave/components/p3a/buildflags.h"
#include "chrome/browser/first_run/first_run.h"
Expand All @@ -33,6 +34,7 @@

#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"
#endif // !defined(OS_ANDROID)

#if BUILDFLAG(ENABLE_WIDEVINE)
Expand All @@ -46,6 +48,7 @@ void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
brave_stats::RegisterLocalStatePrefs(registry);
ntp_background_images::NTPBackgroundImagesService::RegisterLocalStatePrefs(
registry);
ntp_background_images::ViewCounterService::RegisterLocalStatePrefs(registry);
#if BUILDFLAG(ENABLE_BRAVE_REFERRALS)
RegisterPrefsForBraveReferralsService(registry);
#endif
Expand All @@ -68,6 +71,7 @@ void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {

brave_shields::RegisterShieldsP3APrefs(registry);
#if !defined(OS_ANDROID)
BraveNewTabMessageHandler::RegisterLocalStatePrefs(registry);
BraveWindowTracker::RegisterPrefs(registry);
BraveUptimeTracker::RegisterPrefs(registry);
dark_mode::RegisterBraveDarkModeLocalStatePrefs(registry);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ KeyedService* ViewCounterServiceFactory::BuildServiceInstanceFor(
return new ViewCounterService(service,
ads_service,
profile->GetPrefs(),
g_brave_browser_process->local_state(),
is_supported_locale);
}

Expand Down
2 changes: 2 additions & 0 deletions browser/profiles/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,11 @@ source_set("profiles") {
"//brave/components/brave_ads/browser",
"//brave/components/brave_rewards/browser",
"//brave/components/brave_sync:prefs",
"//brave/components/ntp_background_images/common",
"//brave/content:browser",
"//chrome/common",
"//components/gcm_driver:gcm_buildflags",
"//components/prefs",
"//components/safe_browsing/core/common:safe_browsing_prefs",
"//components/translate/core/browser",
"//third_party/blink/public/common",
Expand Down
5 changes: 5 additions & 0 deletions browser/profiles/brave_profile_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ BraveProfileImpl::BraveProfileImpl(
scoped_refptr<base::SequencedTaskRunner> io_task_runner)
: ProfileImpl(path, delegate, create_mode, creation_time, io_task_runner),
weak_ptr_factory_(this) {
// Profile can be loaded sync or async; if async, there is a matching block
// in `browser/profiles/brave_profile_manager.cc` (OnProfileCreated)
if (create_mode == CREATE_MODE_SYNCHRONOUS) {
brave::RecordInitialP3AValues(this);
}
// In sessions profiles, prefs are created from the original profile like how
// incognito profile works. By the time chromium start to observe prefs
// initialization in ProfileImpl constructor for the async creation case,
Expand Down
4 changes: 4 additions & 0 deletions browser/profiles/brave_profile_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@ void BraveProfileManager::AddProfileToStorage(Profile* profile) {
ProfileManager::AddProfileToStorage(profile);
}

// Profile can be loaded sync or async; if sync, there is a matching block
// in `browser/profiles/brave_profile_impl.cc` (constructor)
void BraveProfileManager::OnProfileCreated(Profile* profile,
bool success,
bool is_new_profile) {
Expand Down Expand Up @@ -206,6 +208,8 @@ void BraveProfileManager::OnProfileCreated(Profile* profile,
TorProfileServiceFactory::GetForProfile(profile);
}
#endif

brave::RecordInitialP3AValues(profile);
}

// This overridden method doesn't clear |kDefaultSearchProviderDataPrefName|.
Expand Down
26 changes: 26 additions & 0 deletions browser/profiles/profile_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,19 @@

#include "base/files/file_path.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "base/no_destructor.h"
#include "brave/browser/tor/buildflags.h"
#include "brave/common/tor/tor_constants.h"
#include "brave/components/ntp_background_images/common/pref_names.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_key.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "components/prefs/pref_service.h"

using ntp_background_images::prefs::kNewTabPageShowBackgroundImage;
using ntp_background_images::prefs::kNewTabPageShowSponsoredImagesBackgroundImage; // NOLINT

#if BUILDFLAG(ENABLE_TOR)
#include "brave/browser/tor/tor_profile_service.h"
Expand Down Expand Up @@ -215,6 +221,26 @@ bool IsRegularProfile(content::BrowserContext* context) {
profile->IsRegularProfile();
}

void RecordSponsoredImagesEnabledP3A(Profile* profile) {
bool is_sponsored_image_enabled =
profile->GetPrefs()->GetBoolean(kNewTabPageShowBackgroundImage) &&
profile->GetPrefs()->GetBoolean(
kNewTabPageShowSponsoredImagesBackgroundImage);
UMA_HISTOGRAM_BOOLEAN("Brave.NTP.SponsoredImagesEnabled",
is_sponsored_image_enabled);
}

void RecordInitialP3AValues(Profile* profile) {
// Preference is unregistered for some reason in profile_manager_unittest
// TODO(bsclifton): create a proper testing profile
if (!profile->GetPrefs()->FindPreference(kNewTabPageShowBackgroundImage) ||
!profile->GetPrefs()->FindPreference(
kNewTabPageShowSponsoredImagesBackgroundImage)) {
return;
}
RecordSponsoredImagesEnabledP3A(profile);
}

} // namespace brave

namespace chrome {
Expand Down
10 changes: 10 additions & 0 deletions browser/profiles/profile_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,16 @@ bool IsRegularProfile(content::BrowserContext* profile);

bool IsTorDisabledForProfile(Profile* profile);

// Specifically used to record if sponsored images are enabled.
// Called from BraveAppearanceHandler and BraveNewTabMessageHandler
void RecordSponsoredImagesEnabledP3A(Profile* profile);

// Records default values for some histograms.
//
// For profile agnostic values (ex: local_state) see
// browser/brave_browser_main_extra_parts.cc
void RecordInitialP3AValues(Profile* profile);

} // namespace brave

namespace chrome {
Expand Down
12 changes: 6 additions & 6 deletions browser/ui/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -76,18 +76,18 @@ source_set("ui") {
"omnibox/brave_omnibox_client_impl.h",
"toolbar/brave_app_menu_model.cc",
"toolbar/brave_app_menu_model.h",
"webui/brave_new_tab_message_handler.cc",
"webui/brave_new_tab_message_handler.h",
"webui/brave_new_tab_ui.cc",
"webui/brave_new_tab_ui.h",
"webui/brave_settings_ui.cc",
"webui/brave_settings_ui.h",
"webui/brave_welcome_ui.cc",
"webui/brave_welcome_ui.h",
"webui/instant_service_message_handler.cc",
"webui/instant_service_message_handler.h",
"webui/navigation_bar_data_provider.cc",
"webui/navigation_bar_data_provider.h",
"webui/new_tab_page/brave_new_tab_message_handler.cc",
"webui/new_tab_page/brave_new_tab_message_handler.h",
"webui/new_tab_page/brave_new_tab_ui.cc",
"webui/new_tab_page/brave_new_tab_ui.h",
"webui/new_tab_page/instant_service_message_handler.cc",
"webui/new_tab_page/instant_service_message_handler.h",
"webui/settings/brave_appearance_handler.cc",
"webui/settings/brave_appearance_handler.h",
"webui/settings/brave_import_data_handler.h",
Expand Down
2 changes: 1 addition & 1 deletion browser/ui/webui/brave_web_ui_controller_factory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
#include "url/gurl.h"

#if !defined(OS_ANDROID)
#include "brave/browser/ui/webui/brave_new_tab_ui.h"
#include "brave/browser/ui/webui/brave_settings_ui.h"
#include "brave/browser/ui/webui/brave_welcome_ui.h"
#include "brave/browser/ui/webui/new_tab_page/brave_new_tab_ui.h"
#endif

#if BUILDFLAG(BRAVE_REWARDS_ENABLED)
Expand Down
Loading

0 comments on commit 4452b54

Please sign in to comment.