diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-29 22:12:06 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-29 22:12:06 +0000 |
commit | 73a779cfefefd4a26cf401020434dbe9884c20b8 (patch) | |
tree | 686f7f18c78e718315c8c2432a99209312dc2fab /chrome | |
parent | bdb3992a2b76b27ad08293013ccfa0ca755770ba (diff) | |
download | chromium_src-73a779cfefefd4a26cf401020434dbe9884c20b8.zip chromium_src-73a779cfefefd4a26cf401020434dbe9884c20b8.tar.gz chromium_src-73a779cfefefd4a26cf401020434dbe9884c20b8.tar.bz2 |
Created test for panels
Review URL: http://codereview.chromium.org/1543001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43003 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/chromeos/panels/panel_browsertest.cc | 96 | ||||
-rw-r--r-- | chrome/browser/chromeos/wm_ipc.cc | 12 | ||||
-rw-r--r-- | chrome/browser/chromeos/wm_ipc.h | 11 | ||||
-rw-r--r-- | chrome/chrome_tests.gypi | 1 |
4 files changed, 116 insertions, 4 deletions
diff --git a/chrome/browser/chromeos/panels/panel_browsertest.cc b/chrome/browser/chromeos/panels/panel_browsertest.cc new file mode 100644 index 0000000..6126a45e4 --- /dev/null +++ b/chrome/browser/chromeos/panels/panel_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 "base/command_line.h" +#include "chrome/browser/browser.h" +#include "chrome/browser/browser_list.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/browser_window.h" +#include "chrome/browser/chromeos/wm_ipc.h" +#include "chrome/browser/renderer_host/render_view_host.h" +#include "chrome/browser/tab_contents/tab_contents.h" +#include "chrome/common/chrome_switches.h" +#include "chrome/test/in_process_browser_test.h" +#include "chrome/test/ui_test_utils.h" + +namespace chromeos { + +class PanelTest : public InProcessBrowserTest { + public: + PanelTest() { + EnableDOMAutomation(); + } + + protected: + virtual void SetUpCommandLine(CommandLine* command_line) { + command_line->AppendSwitch(switches::kDisablePopupBlocking); + } + +}; + +// Small popups should open as a panel. +IN_PROC_BROWSER_TEST_F(PanelTest, PanelOpenSmall) { + const std::string HTML = + "<html><head><title>PanelOpen</title></head>" + "<body onload='window.setTimeout(run_tests, 0)'>" + "<script>" + " function run_tests() {" + " window.open(null, null, 'width=100,height=100');" + " }" + "</script>" + "</body></html>"; + GURL url("data:text/html," + HTML); + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kDisablePopupBlocking); + ui_test_utils::NavigateToURL(browser(), url); + + // Find the new browser. + Browser* new_browser = NULL; + for (BrowserList::const_iterator i = BrowserList::begin(); + i != BrowserList::end() && !new_browser; ++i) { + if (*i != browser()) + new_browser = *i; + } + + ASSERT_TRUE(new_browser); + EXPECT_EQ(Browser::TYPE_POPUP, new_browser->type()); + // This window type tells the cros window manager to treat the window + // as a panel. + EXPECT_EQ( + WmIpc::WINDOW_TYPE_CHROME_PANEL_CONTENT, + WmIpc::instance()->GetWindowType( + GTK_WIDGET(new_browser->window()->GetNativeHandle()))); +} + +// Large popups should open as new tab. +IN_PROC_BROWSER_TEST_F(PanelTest, PanelOpenLarge) { + const std::string HTML = + "<html><head><title>PanelOpen</title></head>" + "<body onload='window.setTimeout(run_tests, 0)'>" + "<script>" + " function run_tests() {" + " window.open(null, null, 'width=1000,height=1000');" + " }" + "</script>" + "</body></html>"; + GURL url("data:text/html," + HTML); + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kDisablePopupBlocking); + int old_tab_count = browser()->tab_count(); + ui_test_utils::NavigateToURL(browser(), url); + + // Shouldn't find a new browser. + Browser* new_browser = NULL; + for (BrowserList::const_iterator i = BrowserList::begin(); + i != BrowserList::end() && !new_browser; ++i) { + if (*i != browser()) + new_browser = *i; + } + EXPECT_FALSE(new_browser); + + // Should find a new tab. + EXPECT_EQ(old_tab_count + 1, browser()->tab_count()); +} + +} // namespace chromeos diff --git a/chrome/browser/chromeos/wm_ipc.cc b/chrome/browser/chromeos/wm_ipc.cc index 7702bfc..da1ed06 100644 --- a/chrome/browser/chromeos/wm_ipc.cc +++ b/chrome/browser/chromeos/wm_ipc.cc @@ -84,6 +84,18 @@ bool WmIpc::SetWindowType(GtkWidget* widget, type_to_atom_[ATOM_CHROME_WINDOW_TYPE], values); } +WmIpc::WindowType WmIpc::GetWindowType(GtkWidget* widget) { + int type; + if (x11_util::GetIntProperty( + x11_util::GetX11WindowFromGtkWidget(widget), + atom_to_string_[type_to_atom_[ATOM_CHROME_WINDOW_TYPE]], + &type)) { + return static_cast<WindowType>(type); + } else { + return WINDOW_TYPE_UNKNOWN; + } +} + void WmIpc::SendMessage(const Message& msg) { XEvent e; e.xclient.type = ClientMessage; diff --git a/chrome/browser/chromeos/wm_ipc.h b/chrome/browser/chromeos/wm_ipc.h index 5a8b826..2d35c0b 100644 --- a/chrome/browser/chromeos/wm_ipc.h +++ b/chrome/browser/chromeos/wm_ipc.h @@ -287,15 +287,18 @@ class WmIpc { // Returns the single instance of WmIpc. static WmIpc* instance(); - // Get or set a property describing a window's type. Type-specific - // parameters may also be supplied ('params' is mandatory for - // GetWindowType() but optional for SetWindowType()). The caller is - // responsible for trapping errors from the X server. + // Get or set a property describing a window's type. Type-specific + // parameters may also be supplied. The caller is responsible for trapping + // errors from the X server. // TODO: Trap these ourselves. bool SetWindowType(GtkWidget* widget, WindowType type, const std::vector<int>* params); + // Gets the type of the window. The caller is responsible for trapping + // errors from the X server. + WmIpc::WindowType GetWindowType(GtkWidget* widget); + // Sends a message to the WM. void SendMessage(const Message& msg); diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index b9c1da6..28dbacb 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -1337,6 +1337,7 @@ 'browser/chromeos/login/network_screen_browsertest.cc', 'browser/chromeos/login/wizard_controller_browsertest.cc', 'browser/chromeos/notifications/notification_browsertest.cc', + 'browser/chromeos/panels/panel_browsertest.cc', 'browser/chromeos/status/clock_menu_button_browsertest.cc', 'browser/chromeos/status/power_menu_button_browsertest.cc', 'browser/chromeos/usb_mount_observer_browsertest.cc', |