Index: chrome/browser/ui/views/autofill/autofill_dialog_views.h |
diff --git a/chrome/browser/ui/views/autofill/autofill_dialog_views.h b/chrome/browser/ui/views/autofill/autofill_dialog_views.h |
index 7afc8f5ac6c53d0853afa584211afa22e42dd131..8cf5079587655de4840f9863c14a09beeae17040 100644 |
--- a/chrome/browser/ui/views/autofill/autofill_dialog_views.h |
+++ b/chrome/browser/ui/views/autofill/autofill_dialog_views.h |
@@ -10,6 +10,7 @@ |
#include "base/memory/scoped_vector.h" |
#include "base/memory/weak_ptr.h" |
#include "base/scoped_observer.h" |
+#include "chrome/browser/ui/autofill/autofill_dialog_types.h" |
#include "chrome/browser/ui/autofill/autofill_dialog_view.h" |
#include "chrome/browser/ui/autofill/autofill_dialog_view_delegate.h" |
#include "chrome/browser/ui/autofill/testable_autofill_dialog_view.h" |
@@ -60,7 +61,6 @@ namespace autofill { |
class AutofillDialogSignInDelegate; |
class DecoratedTextfield; |
-struct DetailInput; |
// Views toolkit implementation of the Autofill dialog that handles the |
// imperative autocomplete API call. |
@@ -250,7 +250,7 @@ class AutofillDialogViews : public AutofillDialogView, |
// Returns a height which should be used when the contents view has width |
// |w|. Note that the value returned should be used as the height of the |
// dialog's contents. |
- int GetHeightForContentsForWidth(int w); |
+ int GetHeightForContentsForWidth(int width); |
// Sets properties that should be displayed. |
void SetState(const DialogOverlayState& state, |
@@ -380,33 +380,51 @@ class AutofillDialogViews : public AutofillDialogView, |
// edit the suggestion. |
class SuggestionView : public views::View { |
public: |
- SuggestionView(const base::string16& edit_label, |
- AutofillDialogViews* autofill_dialog); |
+ explicit SuggestionView(AutofillDialogViews* autofill_dialog); |
virtual ~SuggestionView(); |
+ void SetState(const SuggestionState& state); |
+ |
+ // views::View implementation. |
+ virtual gfx::Size GetPreferredSize() OVERRIDE; |
+ virtual int GetHeightForWidth(int width) OVERRIDE; |
+ virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) OVERRIDE; |
+ |
+ DecoratedTextfield* decorated_textfield() { return decorated_; } |
+ |
+ private: |
+ // Returns whether there's room to display |state_.vertically_compact_text| |
+ // without resorting to an ellipsis for a pixel width of |available_width|. |
+ // Fills in |resulting_height| with the amount of space required to display |
+ // |vertically_compact_text| or |horizontally_compact_text| as the case may |
+ // be. |
+ bool CanUseVerticallyCompactText(int available_width, |
+ int* resulting_height); |
+ |
// Sets the display text of the suggestion. |
- void SetSuggestionText(const base::string16& text, |
- gfx::Font::FontStyle style); |
+ void SetLabelText(const base::string16& text); |
// Sets the icon which should be displayed ahead of the text. |
- void SetSuggestionIcon(const gfx::Image& image); |
+ void SetIcon(const gfx::Image& image); |
// Shows an auxiliary textfield to the right of the suggestion icon and |
// text. This is currently only used to show a CVC field for the CC section. |
- void ShowTextfield(const base::string16& placeholder_text, |
- const gfx::Image& icon); |
+ void SetTextfield(const base::string16& placeholder_text, |
+ const gfx::Image& icon); |
- DecoratedTextfield* decorated_textfield() { return decorated_; } |
+ // The state of |this|. |
+ SuggestionState state_; |
+ |
+ // This caches preferred heights for given widths. The key is a preferred |
+ // width, the value is a cached result of CanUseVerticallyCompactText. |
+ std::map<int, std::pair<bool, int> > calculated_heights_; |
- private: |
// The label that holds the suggestion description text. |
views::Label* label_; |
// The second (and greater) line of text that describes the suggestion. |
views::Label* label_line_2_; |
// The icon that comes just before |label_|. |
views::ImageView* icon_; |
- // A view to contain |label_| and |icon_|. |
- views::View* label_container_; |
// The input set by ShowTextfield. |
DecoratedTextfield* decorated_; |
// An "Edit" link that flips to editable inputs rather than suggestion text. |