| 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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 using ui::WebInputEventTraits; | 112 using ui::WebInputEventTraits; |
| 113 | 113 |
| 114 namespace content { | 114 namespace content { |
| 115 | 115 |
| 116 void InstallDelegatedFrameHostClient( | 116 void InstallDelegatedFrameHostClient( |
| 117 RenderWidgetHostViewAura* render_widget_host_view, | 117 RenderWidgetHostViewAura* render_widget_host_view, |
| 118 std::unique_ptr<DelegatedFrameHostClient> delegated_frame_host_client); | 118 std::unique_ptr<DelegatedFrameHostClient> delegated_frame_host_client); |
| 119 | 119 |
| 120 namespace { | 120 namespace { |
| 121 | 121 |
| 122 const cc::LocalSurfaceId kArbitraryLocalSurfaceId( |
| 123 1, |
| 124 base::UnguessableToken::Deserialize(2, 3)); |
| 125 |
| 126 cc::LocalSurfaceId CreateLocalSurfaceId() { |
| 127 return cc::LocalSurfaceId(1, base::UnguessableToken::Create()); |
| 128 } |
| 129 |
| 122 class TestOverscrollDelegate : public OverscrollControllerDelegate { | 130 class TestOverscrollDelegate : public OverscrollControllerDelegate { |
| 123 public: | 131 public: |
| 124 explicit TestOverscrollDelegate(RenderWidgetHostView* view) | 132 explicit TestOverscrollDelegate(RenderWidgetHostView* view) |
| 125 : view_(view), | 133 : view_(view), |
| 126 current_mode_(OVERSCROLL_NONE), | 134 current_mode_(OVERSCROLL_NONE), |
| 127 completed_mode_(OVERSCROLL_NONE), | 135 completed_mode_(OVERSCROLL_NONE), |
| 128 delta_x_(0.f), | 136 delta_x_(0.f), |
| 129 delta_y_(0.f) {} | 137 delta_y_(0.f) {} |
| 130 | 138 |
| 131 ~TestOverscrollDelegate() override {} | 139 ~TestOverscrollDelegate() override {} |
| (...skipping 1790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1922 gfx::Rect()); | 1930 gfx::Rect()); |
| 1923 view_->SetSize(view_size); | 1931 view_->SetSize(view_size); |
| 1924 view_->Show(); | 1932 view_->Show(); |
| 1925 sink_->ClearMessages(); | 1933 sink_->ClearMessages(); |
| 1926 | 1934 |
| 1927 // Submit a frame with resources. | 1935 // Submit a frame with resources. |
| 1928 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, view_size, view_rect); | 1936 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, view_size, view_rect); |
| 1929 cc::TransferableResource resource; | 1937 cc::TransferableResource resource; |
| 1930 resource.id = 1; | 1938 resource.id = 1; |
| 1931 frame.resource_list.push_back(resource); | 1939 frame.resource_list.push_back(resource); |
| 1932 view_->OnSwapCompositorFrame(0, std::move(frame)); | 1940 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
| 1933 EXPECT_EQ(0u, sink_->message_count()); | 1941 EXPECT_EQ(0u, sink_->message_count()); |
| 1934 | 1942 |
| 1935 // Swap another CompositorFrame but this time from another | 1943 // Swap another CompositorFrame but this time from another |
| 1936 // compositor_frame_sink_id. The resources for the previous frame are old and | 1944 // compositor_frame_sink_id. The resources for the previous frame are old and |
| 1937 // should not be returned. | 1945 // should not be returned. |
| 1938 view_->OnSwapCompositorFrame(1, | 1946 view_->OnSwapCompositorFrame(1, CreateLocalSurfaceId(), |
| 1939 MakeDelegatedFrame(1.f, view_size, view_rect)); | 1947 MakeDelegatedFrame(1.f, view_size, view_rect)); |
| 1940 EXPECT_EQ(0u, sink_->message_count()); | 1948 EXPECT_EQ(0u, sink_->message_count()); |
| 1941 | 1949 |
| 1942 // Report that the surface is drawn to trigger an ACK. | 1950 // Report that the surface is drawn to trigger an ACK. |
| 1943 cc::Surface* surface = manager->GetSurfaceForId(view_->surface_id()); | 1951 cc::Surface* surface = manager->GetSurfaceForId(view_->surface_id()); |
| 1944 EXPECT_TRUE(surface); | 1952 EXPECT_TRUE(surface); |
| 1945 surface->RunDrawCallbacks(); | 1953 surface->RunDrawCallbacks(); |
| 1946 EXPECT_EQ(1u, sink_->message_count()); | 1954 EXPECT_EQ(1u, sink_->message_count()); |
| 1947 { | 1955 { |
| 1948 const IPC::Message* msg = sink_->GetMessageAt(0); | 1956 const IPC::Message* msg = sink_->GetMessageAt(0); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1974 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); | 1982 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); |
| 1975 ViewMsg_Resize::Param params; | 1983 ViewMsg_Resize::Param params; |
| 1976 ViewMsg_Resize::Read(msg, ¶ms); | 1984 ViewMsg_Resize::Read(msg, ¶ms); |
| 1977 EXPECT_EQ( | 1985 EXPECT_EQ( |
| 1978 "0,0 800x600", | 1986 "0,0 800x600", |
| 1979 std::get<0>(params).screen_info.available_rect.ToString()); | 1987 std::get<0>(params).screen_info.available_rect.ToString()); |
| 1980 EXPECT_EQ("800x600", std::get<0>(params).new_size.ToString()); | 1988 EXPECT_EQ("800x600", std::get<0>(params).new_size.ToString()); |
| 1981 // Resizes are blocked until we swapped a frame of the correct size, and | 1989 // Resizes are blocked until we swapped a frame of the correct size, and |
| 1982 // we've committed it. | 1990 // we've committed it. |
| 1983 view_->OnSwapCompositorFrame( | 1991 view_->OnSwapCompositorFrame( |
| 1984 0, MakeDelegatedFrame(1.f, std::get<0>(params).new_size, | 1992 0, kArbitraryLocalSurfaceId, |
| 1985 gfx::Rect(std::get<0>(params).new_size))); | 1993 MakeDelegatedFrame(1.f, std::get<0>(params).new_size, |
| 1994 gfx::Rect(std::get<0>(params).new_size))); |
| 1986 ui::DrawWaiterForTest::WaitForCommit( | 1995 ui::DrawWaiterForTest::WaitForCommit( |
| 1987 root_window->GetHost()->compositor()); | 1996 root_window->GetHost()->compositor()); |
| 1988 } | 1997 } |
| 1989 | 1998 |
| 1990 widget_host_->ResetSizeAndRepaintPendingFlags(); | 1999 widget_host_->ResetSizeAndRepaintPendingFlags(); |
| 1991 sink_->ClearMessages(); | 2000 sink_->ClearMessages(); |
| 1992 | 2001 |
| 1993 // Make sure the corrent screen size is set along in the resize | 2002 // Make sure the corrent screen size is set along in the resize |
| 1994 // request when the screen size has changed. | 2003 // request when the screen size has changed. |
| 1995 aura_test_helper_->test_screen()->SetUIScale(0.5); | 2004 aura_test_helper_->test_screen()->SetUIScale(0.5); |
| 1996 EXPECT_EQ(1u, sink_->message_count()); | 2005 EXPECT_EQ(1u, sink_->message_count()); |
| 1997 { | 2006 { |
| 1998 const IPC::Message* msg = sink_->GetMessageAt(0); | 2007 const IPC::Message* msg = sink_->GetMessageAt(0); |
| 1999 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); | 2008 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); |
| 2000 ViewMsg_Resize::Param params; | 2009 ViewMsg_Resize::Param params; |
| 2001 ViewMsg_Resize::Read(msg, ¶ms); | 2010 ViewMsg_Resize::Read(msg, ¶ms); |
| 2002 EXPECT_EQ( | 2011 EXPECT_EQ( |
| 2003 "0,0 1600x1200", | 2012 "0,0 1600x1200", |
| 2004 std::get<0>(params).screen_info.available_rect.ToString()); | 2013 std::get<0>(params).screen_info.available_rect.ToString()); |
| 2005 EXPECT_EQ("1600x1200", std::get<0>(params).new_size.ToString()); | 2014 EXPECT_EQ("1600x1200", std::get<0>(params).new_size.ToString()); |
| 2006 view_->OnSwapCompositorFrame( | 2015 view_->OnSwapCompositorFrame( |
| 2007 0, MakeDelegatedFrame(1.f, std::get<0>(params).new_size, | 2016 0, kArbitraryLocalSurfaceId, |
| 2008 gfx::Rect(std::get<0>(params).new_size))); | 2017 MakeDelegatedFrame(1.f, std::get<0>(params).new_size, |
| 2018 gfx::Rect(std::get<0>(params).new_size))); |
| 2009 ui::DrawWaiterForTest::WaitForCommit( | 2019 ui::DrawWaiterForTest::WaitForCommit( |
| 2010 root_window->GetHost()->compositor()); | 2020 root_window->GetHost()->compositor()); |
| 2011 } | 2021 } |
| 2012 } | 2022 } |
| 2013 | 2023 |
| 2014 // Swapping a frame should notify the window. | 2024 // Swapping a frame should notify the window. |
| 2015 TEST_F(RenderWidgetHostViewAuraTest, SwapNotifiesWindow) { | 2025 TEST_F(RenderWidgetHostViewAuraTest, SwapNotifiesWindow) { |
| 2016 gfx::Size view_size(100, 100); | 2026 gfx::Size view_size(100, 100); |
| 2017 gfx::Rect view_rect(view_size); | 2027 gfx::Rect view_rect(view_size); |
| 2018 | 2028 |
| 2019 view_->InitAsChild(nullptr); | 2029 view_->InitAsChild(nullptr); |
| 2020 aura::client::ParentWindowWithContext( | 2030 aura::client::ParentWindowWithContext( |
| 2021 view_->GetNativeView(), | 2031 view_->GetNativeView(), |
| 2022 parent_view_->GetNativeView()->GetRootWindow(), | 2032 parent_view_->GetNativeView()->GetRootWindow(), |
| 2023 gfx::Rect()); | 2033 gfx::Rect()); |
| 2024 view_->SetSize(view_size); | 2034 view_->SetSize(view_size); |
| 2025 view_->Show(); | 2035 view_->Show(); |
| 2026 | 2036 |
| 2027 MockWindowObserver observer; | 2037 MockWindowObserver observer; |
| 2028 view_->window_->AddObserver(&observer); | 2038 view_->window_->AddObserver(&observer); |
| 2029 | 2039 |
| 2030 // Delegated renderer path | 2040 // Delegated renderer path |
| 2031 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2041 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
| 2032 view_->OnSwapCompositorFrame( | 2042 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, |
| 2033 0, MakeDelegatedFrame(1.f, view_size, view_rect)); | 2043 MakeDelegatedFrame(1.f, view_size, view_rect)); |
| 2034 testing::Mock::VerifyAndClearExpectations(&observer); | 2044 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2035 | 2045 |
| 2036 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, | 2046 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, |
| 2037 gfx::Rect(5, 5, 5, 5))); | 2047 gfx::Rect(5, 5, 5, 5))); |
| 2038 view_->OnSwapCompositorFrame( | 2048 view_->OnSwapCompositorFrame( |
| 2039 0, MakeDelegatedFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5))); | 2049 0, kArbitraryLocalSurfaceId, |
| 2050 MakeDelegatedFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5))); |
| 2040 testing::Mock::VerifyAndClearExpectations(&observer); | 2051 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2041 | 2052 |
| 2042 view_->window_->RemoveObserver(&observer); | 2053 view_->window_->RemoveObserver(&observer); |
| 2043 } | 2054 } |
| 2044 | 2055 |
| 2045 // Mirroring the layers for a window should cause Surface destruction to | 2056 // Mirroring the layers for a window should cause Surface destruction to |
| 2046 // depend on both layers. | 2057 // depend on both layers. |
| 2047 TEST_F(RenderWidgetHostViewAuraTest, MirrorLayers) { | 2058 TEST_F(RenderWidgetHostViewAuraTest, MirrorLayers) { |
| 2048 gfx::Size view_size(100, 100); | 2059 gfx::Size view_size(100, 100); |
| 2049 gfx::Rect view_rect(view_size); | 2060 gfx::Rect view_rect(view_size); |
| 2050 aura::Window* const root = parent_view_->GetNativeView()->GetRootWindow(); | 2061 aura::Window* const root = parent_view_->GetNativeView()->GetRootWindow(); |
| 2051 | 2062 |
| 2052 view_->InitAsChild(nullptr); | 2063 view_->InitAsChild(nullptr); |
| 2053 aura::client::ParentWindowWithContext( | 2064 aura::client::ParentWindowWithContext( |
| 2054 view_->GetNativeView(), root, gfx::Rect()); | 2065 view_->GetNativeView(), root, gfx::Rect()); |
| 2055 view_->SetSize(view_size); | 2066 view_->SetSize(view_size); |
| 2056 view_->Show(); | 2067 view_->Show(); |
| 2057 | 2068 |
| 2058 view_->OnSwapCompositorFrame(0, | 2069 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, |
| 2059 MakeDelegatedFrame(1.f, view_size, view_rect)); | 2070 MakeDelegatedFrame(1.f, view_size, view_rect)); |
| 2060 std::unique_ptr<ui::LayerTreeOwner> mirror(wm::MirrorLayers( | 2071 std::unique_ptr<ui::LayerTreeOwner> mirror(wm::MirrorLayers( |
| 2061 view_->GetNativeView(), false /* sync_bounds */)); | 2072 view_->GetNativeView(), false /* sync_bounds */)); |
| 2062 | 2073 |
| 2063 cc::SurfaceId id = view_->GetDelegatedFrameHost()->SurfaceIdForTesting(); | 2074 cc::SurfaceId id = view_->GetDelegatedFrameHost()->SurfaceIdForTesting(); |
| 2064 if (id.is_valid()) { | 2075 if (id.is_valid()) { |
| 2065 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); | 2076 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
| 2066 cc::SurfaceManager* manager = | 2077 cc::SurfaceManager* manager = |
| 2067 factory->GetContextFactoryPrivate()->GetSurfaceManager(); | 2078 factory->GetContextFactoryPrivate()->GetSurfaceManager(); |
| 2068 cc::Surface* surface = manager->GetSurfaceForId(id); | 2079 cc::Surface* surface = manager->GetSurfaceForId(id); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2091 | 2102 |
| 2092 view_->InitAsChild(nullptr); | 2103 view_->InitAsChild(nullptr); |
| 2093 aura::client::ParentWindowWithContext( | 2104 aura::client::ParentWindowWithContext( |
| 2094 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), | 2105 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), |
| 2095 gfx::Rect()); | 2106 gfx::Rect()); |
| 2096 view_->SetSize(large_size); | 2107 view_->SetSize(large_size); |
| 2097 view_->Show(); | 2108 view_->Show(); |
| 2098 cc::CompositorFrame frame = | 2109 cc::CompositorFrame frame = |
| 2099 MakeDelegatedFrame(1.f, small_size, gfx::Rect(small_size)); | 2110 MakeDelegatedFrame(1.f, small_size, gfx::Rect(small_size)); |
| 2100 frame.metadata.root_background_color = SK_ColorRED; | 2111 frame.metadata.root_background_color = SK_ColorRED; |
| 2101 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2112 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
| 2102 | 2113 |
| 2103 ui::Layer* parent_layer = view_->GetNativeView()->layer(); | 2114 ui::Layer* parent_layer = view_->GetNativeView()->layer(); |
| 2104 | 2115 |
| 2105 ASSERT_EQ(2u, parent_layer->children().size()); | 2116 ASSERT_EQ(2u, parent_layer->children().size()); |
| 2106 EXPECT_EQ(gfx::Rect(40, 0, 60, 100), parent_layer->children()[0]->bounds()); | 2117 EXPECT_EQ(gfx::Rect(40, 0, 60, 100), parent_layer->children()[0]->bounds()); |
| 2107 EXPECT_EQ(SK_ColorRED, parent_layer->children()[0]->background_color()); | 2118 EXPECT_EQ(SK_ColorRED, parent_layer->children()[0]->background_color()); |
| 2108 EXPECT_EQ(gfx::Rect(0, 45, 40, 55), parent_layer->children()[1]->bounds()); | 2119 EXPECT_EQ(gfx::Rect(0, 45, 40, 55), parent_layer->children()[1]->bounds()); |
| 2109 EXPECT_EQ(SK_ColorRED, parent_layer->children()[1]->background_color()); | 2120 EXPECT_EQ(SK_ColorRED, parent_layer->children()[1]->background_color()); |
| 2110 | 2121 |
| 2111 delegates_.back()->set_is_fullscreen(true); | 2122 delegates_.back()->set_is_fullscreen(true); |
| 2112 view_->SetSize(medium_size); | 2123 view_->SetSize(medium_size); |
| 2113 | 2124 |
| 2114 // Right gutter is unnecessary. | 2125 // Right gutter is unnecessary. |
| 2115 ASSERT_EQ(1u, parent_layer->children().size()); | 2126 ASSERT_EQ(1u, parent_layer->children().size()); |
| 2116 EXPECT_EQ(gfx::Rect(0, 45, 40, 50), parent_layer->children()[0]->bounds()); | 2127 EXPECT_EQ(gfx::Rect(0, 45, 40, 50), parent_layer->children()[0]->bounds()); |
| 2117 | 2128 |
| 2118 // RWH is fullscreen, so gutters should be black. | 2129 // RWH is fullscreen, so gutters should be black. |
| 2119 EXPECT_EQ(SK_ColorBLACK, parent_layer->children()[0]->background_color()); | 2130 EXPECT_EQ(SK_ColorBLACK, parent_layer->children()[0]->background_color()); |
| 2120 | 2131 |
| 2121 frame = MakeDelegatedFrame(1.f, medium_size, gfx::Rect(medium_size)); | 2132 frame = MakeDelegatedFrame(1.f, medium_size, gfx::Rect(medium_size)); |
| 2122 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2133 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
| 2123 EXPECT_EQ(0u, parent_layer->children().size()); | 2134 EXPECT_EQ(0u, parent_layer->children().size()); |
| 2124 | 2135 |
| 2125 view_->SetSize(large_size); | 2136 view_->SetSize(large_size); |
| 2126 ASSERT_EQ(2u, parent_layer->children().size()); | 2137 ASSERT_EQ(2u, parent_layer->children().size()); |
| 2127 | 2138 |
| 2128 // This should evict the frame and remove the gutter layers. | 2139 // This should evict the frame and remove the gutter layers. |
| 2129 view_->Hide(); | 2140 view_->Hide(); |
| 2130 view_->SetSize(small_size); | 2141 view_->SetSize(small_size); |
| 2131 ASSERT_EQ(0u, parent_layer->children().size()); | 2142 ASSERT_EQ(0u, parent_layer->children().size()); |
| 2132 } | 2143 } |
| 2133 | 2144 |
| 2134 TEST_F(RenderWidgetHostViewAuraTest, Resize) { | 2145 TEST_F(RenderWidgetHostViewAuraTest, Resize) { |
| 2135 gfx::Size size1(100, 100); | 2146 gfx::Size size1(100, 100); |
| 2136 gfx::Size size2(200, 200); | 2147 gfx::Size size2(200, 200); |
| 2137 gfx::Size size3(300, 300); | 2148 gfx::Size size3(300, 300); |
| 2138 | 2149 |
| 2139 aura::Window* root_window = parent_view_->GetNativeView()->GetRootWindow(); | 2150 aura::Window* root_window = parent_view_->GetNativeView()->GetRootWindow(); |
| 2140 view_->InitAsChild(nullptr); | 2151 view_->InitAsChild(nullptr); |
| 2141 aura::client::ParentWindowWithContext( | 2152 aura::client::ParentWindowWithContext( |
| 2142 view_->GetNativeView(), root_window, gfx::Rect(size1)); | 2153 view_->GetNativeView(), root_window, gfx::Rect(size1)); |
| 2143 view_->Show(); | 2154 view_->Show(); |
| 2144 view_->SetSize(size1); | 2155 view_->SetSize(size1); |
| 2145 view_->OnSwapCompositorFrame( | 2156 view_->OnSwapCompositorFrame( |
| 2146 0, MakeDelegatedFrame(1.f, size1, gfx::Rect(size1))); | 2157 0, kArbitraryLocalSurfaceId, |
| 2158 MakeDelegatedFrame(1.f, size1, gfx::Rect(size1))); |
| 2147 ui::DrawWaiterForTest::WaitForCommit( | 2159 ui::DrawWaiterForTest::WaitForCommit( |
| 2148 root_window->GetHost()->compositor()); | 2160 root_window->GetHost()->compositor()); |
| 2149 ViewHostMsg_UpdateRect_Params update_params; | 2161 ViewHostMsg_UpdateRect_Params update_params; |
| 2150 update_params.view_size = size1; | 2162 update_params.view_size = size1; |
| 2151 update_params.flags = ViewHostMsg_UpdateRect_Flags::IS_RESIZE_ACK; | 2163 update_params.flags = ViewHostMsg_UpdateRect_Flags::IS_RESIZE_ACK; |
| 2152 widget_host_->OnMessageReceived( | 2164 widget_host_->OnMessageReceived( |
| 2153 ViewHostMsg_UpdateRect(widget_host_->GetRoutingID(), update_params)); | 2165 ViewHostMsg_UpdateRect(widget_host_->GetRoutingID(), update_params)); |
| 2154 sink_->ClearMessages(); | 2166 sink_->ClearMessages(); |
| 2155 // Resize logic is idle (no pending resize, no pending commit). | 2167 // Resize logic is idle (no pending resize, no pending commit). |
| 2156 EXPECT_EQ(size1.ToString(), view_->GetRequestedRendererSize().ToString()); | 2168 EXPECT_EQ(size1.ToString(), view_->GetRequestedRendererSize().ToString()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2174 | 2186 |
| 2175 // Resize renderer again, before receiving a frame. Should not produce a | 2187 // Resize renderer again, before receiving a frame. Should not produce a |
| 2176 // Resize message. | 2188 // Resize message. |
| 2177 view_->SetSize(size3); | 2189 view_->SetSize(size3); |
| 2178 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); | 2190 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); |
| 2179 EXPECT_EQ(0u, sink_->message_count()); | 2191 EXPECT_EQ(0u, sink_->message_count()); |
| 2180 | 2192 |
| 2181 // Receive a frame of the new size, should be skipped and not produce a Resize | 2193 // Receive a frame of the new size, should be skipped and not produce a Resize |
| 2182 // message. | 2194 // message. |
| 2183 view_->OnSwapCompositorFrame( | 2195 view_->OnSwapCompositorFrame( |
| 2184 0, MakeDelegatedFrame(1.f, size3, gfx::Rect(size3))); | 2196 0, kArbitraryLocalSurfaceId, |
| 2197 MakeDelegatedFrame(1.f, size3, gfx::Rect(size3))); |
| 2185 // Expect the frame ack; | 2198 // Expect the frame ack; |
| 2186 EXPECT_EQ(1u, sink_->message_count()); | 2199 EXPECT_EQ(1u, sink_->message_count()); |
| 2187 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, | 2200 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, |
| 2188 sink_->GetMessageAt(0)->type()); | 2201 sink_->GetMessageAt(0)->type()); |
| 2189 sink_->ClearMessages(); | 2202 sink_->ClearMessages(); |
| 2190 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); | 2203 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); |
| 2191 | 2204 |
| 2192 // Receive a frame of the correct size, should not be skipped and, and should | 2205 // Receive a frame of the correct size, should not be skipped and, and should |
| 2193 // produce a Resize message after the commit. | 2206 // produce a Resize message after the commit. |
| 2194 view_->OnSwapCompositorFrame( | 2207 view_->OnSwapCompositorFrame( |
| 2195 0, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); | 2208 0, kArbitraryLocalSurfaceId, |
| 2209 MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); |
| 2196 cc::SurfaceId surface_id = view_->surface_id(); | 2210 cc::SurfaceId surface_id = view_->surface_id(); |
| 2197 if (!surface_id.is_valid()) { | 2211 if (!surface_id.is_valid()) { |
| 2198 // No frame ack yet. | 2212 // No frame ack yet. |
| 2199 EXPECT_EQ(0u, sink_->message_count()); | 2213 EXPECT_EQ(0u, sink_->message_count()); |
| 2200 } else { | 2214 } else { |
| 2201 // Frame isn't desired size, so early ack. | 2215 // Frame isn't desired size, so early ack. |
| 2202 EXPECT_EQ(1u, sink_->message_count()); | 2216 EXPECT_EQ(1u, sink_->message_count()); |
| 2203 } | 2217 } |
| 2204 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); | 2218 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); |
| 2205 | 2219 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2256 view_->GetNativeView(), | 2270 view_->GetNativeView(), |
| 2257 parent_view_->GetNativeView()->GetRootWindow(), | 2271 parent_view_->GetNativeView()->GetRootWindow(), |
| 2258 gfx::Rect()); | 2272 gfx::Rect()); |
| 2259 view_->SetSize(view_rect.size()); | 2273 view_->SetSize(view_rect.size()); |
| 2260 | 2274 |
| 2261 MockWindowObserver observer; | 2275 MockWindowObserver observer; |
| 2262 view_->window_->AddObserver(&observer); | 2276 view_->window_->AddObserver(&observer); |
| 2263 | 2277 |
| 2264 // A full frame of damage. | 2278 // A full frame of damage. |
| 2265 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2279 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
| 2266 view_->OnSwapCompositorFrame( | 2280 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, |
| 2267 0, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2281 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2268 testing::Mock::VerifyAndClearExpectations(&observer); | 2282 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2269 view_->RunOnCompositingDidCommit(); | 2283 view_->RunOnCompositingDidCommit(); |
| 2270 | 2284 |
| 2271 // A partial damage frame. | 2285 // A partial damage frame. |
| 2272 gfx::Rect partial_view_rect(30, 30, 20, 20); | 2286 gfx::Rect partial_view_rect(30, 30, 20, 20); |
| 2273 EXPECT_CALL(observer, | 2287 EXPECT_CALL(observer, |
| 2274 OnDelegatedFrameDamage(view_->window_, partial_view_rect)); | 2288 OnDelegatedFrameDamage(view_->window_, partial_view_rect)); |
| 2275 view_->OnSwapCompositorFrame( | 2289 view_->OnSwapCompositorFrame( |
| 2276 0, MakeDelegatedFrame(1.f, frame_size, partial_view_rect)); | 2290 0, kArbitraryLocalSurfaceId, |
| 2291 MakeDelegatedFrame(1.f, frame_size, partial_view_rect)); |
| 2277 testing::Mock::VerifyAndClearExpectations(&observer); | 2292 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2278 view_->RunOnCompositingDidCommit(); | 2293 view_->RunOnCompositingDidCommit(); |
| 2279 | 2294 |
| 2280 // Lock the compositor. Now we should drop frames. | 2295 // Lock the compositor. Now we should drop frames. |
| 2281 view_rect = gfx::Rect(150, 150); | 2296 view_rect = gfx::Rect(150, 150); |
| 2282 view_->SetSize(view_rect.size()); | 2297 view_->SetSize(view_rect.size()); |
| 2283 | 2298 |
| 2284 // This frame is dropped. | 2299 // This frame is dropped. |
| 2285 gfx::Rect dropped_damage_rect_1(10, 20, 30, 40); | 2300 gfx::Rect dropped_damage_rect_1(10, 20, 30, 40); |
| 2286 EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0); | 2301 EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0); |
| 2287 view_->OnSwapCompositorFrame( | 2302 view_->OnSwapCompositorFrame( |
| 2288 0, MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_1)); | 2303 0, kArbitraryLocalSurfaceId, |
| 2304 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_1)); |
| 2289 testing::Mock::VerifyAndClearExpectations(&observer); | 2305 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2290 view_->RunOnCompositingDidCommit(); | 2306 view_->RunOnCompositingDidCommit(); |
| 2291 | 2307 |
| 2292 gfx::Rect dropped_damage_rect_2(40, 50, 10, 20); | 2308 gfx::Rect dropped_damage_rect_2(40, 50, 10, 20); |
| 2293 EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0); | 2309 EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0); |
| 2294 view_->OnSwapCompositorFrame( | 2310 view_->OnSwapCompositorFrame( |
| 2295 0, MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_2)); | 2311 0, kArbitraryLocalSurfaceId, |
| 2312 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_2)); |
| 2296 testing::Mock::VerifyAndClearExpectations(&observer); | 2313 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2297 view_->RunOnCompositingDidCommit(); | 2314 view_->RunOnCompositingDidCommit(); |
| 2298 | 2315 |
| 2299 // Unlock the compositor. This frame should damage everything. | 2316 // Unlock the compositor. This frame should damage everything. |
| 2300 frame_size = view_rect.size(); | 2317 frame_size = view_rect.size(); |
| 2301 | 2318 |
| 2302 gfx::Rect new_damage_rect(5, 6, 10, 10); | 2319 gfx::Rect new_damage_rect(5, 6, 10, 10); |
| 2303 EXPECT_CALL(observer, | 2320 EXPECT_CALL(observer, |
| 2304 OnDelegatedFrameDamage(view_->window_, view_rect)); | 2321 OnDelegatedFrameDamage(view_->window_, view_rect)); |
| 2305 view_->OnSwapCompositorFrame( | 2322 view_->OnSwapCompositorFrame( |
| 2306 0, MakeDelegatedFrame(1.f, frame_size, new_damage_rect)); | 2323 0, kArbitraryLocalSurfaceId, |
| 2324 MakeDelegatedFrame(1.f, frame_size, new_damage_rect)); |
| 2307 testing::Mock::VerifyAndClearExpectations(&observer); | 2325 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2308 view_->RunOnCompositingDidCommit(); | 2326 view_->RunOnCompositingDidCommit(); |
| 2309 | 2327 |
| 2310 // A partial damage frame, this should not be dropped. | 2328 // A partial damage frame, this should not be dropped. |
| 2311 EXPECT_CALL(observer, | 2329 EXPECT_CALL(observer, |
| 2312 OnDelegatedFrameDamage(view_->window_, partial_view_rect)); | 2330 OnDelegatedFrameDamage(view_->window_, partial_view_rect)); |
| 2313 view_->OnSwapCompositorFrame( | 2331 view_->OnSwapCompositorFrame( |
| 2314 0, MakeDelegatedFrame(1.f, frame_size, partial_view_rect)); | 2332 0, kArbitraryLocalSurfaceId, |
| 2333 MakeDelegatedFrame(1.f, frame_size, partial_view_rect)); |
| 2315 testing::Mock::VerifyAndClearExpectations(&observer); | 2334 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2316 view_->RunOnCompositingDidCommit(); | 2335 view_->RunOnCompositingDidCommit(); |
| 2317 | 2336 |
| 2318 | 2337 |
| 2319 // Resize to something empty. | 2338 // Resize to something empty. |
| 2320 view_rect = gfx::Rect(100, 0); | 2339 view_rect = gfx::Rect(100, 0); |
| 2321 view_->SetSize(view_rect.size()); | 2340 view_->SetSize(view_rect.size()); |
| 2322 | 2341 |
| 2323 // We're never expecting empty frames, resize to something non-empty. | 2342 // We're never expecting empty frames, resize to something non-empty. |
| 2324 view_rect = gfx::Rect(100, 100); | 2343 view_rect = gfx::Rect(100, 100); |
| 2325 view_->SetSize(view_rect.size()); | 2344 view_->SetSize(view_rect.size()); |
| 2326 | 2345 |
| 2327 // This frame should not be dropped. | 2346 // This frame should not be dropped. |
| 2328 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2347 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
| 2329 view_->OnSwapCompositorFrame( | 2348 view_->OnSwapCompositorFrame( |
| 2330 0, MakeDelegatedFrame(1.f, view_rect.size(), view_rect)); | 2349 0, kArbitraryLocalSurfaceId, |
| 2350 MakeDelegatedFrame(1.f, view_rect.size(), view_rect)); |
| 2331 testing::Mock::VerifyAndClearExpectations(&observer); | 2351 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2332 view_->RunOnCompositingDidCommit(); | 2352 view_->RunOnCompositingDidCommit(); |
| 2333 | 2353 |
| 2334 view_->window_->RemoveObserver(&observer); | 2354 view_->window_->RemoveObserver(&observer); |
| 2335 } | 2355 } |
| 2336 | 2356 |
| 2337 TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) { | 2357 TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) { |
| 2338 gfx::Rect view_rect(100, 100); | 2358 gfx::Rect view_rect(100, 100); |
| 2339 gfx::Size frame_size = view_rect.size(); | 2359 gfx::Size frame_size = view_rect.size(); |
| 2340 | 2360 |
| 2341 view_->InitAsChild(nullptr); | 2361 view_->InitAsChild(nullptr); |
| 2342 aura::client::ParentWindowWithContext( | 2362 aura::client::ParentWindowWithContext( |
| 2343 view_->GetNativeView(), | 2363 view_->GetNativeView(), |
| 2344 parent_view_->GetNativeView()->GetRootWindow(), | 2364 parent_view_->GetNativeView()->GetRootWindow(), |
| 2345 gfx::Rect()); | 2365 gfx::Rect()); |
| 2346 view_->SetSize(view_rect.size()); | 2366 view_->SetSize(view_rect.size()); |
| 2347 | 2367 |
| 2348 MockWindowObserver observer; | 2368 MockWindowObserver observer; |
| 2349 view_->window_->AddObserver(&observer); | 2369 view_->window_->AddObserver(&observer); |
| 2350 | 2370 |
| 2351 // Swap a frame. | 2371 // Swap a frame. |
| 2352 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2372 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
| 2353 view_->OnSwapCompositorFrame( | 2373 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, |
| 2354 0, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2374 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2355 testing::Mock::VerifyAndClearExpectations(&observer); | 2375 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2356 view_->RunOnCompositingDidCommit(); | 2376 view_->RunOnCompositingDidCommit(); |
| 2357 | 2377 |
| 2358 // Swap a frame with a different surface id. | 2378 // Swap a frame with a different surface id. |
| 2359 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2379 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
| 2360 view_->OnSwapCompositorFrame( | 2380 view_->OnSwapCompositorFrame(1, CreateLocalSurfaceId(), |
| 2361 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2381 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2362 testing::Mock::VerifyAndClearExpectations(&observer); | 2382 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2363 view_->RunOnCompositingDidCommit(); | 2383 view_->RunOnCompositingDidCommit(); |
| 2364 | 2384 |
| 2365 // Swap an empty frame, with a different surface id. | 2385 // Swap an empty frame, with a different surface id. |
| 2366 view_->OnSwapCompositorFrame( | 2386 view_->OnSwapCompositorFrame( |
| 2367 2, MakeDelegatedFrame(1.f, gfx::Size(), gfx::Rect())); | 2387 2, CreateLocalSurfaceId(), |
| 2388 MakeDelegatedFrame(1.f, gfx::Size(), gfx::Rect())); |
| 2368 testing::Mock::VerifyAndClearExpectations(&observer); | 2389 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2369 view_->RunOnCompositingDidCommit(); | 2390 view_->RunOnCompositingDidCommit(); |
| 2370 | 2391 |
| 2371 // Swap another frame, with a different surface id. | 2392 // Swap another frame, with a different surface id. |
| 2372 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2393 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
| 2373 view_->OnSwapCompositorFrame(3, | 2394 view_->OnSwapCompositorFrame(3, CreateLocalSurfaceId(), |
| 2374 MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2395 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2375 testing::Mock::VerifyAndClearExpectations(&observer); | 2396 testing::Mock::VerifyAndClearExpectations(&observer); |
| 2376 view_->RunOnCompositingDidCommit(); | 2397 view_->RunOnCompositingDidCommit(); |
| 2377 | 2398 |
| 2378 view_->window_->RemoveObserver(&observer); | 2399 view_->window_->RemoveObserver(&observer); |
| 2379 } | 2400 } |
| 2380 | 2401 |
| 2381 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) { | 2402 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) { |
| 2382 view_->InitAsChild(nullptr); | 2403 view_->InitAsChild(nullptr); |
| 2383 | 2404 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 2408 views[i]->GetNativeView(), | 2429 views[i]->GetNativeView(), |
| 2409 parent_view_->GetNativeView()->GetRootWindow(), | 2430 parent_view_->GetNativeView()->GetRootWindow(), |
| 2410 gfx::Rect()); | 2431 gfx::Rect()); |
| 2411 views[i]->SetSize(view_rect.size()); | 2432 views[i]->SetSize(view_rect.size()); |
| 2412 } | 2433 } |
| 2413 | 2434 |
| 2414 // Make each renderer visible, and swap a frame on it, then make it invisible. | 2435 // Make each renderer visible, and swap a frame on it, then make it invisible. |
| 2415 for (size_t i = 0; i < renderer_count; ++i) { | 2436 for (size_t i = 0; i < renderer_count; ++i) { |
| 2416 views[i]->Show(); | 2437 views[i]->Show(); |
| 2417 views[i]->OnSwapCompositorFrame( | 2438 views[i]->OnSwapCompositorFrame( |
| 2418 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2439 1, kArbitraryLocalSurfaceId, |
| 2440 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2419 EXPECT_TRUE(views[i]->HasFrameData()); | 2441 EXPECT_TRUE(views[i]->HasFrameData()); |
| 2420 views[i]->Hide(); | 2442 views[i]->Hide(); |
| 2421 } | 2443 } |
| 2422 | 2444 |
| 2423 // There should be max_renderer_frames with a frame in it, and one without it. | 2445 // There should be max_renderer_frames with a frame in it, and one without it. |
| 2424 // Since the logic is LRU eviction, the first one should be without. | 2446 // Since the logic is LRU eviction, the first one should be without. |
| 2425 EXPECT_FALSE(views[0]->HasFrameData()); | 2447 EXPECT_FALSE(views[0]->HasFrameData()); |
| 2426 for (size_t i = 1; i < renderer_count; ++i) | 2448 for (size_t i = 1; i < renderer_count; ++i) |
| 2427 EXPECT_TRUE(views[i]->HasFrameData()); | 2449 EXPECT_TRUE(views[i]->HasFrameData()); |
| 2428 | 2450 |
| 2429 // LRU renderer is [0], make it visible, it shouldn't evict anything yet. | 2451 // LRU renderer is [0], make it visible, it shouldn't evict anything yet. |
| 2430 views[0]->Show(); | 2452 views[0]->Show(); |
| 2431 EXPECT_FALSE(views[0]->HasFrameData()); | 2453 EXPECT_FALSE(views[0]->HasFrameData()); |
| 2432 EXPECT_TRUE(views[1]->HasFrameData()); | 2454 EXPECT_TRUE(views[1]->HasFrameData()); |
| 2433 // Since [0] doesn't have a frame, it should be waiting for the renderer to | 2455 // Since [0] doesn't have a frame, it should be waiting for the renderer to |
| 2434 // give it one. | 2456 // give it one. |
| 2435 EXPECT_TRUE(views[0]->released_front_lock_active()); | 2457 EXPECT_TRUE(views[0]->released_front_lock_active()); |
| 2436 | 2458 |
| 2437 // Swap a frame on it, it should evict the next LRU [1]. | 2459 // Swap a frame on it, it should evict the next LRU [1]. |
| 2438 views[0]->OnSwapCompositorFrame( | 2460 views[0]->OnSwapCompositorFrame( |
| 2439 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2461 1, kArbitraryLocalSurfaceId, |
| 2462 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2440 EXPECT_TRUE(views[0]->HasFrameData()); | 2463 EXPECT_TRUE(views[0]->HasFrameData()); |
| 2441 EXPECT_FALSE(views[1]->HasFrameData()); | 2464 EXPECT_FALSE(views[1]->HasFrameData()); |
| 2442 // Now that [0] got a frame, it shouldn't be waiting any more. | 2465 // Now that [0] got a frame, it shouldn't be waiting any more. |
| 2443 EXPECT_FALSE(views[0]->released_front_lock_active()); | 2466 EXPECT_FALSE(views[0]->released_front_lock_active()); |
| 2444 views[0]->Hide(); | 2467 views[0]->Hide(); |
| 2445 | 2468 |
| 2446 // LRU renderer is [1], still hidden. Swap a frame on it, it should evict | 2469 // LRU renderer is [1], still hidden. Swap a frame on it, it should evict |
| 2447 // the next LRU [2]. | 2470 // the next LRU [2]. |
| 2448 views[1]->OnSwapCompositorFrame( | 2471 views[1]->OnSwapCompositorFrame( |
| 2449 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2472 1, kArbitraryLocalSurfaceId, |
| 2473 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2450 EXPECT_TRUE(views[0]->HasFrameData()); | 2474 EXPECT_TRUE(views[0]->HasFrameData()); |
| 2451 EXPECT_TRUE(views[1]->HasFrameData()); | 2475 EXPECT_TRUE(views[1]->HasFrameData()); |
| 2452 EXPECT_FALSE(views[2]->HasFrameData()); | 2476 EXPECT_FALSE(views[2]->HasFrameData()); |
| 2453 for (size_t i = 3; i < renderer_count; ++i) | 2477 for (size_t i = 3; i < renderer_count; ++i) |
| 2454 EXPECT_TRUE(views[i]->HasFrameData()); | 2478 EXPECT_TRUE(views[i]->HasFrameData()); |
| 2455 | 2479 |
| 2456 // Make all renderers but [0] visible and swap a frame on them, keep [0] | 2480 // Make all renderers but [0] visible and swap a frame on them, keep [0] |
| 2457 // hidden, it becomes the LRU. | 2481 // hidden, it becomes the LRU. |
| 2458 for (size_t i = 1; i < renderer_count; ++i) { | 2482 for (size_t i = 1; i < renderer_count; ++i) { |
| 2459 views[i]->Show(); | 2483 views[i]->Show(); |
| 2460 // The renderers who don't have a frame should be waiting. The ones that | 2484 // The renderers who don't have a frame should be waiting. The ones that |
| 2461 // have a frame should not. | 2485 // have a frame should not. |
| 2462 // In practice, [1] has a frame, but anything after has its frame evicted. | 2486 // In practice, [1] has a frame, but anything after has its frame evicted. |
| 2463 EXPECT_EQ(!views[i]->HasFrameData(), | 2487 EXPECT_EQ(!views[i]->HasFrameData(), |
| 2464 views[i]->released_front_lock_active()); | 2488 views[i]->released_front_lock_active()); |
| 2465 views[i]->OnSwapCompositorFrame( | 2489 views[i]->OnSwapCompositorFrame( |
| 2466 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2490 1, kArbitraryLocalSurfaceId, |
| 2491 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2467 // Now everyone has a frame. | 2492 // Now everyone has a frame. |
| 2468 EXPECT_FALSE(views[i]->released_front_lock_active()); | 2493 EXPECT_FALSE(views[i]->released_front_lock_active()); |
| 2469 EXPECT_TRUE(views[i]->HasFrameData()); | 2494 EXPECT_TRUE(views[i]->HasFrameData()); |
| 2470 } | 2495 } |
| 2471 EXPECT_FALSE(views[0]->HasFrameData()); | 2496 EXPECT_FALSE(views[0]->HasFrameData()); |
| 2472 | 2497 |
| 2473 // Swap a frame on [0], it should be evicted immediately. | 2498 // Swap a frame on [0], it should be evicted immediately. |
| 2474 views[0]->OnSwapCompositorFrame( | 2499 views[0]->OnSwapCompositorFrame( |
| 2475 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2500 1, kArbitraryLocalSurfaceId, |
| 2501 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2476 EXPECT_FALSE(views[0]->HasFrameData()); | 2502 EXPECT_FALSE(views[0]->HasFrameData()); |
| 2477 | 2503 |
| 2478 // Make [0] visible, and swap a frame on it. Nothing should be evicted | 2504 // Make [0] visible, and swap a frame on it. Nothing should be evicted |
| 2479 // although we're above the limit. | 2505 // although we're above the limit. |
| 2480 views[0]->Show(); | 2506 views[0]->Show(); |
| 2481 // We don't have a frame, wait. | 2507 // We don't have a frame, wait. |
| 2482 EXPECT_TRUE(views[0]->released_front_lock_active()); | 2508 EXPECT_TRUE(views[0]->released_front_lock_active()); |
| 2483 views[0]->OnSwapCompositorFrame( | 2509 views[0]->OnSwapCompositorFrame( |
| 2484 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2510 1, kArbitraryLocalSurfaceId, |
| 2511 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2485 EXPECT_FALSE(views[0]->released_front_lock_active()); | 2512 EXPECT_FALSE(views[0]->released_front_lock_active()); |
| 2486 for (size_t i = 0; i < renderer_count; ++i) | 2513 for (size_t i = 0; i < renderer_count; ++i) |
| 2487 EXPECT_TRUE(views[i]->HasFrameData()); | 2514 EXPECT_TRUE(views[i]->HasFrameData()); |
| 2488 | 2515 |
| 2489 // Make [0] hidden, it should evict its frame. | 2516 // Make [0] hidden, it should evict its frame. |
| 2490 views[0]->Hide(); | 2517 views[0]->Hide(); |
| 2491 EXPECT_FALSE(views[0]->HasFrameData()); | 2518 EXPECT_FALSE(views[0]->HasFrameData()); |
| 2492 | 2519 |
| 2493 // Make [0] visible, don't give it a frame, it should be waiting. | 2520 // Make [0] visible, don't give it a frame, it should be waiting. |
| 2494 views[0]->Show(); | 2521 views[0]->Show(); |
| 2495 EXPECT_TRUE(views[0]->released_front_lock_active()); | 2522 EXPECT_TRUE(views[0]->released_front_lock_active()); |
| 2496 // Make [0] hidden, it should stop waiting. | 2523 // Make [0] hidden, it should stop waiting. |
| 2497 views[0]->Hide(); | 2524 views[0]->Hide(); |
| 2498 EXPECT_FALSE(views[0]->released_front_lock_active()); | 2525 EXPECT_FALSE(views[0]->released_front_lock_active()); |
| 2499 | 2526 |
| 2500 // Make [1] hidden, resize it. It should drop its frame. | 2527 // Make [1] hidden, resize it. It should drop its frame. |
| 2501 views[1]->Hide(); | 2528 views[1]->Hide(); |
| 2502 EXPECT_TRUE(views[1]->HasFrameData()); | 2529 EXPECT_TRUE(views[1]->HasFrameData()); |
| 2503 gfx::Size size2(200, 200); | 2530 gfx::Size size2(200, 200); |
| 2504 views[1]->SetSize(size2); | 2531 views[1]->SetSize(size2); |
| 2505 EXPECT_FALSE(views[1]->HasFrameData()); | 2532 EXPECT_FALSE(views[1]->HasFrameData()); |
| 2506 // Show it, it should block until we give it a frame. | 2533 // Show it, it should block until we give it a frame. |
| 2507 views[1]->Show(); | 2534 views[1]->Show(); |
| 2508 EXPECT_TRUE(views[1]->released_front_lock_active()); | 2535 EXPECT_TRUE(views[1]->released_front_lock_active()); |
| 2509 views[1]->OnSwapCompositorFrame( | 2536 views[1]->OnSwapCompositorFrame( |
| 2510 1, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); | 2537 1, kArbitraryLocalSurfaceId, |
| 2538 MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); |
| 2511 EXPECT_FALSE(views[1]->released_front_lock_active()); | 2539 EXPECT_FALSE(views[1]->released_front_lock_active()); |
| 2512 | 2540 |
| 2513 for (size_t i = 0; i < renderer_count - 1; ++i) | 2541 for (size_t i = 0; i < renderer_count - 1; ++i) |
| 2514 views[i]->Hide(); | 2542 views[i]->Hide(); |
| 2515 | 2543 |
| 2516 // Allocate enough bitmaps so that two frames (proportionally) would be | 2544 // Allocate enough bitmaps so that two frames (proportionally) would be |
| 2517 // enough hit the handle limit. | 2545 // enough hit the handle limit. |
| 2518 int handles_per_frame = 5; | 2546 int handles_per_frame = 5; |
| 2519 RendererFrameManager::GetInstance()->set_max_handles(handles_per_frame * 2); | 2547 RendererFrameManager::GetInstance()->set_max_handles(handles_per_frame * 2); |
| 2520 | 2548 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2574 parent_view_->GetNativeView()->GetRootWindow(), | 2602 parent_view_->GetNativeView()->GetRootWindow(), |
| 2575 gfx::Rect()); | 2603 gfx::Rect()); |
| 2576 views[i]->SetSize(view_rect.size()); | 2604 views[i]->SetSize(view_rect.size()); |
| 2577 } | 2605 } |
| 2578 | 2606 |
| 2579 // Make each renderer visible and swap a frame on it. No eviction should | 2607 // Make each renderer visible and swap a frame on it. No eviction should |
| 2580 // occur because all frames are visible. | 2608 // occur because all frames are visible. |
| 2581 for (size_t i = 0; i < renderer_count; ++i) { | 2609 for (size_t i = 0; i < renderer_count; ++i) { |
| 2582 views[i]->Show(); | 2610 views[i]->Show(); |
| 2583 views[i]->OnSwapCompositorFrame( | 2611 views[i]->OnSwapCompositorFrame( |
| 2584 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2612 1, i ? CreateLocalSurfaceId() : kArbitraryLocalSurfaceId, |
| 2613 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2585 EXPECT_TRUE(views[i]->HasFrameData()); | 2614 EXPECT_TRUE(views[i]->HasFrameData()); |
| 2586 } | 2615 } |
| 2587 | 2616 |
| 2588 // If we hide [0], then [0] should be evicted. | 2617 // If we hide [0], then [0] should be evicted. |
| 2589 views[0]->Hide(); | 2618 views[0]->Hide(); |
| 2590 EXPECT_FALSE(views[0]->HasFrameData()); | 2619 EXPECT_FALSE(views[0]->HasFrameData()); |
| 2591 | 2620 |
| 2592 // If we lock [0] before hiding it, then [0] should not be evicted. | 2621 // If we lock [0] before hiding it, then [0] should not be evicted. |
| 2593 views[0]->Show(); | 2622 views[0]->Show(); |
| 2594 views[0]->OnSwapCompositorFrame( | 2623 views[0]->OnSwapCompositorFrame( |
| 2595 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2624 1, kArbitraryLocalSurfaceId, |
| 2625 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2596 EXPECT_TRUE(views[0]->HasFrameData()); | 2626 EXPECT_TRUE(views[0]->HasFrameData()); |
| 2597 views[0]->GetDelegatedFrameHost()->LockResources(); | 2627 views[0]->GetDelegatedFrameHost()->LockResources(); |
| 2598 views[0]->Hide(); | 2628 views[0]->Hide(); |
| 2599 EXPECT_TRUE(views[0]->HasFrameData()); | 2629 EXPECT_TRUE(views[0]->HasFrameData()); |
| 2600 | 2630 |
| 2601 // If we unlock [0] now, then [0] should be evicted. | 2631 // If we unlock [0] now, then [0] should be evicted. |
| 2602 views[0]->GetDelegatedFrameHost()->UnlockResources(); | 2632 views[0]->GetDelegatedFrameHost()->UnlockResources(); |
| 2603 EXPECT_FALSE(views[0]->HasFrameData()); | 2633 EXPECT_FALSE(views[0]->HasFrameData()); |
| 2604 | 2634 |
| 2605 for (size_t i = 0; i < renderer_count; ++i) { | 2635 for (size_t i = 0; i < renderer_count; ++i) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2645 parent_view_->GetNativeView()->GetRootWindow(), | 2675 parent_view_->GetNativeView()->GetRootWindow(), |
| 2646 gfx::Rect()); | 2676 gfx::Rect()); |
| 2647 views[i]->SetSize(view_rect.size()); | 2677 views[i]->SetSize(view_rect.size()); |
| 2648 } | 2678 } |
| 2649 | 2679 |
| 2650 // Make each renderer visible and swap a frame on it. No eviction should | 2680 // Make each renderer visible and swap a frame on it. No eviction should |
| 2651 // occur because all frames are visible. | 2681 // occur because all frames are visible. |
| 2652 for (size_t i = 0; i < renderer_count; ++i) { | 2682 for (size_t i = 0; i < renderer_count; ++i) { |
| 2653 views[i]->Show(); | 2683 views[i]->Show(); |
| 2654 views[i]->OnSwapCompositorFrame( | 2684 views[i]->OnSwapCompositorFrame( |
| 2655 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2685 1, kArbitraryLocalSurfaceId, |
| 2686 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
| 2656 EXPECT_TRUE(views[i]->HasFrameData()); | 2687 EXPECT_TRUE(views[i]->HasFrameData()); |
| 2657 } | 2688 } |
| 2658 | 2689 |
| 2659 // If we hide one, it should not get evicted. | 2690 // If we hide one, it should not get evicted. |
| 2660 views[0]->Hide(); | 2691 views[0]->Hide(); |
| 2661 base::RunLoop().RunUntilIdle(); | 2692 base::RunLoop().RunUntilIdle(); |
| 2662 EXPECT_TRUE(views[0]->HasFrameData()); | 2693 EXPECT_TRUE(views[0]->HasFrameData()); |
| 2663 // Using a lesser memory pressure event however, should evict. | 2694 // Using a lesser memory pressure event however, should evict. |
| 2664 SimulateMemoryPressure( | 2695 SimulateMemoryPressure( |
| 2665 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE); | 2696 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE); |
| 2666 base::RunLoop().RunUntilIdle(); | 2697 base::RunLoop().RunUntilIdle(); |
| 2667 EXPECT_FALSE(views[0]->HasFrameData()); | 2698 EXPECT_FALSE(views[0]->HasFrameData()); |
| 2668 | 2699 |
| 2669 // Check the same for a higher pressure event. | 2700 // Check the same for a higher pressure event. |
| 2670 views[1]->Hide(); | 2701 views[1]->Hide(); |
| 2671 base::RunLoop().RunUntilIdle(); | 2702 base::RunLoop().RunUntilIdle(); |
| 2672 EXPECT_TRUE(views[1]->HasFrameData()); | 2703 EXPECT_TRUE(views[1]->HasFrameData()); |
| 2673 SimulateMemoryPressure( | 2704 SimulateMemoryPressure( |
| 2674 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); | 2705 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); |
| 2675 base::RunLoop().RunUntilIdle(); | 2706 base::RunLoop().RunUntilIdle(); |
| 2676 EXPECT_FALSE(views[1]->HasFrameData()); | 2707 EXPECT_FALSE(views[1]->HasFrameData()); |
| 2677 | 2708 |
| 2678 for (size_t i = 0; i < renderer_count; ++i) { | 2709 for (size_t i = 0; i < renderer_count; ++i) { |
| 2679 views[i]->Destroy(); | 2710 views[i]->Destroy(); |
| 2680 delete hosts[i]; | 2711 delete hosts[i]; |
| 2681 } | 2712 } |
| 2682 } | 2713 } |
| 2683 | 2714 |
| 2684 TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) { | |
| 2685 gfx::Rect view_rect(100, 100); | |
| 2686 gfx::Size frame_size(100, 100); | |
| 2687 | |
| 2688 view_->InitAsChild(nullptr); | |
| 2689 aura::client::ParentWindowWithContext( | |
| 2690 view_->GetNativeView(), | |
| 2691 parent_view_->GetNativeView()->GetRootWindow(), | |
| 2692 gfx::Rect()); | |
| 2693 view_->SetSize(view_rect.size()); | |
| 2694 view_->Show(); | |
| 2695 | |
| 2696 // With a 1x DPI UI and 1x DPI Renderer. | |
| 2697 view_->OnSwapCompositorFrame( | |
| 2698 1, MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size))); | |
| 2699 | |
| 2700 cc::SurfaceId surface_id = view_->surface_id(); | |
| 2701 | |
| 2702 // This frame will have the same number of physical pixels, but has a new | |
| 2703 // scale on it. | |
| 2704 view_->OnSwapCompositorFrame( | |
| 2705 1, MakeDelegatedFrame(2.f, frame_size, gfx::Rect(frame_size))); | |
| 2706 | |
| 2707 // When we get a new frame with the same frame size in physical pixels, but | |
| 2708 // a different scale, we should generate a surface, as the final result will | |
| 2709 // need to be scaled differently to the screen. | |
| 2710 EXPECT_NE(surface_id, view_->surface_id()); | |
| 2711 } | |
| 2712 | |
| 2713 TEST_F(RenderWidgetHostViewAuraTest, SourceEventTypeExistsInLatencyInfo) { | 2715 TEST_F(RenderWidgetHostViewAuraTest, SourceEventTypeExistsInLatencyInfo) { |
| 2714 // WHEEL source exists. | 2716 // WHEEL source exists. |
| 2715 ui::ScrollEvent scroll(ui::ET_SCROLL, gfx::Point(2, 2), ui::EventTimeForNow(), | 2717 ui::ScrollEvent scroll(ui::ET_SCROLL, gfx::Point(2, 2), ui::EventTimeForNow(), |
| 2716 0, 0, 0, 0, 0, 2); | 2718 0, 0, 0, 0, 0, 2); |
| 2717 view_->OnScrollEvent(&scroll); | 2719 view_->OnScrollEvent(&scroll); |
| 2718 EXPECT_EQ(widget_host_->lastWheelOrTouchEventLatencyInfo.source_event_type(), | 2720 EXPECT_EQ(widget_host_->lastWheelOrTouchEventLatencyInfo.source_event_type(), |
| 2719 ui::SourceEventType::WHEEL); | 2721 ui::SourceEventType::WHEEL); |
| 2720 | 2722 |
| 2721 // TOUCH source exists. | 2723 // TOUCH source exists. |
| 2722 ui::TouchEvent press( | 2724 ui::TouchEvent press( |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2779 | 2781 |
| 2780 { | 2782 { |
| 2781 cc::BeginFrameArgs args = | 2783 cc::BeginFrameArgs args = |
| 2782 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 5u); | 2784 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 5u); |
| 2783 source.TestOnBeginFrame(args); | 2785 source.TestOnBeginFrame(args); |
| 2784 | 2786 |
| 2785 // Ack from CompositorFrame is forwarded. | 2787 // Ack from CompositorFrame is forwarded. |
| 2786 cc::BeginFrameAck ack(source_id, 5, 4, 0, true); | 2788 cc::BeginFrameAck ack(source_id, 5, 4, 0, true); |
| 2787 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, frame_size, view_rect); | 2789 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, frame_size, view_rect); |
| 2788 frame.metadata.begin_frame_ack = ack; | 2790 frame.metadata.begin_frame_ack = ack; |
| 2789 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2791 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
| 2790 view_->RunOnCompositingDidCommit(); | 2792 view_->RunOnCompositingDidCommit(); |
| 2791 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); | 2793 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); |
| 2792 } | 2794 } |
| 2793 | 2795 |
| 2794 { | 2796 { |
| 2795 cc::BeginFrameArgs args = | 2797 cc::BeginFrameArgs args = |
| 2796 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 6u); | 2798 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 6u); |
| 2797 source.TestOnBeginFrame(args); | 2799 source.TestOnBeginFrame(args); |
| 2798 | 2800 |
| 2799 // Explicit ack through OnBeginFrameDidNotSwap is forwarded. | 2801 // Explicit ack through OnBeginFrameDidNotSwap is forwarded. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 2812 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 7u); | 2814 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 7u); |
| 2813 source.TestOnBeginFrame(args); | 2815 source.TestOnBeginFrame(args); |
| 2814 | 2816 |
| 2815 // Ack from CompositorFrame is forwarded with old | 2817 // Ack from CompositorFrame is forwarded with old |
| 2816 // latest_confirmed_sequence_number and without damage. | 2818 // latest_confirmed_sequence_number and without damage. |
| 2817 cc::BeginFrameAck ack(source_id, 7, 7, 0, true); | 2819 cc::BeginFrameAck ack(source_id, 7, 7, 0, true); |
| 2818 gfx::Rect dropped_damage_rect(10, 20, 30, 40); | 2820 gfx::Rect dropped_damage_rect(10, 20, 30, 40); |
| 2819 cc::CompositorFrame frame = | 2821 cc::CompositorFrame frame = |
| 2820 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect); | 2822 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect); |
| 2821 frame.metadata.begin_frame_ack = ack; | 2823 frame.metadata.begin_frame_ack = ack; |
| 2822 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2824 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
| 2823 view_->RunOnCompositingDidCommit(); | 2825 view_->RunOnCompositingDidCommit(); |
| 2824 ack.latest_confirmed_sequence_number = 4; | 2826 ack.latest_confirmed_sequence_number = 4; |
| 2825 ack.has_damage = false; | 2827 ack.has_damage = false; |
| 2826 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); | 2828 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); |
| 2827 } | 2829 } |
| 2828 | 2830 |
| 2829 // Change source_id known to the view. This should reset the | 2831 // Change source_id known to the view. This should reset the |
| 2830 // latest_confirmed_sequence_number tracked by the view. | 2832 // latest_confirmed_sequence_number tracked by the view. |
| 2831 source_id = cc::BeginFrameArgs::kManualSourceId; | 2833 source_id = cc::BeginFrameArgs::kManualSourceId; |
| 2832 | 2834 |
| 2833 { | 2835 { |
| 2834 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( | 2836 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( |
| 2835 BEGINFRAME_FROM_HERE, source_id, 10u); | 2837 BEGINFRAME_FROM_HERE, source_id, 10u); |
| 2836 source.TestOnBeginFrame(args); | 2838 source.TestOnBeginFrame(args); |
| 2837 | 2839 |
| 2838 // Ack from CompositorFrame is forwarded with invalid | 2840 // Ack from CompositorFrame is forwarded with invalid |
| 2839 // latest_confirmed_sequence_number and without damage. | 2841 // latest_confirmed_sequence_number and without damage. |
| 2840 cc::BeginFrameAck ack(source_id, 10, 10, 0, true); | 2842 cc::BeginFrameAck ack(source_id, 10, 10, 0, true); |
| 2841 gfx::Rect dropped_damage_rect(10, 20, 30, 40); | 2843 gfx::Rect dropped_damage_rect(10, 20, 30, 40); |
| 2842 cc::CompositorFrame frame = | 2844 cc::CompositorFrame frame = |
| 2843 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect); | 2845 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect); |
| 2844 frame.metadata.begin_frame_ack = ack; | 2846 frame.metadata.begin_frame_ack = ack; |
| 2845 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2847 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
| 2846 view_->RunOnCompositingDidCommit(); | 2848 view_->RunOnCompositingDidCommit(); |
| 2847 ack.latest_confirmed_sequence_number = | 2849 ack.latest_confirmed_sequence_number = |
| 2848 cc::BeginFrameArgs::kInvalidFrameNumber; | 2850 cc::BeginFrameArgs::kInvalidFrameNumber; |
| 2849 ack.has_damage = false; | 2851 ack.has_damage = false; |
| 2850 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); | 2852 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); |
| 2851 } | 2853 } |
| 2852 | 2854 |
| 2853 { | 2855 { |
| 2854 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( | 2856 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( |
| 2855 BEGINFRAME_FROM_HERE, source_id, 11u); | 2857 BEGINFRAME_FROM_HERE, source_id, 11u); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2869 | 2871 |
| 2870 { | 2872 { |
| 2871 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( | 2873 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( |
| 2872 BEGINFRAME_FROM_HERE, source_id, 12u); | 2874 BEGINFRAME_FROM_HERE, source_id, 12u); |
| 2873 source.TestOnBeginFrame(args); | 2875 source.TestOnBeginFrame(args); |
| 2874 | 2876 |
| 2875 // Ack from CompositorFrame is forwarded. | 2877 // Ack from CompositorFrame is forwarded. |
| 2876 cc::BeginFrameAck ack(source_id, 12, 12, 0, true); | 2878 cc::BeginFrameAck ack(source_id, 12, 12, 0, true); |
| 2877 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, frame_size, view_rect); | 2879 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, frame_size, view_rect); |
| 2878 frame.metadata.begin_frame_ack = ack; | 2880 frame.metadata.begin_frame_ack = ack; |
| 2879 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2881 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
| 2880 view_->RunOnCompositingDidCommit(); | 2882 view_->RunOnCompositingDidCommit(); |
| 2881 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); | 2883 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); |
| 2882 } | 2884 } |
| 2883 | 2885 |
| 2884 { | 2886 { |
| 2885 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( | 2887 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( |
| 2886 BEGINFRAME_FROM_HERE, source_id, 13u); | 2888 BEGINFRAME_FROM_HERE, source_id, 13u); |
| 2887 source.TestOnBeginFrame(args); | 2889 source.TestOnBeginFrame(args); |
| 2888 | 2890 |
| 2889 // Explicit ack through OnBeginFrameDidNotSwap is forwarded. | 2891 // Explicit ack through OnBeginFrameDidNotSwap is forwarded. |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2941 } | 2943 } |
| 2942 | 2944 |
| 2943 void InstallFakeTickClock() { | 2945 void InstallFakeTickClock() { |
| 2944 // Create a fake tick clock and transfer ownership to the frame host. | 2946 // Create a fake tick clock and transfer ownership to the frame host. |
| 2945 tick_clock_ = new base::SimpleTestTickClock(); | 2947 tick_clock_ = new base::SimpleTestTickClock(); |
| 2946 view_->GetDelegatedFrameHost()->tick_clock_ = base::WrapUnique(tick_clock_); | 2948 view_->GetDelegatedFrameHost()->tick_clock_ = base::WrapUnique(tick_clock_); |
| 2947 } | 2949 } |
| 2948 | 2950 |
| 2949 void OnSwapCompositorFrame() { | 2951 void OnSwapCompositorFrame() { |
| 2950 view_->OnSwapCompositorFrame( | 2952 view_->OnSwapCompositorFrame( |
| 2951 1, MakeDelegatedFrame(1.f, view_rect_.size(), view_rect_)); | 2953 1, kArbitraryLocalSurfaceId, |
| 2954 MakeDelegatedFrame(1.f, view_rect_.size(), view_rect_)); |
| 2952 cc::SurfaceId surface_id = | 2955 cc::SurfaceId surface_id = |
| 2953 view_->GetDelegatedFrameHost()->SurfaceIdForTesting(); | 2956 view_->GetDelegatedFrameHost()->SurfaceIdForTesting(); |
| 2954 if (surface_id.is_valid()) | 2957 if (surface_id.is_valid()) |
| 2955 view_->GetDelegatedFrameHost()->WillDrawSurface( | 2958 view_->GetDelegatedFrameHost()->WillDrawSurface( |
| 2956 surface_id.local_surface_id(), view_rect_); | 2959 surface_id.local_surface_id(), view_rect_); |
| 2957 ASSERT_TRUE(view_->last_copy_request_); | 2960 ASSERT_TRUE(view_->last_copy_request_); |
| 2958 } | 2961 } |
| 2959 | 2962 |
| 2960 void ReleaseSwappedFrame() { | 2963 void ReleaseSwappedFrame() { |
| 2961 std::unique_ptr<cc::CopyOutputRequest> request = | 2964 std::unique_ptr<cc::CopyOutputRequest> request = |
| (...skipping 2042 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5004 // There is no composition in the beginning. | 5007 // There is no composition in the beginning. |
| 5005 EXPECT_FALSE(has_composition_text()); | 5008 EXPECT_FALSE(has_composition_text()); |
| 5006 SetHasCompositionTextToTrue(); | 5009 SetHasCompositionTextToTrue(); |
| 5007 view->ImeCancelComposition(); | 5010 view->ImeCancelComposition(); |
| 5008 // The composition must have been canceled. | 5011 // The composition must have been canceled. |
| 5009 EXPECT_FALSE(has_composition_text()); | 5012 EXPECT_FALSE(has_composition_text()); |
| 5010 } | 5013 } |
| 5011 } | 5014 } |
| 5012 | 5015 |
| 5013 } // namespace content | 5016 } // namespace content |
| OLD | NEW |