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

Unified Diff: chrome/browser/ui/autofill/new_credit_card_bubble_controller.h

Issue 21668003: Implement newly saved card bubble for realz and update generated card bubble to (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 7 years, 4 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/new_credit_card_bubble_controller.h
diff --git a/chrome/browser/ui/autofill/new_credit_card_bubble_controller.h b/chrome/browser/ui/autofill/new_credit_card_bubble_controller.h
new file mode 100644
index 0000000000000000000000000000000000000000..2b7f6d901c65642ee5e67dc23e5442c9bf757c57
--- /dev/null
+++ b/chrome/browser/ui/autofill/new_credit_card_bubble_controller.h
@@ -0,0 +1,132 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_AUTOFILL_NEW_CREDIT_CARD_BUBBLE_CONTROLLER_H_
+#define CHROME_BROWSER_UI_AUTOFILL_NEW_CREDIT_CARD_BUBBLE_CONTROLLER_H_
+
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/strings/string16.h"
+#include "ui/gfx/image/image.h"
+
+class Profile;
+
+namespace autofill {
+
+class NewCreditCardBubbleView;
+class AutofillProfile;
+class CreditCard;
+
+// A simple wrapper that contains descriptive information about a credit card
+// that should be shown in the content of the bubble.
+struct CreditCardDescription {
+ CreditCardDescription();
+ ~CreditCardDescription();
+ // The icon of the credit card issuer (i.e. Visa, Mastercard).
+ gfx::Image icon;
+ // The display name of the card. Shown next to the icon.
+ base::string16 name;
+ // A longer description of the card being shown in the bubble.
+ base::string16 description;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// NewCreditCardBubbleController
+//
+// A class to control showing/hiding a bubble after saved a new card in Chrome.
+// Here's a visual reference to what this bubble looks like:
+//
+// @----------------------------------------@
+// | Bubble title text |
+// | |
+// | [ Card icon ] Card name |
+// | Card description that will probably |
+// | also span multiple lines. |
+// | |
+// | Learn more link |
+// @----------------------------------------@
+//
+////////////////////////////////////////////////////////////////////////////////
+class NewCreditCardBubbleController {
+ public:
+ virtual ~NewCreditCardBubbleController();
+
+ // Show a bubble informing the user that new credit card data has been saved.
+ // This bubble points to the settings menu. Ownership of |new_card|
+ // and |billing_profile| are transferred by this call.
+ static void Show(Profile* profile,
+ scoped_ptr<CreditCard> new_card,
+ scoped_ptr<AutofillProfile> billing_profile);
+
+ // The bubble's title text.
+ const base::string16& TitleText() const;
+
+ // A card description to show in the bubble.
+ const CreditCardDescription& CardDescription() const;
+
+ // The text of the link shown at the bubble of the bubble.
+ const base::string16& LinkText() const;
+
+ // Called when |bubble_| is destroyed.
+ void OnBubbleDestroyed();
+
+ // Called when the link at the bottom of the bubble is clicked.
+ void OnLinkClicked();
+
+ // Returns the profile this bubble is associated with.
+ Profile* profile() { return profile_; }
+
+ protected:
+ // Create a bubble attached to |profile|.
+ explicit NewCreditCardBubbleController(Profile* profile);
+
+ // Creates and returns an Autofill credit card bubble. Exposed for testing.
+ virtual base::WeakPtr<NewCreditCardBubbleView> CreateBubble();
+
+ // Returns a weak reference to |bubble_|. May be invalid/NULL.
+ virtual base::WeakPtr<NewCreditCardBubbleView> bubble();
+
+ // Show a bubble notifying the user that new credit card data has been saved.
+ // Exposed for testing.
+ virtual void SetupAndShow(scoped_ptr<CreditCard> new_card,
+ scoped_ptr<AutofillProfile> billing_profile);
+
+ private:
+ // Hides |bubble_| if it exists.
+ void Hide();
+
+ // The profile this bubble is associated with.
+ Profile* const profile_;
+
+ // The newly saved credit card and assocated billing information.
+ scoped_ptr<CreditCard> new_card_;
+ scoped_ptr<AutofillProfile> billing_profile_;
+
+ // The title text of the bubble.
+ const base::string16 title_text_;
+
+ // The bubble's link text.
+ const base::string16 link_text_;
+
+ // Strings and descriptions that are generated based on |new_card_| and
+ // |billing_profile_|.
+ struct CreditCardDescription card_desc_;
+
+ // A bubble view that's created by calling either |Show*()| method; owned by
+ // the native widget/hierarchy, not this class (though this class must outlive
+ // |bubble_|). NULL in many cases.
+ base::WeakPtr<NewCreditCardBubbleView> bubble_;
+
+ // A weak pointer factory for |Create()|.
+ base::WeakPtrFactory<NewCreditCardBubbleController> weak_ptr_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(NewCreditCardBubbleController);
+};
+
+} // namespace autofill
+
+#endif // CHROME_BROWSER_UI_AUTOFILL_NEW_CREDIT_CARD_BUBBLE_CONTROLLER_H_

Powered by Google App Engine
This is Rietveld 408576698