Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / options / reset_profile_settings_handler.cc
index 69afc31..86bacf3 100644 (file)
@@ -11,6 +11,8 @@
 #include "base/strings/string16.h"
 #include "base/values.h"
 #include "chrome/browser/google/google_brand.h"
+#include "chrome/browser/profile_resetter/automatic_profile_resetter.h"
+#include "chrome/browser/profile_resetter/automatic_profile_resetter_factory.h"
 #include "chrome/browser/profile_resetter/brandcode_config_fetcher.h"
 #include "chrome/browser/profile_resetter/brandcoded_default_settings.h"
 #include "chrome/browser/profile_resetter/profile_resetter.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/url_constants.h"
+#include "chrome/grit/generated_resources.h"
 #include "content/public/browser/user_metrics.h"
 #include "content/public/browser/web_ui.h"
-#include "grit/generated_resources.h"
 
 namespace options {
 
-ResetProfileSettingsHandler::ResetProfileSettingsHandler() {
+ResetProfileSettingsHandler::ResetProfileSettingsHandler()
+    : automatic_profile_resetter_(NULL),
+      has_shown_confirmation_dialog_(false) {
   google_brand::GetBrand(&brandcode_);
 }
 
@@ -33,12 +37,25 @@ ResetProfileSettingsHandler::~ResetProfileSettingsHandler() {}
 void ResetProfileSettingsHandler::InitializeHandler() {
   Profile* profile = Profile::FromWebUI(web_ui());
   resetter_.reset(new ProfileResetter(profile));
+  automatic_profile_resetter_ =
+      AutomaticProfileResetterFactory::GetForBrowserContext(profile);
 }
 
 void ResetProfileSettingsHandler::InitializePage() {
   web_ui()->CallJavascriptFunction(
       "ResetProfileSettingsOverlay.setResettingState",
       base::FundamentalValue(resetter_->IsActive()));
+  if (automatic_profile_resetter_ &&
+      automatic_profile_resetter_->ShouldShowResetBanner()) {
+    web_ui()->CallJavascriptFunction("ResetProfileSettingsBanner.show");
+  }
+}
+
+void ResetProfileSettingsHandler::Uninitialize() {
+  if (has_shown_confirmation_dialog_ && automatic_profile_resetter_) {
+    automatic_profile_resetter_->NotifyDidCloseWebUIResetDialog(
+        false /*performed_reset*/);
+  }
 }
 
 void ResetProfileSettingsHandler::GetLocalizedValues(
@@ -46,6 +63,8 @@ void ResetProfileSettingsHandler::GetLocalizedValues(
   DCHECK(localized_strings);
 
   static OptionsStringResource resources[] = {
+    { "resetProfileSettingsBannerText",
+        IDS_RESET_PROFILE_SETTINGS_BANNER_TEXT },
     { "resetProfileSettingsCommit", IDS_RESET_PROFILE_SETTINGS_COMMIT_BUTTON },
     { "resetProfileSettingsExplanation",
         IDS_RESET_PROFILE_SETTINGS_EXPLANATION },
@@ -71,6 +90,10 @@ void ResetProfileSettingsHandler::RegisterMessages() {
   web_ui()->RegisterMessageCallback("onHideResetProfileDialog",
       base::Bind(&ResetProfileSettingsHandler::OnHideResetProfileDialog,
                  base::Unretained(this)));
+  web_ui()->RegisterMessageCallback("onDismissedResetProfileSettingsBanner",
+      base::Bind(&ResetProfileSettingsHandler::
+                 OnDismissedResetProfileSettingsBanner,
+                 base::Unretained(this)));
 }
 
 void ResetProfileSettingsHandler::HandleResetProfileSettings(
@@ -102,10 +125,17 @@ void ResetProfileSettingsHandler::OnResetProfileSettingsDone(
       setting_snapshot_->Subtract(current_snapshot);
       std::string report = SerializeSettingsReport(*setting_snapshot_,
                                                    difference);
-      SendSettingsFeedback(report, profile);
+      bool is_reset_prompt_active = automatic_profile_resetter_ &&
+          automatic_profile_resetter_->IsResetPromptFlowActive();
+      SendSettingsFeedback(report, profile, is_reset_prompt_active ?
+          PROFILE_RESET_PROMPT : PROFILE_RESET_WEBUI);
     }
   }
   setting_snapshot_.reset();
+  if (automatic_profile_resetter_) {
+    automatic_profile_resetter_->NotifyDidCloseWebUIResetDialog(
+        true /*performed_reset*/);
+  }
 }
 
 void ResetProfileSettingsHandler::OnShowResetProfileDialog(
@@ -118,6 +148,10 @@ void ResetProfileSettingsHandler::OnShowResetProfileDialog(
     UpdateFeedbackUI();
   }
 
+  if (automatic_profile_resetter_)
+    automatic_profile_resetter_->NotifyDidOpenWebUIResetDialog();
+  has_shown_confirmation_dialog_ = true;
+
   if (brandcode_.empty())
     return;
   config_fetcher_.reset(new BrandcodeConfigFetcher(
@@ -133,6 +167,12 @@ void ResetProfileSettingsHandler::OnHideResetProfileDialog(
     setting_snapshot_.reset();
 }
 
+void ResetProfileSettingsHandler::OnDismissedResetProfileSettingsBanner(
+    const base::ListValue* args) {
+  if (automatic_profile_resetter_)
+    automatic_profile_resetter_->NotifyDidCloseWebUIResetBanner();
+}
+
 void ResetProfileSettingsHandler::OnSettingsFetched() {
   DCHECK(config_fetcher_);
   DCHECK(!config_fetcher_->IsActive());