Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/ui/autofill/new_credit_card_bubble_controller.h" | |
| 6 | |
| 7 #include <string> | |
| 8 | |
| 9 #include "base/logging.h" | |
| 10 #include "base/strings/utf_string_conversions.h" | |
| 11 #include "chrome/browser/browser_process.h" | |
| 12 #include "chrome/browser/profiles/profile.h" | |
| 13 #include "chrome/browser/ui/autofill/new_credit_card_bubble.h" | |
| 14 #include "chrome/browser/ui/browser_finder.h" | |
| 15 #include "chrome/browser/ui/chrome_pages.h" | |
| 16 #include "chrome/browser/ui/host_desktop.h" | |
| 17 #include "chrome/common/url_constants.h" | |
| 18 #include "components/autofill/core/browser/autofill_profile.h" | |
| 19 #include "components/autofill/core/browser/credit_card.h" | |
| 20 #include "grit/chromium_strings.h" | |
| 21 #include "grit/generated_resources.h" | |
| 22 #include "grit/theme_resources.h" | |
| 23 #include "ui/base/l10n/l10n_util.h" | |
| 24 #include "ui/base/resource/resource_bundle.h" | |
| 25 | |
| 26 namespace autofill { | |
| 27 | |
| 28 namespace { | |
| 29 | |
| 30 static const int kMaxGeneratedCardTimesToShow = 5; | |
| 31 static const char kWalletGeneratedCardLearnMoreLink[] = | |
| 32 "http://support.google.com/wallet/bin/answer.py?hl=en&answer=2740044"; | |
| 33 | |
| 34 } // namespace | |
| 35 | |
| 36 CreditCardDescription::CreditCardDescription() {} | |
| 37 CreditCardDescription::~CreditCardDescription() {} | |
| 38 | |
| 39 NewCreditCardBubbleController::~NewCreditCardBubbleController() { | |
| 40 Hide(); | |
| 41 } | |
| 42 | |
| 43 // static | |
| 44 void NewCreditCardBubbleController::Show( | |
| 45 Profile* profile, | |
| 46 scoped_ptr<CreditCard> new_card, | |
| 47 scoped_ptr<AutofillProfile> billing_profile) { | |
| 48 (new NewCreditCardBubbleController(profile))->SetupAndShow( | |
| 49 new_card.Pass(), | |
| 50 billing_profile.Pass()); | |
| 51 } | |
| 52 | |
| 53 const base::string16& NewCreditCardBubbleController::ContentsText() const { | |
| 54 return contents_text_; | |
| 55 } | |
| 56 | |
| 57 const CreditCardDescription& NewCreditCardBubbleController::CardDescription() | |
| 58 const { | |
| 59 return card_desc_; | |
| 60 } | |
| 61 | |
| 62 const base::string16& NewCreditCardBubbleController::LinkText() const { | |
| 63 return link_text_; | |
| 64 } | |
| 65 | |
| 66 void NewCreditCardBubbleController::OnBubbleDestroyed() { | |
| 67 delete this; | |
| 68 } | |
| 69 | |
| 70 void NewCreditCardBubbleController::OnLinkClicked() { | |
| 71 #if !defined(OS_ANDROID) | |
|
Evan Stade
2013/08/06 22:06:25
can you ping aruslan to see what plans if any andr
Dan Beam
2013/08/07 02:30:22
the plan is toasts, which seem to need much less c
| |
| 72 Browser* browser = chrome::FindTabbedBrowser(profile_, false, | |
| 73 chrome::GetActiveDesktop()); | |
| 74 if (browser) | |
| 75 chrome::ShowSettingsSubPage(browser, chrome::kAutofillSubPage); | |
| 76 #endif | |
| 77 Hide(); | |
| 78 } | |
| 79 | |
| 80 NewCreditCardBubbleController::NewCreditCardBubbleController(Profile* profile) | |
| 81 : profile_(profile), | |
| 82 contents_text_(l10n_util::GetStringUTF16( | |
| 83 IDS_AUTOFILL_NEW_CREDIT_CARD_BUBBLE_CONTENTS)), | |
| 84 link_text_(l10n_util::GetStringUTF16( | |
| 85 IDS_AUTOFILL_NEW_CREDIT_CARD_BUBBLE_LINK)), | |
| 86 weak_ptr_factory_(this) {} | |
| 87 | |
| 88 base::WeakPtr<NewCreditCardBubbleController> | |
| 89 NewCreditCardBubbleController::GetWeakPtr() { | |
| 90 return weak_ptr_factory_.GetWeakPtr(); | |
| 91 } | |
| 92 | |
| 93 base::WeakPtr<NewCreditCardBubble> NewCreditCardBubbleController:: | |
| 94 CreateBubble() { | |
| 95 return NewCreditCardBubble::Create(GetWeakPtr()); | |
| 96 } | |
| 97 | |
| 98 base::WeakPtr<NewCreditCardBubble> NewCreditCardBubbleController:: | |
| 99 bubble() { | |
| 100 return bubble_; | |
| 101 } | |
| 102 | |
| 103 void NewCreditCardBubbleController::SetupAndShow( | |
| 104 scoped_ptr<CreditCard> new_card, | |
| 105 scoped_ptr<AutofillProfile> billing_profile) { | |
| 106 DCHECK(new_card); | |
| 107 DCHECK(billing_profile); | |
| 108 | |
| 109 new_card_ = new_card.Pass(); | |
| 110 billing_profile_ = billing_profile.Pass(); | |
| 111 | |
| 112 const base::string16 card_number = | |
| 113 new_card_->GetRawInfo(CREDIT_CARD_NUMBER); | |
| 114 ui::ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | |
| 115 card_desc_.icon = rb.GetImageNamed( | |
| 116 CreditCard::IconResourceId(CreditCard::GetCreditCardType(card_number))); | |
| 117 card_desc_.name = new_card_->TypeAndLastFourDigits(); | |
| 118 | |
| 119 const base::string16 kNewLine = ASCIIToUTF16("\n"); | |
| 120 const std::string& locale = g_browser_process->GetApplicationLocale(); | |
| 121 | |
| 122 std::vector<AutofillProfile*> profiles; | |
| 123 profiles.push_back(billing_profile_.get()); | |
| 124 | |
| 125 std::vector<AutofillFieldType> fields; | |
|
Evan Stade
2013/08/06 22:06:25
what you want is to create a DataModelWrapper for
Dan Beam
2013/08/07 02:30:22
Done. (but there's no email...)
| |
| 126 fields.push_back(NAME_BILLING_FULL); | |
| 127 fields.push_back(ADDRESS_BILLING_LINE1); | |
| 128 fields.push_back(ADDRESS_BILLING_LINE2); | |
| 129 fields.push_back(ADDRESS_BILLING_CITY); | |
| 130 fields.push_back(ADDRESS_BILLING_STATE); | |
| 131 | |
| 132 std::vector<base::string16> labels; | |
| 133 AutofillProfile::CreateInferredLabels(&profiles, &fields, UNKNOWN_TYPE, | |
| 134 fields.size(), &labels); | |
| 135 | |
| 136 card_desc_.description = labels.front() + kNewLine + | |
| 137 billing_profile_->GetInfo(EMAIL_ADDRESS, locale) + kNewLine + | |
| 138 billing_profile_->GetRawInfo(PHONE_BILLING_WHOLE_NUMBER); | |
| 139 | |
| 140 bubble_ = CreateBubble(); | |
| 141 if (!bubble_) { | |
| 142 // TODO(dbeam): Make a bubble on all applicable platforms. | |
| 143 delete this; | |
| 144 return; | |
| 145 } | |
| 146 | |
| 147 bubble_->Show(); | |
| 148 } | |
| 149 | |
| 150 void NewCreditCardBubbleController::Hide() { | |
| 151 if (bubble_) | |
| 152 bubble_->Hide(); | |
| 153 } | |
| 154 | |
| 155 } // namespace autofill | |
| OLD | NEW |