Don't report origin changes during loading.

BUG=365762,374995

Review URL: https://codereview.chromium.org/296053007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272387 0039d316-1c4b-4281-b951-d872f2087c98
parent b2f58a5a
...@@ -875,6 +875,11 @@ void TemplateURLService::RepairPrepopulatedSearchEngines() { ...@@ -875,6 +875,11 @@ void TemplateURLService::RepairPrepopulatedSearchEngines() {
default_search_manager_.ClearUserSelectedDefaultSearchEngine(); default_search_manager_.ClearUserSelectedDefaultSearchEngine();
if (!default_search_provider_) { if (!default_search_provider_) {
// If the default search provider came from a user pref we would have been
// notified of the new (fallback-provided) value in
// ClearUserSelectedDefaultSearchEngine() above. Since we are here, the
// value was presumably originally a fallback value (which may have been
// repaired).
DefaultSearchManager::Source source; DefaultSearchManager::Source source;
const TemplateURLData* new_dse = const TemplateURLData* new_dse =
default_search_manager_.GetDefaultSearchEngine(&source); default_search_manager_.GetDefaultSearchEngine(&source);
...@@ -1677,9 +1682,10 @@ void TemplateURLService::ChangeToLoadedState() { ...@@ -1677,9 +1682,10 @@ void TemplateURLService::ChangeToLoadedState() {
loaded_ = true; loaded_ = true;
// This will cause a call to NotifyObservers(). // This will cause a call to NotifyObservers().
ApplyDefaultSearchChange(initial_default_search_provider_ ? ApplyDefaultSearchChangeNoMetrics(
&initial_default_search_provider_->data() : NULL, initial_default_search_provider_ ?
default_search_provider_source_); &initial_default_search_provider_->data() : NULL,
default_search_provider_source_);
initial_default_search_provider_.reset(); initial_default_search_provider_.reset();
on_loaded_callbacks_.Notify(); on_loaded_callbacks_.Notify();
} }
...@@ -1941,15 +1947,35 @@ void TemplateURLService::OnDefaultSearchChange( ...@@ -1941,15 +1947,35 @@ void TemplateURLService::OnDefaultSearchChange(
void TemplateURLService::ApplyDefaultSearchChange( void TemplateURLService::ApplyDefaultSearchChange(
const TemplateURLData* data, const TemplateURLData* data,
DefaultSearchManager::Source source) { DefaultSearchManager::Source source) {
if (!ApplyDefaultSearchChangeNoMetrics(data, source))
return;
UMA_HISTOGRAM_ENUMERATION(
"Search.DefaultSearchChangeOrigin", dsp_change_origin_, DSP_CHANGE_MAX);
if (GetDefaultSearchProvider() &&
GetDefaultSearchProvider()->HasGoogleBaseURLs()) {
#if defined(ENABLE_RLZ)
RLZTracker::RecordProductEvent(
rlz_lib::CHROME, RLZTracker::ChromeOmnibox(), rlz_lib::SET_TO_GOOGLE);
#endif
}
}
bool TemplateURLService::ApplyDefaultSearchChangeNoMetrics(
const TemplateURLData* data,
DefaultSearchManager::Source source) {
if (!loaded_) { if (!loaded_) {
// Set |initial_default_search_provider_| from the preferences. This is // Set |initial_default_search_provider_| from the preferences. This is
// mainly so we can hold ownership until we get to the point where the list // mainly so we can hold ownership until we get to the point where the list
// of keywords from Web Data is the owner of everything including the // of keywords from Web Data is the owner of everything including the
// default. // default.
bool changed =
TemplateURL::MatchesData(initial_default_search_provider_.get(), data);
initial_default_search_provider_.reset( initial_default_search_provider_.reset(
data ? new TemplateURL(profile_, *data) : NULL); data ? new TemplateURL(profile_, *data) : NULL);
default_search_provider_source_ = source; default_search_provider_source_ = source;
return; return changed;
} }
// Prevent recursion if we update the value stored in default_search_manager_. // Prevent recursion if we update the value stored in default_search_manager_.
...@@ -1958,10 +1984,11 @@ void TemplateURLService::ApplyDefaultSearchChange( ...@@ -1958,10 +1984,11 @@ void TemplateURLService::ApplyDefaultSearchChange(
// NULL due to policy. We'll never actually get recursion with data == NULL. // NULL due to policy. We'll never actually get recursion with data == NULL.
if (source == default_search_provider_source_ && data != NULL && if (source == default_search_provider_source_ && data != NULL &&
TemplateURL::MatchesData(default_search_provider_, data)) TemplateURL::MatchesData(default_search_provider_, data))
return; return false;
UMA_HISTOGRAM_ENUMERATION("Search.DefaultSearchChangeOrigin", // This may be deleted later. Use exclusively for pointer comparison to detect
dsp_change_origin_, DSP_CHANGE_MAX); // a change.
TemplateURL* previous_default_search_engine = default_search_provider_;
WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get()); WebDataService::KeywordBatchModeScoper keyword_scoper(service_.get());
if (default_search_provider_source_ == DefaultSearchManager::FROM_POLICY || if (default_search_provider_source_ == DefaultSearchManager::FROM_POLICY ||
...@@ -1975,17 +2002,10 @@ void TemplateURLService::ApplyDefaultSearchChange( ...@@ -1975,17 +2002,10 @@ void TemplateURLService::ApplyDefaultSearchChange(
if (!data) { if (!data) {
default_search_provider_ = NULL; default_search_provider_ = NULL;
default_search_provider_source_ = source; } else if (source == DefaultSearchManager::FROM_EXTENSION) {
NotifyObservers();
return;
}
if (source == DefaultSearchManager::FROM_EXTENSION) {
default_search_provider_ = FindMatchingExtensionTemplateURL( default_search_provider_ = FindMatchingExtensionTemplateURL(
*data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); *data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
} } else if (source == DefaultSearchManager::FROM_FALLBACK) {
if (source == DefaultSearchManager::FROM_FALLBACK) {
default_search_provider_ = default_search_provider_ =
FindPrepopulatedTemplateURL(data->prepopulate_id); FindPrepopulatedTemplateURL(data->prepopulate_id);
if (default_search_provider_) { if (default_search_provider_) {
...@@ -2011,8 +2031,7 @@ void TemplateURLService::ApplyDefaultSearchChange( ...@@ -2011,8 +2031,7 @@ void TemplateURLService::ApplyDefaultSearchChange(
if (AddNoNotify(new_dse, true)) if (AddNoNotify(new_dse, true))
default_search_provider_ = new_dse; default_search_provider_ = new_dse;
} }
} } else if (source == DefaultSearchManager::FROM_USER) {
if (source == DefaultSearchManager::FROM_USER) {
default_search_provider_ = GetTemplateURLForGUID(data->sync_guid); default_search_provider_ = GetTemplateURLForGUID(data->sync_guid);
if (!default_search_provider_ && data->prepopulate_id) { if (!default_search_provider_ && data->prepopulate_id) {
default_search_provider_ = default_search_provider_ =
...@@ -2042,18 +2061,15 @@ void TemplateURLService::ApplyDefaultSearchChange( ...@@ -2042,18 +2061,15 @@ void TemplateURLService::ApplyDefaultSearchChange(
default_search_provider_source_ = source; default_search_provider_source_ = source;
if (default_search_provider_ && bool changed = default_search_provider_ != previous_default_search_engine;
default_search_provider_->HasGoogleBaseURLs()) {
if (profile_) if (profile_ && changed && default_search_provider_ &&
GoogleURLTracker::RequestServerCheck(profile_, false); default_search_provider_->HasGoogleBaseURLs())
#if defined(ENABLE_RLZ) GoogleURLTracker::RequestServerCheck(profile_, false);
RLZTracker::RecordProductEvent(rlz_lib::CHROME,
RLZTracker::ChromeOmnibox(),
rlz_lib::SET_TO_GOOGLE);
#endif
}
NotifyObservers(); NotifyObservers();
return changed;
} }
bool TemplateURLService::AddNoNotify(TemplateURL* template_url, bool TemplateURLService::AddNoNotify(TemplateURL* template_url,
......
...@@ -496,11 +496,16 @@ class TemplateURLService : public WebDataServiceConsumer, ...@@ -496,11 +496,16 @@ class TemplateURLService : public WebDataServiceConsumer,
void OnDefaultSearchChange(const TemplateURLData* new_dse_data, void OnDefaultSearchChange(const TemplateURLData* new_dse_data,
DefaultSearchManager::Source source); DefaultSearchManager::Source source);
// Applies a DSE change. May be called at startup or after transitioning to // Applies a DSE change and reports metrics if appropriate.
// the loaded state.
void ApplyDefaultSearchChange(const TemplateURLData* new_dse_data, void ApplyDefaultSearchChange(const TemplateURLData* new_dse_data,
DefaultSearchManager::Source source); DefaultSearchManager::Source source);
// Applies a DSE change. May be called at startup or after transitioning to
// the loaded state. Returns true if a change actually occurred.
bool ApplyDefaultSearchChangeNoMetrics(const TemplateURLData* new_dse_data,
DefaultSearchManager::Source source);
// Returns true if there is no TemplateURL that has a search url with the // Returns true if there is no TemplateURL that has a search url with the
// specified host, or the only TemplateURLs matching the specified host can // specified host, or the only TemplateURLs matching the specified host can
// be replaced. // be replaced.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment