Skip to content

Commit

Permalink
Record default search engine changes.
Browse files Browse the repository at this point in the history
Add a P3A probe to record when the default search engine is changed,
and whether it's a transition between Brave Search or one of the
other major services. This helps understand what options are seem
better to users.

Closes brave/brave-browser#18224
  • Loading branch information
rillian committed Oct 12, 2021
1 parent d8e296c commit c3c2365
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 0 deletions.
35 changes: 35 additions & 0 deletions browser/search_engines/search_engine_tracker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,40 @@ void RecordSearchEngineP3A(const GURL& search_engine_url,
UMA_HISTOGRAM_ENUMERATION(kDefaultSearchEngineMetric, answer);
}

void RecordSwitchP3A(const GURL& to_url, const GURL& from_url) {
auto answer = SearchEngineSwitchP3A::kNoSwitch;

auto to = to_url.host_piece();
auto from = from_url.host_piece();
auto ncase = base::CompareCase::INSENSITIVE_ASCII;
if (base::EndsWith(from, "brave.com", ncase)) {
// Switching away from Brave Search.
if (base::EndsWith(to, "brave.com", ncase)) {
answer = SearchEngineSwitchP3A::kBraveToBrave;
} else if (base::EndsWith(to, "google.com", ncase)) {
answer = SearchEngineSwitchP3A::kBraveToGoogle;
} else if (base::EndsWith(to, "duckduckgo.com", ncase)) {
answer = SearchEngineSwitchP3A::kBraveToDDG;
} else {
answer = SearchEngineSwitchP3A::kBraveToOther;
}
} else if (base::EndsWith(to, "brave.com", ncase)) {
// Switching to Brave Search.
if (base::EndsWith(from, "google.com", ncase)) {
answer = SearchEngineSwitchP3A::kGoogleToBrave;
} else if (base::EndsWith(from, "duckduckgo.com", ncase)) {
answer = SearchEngineSwitchP3A::kDDGToBrave;
} else {
answer = SearchEngineSwitchP3A::kOtherToBrave;
}
} else {
// Any other transition.
answer = SearchEngineSwitchP3A::kOtherToOther;
}

UMA_HISTOGRAM_ENUMERATION(kSwitchSearchEngineMetric, answer);
}

} // namespace

// static
Expand Down Expand Up @@ -105,6 +139,7 @@ void SearchEngineTracker::OnTemplateURLServiceChanged() {
const GURL& url = template_url->GenerateSearchURL(search_terms);
if (url != default_search_url_) {
RecordSearchEngineP3A(url, template_url->GetEngineType(search_terms));
RecordSwitchP3A(url, default_search_url_);
}
}
}
14 changes: 14 additions & 0 deletions browser/search_engines/search_engine_tracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

// Exposed for tests.
constexpr char kDefaultSearchEngineMetric[] = "Brave.Search.DefaultEngine.4";
constexpr char kSwitchSearchEngineMetric[] = "Brave.Search.SwitchEngine";

// Note: append-only enumeration! Never remove any existing values, as this enum
// is used to bucket a UMA histogram, and removing values breaks that.
Expand All @@ -33,6 +34,19 @@ enum class SearchEngineP3A {
kMaxValue = kBrave,
};

enum class SearchEngineSwitchP3A {
kNoSwitch,
kBraveToBrave,
kBraveToGoogle,
kBraveToDDG,
kBraveToOther,
kGoogleToBrave,
kDDGToBrave,
kOtherToBrave,
kOtherToOther,
kMaxValue = kOtherToOther,
};

class SearchEngineTrackerFactory : public BrowserContextKeyedServiceFactory {
public:
static SearchEngineTrackerFactory* GetInstance();
Expand Down
1 change: 1 addition & 0 deletions components/p3a/brave_p3a_service.cc
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ constexpr const char* kCollectedHistograms[] = {
"Brave.Rewards.WalletState",
"Brave.Savings.BandwidthSavingsMB",
"Brave.Search.DefaultEngine.4",
"Brave.Search.SwitchEngine",
"Brave.Shields.UsageStatus",
"Brave.SpeedReader.Enabled",
"Brave.SpeedReader.ToggleCount",
Expand Down

0 comments on commit c3c2365

Please sign in to comment.