OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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. | |
4 | |
5 #import "chrome/browser/ui/cocoa/tabpose_window.h" | |
6 | |
7 #include "base/mac/mac_util.h" | |
8 #include "chrome/browser/ui/browser_window.h" | |
9 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" | |
10 #include "chrome/browser/ui/tabs/tab_strip_model.h" | |
11 #include "chrome/test/base/testing_profile.h" | |
12 #include "content/public/browser/site_instance.h" | |
13 #include "content/public/browser/web_contents.h" | |
14 #include "testing/gtest/include/gtest/gtest.h" | |
15 | |
16 using content::SiteInstance; | |
17 | |
18 class TabposeWindowTest : public CocoaProfileTest { | |
19 public: | |
20 virtual void SetUp() { | |
21 CocoaProfileTest::SetUp(); | |
22 ASSERT_TRUE(profile()); | |
23 | |
24 site_instance_ = SiteInstance::Create(profile()); | |
25 } | |
26 | |
27 void AppendTabToStrip() { | |
28 content::WebContents* web_contents = content::WebContents::Create( | |
29 content::WebContents::CreateParams(profile(), site_instance_.get())); | |
30 browser()->tab_strip_model()->AppendWebContents( | |
31 web_contents, /*foreground=*/true); | |
32 } | |
33 | |
34 scoped_refptr<SiteInstance> site_instance_; | |
35 }; | |
36 | |
37 TEST_F(TabposeWindowTest, TestShow) { | |
38 // Skip this test on 10.7 | |
39 // http://code.google.com/p/chromium/issues/detail?id=127845 | |
40 if (base::mac::IsOSLionOrLater()) { | |
41 return; | |
42 } | |
43 | |
44 NSWindow* parent = browser()->window()->GetNativeWindow(); | |
45 | |
46 [parent orderFront:nil]; | |
47 EXPECT_TRUE([parent isVisible]); | |
48 | |
49 // Add a few tabs to the tab strip model. | |
50 for (int i = 0; i < 3; ++i) | |
51 AppendTabToStrip(); | |
52 | |
53 base::mac::ScopedNSAutoreleasePool pool; | |
54 TabposeWindow* window = | |
55 [TabposeWindow openTabposeFor:parent | |
56 rect:NSMakeRect(10, 20, 250, 160) | |
57 slomo:NO | |
58 tabStripModel:browser()->tab_strip_model()]; | |
59 | |
60 // Should release the window. | |
61 [window mouseDown:nil]; | |
62 } | |
63 | |
64 TEST_F(TabposeWindowTest, TestModelObserver) { | |
65 // Skip this test on 10.7 | |
66 // http://code.google.com/p/chromium/issues/detail?id=127845 | |
67 if (base::mac::IsOSLionOrLater()) { | |
68 return; | |
69 } | |
70 | |
71 NSWindow* parent = browser()->window()->GetNativeWindow(); | |
72 [parent orderFront:nil]; | |
73 | |
74 // Add a few tabs to the tab strip model. | |
75 for (int i = 0; i < 3; ++i) | |
76 AppendTabToStrip(); | |
77 | |
78 base::mac::ScopedNSAutoreleasePool pool; | |
79 TabposeWindow* window = | |
80 [TabposeWindow openTabposeFor:parent | |
81 rect:NSMakeRect(10, 20, 250, 160) | |
82 slomo:NO | |
83 tabStripModel:browser()->tab_strip_model()]; | |
84 | |
85 // Exercise all the model change events. | |
86 TabStripModel* model = browser()->tab_strip_model(); | |
87 DCHECK_EQ([window thumbnailLayerCount], 3u); | |
88 DCHECK_EQ([window selectedIndex], 2); | |
89 | |
90 model->MoveWebContentsAt(0, 2, /*select_after_move=*/false); | |
91 DCHECK_EQ([window thumbnailLayerCount], 3u); | |
92 DCHECK_EQ([window selectedIndex], 1); | |
93 | |
94 model->MoveWebContentsAt(2, 0, /*select_after_move=*/false); | |
95 DCHECK_EQ([window thumbnailLayerCount], 3u); | |
96 DCHECK_EQ([window selectedIndex], 2); | |
97 | |
98 [window selectTileAtIndexWithoutAnimation:0]; | |
99 DCHECK_EQ([window selectedIndex], 0); | |
100 | |
101 model->MoveWebContentsAt(0, 2, /*select_after_move=*/false); | |
102 DCHECK_EQ([window selectedIndex], 2); | |
103 | |
104 model->MoveWebContentsAt(2, 0, /*select_after_move=*/false); | |
105 DCHECK_EQ([window selectedIndex], 0); | |
106 | |
107 delete model->DetachWebContentsAt(0); | |
108 DCHECK_EQ([window thumbnailLayerCount], 2u); | |
109 DCHECK_EQ([window selectedIndex], 0); | |
110 | |
111 AppendTabToStrip(); | |
112 DCHECK_EQ([window thumbnailLayerCount], 3u); | |
113 DCHECK_EQ([window selectedIndex], 0); | |
114 | |
115 model->CloseWebContentsAt(0, TabStripModel::CLOSE_NONE); | |
116 DCHECK_EQ([window thumbnailLayerCount], 2u); | |
117 DCHECK_EQ([window selectedIndex], 0); | |
118 | |
119 [window selectTileAtIndexWithoutAnimation:1]; | |
120 model->CloseWebContentsAt(0, TabStripModel::CLOSE_NONE); | |
121 DCHECK_EQ([window thumbnailLayerCount], 1u); | |
122 DCHECK_EQ([window selectedIndex], 0); | |
123 | |
124 // Should release the window. | |
125 [window mouseDown:nil]; | |
126 } | |
OLD | NEW |