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

Side by Side Diff: ui/snapshot/snapshot_aura_unittest.cc

Issue 127103002: Make WindowReachedScreen support async readback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Mac /o\ Created 6 years, 11 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
« no previous file with comments | « ui/snapshot/snapshot_aura.cc ('k') | ui/snapshot/snapshot_gtk.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 #include "ui/snapshot/snapshot.h" 5 #include "ui/snapshot/snapshot.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/test/test_simple_task_runner.h" 8 #include "base/test/test_simple_task_runner.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/aura/root_window.h" 10 #include "ui/aura/root_window.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 size_t result = 0; 53 size_t result = 0;
54 for (int i = 0; i < bitmap->width() * bitmap->height(); ++i) { 54 for (int i = 0; i < bitmap->width() * bitmap->height(); ++i) {
55 if (static_cast<SkColor>(bitmap_data[i]) != kPaintColor) 55 if (static_cast<SkColor>(bitmap_data[i]) != kPaintColor)
56 ++result; 56 ++result;
57 } 57 }
58 return result; 58 return result;
59 } 59 }
60 60
61 } // namespace 61 } // namespace
62 62
63 class SnapshotAuraTest : public testing::TestWithParam<bool> { 63 class SnapshotAuraTest : public testing::Test {
64 public: 64 public:
65 SnapshotAuraTest() {} 65 SnapshotAuraTest() {}
66 virtual ~SnapshotAuraTest() {} 66 virtual ~SnapshotAuraTest() {}
67 67
68 virtual void SetUp() OVERRIDE { 68 virtual void SetUp() OVERRIDE {
69 testing::Test::SetUp(); 69 testing::Test::SetUp();
70 helper_.reset( 70 helper_.reset(
71 new aura::test::AuraTestHelper(base::MessageLoopForUI::current())); 71 new aura::test::AuraTestHelper(base::MessageLoopForUI::current()));
72 // Snapshot test tests real drawing and readback, so needs a real context. 72 // Snapshot test tests real drawing and readback, so needs a real context.
73 bool allow_test_contexts = false; 73 bool allow_test_contexts = false;
(...skipping 18 matching lines...) Expand all
92 dispatcher()->host()->compositor()->ScheduleDraw(); 92 dispatcher()->host()->compositor()->ScheduleDraw();
93 ui::DrawWaiterForTest::Wait(dispatcher()->host()->compositor()); 93 ui::DrawWaiterForTest::Wait(dispatcher()->host()->compositor());
94 } 94 }
95 95
96 void SetupTestWindow(const gfx::Rect& window_bounds) { 96 void SetupTestWindow(const gfx::Rect& window_bounds) {
97 delegate_.reset(new TestPaintingWindowDelegate(window_bounds.size())); 97 delegate_.reset(new TestPaintingWindowDelegate(window_bounds.size()));
98 test_window_.reset(aura::test::CreateTestWindowWithDelegate( 98 test_window_.reset(aura::test::CreateTestWindowWithDelegate(
99 delegate_.get(), 0, window_bounds, root_window())); 99 delegate_.get(), 0, window_bounds, root_window()));
100 } 100 }
101 101
102 bool is_async_test() const { return GetParam(); }
103
104 gfx::Image GrabSnapshotForTestWindow() { 102 gfx::Image GrabSnapshotForTestWindow() {
105 gfx::Rect source_rect(test_window_->bounds().size()); 103 gfx::Rect source_rect(test_window_->bounds().size());
106 if (!is_async_test()) {
107 std::vector<unsigned char> png_representation;
108 ui::GrabWindowSnapshot(test_window(), &png_representation, source_rect);
109 return gfx::Image::CreateFrom1xPNGBytes(&(png_representation[0]),
110 png_representation.size());
111 }
112 104
113 scoped_refptr<base::TestSimpleTaskRunner> task_runner( 105 scoped_refptr<base::TestSimpleTaskRunner> task_runner(
114 new base::TestSimpleTaskRunner()); 106 new base::TestSimpleTaskRunner());
115 scoped_refptr<SnapshotHolder> holder(new SnapshotHolder); 107 scoped_refptr<SnapshotHolder> holder(new SnapshotHolder);
116 ui::GrabWindowSnapshotAsync( 108 ui::GrabWindowSnapshotAsync(
117 test_window(), 109 test_window(),
118 source_rect, 110 source_rect,
119 task_runner, 111 task_runner,
120 base::Bind(&SnapshotHolder::SnapshotCallback, holder)); 112 base::Bind(&SnapshotHolder::SnapshotCallback, holder));
121 113
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 }; 152 };
161 153
162 scoped_ptr<aura::test::AuraTestHelper> helper_; 154 scoped_ptr<aura::test::AuraTestHelper> helper_;
163 scoped_ptr<aura::Window> test_window_; 155 scoped_ptr<aura::Window> test_window_;
164 scoped_ptr<TestPaintingWindowDelegate> delegate_; 156 scoped_ptr<TestPaintingWindowDelegate> delegate_;
165 std::vector<unsigned char> png_representation_; 157 std::vector<unsigned char> png_representation_;
166 158
167 DISALLOW_COPY_AND_ASSIGN(SnapshotAuraTest); 159 DISALLOW_COPY_AND_ASSIGN(SnapshotAuraTest);
168 }; 160 };
169 161
170 INSTANTIATE_TEST_CASE_P(SnapshotAuraTest, SnapshotAuraTest, ::testing::Bool()); 162 TEST_F(SnapshotAuraTest, FullScreenWindow) {
171
172 TEST_P(SnapshotAuraTest, FullScreenWindow) {
173 SetupTestWindow(root_window()->bounds()); 163 SetupTestWindow(root_window()->bounds());
174 WaitForDraw(); 164 WaitForDraw();
175 165
176 gfx::Image snapshot = GrabSnapshotForTestWindow(); 166 gfx::Image snapshot = GrabSnapshotForTestWindow();
177 EXPECT_EQ(test_window()->bounds().size().ToString(), 167 EXPECT_EQ(test_window()->bounds().size().ToString(),
178 snapshot.Size().ToString()); 168 snapshot.Size().ToString());
179 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot)); 169 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot));
180 } 170 }
181 171
182 TEST_P(SnapshotAuraTest, PartialBounds) { 172 TEST_F(SnapshotAuraTest, PartialBounds) {
183 gfx::Rect test_bounds(100, 100, 300, 200); 173 gfx::Rect test_bounds(100, 100, 300, 200);
184 SetupTestWindow(test_bounds); 174 SetupTestWindow(test_bounds);
185 WaitForDraw(); 175 WaitForDraw();
186 176
187 gfx::Image snapshot = GrabSnapshotForTestWindow(); 177 gfx::Image snapshot = GrabSnapshotForTestWindow();
188 EXPECT_EQ(test_bounds.size().ToString(), 178 EXPECT_EQ(test_bounds.size().ToString(),
189 snapshot.Size().ToString()); 179 snapshot.Size().ToString());
190 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot)); 180 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot));
191 } 181 }
192 182
193 TEST_P(SnapshotAuraTest, Rotated) { 183 TEST_F(SnapshotAuraTest, Rotated) {
194 test_screen()->SetDisplayRotation(gfx::Display::ROTATE_90); 184 test_screen()->SetDisplayRotation(gfx::Display::ROTATE_90);
195 185
196 gfx::Rect test_bounds(100, 100, 300, 200); 186 gfx::Rect test_bounds(100, 100, 300, 200);
197 SetupTestWindow(test_bounds); 187 SetupTestWindow(test_bounds);
198 WaitForDraw(); 188 WaitForDraw();
199 189
200 gfx::Image snapshot = GrabSnapshotForTestWindow(); 190 gfx::Image snapshot = GrabSnapshotForTestWindow();
201 EXPECT_EQ(test_bounds.size().ToString(), 191 EXPECT_EQ(test_bounds.size().ToString(),
202 snapshot.Size().ToString()); 192 snapshot.Size().ToString());
203 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot)); 193 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot));
204 } 194 }
205 195
206 TEST_P(SnapshotAuraTest, UIScale) { 196 TEST_F(SnapshotAuraTest, UIScale) {
207 const float kUIScale = 1.25f; 197 const float kUIScale = 1.25f;
208 test_screen()->SetUIScale(kUIScale); 198 test_screen()->SetUIScale(kUIScale);
209 199
210 gfx::Rect test_bounds(100, 100, 300, 200); 200 gfx::Rect test_bounds(100, 100, 300, 200);
211 SetupTestWindow(test_bounds); 201 SetupTestWindow(test_bounds);
212 WaitForDraw(); 202 WaitForDraw();
213 203
214 // Snapshot always captures the physical pixels. 204 // Snapshot always captures the physical pixels.
215 gfx::SizeF snapshot_size(test_bounds.size()); 205 gfx::SizeF snapshot_size(test_bounds.size());
216 snapshot_size.Scale(1.0f / kUIScale); 206 snapshot_size.Scale(1.0f / kUIScale);
217 207
218 gfx::Image snapshot = GrabSnapshotForTestWindow(); 208 gfx::Image snapshot = GrabSnapshotForTestWindow();
219 EXPECT_EQ(gfx::ToRoundedSize(snapshot_size).ToString(), 209 EXPECT_EQ(gfx::ToRoundedSize(snapshot_size).ToString(),
220 snapshot.Size().ToString()); 210 snapshot.Size().ToString());
221 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot)); 211 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot));
222 } 212 }
223 213
224 TEST_P(SnapshotAuraTest, DeviceScaleFactor) { 214 TEST_F(SnapshotAuraTest, DeviceScaleFactor) {
225 test_screen()->SetDeviceScaleFactor(2.0f); 215 test_screen()->SetDeviceScaleFactor(2.0f);
226 216
227 gfx::Rect test_bounds(100, 100, 150, 100); 217 gfx::Rect test_bounds(100, 100, 150, 100);
228 SetupTestWindow(test_bounds); 218 SetupTestWindow(test_bounds);
229 WaitForDraw(); 219 WaitForDraw();
230 220
231 // Snapshot always captures the physical pixels. 221 // Snapshot always captures the physical pixels.
232 gfx::SizeF snapshot_size(test_bounds.size()); 222 gfx::SizeF snapshot_size(test_bounds.size());
233 snapshot_size.Scale(2.0f); 223 snapshot_size.Scale(2.0f);
234 224
235 gfx::Image snapshot = GrabSnapshotForTestWindow(); 225 gfx::Image snapshot = GrabSnapshotForTestWindow();
236 EXPECT_EQ(gfx::ToRoundedSize(snapshot_size).ToString(), 226 EXPECT_EQ(gfx::ToRoundedSize(snapshot_size).ToString(),
237 snapshot.Size().ToString()); 227 snapshot.Size().ToString());
238 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot)); 228 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot));
239 } 229 }
240 230
241 TEST_P(SnapshotAuraTest, RotateAndUIScale) { 231 TEST_F(SnapshotAuraTest, RotateAndUIScale) {
242 const float kUIScale = 1.25f; 232 const float kUIScale = 1.25f;
243 test_screen()->SetUIScale(kUIScale); 233 test_screen()->SetUIScale(kUIScale);
244 test_screen()->SetDisplayRotation(gfx::Display::ROTATE_90); 234 test_screen()->SetDisplayRotation(gfx::Display::ROTATE_90);
245 235
246 gfx::Rect test_bounds(100, 100, 300, 200); 236 gfx::Rect test_bounds(100, 100, 300, 200);
247 SetupTestWindow(test_bounds); 237 SetupTestWindow(test_bounds);
248 WaitForDraw(); 238 WaitForDraw();
249 239
250 // Snapshot always captures the physical pixels. 240 // Snapshot always captures the physical pixels.
251 gfx::SizeF snapshot_size(test_bounds.size()); 241 gfx::SizeF snapshot_size(test_bounds.size());
252 snapshot_size.Scale(1.0f / kUIScale); 242 snapshot_size.Scale(1.0f / kUIScale);
253 243
254 gfx::Image snapshot = GrabSnapshotForTestWindow(); 244 gfx::Image snapshot = GrabSnapshotForTestWindow();
255 EXPECT_EQ(gfx::ToRoundedSize(snapshot_size).ToString(), 245 EXPECT_EQ(gfx::ToRoundedSize(snapshot_size).ToString(),
256 snapshot.Size().ToString()); 246 snapshot.Size().ToString());
257 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot)); 247 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot));
258 } 248 }
259 249
260 TEST_P(SnapshotAuraTest, RotateAndUIScaleAndScaleFactor) { 250 TEST_F(SnapshotAuraTest, RotateAndUIScaleAndScaleFactor) {
261 test_screen()->SetDeviceScaleFactor(2.0f); 251 test_screen()->SetDeviceScaleFactor(2.0f);
262 const float kUIScale = 1.25f; 252 const float kUIScale = 1.25f;
263 test_screen()->SetUIScale(kUIScale); 253 test_screen()->SetUIScale(kUIScale);
264 test_screen()->SetDisplayRotation(gfx::Display::ROTATE_90); 254 test_screen()->SetDisplayRotation(gfx::Display::ROTATE_90);
265 255
266 gfx::Rect test_bounds(20, 30, 150, 100); 256 gfx::Rect test_bounds(20, 30, 150, 100);
267 SetupTestWindow(test_bounds); 257 SetupTestWindow(test_bounds);
268 WaitForDraw(); 258 WaitForDraw();
269 259
270 // Snapshot always captures the physical pixels. 260 // Snapshot always captures the physical pixels.
271 gfx::SizeF snapshot_size(test_bounds.size()); 261 gfx::SizeF snapshot_size(test_bounds.size());
272 snapshot_size.Scale(2.0f / kUIScale); 262 snapshot_size.Scale(2.0f / kUIScale);
273 263
274 gfx::Image snapshot = GrabSnapshotForTestWindow(); 264 gfx::Image snapshot = GrabSnapshotForTestWindow();
275 EXPECT_EQ(gfx::ToRoundedSize(snapshot_size).ToString(), 265 EXPECT_EQ(gfx::ToRoundedSize(snapshot_size).ToString(),
276 snapshot.Size().ToString()); 266 snapshot.Size().ToString());
277 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot)); 267 EXPECT_EQ(0u, GetFailedPixelsCount(snapshot));
278 } 268 }
279 269
280 } // namespace ui 270 } // namespace ui
OLDNEW
« no previous file with comments | « ui/snapshot/snapshot_aura.cc ('k') | ui/snapshot/snapshot_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698