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

Unified Diff: chrome/browser/ui/views/autofill/autofill_dialog_views.h

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 side-by-side diff with in-line comments
Download patch
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 a71d67c850372aa4252d6c6254792a08519ab73f..faacbbfdad8dd9b28e3b2983c0aa8b8998e31f32 100644
--- a/chrome/browser/ui/views/autofill/autofill_dialog_views.h
+++ b/chrome/browser/ui/views/autofill/autofill_dialog_views.h
@@ -7,6 +7,7 @@
#include <map>
+#include "base/memory/scoped_vector.h"
#include "chrome/browser/ui/autofill/autofill_dialog_controller.h"
#include "chrome/browser/ui/autofill/autofill_dialog_view.h"
#include "ui/views/controls/button/button.h"
@@ -24,6 +25,7 @@ class KeyboardListener;
}
namespace gfx {
+class Font;
class Image;
}
@@ -31,6 +33,7 @@ namespace views {
class Checkbox;
class Combobox;
class FocusManager;
+class GridLayout;
class ImageButton;
class ImageView;
class Label;
@@ -76,6 +79,7 @@ class AutofillDialogViews : public AutofillDialogView,
virtual const content::NavigationController& ShowSignIn() OVERRIDE;
virtual void HideSignIn() OVERRIDE;
virtual void UpdateProgressBar(double value) OVERRIDE;
+ virtual void UpdateFootnote() OVERRIDE;
// views::DialogDelegate implementation:
virtual string16 GetWindowTitle() const OVERRIDE;
@@ -262,13 +266,66 @@ class AutofillDialogViews : public AutofillDialogView,
public:
AutocheckoutProgressBar();
- private:
// Overidden from View:
virtual gfx::Size GetPreferredSize() OVERRIDE;
+ private:
DISALLOW_COPY_AND_ASSIGN(AutocheckoutProgressBar);
};
+ class FootnoteView : public views::View {
+ public:
+ FootnoteView();
+ virtual ~FootnoteView();
+
+ void AddLabel(views::Label* label, bool is_link);
+ int IndexOfLink(views::Label* link); // Returns -1 if not found.
+
+ // views::View implementation.
+ virtual std::string GetClassName() const OVERRIDE;
+ virtual void Layout() OVERRIDE;
+
+ private:
+ struct FootnoteLabel {
+ scoped_ptr<views::Label> label;
+ bool is_link;
+ };
+
+ void StartRow();
+ views::View* CurrentRow();
+ void ResetLayoutManager();
+ void ResetRows();
+
+ void AppendText(const string16& text_part);
+ const string16& CurrentText() const;
+ void ResetText();
+
+ void AddWidth(size_t width);
+ size_t CurrentWidth() const;
+ int ParentWidth();
+ void ResetWidth();
+ int WidthRemaining();
+
+ void AddCloneWithWidth(views::Label* label, size_t width);
+ views::Label* CloneLabel(const string16& text,
+ const gfx::Font& font,
+ bool is_link);
+ void TransferListener(views::Label* from_label, views::Label* to_label);
+
+ void Reset();
+
+ ScopedVector<FootnoteLabel> footnote_labels_; // owned by us.
+ std::vector<views::Label*> links_; // weak.
+ string16 current_text_;
+
+ size_t current_width_;
+ views::GridLayout* layout_; // weak; owned by view hierarchy.
+ int previous_parent_width_;
+ const int single_column_set_;
+
+ DISALLOW_COPY_AND_ASSIGN(FootnoteView);
+ };
+
typedef std::map<DialogSection, DetailsGroup> DetailGroupMap;
void InitChildViews();
@@ -279,11 +336,17 @@ class AutofillDialogViews : public AutofillDialogView,
// Creates and returns a view that holds the requesting host and intro text.
views::View* CreateNotificationArea();
+ // Creates and returns a view that holds the main controls of this dialog.
+ views::View* CreateMainContainer();
+
// Creates and returns a view that holds a sign in page and related controls.
views::View* CreateSignInContainer();
- // Creates and returns a view that holds the main controls of this dialog.
- views::View* CreateMainContainer();
+ // Creates footnote container.
+ void CreateFootnoteView();
+
+ // [Re-]populates footnote links based on the controller's link text parts.
+ void PopulateFootnoteLinks();
// Creates a detail section (Shipping, Email, etc.) with the given label,
// inputs View, and suggestion model. Relevant pointers are stored in |group|.
@@ -323,6 +386,10 @@ class AutofillDialogViews : public AutofillDialogView,
// the input.
void TextfieldEditedOrActivated(views::Textfield* textfield, bool was_edit);
+ // When something inside of |contents_| could've changed in height, call this
+ // to ensure |contents_|' preferred size is correct.
+ void ContentsResized();
+
// The controller that drives this view. Weak pointer, always non-NULL.
AutofillDialogController* const controller_;
@@ -379,6 +446,10 @@ class AutofillDialogViews : public AutofillDialogView,
// Progress bar for displaying Autocheckout progress.
AutocheckoutProgressBar* autocheckout_progress_bar_;
+ // View shown when accepting of a new Terms of Service is required. Lives
+ // below the Cancel/Submit buttons.
+ FootnoteView* footnote_view_;
+
// The focus manager for |window_|.
views::FocusManager* focus_manager_;
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_view.h ('k') | chrome/browser/ui/views/autofill/autofill_dialog_views.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698