OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "chrome/browser/ui/cocoa/dev_tools_controller.h" | 5 #import "chrome/browser/ui/cocoa/dev_tools_controller.h" |
6 | 6 |
7 #include "chrome/browser/devtools/devtools_window.h" | 7 #include "chrome/browser/devtools/devtools_window.h" |
8 #include "chrome/browser/ui/browser.h" | 8 #include "chrome/browser/ui/browser.h" |
9 #include "chrome/browser/ui/browser_list.h" | 9 #include "chrome/browser/ui/browser_list.h" |
10 #include "chrome/browser/ui/browser_window.h" | 10 #include "chrome/browser/ui/browser_window.h" |
11 #include "chrome/browser/ui/cocoa/browser_window_controller.h" | 11 #include "chrome/browser/ui/cocoa/browser_window_controller.h" |
12 #include "chrome/browser/ui/find_bar/find_bar.h" | 12 #include "chrome/browser/ui/find_bar/find_bar.h" |
13 #include "chrome/browser/ui/find_bar/find_bar_controller.h" | 13 #include "chrome/browser/ui/find_bar/find_bar_controller.h" |
14 #include "chrome/common/url_constants.h" | 14 #include "chrome/common/url_constants.h" |
15 #include "chrome/test/base/in_process_browser_test.h" | 15 #include "chrome/test/base/in_process_browser_test.h" |
| 16 #include "content/public/browser/notification_types.h" |
16 #include "content/public/browser/web_contents.h" | 17 #include "content/public/browser/web_contents.h" |
| 18 #include "content/public/test/test_utils.h" |
17 | 19 |
18 class DevToolsControllerTest : public InProcessBrowserTest { | 20 class DevToolsControllerTest : public InProcessBrowserTest { |
19 public: | 21 public: |
20 DevToolsControllerTest() : InProcessBrowserTest() { | 22 DevToolsControllerTest() : InProcessBrowserTest(), devtools_window_(NULL) {} |
| 23 |
| 24 protected: |
| 25 void OpenDevToolsWindow() { |
| 26 devtools_window_ = |
| 27 DevToolsWindow::OpenDevToolsWindowForTest(browser(), true); |
21 } | 28 } |
22 | 29 |
23 virtual void SetUpOnMainThread() OVERRIDE { | 30 void CloseDevToolsWindow() { |
24 DevToolsWindow::OpenDevToolsWindowForTest(browser(), true); | 31 content::WindowedNotificationObserver close_observer( |
| 32 content::NOTIFICATION_WEB_CONTENTS_DESTROYED, |
| 33 content::Source<content::WebContents>( |
| 34 devtools_window_->web_contents_for_test())); |
| 35 DevToolsWindow::ToggleDevToolsWindow( |
| 36 browser(), DevToolsToggleAction::Toggle()); |
| 37 close_observer.Wait(); |
25 } | 38 } |
26 | 39 |
| 40 content::WebContents* web_contents() { |
| 41 return browser()->tab_strip_model()->GetActiveWebContents(); |
| 42 } |
| 43 |
| 44 content::WebContents* devtools_web_contents() { |
| 45 return DevToolsWindow::GetInTabWebContents(web_contents(), NULL); |
| 46 } |
| 47 |
| 48 DevToolsWindow* devtools_window_; |
| 49 |
27 private: | 50 private: |
28 DISALLOW_COPY_AND_ASSIGN(DevToolsControllerTest); | 51 DISALLOW_COPY_AND_ASSIGN(DevToolsControllerTest); |
29 }; | 52 }; |
30 | 53 |
31 // Verify that AllowOverlappingViews is set while the find bar is visible. | 54 // Verify that AllowOverlappingViews is set while the find bar is visible. |
32 IN_PROC_BROWSER_TEST_F(DevToolsControllerTest, AllowOverlappingViews) { | 55 IN_PROC_BROWSER_TEST_F(DevToolsControllerTest, AllowOverlappingViews) { |
33 content::WebContents* web_contents = | 56 OpenDevToolsWindow(); |
34 browser()->tab_strip_model()->GetActiveWebContents(); | |
35 content::WebContents* dev_tools = | |
36 DevToolsWindow::GetInTabWebContents(web_contents, NULL); | |
37 | 57 |
38 // Without the find bar. | 58 // Without the find bar. |
39 EXPECT_TRUE(dev_tools->GetAllowOverlappingViews()); | 59 EXPECT_TRUE(devtools_web_contents()->GetAllowOverlappingViews()); |
40 | 60 |
41 // With the find bar. | 61 // With the find bar. |
42 browser()->GetFindBarController()->find_bar()->Show(false); | 62 browser()->GetFindBarController()->find_bar()->Show(false); |
43 EXPECT_TRUE(dev_tools->GetAllowOverlappingViews()); | 63 EXPECT_TRUE(devtools_web_contents()->GetAllowOverlappingViews()); |
44 | 64 |
45 // Without the find bar. | 65 // Without the find bar. |
46 browser()->GetFindBarController()->find_bar()->Hide(false); | 66 browser()->GetFindBarController()->find_bar()->Hide(false); |
47 EXPECT_TRUE(dev_tools->GetAllowOverlappingViews()); | 67 EXPECT_TRUE(devtools_web_contents()->GetAllowOverlappingViews()); |
48 } | 68 } |
| 69 |
| 70 // Verify that AllowOtherViews is set when and only when DevTools is visible. |
| 71 IN_PROC_BROWSER_TEST_F(DevToolsControllerTest, AllowOtherViews) { |
| 72 EXPECT_FALSE(web_contents()->GetAllowOtherViews()); |
| 73 |
| 74 OpenDevToolsWindow(); |
| 75 EXPECT_TRUE(devtools_web_contents()->GetAllowOtherViews()); |
| 76 EXPECT_TRUE(web_contents()->GetAllowOtherViews()); |
| 77 |
| 78 CloseDevToolsWindow(); |
| 79 EXPECT_FALSE(web_contents()->GetAllowOtherViews()); |
| 80 } |
OLD | NEW |