diff options
author | komatsu@chromium.org <komatsu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-11 11:29:27 +0000 |
---|---|---|
committer | komatsu@chromium.org <komatsu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-11 11:29:27 +0000 |
commit | 7e5437c329a3e701aca48870578bfa543a4877db (patch) | |
tree | 2a950151115957c4f1a1ad8b7a4e902c49fc04ac /chrome/browser/chromeos/input_method/mode_indicator_browsertest.cc | |
parent | 9d765e42801be3bce8769e5bf80c09413f49f8ff (diff) | |
download | chromium_src-7e5437c329a3e701aca48870578bfa543a4877db.zip chromium_src-7e5437c329a3e701aca48870578bfa543a4877db.tar.gz chromium_src-7e5437c329a3e701aca48870578bfa543a4877db.tar.bz2 |
Add NumOfWidgets test.
Add a browser test checking the current mode indicator is closed
when a new mode indicator is displayed.
BUG=246354
Review URL: https://codereview.chromium.org/109623003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240078 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/input_method/mode_indicator_browsertest.cc')
-rw-r--r-- | chrome/browser/chromeos/input_method/mode_indicator_browsertest.cc | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/chrome/browser/chromeos/input_method/mode_indicator_browsertest.cc b/chrome/browser/chromeos/input_method/mode_indicator_browsertest.cc index 749ec1e..e747c2c 100644 --- a/chrome/browser/chromeos/input_method/mode_indicator_browsertest.cc +++ b/chrome/browser/chromeos/input_method/mode_indicator_browsertest.cc @@ -23,7 +23,8 @@ namespace input_method { class ScopedModeIndicatorObserverForTesting : public ModeIndicatorObserverInterface { public: - ScopedModeIndicatorObserverForTesting() { + ScopedModeIndicatorObserverForTesting() + : max_widget_list_size_(0) { ModeIndicatorController::SetModeIndicatorObserverForTesting(this); } @@ -42,9 +43,23 @@ class ScopedModeIndicatorObserverForTesting : return is_displayed_; } + const std::vector<views::Widget*>& widget_list() const { + return widget_list_; + } + + size_t widget_list_size() const { + return widget_list_.size(); + } + + size_t max_widget_list_size() const { + return max_widget_list_size_; + } + // ModeIndicatorObserverInterface override: virtual void AddModeIndicatorWidget(views::Widget* widget) OVERRIDE { widget_list_.push_back(widget); + max_widget_list_size_ = + std::max(max_widget_list_size_, widget_list_.size()); widget->AddObserver(this); } @@ -66,6 +81,7 @@ class ScopedModeIndicatorObserverForTesting : private: bool is_displayed_; gfx::Rect last_bounds_; + size_t max_widget_list_size_; std::vector<views::Widget*> widget_list_; }; @@ -166,5 +182,38 @@ IN_PROC_BROWSER_TEST_F(ModeIndicatorBrowserTest, Bounds) { EXPECT_LT(mi3_bounds.bottom(), screen_bounds.bottom()); } } + +IN_PROC_BROWSER_TEST_F(ModeIndicatorBrowserTest, NumOfWidgets) { + InitializeIMF(); + + InputMethodManager* imm = InputMethodManager::Get(); + ASSERT_TRUE(imm); + + // Add keyboard layouts to enable the mode indicator. + imm->EnableLayouts("fr", "xkb:fr::fra"); + ASSERT_LT(1UL, imm->GetNumActiveInputMethods()); + + chromeos::IBusPanelCandidateWindowHandlerInterface* candidate_window = + chromeos::IBusBridge::Get()->GetCandidateWindowHandler(); + candidate_window->FocusStateChanged(true); + + { + ScopedModeIndicatorObserverForTesting observer; + + EXPECT_TRUE(imm->SwitchToNextInputMethod()); + EXPECT_EQ(1UL, observer.max_widget_list_size()); + const views::Widget* widget1 = observer.widget_list()[0]; + + EXPECT_TRUE(imm->SwitchToNextInputMethod()); + EXPECT_EQ(2UL, observer.max_widget_list_size()); + + // When a new mode indicator is displayed, the previous one should be + // closed. + content::RunAllPendingInMessageLoop(); + EXPECT_EQ(1UL, observer.widget_list_size()); + const views::Widget* widget2 = observer.widget_list()[0]; + EXPECT_NE(widget1, widget2); + } +} } // namespace input_method } // namespace chromeos |