Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Unified Diff: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc

Issue 23717029: Disable submit button briefly when launching rAc dialog (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge master Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
index 06b3d05e4329c2f875c251276a7e14fe60582079..6f250f001e3bd8bc7b447ebed3a66954393e8b36 100644
--- a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
+++ b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
@@ -112,6 +112,11 @@ const color_utils::HSL kGrayImageShift = {-1, 0, 0.8};
// Limit Wallet items refresh rate to at most once per minute.
const int kWalletItemsRefreshRateSeconds = 60;
+// The number of seconds to delay enabling the submit button after showing the
+// dialog. This delay prevents users from accidentally clicking the submit
+// button on startup.
+const int kSubmitButtonDelaySeconds = 1;
+
// A helper class to make sure an AutofillDialogView knows when a series of
// updates is incoming.
class ScopedViewUpdates {
@@ -639,6 +644,8 @@ void AutofillDialogControllerImpl::Show() {
if (!account_chooser_model_.WalletIsSelected())
LogDialogLatencyToShow();
+
+ SubmitButtonDelayBegin();
}
void AutofillDialogControllerImpl::Hide() {
@@ -759,6 +766,9 @@ bool AutofillDialogControllerImpl::IsDialogButtonEnabled(
if (ShouldShowSpinner() || is_submitting_)
return false;
+ if (is_submit_button_delayed_)
+ return false;
+
return true;
}
@@ -2229,6 +2239,24 @@ void AutofillDialogControllerImpl::ShowNewCreditCardBubble(
#endif
}
+void AutofillDialogControllerImpl::SubmitButtonDelayBegin() {
+ is_submit_button_delayed_ = true;
Evan Stade 2013/09/04 02:36:28 I think this will be slightly cleaner if you use a
please use gerrit instead 2013/09/04 02:51:46 I can see using a Timer instead of PostDelayedTask
Evan Stade 2013/09/04 18:24:29 just because it was the first line of this fn (als
+ content::BrowserThread::PostDelayedTask(
+ content::BrowserThread::UI,
+ FROM_HERE,
+ base::Bind(&AutofillDialogControllerImpl::OnSubmitButtonDelayEnd,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::TimeDelta::FromSeconds(kSubmitButtonDelaySeconds));
+}
+
+void AutofillDialogControllerImpl::OnSubmitButtonDelayEnd() {
+ is_submit_button_delayed_ = false;
+ if (view_) {
+ ScopedViewUpdates updates(view_.get());
+ view_->UpdateButtonStrip();
+ }
+}
+
AutofillDialogControllerImpl::AutofillDialogControllerImpl(
content::WebContents* contents,
const FormData& form_structure,
@@ -2263,7 +2291,8 @@ AutofillDialogControllerImpl::AutofillDialogControllerImpl(
choose_another_instrument_or_address_(false),
wallet_server_validation_recoverable_(true),
data_was_passed_back_(false),
- was_ui_latency_logged_(false) {
+ was_ui_latency_logged_(false),
+ is_submit_button_delayed_(false) {
// TODO(estade): remove duplicates from |form_structure|?
DCHECK(!callback_.is_null());
}

Powered by Google App Engine
This is Rietveld 408576698