| Index: chrome/browser/ui/autofill/autofill_popup_controller_impl.h
|
| diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.h b/chrome/browser/ui/autofill/autofill_popup_controller_impl.h
|
| index a83749130f77423accad60bfd5c6c37f1e00faa0..d0ab107e7bbff6a4958398c57ffb04b117b2ac2e 100644
|
| --- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.h
|
| +++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.h
|
| @@ -15,6 +15,10 @@
|
| class AutofillPopupDelegate;
|
| class AutofillPopupView;
|
|
|
| +namespace gfx {
|
| +class Display;
|
| +}
|
| +
|
| namespace ui {
|
| class KeyEvent;
|
| }
|
| @@ -65,11 +69,7 @@ class AutofillPopupControllerImpl : public AutofillPopupController,
|
| virtual void MouseExitedPopup() OVERRIDE;
|
| virtual void AcceptSuggestion(size_t index) OVERRIDE;
|
| virtual int GetIconResourceID(const string16& resource_name) OVERRIDE;
|
| - virtual bool CanDelete(size_t index) OVERRIDE;
|
| -#if !defined(OS_ANDROID)
|
| - virtual int GetPopupRequiredWidth() OVERRIDE;
|
| - virtual int GetPopupRequiredHeight() OVERRIDE;
|
| -#endif
|
| + virtual bool CanDelete(size_t index) const OVERRIDE;
|
| virtual gfx::Rect GetRowBounds(size_t index) OVERRIDE;
|
| virtual void SetPopupBounds(const gfx::Rect& bounds) OVERRIDE;
|
| virtual const gfx::Rect& popup_bounds() const OVERRIDE;
|
| @@ -109,7 +109,7 @@ class AutofillPopupControllerImpl : public AutofillPopupController,
|
| int LineFromY(int y);
|
|
|
| // Returns the height of a row depending on its type.
|
| - int GetRowHeightFromId(int identifier);
|
| + int GetRowHeightFromId(int identifier) const;
|
|
|
| // Returns true if the given |x| and |y| coordinates refer to a point that
|
| // hits the delete icon in the current selected line.
|
| @@ -127,7 +127,45 @@ class AutofillPopupControllerImpl : public AutofillPopupController,
|
| virtual void ShowView();
|
| virtual void InvalidateRow(size_t row);
|
|
|
| + // Protected so tests can access.
|
| +#if !defined(OS_ANDROID)
|
| + // Calculates the desired width of the popup based on its contents.
|
| + int GetDesiredPopupWidth() const;
|
| +
|
| + // Calculates the desired height of the popup based on its contents.
|
| + int GetDesiredPopupHeight() const;
|
| +#endif
|
| +
|
| private:
|
| +#if !defined(OS_ANDROID)
|
| + // Calculate the width of the row, excluding all the text. This provides
|
| + // the size of the row that won't be reducible (since all the text can be
|
| + // elided if there isn't enough space).
|
| + int RowWidthWithoutText(int row) const;
|
| +
|
| + // Calculates and sets the bounds of the popup, including placing it properly
|
| + // to prevent it from going off the screen.
|
| + void UpdatePopupBounds();
|
| +#endif
|
| +
|
| + // A helper function to get the display closest to the given point (virtual
|
| + // for testing).
|
| + virtual gfx::Display GetDisplayNearestPoint(const gfx::Point& point) const;
|
| +
|
| + // Calculates the width of the popup and the x position of it. These values
|
| + // will stay on the screen.
|
| + std::pair<int, int> CalculatePopupXAndWidth(
|
| + const gfx::Display& left_display,
|
| + const gfx::Display& right_display,
|
| + int popup_required_width) const;
|
| +
|
| + // Calculates the height of the popup and the y position of it. These values
|
| + // will stay on the screen.
|
| + std::pair<int, int> CalculatePopupYAndHeight(
|
| + const gfx::Display& top_display,
|
| + const gfx::Display& bottom_display,
|
| + int popup_required_height) const;
|
| +
|
| AutofillPopupView* view_; // Weak reference.
|
| AutofillPopupDelegate* delegate_; // Weak reference.
|
| gfx::NativeView container_view_; // Weak reference.
|
| @@ -145,6 +183,10 @@ class AutofillPopupControllerImpl : public AutofillPopupController,
|
| std::vector<string16> icons_;
|
| std::vector<int> identifiers_;
|
|
|
| + // Since names_ can be elided to ensure that it fits on the screen, we need to
|
| + // keep an unelided copy of the names to be able to pass to the delegate.
|
| + std::vector<string16> full_names_;
|
| +
|
| #if !defined(OS_ANDROID)
|
| // The fonts for the popup text.
|
| gfx::Font name_font_;
|
|
|