Temporarily re-enabling SizeAfterPrefChange test with traces (this time for Linux...
[chromium-blink-merge.git] / chrome / browser / apps / window_controls_browsertest.cc
blob172aa329d7049bcc07257d4c91cf1e9b50cf5197
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/apps/app_browsertest_util.h"
6 #include "chrome/browser/extensions/extension_test_message_listener.h"
7 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/common/chrome_switches.h"
9 #include "content/public/test/browser_test_utils.h"
10 #include "extensions/browser/process_manager.h"
12 class WindowControlsTest : public extensions::PlatformAppBrowserTest {
13 protected:
14 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
15 extensions::PlatformAppBrowserTest::SetUpCommandLine(command_line);
16 command_line->AppendSwitch(switches::kEnableAppWindowControls);
18 content::WebContents* GetWebContentsForExtensionWindow(
19 const extensions::Extension* extension);
22 content::WebContents* WindowControlsTest::GetWebContentsForExtensionWindow(
23 const extensions::Extension* extension) {
24 extensions::ProcessManager* process_manager =
25 extensions::ExtensionSystem::Get(profile())->process_manager();
27 // Lookup render view host for background page.
28 const extensions::ExtensionHost* extension_host =
29 process_manager->GetBackgroundHostForExtension(extension->id());
30 content::RenderViewHost* background_view_host =
31 extension_host->render_view_host();
33 // Go through all active views, looking for the first window of the extension
34 const extensions::ProcessManager::ViewSet all_views =
35 process_manager->GetAllViews();
36 extensions::ProcessManager::ViewSet::const_iterator it = all_views.begin();
37 for (; it != all_views.end(); ++it) {
38 content::RenderViewHost* host = *it;
40 // Filter out views not part of this extension
41 if (process_manager->GetExtensionForRenderViewHost(host) == extension) {
42 // Filter out the background page view
43 if (host != background_view_host) {
44 content::WebContents* web_contents =
45 content::WebContents::FromRenderViewHost(host);
46 return web_contents;
50 return NULL;
53 IN_PROC_BROWSER_TEST_F(WindowControlsTest, CloseControlWorks) {
54 // Launch app and wait for window to show up
55 ExtensionTestMessageListener window_opened("window-opened", false);
56 const extensions::Extension* extension =
57 LoadAndLaunchPlatformApp("window_controls/buttons");
58 ASSERT_TRUE(window_opened.WaitUntilSatisfied());
60 // Find WebContents of window
61 content::WebContents* web_contents =
62 GetWebContentsForExtensionWindow(extension);
63 ASSERT_TRUE(web_contents != NULL);
65 // Send a left click on the "Close" button and wait for the close action
66 // to happen.
67 ExtensionTestMessageListener window_closed("window-closed", false);
69 // Send mouse click somewhere inside the [x] button
70 const int controlOffset = 25;
71 int x = web_contents->GetContainerBounds().size().width() - controlOffset;
72 int y = controlOffset;
73 content::SimulateMouseClickAt(web_contents,
75 blink::WebMouseEvent::ButtonLeft,
76 gfx::Point(x, y));
78 ASSERT_TRUE(window_closed.WaitUntilSatisfied());