| 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_;
 | 
|  
 | 
| 
 |