diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-28 16:10:37 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-28 16:10:37 +0000 |
commit | f3728bd46cc5b3d31c380b0349c67e1ed35f9817 (patch) | |
tree | 5d02ec80e88b975aac677291816e100b09d94134 /chrome/browser/chromeos | |
parent | e42ae9bd340824c45f0b2ec4d148036cc634372b (diff) | |
download | chromium_src-f3728bd46cc5b3d31c380b0349c67e1ed35f9817.zip chromium_src-f3728bd46cc5b3d31c380b0349c67e1ed35f9817.tar.gz chromium_src-f3728bd46cc5b3d31c380b0349c67e1ed35f9817.tar.bz2 |
Added two browser tests for CompactLocationBarHost.
Changed to use ui_controls::SendKeyPress instead of its own.
BUG=http://crosbug.com/2028
TEST=two new browser tests for CompactLocationBarHost.
Review URL: http://codereview.chromium.org/1463002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42920 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
4 files changed, 114 insertions, 79 deletions
diff --git a/chrome/browser/chromeos/compact_location_bar_host.h b/chrome/browser/chromeos/compact_location_bar_host.h index cf81115..e6816fc 100644 --- a/chrome/browser/chromeos/compact_location_bar_host.h +++ b/chrome/browser/chromeos/compact_location_bar_host.h @@ -92,6 +92,7 @@ class CompactLocationBarHost : public DropdownBarHost, private: friend class MouseObserver; + friend class CompactLocationBarHostTest; void HideCallback() { Hide(true); diff --git a/chrome/browser/chromeos/compact_location_bar_host_browsertest.cc b/chrome/browser/chromeos/compact_location_bar_host_browsertest.cc new file mode 100644 index 0000000..dae950d --- /dev/null +++ b/chrome/browser/chromeos/compact_location_bar_host_browsertest.cc @@ -0,0 +1,96 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/automation/ui_controls.h" +#include "chrome/browser/browser.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/chromeos/compact_location_bar_host.h" +#include "chrome/browser/chromeos/frame/browser_view.h" +#include "chrome/browser/chromeos/view_ids.h" +#include "chrome/test/in_process_browser_test.h" +#include "chrome/test/ui_test_utils.h" +#include "views/widget/widget.h" +#include "views/window/window.h" + +namespace chromeos { + +class CompactLocationBarHostTest : public InProcessBrowserTest { + public: + CompactLocationBarHostTest() { + } + + virtual void SetUp() { + // Don't animate during the test. + DropdownBarHost::disable_animations_during_testing_ = true; + InProcessBrowserTest::SetUp(); + } + + BrowserView* browser_view() const { + return static_cast<BrowserView*>(browser()->window()); + } + + gfx::NativeWindow window() const { + return browser_view()->GetNativeHandle(); + } + + CompactLocationBarHost* clb_host() const { + return browser_view()->compact_location_bar_host(); + } + + bool IsViewIdVisible(int id) const { + return browser_view()->GetViewByID(id)->IsVisible(); + } + + bool IsCurrentTabIndex(int index) { + return clb_host()->IsCurrentTabIndex(index); + } + + private: + DISALLOW_COPY_AND_ASSIGN(CompactLocationBarHostTest); +}; + +IN_PROC_BROWSER_TEST_F(CompactLocationBarHostTest, TestCtrlLOpen) { + // ctrl-l should not open compact location bar in normal mode. + ui_controls::SendKeyPress(window(), base::VKEY_L, true, false, false); + RunAllPendingEvents(); + EXPECT_TRUE(IsCurrentTabIndex(-1)); + EXPECT_FALSE(clb_host()->IsVisible()); + + browser()->ToggleCompactNavigationBar(); + RunAllPendingEvents(); + EXPECT_TRUE(IsCurrentTabIndex(-1)); + EXPECT_FALSE(clb_host()->IsVisible()); + + // ctrl-l should not open compact location bar in compact nav mode. + ui_controls::SendKeyPress(window(), base::VKEY_L, true, false, false); + RunAllPendingEvents(); + EXPECT_TRUE(IsCurrentTabIndex(0)); + EXPECT_TRUE(clb_host()->IsVisible()); + + // Esc to close it. + ui_controls::SendKeyPress(window(), base::VKEY_ESCAPE, false, false, false); + RunAllPendingEvents(); + EXPECT_TRUE(IsCurrentTabIndex(0)); + EXPECT_FALSE(clb_host()->IsVisible()); +} + +IN_PROC_BROWSER_TEST_F(CompactLocationBarHostTest, TestOnNewTab) { + browser()->ToggleCompactNavigationBar(); + ui_controls::SendKeyPress(window(), base::VKEY_L, true, false, false); + RunAllPendingEvents(); + EXPECT_TRUE(IsCurrentTabIndex(0)); + EXPECT_TRUE(clb_host()->IsVisible()); + + browser()->NewTab(); + RunAllPendingEvents(); + EXPECT_FALSE(clb_host()->IsVisible()); + + ui_controls::SendKeyPress(window(), base::VKEY_L, true, false, false); + RunAllPendingEvents(); + EXPECT_TRUE(IsCurrentTabIndex(1)); + EXPECT_TRUE(clb_host()->IsVisible()); +} + +} // namespace chromeos + diff --git a/chrome/browser/chromeos/compact_navigation_bar_browsertest.cc b/chrome/browser/chromeos/compact_navigation_bar_browsertest.cc index fdc6fbb..de4e9b4 100644 --- a/chrome/browser/chromeos/compact_navigation_bar_browsertest.cc +++ b/chrome/browser/chromeos/compact_navigation_bar_browsertest.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "chrome/browser/automation/ui_controls.h" #include "chrome/browser/browser.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chromeos/frame/browser_view.h" @@ -11,67 +12,6 @@ #include "views/widget/widget.h" #include "views/window/window.h" -namespace { - -// TODO(oshima): Refactor and move to common place (probably in chrome/test/). -class Key { - public: - // Creates a key with modifiers. - Key(int keyval, bool shift, bool ctrl, bool alt) - : keyval_(keyval), - modifier_(0) { - if (shift) - modifier_ |= GDK_SHIFT_MASK; - if (ctrl) - modifier_ |= GDK_CONTROL_MASK; - if (alt) - modifier_ |= GDK_MOD1_MASK; - } - - void PressOn(views::Window* window) const { - Process(window, true); - } - - void ReleaseOn(views::Window* window) const { - Process(window, false); - } - - private: - // Injects a synthesized key event into gdk event queue. - void Process(views::Window* window, bool press) const { - GdkKeymapKey* keys; - gint n_keys; - gdk_keymap_get_entries_for_keyval( - gdk_keymap_get_default(), - keyval_, - &keys, - &n_keys); - - gfx::NativeWindow native_window = window->GetNativeWindow(); - GdkEvent* event = gdk_event_new(press ? GDK_KEY_PRESS : GDK_KEY_RELEASE); - GdkEventKey* key_event = reinterpret_cast<GdkEventKey*>(event); - if (press) - key_event->state = modifier_ | GDK_KEY_PRESS_MASK; - else - key_event->state = modifier_ | GDK_KEY_RELEASE_MASK; - - key_event->window = GTK_WIDGET(native_window)->window; - key_event->send_event = true; - key_event->time = GDK_CURRENT_TIME; - key_event->keyval = keyval_; - key_event->hardware_keycode = keys[0].keycode; - key_event->group = keys[0].group; - - gdk_event_put(event); - } - - int keyval_; - int modifier_; - DISALLOW_COPY_AND_ASSIGN(Key); -}; - -} // namespace - namespace chromeos { class CompactNavigationBarTest : public InProcessBrowserTest { @@ -87,13 +27,8 @@ class CompactNavigationBarTest : public InProcessBrowserTest { return browser_view()->GetViewByID(id)->IsVisible(); } - void KeyDown(const Key& key) { - key.PressOn(browser_view()->GetWidget()->GetWindow()); - } - - void KeyUp(const Key& key) { - key.ReleaseOn(browser_view()->GetWidget()->GetWindow()); - } + private: + DISALLOW_COPY_AND_ASSIGN(CompactNavigationBarTest); }; IN_PROC_BROWSER_TEST_F(CompactNavigationBarTest, TestBasic) { @@ -112,24 +47,21 @@ IN_PROC_BROWSER_TEST_F(CompactNavigationBarTest, TestBasic) { IN_PROC_BROWSER_TEST_F(CompactNavigationBarTest, TestAccelerator) { EXPECT_FALSE(IsViewIdVisible(VIEW_ID_COMPACT_NAV_BAR)); + gfx::NativeWindow window = browser()->window()->GetNativeHandle(); + // ctrl-shift-c should toggle compact navigation bar. - Key ctrl_shift_c(base::VKEY_C, true, true, false); - KeyDown(ctrl_shift_c); - KeyUp(ctrl_shift_c); + ui_controls::SendKeyPress(window, base::VKEY_C, true, true, false); RunAllPendingEvents(); EXPECT_TRUE(IsViewIdVisible(VIEW_ID_COMPACT_NAV_BAR)); - KeyDown(ctrl_shift_c); - KeyUp(ctrl_shift_c); + + ui_controls::SendKeyPress(window, base::VKEY_C, true, true, false); RunAllPendingEvents(); EXPECT_FALSE(IsViewIdVisible(VIEW_ID_COMPACT_NAV_BAR)); // but ctrl-alt-c should not. - Key ctrl_alt_c(base::VKEY_C, true, false, true); - KeyDown(ctrl_alt_c); - KeyUp(ctrl_alt_c); + ui_controls::SendKeyPress(window, base::VKEY_C, true, false, true); RunAllPendingEvents(); EXPECT_FALSE(IsViewIdVisible(VIEW_ID_COMPACT_NAV_BAR)); } } // namespace chromeos - diff --git a/chrome/browser/chromeos/frame/browser_view.h b/chrome/browser/chromeos/frame/browser_view.h index 7f38d95..38fceae 100644 --- a/chrome/browser/chromeos/frame/browser_view.h +++ b/chrome/browser/chromeos/frame/browser_view.h @@ -93,6 +93,12 @@ class BrowserView : public ::BrowserView, } private: + friend class CompactLocationBarHostTest; + + CompactLocationBarHost* compact_location_bar_host() { + return compact_location_bar_host_.get(); + } + void InitSystemMenu(); // AppLauncher button. @@ -106,13 +112,13 @@ class BrowserView : public ::BrowserView, scoped_ptr<views::Menu2> system_menu_menu_; // CompactNavigationBar view. - chromeos::CompactNavigationBar* compact_navigation_bar_; + CompactNavigationBar* compact_navigation_bar_; // The current UI style of the browser. UIStyle ui_style_; // CompactLocationBarHost. - scoped_ptr<chromeos::CompactLocationBarHost> compact_location_bar_host_; + scoped_ptr<CompactLocationBarHost> compact_location_bar_host_; // A flag to specify if the browser window should be maximized. bool force_maximized_window_; |