Chromium Code Reviews| Index: chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc |
| diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc |
| index f6718c78ed2d131abe6579a95317629920ecd5dc..d79e301b1f13f98aef1ea01966f6dcbc31fc1b67 100644 |
| --- a/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc |
| +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc |
| @@ -28,57 +28,30 @@ |
| namespace { |
| +// TestingOmniboxViewViews ---------------------------------------------------- |
| + |
| class TestingOmniboxViewViews : public OmniboxViewViews { |
| public: |
| TestingOmniboxViewViews(OmniboxEditController* controller, |
| Profile* profile, |
| - CommandUpdater* command_updater) |
| - : OmniboxViewViews(controller, |
| - profile, |
| - command_updater, |
| - false, |
| - nullptr, |
| - gfx::FontList()), |
| - update_popup_call_count_(0), |
| - profile_(profile), |
| - base_text_is_emphasized_(false) {} |
| - |
| - void CheckUpdatePopupCallInfo(size_t call_count, const base::string16& text, |
| - const gfx::Range& selection_range) { |
| - EXPECT_EQ(call_count, update_popup_call_count_); |
| - EXPECT_EQ(text, update_popup_text_); |
| - EXPECT_EQ(selection_range, update_popup_selection_range_); |
| - } |
| + CommandUpdater* command_updater); |
| - void EmphasizeURLComponents() override { |
| - UpdateTextStyle(text(), ChromeAutocompleteSchemeClassifier(profile_)); |
| - } |
| + void CheckUpdatePopupCallInfo(size_t call_count, |
|
Mark P
2017/03/06 05:23:26
pref inline
Peter Kasting
2017/03/06 21:10:44
I'd like to avoid inlining methods where the body
|
| + const base::string16& text, |
| + const gfx::Range& selection_range); |
| gfx::Range scheme_range() const { return scheme_range_; } |
| gfx::Range emphasis_range() const { return emphasis_range_; } |
| bool base_text_is_emphasized() const { return base_text_is_emphasized_; } |
| - private: |
| - // OmniboxView: |
| - void UpdatePopup() override { |
| - ++update_popup_call_count_; |
| - update_popup_text_ = text(); |
| - update_popup_selection_range_ = GetSelectedRange(); |
| - } |
| - |
| - void SetEmphasis(bool emphasize, const gfx::Range& range) override { |
| - if (range == gfx::Range::InvalidRange()) { |
| - base_text_is_emphasized_ = emphasize; |
| - return; |
| - } |
| + // OmniboxViewViews: |
| + void EmphasizeURLComponents() override; |
|
Mark P
2017/03/06 05:23:26
pref inline
Peter Kasting
2017/03/06 21:10:44
I think this one makes sense, and the only reason
Mark P
2017/03/07 21:10:18
Can you give it a better name or comment then?
I w
Peter Kasting
2017/03/08 10:57:31
Since this is a virtual override, the names are se
|
| - EXPECT_TRUE(emphasize); |
| - emphasis_range_ = range; |
| - } |
| - |
| - void UpdateSchemeStyle(const gfx::Range& range) override { |
| - scheme_range_ = range; |
| - } |
| + private: |
| + // OmniboxViewViews: |
| + void UpdatePopup() override; |
|
Mark P
2017/03/06 05:23:26
pref inline
Mark P
2017/03/07 21:10:18
The behavior is not what I'd expect an UpdatePopup
Peter Kasting
2017/03/08 10:57:31
Done.
|
| + void SetEmphasis(bool emphasize, const gfx::Range& range) override; |
| + void UpdateSchemeStyle(const gfx::Range& range) override; |
| // Simplistic test override returns whether a given string looks like a URL |
| // without having to mock AutocompleteClassifier objects and their |
| @@ -106,12 +79,62 @@ class TestingOmniboxViewViews : public OmniboxViewViews { |
| DISALLOW_COPY_AND_ASSIGN(TestingOmniboxViewViews); |
| }; |
| +TestingOmniboxViewViews::TestingOmniboxViewViews( |
| + OmniboxEditController* controller, |
| + Profile* profile, |
| + CommandUpdater* command_updater) |
| + : OmniboxViewViews(controller, |
| + profile, |
| + command_updater, |
| + false, |
| + nullptr, |
| + gfx::FontList()), |
| + update_popup_call_count_(0), |
| + profile_(profile), |
| + base_text_is_emphasized_(false) {} |
| + |
| +void TestingOmniboxViewViews::CheckUpdatePopupCallInfo( |
| + size_t call_count, |
| + const base::string16& text, |
| + const gfx::Range& selection_range) { |
| + EXPECT_EQ(call_count, update_popup_call_count_); |
| + EXPECT_EQ(text, update_popup_text_); |
| + EXPECT_EQ(selection_range, update_popup_selection_range_); |
| +} |
| + |
| +void TestingOmniboxViewViews::EmphasizeURLComponents() { |
| + UpdateTextStyle(text(), ChromeAutocompleteSchemeClassifier(profile_)); |
| +} |
| + |
| +void TestingOmniboxViewViews::UpdatePopup() { |
| + ++update_popup_call_count_; |
| + update_popup_text_ = text(); |
| + update_popup_selection_range_ = GetSelectedRange(); |
| +} |
| + |
| +void TestingOmniboxViewViews::SetEmphasis(bool emphasize, |
| + const gfx::Range& range) { |
| + if (range == gfx::Range::InvalidRange()) { |
| + base_text_is_emphasized_ = emphasize; |
| + return; |
| + } |
| + |
| + EXPECT_TRUE(emphasize); |
| + emphasis_range_ = range; |
| +} |
| + |
| +void TestingOmniboxViewViews::UpdateSchemeStyle(const gfx::Range& range) { |
| + scheme_range_ = range; |
| +} |
| + |
| +// TestingOmniboxEditController ----------------------------------------------- |
| + |
| class TestingOmniboxEditController : public ChromeOmniboxEditController { |
| public: |
| explicit TestingOmniboxEditController(CommandUpdater* command_updater) |
| : ChromeOmniboxEditController(command_updater) {} |
| - protected: |
| + private: |
| // ChromeOmniboxEditController: |
| void UpdateWithoutTabRestore() override {} |
| void OnChanged() override {} |
| @@ -119,55 +142,30 @@ class TestingOmniboxEditController : public ChromeOmniboxEditController { |
| const ToolbarModel* GetToolbarModel() const override { return nullptr; } |
| content::WebContents* GetWebContents() override { return nullptr; } |
| - private: |
| DISALLOW_COPY_AND_ASSIGN(TestingOmniboxEditController); |
| }; |
| } // namespace |
| +// OmniboxViewViewsTest ------------------------------------------------------- |
| + |
| class OmniboxViewViewsTest : public testing::Test { |
| public: |
| - OmniboxViewViewsTest() |
| - : command_updater_(NULL), |
| - omnibox_edit_controller_(&command_updater_) { |
| - } |
| - |
| - TestingOmniboxViewViews* omnibox_view() { |
| - return omnibox_view_.get(); |
| - } |
| - |
| - views::Textfield* omnibox_textfield() { |
| - return omnibox_view(); |
| - } |
| + OmniboxViewViewsTest(); |
| + TestingOmniboxViewViews* omnibox_view() { return omnibox_view_.get(); } |
| + views::Textfield* omnibox_textfield() { return omnibox_view(); } |
| ui::TextEditCommand scheduled_text_edit_command() const { |
| return test_api_->scheduled_text_edit_command(); |
| } |
| - void SetAndEmphasizeText(const std::string& new_text) { |
| - omnibox_textfield()->SetText(base::ASCIIToUTF16(new_text)); |
| - omnibox_view()->EmphasizeURLComponents(); |
| - } |
| + // Sets |new_text| as the text in the omnibox. |
|
Mark P
2017/03/06 05:23:26
nit: ... and emphasizes it appropriately.
Peter Kasting
2017/03/06 21:10:44
Done.
|
| + void SetAndEmphasizeText(const std::string& new_text); |
| private: |
| // testing::Test: |
| - void SetUp() override { |
| -#if defined(OS_CHROMEOS) |
| - chromeos::input_method::InitializeForTesting( |
| - new chromeos::input_method::MockInputMethodManagerImpl); |
| -#endif |
| - omnibox_view_.reset(new TestingOmniboxViewViews( |
| - &omnibox_edit_controller_, &profile_, &command_updater_)); |
| - test_api_.reset(new views::TextfieldTestApi(omnibox_view_.get())); |
| - omnibox_view_->Init(); |
| - } |
| - |
| - void TearDown() override { |
| - omnibox_view_.reset(); |
| -#if defined(OS_CHROMEOS) |
| - chromeos::input_method::Shutdown(); |
| -#endif |
| - } |
| + void SetUp() override; |
| + void TearDown() override; |
| content::TestBrowserThreadBundle thread_bundle_; |
| TestingProfile profile_; |
| @@ -179,6 +177,34 @@ class OmniboxViewViewsTest : public testing::Test { |
| DISALLOW_COPY_AND_ASSIGN(OmniboxViewViewsTest); |
| }; |
| +OmniboxViewViewsTest::OmniboxViewViewsTest() |
| + : command_updater_(nullptr), omnibox_edit_controller_(&command_updater_) {} |
| + |
| +void OmniboxViewViewsTest::SetAndEmphasizeText(const std::string& new_text) { |
| + omnibox_view()->SetText(base::ASCIIToUTF16(new_text)); |
| + omnibox_view()->EmphasizeURLComponents(); |
| +} |
| + |
| +void OmniboxViewViewsTest::SetUp() { |
| +#if defined(OS_CHROMEOS) |
| + chromeos::input_method::InitializeForTesting( |
| + new chromeos::input_method::MockInputMethodManagerImpl); |
| +#endif |
| + omnibox_view_ = base::MakeUnique<TestingOmniboxViewViews>( |
| + &omnibox_edit_controller_, &profile_, &command_updater_); |
| + test_api_ = base::MakeUnique<views::TextfieldTestApi>(omnibox_view_.get()); |
| + omnibox_view_->Init(); |
| +} |
| + |
| +void OmniboxViewViewsTest::TearDown() { |
| + omnibox_view_.reset(); |
| +#if defined(OS_CHROMEOS) |
| + chromeos::input_method::Shutdown(); |
| +#endif |
| +} |
| + |
| +// Actual tests --------------------------------------------------------------- |
| + |
| // Checks that a single change of the text in the omnibox invokes |
| // only one call to OmniboxViewViews::UpdatePopup(). |
| TEST_F(OmniboxViewViewsTest, UpdatePopupCall) { |