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 e3332b51f00d49f50a74b5c06df29046052c63ae..e8a76251cead1fe1b17a8f5b4570f64e0c20758f 100644 |
--- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.h |
+++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.h |
@@ -10,11 +10,13 @@ |
#include "base/gtest_prod_util.h" |
#include "base/i18n/rtl.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/optional.h" |
#include "base/strings/string16.h" |
#include "build/build_config.h" |
#include "chrome/browser/ui/autofill/autofill_popup_controller.h" |
#include "chrome/browser/ui/autofill/autofill_popup_layout_model.h" |
#include "chrome/browser/ui/autofill/popup_controller_common.h" |
+#include "ui/accessibility/ax_enums.h" |
#include "ui/gfx/geometry/rect.h" |
#include "ui/gfx/geometry/rect_f.h" |
#include "ui/native_theme/native_theme.h" |
@@ -72,38 +74,38 @@ class AutofillPopupControllerImpl : public AutofillPopupController { |
~AutofillPopupControllerImpl() override; |
// AutofillPopupViewDelegate implementation. |
- void UpdateBoundsAndRedrawPopup() override; |
void SetSelectionAtPoint(const gfx::Point& point) override; |
bool AcceptSelectedLine() override; |
void SelectionCleared() override; |
- void AcceptSuggestion(size_t index) override; |
gfx::Rect popup_bounds() const override; |
gfx::NativeView container_view() override; |
const gfx::RectF& element_bounds() const override; |
bool IsRTL() const override; |
const std::vector<autofill::Suggestion> GetSuggestions() override; |
#if !defined(OS_ANDROID) |
- int GetElidedValueWidthForRow(size_t row) override; |
- int GetElidedLabelWidthForRow(size_t row) override; |
+ int GetElidedValueWidthForRow(int row) override; |
+ int GetElidedLabelWidthForRow(int row) override; |
#endif |
// AutofillPopupController implementation. |
- size_t GetLineCount() const override; |
- const autofill::Suggestion& GetSuggestionAt(size_t row) const override; |
- const base::string16& GetElidedValueAt(size_t row) const override; |
- const base::string16& GetElidedLabelAt(size_t row) const override; |
+ void OnSuggestionsChanged() override; |
+ void AcceptSuggestion(int index) override; |
+ int GetLineCount() const override; |
+ const autofill::Suggestion& GetSuggestionAt(int row) const override; |
+ const base::string16& GetElidedValueAt(int row) const override; |
+ const base::string16& GetElidedLabelAt(int row) const override; |
bool GetRemovalConfirmationText(int list_index, |
base::string16* title, |
base::string16* body) override; |
bool RemoveSuggestion(int list_index) override; |
ui::NativeTheme::ColorId GetBackgroundColorIDForRow(int index) const override; |
- int selected_line() const override; |
+ base::Optional<int> selected_line() const override; |
const AutofillPopupLayoutModel& layout_model() const override; |
content::WebContents* web_contents(); |
// Change which line is currently selected by the user. |
- void SetSelectedLine(int selected_line); |
+ void SetSelectedLine(base::Optional<int> selected_line); |
// Increase the selected line by 1, properly handling wrapping. |
void SelectNextLine(); |
@@ -126,10 +128,6 @@ class AutofillPopupControllerImpl : public AutofillPopupController { |
AutofillPopupView* view() { return view_; } |
- // |view_| pass throughs (virtual for testing). |
- virtual void ShowView(); |
- virtual void InvalidateRow(size_t row); |
- |
base::WeakPtr<AutofillPopupControllerImpl> GetWeakPtr(); |
// Contains common popup functionality such as popup layout. Protected for |
@@ -139,17 +137,19 @@ class AutofillPopupControllerImpl : public AutofillPopupController { |
private: |
#if !defined(OS_ANDROID) |
FRIEND_TEST_ALL_PREFIXES(AutofillPopupControllerUnitTest, ElideText); |
- |
// Helper method which elides the value and label for the suggestion at |row| |
// given the |available_width|. Puts the results in |elided_values_| and |
// |elided_labels_|. |
- void ElideValueAndLabelForRow(size_t row, int available_width); |
+ void ElideValueAndLabelForRow(int row, int available_width); |
#endif |
// Clear the internal state of the controller. This is needed to ensure that |
// when the popup is reused it doesn't leak values between uses. |
void ClearState(); |
+ friend class AutofillPopupControllerUnitTest; |
+ void SetViewForTesting(AutofillPopupView* view) { view_ = view; } |
+ |
AutofillPopupView* view_; // Weak reference. |
AutofillPopupLayoutModel layout_model_; |
base::WeakPtr<AutofillPopupDelegate> delegate_; |
@@ -165,9 +165,9 @@ class AutofillPopupControllerImpl : public AutofillPopupController { |
std::vector<base::string16> elided_values_; |
std::vector<base::string16> elided_labels_; |
- // The line that is currently selected by the user. |
- // |kNoSelection| indicates that no line is currently selected. |
- int selected_line_; |
+ // The line that is currently selected by the user, null indicates that no |
+ // line is currently selected. |
+ base::Optional<int> selected_line_; |
base::WeakPtrFactory<AutofillPopupControllerImpl> weak_ptr_factory_; |
}; |