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

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

Issue 606033003: Fix RenderWidgetHostViewAuraTest.* for Surfaces (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
« no previous file with comments | « content/browser/compositor/delegated_frame_host.cc ('k') | content/content_tests.gypi » ('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) 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"
11 #include "base/run_loop.h" 11 #include "base/run_loop.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "cc/output/compositor_frame.h" 13 #include "cc/output/compositor_frame.h"
14 #include "cc/output/compositor_frame_metadata.h" 14 #include "cc/output/compositor_frame_metadata.h"
15 #include "cc/output/copy_output_request.h" 15 #include "cc/output/copy_output_request.h"
16 #include "cc/surfaces/surface.h"
17 #include "cc/surfaces/surface_manager.h"
16 #include "content/browser/browser_thread_impl.h" 18 #include "content/browser/browser_thread_impl.h"
17 #include "content/browser/compositor/resize_lock.h" 19 #include "content/browser/compositor/resize_lock.h"
18 #include "content/browser/compositor/test/no_transport_image_transport_factory.h " 20 #include "content/browser/compositor/test/no_transport_image_transport_factory.h "
19 #include "content/browser/renderer_host/overscroll_controller.h" 21 #include "content/browser/renderer_host/overscroll_controller.h"
20 #include "content/browser/renderer_host/overscroll_controller_delegate.h" 22 #include "content/browser/renderer_host/overscroll_controller_delegate.h"
21 #include "content/browser/renderer_host/render_widget_host_delegate.h" 23 #include "content/browser/renderer_host/render_widget_host_delegate.h"
22 #include "content/browser/renderer_host/render_widget_host_impl.h" 24 #include "content/browser/renderer_host/render_widget_host_impl.h"
23 #include "content/common/gpu/client/gl_helper.h" 25 #include "content/common/gpu/client/gl_helper.h"
24 #include "content/common/gpu/gpu_messages.h" 26 #include "content/common/gpu/gpu_messages.h"
25 #include "content/common/host_shared_bitmap_manager.h" 27 #include "content/common/host_shared_bitmap_manager.h"
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 last_copy_request_->texture_mailbox().sync_point()); 253 last_copy_request_->texture_mailbox().sync_point());
252 gl_helper->ResizeTexture(texture, window()->bounds().size()); 254 gl_helper->ResizeTexture(texture, window()->bounds().size());
253 gl_helper->DeleteTexture(texture); 255 gl_helper->DeleteTexture(texture);
254 } 256 }
255 } 257 }
256 258
257 cc::DelegatedFrameProvider* frame_provider() const { 259 cc::DelegatedFrameProvider* frame_provider() const {
258 return GetDelegatedFrameHost()->FrameProviderForTesting(); 260 return GetDelegatedFrameHost()->FrameProviderForTesting();
259 } 261 }
260 262
263 cc::SurfaceId surface_id() const {
264 return GetDelegatedFrameHost()->SurfaceIdForTesting();
265 }
266
267 bool HasFrameData() const {
268 return frame_provider() || !surface_id().is_null();
269 }
270
261 bool released_front_lock_active() const { 271 bool released_front_lock_active() const {
262 return GetDelegatedFrameHost()->ReleasedFrontLockActiveForTesting(); 272 return GetDelegatedFrameHost()->ReleasedFrontLockActiveForTesting();
263 } 273 }
264 274
265 // A lock that doesn't actually do anything to the compositor, and does not 275 // A lock that doesn't actually do anything to the compositor, and does not
266 // time out. 276 // time out.
267 class FakeResizeLock : public ResizeLock { 277 class FakeResizeLock : public ResizeLock {
268 public: 278 public:
269 FakeResizeLock(const gfx::Size new_size, bool defer_compositor_lock) 279 FakeResizeLock(const gfx::Size new_size, bool defer_compositor_lock)
270 : ResizeLock(new_size, defer_compositor_lock) {} 280 : ResizeLock(new_size, defer_compositor_lock) {}
(...skipping 1069 matching lines...) Expand 10 before | Expand all | Expand 10 after
1340 0, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); 1350 0, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
1341 // No frame ack yet. 1351 // No frame ack yet.
1342 EXPECT_EQ(0u, sink_->message_count()); 1352 EXPECT_EQ(0u, sink_->message_count());
1343 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); 1353 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString());
1344 1354
1345 // Wait for commit, then we should unlock the compositor and send a Resize 1355 // Wait for commit, then we should unlock the compositor and send a Resize
1346 // message (and a frame ack) 1356 // message (and a frame ack)
1347 ui::DrawWaiterForTest::WaitForCommit( 1357 ui::DrawWaiterForTest::WaitForCommit(
1348 root_window->GetHost()->compositor()); 1358 root_window->GetHost()->compositor());
1349 EXPECT_EQ(size3.ToString(), view_->GetRequestedRendererSize().ToString()); 1359 EXPECT_EQ(size3.ToString(), view_->GetRequestedRendererSize().ToString());
1360 cc::SurfaceId surface_id = view_->surface_id();
1361 int swap_index = 0;
1362 int resize_index = 1;
1363 if (!surface_id.is_null()) {
1364 // Frame ack is sent only due to a draw callback with surfaces.
1365 ImageTransportFactory::GetInstance()
1366 ->GetSurfaceManager()
1367 ->GetSurfaceForId(surface_id)
1368 ->RunDrawCallbacks();
1369 swap_index = 1;
1370 resize_index = 0;
1371 }
1350 EXPECT_EQ(2u, sink_->message_count()); 1372 EXPECT_EQ(2u, sink_->message_count());
1351 EXPECT_EQ(ViewMsg_SwapCompositorFrameAck::ID, sink_->GetMessageAt(0)->type()); 1373 EXPECT_EQ(ViewMsg_SwapCompositorFrameAck::ID,
1374 sink_->GetMessageAt(swap_index)->type());
1352 { 1375 {
1353 const IPC::Message* msg = sink_->GetMessageAt(1); 1376 const IPC::Message* msg = sink_->GetMessageAt(resize_index);
1354 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); 1377 EXPECT_EQ(ViewMsg_Resize::ID, msg->type());
1355 ViewMsg_Resize::Param params; 1378 ViewMsg_Resize::Param params;
1356 ViewMsg_Resize::Read(msg, &params); 1379 ViewMsg_Resize::Read(msg, &params);
1357 EXPECT_EQ(size3.ToString(), params.a.new_size.ToString()); 1380 EXPECT_EQ(size3.ToString(), params.a.new_size.ToString());
1358 } 1381 }
1359 update_params.view_size = size3; 1382 update_params.view_size = size3;
1360 widget_host_->OnMessageReceived( 1383 widget_host_->OnMessageReceived(
1361 ViewHostMsg_UpdateRect(widget_host_->GetRoutingID(), update_params)); 1384 ViewHostMsg_UpdateRect(widget_host_->GetRoutingID(), update_params));
1362 sink_->ClearMessages(); 1385 sink_->ClearMessages();
1363 } 1386 }
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
1520 parent_view_->GetNativeView()->GetRootWindow(), 1543 parent_view_->GetNativeView()->GetRootWindow(),
1521 gfx::Rect()); 1544 gfx::Rect());
1522 views[i]->SetSize(view_rect.size()); 1545 views[i]->SetSize(view_rect.size());
1523 } 1546 }
1524 1547
1525 // Make each renderer visible, and swap a frame on it, then make it invisible. 1548 // Make each renderer visible, and swap a frame on it, then make it invisible.
1526 for (size_t i = 0; i < renderer_count; ++i) { 1549 for (size_t i = 0; i < renderer_count; ++i) {
1527 views[i]->WasShown(); 1550 views[i]->WasShown();
1528 views[i]->OnSwapCompositorFrame( 1551 views[i]->OnSwapCompositorFrame(
1529 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1552 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
1530 EXPECT_TRUE(views[i]->frame_provider()); 1553 EXPECT_TRUE(views[i]->HasFrameData());
1531 views[i]->WasHidden(); 1554 views[i]->WasHidden();
1532 } 1555 }
1533 1556
1534 // There should be max_renderer_frames with a frame in it, and one without it. 1557 // There should be max_renderer_frames with a frame in it, and one without it.
1535 // Since the logic is LRU eviction, the first one should be without. 1558 // Since the logic is LRU eviction, the first one should be without.
1536 EXPECT_FALSE(views[0]->frame_provider()); 1559 EXPECT_FALSE(views[0]->HasFrameData());
1537 for (size_t i = 1; i < renderer_count; ++i) 1560 for (size_t i = 1; i < renderer_count; ++i)
1538 EXPECT_TRUE(views[i]->frame_provider()); 1561 EXPECT_TRUE(views[i]->HasFrameData());
1539 1562
1540 // LRU renderer is [0], make it visible, it shouldn't evict anything yet. 1563 // LRU renderer is [0], make it visible, it shouldn't evict anything yet.
1541 views[0]->WasShown(); 1564 views[0]->WasShown();
1542 EXPECT_FALSE(views[0]->frame_provider()); 1565 EXPECT_FALSE(views[0]->HasFrameData());
1543 EXPECT_TRUE(views[1]->frame_provider()); 1566 EXPECT_TRUE(views[1]->HasFrameData());
1544 // Since [0] doesn't have a frame, it should be waiting for the renderer to 1567 // Since [0] doesn't have a frame, it should be waiting for the renderer to
1545 // give it one. 1568 // give it one.
1546 EXPECT_TRUE(views[0]->released_front_lock_active()); 1569 EXPECT_TRUE(views[0]->released_front_lock_active());
1547 1570
1548 // Swap a frame on it, it should evict the next LRU [1]. 1571 // Swap a frame on it, it should evict the next LRU [1].
1549 views[0]->OnSwapCompositorFrame( 1572 views[0]->OnSwapCompositorFrame(
1550 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1573 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
1551 EXPECT_TRUE(views[0]->frame_provider()); 1574 EXPECT_TRUE(views[0]->HasFrameData());
1552 EXPECT_FALSE(views[1]->frame_provider()); 1575 EXPECT_FALSE(views[1]->HasFrameData());
1553 // Now that [0] got a frame, it shouldn't be waiting any more. 1576 // Now that [0] got a frame, it shouldn't be waiting any more.
1554 EXPECT_FALSE(views[0]->released_front_lock_active()); 1577 EXPECT_FALSE(views[0]->released_front_lock_active());
1555 views[0]->WasHidden(); 1578 views[0]->WasHidden();
1556 1579
1557 // LRU renderer is [1], still hidden. Swap a frame on it, it should evict 1580 // LRU renderer is [1], still hidden. Swap a frame on it, it should evict
1558 // the next LRU [2]. 1581 // the next LRU [2].
1559 views[1]->OnSwapCompositorFrame( 1582 views[1]->OnSwapCompositorFrame(
1560 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1583 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
1561 EXPECT_TRUE(views[0]->frame_provider()); 1584 EXPECT_TRUE(views[0]->HasFrameData());
1562 EXPECT_TRUE(views[1]->frame_provider()); 1585 EXPECT_TRUE(views[1]->HasFrameData());
1563 EXPECT_FALSE(views[2]->frame_provider()); 1586 EXPECT_FALSE(views[2]->HasFrameData());
1564 for (size_t i = 3; i < renderer_count; ++i) 1587 for (size_t i = 3; i < renderer_count; ++i)
1565 EXPECT_TRUE(views[i]->frame_provider()); 1588 EXPECT_TRUE(views[i]->HasFrameData());
1566 1589
1567 // Make all renderers but [0] visible and swap a frame on them, keep [0] 1590 // Make all renderers but [0] visible and swap a frame on them, keep [0]
1568 // hidden, it becomes the LRU. 1591 // hidden, it becomes the LRU.
1569 for (size_t i = 1; i < renderer_count; ++i) { 1592 for (size_t i = 1; i < renderer_count; ++i) {
1570 views[i]->WasShown(); 1593 views[i]->WasShown();
1571 // The renderers who don't have a frame should be waiting. The ones that 1594 // The renderers who don't have a frame should be waiting. The ones that
1572 // have a frame should not. 1595 // have a frame should not.
1573 // In practice, [1] has a frame, but anything after has its frame evicted. 1596 // In practice, [1] has a frame, but anything after has its frame evicted.
1574 EXPECT_EQ(!views[i]->frame_provider(), 1597 EXPECT_EQ(!views[i]->HasFrameData(),
1575 views[i]->released_front_lock_active()); 1598 views[i]->released_front_lock_active());
1576 views[i]->OnSwapCompositorFrame( 1599 views[i]->OnSwapCompositorFrame(
1577 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1600 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
1578 // Now everyone has a frame. 1601 // Now everyone has a frame.
1579 EXPECT_FALSE(views[i]->released_front_lock_active()); 1602 EXPECT_FALSE(views[i]->released_front_lock_active());
1580 EXPECT_TRUE(views[i]->frame_provider()); 1603 EXPECT_TRUE(views[i]->HasFrameData());
1581 } 1604 }
1582 EXPECT_FALSE(views[0]->frame_provider()); 1605 EXPECT_FALSE(views[0]->HasFrameData());
1583 1606
1584 // Swap a frame on [0], it should be evicted immediately. 1607 // Swap a frame on [0], it should be evicted immediately.
1585 views[0]->OnSwapCompositorFrame( 1608 views[0]->OnSwapCompositorFrame(
1586 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1609 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
1587 EXPECT_FALSE(views[0]->frame_provider()); 1610 EXPECT_FALSE(views[0]->HasFrameData());
1588 1611
1589 // Make [0] visible, and swap a frame on it. Nothing should be evicted 1612 // Make [0] visible, and swap a frame on it. Nothing should be evicted
1590 // although we're above the limit. 1613 // although we're above the limit.
1591 views[0]->WasShown(); 1614 views[0]->WasShown();
1592 // We don't have a frame, wait. 1615 // We don't have a frame, wait.
1593 EXPECT_TRUE(views[0]->released_front_lock_active()); 1616 EXPECT_TRUE(views[0]->released_front_lock_active());
1594 views[0]->OnSwapCompositorFrame( 1617 views[0]->OnSwapCompositorFrame(
1595 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1618 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
1596 EXPECT_FALSE(views[0]->released_front_lock_active()); 1619 EXPECT_FALSE(views[0]->released_front_lock_active());
1597 for (size_t i = 0; i < renderer_count; ++i) 1620 for (size_t i = 0; i < renderer_count; ++i)
1598 EXPECT_TRUE(views[i]->frame_provider()); 1621 EXPECT_TRUE(views[i]->HasFrameData());
1599 1622
1600 // Make [0] hidden, it should evict its frame. 1623 // Make [0] hidden, it should evict its frame.
1601 views[0]->WasHidden(); 1624 views[0]->WasHidden();
1602 EXPECT_FALSE(views[0]->frame_provider()); 1625 EXPECT_FALSE(views[0]->HasFrameData());
1603 1626
1604 // Make [0] visible, don't give it a frame, it should be waiting. 1627 // Make [0] visible, don't give it a frame, it should be waiting.
1605 views[0]->WasShown(); 1628 views[0]->WasShown();
1606 EXPECT_TRUE(views[0]->released_front_lock_active()); 1629 EXPECT_TRUE(views[0]->released_front_lock_active());
1607 // Make [0] hidden, it should stop waiting. 1630 // Make [0] hidden, it should stop waiting.
1608 views[0]->WasHidden(); 1631 views[0]->WasHidden();
1609 EXPECT_FALSE(views[0]->released_front_lock_active()); 1632 EXPECT_FALSE(views[0]->released_front_lock_active());
1610 1633
1611 // Make [1] hidden, resize it. It should drop its frame. 1634 // Make [1] hidden, resize it. It should drop its frame.
1612 views[1]->WasHidden(); 1635 views[1]->WasHidden();
1613 EXPECT_TRUE(views[1]->frame_provider()); 1636 EXPECT_TRUE(views[1]->HasFrameData());
1614 gfx::Size size2(200, 200); 1637 gfx::Size size2(200, 200);
1615 views[1]->SetSize(size2); 1638 views[1]->SetSize(size2);
1616 EXPECT_FALSE(views[1]->frame_provider()); 1639 EXPECT_FALSE(views[1]->HasFrameData());
1617 // Show it, it should block until we give it a frame. 1640 // Show it, it should block until we give it a frame.
1618 views[1]->WasShown(); 1641 views[1]->WasShown();
1619 EXPECT_TRUE(views[1]->released_front_lock_active()); 1642 EXPECT_TRUE(views[1]->released_front_lock_active());
1620 views[1]->OnSwapCompositorFrame( 1643 views[1]->OnSwapCompositorFrame(
1621 1, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); 1644 1, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
1622 EXPECT_FALSE(views[1]->released_front_lock_active()); 1645 EXPECT_FALSE(views[1]->released_front_lock_active());
1623 1646
1624 for (size_t i = 0; i < renderer_count - 1; ++i) 1647 for (size_t i = 0; i < renderer_count - 1; ++i)
1625 views[i]->WasHidden(); 1648 views[i]->WasHidden();
1626 1649
1627 // Allocate enough bitmaps so that two frames (proportionally) would be 1650 // Allocate enough bitmaps so that two frames (proportionally) would be
1628 // enough hit the handle limit. 1651 // enough hit the handle limit.
1629 int handles_per_frame = 5; 1652 int handles_per_frame = 5;
1630 RendererFrameManager::GetInstance()->set_max_handles(handles_per_frame * 2); 1653 RendererFrameManager::GetInstance()->set_max_handles(handles_per_frame * 2);
1631 1654
1632 for (size_t i = 0; i < (renderer_count - 1) * handles_per_frame; i++) { 1655 for (size_t i = 0; i < (renderer_count - 1) * handles_per_frame; i++) {
1633 HostSharedBitmapManager::current()->ChildAllocatedSharedBitmap( 1656 HostSharedBitmapManager::current()->ChildAllocatedSharedBitmap(
1634 1, 1657 1,
1635 base::SharedMemory::NULLHandle(), 1658 base::SharedMemory::NULLHandle(),
1636 base::GetCurrentProcessHandle(), 1659 base::GetCurrentProcessHandle(),
1637 cc::SharedBitmap::GenerateId()); 1660 cc::SharedBitmap::GenerateId());
1638 } 1661 }
1639 1662
1640 // Hiding this last bitmap should evict all but two frames. 1663 // Hiding this last bitmap should evict all but two frames.
1641 views[renderer_count - 1]->WasHidden(); 1664 views[renderer_count - 1]->WasHidden();
1642 for (size_t i = 0; i < renderer_count; ++i) { 1665 for (size_t i = 0; i < renderer_count; ++i) {
1643 if (i + 2 < renderer_count) 1666 if (i + 2 < renderer_count)
1644 EXPECT_FALSE(views[i]->frame_provider()); 1667 EXPECT_FALSE(views[i]->HasFrameData());
1645 else 1668 else
1646 EXPECT_TRUE(views[i]->frame_provider()); 1669 EXPECT_TRUE(views[i]->HasFrameData());
1647 } 1670 }
1648 HostSharedBitmapManager::current()->ProcessRemoved( 1671 HostSharedBitmapManager::current()->ProcessRemoved(
1649 base::GetCurrentProcessHandle()); 1672 base::GetCurrentProcessHandle());
1650 RendererFrameManager::GetInstance()->set_max_handles( 1673 RendererFrameManager::GetInstance()->set_max_handles(
1651 base::SharedMemory::GetHandleLimit()); 1674 base::SharedMemory::GetHandleLimit());
1652 1675
1653 for (size_t i = 0; i < renderer_count; ++i) { 1676 for (size_t i = 0; i < renderer_count; ++i) {
1654 views[i]->Destroy(); 1677 views[i]->Destroy();
1655 delete hosts[i]; 1678 delete hosts[i];
1656 } 1679 }
(...skipping 26 matching lines...) Expand all
1683 gfx::Rect()); 1706 gfx::Rect());
1684 views[i]->SetSize(view_rect.size()); 1707 views[i]->SetSize(view_rect.size());
1685 } 1708 }
1686 1709
1687 // Make each renderer visible and swap a frame on it. No eviction should 1710 // Make each renderer visible and swap a frame on it. No eviction should
1688 // occur because all frames are visible. 1711 // occur because all frames are visible.
1689 for (size_t i = 0; i < renderer_count; ++i) { 1712 for (size_t i = 0; i < renderer_count; ++i) {
1690 views[i]->WasShown(); 1713 views[i]->WasShown();
1691 views[i]->OnSwapCompositorFrame( 1714 views[i]->OnSwapCompositorFrame(
1692 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1715 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
1693 EXPECT_TRUE(views[i]->frame_provider()); 1716 EXPECT_TRUE(views[i]->HasFrameData());
1694 } 1717 }
1695 1718
1696 // If we hide [0], then [0] should be evicted. 1719 // If we hide [0], then [0] should be evicted.
1697 views[0]->WasHidden(); 1720 views[0]->WasHidden();
1698 EXPECT_FALSE(views[0]->frame_provider()); 1721 EXPECT_FALSE(views[0]->HasFrameData());
1699 1722
1700 // If we lock [0] before hiding it, then [0] should not be evicted. 1723 // If we lock [0] before hiding it, then [0] should not be evicted.
1701 views[0]->WasShown(); 1724 views[0]->WasShown();
1702 views[0]->OnSwapCompositorFrame( 1725 views[0]->OnSwapCompositorFrame(
1703 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); 1726 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
1704 EXPECT_TRUE(views[0]->frame_provider()); 1727 EXPECT_TRUE(views[0]->HasFrameData());
1705 views[0]->GetDelegatedFrameHost()->LockResources(); 1728 views[0]->GetDelegatedFrameHost()->LockResources();
1706 views[0]->WasHidden(); 1729 views[0]->WasHidden();
1707 EXPECT_TRUE(views[0]->frame_provider()); 1730 EXPECT_TRUE(views[0]->HasFrameData());
1708 1731
1709 // If we unlock [0] now, then [0] should be evicted. 1732 // If we unlock [0] now, then [0] should be evicted.
1710 views[0]->GetDelegatedFrameHost()->UnlockResources(); 1733 views[0]->GetDelegatedFrameHost()->UnlockResources();
1711 EXPECT_FALSE(views[0]->frame_provider()); 1734 EXPECT_FALSE(views[0]->HasFrameData());
1712 1735
1713 for (size_t i = 0; i < renderer_count; ++i) { 1736 for (size_t i = 0; i < renderer_count; ++i) {
1714 views[i]->Destroy(); 1737 views[i]->Destroy();
1715 delete hosts[i]; 1738 delete hosts[i];
1716 } 1739 }
1717 } 1740 }
1718 1741
1719 TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) { 1742 TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) {
1720 gfx::Rect view_rect(100, 100); 1743 gfx::Rect view_rect(100, 100);
1721 gfx::Size frame_size(100, 100); 1744 gfx::Size frame_size(100, 100);
1722 1745
1723 view_->InitAsChild(NULL); 1746 view_->InitAsChild(NULL);
1724 aura::client::ParentWindowWithContext( 1747 aura::client::ParentWindowWithContext(
1725 view_->GetNativeView(), 1748 view_->GetNativeView(),
1726 parent_view_->GetNativeView()->GetRootWindow(), 1749 parent_view_->GetNativeView()->GetRootWindow(),
1727 gfx::Rect()); 1750 gfx::Rect());
1728 view_->SetSize(view_rect.size()); 1751 view_->SetSize(view_rect.size());
1729 view_->WasShown(); 1752 view_->WasShown();
1730 1753
1731 // With a 1x DPI UI and 1x DPI Renderer. 1754 // With a 1x DPI UI and 1x DPI Renderer.
1732 view_->OnSwapCompositorFrame( 1755 view_->OnSwapCompositorFrame(
1733 1, MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size))); 1756 1, MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size)));
1734 1757
1735 // Save the frame provider. 1758 // Save the frame provider.
1736 scoped_refptr<cc::DelegatedFrameProvider> frame_provider = 1759 scoped_refptr<cc::DelegatedFrameProvider> frame_provider =
1737 view_->frame_provider(); 1760 view_->frame_provider();
1761 cc::SurfaceId surface_id = view_->surface_id();
1738 1762
1739 // This frame will have the same number of physical pixels, but has a new 1763 // This frame will have the same number of physical pixels, but has a new
1740 // scale on it. 1764 // scale on it.
1741 view_->OnSwapCompositorFrame( 1765 view_->OnSwapCompositorFrame(
1742 1, MakeDelegatedFrame(2.f, frame_size, gfx::Rect(frame_size))); 1766 1, MakeDelegatedFrame(2.f, frame_size, gfx::Rect(frame_size)));
1743 1767
1744 // When we get a new frame with the same frame size in physical pixels, but a 1768 // When we get a new frame with the same frame size in physical pixels, but a
1745 // different scale, we should generate a new frame provider, as the final 1769 // different scale, we should generate a new frame provider, as the final
1746 // result will need to be scaled differently to the screen. 1770 // result will need to be scaled differently to the screen.
1747 EXPECT_NE(frame_provider.get(), view_->frame_provider()); 1771 if (frame_provider.get())
1772 EXPECT_NE(frame_provider.get(), view_->frame_provider());
1773 else
1774 EXPECT_NE(surface_id, view_->surface_id());
1748 } 1775 }
1749 1776
1750 class RenderWidgetHostViewAuraCopyRequestTest 1777 class RenderWidgetHostViewAuraCopyRequestTest
1751 : public RenderWidgetHostViewAuraShutdownTest { 1778 : public RenderWidgetHostViewAuraShutdownTest {
1752 public: 1779 public:
1753 RenderWidgetHostViewAuraCopyRequestTest() 1780 RenderWidgetHostViewAuraCopyRequestTest()
1754 : callback_count_(0), result_(false) {} 1781 : callback_count_(0), result_(false) {}
1755 1782
1756 void CallbackMethod(const base::Closure& quit_closure, bool result) { 1783 void CallbackMethod(const base::Closure& quit_closure, bool result) {
1757 result_ = result; 1784 result_ = result;
(...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after
2778 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); 2805 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode());
2779 2806
2780 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 2807 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
2781 blink::WebGestureDeviceTouchscreen); 2808 blink::WebGestureDeviceTouchscreen);
2782 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 2809 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
2783 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); 2810 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode());
2784 EXPECT_EQ(3U, sink_->message_count()); 2811 EXPECT_EQ(3U, sink_->message_count());
2785 } 2812 }
2786 2813
2787 } // namespace content 2814 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/compositor/delegated_frame_host.cc ('k') | content/content_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698