| Index: chrome/browser/ui/webui/options/search_engine_manager_handler.cc
|
| diff --git a/chrome/browser/ui/webui/options/search_engine_manager_handler.cc b/chrome/browser/ui/webui/options/search_engine_manager_handler.cc
|
| index 0ba7a3bd4c6a65d992ab72ac0d4dc78b5a6e5ab1..b2eb61fb4a830a89ea33f88688a65a9f7269e55a 100644
|
| --- a/chrome/browser/ui/webui/options/search_engine_manager_handler.cc
|
| +++ b/chrome/browser/ui/webui/options/search_engine_manager_handler.cc
|
| @@ -8,11 +8,13 @@
|
| #include "base/string_number_conversions.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "base/values.h"
|
| +#include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/search_engines/template_url.h"
|
| #include "chrome/browser/search_engines/template_url_service.h"
|
| #include "chrome/browser/ui/search_engines/keyword_editor_controller.h"
|
| #include "chrome/browser/ui/search_engines/template_url_table_model.h"
|
| +#include "chrome/common/extensions/extension.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "grit/generated_resources.h"
|
| #include "grit/locale_settings.h"
|
| @@ -45,7 +47,7 @@ void SearchEngineManagerHandler::Initialize() {
|
| }
|
|
|
| void SearchEngineManagerHandler::GetLocalizedValues(
|
| - DictionaryValue* localized_strings) {
|
| + base::DictionaryValue* localized_strings) {
|
| DCHECK(localized_strings);
|
|
|
| RegisterTitle(localized_strings, "searchEngineManagerPage",
|
| @@ -54,6 +56,11 @@ void SearchEngineManagerHandler::GetLocalizedValues(
|
| l10n_util::GetStringUTF16(IDS_SEARCH_ENGINES_EDITOR_MAIN_SEPARATOR));
|
| localized_strings->SetString("otherSearchEngineListTitle",
|
| l10n_util::GetStringUTF16(IDS_SEARCH_ENGINES_EDITOR_OTHER_SEPARATOR));
|
| + localized_strings->SetString("extensionKeywordsListTitle",
|
| + l10n_util::GetStringUTF16(
|
| + IDS_SEARCH_ENGINES_EDITOR_EXTENSIONS_SEPARATOR));
|
| + localized_strings->SetString("manageExtensionsLinkText",
|
| + l10n_util::GetStringUTF16(IDS_MANAGE_EXTENSIONS));
|
| localized_strings->SetString("searchEngineTableNameHeader",
|
| l10n_util::GetStringUTF16(IDS_SEARCH_ENGINES_EDITOR_DESCRIPTION_COLUMN));
|
| localized_strings->SetString("searchEngineTableKeywordHeader",
|
| @@ -125,8 +132,21 @@ void SearchEngineManagerHandler::OnModelChanged() {
|
| others_list.Append(CreateDictionaryForEngine(i, i == default_index));
|
| }
|
|
|
| + // Build the extension keywords list.
|
| + ListValue keyword_list;
|
| + ExtensionService* extension_service =
|
| + web_ui_->GetProfile()->GetExtensionService();
|
| + if (extension_service) {
|
| + const ExtensionList* extensions = extension_service->extensions();
|
| + for (ExtensionList::const_iterator it = extensions->begin();
|
| + it != extensions->end(); ++it) {
|
| + if ((*it)->omnibox_keyword().size() > 0)
|
| + keyword_list.Append(CreateDictionaryForExtension(*(*it)));
|
| + }
|
| + }
|
| +
|
| web_ui_->CallJavascriptFunction("SearchEngineManager.updateSearchEngineList",
|
| - defaults_list, others_list);
|
| + defaults_list, others_list, keyword_list);
|
| }
|
|
|
| void SearchEngineManagerHandler::OnItemsChanged(int start, int length) {
|
| @@ -141,12 +161,24 @@ void SearchEngineManagerHandler::OnItemsRemoved(int start, int length) {
|
| OnModelChanged();
|
| }
|
|
|
| -DictionaryValue* SearchEngineManagerHandler::CreateDictionaryForEngine(
|
| +base::DictionaryValue* SearchEngineManagerHandler::CreateDictionaryForExtension(
|
| + const Extension& extension) {
|
| + base::DictionaryValue* dict = new base::DictionaryValue();
|
| + dict->SetString("name", extension.name());
|
| + dict->SetString("displayName", extension.name());
|
| + dict->SetString("keyword", extension.omnibox_keyword());
|
| + GURL icon = extension.GetIconURL(16, ExtensionIconSet::MATCH_BIGGER);
|
| + dict->SetString("iconURL", icon.spec());
|
| + dict->SetString("url", string16());
|
| + return dict;
|
| +}
|
| +
|
| +base::DictionaryValue* SearchEngineManagerHandler::CreateDictionaryForEngine(
|
| int index, bool is_default) {
|
| TemplateURLTableModel* table_model = list_controller_->table_model();
|
| const TemplateURL* template_url = list_controller_->GetTemplateURL(index);
|
|
|
| - DictionaryValue* dict = new DictionaryValue();
|
| + base::DictionaryValue* dict = new base::DictionaryValue();
|
| dict->SetString("name", template_url->short_name());
|
| dict->SetString("displayName", table_model->GetText(
|
| index, IDS_SEARCH_ENGINES_EDITOR_DESCRIPTION_COLUMN));
|
| @@ -165,6 +197,7 @@ DictionaryValue* SearchEngineManagerHandler::CreateDictionaryForEngine(
|
| dict->SetString("canBeDefault", "1");
|
| if (is_default)
|
| dict->SetString("default", "1");
|
| + dict->SetString("canBeEdited", "1");
|
|
|
| return dict;
|
| }
|
| @@ -241,7 +274,7 @@ void SearchEngineManagerHandler::CheckSearchEngineInfoValidity(
|
| return;
|
| }
|
|
|
| - DictionaryValue validity;
|
| + base::DictionaryValue validity;
|
| validity.SetBoolean("name", edit_controller_->IsTitleValid(name));
|
| validity.SetBoolean("keyword", edit_controller_->IsKeywordValid(keyword));
|
| validity.SetBoolean("url", edit_controller_->IsURLValid(url));
|
|
|