| Index: chrome/browser/autocomplete/keyword_provider.cc
|
| diff --git a/chrome/browser/autocomplete/keyword_provider.cc b/chrome/browser/autocomplete/keyword_provider.cc
|
| index 31118125504efde03b674b511f35741aaf78fd76..af9c125b425e89a712f3d3da2bfa47ca5325ad29 100644
|
| --- a/chrome/browser/autocomplete/keyword_provider.cc
|
| +++ b/chrome/browser/autocomplete/keyword_provider.cc
|
| @@ -168,6 +168,26 @@ void KeywordProvider::Start(const AutocompleteInput& input,
|
| std::vector<std::wstring> keyword_matches;
|
| model->FindMatchingKeywords(keyword, !remaining_input.empty(),
|
| &keyword_matches);
|
| +
|
| + // Prune any extension keywords that are disallowed in incognito mode (if
|
| + // we're incognito), or disabled.
|
| + for (std::vector<std::wstring>::iterator i(keyword_matches.begin());
|
| + i != keyword_matches.end(); ) {
|
| + const TemplateURL* template_url(model->GetTemplateURLForKeyword(*i));
|
| + if (profile_ &&
|
| + !input.synchronous_only() && template_url->IsExtensionKeyword()) {
|
| + ExtensionsService* service = profile_->GetExtensionsService();
|
| + const Extension* extension = service->GetExtensionById(
|
| + template_url->GetExtensionId(), false);
|
| + bool enabled = extension && (!profile_->IsOffTheRecord() ||
|
| + service->IsIncognitoEnabled(extension));
|
| + if (!enabled) {
|
| + i = keyword_matches.erase(i);
|
| + continue;
|
| + }
|
| + }
|
| + ++i;
|
| + }
|
| if (keyword_matches.empty())
|
| return;
|
| std::sort(keyword_matches.begin(), keyword_matches.end(), CompareQuality());
|
| @@ -180,23 +200,16 @@ void KeywordProvider::Start(const AutocompleteInput& input,
|
| const TemplateURL* template_url(model->GetTemplateURLForKeyword(keyword));
|
| // TODO(pkasting): We should probably check that if the user explicitly
|
| // typed a scheme, that scheme matches the one in |template_url|.
|
| + matches_.push_back(CreateAutocompleteMatch(model, keyword, input,
|
| + keyword.length(),
|
| + remaining_input, -1));
|
|
|
| if (profile_ &&
|
| !input.synchronous_only() && template_url->IsExtensionKeyword()) {
|
| - // If this extension keyword is disabled, make sure we don't add any
|
| - // matches (including the synchronous one below).
|
| - ExtensionsService* service = profile_->GetExtensionsService();
|
| - const Extension* extension = service->GetExtensionById(
|
| - template_url->GetExtensionId(), false);
|
| - bool enabled = extension && (!profile_->IsOffTheRecord() ||
|
| - service->IsIncognitoEnabled(extension));
|
| - if (!enabled)
|
| - return;
|
| -
|
| - if (extension->id() != current_keyword_extension_id_)
|
| + if (template_url->GetExtensionId() != current_keyword_extension_id_)
|
| MaybeEndExtensionKeywordMode();
|
| if (current_keyword_extension_id_.empty())
|
| - EnterExtensionKeywordMode(extension->id());
|
| + EnterExtensionKeywordMode(template_url->GetExtensionId());
|
| keyword_mode_toggle.StayInKeywordMode();
|
|
|
| if (minimal_changes) {
|
| @@ -221,10 +234,6 @@ void KeywordProvider::Start(const AutocompleteInput& input,
|
| done_ = false;
|
| }
|
| }
|
| -
|
| - matches_.push_back(CreateAutocompleteMatch(model, keyword, input,
|
| - keyword.length(),
|
| - remaining_input, -1));
|
| } else {
|
| if (keyword_matches.size() > kMaxMatches) {
|
| keyword_matches.erase(keyword_matches.begin() + kMaxMatches,
|
|
|