| Index: chrome/browser/tab_contents/render_view_context_menu.cc
|
| ===================================================================
|
| --- chrome/browser/tab_contents/render_view_context_menu.cc (revision 30667)
|
| +++ chrome/browser/tab_contents/render_view_context_menu.cc (working copy)
|
| @@ -18,6 +18,7 @@
|
| #include "chrome/browser/net/browser_url_util.h"
|
| #include "chrome/browser/page_info_window.h"
|
| #include "chrome/browser/profile.h"
|
| +#include "chrome/browser/search_versus_navigate_classifier.h"
|
| #include "chrome/browser/search_engines/template_url_model.h"
|
| #include "chrome/browser/spellchecker.h"
|
| #include "chrome/browser/spellchecker_platform_engine.h"
|
| @@ -73,7 +74,6 @@
|
| }
|
|
|
| void RenderViewContextMenu::InitMenu() {
|
| -
|
| bool has_link = !params_.link_url.is_empty();
|
| bool has_selection = !params_.selection_text.empty();
|
|
|
| @@ -220,16 +220,31 @@
|
| DCHECK(profile_);
|
| const TemplateURL* const default_provider =
|
| profile_->GetTemplateURLModel()->GetDefaultSearchProvider();
|
| - if (default_provider != NULL) {
|
| - string16 selection_text = EscapeAmpersands(WideToUTF16(
|
| - l10n_util::TruncateString(params_.selection_text, 50)));
|
| - if (!selection_text.empty()) {
|
| - string16 label(l10n_util::GetStringFUTF16(
|
| - IDS_CONTENT_CONTEXT_SEARCHWEBFOR,
|
| - WideToUTF16(default_provider->short_name()),
|
| - selection_text));
|
| - AppendMenuItem(IDS_CONTENT_CONTEXT_SEARCHWEBFOR, label);
|
| - }
|
| + if (!default_provider)
|
| + return;
|
| +
|
| + string16 selection_text = EscapeAmpersands(WideToUTF16(
|
| + l10n_util::TruncateString(params_.selection_text, 50)));
|
| + if (selection_text.empty())
|
| + return;
|
| +
|
| + bool is_search;
|
| + profile_->GetSearchVersusNavigateClassifier()->Classify(
|
| + UTF16ToWide(selection_text), std::wstring(), &is_search,
|
| + &selection_navigation_url_, &transition_, NULL, NULL);
|
| + if (!selection_navigation_url_.is_valid())
|
| + return;
|
| +
|
| + if (is_search) {
|
| + string16 label(l10n_util::GetStringFUTF16(
|
| + IDS_CONTENT_CONTEXT_SEARCHWEBFOR,
|
| + WideToUTF16(default_provider->short_name()),
|
| + selection_text));
|
| + AppendMenuItem(IDS_CONTENT_CONTEXT_SEARCHWEBFOR, label);
|
| + } else {
|
| + string16 label(l10n_util::GetStringFUTF16(IDS_CONTENT_CONTEXT_GOTOURL,
|
| + selection_text));
|
| + AppendMenuItem(IDS_CONTENT_CONTEXT_GOTOURL, label);
|
| }
|
| }
|
|
|
| @@ -445,6 +460,7 @@
|
| case IDS_CONTENT_CONTEXT_COPYIMAGE:
|
| case IDS_CONTENT_CONTEXT_PRINT:
|
| case IDS_CONTENT_CONTEXT_SEARCHWEBFOR:
|
| + case IDS_CONTENT_CONTEXT_GOTOURL:
|
| case IDC_SPELLCHECK_SUGGESTION_0:
|
| case IDC_SPELLCHECK_SUGGESTION_1:
|
| case IDC_SPELLCHECK_SUGGESTION_2:
|
| @@ -701,16 +717,9 @@
|
| source_tab_contents_->render_view_host()->SelectAll();
|
| break;
|
|
|
| - case IDS_CONTENT_CONTEXT_SEARCHWEBFOR: {
|
| - const TemplateURL* const default_provider =
|
| - profile_->GetTemplateURLModel()->GetDefaultSearchProvider();
|
| - DCHECK(default_provider); // The context menu should not contain this
|
| - // item when there is no provider.
|
| - const TemplateURLRef* const search_url = default_provider->url();
|
| - DCHECK(search_url->SupportsReplacement());
|
| - OpenURL(GURL(WideToUTF8(search_url->ReplaceSearchTerms(*default_provider,
|
| - params_.selection_text, TemplateURLRef::NO_SUGGESTIONS_AVAILABLE,
|
| - std::wstring()))), NEW_FOREGROUND_TAB, PageTransition::GENERATED);
|
| + case IDS_CONTENT_CONTEXT_SEARCHWEBFOR:
|
| + case IDS_CONTENT_CONTEXT_GOTOURL: {
|
| + OpenURL(selection_navigation_url_, NEW_FOREGROUND_TAB, transition_);
|
| break;
|
| }
|
|
|
|
|