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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc

Issue 464643003: Stop painting when receiving delegated frame (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix crashes Created 6 years, 4 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 "content/browser/renderer_host/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/shared_memory.h" 9 #include "base/memory/shared_memory.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 SetChildBoundsDirect(child, gfx::Rect(owner_->bounds().size())); 300 SetChildBoundsDirect(child, gfx::Rect(owner_->bounds().size()));
301 } 301 }
302 302
303 private: 303 private:
304 aura::Window* owner_; 304 aura::Window* owner_;
305 DISALLOW_COPY_AND_ASSIGN(FullscreenLayoutManager); 305 DISALLOW_COPY_AND_ASSIGN(FullscreenLayoutManager);
306 }; 306 };
307 307
308 class MockWindowObserver : public aura::WindowObserver { 308 class MockWindowObserver : public aura::WindowObserver {
309 public: 309 public:
310 MOCK_METHOD2(OnWindowPaintScheduled, void(aura::Window*, const gfx::Rect&)); 310 MOCK_METHOD2(OnDelegatedFrameDamage, void(aura::Window*, const gfx::Rect&));
enne (OOO) 2014/08/21 20:54:19 Changed this file to use OnDelegatedFrameDamage in
enne (OOO) 2014/08/21 20:54:19 Changed this file to expect OnDelegatedFrameDamage
311 }; 311 };
312 312
313 } // namespace 313 } // namespace
314 314
315 class RenderWidgetHostViewAuraTest : public testing::Test { 315 class RenderWidgetHostViewAuraTest : public testing::Test {
316 public: 316 public:
317 RenderWidgetHostViewAuraTest() 317 RenderWidgetHostViewAuraTest()
318 : browser_thread_for_ui_(BrowserThread::UI, &message_loop_) {} 318 : browser_thread_for_ui_(BrowserThread::UI, &message_loop_) {}
319 319
320 void SetUpEnvironment() { 320 void SetUpEnvironment() {
(...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after
1224 view_->GetNativeView(), 1224 view_->GetNativeView(),
1225 parent_view_->GetNativeView()->GetRootWindow(), 1225 parent_view_->GetNativeView()->GetRootWindow(),
1226 gfx::Rect()); 1226 gfx::Rect());
1227 view_->SetSize(view_size); 1227 view_->SetSize(view_size);
1228 view_->WasShown(); 1228 view_->WasShown();
1229 1229
1230 MockWindowObserver observer; 1230 MockWindowObserver observer;
1231 view_->window_->AddObserver(&observer); 1231 view_->window_->AddObserver(&observer);
1232 1232
1233 // Delegated renderer path 1233 // Delegated renderer path
1234 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect)); 1234 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
1235 view_->OnSwapCompositorFrame( 1235 view_->OnSwapCompositorFrame(
1236 0, MakeDelegatedFrame(1.f, view_size, view_rect)); 1236 0, MakeDelegatedFrame(1.f, view_size, view_rect));
1237 testing::Mock::VerifyAndClearExpectations(&observer); 1237 testing::Mock::VerifyAndClearExpectations(&observer);
1238 1238
1239 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, 1239 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_,
1240 gfx::Rect(5, 5, 5, 5))); 1240 gfx::Rect(5, 5, 5, 5)));
1241 view_->OnSwapCompositorFrame( 1241 view_->OnSwapCompositorFrame(
1242 0, MakeDelegatedFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5))); 1242 0, MakeDelegatedFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5)));
1243 testing::Mock::VerifyAndClearExpectations(&observer); 1243 testing::Mock::VerifyAndClearExpectations(&observer);
1244 1244
1245 view_->window_->RemoveObserver(&observer); 1245 view_->window_->RemoveObserver(&observer);
1246 } 1246 }
1247 1247
1248 TEST_F(RenderWidgetHostViewAuraTest, Resize) { 1248 TEST_F(RenderWidgetHostViewAuraTest, Resize) {
1249 gfx::Size size1(100, 100); 1249 gfx::Size size1(100, 100);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1340 aura::client::ParentWindowWithContext( 1340 aura::client::ParentWindowWithContext(
1341 view_->GetNativeView(), 1341 view_->GetNativeView(),
1342 parent_view_->GetNativeView()->GetRootWindow(), 1342 parent_view_->GetNativeView()->GetRootWindow(),
1343 gfx::Rect()); 1343 gfx::Rect());
1344 view_->SetSize(view_rect.size()); 1344 view_->SetSize(view_rect.size());
1345 1345
1346 MockWindowObserver observer; 1346 MockWindowObserver observer;
1347 view_->window_->AddObserver(&observer); 1347 view_->window_->AddObserver(&observer);
1348 1348
1349 // A full frame of damage. 1349 // A full frame of damage.
1350 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect)); 1350 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
1351 view_->OnSwapCompositorFrame( 1351 view_->OnSwapCompositorFrame(
1352 0, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1352 0, MakeDelegatedFrame(1.f, frame_size, view_rect));
1353 testing::Mock::VerifyAndClearExpectations(&observer); 1353 testing::Mock::VerifyAndClearExpectations(&observer);
1354 view_->RunOnCompositingDidCommit(); 1354 view_->RunOnCompositingDidCommit();
1355 1355
1356 // A partial damage frame. 1356 // A partial damage frame.
1357 gfx::Rect partial_view_rect(30, 30, 20, 20); 1357 gfx::Rect partial_view_rect(30, 30, 20, 20);
1358 EXPECT_CALL(observer, 1358 EXPECT_CALL(observer,
1359 OnWindowPaintScheduled(view_->window_, partial_view_rect)); 1359 OnDelegatedFrameDamage(view_->window_, partial_view_rect));
1360 view_->OnSwapCompositorFrame( 1360 view_->OnSwapCompositorFrame(
1361 0, MakeDelegatedFrame(1.f, frame_size, partial_view_rect)); 1361 0, MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
1362 testing::Mock::VerifyAndClearExpectations(&observer); 1362 testing::Mock::VerifyAndClearExpectations(&observer);
1363 view_->RunOnCompositingDidCommit(); 1363 view_->RunOnCompositingDidCommit();
1364 1364
1365 // Lock the compositor. Now we should drop frames. 1365 // Lock the compositor. Now we should drop frames.
1366 view_rect = gfx::Rect(150, 150); 1366 view_rect = gfx::Rect(150, 150);
1367 view_->SetSize(view_rect.size()); 1367 view_->SetSize(view_rect.size());
1368 1368
1369 // This frame is dropped. 1369 // This frame is dropped.
1370 gfx::Rect dropped_damage_rect_1(10, 20, 30, 40); 1370 gfx::Rect dropped_damage_rect_1(10, 20, 30, 40);
1371 EXPECT_CALL(observer, OnWindowPaintScheduled(_, _)).Times(0); 1371 EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0);
1372 view_->OnSwapCompositorFrame( 1372 view_->OnSwapCompositorFrame(
1373 0, MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_1)); 1373 0, MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_1));
1374 testing::Mock::VerifyAndClearExpectations(&observer); 1374 testing::Mock::VerifyAndClearExpectations(&observer);
1375 view_->RunOnCompositingDidCommit(); 1375 view_->RunOnCompositingDidCommit();
1376 1376
1377 gfx::Rect dropped_damage_rect_2(40, 50, 10, 20); 1377 gfx::Rect dropped_damage_rect_2(40, 50, 10, 20);
1378 EXPECT_CALL(observer, OnWindowPaintScheduled(_, _)).Times(0); 1378 EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0);
1379 view_->OnSwapCompositorFrame( 1379 view_->OnSwapCompositorFrame(
1380 0, MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_2)); 1380 0, MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_2));
1381 testing::Mock::VerifyAndClearExpectations(&observer); 1381 testing::Mock::VerifyAndClearExpectations(&observer);
1382 view_->RunOnCompositingDidCommit(); 1382 view_->RunOnCompositingDidCommit();
1383 1383
1384 // Unlock the compositor. This frame should damage everything. 1384 // Unlock the compositor. This frame should damage everything.
1385 frame_size = view_rect.size(); 1385 frame_size = view_rect.size();
1386 1386
1387 gfx::Rect new_damage_rect(5, 6, 10, 10); 1387 gfx::Rect new_damage_rect(5, 6, 10, 10);
1388 EXPECT_CALL(observer, 1388 EXPECT_CALL(observer,
1389 OnWindowPaintScheduled(view_->window_, view_rect)); 1389 OnDelegatedFrameDamage(view_->window_, view_rect));
1390 view_->OnSwapCompositorFrame( 1390 view_->OnSwapCompositorFrame(
1391 0, MakeDelegatedFrame(1.f, frame_size, new_damage_rect)); 1391 0, MakeDelegatedFrame(1.f, frame_size, new_damage_rect));
1392 testing::Mock::VerifyAndClearExpectations(&observer); 1392 testing::Mock::VerifyAndClearExpectations(&observer);
1393 view_->RunOnCompositingDidCommit(); 1393 view_->RunOnCompositingDidCommit();
1394 1394
1395 // A partial damage frame, this should not be dropped. 1395 // A partial damage frame, this should not be dropped.
1396 EXPECT_CALL(observer, 1396 EXPECT_CALL(observer,
1397 OnWindowPaintScheduled(view_->window_, partial_view_rect)); 1397 OnDelegatedFrameDamage(view_->window_, partial_view_rect));
1398 view_->OnSwapCompositorFrame( 1398 view_->OnSwapCompositorFrame(
1399 0, MakeDelegatedFrame(1.f, frame_size, partial_view_rect)); 1399 0, MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
1400 testing::Mock::VerifyAndClearExpectations(&observer); 1400 testing::Mock::VerifyAndClearExpectations(&observer);
1401 view_->RunOnCompositingDidCommit(); 1401 view_->RunOnCompositingDidCommit();
1402 1402
1403 1403
1404 // Resize to something empty. 1404 // Resize to something empty.
1405 view_rect = gfx::Rect(100, 0); 1405 view_rect = gfx::Rect(100, 0);
1406 view_->SetSize(view_rect.size()); 1406 view_->SetSize(view_rect.size());
1407 1407
1408 // We're never expecting empty frames, resize to something non-empty. 1408 // We're never expecting empty frames, resize to something non-empty.
1409 view_rect = gfx::Rect(100, 100); 1409 view_rect = gfx::Rect(100, 100);
1410 view_->SetSize(view_rect.size()); 1410 view_->SetSize(view_rect.size());
1411 1411
1412 // This frame should not be dropped. 1412 // This frame should not be dropped.
1413 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect)); 1413 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
1414 view_->OnSwapCompositorFrame( 1414 view_->OnSwapCompositorFrame(
1415 0, MakeDelegatedFrame(1.f, view_rect.size(), view_rect)); 1415 0, MakeDelegatedFrame(1.f, view_rect.size(), view_rect));
1416 testing::Mock::VerifyAndClearExpectations(&observer); 1416 testing::Mock::VerifyAndClearExpectations(&observer);
1417 view_->RunOnCompositingDidCommit(); 1417 view_->RunOnCompositingDidCommit();
1418 1418
1419 view_->window_->RemoveObserver(&observer); 1419 view_->window_->RemoveObserver(&observer);
1420 } 1420 }
1421 1421
1422 TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) { 1422 TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) {
1423 gfx::Rect view_rect(100, 100); 1423 gfx::Rect view_rect(100, 100);
1424 gfx::Size frame_size = view_rect.size(); 1424 gfx::Size frame_size = view_rect.size();
1425 1425
1426 view_->InitAsChild(NULL); 1426 view_->InitAsChild(NULL);
1427 aura::client::ParentWindowWithContext( 1427 aura::client::ParentWindowWithContext(
1428 view_->GetNativeView(), 1428 view_->GetNativeView(),
1429 parent_view_->GetNativeView()->GetRootWindow(), 1429 parent_view_->GetNativeView()->GetRootWindow(),
1430 gfx::Rect()); 1430 gfx::Rect());
1431 view_->SetSize(view_rect.size()); 1431 view_->SetSize(view_rect.size());
1432 1432
1433 MockWindowObserver observer; 1433 MockWindowObserver observer;
1434 view_->window_->AddObserver(&observer); 1434 view_->window_->AddObserver(&observer);
1435 1435
1436 // Swap a frame. 1436 // Swap a frame.
1437 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect)); 1437 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
1438 view_->OnSwapCompositorFrame( 1438 view_->OnSwapCompositorFrame(
1439 0, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1439 0, MakeDelegatedFrame(1.f, frame_size, view_rect));
1440 testing::Mock::VerifyAndClearExpectations(&observer); 1440 testing::Mock::VerifyAndClearExpectations(&observer);
1441 view_->RunOnCompositingDidCommit(); 1441 view_->RunOnCompositingDidCommit();
1442 1442
1443 // Swap a frame with a different surface id. 1443 // Swap a frame with a different surface id.
1444 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect)); 1444 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
1445 view_->OnSwapCompositorFrame( 1445 view_->OnSwapCompositorFrame(
1446 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1446 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
1447 testing::Mock::VerifyAndClearExpectations(&observer); 1447 testing::Mock::VerifyAndClearExpectations(&observer);
1448 view_->RunOnCompositingDidCommit(); 1448 view_->RunOnCompositingDidCommit();
1449 1449
1450 // Swap an empty frame, with a different surface id. 1450 // Swap an empty frame, with a different surface id.
1451 view_->OnSwapCompositorFrame( 1451 view_->OnSwapCompositorFrame(
1452 2, MakeDelegatedFrame(1.f, gfx::Size(), gfx::Rect())); 1452 2, MakeDelegatedFrame(1.f, gfx::Size(), gfx::Rect()));
1453 testing::Mock::VerifyAndClearExpectations(&observer); 1453 testing::Mock::VerifyAndClearExpectations(&observer);
1454 view_->RunOnCompositingDidCommit(); 1454 view_->RunOnCompositingDidCommit();
1455 1455
1456 // Swap another frame, with a different surface id. 1456 // Swap another frame, with a different surface id.
1457 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect)); 1457 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
1458 view_->OnSwapCompositorFrame(3, 1458 view_->OnSwapCompositorFrame(3,
1459 MakeDelegatedFrame(1.f, frame_size, view_rect)); 1459 MakeDelegatedFrame(1.f, frame_size, view_rect));
1460 testing::Mock::VerifyAndClearExpectations(&observer); 1460 testing::Mock::VerifyAndClearExpectations(&observer);
1461 view_->RunOnCompositingDidCommit(); 1461 view_->RunOnCompositingDidCommit();
1462 1462
1463 view_->window_->RemoveObserver(&observer); 1463 view_->window_->RemoveObserver(&observer);
1464 } 1464 }
1465 1465
1466 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) { 1466 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
1467 size_t max_renderer_frames = 1467 size_t max_renderer_frames =
(...skipping 1279 matching lines...) Expand 10 before | Expand all | Expand 10 after
2747 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); 2747 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode());
2748 2748
2749 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 2749 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
2750 blink::WebGestureDeviceTouchscreen); 2750 blink::WebGestureDeviceTouchscreen);
2751 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 2751 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
2752 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); 2752 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode());
2753 EXPECT_EQ(3U, sink_->message_count()); 2753 EXPECT_EQ(3U, sink_->message_count());
2754 } 2754 }
2755 2755
2756 } // namespace content 2756 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698