Skip to content

Commit

Permalink
Fix news P3A enabled metric
Browse files Browse the repository at this point in the history
  • Loading branch information
DJAndries committed Jun 13, 2023
1 parent 912eda9 commit 2ba6fbb
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 3 deletions.
8 changes: 7 additions & 1 deletion components/brave_news/browser/brave_news_controller.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include "base/functional/bind.h"
#include "base/functional/callback_forward.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
#include "base/time/time.h"
#include "base/values.h"
#include "brave/components/api_request_helper/api_request_helper.h"
Expand Down Expand Up @@ -56,6 +57,9 @@ namespace {
// The favicon size we desire. The favicons are rendered at 24x24 pixels but
// they look quite a bit nicer if we get a 48x48 pixel icon and downscale it.
constexpr uint32_t kDesiredFaviconSizePixels = 48;
// Since we have two boolean prefs for the News enabled status, a delay
// will be used so that we only report the histogram once for both pref updates.
constexpr base::TimeDelta kP3AEnabledReportTimeDelay = base::Seconds(3);
} // namespace

bool GetIsEnabled(PrefService* prefs) {
Expand Down Expand Up @@ -627,7 +631,9 @@ void BraveNewsController::Prefetch() {
}

void BraveNewsController::OnOptInChange() {
p3a::RecordFeatureEnabledChange(prefs_);
p3a_enabled_report_timer_.Start(
FROM_HERE, kP3AEnabledReportTimeDelay,
base::BindOnce(&p3a::RecordFeatureEnabledChange, prefs_));
ConditionallyStartOrStopTimer();
}

Expand Down
1 change: 1 addition & 0 deletions components/brave_news/browser/brave_news_controller.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ class BraveNewsController : public KeyedService,

PrefChangeRegistrar pref_change_registrar_;
base::OneShotTimer timer_prefetch_;
base::OneShotTimer p3a_enabled_report_timer_;
base::RepeatingTimer timer_feed_update_;
base::RepeatingTimer timer_publishers_update_;
base::CancelableTaskTracker task_tracker_;
Expand Down
20 changes: 18 additions & 2 deletions components/brave_news/browser/brave_news_p3a.cc
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@ constexpr char kUsageDailyHistogramName[] = "Brave.Today.UsageDaily";

namespace {

bool IsNewsEnabled(PrefService* prefs) {
return prefs->GetBoolean(prefs::kBraveNewsOptedIn) &&
prefs->GetBoolean(prefs::kNewTabPageShowToday);
}

uint64_t AddToWeeklyStorageAndGetSum(PrefService* prefs,
const char* pref_name,
int change) {
Expand Down Expand Up @@ -131,8 +136,14 @@ void RecordTotalCardViews(PrefService* prefs, uint64_t count_delta) {
}

void RecordFeatureEnabledChange(PrefService* prefs) {
bool enabled = prefs->GetBoolean(prefs::kBraveNewsOptedIn) &&
prefs->GetBoolean(prefs::kNewTabPageShowToday);
bool enabled = IsNewsEnabled(prefs);
bool was_ever_enabled = prefs->GetBoolean(prefs::kBraveNewsWasEverEnabled);
if (!enabled && !was_ever_enabled) {
// If the user clicked "no thanks" on the NTP, then we don't want to record
// this as an opt-out, since they were never opted in.
return;
}
prefs->SetBoolean(prefs::kBraveNewsWasEverEnabled, true);
UMA_HISTOGRAM_BOOLEAN(kIsEnabledHistogramName, enabled);
}

Expand All @@ -145,6 +156,10 @@ void RecordAtInit(PrefService* prefs) {
RecordWeeklySessionCount(prefs, false);
RecordWeeklyDisplayAdsViewedCount(prefs, false);
RecordTotalCardViews(prefs, 0);

if (IsNewsEnabled(prefs)) {
prefs->SetBoolean(prefs::kBraveNewsWasEverEnabled, true);
}
}

void RegisterProfilePrefs(PrefRegistrySimple* registry) {
Expand All @@ -156,6 +171,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry, prefs::kBraveNewsFirstSessionTime,
prefs::kBraveNewsLastSessionTime, prefs::kBraveNewsUsedSecondDay, nullptr,
nullptr);
registry->RegisterBooleanPref(prefs::kBraveNewsWasEverEnabled, false);
}

void RegisterProfilePrefsForMigration(PrefRegistrySimple* registry) {
Expand Down
4 changes: 4 additions & 0 deletions components/brave_news/browser/brave_news_p3a_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,10 @@ TEST_F(BraveNewsP3ATest, TestNewUserReturningNotFollowingDay) {
TEST_F(BraveNewsP3ATest, TestIsEnabled) {
PrefService* prefs = GetPrefs();

// should not record "disabled" if never opted in
prefs->SetBoolean(prefs::kNewTabPageShowToday, false);
histogram_tester_.ExpectTotalCount(kIsEnabledHistogramName, 0);

prefs->SetBoolean(prefs::kBraveNewsOptedIn, true);
prefs->SetBoolean(prefs::kNewTabPageShowToday, true);
RecordFeatureEnabledChange(prefs);
Expand Down
1 change: 1 addition & 0 deletions components/brave_news/common/pref_names.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ constexpr char kBraveNewsFirstSessionTime[] =
constexpr char kBraveNewsUsedSecondDay[] = "brave.today.p3a_used_second_day";
constexpr char kBraveNewsLastSessionTime[] =
"brave.today.p3a_last_session_time";
constexpr char kBraveNewsWasEverEnabled[] = "brave.today.p3a_was_ever_enabled";

// Dictionary value keys
constexpr char kBraveNewsDirectFeedsKeyTitle[] = "title";
Expand Down

0 comments on commit 2ba6fbb

Please sign in to comment.