1 // Copyright 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_AUTOFILL_MOCK_AUTOFILL_POPUP_CONTROLLER_H_ 6 #define CHROME_BROWSER_AUTOFILL_MOCK_AUTOFILL_POPUP_CONTROLLER_H_ 7 8 #include <memory> 9 #include <vector> 10 11 #include "base/memory/weak_ptr.h" 12 #include "base/no_destructor.h" 13 #include "build/build_config.h" 14 #include "chrome/browser/ui/autofill/autofill_popup_controller.h" 15 #include "components/autofill/core/browser/ui/suggestion.h" 16 #include "testing/gmock/include/gmock/gmock.h" 17 #include "ui/gfx/geometry/rect_f.h" 18 19 namespace autofill { 20 21 class MockAutofillPopupController 22 : public AutofillPopupController, 23 public base::SupportsWeakPtr<MockAutofillPopupController> { 24 public: 25 MockAutofillPopupController(); 26 ~MockAutofillPopupController(); 27 28 // AutofillPopupViewDelegate 29 MOCK_METHOD1(Hide, void(PopupHidingReason reason)); 30 MOCK_METHOD0(ViewDestroyed, void()); 31 MOCK_METHOD1(SetSelectionAtPoint, void(const gfx::Point& point)); 32 MOCK_METHOD0(AcceptSelectedLine, bool()); 33 MOCK_METHOD0(SelectionCleared, void()); 34 MOCK_CONST_METHOD0(HasSelection, bool()); 35 MOCK_CONST_METHOD0(popup_bounds, gfx::Rect()); 36 MOCK_CONST_METHOD0(container_view, gfx::NativeView()); 37 MOCK_CONST_METHOD0(GetWebContents, content::WebContents*()); element_bounds()38 const gfx::RectF& element_bounds() const override { 39 static base::NoDestructor<gfx::RectF> bounds({100, 100, 250, 50}); 40 return *bounds; 41 } 42 MOCK_CONST_METHOD0(IsRTL, bool()); 43 44 // AutofillPopupController 45 MOCK_METHOD0(OnSuggestionsChanged, void()); 46 MOCK_METHOD1(AcceptSuggestion, void(int index)); GetSuggestions()47 std::vector<Suggestion> GetSuggestions() const override { 48 return suggestions_; 49 } 50 GetLineCount()51 int GetLineCount() const override { return suggestions_.size(); } 52 GetSuggestionAt(int row)53 const autofill::Suggestion& GetSuggestionAt(int row) const override { 54 return suggestions_[row]; 55 } 56 GetSuggestionValueAt(int i)57 const base::string16& GetSuggestionValueAt(int i) const override { 58 return suggestions_[i].value; 59 } 60 GetSuggestionLabelAt(int row)61 const base::string16& GetSuggestionLabelAt(int row) const override { 62 return suggestions_[row].label; 63 } 64 GetWeakPtr()65 base::WeakPtr<MockAutofillPopupController> GetWeakPtr() { 66 return weak_ptr_factory_.GetWeakPtr(); 67 } 68 69 MOCK_METHOD3(GetRemovalConfirmationText, 70 bool(int index, base::string16* title, base::string16* body)); 71 MOCK_METHOD1(RemoveSuggestion, bool(int index)); 72 MOCK_METHOD1(SetSelectedLine, void(base::Optional<int> selected_line)); 73 MOCK_CONST_METHOD0(selected_line, base::Optional<int>()); 74 MOCK_CONST_METHOD0(GetPopupType, PopupType()); 75 set_suggestions(const std::vector<int> & ids)76 void set_suggestions(const std::vector<int>& ids) { 77 for (const auto& id : ids) 78 suggestions_.push_back(autofill::Suggestion("", "", "", id)); 79 } 80 set_suggestions(const std::vector<Suggestion> & suggestions)81 void set_suggestions(const std::vector<Suggestion>& suggestions) { 82 suggestions_ = suggestions; 83 } 84 85 private: 86 std::vector<autofill::Suggestion> suggestions_; 87 88 base::WeakPtrFactory<MockAutofillPopupController> weak_ptr_factory_{this}; 89 }; 90 91 } // namespace autofill 92 93 #endif // CHROME_BROWSER_AUTOFILL_MOCK_AUTOFILL_POPUP_CONTROLLER_H_ 94