Index: chrome/browser/autocomplete/autocomplete_edit.cc |
diff --git a/chrome/browser/autocomplete/autocomplete_edit.cc b/chrome/browser/autocomplete/autocomplete_edit.cc |
index a650e1df5523c2b6f8f6ef34962c947f13dccf6f..de74891c48d171b15acec78712463a4252b0f712 100644 |
--- a/chrome/browser/autocomplete/autocomplete_edit.cc |
+++ b/chrome/browser/autocomplete/autocomplete_edit.cc |
@@ -15,6 +15,7 @@ |
#include "chrome/browser/autocomplete/autocomplete_popup_model.h" |
#include "chrome/browser/autocomplete/keyword_provider.h" |
#include "chrome/browser/command_updater.h" |
+#include "chrome/browser/extensions/extension_omnibox_api.h" |
#include "chrome/browser/metrics/user_metrics.h" |
#include "chrome/browser/net/dns_global.h" |
#include "chrome/browser/net/url_fixer_upper.h" |
@@ -265,6 +266,17 @@ void AutocompleteEditModel::AcceptInput(WindowOpenDisposition disposition, |
AutocompleteMatch match; |
GURL alternate_nav_url; |
GetInfoForCurrentText(&match, &alternate_nav_url); |
+ |
+ if (match.template_url && match.template_url->IsExtensionKeyword()) { |
+ // Strip the keyword + leading space off the input. |
+ size_t prefix_length = match.template_url->keyword().size() + 1; |
+ ExtensionOmniboxEventRouter::OnInputEntered( |
+ profile_, match.template_url->GetExtensionId(), |
+ WideToUTF8(match.fill_into_edit.substr(prefix_length))); |
+ view_->RevertAll(); |
+ return; |
+ } |
+ |
if (!match.destination_url.is_valid()) |
return; |
@@ -606,9 +618,13 @@ void AutocompleteEditModel::Observe(NotificationType type, |
inline_autocomplete_text = |
match->fill_into_edit.substr(match->inline_autocomplete_offset); |
} |
- // Warm up DNS Prefetch Cache. |
- chrome_browser_net::DnsPrefetchUrl(match->destination_url, |
- IsPreconnectable(match->type)); |
+ |
+ if (!match->destination_url.SchemeIs(chrome::kExtensionScheme)) { |
+ // Warm up DNS Prefetch Cache. |
+ chrome_browser_net::DnsPrefetchUrl(match->destination_url, |
+ IsPreconnectable(match->type)); |
+ } |
+ |
// We could prefetch the alternate nav URL, if any, but because there |
// can be many of these as a user types an initial series of characters, |
// the OS DNS cache could suffer eviction problems for minimal gain. |