Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(299)

Side by Side Diff: content/browser/renderer_host/accelerated_plugin_view_mac_unittest.mm

Issue 10037008: Fix window shadows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed sort Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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 #include "content/browser/renderer_host/accelerated_plugin_view_mac.h"
6
7 #include "base/logging.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "testing/platform_test.h"
10 #import "ui/base/cocoa/underlay_opengl_hosting_window.h"
11
12 @interface UnderlayCountingWindow : NSWindow<UnderlayableSurface> {
13 @private
14 int underlayCount_;
15 }
16 @property (readonly, nonatomic) int underlayCount;
17 - (void)underlaySurfaceAdded;
18 - (void)underlaySurfaceRemoved;
19 @end
20
21 @implementation UnderlayCountingWindow
22 @synthesize underlayCount = underlayCount_;
23
24 - (void)underlaySurfaceAdded {
25 DCHECK_GE(underlayCount_, 0);
26 ++underlayCount_;
27 }
28
29 - (void)underlaySurfaceRemoved {
30 --underlayCount_;
31 DCHECK_GE(underlayCount_, 0);
32 }
33 @end
34
35 class AcceleratedPluginViewTest : public PlatformTest {
36 protected:
37 AcceleratedPluginViewTest() {}
38
39 UnderlayCountingWindow* StubUnderlayWindow() {
40 UnderlayCountingWindow* window = [[[UnderlayCountingWindow alloc]
41 initWithContentRect:NSMakeRect(20, 20, 300, 200)
42 styleMask:NSBorderlessWindowMask
43 backing:NSBackingStoreBuffered
44 defer:NO] autorelease];
45 [window orderFront:nil];
46 return window;
47 }
48
49 AcceleratedPluginView* StubAcceleratedPluginView() {
50 // It truns out the rwhv and the plugin handle are not necessary for
51 // this test, and AcceleratedPluginView doesn't crash without them.
52 AcceleratedPluginView* view = [[[AcceleratedPluginView alloc]
53 initWithRenderWidgetHostViewMac:NULL
54 pluginHandle:0] autorelease];
55 return view;
56 }
57
58 private:
59 DISALLOW_COPY_AND_ASSIGN(AcceleratedPluginViewTest);
60 };
61
62 TEST_F(AcceleratedPluginViewTest, Basic) {
63 }
64
65 TEST_F(AcceleratedPluginViewTest, BasicAdding) {
66 AcceleratedPluginView* view = StubAcceleratedPluginView();
67
68 UnderlayCountingWindow* window = StubUnderlayWindow();
69 EXPECT_EQ(0, [window underlayCount]);
70
71 [[window contentView] addSubview:view];
72 EXPECT_EQ(1, [window underlayCount]);
73
74 [view removeFromSuperview];
75 EXPECT_EQ(0, [window underlayCount]);
76 }
77
78 TEST_F(AcceleratedPluginViewTest, MoveBetweenWindows) {
79 AcceleratedPluginView* view = StubAcceleratedPluginView();
80
81 UnderlayCountingWindow* window1 = StubUnderlayWindow();
82 UnderlayCountingWindow* window2 = StubUnderlayWindow();
83 EXPECT_EQ(0, [window1 underlayCount]);
84 EXPECT_EQ(0, [window2 underlayCount]);
85
86 [[window1 contentView] addSubview:view];
87 EXPECT_EQ(1, [window1 underlayCount]);
88 EXPECT_EQ(0, [window2 underlayCount]);
89
90 [[window2 contentView] addSubview:view];
91 EXPECT_EQ(0, [window1 underlayCount]);
92 EXPECT_EQ(1, [window2 underlayCount]);
93 }
94
95 TEST_F(AcceleratedPluginViewTest, HiddenWhenAdding) {
96 AcceleratedPluginView* view = StubAcceleratedPluginView();
97 [view setHidden:YES];
98
99 UnderlayCountingWindow* window = StubUnderlayWindow();
100 EXPECT_EQ(0, [window underlayCount]);
101
102 [[window contentView] addSubview:view];
103 EXPECT_EQ(0, [window underlayCount]);
104
105 [view setHidden:NO];
106 EXPECT_EQ(1, [window underlayCount]);
107
108 [view setHidden:YES];
109 EXPECT_EQ(0, [window underlayCount]);
110
111 [view removeFromSuperview];
112 EXPECT_EQ(0, [window underlayCount]);
113 }
114
115 TEST_F(AcceleratedPluginViewTest, HiddenAfterAdding) {
116 AcceleratedPluginView* view = StubAcceleratedPluginView();
117
118 UnderlayCountingWindow* window = StubUnderlayWindow();
119 EXPECT_EQ(0, [window underlayCount]);
120
121 [[window contentView] addSubview:view];
122 EXPECT_EQ(1, [window underlayCount]);
123
124 [view setHidden:YES];
125 EXPECT_EQ(0, [window underlayCount]);
126
127 [view setHidden:NO];
128 EXPECT_EQ(1, [window underlayCount]);
129
130 [view removeFromSuperview];
131 EXPECT_EQ(0, [window underlayCount]);
132 }
133
134 TEST_F(AcceleratedPluginViewTest, MoveBetweenWindowsWithHiding) {
135 AcceleratedPluginView* view = StubAcceleratedPluginView();
136 [view setHidden:YES];
137
138 UnderlayCountingWindow* window1 = StubUnderlayWindow();
139 UnderlayCountingWindow* window2 = StubUnderlayWindow();
140 EXPECT_EQ(0, [window1 underlayCount]);
141 EXPECT_EQ(0, [window2 underlayCount]);
142
143 [[window1 contentView] addSubview:view];
144 EXPECT_EQ(0, [window1 underlayCount]);
145 EXPECT_EQ(0, [window2 underlayCount]);
146
147 [view setHidden:NO];
148 EXPECT_EQ(1, [window1 underlayCount]);
149 EXPECT_EQ(0, [window2 underlayCount]);
150
151 // Move view while it's visible.
152 [[window2 contentView] addSubview:view];
153 EXPECT_EQ(0, [window1 underlayCount]);
154 EXPECT_EQ(1, [window2 underlayCount]);
155
156 [view setHidden:YES];
157 EXPECT_EQ(0, [window1 underlayCount]);
158 EXPECT_EQ(0, [window2 underlayCount]);
159
160 // Move view while it's hidden.
161 [[window1 contentView] addSubview:view];
162 EXPECT_EQ(0, [window1 underlayCount]);
163 EXPECT_EQ(0, [window2 underlayCount]);
164
165 [view setHidden:NO];
166 EXPECT_EQ(1, [window1 underlayCount]);
167 EXPECT_EQ(0, [window2 underlayCount]);
168 }
169
170 // Regression test for http://crbug.com/81737
171 TEST_F(AcceleratedPluginViewTest, RemoveWithHiddenParent) {
172 AcceleratedPluginView* view = StubAcceleratedPluginView();
173
174 NSView* parent =
175 [[[NSView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)] autorelease];
176 [parent addSubview:view];
177
178 UnderlayCountingWindow* window = StubUnderlayWindow();
179 EXPECT_EQ(0, [window underlayCount]);
180
181 [[window contentView] addSubview:parent];
182 EXPECT_EQ(1, [window underlayCount]);
183
184 [parent setHidden:YES];
185 EXPECT_EQ(0, [window underlayCount]);
186
187 [parent removeFromSuperview];
188 EXPECT_EQ(0, [window underlayCount]);
189 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698