| 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 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 Loading... |
| 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, ¶ms); | 1676 ViewMsg_ReclaimCompositorResources::Read(msg, ¶ms); |
| 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 Loading... |
| 1702 ViewMsg_ReclaimCompositorResources::Param params; | 1706 ViewMsg_ReclaimCompositorResources::Param params; |
| 1703 ViewMsg_ReclaimCompositorResources::Read(msg, ¶ms); | 1707 ViewMsg_ReclaimCompositorResources::Read(msg, ¶ms); |
| 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 Loading... |
| 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, ¶ms); | 1768 ViewMsg_ReclaimCompositorResources::Read(msg, ¶ms); |
| 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 Loading... |
| 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 |
| OLD | NEW |