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

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

Issue 18850006: retry r210334 with fix for android (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 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 6ab4bd8f9c030427215f2e901e73312c096a8f69..32aecc355879909394b7dec4b1b0c235c6e14de7 100644
--- a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
+++ b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
@@ -750,6 +750,46 @@ bool AutofillDialogControllerImpl::IsDialogButtonEnabled(
IsSubmitPausedOn(wallet::VERIFY_CVV);
}
+DialogOverlayState AutofillDialogControllerImpl::GetDialogOverlay() const {
+ bool show_wallet_interstitial = IsPayingWithWallet() && is_submitting_ &&
+ !IsSubmitPausedOn(wallet::VERIFY_CVV);
+ if (!show_wallet_interstitial)
+ return DialogOverlayState();
+
+ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
+ DialogOverlayState state;
+ // TODO(estade): use the correct image and strings below.
+ state.image = rb.GetImageNamed(IDR_PRODUCT_LOGO_NAME_48);
+
+ state.strings.push_back(DialogOverlayString());
+ DialogOverlayString& string = state.strings.back();
+#if !defined(OS_ANDROID)
Evan Stade 2013/07/08 19:47:28 here's the fix.
+ // gfx::Font isn't implemented on Android; DeriveFont() causes a null deref.
+ string.font = rb.GetFont(ui::ResourceBundle::BaseFont).DeriveFont(4);
+#endif
+
+ // First-run, post-submit, Wallet expository page.
+ if (full_wallet_ && full_wallet_->required_actions().empty()) {
+ string.text = ASCIIToUTF16("...consectetur adipisicing elit");
+
+ state.strings.push_back(DialogOverlayString());
+ DialogOverlayString& subtext = state.strings.back();
+ subtext.font = rb.GetFont(ui::ResourceBundle::BaseFont);
+ subtext.text = ASCIIToUTF16("sed do eiusmod tempor incididunt ut labore "
+ "et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud "
+ "exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+ "consequat.");
+
+ state.button_text = ASCIIToUTF16("OK, gotcha");
+ } else {
+ // "Submitting" waiting page.
+ string.text = ASCIIToUTF16("Lorem ipsum dolor sit amet...");
+ string.alignment = gfx::ALIGN_CENTER;
+ }
+
+ return state;
+}
+
const std::vector<ui::Range>& AutofillDialogControllerImpl::
LegalDocumentLinks() {
EnsureLegalDocumentsText();
@@ -1797,6 +1837,14 @@ void AutofillDialogControllerImpl::LegalDocumentLinkClicked(
NOTREACHED();
}
+void AutofillDialogControllerImpl::OverlayButtonPressed() {
+ DCHECK(is_submitting_);
+ DCHECK(full_wallet_);
+ profile_->GetPrefs()->SetBoolean(::prefs::kAutofillDialogHasPaidWithWallet,
+ true);
+ FinishSubmit();
+}
+
void AutofillDialogControllerImpl::OnCancel() {
HidePopup();
if (autocheckout_state_ == AUTOCHECKOUT_NOT_STARTED && !is_submitting_)
@@ -3060,6 +3108,19 @@ void AutofillDialogControllerImpl::HandleSaveOrUpdateRequiredActions(
}
void AutofillDialogControllerImpl::FinishSubmit() {
+ if (IsPayingWithWallet() &&
+ !profile_->GetPrefs()->GetBoolean(
+ ::prefs::kAutofillDialogHasPaidWithWallet)) {
+ // To get past this point, the view must call back OverlayButtonPressed.
+#if defined(TOOLKIT_VIEWS)
+ view_->UpdateButtonStrip();
+#else
+ // TODO(estade): implement overlays on other platforms.
+ OverlayButtonPressed();
+#endif
+ return;
+ }
+
FillOutputForSection(SECTION_EMAIL);
FillOutputForSection(SECTION_CC);
FillOutputForSection(SECTION_BILLING);
@@ -3079,10 +3140,7 @@ void AutofillDialogControllerImpl::FinishSubmit() {
FillOutputForSection(SECTION_SHIPPING);
}
- if (IsPayingWithWallet()) {
- profile_->GetPrefs()->SetBoolean(
- ::prefs::kAutofillDialogHasPaidWithWallet, true);
- } else {
+ if (!IsPayingWithWallet()) {
for (size_t i = SECTION_MIN; i <= SECTION_MAX; ++i) {
DialogSection section = static_cast<DialogSection>(i);
if (!SectionIsActive(section))

Powered by Google App Engine
This is Rietveld 408576698