Chromium Code Reviews| Index: chrome/browser/tab_contents/render_view_context_menu.cc |
| =================================================================== |
| --- chrome/browser/tab_contents/render_view_context_menu.cc (revision 90541) |
| +++ chrome/browser/tab_contents/render_view_context_menu.cc (working copy) |
| @@ -42,7 +42,9 @@ |
| #include "chrome/browser/translate/translate_manager.h" |
| #include "chrome/browser/translate/translate_prefs.h" |
| #include "chrome/browser/translate/translate_tab_helper.h" |
| +#include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/download/download_tab_helper.h" |
| +#include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" |
| #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| #include "chrome/common/chrome_constants.h" |
| #include "chrome/common/chrome_switches.h" |
| @@ -785,6 +787,12 @@ |
| IDS_CONTENT_CONTEXT_DELETE); |
| menu_model_.AddSeparator(); |
| + if (!params_.keyword_url.is_empty()) { |
| + menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_ADDSEARCHENGINE, |
| + IDS_CONTENT_CONTEXT_ADDSEARCHENGINE); |
| + menu_model_.AddSeparator(); |
| + } |
| + |
| AppendSpellcheckOptionsSubMenu(); |
| #if defined(OS_MACOSX) |
| @@ -1177,6 +1185,9 @@ |
| return true; |
| #endif |
| + case IDC_CONTENT_CONTEXT_ADDSEARCHENGINE: |
| + return !params_.keyword_url.is_empty(); |
| + |
| case IDC_SPELLCHECK_MENU: |
| return true; |
| @@ -1622,6 +1633,39 @@ |
| break; |
| } |
| + case IDC_CONTENT_CONTEXT_ADDSEARCHENGINE: { |
| + // Make sure the model is loaded. |
| + TemplateURLService* model = TemplateURLServiceFactory::GetForProfile( |
|
Peter Kasting
2011/06/29 18:08:23
Nit: Breaking after '=' would be a little more rea
Philippe Beauchamp
2011/06/29 23:47:10
Done.
|
| + profile_); |
| + |
|
Peter Kasting
2011/06/29 18:08:23
Nit: Unnecessary blank line
Philippe Beauchamp
2011/06/29 23:47:10
Done.
|
| + if (!model) |
| + return; |
| + model->Load(); |
| + |
| + TemplateURL* template_url = new TemplateURL(); |
|
Peter Kasting
2011/06/29 18:08:23
Nit: Use a scoped_ptr<> here and then use "release
Philippe Beauchamp
2011/06/29 23:47:10
Done.
|
| + std::wstring keyword = net::StripWWW(UTF8ToWide(params_.page_url.host())); |
| + template_url->set_short_name(keyword); |
| + template_url->set_keyword(keyword); |
| + template_url->SetURL(params_.keyword_url.spec(), 0, 0); |
| + template_url->SetFaviconURL(TemplateURL::GenerateFaviconURL( |
| + params_.page_url.GetOrigin())); |
| + |
| + TabContentsWrapper* tab_contents_wrapper = |
| + TabContentsWrapper::GetCurrentWrapperForContents( |
| + source_tab_contents_); |
| + |
|
Peter Kasting
2011/06/29 18:08:23
Nit: Unnecessary blank line
Philippe Beauchamp
2011/06/29 23:47:10
Done.
|
| + if (tab_contents_wrapper && |
| + tab_contents_wrapper->search_engine_tab_helper() && |
| + tab_contents_wrapper->search_engine_tab_helper()->delegate()) { |
| + // Takes ownership of |template_url|. |
| + tab_contents_wrapper->search_engine_tab_helper()->delegate()-> |
| + ConfirmAddSearchProvider(template_url, profile_); |
| + } else { |
| + delete template_url; |
| + } |
| + break; |
| + } |
| + |
| default: |
| NOTREACHED(); |
| break; |