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

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

Issue 2403573002: cc: Introduce mechanism to observe CompositorFrames submitted to new surfaceIDs (Closed)
Patch Set: Created 4 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
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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <tuple> 10 #include <tuple>
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 private: 241 private:
242 // Window that we're observing, or nullptr if it's been destroyed. 242 // Window that we're observing, or nullptr if it's been destroyed.
243 aura::Window* window_; 243 aura::Window* window_;
244 244
245 // Was |window_| destroyed? 245 // Was |window_| destroyed?
246 bool destroyed_; 246 bool destroyed_;
247 247
248 DISALLOW_COPY_AND_ASSIGN(TestWindowObserver); 248 DISALLOW_COPY_AND_ASSIGN(TestWindowObserver);
249 }; 249 };
250 250
251 class FakeSurfaceDamageObserver : public cc::SurfaceDamageObserver { 251 class FakeSurfaceManagerObserver : public cc::SurfaceManagerObserver {
252 public: 252 public:
253 void OnSurfaceCreated(const cc::SurfaceId& surface_id,
254 const gfx::Size& frame,
255 float device_scale_factor) override {}
256
253 void OnSurfaceDamaged(const cc::SurfaceId& id, bool* changed) override { 257 void OnSurfaceDamaged(const cc::SurfaceId& id, bool* changed) override {
254 *changed = true; 258 *changed = true;
255 } 259 }
256 }; 260 };
257 261
258 class FakeFrameSubscriber : public RenderWidgetHostViewFrameSubscriber { 262 class FakeFrameSubscriber : public RenderWidgetHostViewFrameSubscriber {
259 public: 263 public:
260 FakeFrameSubscriber(gfx::Size size, base::Callback<void(bool)> callback) 264 FakeFrameSubscriber(gfx::Size size, base::Callback<void(bool)> callback)
261 : size_(size), callback_(callback), should_capture_(true) {} 265 : size_(size), callback_(callback), should_capture_(true) {}
262 266
(...skipping 1372 matching lines...) Expand 10 before | Expand all | Expand 10 after
1635 resource.id = 1; 1639 resource.id = 1;
1636 frame.delegated_frame_data->resource_list.push_back(std::move(resource)); 1640 frame.delegated_frame_data->resource_list.push_back(std::move(resource));
1637 } 1641 }
1638 return frame; 1642 return frame;
1639 } 1643 }
1640 1644
1641 // If the ui::Compositor has been reset then resources are returned back to the 1645 // If the ui::Compositor has been reset then resources are returned back to the
1642 // client in response to the swap. This test verifies that the returned 1646 // client in response to the swap. This test verifies that the returned
1643 // resources are indeed reported as being in response to a swap. 1647 // resources are indeed reported as being in response to a swap.
1644 TEST_F(RenderWidgetHostViewAuraTest, ResettingCompositorReturnsResources) { 1648 TEST_F(RenderWidgetHostViewAuraTest, ResettingCompositorReturnsResources) {
1645 FakeSurfaceDamageObserver damage_observer; 1649 FakeSurfaceManagerObserver manager_observer;
1646 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); 1650 ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
1647 cc::SurfaceManager* manager = factory->GetSurfaceManager(); 1651 cc::SurfaceManager* manager = factory->GetSurfaceManager();
1648 manager->AddObserver(&damage_observer); 1652 manager->AddObserver(&manager_observer);
1649 1653
1650 gfx::Size view_size(100, 100); 1654 gfx::Size view_size(100, 100);
1651 gfx::Rect view_rect(view_size); 1655 gfx::Rect view_rect(view_size);
1652 1656
1653 view_->InitAsChild(nullptr); 1657 view_->InitAsChild(nullptr);
1654 aura::client::ParentWindowWithContext( 1658 aura::client::ParentWindowWithContext(
1655 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), 1659 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
1656 gfx::Rect()); 1660 gfx::Rect());
1657 view_->SetSize(view_size); 1661 view_->SetSize(view_size);
1658 view_->Show(); 1662 view_->Show();
1659 sink_->ClearMessages(); 1663 sink_->ClearMessages();
1660 1664
1661 view_->ResetCompositor(); 1665 view_->ResetCompositor();
1662 1666
1663 // Swapping a frame should trigger a swap ACK IPC because we have reset the 1667 // Swapping a frame should trigger a swap ACK IPC because we have reset the
1664 // compositor. 1668 // compositor.
1665 view_->OnSwapCompositorFrame(0, 1669 view_->OnSwapCompositorFrame(0,
1666 MakeDelegatedFrame(1.f, view_size, view_rect)); 1670 MakeDelegatedFrame(1.f, view_size, view_rect));
1667 EXPECT_EQ(1u, sink_->message_count()); 1671 EXPECT_EQ(1u, sink_->message_count());
1668 { 1672 {
1669 const IPC::Message* msg = sink_->GetMessageAt(0); 1673 const IPC::Message* msg = sink_->GetMessageAt(0);
1670 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type()); 1674 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type());
1671 ViewMsg_ReclaimCompositorResources::Param params; 1675 ViewMsg_ReclaimCompositorResources::Param params;
1672 ViewMsg_ReclaimCompositorResources::Read(msg, &params); 1676 ViewMsg_ReclaimCompositorResources::Read(msg, &params);
1673 EXPECT_EQ(0u, std::get<0>(params)); // compositor_frame_sink_id 1677 EXPECT_EQ(0u, std::get<0>(params)); // compositor_frame_sink_id
1674 EXPECT_TRUE(std::get<1>(params)); // is_swap_ack 1678 EXPECT_TRUE(std::get<1>(params)); // is_swap_ack
1675 } 1679 }
1676 manager->RemoveObserver(&damage_observer); 1680 manager->RemoveObserver(&manager_observer);
1677 } 1681 }
1678 1682
1679 // This test verifies that returned resources do not require a pending ack. 1683 // This test verifies that returned resources do not require a pending ack.
1680 TEST_F(RenderWidgetHostViewAuraTest, ReturnedResources) { 1684 TEST_F(RenderWidgetHostViewAuraTest, ReturnedResources) {
1681 gfx::Size view_size(100, 100); 1685 gfx::Size view_size(100, 100);
1682 gfx::Rect view_rect(view_size); 1686 gfx::Rect view_rect(view_size);
1683 1687
1684 view_->InitAsChild(nullptr); 1688 view_->InitAsChild(nullptr);
1685 aura::client::ParentWindowWithContext( 1689 aura::client::ParentWindowWithContext(
1686 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), 1690 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
(...skipping 15 matching lines...) Expand all
1702 ViewMsg_ReclaimCompositorResources::Param params; 1706 ViewMsg_ReclaimCompositorResources::Param params;
1703 ViewMsg_ReclaimCompositorResources::Read(msg, &params); 1707 ViewMsg_ReclaimCompositorResources::Read(msg, &params);
1704 EXPECT_EQ(0u, std::get<0>(params)); // compositor_frame_sink_id 1708 EXPECT_EQ(0u, std::get<0>(params)); // compositor_frame_sink_id
1705 EXPECT_FALSE(std::get<1>(params)); // is_swap_ack 1709 EXPECT_FALSE(std::get<1>(params)); // is_swap_ack
1706 } 1710 }
1707 } 1711 }
1708 1712
1709 // This test verifies that when the compositor_frame_sink_id changes, then 1713 // This test verifies that when the compositor_frame_sink_id changes, then
1710 // DelegateFrameHost returns compositor resources without a swap ack. 1714 // DelegateFrameHost returns compositor resources without a swap ack.
1711 TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) { 1715 TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) {
1712 FakeSurfaceDamageObserver damage_observer; 1716 FakeSurfaceManagerObserver manager_observer;
1713 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); 1717 ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
1714 cc::SurfaceManager* manager = factory->GetSurfaceManager(); 1718 cc::SurfaceManager* manager = factory->GetSurfaceManager();
1715 manager->AddObserver(&damage_observer); 1719 manager->AddObserver(&manager_observer);
1716 1720
1717 gfx::Size view_size(100, 100); 1721 gfx::Size view_size(100, 100);
1718 gfx::Rect view_rect(view_size); 1722 gfx::Rect view_rect(view_size);
1719 1723
1720 view_->InitAsChild(nullptr); 1724 view_->InitAsChild(nullptr);
1721 aura::client::ParentWindowWithContext( 1725 aura::client::ParentWindowWithContext(
1722 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), 1726 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
1723 gfx::Rect()); 1727 gfx::Rect());
1724 view_->SetSize(view_size); 1728 view_->SetSize(view_size);
1725 view_->Show(); 1729 view_->Show();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1759 EXPECT_EQ(1u, sink_->message_count()); 1763 EXPECT_EQ(1u, sink_->message_count());
1760 { 1764 {
1761 const IPC::Message* msg = sink_->GetMessageAt(0); 1765 const IPC::Message* msg = sink_->GetMessageAt(0);
1762 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type()); 1766 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type());
1763 ViewMsg_ReclaimCompositorResources::Param params; 1767 ViewMsg_ReclaimCompositorResources::Param params;
1764 ViewMsg_ReclaimCompositorResources::Read(msg, &params); 1768 ViewMsg_ReclaimCompositorResources::Read(msg, &params);
1765 EXPECT_EQ(1u, std::get<0>(params)); // compositor_frame_sink_id 1769 EXPECT_EQ(1u, std::get<0>(params)); // compositor_frame_sink_id
1766 EXPECT_EQ(true, std::get<1>(params)); // is_swap_ack 1770 EXPECT_EQ(true, std::get<1>(params)); // is_swap_ack
1767 } 1771 }
1768 1772
1769 manager->RemoveObserver(&damage_observer); 1773 manager->RemoveObserver(&manager_observer);
1770 } 1774 }
1771 1775
1772 // Resizing in fullscreen mode should send the up-to-date screen info. 1776 // Resizing in fullscreen mode should send the up-to-date screen info.
1773 // http://crbug.com/324350 1777 // http://crbug.com/324350
1774 TEST_F(RenderWidgetHostViewAuraTest, DISABLED_FullscreenResize) { 1778 TEST_F(RenderWidgetHostViewAuraTest, DISABLED_FullscreenResize) {
1775 aura::Window* root_window = aura_test_helper_->root_window(); 1779 aura::Window* root_window = aura_test_helper_->root_window();
1776 root_window->SetLayoutManager(new FullscreenLayoutManager(root_window)); 1780 root_window->SetLayoutManager(new FullscreenLayoutManager(root_window));
1777 view_->InitAsFullscreen(parent_view_); 1781 view_->InitAsFullscreen(parent_view_);
1778 view_->Show(); 1782 view_->Show();
1779 widget_host_->ResetSizeAndRepaintPendingFlags(); 1783 widget_host_->ResetSizeAndRepaintPendingFlags();
(...skipping 2843 matching lines...) Expand 10 before | Expand all | Expand 10 after
4623 4627
4624 // Retrieve the selected text from clipboard and verify it is as expected. 4628 // Retrieve the selected text from clipboard and verify it is as expected.
4625 base::string16 result_text; 4629 base::string16 result_text;
4626 clipboard->ReadText(ui::CLIPBOARD_TYPE_SELECTION, &result_text); 4630 clipboard->ReadText(ui::CLIPBOARD_TYPE_SELECTION, &result_text);
4627 EXPECT_EQ(expected_text, result_text); 4631 EXPECT_EQ(expected_text, result_text);
4628 } 4632 }
4629 } 4633 }
4630 #endif 4634 #endif
4631 4635
4632 } // namespace content 4636 } // namespace content
OLDNEW
« cc/surfaces/surface_manager_observer.h ('K') | « cc/surfaces/surface_manager_observer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698