diff options
author | levin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-21 00:34:46 +0000 |
---|---|---|
committer | levin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-21 00:34:46 +0000 |
commit | ce75ec6a5b901b94a535d8184b0f14bab632c17f (patch) | |
tree | 3c6f7e48d4e12d44b731b45488e9fc0e014b48a7 /chrome/browser/search_engines | |
parent | f9a0684728f020c4f08c87ed5a2349832381a23a (diff) | |
download | chromium_src-ce75ec6a5b901b94a535d8184b0f14bab632c17f.zip chromium_src-ce75ec6a5b901b94a535d8184b0f14bab632c17f.tar.gz chromium_src-ce75ec6a5b901b94a535d8184b0f14bab632c17f.tar.bz2 |
Sort the methods in template_url_model.cc to match the ordering in template_url_model.h (Only moving things around. No other changes.)
BUG=None
TEST=unit_tests --gtest_filer=TemplateURL*.*
Review URL: http://codereview.chromium.org/3171025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56946 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/search_engines')
-rw-r--r-- | chrome/browser/search_engines/template_url_model.cc | 348 |
1 files changed, 174 insertions, 174 deletions
diff --git a/chrome/browser/search_engines/template_url_model.cc b/chrome/browser/search_engines/template_url_model.cc index 76a22f5..a7f1a4a 100644 --- a/chrome/browser/search_engines/template_url_model.cc +++ b/chrome/browser/search_engines/template_url_model.cc @@ -94,53 +94,6 @@ TemplateURLModel::~TemplateURLModel() { STLDeleteElements(&template_urls_); } -void TemplateURLModel::Init(const Initializer* initializers, - int num_initializers) { - // Register for notifications. - if (profile_) { - // TODO(sky): bug 1166191. The keywords should be moved into the history - // db, which will mean we no longer need this notification and the history - // backend can handle automatically adding the search terms as the user - // navigates. - registrar_.Add(this, NotificationType::HISTORY_URL_VISITED, - Source<Profile>(profile_->GetOriginalProfile())); - } - registrar_.Add(this, NotificationType::GOOGLE_URL_UPDATED, - NotificationService::AllSources()); - - // Add specific initializers, if any. - for (int i(0); i < num_initializers; ++i) { - DCHECK(initializers[i].keyword); - DCHECK(initializers[i].url); - DCHECK(initializers[i].content); - - size_t template_position = - std::string(initializers[i].url).find(kTemplateParameter); - DCHECK(template_position != std::wstring::npos); - std::string osd_url(initializers[i].url); - osd_url.replace(template_position, arraysize(kTemplateParameter) - 1, - kSearchTermParameter); - - // TemplateURLModel ends up owning the TemplateURL, don't try and free it. - TemplateURL* template_url = new TemplateURL(); - template_url->set_keyword(initializers[i].keyword); - template_url->set_short_name(initializers[i].content); - template_url->SetURL(osd_url, 0, 0); - Add(template_url); - } - - // Request a server check for the correct Google URL if Google is the default - // search engine, not in headless mode and not in Chrome Frame. - const TemplateURL* default_provider = GetDefaultSearchProvider(); - scoped_ptr<base::Environment> env(base::Environment::Create()); - if (default_provider && !env->HasVar(env_vars::kHeadless) && - !CommandLine::ForCurrentProcess()->HasSwitch(switches::kChromeFrame)) { - const TemplateURLRef* default_provider_ref = default_provider->url(); - if (default_provider_ref && default_provider_ref->HasGoogleBaseURLs()) - GoogleURLTracker::RequestServerCheck(); - } -} - // static std::wstring TemplateURLModel::GenerateKeyword(const GURL& url, bool autodetected) { @@ -291,15 +244,6 @@ void TemplateURLModel::Add(TemplateURL* template_url) { } } -void TemplateURLModel::AddToMaps(const TemplateURL* template_url) { - if (!template_url->keyword().empty()) - keyword_to_template_map_[template_url->keyword()] = template_url; - - const GURL url(GenerateSearchURL(template_url)); - if (url.is_valid() && url.has_host()) - host_to_urls_map_[url.host()].insert(template_url); -} - void TemplateURLModel::Remove(const TemplateURL* template_url) { TemplateURLVector::iterator i = find(template_urls_.begin(), template_urls_.end(), @@ -337,6 +281,20 @@ void TemplateURLModel::Remove(const TemplateURL* template_url) { delete template_url; } +void TemplateURLModel::RemoveAutoGeneratedBetween(Time created_after, + Time created_before) { + for (size_t i = 0; i < template_urls_.size();) { + if (template_urls_[i]->date_created() >= created_after && + (created_before.is_null() || + template_urls_[i]->date_created() < created_before) && + CanReplace(template_urls_[i])) { + Remove(template_urls_[i]); + } else { + ++i; + } + } +} + void TemplateURLModel::Replace(const TemplateURL* existing_turl, TemplateURL* new_turl) { DCHECK(existing_turl && new_turl); @@ -367,88 +325,58 @@ void TemplateURLModel::Replace(const TemplateURL* existing_turl, delete existing_turl; } -void TemplateURLModel::RemoveAutoGeneratedBetween(Time created_after, - Time created_before) { - for (size_t i = 0; i < template_urls_.size();) { - if (template_urls_[i]->date_created() >= created_after && - (created_before.is_null() || - template_urls_[i]->date_created() < created_before) && - CanReplace(template_urls_[i])) { - Remove(template_urls_[i]); - } else { - ++i; - } - } -} - void TemplateURLModel::RemoveAutoGeneratedSince(Time created_after) { RemoveAutoGeneratedBetween(created_after, Time()); } -void TemplateURLModel::SetKeywordSearchTermsForURL(const TemplateURL* t_url, - const GURL& url, - const std::wstring& term) { - HistoryService* history = profile_ ? - profile_->GetHistoryService(Profile::EXPLICIT_ACCESS) : NULL; - if (!history) +void TemplateURLModel::RegisterExtensionKeyword(Extension* extension) { + // TODO(mpcomplete): disable the keyword when the extension is disabled. + if (extension->omnibox_keyword().empty()) return; - history->SetKeywordSearchTermsForURL(url, t_url->id(), - WideToUTF16Hack(term)); -} -void TemplateURLModel::RemoveFromMaps(const TemplateURL* template_url) { - if (!template_url->keyword().empty()) { - keyword_to_template_map_.erase(template_url->keyword()); + Load(); + if (!loaded_) { + pending_extension_ids_.push_back(extension->id()); + return; } - const GURL url(GenerateSearchURL(template_url)); - if (url.is_valid() && url.has_host()) { - const std::string host(url.host()); - DCHECK(host_to_urls_map_.find(host) != host_to_urls_map_.end()); - TemplateURLSet& urls = host_to_urls_map_[host]; - DCHECK(urls.find(template_url) != urls.end()); - urls.erase(urls.find(template_url)); - if (urls.empty()) - host_to_urls_map_.erase(host_to_urls_map_.find(host)); - } -} + const TemplateURL* existing_url = GetTemplateURLForExtension(extension); + std::wstring keyword = UTF8ToWide(extension->omnibox_keyword()); -void TemplateURLModel::RemoveFromMapsByPointer( - const TemplateURL* template_url) { - DCHECK(template_url); - for (KeywordToTemplateMap::iterator i = keyword_to_template_map_.begin(); - i != keyword_to_template_map_.end(); ++i) { - if (i->second == template_url) { - keyword_to_template_map_.erase(i); - // A given TemplateURL only occurs once in the map. As soon as we find the - // entry, stop. - break; - } - } + TemplateURL* template_url = new TemplateURL; + template_url->set_short_name(UTF8ToWide(extension->name())); + template_url->set_keyword(keyword); + // This URL is not actually used for navigation. It holds the extension's + // ID, as well as forcing the TemplateURL to be treated as a search keyword. + template_url->SetURL( + std::string(chrome::kExtensionScheme) + "://" + + extension->id() + "/?q={searchTerms}", 0, 0); + template_url->set_safe_for_autoreplace(false); - for (HostToURLsMap::iterator i = host_to_urls_map_.begin(); - i != host_to_urls_map_.end(); ++i) { - TemplateURLSet::iterator url_set_iterator = i->second.find(template_url); - if (url_set_iterator != i->second.end()) { - i->second.erase(url_set_iterator); - if (i->second.empty()) - host_to_urls_map_.erase(i); - // A given TemplateURL only occurs once in the map. As soon as we find the - // entry, stop. - return; - } + if (existing_url) { + // TODO(mpcomplete): only replace if the user hasn't changed the keyword. + // (We don't have UI for that yet). + Replace(existing_url, template_url); + } else { + Add(template_url); } } -void TemplateURLModel::SetTemplateURLs( - const std::vector<const TemplateURL*>& urls) { - // Add mappings for the new items. - for (TemplateURLVector::const_iterator i = urls.begin(); i != urls.end(); - ++i) { - next_id_ = std::max(next_id_, (*i)->id()); - AddToMaps(*i); - template_urls_.push_back(*i); +void TemplateURLModel::UnregisterExtensionKeyword(Extension* extension) { + const TemplateURL* url = GetTemplateURLForExtension(extension); + if (url) + Remove(url); +} + +const TemplateURL* TemplateURLModel::GetTemplateURLForExtension( + Extension* extension) const { + for (TemplateURLVector::const_iterator i = template_urls_.begin(); + i != template_urls_.end(); ++i) { + if ((*i)->IsExtensionKeyword() && (*i)->url()->GetHost() == extension->id()) + return *i; } + + return NULL; } std::vector<const TemplateURL*> TemplateURLModel::GetTemplateURLs() const { @@ -711,6 +639,128 @@ void TemplateURLModel::Observe(NotificationType type, } } +void TemplateURLModel::SetKeywordSearchTermsForURL(const TemplateURL* t_url, + const GURL& url, + const std::wstring& term) { + HistoryService* history = profile_ ? + profile_->GetHistoryService(Profile::EXPLICIT_ACCESS) : NULL; + if (!history) + return; + history->SetKeywordSearchTermsForURL(url, t_url->id(), + WideToUTF16Hack(term)); +} + +void TemplateURLModel::Init(const Initializer* initializers, + int num_initializers) { + // Register for notifications. + if (profile_) { + // TODO(sky): bug 1166191. The keywords should be moved into the history + // db, which will mean we no longer need this notification and the history + // backend can handle automatically adding the search terms as the user + // navigates. + registrar_.Add(this, NotificationType::HISTORY_URL_VISITED, + Source<Profile>(profile_->GetOriginalProfile())); + } + registrar_.Add(this, NotificationType::GOOGLE_URL_UPDATED, + NotificationService::AllSources()); + + // Add specific initializers, if any. + for (int i(0); i < num_initializers; ++i) { + DCHECK(initializers[i].keyword); + DCHECK(initializers[i].url); + DCHECK(initializers[i].content); + + size_t template_position = + std::string(initializers[i].url).find(kTemplateParameter); + DCHECK(template_position != std::wstring::npos); + std::string osd_url(initializers[i].url); + osd_url.replace(template_position, arraysize(kTemplateParameter) - 1, + kSearchTermParameter); + + // TemplateURLModel ends up owning the TemplateURL, don't try and free it. + TemplateURL* template_url = new TemplateURL(); + template_url->set_keyword(initializers[i].keyword); + template_url->set_short_name(initializers[i].content); + template_url->SetURL(osd_url, 0, 0); + Add(template_url); + } + + // Request a server check for the correct Google URL if Google is the default + // search engine, not in headless mode and not in Chrome Frame. + const TemplateURL* default_provider = GetDefaultSearchProvider(); + scoped_ptr<base::Environment> env(base::Environment::Create()); + if (default_provider && !env->HasVar(env_vars::kHeadless) && + !CommandLine::ForCurrentProcess()->HasSwitch(switches::kChromeFrame)) { + const TemplateURLRef* default_provider_ref = default_provider->url(); + if (default_provider_ref && default_provider_ref->HasGoogleBaseURLs()) + GoogleURLTracker::RequestServerCheck(); + } +} + +void TemplateURLModel::RemoveFromMaps(const TemplateURL* template_url) { + if (!template_url->keyword().empty()) { + keyword_to_template_map_.erase(template_url->keyword()); + } + + const GURL url(GenerateSearchURL(template_url)); + if (url.is_valid() && url.has_host()) { + const std::string host(url.host()); + DCHECK(host_to_urls_map_.find(host) != host_to_urls_map_.end()); + TemplateURLSet& urls = host_to_urls_map_[host]; + DCHECK(urls.find(template_url) != urls.end()); + urls.erase(urls.find(template_url)); + if (urls.empty()) + host_to_urls_map_.erase(host_to_urls_map_.find(host)); + } +} + +void TemplateURLModel::RemoveFromMapsByPointer( + const TemplateURL* template_url) { + DCHECK(template_url); + for (KeywordToTemplateMap::iterator i = keyword_to_template_map_.begin(); + i != keyword_to_template_map_.end(); ++i) { + if (i->second == template_url) { + keyword_to_template_map_.erase(i); + // A given TemplateURL only occurs once in the map. As soon as we find the + // entry, stop. + break; + } + } + + for (HostToURLsMap::iterator i = host_to_urls_map_.begin(); + i != host_to_urls_map_.end(); ++i) { + TemplateURLSet::iterator url_set_iterator = i->second.find(template_url); + if (url_set_iterator != i->second.end()) { + i->second.erase(url_set_iterator); + if (i->second.empty()) + host_to_urls_map_.erase(i); + // A given TemplateURL only occurs once in the map. As soon as we find the + // entry, stop. + return; + } + } +} + +void TemplateURLModel::AddToMaps(const TemplateURL* template_url) { + if (!template_url->keyword().empty()) + keyword_to_template_map_[template_url->keyword()] = template_url; + + const GURL url(GenerateSearchURL(template_url)); + if (url.is_valid() && url.has_host()) + host_to_urls_map_[url.host()].insert(template_url); +} + +void TemplateURLModel::SetTemplateURLs( + const std::vector<const TemplateURL*>& urls) { + // Add mappings for the new items. + for (TemplateURLVector::const_iterator i = urls.begin(); i != urls.end(); + ++i) { + next_id_ = std::max(next_id_, (*i)->id()); + AddToMaps(*i); + template_urls_.push_back(*i); + } +} + void TemplateURLModel::DeleteGeneratedKeywordsMatchingHost( const std::wstring& host) { const std::wstring host_slash = host + L"/"; @@ -1069,53 +1119,3 @@ void TemplateURLModel::GoogleBaseURLChanged() { OnTemplateURLModelChanged()); } } - -void TemplateURLModel::RegisterExtensionKeyword(Extension* extension) { - // TODO(mpcomplete): disable the keyword when the extension is disabled. - if (extension->omnibox_keyword().empty()) - return; - - Load(); - if (!loaded_) { - pending_extension_ids_.push_back(extension->id()); - return; - } - - const TemplateURL* existing_url = GetTemplateURLForExtension(extension); - std::wstring keyword = UTF8ToWide(extension->omnibox_keyword()); - - TemplateURL* template_url = new TemplateURL; - template_url->set_short_name(UTF8ToWide(extension->name())); - template_url->set_keyword(keyword); - // This URL is not actually used for navigation. It holds the extension's - // ID, as well as forcing the TemplateURL to be treated as a search keyword. - template_url->SetURL( - std::string(chrome::kExtensionScheme) + "://" + - extension->id() + "/?q={searchTerms}", 0, 0); - template_url->set_safe_for_autoreplace(false); - - if (existing_url) { - // TODO(mpcomplete): only replace if the user hasn't changed the keyword. - // (We don't have UI for that yet). - Replace(existing_url, template_url); - } else { - Add(template_url); - } -} - -void TemplateURLModel::UnregisterExtensionKeyword(Extension* extension) { - const TemplateURL* url = GetTemplateURLForExtension(extension); - if (url) - Remove(url); -} - -const TemplateURL* TemplateURLModel::GetTemplateURLForExtension( - Extension* extension) const { - for (TemplateURLVector::const_iterator i = template_urls_.begin(); - i != template_urls_.end(); ++i) { - if ((*i)->IsExtensionKeyword() && (*i)->url()->GetHost() == extension->id()) - return *i; - } - - return NULL; -} |