Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / options / search_engine_manager_handler.cc
index ec9c2e5..271a69d 100644 (file)
@@ -8,20 +8,20 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_system.h"
+#include "chrome/browser/extensions/extension_util.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/search_engines/ui_thread_search_terms_data.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/api/omnibox/omnibox_handler.h"
-#include "chrome/common/extensions/manifest_handlers/icons_handler.h"
 #include "chrome/common/url_constants.h"
+#include "chrome/grit/generated_resources.h"
+#include "chrome/grit/locale_settings.h"
+#include "components/search_engines/template_url.h"
+#include "components/search_engines/template_url_service.h"
+#include "content/public/browser/user_metrics.h"
 #include "content/public/browser/web_ui.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/common/extension.h"
-#include "grit/generated_resources.h"
-#include "grit/locale_settings.h"
 #include "ui/base/l10n/l10n_util.h"
 
 namespace {
@@ -118,7 +118,7 @@ void SearchEngineManagerHandler::OnModelChanged() {
 
   // Find the default engine.
   const TemplateURL* default_engine =
-      list_controller_->url_model()->GetDefaultSearchProvider();
+      list_controller_->GetDefaultSearchProvider();
   int default_index = list_controller_->table_model()->IndexOfTemplateURL(
       default_engine);
 
@@ -172,13 +172,18 @@ base::DictionaryValue* SearchEngineManagerHandler::CreateDictionaryForEngine(
   TemplateURLTableModel* table_model = list_controller_->table_model();
   const TemplateURL* template_url = list_controller_->GetTemplateURL(index);
 
+  // The items which are to be written into |dict| are also described in
+  // chrome/browser/resources/options/search_engine_manager_engine_list.js
+  // in @typedef for SearchEngine. Please update it whenever you add or remove
+  // any keys here.
   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));
   dict->SetString("keyword", table_model->GetText(
     index, IDS_SEARCH_ENGINES_EDITOR_KEYWORD_COLUMN));
-  dict->SetString("url", template_url->url_ref().DisplayURL());
+  dict->SetString("url", template_url->url_ref().DisplayURL(
+      UIThreadSearchTermsData(Profile::FromWebUI(web_ui()))));
   dict->SetBoolean("urlLocked", template_url->prepopulate_id() > 0);
   GURL icon_url = template_url->favicon_url();
   if (icon_url.is_valid())
@@ -193,13 +198,14 @@ base::DictionaryValue* SearchEngineManagerHandler::CreateDictionaryForEngine(
   dict->SetBoolean("canBeEdited", list_controller_->CanEdit(template_url));
   dict->SetBoolean("isExtension", is_extension);
   if (template_url->GetType() == TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) {
-    std::string extension_id = template_url->GetExtensionId();
-    ExtensionService* extension_service = extensions::ExtensionSystem::Get(
-        Profile::FromWebUI(web_ui()))->extension_service();
-    scoped_ptr<base::DictionaryValue> dictionary =
-        extension_service->GetExtensionInfo(extension_id);
-    if (!dictionary->empty())
-      dict->Set("extension", dictionary.release());
+    const extensions::Extension* extension =
+        extensions::ExtensionRegistry::Get(Profile::FromWebUI(web_ui()))
+            ->GetExtensionById(template_url->GetExtensionId(),
+                               extensions::ExtensionRegistry::EVERYTHING);
+    if (extension) {
+      dict->Set("extension",
+                extensions::util::GetExtensionInfo(extension).release());
+    }
   }
   return dict;
 }
@@ -215,6 +221,9 @@ void SearchEngineManagerHandler::SetDefaultSearchEngine(
     return;
 
   list_controller_->MakeDefaultTemplateURL(index);
+
+  content::RecordAction(
+      base::UserMetricsAction("Options_SearchEngineSetDefault"));
 }
 
 void SearchEngineManagerHandler::RemoveSearchEngine(
@@ -227,8 +236,11 @@ void SearchEngineManagerHandler::RemoveSearchEngine(
   if (index < 0 || index >= list_controller_->table_model()->RowCount())
     return;
 
-  if (list_controller_->CanRemove(list_controller_->GetTemplateURL(index)))
+  if (list_controller_->CanRemove(list_controller_->GetTemplateURL(index))) {
     list_controller_->RemoveTemplateURL(index);
+    content::RecordAction(
+        base::UserMetricsAction("Options_SearchEngineRemoved"));
+  }
 }
 
 void SearchEngineManagerHandler::EditSearchEngine(const base::ListValue* args) {
@@ -261,8 +273,7 @@ void SearchEngineManagerHandler::OnEditedKeyword(
 }
 
 void SearchEngineManagerHandler::CheckSearchEngineInfoValidity(
-    const base::ListValue* args)
-{
+    const base::ListValue* args) {
   if (!edit_controller_.get())
     return;
   base::string16 name;