summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-29 22:12:06 +0000
committerdavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-29 22:12:06 +0000
commit73a779cfefefd4a26cf401020434dbe9884c20b8 (patch)
tree686f7f18c78e718315c8c2432a99209312dc2fab /chrome
parentbdb3992a2b76b27ad08293013ccfa0ca755770ba (diff)
downloadchromium_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.cc96
-rw-r--r--chrome/browser/chromeos/wm_ipc.cc12
-rw-r--r--chrome/browser/chromeos/wm_ipc.h11
-rw-r--r--chrome/chrome_tests.gypi1
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',