Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: chrome/browser/search_engines/template_url_service.cc

Issue 274323002: Revert of Some refactorings to facilitate a larger change to TemplateURLService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/search_engines/template_url_service.h" 5 #include "chrome/browser/search_engines/template_url_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "chrome/common/pref_names.h" 44 #include "chrome/common/pref_names.h"
45 #include "chrome/common/url_constants.h" 45 #include "chrome/common/url_constants.h"
46 #include "content/public/browser/notification_service.h" 46 #include "content/public/browser/notification_service.h"
47 #include "extensions/common/constants.h" 47 #include "extensions/common/constants.h"
48 #include "net/base/net_util.h" 48 #include "net/base/net_util.h"
49 #include "sync/api/sync_change.h" 49 #include "sync/api/sync_change.h"
50 #include "sync/api/sync_error_factory.h" 50 #include "sync/api/sync_error_factory.h"
51 #include "sync/protocol/search_engine_specifics.pb.h" 51 #include "sync/protocol/search_engine_specifics.pb.h"
52 #include "sync/protocol/sync.pb.h" 52 #include "sync/protocol/sync.pb.h"
53 #include "ui/base/l10n/l10n_util.h" 53 #include "ui/base/l10n/l10n_util.h"
54 #include "url/gurl.h"
55 54
56 typedef SearchHostToURLsMap::TemplateURLSet TemplateURLSet; 55 typedef SearchHostToURLsMap::TemplateURLSet TemplateURLSet;
57 typedef TemplateURLService::SyncDataMap SyncDataMap; 56 typedef TemplateURLService::SyncDataMap SyncDataMap;
58 57
59 namespace { 58 namespace {
60 59
61 bool TemplateURLMatchesData(const TemplateURL* url1, 60 bool TemplateURLMatchesData(const TemplateURL* url1,
62 const TemplateURLData* url2) { 61 const TemplateURLData* url2) {
63 if (!url1 || !url2) 62 if (!url1 || !url2)
64 return !url1 && !url2; 63 return !url1 && !url2;
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 load_handle_(0), 284 load_handle_(0),
286 default_search_provider_(NULL), 285 default_search_provider_(NULL),
287 is_default_search_managed_(false), 286 is_default_search_managed_(false),
288 next_id_(kInvalidTemplateURLID + 1), 287 next_id_(kInvalidTemplateURLID + 1),
289 time_provider_(&base::Time::Now), 288 time_provider_(&base::Time::Now),
290 models_associated_(false), 289 models_associated_(false),
291 processing_syncer_changes_(false), 290 processing_syncer_changes_(false),
292 pending_synced_default_search_(false), 291 pending_synced_default_search_(false),
293 dsp_change_origin_(DSP_CHANGE_OTHER), 292 dsp_change_origin_(DSP_CHANGE_OTHER),
294 default_search_manager_( 293 default_search_manager_(
295 GetPrefs(), DefaultSearchManager::ObserverCallback()) { 294 new DefaultSearchManager(GetPrefs(),
295 DefaultSearchManager::ObserverCallback())) {
296 DCHECK(profile_); 296 DCHECK(profile_);
297 Init(NULL, 0); 297 Init(NULL, 0);
298 } 298 }
299 299
300 TemplateURLService::TemplateURLService(const Initializer* initializers, 300 TemplateURLService::TemplateURLService(const Initializer* initializers,
301 const int count) 301 const int count)
302 : provider_map_(new SearchHostToURLsMap), 302 : provider_map_(new SearchHostToURLsMap),
303 profile_(NULL), 303 profile_(NULL),
304 loaded_(false), 304 loaded_(false),
305 load_failed_(false), 305 load_failed_(false),
306 load_handle_(0), 306 load_handle_(0),
307 service_(NULL), 307 service_(NULL),
308 default_search_provider_(NULL), 308 default_search_provider_(NULL),
309 is_default_search_managed_(false), 309 is_default_search_managed_(false),
310 next_id_(kInvalidTemplateURLID + 1), 310 next_id_(kInvalidTemplateURLID + 1),
311 time_provider_(&base::Time::Now), 311 time_provider_(&base::Time::Now),
312 models_associated_(false), 312 models_associated_(false),
313 processing_syncer_changes_(false), 313 processing_syncer_changes_(false),
314 pending_synced_default_search_(false), 314 pending_synced_default_search_(false),
315 dsp_change_origin_(DSP_CHANGE_OTHER), 315 dsp_change_origin_(DSP_CHANGE_OTHER) {
316 default_search_manager_(
317 GetPrefs(), DefaultSearchManager::ObserverCallback()) {
318 Init(initializers, count); 316 Init(initializers, count);
319 } 317 }
320 318
321 TemplateURLService::~TemplateURLService() { 319 TemplateURLService::~TemplateURLService() {
322 // |service_| should be deleted during Shutdown(). 320 // |service_| should be deleted during Shutdown().
323 DCHECK(!service_); 321 DCHECK(!service_);
324 STLDeleteElements(&template_urls_); 322 STLDeleteElements(&template_urls_);
325 } 323 }
326 324
327 // static 325 // static
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 // be replaced. We do this to ensure that if the user assigns a different 591 // be replaced. We do this to ensure that if the user assigns a different
594 // keyword to a generated TemplateURL, we won't regenerate another keyword for 592 // keyword to a generated TemplateURL, we won't regenerate another keyword for
595 // the same host. 593 // the same host.
596 return !url.is_valid() || url.host().empty() || 594 return !url.is_valid() || url.host().empty() ||
597 CanReplaceKeywordForHost(url.host(), template_url_to_replace); 595 CanReplaceKeywordForHost(url.host(), template_url_to_replace);
598 } 596 }
599 597
600 void TemplateURLService::FindMatchingKeywords( 598 void TemplateURLService::FindMatchingKeywords(
601 const base::string16& prefix, 599 const base::string16& prefix,
602 bool support_replacement_only, 600 bool support_replacement_only,
603 TemplateURLVector* matches) { 601 TemplateURLVector* matches) const {
604 // Sanity check args. 602 // Sanity check args.
605 if (prefix.empty()) 603 if (prefix.empty())
606 return; 604 return;
607 DCHECK(matches != NULL); 605 DCHECK(matches != NULL);
608 DCHECK(matches->empty()); // The code for exact matches assumes this. 606 DCHECK(matches->empty()); // The code for exact matches assumes this.
609 607
610 // Required for VS2010: http://connect.microsoft.com/VisualStudio/feedback/det ails/520043/error-converting-from-null-to-a-pointer-type-in-std-pair 608 // Required for VS2010: http://connect.microsoft.com/VisualStudio/feedback/det ails/520043/error-converting-from-null-to-a-pointer-type-in-std-pair
611 TemplateURL* const kNullTemplateURL = NULL; 609 TemplateURL* const kNullTemplateURL = NULL;
612 610
613 // Find matching keyword range. Searches the element map for keywords 611 // Find matching keyword range. Searches the element map for keywords
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 return !is_default_search_managed() && 844 return !is_default_search_managed() &&
847 !IsExtensionControlledDefaultSearch() && 845 !IsExtensionControlledDefaultSearch() &&
848 (url != GetDefaultSearchProvider()) && 846 (url != GetDefaultSearchProvider()) &&
849 url->url_ref().SupportsReplacement() && 847 url->url_ref().SupportsReplacement() &&
850 (url->GetType() == TemplateURL::NORMAL); 848 (url->GetType() == TemplateURL::NORMAL);
851 } 849 }
852 850
853 void TemplateURLService::SetUserSelectedDefaultSearchProvider( 851 void TemplateURLService::SetUserSelectedDefaultSearchProvider(
854 TemplateURL* url) { 852 TemplateURL* url) {
855 SetDefaultSearchProvider(url); 853 SetDefaultSearchProvider(url);
856 if (url) 854 if (default_search_manager_) {
857 default_search_manager_.SetUserSelectedDefaultSearchEngine(url->data()); 855 if (url)
858 else 856 default_search_manager_->SetUserSelectedDefaultSearchEngine(url->data());
859 default_search_manager_.ClearUserSelectedDefaultSearchEngine(); 857 else
858 default_search_manager_->ClearUserSelectedDefaultSearchEngine();
859 }
860 } 860 }
861 861
862 TemplateURL* TemplateURLService::GetDefaultSearchProvider() { 862 TemplateURL* TemplateURLService::GetDefaultSearchProvider() {
863 if (loaded_ && !load_failed_) 863 if (loaded_ && !load_failed_)
864 return default_search_provider_; 864 return default_search_provider_;
865 // We're not loaded, rely on the default search provider stored in prefs. 865 // We're not loaded, rely on the default search provider stored in prefs.
866 return initial_default_search_provider_.get(); 866 return initial_default_search_provider_.get();
867 } 867 }
868 868
869 bool TemplateURLService::IsSearchResultsPageFromDefaultSearchProvider( 869 bool TemplateURLService::IsSearchResultsPageFromDefaultSearchProvider(
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 data.SetKeyword(updated_keyword); 1204 data.SetKeyword(updated_keyword);
1205 TemplateURL new_turl(existing_turl->profile(), data); 1205 TemplateURL new_turl(existing_turl->profile(), data);
1206 UIThreadSearchTermsData search_terms_data(existing_turl->profile()); 1206 UIThreadSearchTermsData search_terms_data(existing_turl->profile());
1207 if (UpdateNoNotify(existing_turl, new_turl, search_terms_data)) 1207 if (UpdateNoNotify(existing_turl, new_turl, search_terms_data))
1208 NotifyObservers(); 1208 NotifyObservers();
1209 1209
1210 syncer::SyncData sync_data = CreateSyncDataFromTemplateURL(new_turl); 1210 syncer::SyncData sync_data = CreateSyncDataFromTemplateURL(new_turl);
1211 new_changes.push_back(syncer::SyncChange(FROM_HERE, 1211 new_changes.push_back(syncer::SyncChange(FROM_HERE,
1212 syncer::SyncChange::ACTION_ADD, 1212 syncer::SyncChange::ACTION_ADD,
1213 sync_data)); 1213 sync_data));
1214 // Ignore the delete attempt. This means we never end up resetting the 1214 // Ignore the delete attempt. This means we never end up reseting the
1215 // default search provider due to an ACTION_DELETE from sync. 1215 // default search provider due to an ACTION_DELETE from sync.
1216 continue; 1216 continue;
1217 } 1217 }
1218 1218
1219 Remove(existing_turl); 1219 Remove(existing_turl);
1220 } else if (iter->change_type() == syncer::SyncChange::ACTION_ADD) { 1220 } else if (iter->change_type() == syncer::SyncChange::ACTION_ADD) {
1221 if (existing_turl) { 1221 if (existing_turl) {
1222 error = sync_error_factory_->CreateAndUploadError( 1222 error = sync_error_factory_->CreateAndUploadError(
1223 FROM_HERE, 1223 FROM_HERE,
1224 "ProcessSyncChanges failed on ChangeType ACTION_ADD"); 1224 "ProcessSyncChanges failed on ChangeType ACTION_ADD");
(...skipping 1467 matching lines...) Expand 10 before | Expand all | Expand 10 after
2692 // Don't log anything if the user has a NULL default search provider. 2692 // Don't log anything if the user has a NULL default search provider.
2693 if (default_search_provider_) { 2693 if (default_search_provider_) {
2694 UMA_HISTOGRAM_ENUMERATION("Search.DefaultSearchProviderType", 2694 UMA_HISTOGRAM_ENUMERATION("Search.DefaultSearchProviderType",
2695 TemplateURLPrepopulateData::GetEngineType(*default_search_provider_), 2695 TemplateURLPrepopulateData::GetEngineType(*default_search_provider_),
2696 SEARCH_ENGINE_MAX); 2696 SEARCH_ENGINE_MAX);
2697 } 2697 }
2698 } 2698 }
2699 } 2699 }
2700 2700
2701 TemplateURL* TemplateURLService::CreateTemplateURLForExtension( 2701 TemplateURL* TemplateURLService::CreateTemplateURLForExtension(
2702 const ExtensionKeyword& extension_keyword) { 2702 const ExtensionKeyword& extension_keyword) const {
2703 TemplateURLData data; 2703 TemplateURLData data;
2704 data.short_name = base::UTF8ToUTF16(extension_keyword.extension_name); 2704 data.short_name = base::UTF8ToUTF16(extension_keyword.extension_name);
2705 data.SetKeyword(base::UTF8ToUTF16(extension_keyword.extension_keyword)); 2705 data.SetKeyword(base::UTF8ToUTF16(extension_keyword.extension_keyword));
2706 // This URL is not actually used for navigation. It holds the extension's 2706 // This URL is not actually used for navigation. It holds the extension's
2707 // ID, as well as forcing the TemplateURL to be treated as a search keyword. 2707 // ID, as well as forcing the TemplateURL to be treated as a search keyword.
2708 data.SetURL(std::string(extensions::kExtensionScheme) + "://" + 2708 data.SetURL(std::string(extensions::kExtensionScheme) + "://" +
2709 extension_keyword.extension_id + "/?q={searchTerms}"); 2709 extension_keyword.extension_id + "/?q={searchTerms}");
2710 return new TemplateURL(profile_, data); 2710 return new TemplateURL(profile_, data);
2711 } 2711 }
2712 2712
2713 TemplateURL* TemplateURLService::FindTemplateURLForExtension( 2713 TemplateURL* TemplateURLService::FindTemplateURLForExtension(
2714 const std::string& extension_id, 2714 const std::string& extension_id,
2715 TemplateURL::Type type) { 2715 TemplateURL::Type type) const {
2716 DCHECK_NE(TemplateURL::NORMAL, type); 2716 DCHECK_NE(TemplateURL::NORMAL, type);
2717 for (TemplateURLVector::const_iterator i = template_urls_.begin(); 2717 for (TemplateURLVector::const_iterator i = template_urls_.begin();
2718 i != template_urls_.end(); ++i) { 2718 i != template_urls_.end(); ++i) {
2719 if ((*i)->GetType() == type && 2719 if ((*i)->GetType() == type &&
2720 (*i)->GetExtensionId() == extension_id) 2720 (*i)->GetExtensionId() == extension_id)
2721 return *i; 2721 return *i;
2722 } 2722 }
2723 2723
2724 return NULL; 2724 return NULL;
2725 } 2725 }
(...skipping 30 matching lines...) Expand all
2756 new_dse = *i; 2756 new_dse = *i;
2757 break; 2757 break;
2758 } 2758 }
2759 } 2759 }
2760 } 2760 }
2761 } 2761 }
2762 if (!new_dse) 2762 if (!new_dse)
2763 new_dse = FindNewDefaultSearchProvider(); 2763 new_dse = FindNewDefaultSearchProvider();
2764 SetDefaultSearchProviderNoNotify(new_dse); 2764 SetDefaultSearchProviderNoNotify(new_dse);
2765 } 2765 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698