Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / options / options_ui.cc
index 61bd0f6..4a703e2 100644 (file)
 #include "base/threading/thread.h"
 #include "base/time/time.h"
 #include "base/values.h"
-#include "chrome/browser/autocomplete/autocomplete_match.h"
-#include "chrome/browser/autocomplete/autocomplete_result.h"
 #include "chrome/browser/browser_about_handler.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/webui/metrics_handler.h"
 #include "chrome/browser/ui/webui/options/autofill_options_handler.h"
+#include "chrome/browser/ui/webui/options/automatic_settings_reset_handler.h"
 #include "chrome/browser/ui/webui/options/browser_options_handler.h"
 #include "chrome/browser/ui/webui/options/clear_browser_data_handler.h"
 #include "chrome/browser/ui/webui/options/content_settings_handler.h"
 #include "chrome/browser/ui/webui/options/cookies_view_handler.h"
 #include "chrome/browser/ui/webui/options/core_options_handler.h"
 #include "chrome/browser/ui/webui/options/create_profile_handler.h"
+#include "chrome/browser/ui/webui/options/easy_unlock_handler.h"
 #include "chrome/browser/ui/webui/options/font_settings_handler.h"
 #include "chrome/browser/ui/webui/options/handler_options_handler.h"
 #include "chrome/browser/ui/webui/options/home_page_overlay_handler.h"
 #include "chrome/browser/ui/webui/options/language_dictionary_overlay_handler.h"
 #include "chrome/browser/ui/webui/options/language_options_handler.h"
 #include "chrome/browser/ui/webui/options/manage_profile_handler.h"
-#include "chrome/browser/ui/webui/options/managed_user_create_confirm_handler.h"
-#include "chrome/browser/ui/webui/options/managed_user_import_handler.h"
-#include "chrome/browser/ui/webui/options/managed_user_learn_more_handler.h"
 #include "chrome/browser/ui/webui/options/media_devices_selection_handler.h"
-#include "chrome/browser/ui/webui/options/media_galleries_handler.h"
 #include "chrome/browser/ui/webui/options/password_manager_handler.h"
 #include "chrome/browser/ui/webui/options/reset_profile_settings_handler.h"
 #include "chrome/browser/ui/webui/options/search_engine_manager_handler.h"
 #include "chrome/browser/ui/webui/options/startup_pages_handler.h"
+#include "chrome/browser/ui/webui/options/supervised_user_create_confirm_handler.h"
+#include "chrome/browser/ui/webui/options/supervised_user_import_handler.h"
+#include "chrome/browser/ui/webui/options/supervised_user_learn_more_handler.h"
+#include "chrome/browser/ui/webui/options/website_settings_handler.h"
 #include "chrome/browser/ui/webui/sync_setup_handler.h"
 #include "chrome/browser/ui/webui/theme_source.h"
 #include "chrome/common/url_constants.h"
+#include "components/omnibox/autocomplete_match.h"
+#include "components/omnibox/autocomplete_result.h"
 #include "content/public/browser/notification_types.h"
-#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/url_data_source.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_contents_delegate.h"
 #include "url/gurl.h"
 
 #if defined(OS_CHROMEOS)
+#include "chrome/browser/browser_process_platform_part.h"
+#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+#include "chrome/browser/chromeos/policy/consumer_management_service.h"
 #include "chrome/browser/chromeos/system/pointer_device_observer.h"
 #include "chrome/browser/ui/webui/options/chromeos/accounts_options_handler.h"
 #include "chrome/browser/ui/webui/options/chromeos/bluetooth_options_handler.h"
 #include "chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.h"
+#include "chrome/browser/ui/webui/options/chromeos/consumer_management_handler.h"
 #include "chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.h"
 #include "chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.h"
+#include "chrome/browser/ui/webui/options/chromeos/date_time_options_handler.h"
 #include "chrome/browser/ui/webui/options/chromeos/display_options_handler.h"
 #include "chrome/browser/ui/webui/options/chromeos/display_overscan_handler.h"
 #include "chrome/browser/ui/webui/options/chromeos/internet_options_handler.h"
