summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/input_method/mode_indicator_browsertest.cc
diff options
context:
space:
mode:
authorkomatsu@chromium.org <komatsu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-11 11:29:27 +0000
committerkomatsu@chromium.org <komatsu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-11 11:29:27 +0000
commit7e5437c329a3e701aca48870578bfa543a4877db (patch)
tree2a950151115957c4f1a1ad8b7a4e902c49fc04ac /chrome/browser/chromeos/input_method/mode_indicator_browsertest.cc
parent9d765e42801be3bce8769e5bf80c09413f49f8ff (diff)
downloadchromium_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.cc51
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