| OLD | NEW |
| 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 Loading... |
| 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 FakeSurfaceObserver : public cc::SurfaceObserver { |
| 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 1405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1668 resource.id = 1; | 1672 resource.id = 1; |
| 1669 frame.delegated_frame_data->resource_list.push_back(std::move(resource)); | 1673 frame.delegated_frame_data->resource_list.push_back(std::move(resource)); |
| 1670 } | 1674 } |
| 1671 return frame; | 1675 return frame; |
| 1672 } | 1676 } |
| 1673 | 1677 |
| 1674 // If the ui::Compositor has been reset then resources are returned back to the | 1678 // If the ui::Compositor has been reset then resources are returned back to the |
| 1675 // client in response to the swap. This test verifies that the returned | 1679 // client in response to the swap. This test verifies that the returned |
| 1676 // resources are indeed reported as being in response to a swap. | 1680 // resources are indeed reported as being in response to a swap. |
| 1677 TEST_F(RenderWidgetHostViewAuraTest, ResettingCompositorReturnsResources) { | 1681 TEST_F(RenderWidgetHostViewAuraTest, ResettingCompositorReturnsResources) { |
| 1678 FakeSurfaceDamageObserver damage_observer; | 1682 FakeSurfaceObserver manager_observer; |
| 1679 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); | 1683 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
| 1680 cc::SurfaceManager* manager = factory->GetSurfaceManager(); | 1684 cc::SurfaceManager* manager = factory->GetSurfaceManager(); |
| 1681 manager->AddObserver(&damage_observer); | 1685 manager->AddObserver(&manager_observer); |
| 1682 | 1686 |
| 1683 gfx::Size view_size(100, 100); | 1687 gfx::Size view_size(100, 100); |
| 1684 gfx::Rect view_rect(view_size); | 1688 gfx::Rect view_rect(view_size); |
| 1685 | 1689 |
| 1686 view_->InitAsChild(nullptr); | 1690 view_->InitAsChild(nullptr); |
| 1687 aura::client::ParentWindowWithContext( | 1691 aura::client::ParentWindowWithContext( |
| 1688 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), | 1692 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), |
| 1689 gfx::Rect()); | 1693 gfx::Rect()); |
| 1690 view_->SetSize(view_size); | 1694 view_->SetSize(view_size); |
| 1691 view_->Show(); | 1695 view_->Show(); |
| 1692 sink_->ClearMessages(); | 1696 sink_->ClearMessages(); |
| 1693 | 1697 |
| 1694 view_->ResetCompositor(); | 1698 view_->ResetCompositor(); |
| 1695 | 1699 |
| 1696 // Swapping a frame should trigger a swap ACK IPC because we have reset the | 1700 // Swapping a frame should trigger a swap ACK IPC because we have reset the |
| 1697 // compositor. | 1701 // compositor. |
| 1698 view_->OnSwapCompositorFrame(0, | 1702 view_->OnSwapCompositorFrame(0, |
| 1699 MakeDelegatedFrame(1.f, view_size, view_rect)); | 1703 MakeDelegatedFrame(1.f, view_size, view_rect)); |
| 1700 EXPECT_EQ(1u, sink_->message_count()); | 1704 EXPECT_EQ(1u, sink_->message_count()); |
| 1701 { | 1705 { |
| 1702 const IPC::Message* msg = sink_->GetMessageAt(0); | 1706 const IPC::Message* msg = sink_->GetMessageAt(0); |
| 1703 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type()); | 1707 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type()); |
| 1704 ViewMsg_ReclaimCompositorResources::Param params; | 1708 ViewMsg_ReclaimCompositorResources::Param params; |
| 1705 ViewMsg_ReclaimCompositorResources::Read(msg, ¶ms); | 1709 ViewMsg_ReclaimCompositorResources::Read(msg, ¶ms); |
| 1706 EXPECT_EQ(0u, std::get<0>(params)); // compositor_frame_sink_id | 1710 EXPECT_EQ(0u, std::get<0>(params)); // compositor_frame_sink_id |
| 1707 EXPECT_TRUE(std::get<1>(params)); // is_swap_ack | 1711 EXPECT_TRUE(std::get<1>(params)); // is_swap_ack |
| 1708 } | 1712 } |
| 1709 manager->RemoveObserver(&damage_observer); | 1713 manager->RemoveObserver(&manager_observer); |
| 1710 } | 1714 } |
| 1711 | 1715 |
| 1712 // This test verifies that returned resources do not require a pending ack. | 1716 // This test verifies that returned resources do not require a pending ack. |
| 1713 TEST_F(RenderWidgetHostViewAuraTest, ReturnedResources) { | 1717 TEST_F(RenderWidgetHostViewAuraTest, ReturnedResources) { |
| 1714 gfx::Size view_size(100, 100); | 1718 gfx::Size view_size(100, 100); |
| 1715 gfx::Rect view_rect(view_size); | 1719 gfx::Rect view_rect(view_size); |
| 1716 | 1720 |
| 1717 view_->InitAsChild(nullptr); | 1721 view_->InitAsChild(nullptr); |
| 1718 aura::client::ParentWindowWithContext( | 1722 aura::client::ParentWindowWithContext( |
| 1719 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), | 1723 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1735 ViewMsg_ReclaimCompositorResources::Param params; | 1739 ViewMsg_ReclaimCompositorResources::Param params; |
| 1736 ViewMsg_ReclaimCompositorResources::Read(msg, ¶ms); | 1740 ViewMsg_ReclaimCompositorResources::Read(msg, ¶ms); |
| 1737 EXPECT_EQ(0u, std::get<0>(params)); // compositor_frame_sink_id | 1741 EXPECT_EQ(0u, std::get<0>(params)); // compositor_frame_sink_id |
| 1738 EXPECT_FALSE(std::get<1>(params)); // is_swap_ack | 1742 EXPECT_FALSE(std::get<1>(params)); // is_swap_ack |
| 1739 } | 1743 } |
| 1740 } | 1744 } |
| 1741 | 1745 |
| 1742 // This test verifies that when the compositor_frame_sink_id changes, then | 1746 // This test verifies that when the compositor_frame_sink_id changes, then |
| 1743 // DelegateFrameHost returns compositor resources without a swap ack. | 1747 // DelegateFrameHost returns compositor resources without a swap ack. |
| 1744 TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) { | 1748 TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) { |
| 1745 FakeSurfaceDamageObserver damage_observer; | 1749 FakeSurfaceObserver manager_observer; |
| 1746 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); | 1750 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
| 1747 cc::SurfaceManager* manager = factory->GetSurfaceManager(); | 1751 cc::SurfaceManager* manager = factory->GetSurfaceManager(); |
| 1748 manager->AddObserver(&damage_observer); | 1752 manager->AddObserver(&manager_observer); |
| 1749 | 1753 |
| 1750 gfx::Size view_size(100, 100); | 1754 gfx::Size view_size(100, 100); |
| 1751 gfx::Rect view_rect(view_size); | 1755 gfx::Rect view_rect(view_size); |
| 1752 | 1756 |
| 1753 view_->InitAsChild(nullptr); | 1757 view_->InitAsChild(nullptr); |
| 1754 aura::client::ParentWindowWithContext( | 1758 aura::client::ParentWindowWithContext( |
| 1755 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), | 1759 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), |
| 1756 gfx::Rect()); | 1760 gfx::Rect()); |
| 1757 view_->SetSize(view_size); | 1761 view_->SetSize(view_size); |
| 1758 view_->Show(); | 1762 view_->Show(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1792 EXPECT_EQ(1u, sink_->message_count()); | 1796 EXPECT_EQ(1u, sink_->message_count()); |
| 1793 { | 1797 { |
| 1794 const IPC::Message* msg = sink_->GetMessageAt(0); | 1798 const IPC::Message* msg = sink_->GetMessageAt(0); |
| 1795 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type()); | 1799 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type()); |
| 1796 ViewMsg_ReclaimCompositorResources::Param params; | 1800 ViewMsg_ReclaimCompositorResources::Param params; |
| 1797 ViewMsg_ReclaimCompositorResources::Read(msg, ¶ms); | 1801 ViewMsg_ReclaimCompositorResources::Read(msg, ¶ms); |
| 1798 EXPECT_EQ(1u, std::get<0>(params)); // compositor_frame_sink_id | 1802 EXPECT_EQ(1u, std::get<0>(params)); // compositor_frame_sink_id |
| 1799 EXPECT_EQ(true, std::get<1>(params)); // is_swap_ack | 1803 EXPECT_EQ(true, std::get<1>(params)); // is_swap_ack |
| 1800 } | 1804 } |
| 1801 | 1805 |
| 1802 manager->RemoveObserver(&damage_observer); | 1806 manager->RemoveObserver(&manager_observer); |
| 1803 } | 1807 } |
| 1804 | 1808 |
| 1805 // Resizing in fullscreen mode should send the up-to-date screen info. | 1809 // Resizing in fullscreen mode should send the up-to-date screen info. |
| 1806 // http://crbug.com/324350 | 1810 // http://crbug.com/324350 |
| 1807 TEST_F(RenderWidgetHostViewAuraTest, DISABLED_FullscreenResize) { | 1811 TEST_F(RenderWidgetHostViewAuraTest, DISABLED_FullscreenResize) { |
| 1808 aura::Window* root_window = aura_test_helper_->root_window(); | 1812 aura::Window* root_window = aura_test_helper_->root_window(); |
| 1809 root_window->SetLayoutManager(new FullscreenLayoutManager(root_window)); | 1813 root_window->SetLayoutManager(new FullscreenLayoutManager(root_window)); |
| 1810 view_->InitAsFullscreen(parent_view_); | 1814 view_->InitAsFullscreen(parent_view_); |
| 1811 view_->Show(); | 1815 view_->Show(); |
| 1812 widget_host_->ResetSizeAndRepaintPendingFlags(); | 1816 widget_host_->ResetSizeAndRepaintPendingFlags(); |
| (...skipping 2865 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4678 | 4682 |
| 4679 // Retrieve the selected text from clipboard and verify it is as expected. | 4683 // Retrieve the selected text from clipboard and verify it is as expected. |
| 4680 base::string16 result_text; | 4684 base::string16 result_text; |
| 4681 clipboard->ReadText(ui::CLIPBOARD_TYPE_SELECTION, &result_text); | 4685 clipboard->ReadText(ui::CLIPBOARD_TYPE_SELECTION, &result_text); |
| 4682 EXPECT_EQ(expected_text, result_text); | 4686 EXPECT_EQ(expected_text, result_text); |
| 4683 } | 4687 } |
| 4684 } | 4688 } |
| 4685 #endif | 4689 #endif |
| 4686 | 4690 |
| 4687 } // namespace content | 4691 } // namespace content |
| OLD | NEW |