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

Side by Side Diff: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc

Issue 12225095: Interactive autofill: Adds footnote view to accept legal documents in the UI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sky@ review Created 7 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/autofill/autofill_dialog_controller_impl.h" 5 #include "chrome/browser/ui/autofill/autofill_dialog_controller_impl.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/string_split.h" 10 #include "base/string_split.h"
11 #include "base/string_util.h" 11 #include "base/string_util.h"
12 #include "base/utf_string_conversions.h" 12 #include "base/utf_string_conversions.h"
13 #include "chrome/browser/autofill/autofill_country.h" 13 #include "chrome/browser/autofill/autofill_country.h"
14 #include "chrome/browser/autofill/autofill_manager.h" 14 #include "chrome/browser/autofill/autofill_manager.h"
15 #include "chrome/browser/autofill/autofill_type.h" 15 #include "chrome/browser/autofill/autofill_type.h"
16 #include "chrome/browser/autofill/personal_data_manager.h" 16 #include "chrome/browser/autofill/personal_data_manager.h"
17 #include "chrome/browser/autofill/personal_data_manager_factory.h" 17 #include "chrome/browser/autofill/personal_data_manager_factory.h"
18 #include "chrome/browser/autofill/validation.h" 18 #include "chrome/browser/autofill/validation.h"
19 #include "chrome/browser/autofill/wallet/full_wallet.h" 19 #include "chrome/browser/autofill/wallet/full_wallet.h"
20 #include "chrome/browser/autofill/wallet/wallet_items.h" 20 #include "chrome/browser/autofill/wallet/wallet_items.h"
21 #include "chrome/browser/autofill/wallet/wallet_service_url.h" 21 #include "chrome/browser/autofill/wallet/wallet_service_url.h"
22 #include "chrome/browser/profiles/profile.h" 22 #include "chrome/browser/profiles/profile.h"
23 #include "chrome/browser/ui/autofill/autofill_dialog_view.h" 23 #include "chrome/browser/ui/autofill/autofill_dialog_view.h"
24 #include "chrome/browser/ui/browser_finder.h"
25 #include "chrome/browser/ui/browser_navigator.h"
24 #include "chrome/common/form_data.h" 26 #include "chrome/common/form_data.h"
25 #include "content/public/browser/navigation_controller.h" 27 #include "content/public/browser/navigation_controller.h"
26 #include "content/public/browser/navigation_details.h" 28 #include "content/public/browser/navigation_details.h"
27 #include "content/public/browser/navigation_entry.h" 29 #include "content/public/browser/navigation_entry.h"
28 #include "content/public/browser/notification_service.h" 30 #include "content/public/browser/notification_service.h"
29 #include "content/public/browser/notification_types.h" 31 #include "content/public/browser/notification_types.h"
30 #include "content/public/browser/web_contents.h" 32 #include "content/public/browser/web_contents.h"
31 #include "content/public/common/url_constants.h" 33 #include "content/public/common/url_constants.h"
32 #include "grit/chromium_strings.h" 34 #include "grit/chromium_strings.h"
33 #include "grit/generated_resources.h" 35 #include "grit/generated_resources.h"
34 #include "net/base/cert_status_flags.h" 36 #include "net/base/cert_status_flags.h"
35 #include "ui/base/l10n/l10n_util.h" 37 #include "ui/base/l10n/l10n_util.h"
36 #include "ui/base/resource/resource_bundle.h" 38 #include "ui/base/resource/resource_bundle.h"
39 #include "ui/base/window_open_disposition.h"
37 40
38 namespace autofill { 41 namespace autofill {
39 42
40 namespace { 43 namespace {
41 44
42 // Returns true if |input| should be shown when |field| has been requested. 45 // Returns true if |input| should be shown when |field| has been requested.
43 bool InputTypeMatchesFieldType(const DetailInput& input, 46 bool InputTypeMatchesFieldType(const DetailInput& input,
44 const AutofillField& field) { 47 const AutofillField& field) {
45 // If any credit card expiration info is asked for, show both month and year 48 // If any credit card expiration info is asked for, show both month and year
46 // inputs. 49 // inputs.
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 } 231 }
229 232
230 void AutofillDialogControllerImpl::Hide() { 233 void AutofillDialogControllerImpl::Hide() {
231 if (view_) 234 if (view_)
232 view_->Hide(); 235 view_->Hide();
233 } 236 }
234 237
235 //////////////////////////////////////////////////////////////////////////////// 238 ////////////////////////////////////////////////////////////////////////////////
236 // AutofillDialogController implementation. 239 // AutofillDialogController implementation.
237 240
241 // Strings ---------------------------------------------------------------------
242
238 string16 AutofillDialogControllerImpl::DialogTitle() const { 243 string16 AutofillDialogControllerImpl::DialogTitle() const {
239 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_TITLE); 244 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_TITLE);
240 } 245 }
241 246
242 string16 AutofillDialogControllerImpl::EditSuggestionText() const { 247 string16 AutofillDialogControllerImpl::EditSuggestionText() const {
243 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_EDIT); 248 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_EDIT);
244 } 249 }
245 250
246 string16 AutofillDialogControllerImpl::UseBillingForShippingText() const { 251 string16 AutofillDialogControllerImpl::UseBillingForShippingText() const {
247 return l10n_util::GetStringUTF16( 252 return l10n_util::GetStringUTF16(
(...skipping 20 matching lines...) Expand all
268 273
269 string16 AutofillDialogControllerImpl::SaveLocallyText() const { 274 string16 AutofillDialogControllerImpl::SaveLocallyText() const {
270 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SAVE_LOCALLY_CHECKBOX); 275 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SAVE_LOCALLY_CHECKBOX);
271 } 276 }
272 277
273 string16 AutofillDialogControllerImpl::ProgressBarText() const { 278 string16 AutofillDialogControllerImpl::ProgressBarText() const {
274 return l10n_util::GetStringUTF16( 279 return l10n_util::GetStringUTF16(
275 IDS_AUTOFILL_DIALOG_AUTOCHECKOUT_PROGRESS_BAR); 280 IDS_AUTOFILL_DIALOG_AUTOCHECKOUT_PROGRESS_BAR);
276 } 281 }
277 282
278 DialogSignedInState AutofillDialogControllerImpl::SignedInState() const { 283 std::vector<string16> AutofillDialogControllerImpl::FootnoteLinkParts() const {
279 if (!wallet_items_) 284 if (!wallet_items_ || wallet_items_->legal_documents().empty())
280 return REQUIRES_RESPONSE; 285 return std::vector<string16>();
281 286
282 if (HasRequiredAction(wallet::GAIA_AUTH)) 287 const std::vector<wallet::WalletItems::LegalDocument*>& documents =
283 return REQUIRES_SIGN_IN; 288 wallet_items_->legal_documents();
289 DCHECK_LE(documents.size(), 2U);
284 290
285 if (HasRequiredAction(wallet::PASSIVE_GAIA_AUTH)) 291 const bool new_user = HasRequiredAction(wallet::SETUP_WALLET);
286 return REQUIRES_PASSIVE_SIGN_IN;
287 292
288 return SIGNED_IN; 293 string16 text;
294 switch (documents.size()) {
295 case 1U:
296 text = l10n_util::GetStringFUTF16(
297 new_user ? IDS_AUTOFILL_DIALOG_LEGAL_LINKS_NEW_2 :
298 IDS_AUTOFILL_DIALOG_LEGAL_LINKS_UPDATED_2,
299 documents[0]->display_name(),
300 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_PRIVACY_NOTICE));
301 break;
302 case 2U:
303 text = l10n_util::GetStringFUTF16(
304 new_user ? IDS_AUTOFILL_DIALOG_LEGAL_LINKS_NEW_3 :
305 IDS_AUTOFILL_DIALOG_LEGAL_LINKS_UPDATED_3,
306 documents[0]->display_name(),
307 documents[1]->display_name(),
308 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_PRIVACY_NOTICE));
309 break;
310 }
311 TrimWhitespace(text, TRIM_ALL, &text);
312
313 std::vector<string16> parts;
314 base::SplitStringDontTrim(text, '|', &parts);
315 DCHECK_EQ(1U, parts.size() % 2);
316
317 return parts;
289 } 318 }
290 319
291 bool AutofillDialogControllerImpl::CanPayWithWallet() const { 320 string16 AutofillDialogControllerImpl::AcceptFootnoteLinksText() const {
292 return !had_wallet_error_; 321 return l10n_util::GetStringUTF16(HasRequiredAction(wallet::SETUP_WALLET) ?
322 IDS_AUTOFILL_DIALOG_ACCEPT_NEW : IDS_AUTOFILL_DIALOG_ACCEPT_UPDATE);
293 } 323 }
294 324
295 string16 AutofillDialogControllerImpl::AccountChooserText() const { 325 string16 AutofillDialogControllerImpl::AccountChooserText() const {
296 if (!CanPayWithWallet()) 326 if (!CanPayWithWallet())
297 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_PAY_WITHOUT_WALLET); 327 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_PAY_WITHOUT_WALLET);
298 328
299 // TODO(dbeam): real strings and l10n. 329 // TODO(dbeam): real strings and l10n.
300 DialogSignedInState state = SignedInState(); 330 DialogSignedInState state = SignedInState();
301 return state != SIGNED_IN ? ASCIIToUTF16("Sign in to use Google Wallet") : 331 return state != SIGNED_IN ? ASCIIToUTF16("Sign in to use Google Wallet") :
302 ASCIIToUTF16("user@example.com"); 332 ASCIIToUTF16("user@example.com");
303 } 333 }
304 334
335 // State -----------------------------------------------------------------------
336
305 bool AutofillDialogControllerImpl::AccountChooserEnabled() const { 337 bool AutofillDialogControllerImpl::AccountChooserEnabled() const {
306 if (!CanPayWithWallet()) 338 if (!CanPayWithWallet())
307 return false; 339 return false;
308 340
309 DialogSignedInState state = SignedInState(); 341 DialogSignedInState state = SignedInState();
310 return state != REQUIRES_RESPONSE && state != SIGNED_IN; 342 return state != REQUIRES_RESPONSE && state != SIGNED_IN;
311 } 343 }
312 344
345 bool AutofillDialogControllerImpl::CanPayWithWallet() const {
346 return !had_wallet_error_;
347 }
348
349 DialogNotification AutofillDialogControllerImpl::CurrentNotification() const {
350 if (HasRequiredAction(wallet::VERIFY_CVV)) {
351 return DialogNotification(
352 DialogNotification::REQUIRED_ACTION,
353 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_VERIFY_CVV));
354 }
355
356 if (RequestingCreditCardInfo() && !TransmissionWillBeSecure()) {
357 return DialogNotification(
358 DialogNotification::SECURITY_WARNING,
359 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECURITY_WARNING));
360 }
361
362 if (!invoked_from_same_origin_) {
363 return DialogNotification(
364 DialogNotification::SECURITY_WARNING,
365 l10n_util::GetStringFUTF16(
366 IDS_AUTOFILL_DIALOG_SITE_WARNING, UTF8ToUTF16(source_url_.host())));
367 }
368
369 if (!CanPayWithWallet()) {
370 // TODO(dbeam): pass along the Wallet error or remove from the translation.
371 return DialogNotification(
372 DialogNotification::WALLET_ERROR,
373 l10n_util::GetStringFUTF16(
374 IDS_AUTOFILL_DIALOG_COMPLETE_WITHOUT_WALLET,
375 ASCIIToUTF16("Oops, [Wallet-Error].")));
376 }
377
378 return DialogNotification();
379 }
380
381 DialogSignedInState AutofillDialogControllerImpl::SignedInState() const {
382 if (!wallet_items_)
383 return REQUIRES_RESPONSE;
384
385 if (HasRequiredAction(wallet::GAIA_AUTH))
386 return REQUIRES_SIGN_IN;
387
388 if (HasRequiredAction(wallet::PASSIVE_GAIA_AUTH))
389 return REQUIRES_PASSIVE_SIGN_IN;
390
391 return SIGNED_IN;
392 }
393
394 // Detail inputs ---------------------------------------------------------------
395
313 const DetailInputs& AutofillDialogControllerImpl::RequestedFieldsForSection( 396 const DetailInputs& AutofillDialogControllerImpl::RequestedFieldsForSection(
314 DialogSection section) const { 397 DialogSection section) const {
315 switch (section) { 398 switch (section) {
316 case SECTION_EMAIL: 399 case SECTION_EMAIL:
317 return requested_email_fields_; 400 return requested_email_fields_;
318 case SECTION_CC: 401 case SECTION_CC:
319 return requested_cc_fields_; 402 return requested_cc_fields_;
320 case SECTION_BILLING: 403 case SECTION_BILLING:
321 return requested_billing_fields_; 404 return requested_billing_fields_;
322 case SECTION_SHIPPING: 405 case SECTION_SHIPPING:
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 popup_labels, 630 popup_labels,
548 popup_icons, 631 popup_icons,
549 popup_ids); 632 popup_ids);
550 section_showing_popup_ = section; 633 section_showing_popup_ = section;
551 } 634 }
552 635
553 void AutofillDialogControllerImpl::FocusMoved() { 636 void AutofillDialogControllerImpl::FocusMoved() {
554 HidePopup(); 637 HidePopup();
555 } 638 }
556 639
640 // Actions ---------------------------------------------------------------------
641
642 void AutofillDialogControllerImpl::StartSignInFlow() {
643 DCHECK(registrar_.IsEmpty());
644
645 content::Source<content::NavigationController> source(
646 &view_->ShowSignIn());
647 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, source);
648 }
649
650 void AutofillDialogControllerImpl::EndSignInFlow() {
651 DCHECK(!registrar_.IsEmpty());
652 registrar_.RemoveAll();
653 view_->HideSignIn();
654 }
655
656 // Accessors -------------------------------------------------------------------
657
658 Profile* AutofillDialogControllerImpl::profile() {
659 return profile_;
660 }
661
662 content::WebContents* AutofillDialogControllerImpl::web_contents() {
663 return contents_;
664 }
665
666 // Event handlers --------------------------------------------------------------
667
668 void AutofillDialogControllerImpl::LegalDocumentLinkClicked(int index) {
669 DCHECK(wallet_items_);
670 DCHECK_GE(index, 0);
671 DCHECK_LE(index, static_cast<int>(wallet_items_->legal_documents().size()));
672
673 #if defined(OS_ANDROID)
674 // TODO(dbeam): make this work on Android, right now it's not compiling.
675 #else
676 Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
677 GURL url(index == static_cast<int>(wallet_items_->legal_documents().size()) ?
678 GURL(wallet::kPrivacyNoticeUrl) :
679 wallet_items_->legal_documents()[index]->GetUrl());
680 chrome::NavigateParams params(browser, url, content::PAGE_TRANSITION_LINK);
681 params.disposition = NEW_FOREGROUND_TAB;
682 chrome::Navigate(&params);
683 #endif
684 }
685
557 void AutofillDialogControllerImpl::ViewClosed(DialogAction action) { 686 void AutofillDialogControllerImpl::ViewClosed(DialogAction action) {
558 if (action == ACTION_SUBMIT) { 687 if (action == ACTION_SUBMIT) {
559 FillOutputForSection(SECTION_EMAIL); 688 FillOutputForSection(SECTION_EMAIL);
560 FillOutputForSection(SECTION_CC); 689 FillOutputForSection(SECTION_CC);
561 FillOutputForSection(SECTION_BILLING); 690 FillOutputForSection(SECTION_BILLING);
562 if (view_->UseBillingForShipping()) { 691 if (view_->UseBillingForShipping()) {
563 FillOutputForSectionWithComparator( 692 FillOutputForSectionWithComparator(
564 SECTION_BILLING, 693 SECTION_BILLING,
565 base::Bind(DetailInputMatchesShippingField)); 694 base::Bind(DetailInputMatchesShippingField));
566 FillOutputForSectionWithComparator( 695 FillOutputForSectionWithComparator(
567 SECTION_CC, 696 SECTION_CC,
568 base::Bind(DetailInputMatchesShippingField)); 697 base::Bind(DetailInputMatchesShippingField));
569 } else { 698 } else {
570 FillOutputForSection(SECTION_SHIPPING); 699 FillOutputForSection(SECTION_SHIPPING);
571 } 700 }
572 callback_.Run(&form_structure_); 701 callback_.Run(&form_structure_);
573 } else { 702 } else {
574 callback_.Run(NULL); 703 callback_.Run(NULL);
575 } 704 }
576 705
577 delete this; 706 delete this;
578 } 707 }
579 708
580 void AutofillDialogControllerImpl::UpdateProgressBar(double value) {
581 view_->UpdateProgressBar(value);
582 }
583
584 DialogNotification AutofillDialogControllerImpl::CurrentNotification() const {
585 if (HasRequiredAction(wallet::VERIFY_CVV)) {
586 return DialogNotification(
587 DialogNotification::REQUIRED_ACTION,
588 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_VERIFY_CVV));
589 }
590
591 if (RequestingCreditCardInfo() && !TransmissionWillBeSecure()) {
592 return DialogNotification(
593 DialogNotification::SECURITY_WARNING,
594 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECURITY_WARNING));
595 }
596
597 if (!invoked_from_same_origin_) {
598 return DialogNotification(
599 DialogNotification::SECURITY_WARNING,
600 l10n_util::GetStringFUTF16(
601 IDS_AUTOFILL_DIALOG_SITE_WARNING, UTF8ToUTF16(source_url_.host())));
602 }
603
604 if (!CanPayWithWallet()) {
605 // TODO(dbeam): pass along the Wallet error or remove from the translation.
606 return DialogNotification(
607 DialogNotification::WALLET_ERROR,
608 l10n_util::GetStringFUTF16(
609 IDS_AUTOFILL_DIALOG_COMPLETE_WITHOUT_WALLET,
610 ASCIIToUTF16("Oops, [Wallet-Error].")));
611 }
612
613 return DialogNotification();
614 }
615
616 void AutofillDialogControllerImpl::StartSignInFlow() {
617 DCHECK(registrar_.IsEmpty());
618
619 content::Source<content::NavigationController> source(&view_->ShowSignIn());
620 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, source);
621 }
622
623 void AutofillDialogControllerImpl::EndSignInFlow() {
624 DCHECK(!registrar_.IsEmpty());
625 registrar_.RemoveAll();
626 view_->HideSignIn();
627 }
628
629 Profile* AutofillDialogControllerImpl::profile() {
630 return profile_;
631 }
632
633 content::WebContents* AutofillDialogControllerImpl::web_contents() {
634 return contents_;
635 }
636
637 //////////////////////////////////////////////////////////////////////////////// 709 ////////////////////////////////////////////////////////////////////////////////
638 // AutofillPopupDelegate 710 // AutofillPopupDelegate
639 711
640 void AutofillDialogControllerImpl::OnPopupShown( 712 void AutofillDialogControllerImpl::OnPopupShown(
641 content::KeyboardListener* listener) {} 713 content::KeyboardListener* listener) {}
642 714
643 void AutofillDialogControllerImpl::OnPopupHidden( 715 void AutofillDialogControllerImpl::OnPopupHidden(
644 content::KeyboardListener* listener) {} 716 content::KeyboardListener* listener) {}
645 717
646 void AutofillDialogControllerImpl::DidSelectSuggestion(int identifier) { 718 void AutofillDialogControllerImpl::DidSelectSuggestion(int identifier) {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 803
732 void AutofillDialogControllerImpl::OnDidGetWalletItems( 804 void AutofillDialogControllerImpl::OnDidGetWalletItems(
733 scoped_ptr<wallet::WalletItems> wallet_items) { 805 scoped_ptr<wallet::WalletItems> wallet_items) {
734 bool items_changed = !wallet_items_ || *wallet_items != *wallet_items_; 806 bool items_changed = !wallet_items_ || *wallet_items != *wallet_items_;
735 wallet_items_ = wallet_items.Pass(); 807 wallet_items_ = wallet_items.Pass();
736 WalletRequestCompleted(true); 808 WalletRequestCompleted(true);
737 809
738 if (items_changed) { 810 if (items_changed) {
739 view_->UpdateAccountChooser(); 811 view_->UpdateAccountChooser();
740 view_->UpdateNotificationArea(); 812 view_->UpdateNotificationArea();
813 view_->UpdateFootnote();
741 } 814 }
742 } 815 }
743 816
744 void AutofillDialogControllerImpl::OnDidSaveAddress( 817 void AutofillDialogControllerImpl::OnDidSaveAddress(
745 const std::string& address_id) { 818 const std::string& address_id) {
746 NOTIMPLEMENTED() << " address_id=" << address_id; 819 NOTIMPLEMENTED() << " address_id=" << address_id;
747 WalletRequestCompleted(true); 820 WalletRequestCompleted(true);
748 } 821 }
749 822
750 void AutofillDialogControllerImpl::OnDidSaveInstrument( 823 void AutofillDialogControllerImpl::OnDidSaveInstrument(
(...skipping 26 matching lines...) Expand all
777 void AutofillDialogControllerImpl::OnMalformedResponse() { 850 void AutofillDialogControllerImpl::OnMalformedResponse() {
778 WalletRequestCompleted(false); 851 WalletRequestCompleted(false);
779 } 852 }
780 853
781 void AutofillDialogControllerImpl::OnNetworkError(int response_code) { 854 void AutofillDialogControllerImpl::OnNetworkError(int response_code) {
782 WalletRequestCompleted(false); 855 WalletRequestCompleted(false);
783 } 856 }
784 857
785 //////////////////////////////////////////////////////////////////////////////// 858 ////////////////////////////////////////////////////////////////////////////////
786 859
860 void AutofillDialogControllerImpl::UpdateProgressBar(double value) {
861 view_->UpdateProgressBar(value);
862 }
863
787 bool AutofillDialogControllerImpl::HandleKeyPressEventInInput( 864 bool AutofillDialogControllerImpl::HandleKeyPressEventInInput(
788 const content::NativeWebKeyboardEvent& event) { 865 const content::NativeWebKeyboardEvent& event) {
789 if (popup_controller_) 866 if (popup_controller_)
790 return popup_controller_->HandleKeyPressEvent(event); 867 return popup_controller_->HandleKeyPressEvent(event);
791 868
792 return false; 869 return false;
793 } 870 }
794 871
795 bool AutofillDialogControllerImpl::RequestingCreditCardInfo() const { 872 bool AutofillDialogControllerImpl::RequestingCreditCardInfo() const {
796 DCHECK_GT(form_structure_.field_count(), 0U); 873 DCHECK_GT(form_structure_.field_count(), 0U);
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 DialogSection section) { 1108 DialogSection section) {
1032 return const_cast<DetailInputs*>(&RequestedFieldsForSection(section)); 1109 return const_cast<DetailInputs*>(&RequestedFieldsForSection(section));
1033 } 1110 }
1034 1111
1035 void AutofillDialogControllerImpl::HidePopup() { 1112 void AutofillDialogControllerImpl::HidePopup() {
1036 if (popup_controller_) 1113 if (popup_controller_)
1037 popup_controller_->Hide(); 1114 popup_controller_->Hide();
1038 } 1115 }
1039 1116
1040 } // namespace autofill 1117 } // namespace autofill
OLDNEW
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_impl.h ('k') | chrome/browser/ui/autofill/autofill_dialog_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698