summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-28 16:10:37 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-28 16:10:37 +0000
commitf3728bd46cc5b3d31c380b0349c67e1ed35f9817 (patch)
tree5d02ec80e88b975aac677291816e100b09d94134 /chrome/browser/chromeos
parente42ae9bd340824c45f0b2ec4d148036cc634372b (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/chromeos/compact_location_bar_host.h1
-rw-r--r--chrome/browser/chromeos/compact_location_bar_host_browsertest.cc96
-rw-r--r--chrome/browser/chromeos/compact_navigation_bar_browsertest.cc86
-rw-r--r--chrome/browser/chromeos/frame/browser_view.h10
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_;