| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_model.h" | 5 #include "chrome/browser/search_engines/template_url_model.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/environment.h" | 9 #include "base/environment.h" |
| 10 #include "base/stl_util-inl.h" | 10 #include "base/stl_util-inl.h" |
| (...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 558 if (keyword_result.builtin_keyword_version != resource_keyword_version) { | 558 if (keyword_result.builtin_keyword_version != resource_keyword_version) { |
| 559 MergeEnginesFromPrepopulateData(); | 559 MergeEnginesFromPrepopulateData(); |
| 560 service_->SetBuiltinKeywordVersion(resource_keyword_version); | 560 service_->SetBuiltinKeywordVersion(resource_keyword_version); |
| 561 } | 561 } |
| 562 | 562 |
| 563 // Always save the default search provider to prefs. That way we don't have to | 563 // Always save the default search provider to prefs. That way we don't have to |
| 564 // worry about it being out of sync. | 564 // worry about it being out of sync. |
| 565 if (default_search_provider_) | 565 if (default_search_provider_) |
| 566 SaveDefaultSearchProviderToPrefs(default_search_provider_); | 566 SaveDefaultSearchProviderToPrefs(default_search_provider_); |
| 567 | 567 |
| 568 // Delete any hosts that were deleted before we finished loading. | |
| 569 for (std::vector<std::wstring>::iterator i = hosts_to_delete_.begin(); | |
| 570 i != hosts_to_delete_.end(); ++i) { | |
| 571 DeleteGeneratedKeywordsMatchingHost(*i); | |
| 572 } | |
| 573 hosts_to_delete_.clear(); | |
| 574 | |
| 575 // Index any visits that occurred before we finished loading. | 568 // Index any visits that occurred before we finished loading. |
| 576 for (size_t i = 0; i < visits_to_add_.size(); ++i) | 569 for (size_t i = 0; i < visits_to_add_.size(); ++i) |
| 577 UpdateKeywordSearchTermsForURL(visits_to_add_[i]); | 570 UpdateKeywordSearchTermsForURL(visits_to_add_[i]); |
| 578 visits_to_add_.clear(); | 571 visits_to_add_.clear(); |
| 579 | 572 |
| 580 loaded_ = true; | 573 loaded_ = true; |
| 581 | 574 |
| 582 FOR_EACH_OBSERVER(TemplateURLModelObserver, model_observers_, | 575 FOR_EACH_OBSERVER(TemplateURLModelObserver, model_observers_, |
| 583 OnTemplateURLModelChanged()); | 576 OnTemplateURLModelChanged()); |
| 584 | 577 |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 const std::vector<const TemplateURL*>& urls) { | 747 const std::vector<const TemplateURL*>& urls) { |
| 755 // Add mappings for the new items. | 748 // Add mappings for the new items. |
| 756 for (TemplateURLVector::const_iterator i = urls.begin(); i != urls.end(); | 749 for (TemplateURLVector::const_iterator i = urls.begin(); i != urls.end(); |
| 757 ++i) { | 750 ++i) { |
| 758 next_id_ = std::max(next_id_, (*i)->id()); | 751 next_id_ = std::max(next_id_, (*i)->id()); |
| 759 AddToMaps(*i); | 752 AddToMaps(*i); |
| 760 template_urls_.push_back(*i); | 753 template_urls_.push_back(*i); |
| 761 } | 754 } |
| 762 } | 755 } |
| 763 | 756 |
| 764 void TemplateURLModel::DeleteGeneratedKeywordsMatchingHost( | |
| 765 const std::wstring& host) { | |
| 766 const std::wstring host_slash = host + L"/"; | |
| 767 // Iterate backwards as we may end up removing multiple entries. | |
| 768 for (int i = static_cast<int>(template_urls_.size()) - 1; i >= 0; --i) { | |
| 769 if (CanReplace(template_urls_[i]) && | |
| 770 (template_urls_[i]->keyword() == host || | |
| 771 template_urls_[i]->keyword().compare(0, host_slash.length(), | |
| 772 host_slash) == 0)) { | |
| 773 Remove(template_urls_[i]); | |
| 774 } | |
| 775 } | |
| 776 } | |
| 777 | |
| 778 void TemplateURLModel::NotifyLoaded() { | 757 void TemplateURLModel::NotifyLoaded() { |
| 779 NotificationService::current()->Notify( | 758 NotificationService::current()->Notify( |
| 780 NotificationType::TEMPLATE_URL_MODEL_LOADED, | 759 NotificationType::TEMPLATE_URL_MODEL_LOADED, |
| 781 Source<TemplateURLModel>(this), | 760 Source<TemplateURLModel>(this), |
| 782 NotificationService::NoDetails()); | 761 NotificationService::NoDetails()); |
| 783 | 762 |
| 784 for (size_t i = 0; i < pending_extension_ids_.size(); ++i) { | 763 for (size_t i = 0; i < pending_extension_ids_.size(); ++i) { |
| 785 Extension* extension = profile_->GetExtensionsService()-> | 764 Extension* extension = profile_->GetExtensionsService()-> |
| 786 GetExtensionById(pending_extension_ids_[i], true); | 765 GetExtensionById(pending_extension_ids_[i], true); |
| 787 if (extension) | 766 if (extension) |
| (...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1112 AddToMaps(t_url); | 1091 AddToMaps(t_url); |
| 1113 something_changed = true; | 1092 something_changed = true; |
| 1114 } | 1093 } |
| 1115 } | 1094 } |
| 1116 | 1095 |
| 1117 if (something_changed && loaded_) { | 1096 if (something_changed && loaded_) { |
| 1118 FOR_EACH_OBSERVER(TemplateURLModelObserver, model_observers_, | 1097 FOR_EACH_OBSERVER(TemplateURLModelObserver, model_observers_, |
| 1119 OnTemplateURLModelChanged()); | 1098 OnTemplateURLModelChanged()); |
| 1120 } | 1099 } |
| 1121 } | 1100 } |
| OLD | NEW |