@@ -82,6 +90,7 @@
 #include "chrome/browser/ui/webui/options/chromeos/proxy_handler.h"
 #include "chrome/browser/ui/webui/options/chromeos/stats_options_handler.h"
 #include "chrome/browser/ui/webui/options/chromeos/user_image_source.h"
+#include "chrome/browser/ui/webui/options/help_overlay_handler.h"
 #endif
 
 #if defined(USE_NSS)
@@ -112,14 +121,14 @@ namespace options {
 class OptionsUIHTMLSource : public content::URLDataSource {
  public:
   // The constructor takes over ownership of |localized_strings|.
-  explicit OptionsUIHTMLSource(DictionaryValue* localized_strings);
+  explicit OptionsUIHTMLSource(base::DictionaryValue* localized_strings);
 
   // content::URLDataSource implementation.
   virtual std::string GetSource() const OVERRIDE;
   virtual void StartDataRequest(
       const std::string& path,
       int render_process_id,
-      int render_view_id,
+      int render_frame_id,
       const content::URLDataSource::GotDataCallback& callback) OVERRIDE;
   virtual std::string GetMimeType(const std::string&) const OVERRIDE;
   virtual bool ShouldDenyXFrameOptions() const OVERRIDE;
@@ -128,12 +137,13 @@ class OptionsUIHTMLSource : public content::URLDataSource {
   virtual ~OptionsUIHTMLSource();
 
   // Localized strings collection.
-  scoped_ptr<DictionaryValue> localized_strings_;
+  scoped_ptr<base::DictionaryValue> localized_strings_;
 
   DISALLOW_COPY_AND_ASSIGN(OptionsUIHTMLSource);
 };
 
-OptionsUIHTMLSource::OptionsUIHTMLSource(DictionaryValue* localized_strings) {
+OptionsUIHTMLSource::OptionsUIHTMLSource(
+    base::DictionaryValue* localized_strings) {
   DCHECK(localized_strings);
   localized_strings_.reset(localized_strings);
 }
@@ -145,7 +155,7 @@ std::string OptionsUIHTMLSource::GetSource() const {
 void OptionsUIHTMLSource::StartDataRequest(
     const std::string& path,
     int render_process_id,
-    int render_view_id,
+    int render_frame_id,
     const content::URLDataSource::GotDataCallback& callback) {
   scoped_refptr<base::RefCountedMemory> response_bytes;
   webui::SetFontAndTextDirection(localized_strings_.get());
@@ -202,11 +212,11 @@ bool OptionsPageUIHandler::IsEnabled() {
 
 // static
 void OptionsPageUIHandler::RegisterStrings(
-    DictionaryValue* localized_strings,
+    base::DictionaryValue* localized_strings,
     const OptionsStringResource* resources,
     size_t length) {
   for (size_t i = 0; i < length; ++i) {
-    string16 value;
+    base::string16 value;
     if (resources[i].substitution_id == 0) {
       value = l10n_util::GetStringUTF16(resources[i].id);
     } else {
@@ -218,9 +228,10 @@ void OptionsPageUIHandler::RegisterStrings(
   }
 }
 
-void OptionsPageUIHandler::RegisterTitle(DictionaryValue* localized_strings,
-                                         const std::string& variable_name,
-                                         int title_id) {
+void OptionsPageUIHandler::RegisterTitle(
+    base::DictionaryValue* localized_strings,
+    const std::string& variable_name,
+    int title_id) {
   localized_strings->SetString(variable_name,
       l10n_util::GetStringUTF16(title_id));
   localized_strings->SetString(variable_name + "TabTitle",
@@ -239,9 +250,9 @@ OptionsUI::OptionsUI(content::WebUI* web_ui)
     : WebUIController(web_ui),
       WebContentsObserver(web_ui->GetWebContents()),
       initialized_handlers_(false) {
-  DictionaryValue* localized_strings = new DictionaryValue();
+  base::DictionaryValue* localized_strings = new base::DictionaryValue();
   localized_strings->Set(OptionsPageUIHandler::kSettingsAppKey,
-                         new DictionaryValue());
+                         new base::DictionaryValue());
 
   CoreOptionsHandler* core_handler;
 #if defined(OS_CHROMEOS)
@@ -253,6 +264,8 @@ OptionsUI::OptionsUI(content::WebUI* web_ui)
   AddOptionsPageUIHandler(localized_strings, core_handler);
 
   AddOptionsPageUIHandler(localized_strings, new AutofillOptionsHandler());
+  AddOptionsPageUIHandler(localized_strings,
+                          new AutomaticSettingsResetHandler());
 
   BrowserOptionsHandler* browser_options_handler = new BrowserOptionsHandler();
   AddOptionsPageUIHandler(localized_strings, browser_options_handler);
@@ -261,6 +274,7 @@ OptionsUI::OptionsUI(content::WebUI* web_ui)
   AddOptionsPageUIHandler(localized_strings, new ContentSettingsHandler());
   AddOptionsPageUIHandler(localized_strings, new CookiesViewHandler());
   AddOptionsPageUIHandler(localized_strings, new CreateProfileHandler());
+  AddOptionsPageUIHandler(localized_strings, new EasyUnlockHandler());
   AddOptionsPageUIHandler(localized_strings, new FontSettingsHandler());
 #if defined(ENABLE_GOOGLE_NOW)
   AddOptionsPageUIHandler(localized_strings, new GeolocationOptionsHandler());
@@ -268,7 +282,6 @@ OptionsUI::OptionsUI(content::WebUI* web_ui)
   AddOptionsPageUIHandler(localized_strings, new HomePageOverlayHandler());
   AddOptionsPageUIHandler(localized_strings,
                           new MediaDevicesSelectionHandler());
-  AddOptionsPageUIHandler(localized_strings, new MediaGalleriesHandler());
 #if defined(OS_CHROMEOS)
   AddOptionsPageUIHandler(localized_strings,
                           new chromeos::options::CrosLanguageOptionsHandler());
@@ -278,28 +291,33 @@ OptionsUI::OptionsUI(content::WebUI* web_ui)
   AddOptionsPageUIHandler(localized_strings,
                           new LanguageDictionaryOverlayHandler());
   AddOptionsPageUIHandler(localized_strings, new ManageProfileHandler());
-  AddOptionsPageUIHandler(localized_strings,
-                          new ManagedUserCreateConfirmHandler());
-  AddOptionsPageUIHandler(localized_strings, new ManagedUserImportHandler());
-  AddOptionsPageUIHandler(localized_strings, new ManagedUserLearnMoreHandler());
   AddOptionsPageUIHandler(localized_strings, new PasswordManagerHandler());
   AddOptionsPageUIHandler(localized_strings, new ResetProfileSettingsHandler());
   AddOptionsPageUIHandler(localized_strings, new SearchEngineManagerHandler());
   AddOptionsPageUIHandler(localized_strings, new ImportDataHandler());
   AddOptionsPageUIHandler(localized_strings, new StartupPagesHandler());
+  AddOptionsPageUIHandler(localized_strings,
+                          new SupervisedUserCreateConfirmHandler());
+  AddOptionsPageUIHandler(localized_strings, new SupervisedUserImportHandler());
+  AddOptionsPageUIHandler(localized_strings,
+                          new SupervisedUserLearnMoreHandler());
   AddOptionsPageUIHandler(localized_strings, new SyncSetupHandler(
       g_browser_process->profile_manager()));
+  AddOptionsPageUIHandler(localized_strings, new WebsiteSettingsHandler());
 #if defined(OS_CHROMEOS)
   AddOptionsPageUIHandler(localized_strings,
                           new chromeos::options::AccountsOptionsHandler());
   AddOptionsPageUIHandler(localized_strings,
                           new chromeos::options::BluetoothOptionsHandler());
   AddOptionsPageUIHandler(localized_strings,
+                          new chromeos::options::DateTimeOptionsHandler());
+  AddOptionsPageUIHandler(localized_strings,
                           new chromeos::options::DisplayOptionsHandler());
   AddOptionsPageUIHandler(localized_strings,
                           new chromeos::options::DisplayOverscanHandler());
   AddOptionsPageUIHandler(localized_strings,
                           new chromeos::options::InternetOptionsHandler());
+  AddOptionsPageUIHandler(localized_strings, new options::HelpOverlayHandler());
   AddOptionsPageUIHandler(localized_strings,
                           new chromeos::options::KeyboardHandler());
 
@@ -314,12 +332,22 @@ OptionsUI::OptionsUI(content::WebUI* web_ui)
       new chromeos::options::ChangePictureOptionsHandler());
   AddOptionsPageUIHandler(localized_strings,
                           new chromeos::options::StatsOptionsHandler());
+
+  policy::ConsumerManagementService* consumer_management =
+      g_browser_process->platform_part()->browser_policy_connector_chromeos()->
+          GetConsumerManagementService();
+  chromeos::options::ConsumerManagementHandler* consumer_management_handler =
+      new chromeos::options::ConsumerManagementHandler(consumer_management);
+  AddOptionsPageUIHandler(localized_strings, consumer_management_handler);
 #endif
 #if defined(USE_NSS)
-  AddOptionsPageUIHandler(localized_strings, new CertificateManagerHandler());
+  AddOptionsPageUIHandler(localized_strings,
+                          new CertificateManagerHandler(false));
 #endif
   AddOptionsPageUIHandler(localized_strings, new HandlerOptionsHandler());
 
+  web_ui->AddMessageHandler(new MetricsHandler());
+
   // |localized_strings| ownership is taken over by this constructor.
   OptionsUIHTMLSource* html_source =
       new OptionsUIHTMLSource(localized_strings);
@@ -351,6 +379,11 @@ OptionsUI::~OptionsUI() {
     handlers_[i]->Uninitialize();
 }
 
+scoped_ptr<OptionsUI::OnFinishedLoadingCallbackList::Subscription>
+OptionsUI::RegisterOnFinishedLoadingCallback(const base::Closure& callback) {
+  return on_finished_loading_callbacks_.Add(callback);
+}
+
 // static
 void OptionsUI::ProcessAutocompleteSuggestions(
     const AutocompleteResult& result,
@@ -362,8 +395,10 @@ void OptionsUI::ProcessAutocompleteSuggestions(
         type != AutocompleteMatchType::HISTORY_TITLE &&
         type != AutocompleteMatchType::HISTORY_BODY &&
         type != AutocompleteMatchType::HISTORY_KEYWORD &&
-        type != AutocompleteMatchType::NAVSUGGEST)
+        type != AutocompleteMatchType::NAVSUGGEST &&
+        type != AutocompleteMatchType::NAVSUGGEST_PERSONALIZED) {
       continue;
+    }
     base::DictionaryValue* entry = new base::DictionaryValue();
     entry->SetString("title", match.description);
     entry->SetString("displayURL", match.contents);
@@ -380,14 +415,12 @@ base::RefCountedMemory* OptionsUI::GetFaviconResourceBytes(
 }
 
 void OptionsUI::DidStartProvisionalLoadForFrame(
-    int64 frame_id,
-    int64 parent_frame_id,
-    bool is_main_frame,
+    content::RenderFrameHost* render_frame_host,
     const GURL& validated_url,
     bool is_error_page,
-    bool is_iframe_srcdoc,
-    content::RenderViewHost* render_view_host) {
-  if (render_view_host == web_ui()->GetWebContents()->GetRenderViewHost() &&
+    bool is_iframe_srcdoc) {
+  if (render_frame_host->GetRenderViewHost() ==
+          web_ui()->GetWebContents()->GetRenderViewHost() &&
       validated_url.host() == chrome::kChromeUISettingsFrameHost) {
     for (size_t i = 0; i < handlers_.size(); ++i)
       handlers_[i]->PageLoadStarted();
@@ -423,8 +456,13 @@ void OptionsUI::InitializeHandlers() {
       "BrowserOptions.notifyInitializationComplete");
 }
 
-void OptionsUI::AddOptionsPageUIHandler(DictionaryValue* localized_strings,
-                                        OptionsPageUIHandler* handler_raw) {
+void OptionsUI::OnFinishedLoading() {
+  on_finished_loading_callbacks_.Notify();
+}
+
+void OptionsUI::AddOptionsPageUIHandler(
+    base::DictionaryValue* localized_strings,
+    OptionsPageUIHandler* handler_raw) {
   scoped_ptr<OptionsPageUIHandler> handler(handler_raw);
   DCHECK(handler.get());
   // Add only if handler's service is enabled.