Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / passwords / manage_passwords_bubble_model.cc
index 5cc29c5..dd59671 100644 (file)
@@ -4,12 +4,11 @@
 
 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
 
-#include "base/strings/string_split.h"
-#include "base/strings/string_util.h"
 #include "chrome/browser/password_manager/password_store_factory.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h"
+#include "chrome/browser/ui/passwords/password_bubble_experiment.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/password_manager/core/browser/password_store.h"
 #include "components/password_manager/core/common/password_manager_ui.h"
@@ -35,17 +34,13 @@ int GetFieldWidth(FieldType type) {
                                                    : kPasswordFieldSize);
 }
 
-void SetupLinkifiedText(const base::string16& string_with_separator,
-                        base::string16* text,
-                        gfx::Range* link_range) {
-  std::vector<base::string16> pieces;
-  base::SplitStringDontTrim(string_with_separator,
-                            '|',  // separator
-                            &pieces);
-  DCHECK_EQ(3u, pieces.size());
-  *link_range = gfx::Range(pieces[0].size(),
-                           pieces[0].size() + pieces[1].size());
-  *text = JoinString(pieces, base::string16());
+void RecordExperimentStatistics(content::WebContents* web_contents,
+                                metrics_util::UIDismissalReason reason) {
+  if (!web_contents)
+    return;
+  Profile* profile =
+      Profile::FromBrowserContext(web_contents->GetBrowserContext());
+  password_bubble_experiment::RecordBubbleClosed(profile->GetPrefs(), reason);
 }
 
 }  // namespace
@@ -78,10 +73,14 @@ ManagePasswordsBubbleModel::ManagePasswordsBubbleModel(
     title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_TITLE);
   }
 
-  SetupLinkifiedText(
-      l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TEXT),
-      &save_confirmation_text_,
-      &save_confirmation_link_range_);
+  base::string16 save_confirmation_link =
+      l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_LINK);
+  size_t offset;
+  save_confirmation_text_ =
+      l10n_util::GetStringFUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TEXT,
+                                 save_confirmation_link, &offset);
+  save_confirmation_link_range_ =
+      gfx::Range(offset, offset + save_confirmation_link.length());
 
   manage_link_ =
       l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK);
@@ -120,15 +119,20 @@ void ManagePasswordsBubbleModel::OnBubbleHidden() {
     return;
 
   metrics_util::LogUIDismissalReason(dismissal_reason_);
+  // Other use cases have been reported in the callbacks like OnSaveClicked().
+  if (dismissal_reason_ == metrics_util::NO_DIRECT_INTERACTION)
+    RecordExperimentStatistics(web_contents(), dismissal_reason_);
 }
 
 void ManagePasswordsBubbleModel::OnNopeClicked() {
   dismissal_reason_ = metrics_util::CLICKED_NOPE;
+  RecordExperimentStatistics(web_contents(), dismissal_reason_);
   state_ = password_manager::ui::PENDING_PASSWORD_STATE;
 }
 
 void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() {
   dismissal_reason_ = metrics_util::CLICKED_NEVER;
+  RecordExperimentStatistics(web_contents(), dismissal_reason_);
   ManagePasswordsUIController* manage_passwords_ui_controller =
       ManagePasswordsUIController::FromWebContents(web_contents());
   manage_passwords_ui_controller->NeverSavePassword();
@@ -145,6 +149,7 @@ void ManagePasswordsBubbleModel::OnUnblacklistClicked() {
 
 void ManagePasswordsBubbleModel::OnSaveClicked() {
   dismissal_reason_ = metrics_util::CLICKED_SAVE;
+  RecordExperimentStatistics(web_contents(), dismissal_reason_);
   ManagePasswordsUIController* manage_passwords_ui_controller =
       ManagePasswordsUIController::FromWebContents(web_contents());
   manage_passwords_ui_controller->SavePassword();