| 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 "ui/compositor/layer.h" | 5 #include "ui/compositor/layer.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 1817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1828 // change. | 1828 // change. |
| 1829 scoped_refptr<cc::Layer> before = child->cc_layer_for_testing(); | 1829 scoped_refptr<cc::Layer> before = child->cc_layer_for_testing(); |
| 1830 child->SetShowSolidColorContent(); | 1830 child->SetShowSolidColorContent(); |
| 1831 EXPECT_TRUE(child->cc_layer_for_testing()); | 1831 EXPECT_TRUE(child->cc_layer_for_testing()); |
| 1832 EXPECT_EQ(before.get(), child->cc_layer_for_testing()); | 1832 EXPECT_EQ(before.get(), child->cc_layer_for_testing()); |
| 1833 | 1833 |
| 1834 // Showing surface content changes the underlying cc layer. | 1834 // Showing surface content changes the underlying cc layer. |
| 1835 before = child->cc_layer_for_testing(); | 1835 before = child->cc_layer_for_testing(); |
| 1836 child->SetShowSurface(cc::SurfaceId(), base::Bind(&FakeSatisfyCallback), | 1836 child->SetShowSurface(cc::SurfaceId(), base::Bind(&FakeSatisfyCallback), |
| 1837 base::Bind(&FakeRequireCallback), gfx::Size(10, 10), | 1837 base::Bind(&FakeRequireCallback), gfx::Size(10, 10), |
| 1838 1.0, gfx::Size(10, 10)); | 1838 1.0); |
| 1839 EXPECT_TRUE(child->cc_layer_for_testing()); | 1839 EXPECT_TRUE(child->cc_layer_for_testing()); |
| 1840 EXPECT_NE(before.get(), child->cc_layer_for_testing()); | 1840 EXPECT_NE(before.get(), child->cc_layer_for_testing()); |
| 1841 | 1841 |
| 1842 // Changing to painted content should change the underlying cc layer. | 1842 // Changing to painted content should change the underlying cc layer. |
| 1843 before = child->cc_layer_for_testing(); | 1843 before = child->cc_layer_for_testing(); |
| 1844 child->SetShowSolidColorContent(); | 1844 child->SetShowSolidColorContent(); |
| 1845 EXPECT_TRUE(child->cc_layer_for_testing()); | 1845 EXPECT_TRUE(child->cc_layer_for_testing()); |
| 1846 EXPECT_NE(before.get(), child->cc_layer_for_testing()); | 1846 EXPECT_NE(before.get(), child->cc_layer_for_testing()); |
| 1847 } | 1847 } |
| 1848 | 1848 |
| 1849 TEST_F(LayerWithDelegateTest, ExternalContentMirroring) { | 1849 TEST_F(LayerWithDelegateTest, ExternalContentMirroring) { |
| 1850 std::unique_ptr<Layer> layer(CreateLayer(LAYER_SOLID_COLOR)); | 1850 std::unique_ptr<Layer> layer(CreateLayer(LAYER_SOLID_COLOR)); |
| 1851 | 1851 |
| 1852 const auto satisfy_callback = base::Bind(&FakeSatisfyCallback); | 1852 const auto satisfy_callback = base::Bind(&FakeSatisfyCallback); |
| 1853 const auto require_callback = base::Bind(&FakeRequireCallback); | 1853 const auto require_callback = base::Bind(&FakeRequireCallback); |
| 1854 | 1854 |
| 1855 cc::SurfaceId surface_id( | 1855 cc::SurfaceId surface_id( |
| 1856 cc::FrameSinkId(0, 1), | 1856 cc::FrameSinkId(0, 1), |
| 1857 cc::LocalFrameId(2, base::UnguessableToken::Create())); | 1857 cc::LocalFrameId(2, base::UnguessableToken::Create())); |
| 1858 layer->SetShowSurface(surface_id, satisfy_callback, require_callback, | 1858 layer->SetShowSurface(surface_id, satisfy_callback, require_callback, |
| 1859 gfx::Size(10, 10), 1.0f, gfx::Size(10, 10)); | 1859 gfx::Size(10, 10), 1.0f); |
| 1860 | 1860 |
| 1861 const auto mirror = layer->Mirror(); | 1861 const auto mirror = layer->Mirror(); |
| 1862 auto* const cc_layer = mirror->cc_layer_for_testing(); | 1862 auto* const cc_layer = mirror->cc_layer_for_testing(); |
| 1863 const auto* surface = static_cast<cc::SurfaceLayer*>(cc_layer); | 1863 const auto* surface = static_cast<cc::SurfaceLayer*>(cc_layer); |
| 1864 | 1864 |
| 1865 // Mirroring preserves surface state. | 1865 // Mirroring preserves surface state. |
| 1866 EXPECT_EQ(surface_id, surface->surface_id()); | 1866 EXPECT_EQ(surface_id, surface->surface_id()); |
| 1867 EXPECT_TRUE(satisfy_callback.Equals(surface->satisfy_callback())); | 1867 EXPECT_TRUE(satisfy_callback.Equals(surface->satisfy_callback())); |
| 1868 EXPECT_TRUE(require_callback.Equals(surface->require_callback())); | 1868 EXPECT_TRUE(require_callback.Equals(surface->require_callback())); |
| 1869 EXPECT_EQ(gfx::Size(10, 10), surface->surface_size()); | 1869 EXPECT_EQ(gfx::Size(10, 10), surface->surface_size()); |
| 1870 EXPECT_EQ(1.0f, surface->surface_scale()); | 1870 EXPECT_EQ(1.0f, surface->surface_scale()); |
| 1871 | 1871 |
| 1872 surface_id = | 1872 surface_id = |
| 1873 cc::SurfaceId(cc::FrameSinkId(1, 2), | 1873 cc::SurfaceId(cc::FrameSinkId(1, 2), |
| 1874 cc::LocalFrameId(3, base::UnguessableToken::Create())); | 1874 cc::LocalFrameId(3, base::UnguessableToken::Create())); |
| 1875 layer->SetShowSurface(surface_id, satisfy_callback, require_callback, | 1875 layer->SetShowSurface(surface_id, satisfy_callback, require_callback, |
| 1876 gfx::Size(20, 20), 2.0f, gfx::Size(20, 20)); | 1876 gfx::Size(20, 20), 2.0f); |
| 1877 | 1877 |
| 1878 // A new cc::Layer should be created for the mirror. | 1878 // A new cc::Layer should be created for the mirror. |
| 1879 EXPECT_NE(cc_layer, mirror->cc_layer_for_testing()); | 1879 EXPECT_NE(cc_layer, mirror->cc_layer_for_testing()); |
| 1880 surface = static_cast<cc::SurfaceLayer*>(mirror->cc_layer_for_testing()); | 1880 surface = static_cast<cc::SurfaceLayer*>(mirror->cc_layer_for_testing()); |
| 1881 | 1881 |
| 1882 // Surface updates propagate to the mirror. | 1882 // Surface updates propagate to the mirror. |
| 1883 EXPECT_EQ(surface_id, surface->surface_id()); | 1883 EXPECT_EQ(surface_id, surface->surface_id()); |
| 1884 EXPECT_EQ(gfx::Size(20, 20), surface->surface_size()); | 1884 EXPECT_EQ(gfx::Size(20, 20), surface->surface_size()); |
| 1885 EXPECT_EQ(2.0f, surface->surface_scale()); | 1885 EXPECT_EQ(2.0f, surface->surface_scale()); |
| 1886 } | 1886 } |
| 1887 | 1887 |
| 1888 // Test if frame size in dip is properly calculated in SetShowSurface |
| 1889 TEST_F(LayerWithDelegateTest, FrameSizeInDip) { |
| 1890 std::unique_ptr<Layer> layer(CreateLayer(LAYER_SOLID_COLOR)); |
| 1891 |
| 1892 const auto satisfy_callback = base::Bind(&FakeSatisfyCallback); |
| 1893 const auto require_callback = base::Bind(&FakeRequireCallback); |
| 1894 |
| 1895 cc::SurfaceId surface_id( |
| 1896 cc::FrameSinkId(0, 1), |
| 1897 cc::LocalFrameId(2, base::UnguessableToken::Create())); |
| 1898 |
| 1899 layer->SetShowSurface(surface_id, satisfy_callback, require_callback, |
| 1900 gfx::Size(30, 40), 2.0f); |
| 1901 |
| 1902 EXPECT_EQ(layer->frame_size_in_dip_for_testing(), gfx::Size(15, 20)); |
| 1903 } |
| 1904 |
| 1888 // Verifies that layer filters still attached after changing implementation | 1905 // Verifies that layer filters still attached after changing implementation |
| 1889 // layer. | 1906 // layer. |
| 1890 TEST_F(LayerWithDelegateTest, LayerFiltersSurvival) { | 1907 TEST_F(LayerWithDelegateTest, LayerFiltersSurvival) { |
| 1891 std::unique_ptr<Layer> layer(CreateLayer(LAYER_TEXTURED)); | 1908 std::unique_ptr<Layer> layer(CreateLayer(LAYER_TEXTURED)); |
| 1892 layer->SetBounds(gfx::Rect(0, 0, 10, 10)); | 1909 layer->SetBounds(gfx::Rect(0, 0, 10, 10)); |
| 1893 EXPECT_TRUE(layer->cc_layer_for_testing()); | 1910 EXPECT_TRUE(layer->cc_layer_for_testing()); |
| 1894 EXPECT_EQ(0u, layer->cc_layer_for_testing()->filters().size()); | 1911 EXPECT_EQ(0u, layer->cc_layer_for_testing()->filters().size()); |
| 1895 | 1912 |
| 1896 layer->SetLayerGrayscale(0.5f); | 1913 layer->SetLayerGrayscale(0.5f); |
| 1897 EXPECT_EQ(layer->layer_grayscale(), 0.5f); | 1914 EXPECT_EQ(layer->layer_grayscale(), 0.5f); |
| 1898 EXPECT_EQ(1u, layer->cc_layer_for_testing()->filters().size()); | 1915 EXPECT_EQ(1u, layer->cc_layer_for_testing()->filters().size()); |
| 1899 | 1916 |
| 1900 // Showing surface content changes the underlying cc layer. | 1917 // Showing surface content changes the underlying cc layer. |
| 1901 scoped_refptr<cc::Layer> before = layer->cc_layer_for_testing(); | 1918 scoped_refptr<cc::Layer> before = layer->cc_layer_for_testing(); |
| 1902 layer->SetShowSurface(cc::SurfaceId(), base::Bind(&FakeSatisfyCallback), | 1919 layer->SetShowSurface(cc::SurfaceId(), base::Bind(&FakeSatisfyCallback), |
| 1903 base::Bind(&FakeRequireCallback), gfx::Size(10, 10), | 1920 base::Bind(&FakeRequireCallback), gfx::Size(10, 10), |
| 1904 1.0, gfx::Size(10, 10)); | 1921 1.0); |
| 1905 EXPECT_EQ(layer->layer_grayscale(), 0.5f); | 1922 EXPECT_EQ(layer->layer_grayscale(), 0.5f); |
| 1906 EXPECT_TRUE(layer->cc_layer_for_testing()); | 1923 EXPECT_TRUE(layer->cc_layer_for_testing()); |
| 1907 EXPECT_NE(before.get(), layer->cc_layer_for_testing()); | 1924 EXPECT_NE(before.get(), layer->cc_layer_for_testing()); |
| 1908 EXPECT_EQ(1u, layer->cc_layer_for_testing()->filters().size()); | 1925 EXPECT_EQ(1u, layer->cc_layer_for_testing()->filters().size()); |
| 1909 } | 1926 } |
| 1910 | 1927 |
| 1911 // Tests Layer::AddThreadedAnimation and Layer::RemoveThreadedAnimation. | 1928 // Tests Layer::AddThreadedAnimation and Layer::RemoveThreadedAnimation. |
| 1912 TEST_F(LayerWithRealCompositorTest, AddRemoveThreadedAnimations) { | 1929 TEST_F(LayerWithRealCompositorTest, AddRemoveThreadedAnimations) { |
| 1913 std::unique_ptr<Layer> root(CreateLayer(LAYER_TEXTURED)); | 1930 std::unique_ptr<Layer> root(CreateLayer(LAYER_TEXTURED)); |
| 1914 std::unique_ptr<Layer> l1(CreateLayer(LAYER_TEXTURED)); | 1931 std::unique_ptr<Layer> l1(CreateLayer(LAYER_TEXTURED)); |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2217 }; | 2234 }; |
| 2218 | 2235 |
| 2219 TEST(LayerDelegateTest, DelegatedFrameDamage) { | 2236 TEST(LayerDelegateTest, DelegatedFrameDamage) { |
| 2220 std::unique_ptr<Layer> layer(new Layer(LAYER_TEXTURED)); | 2237 std::unique_ptr<Layer> layer(new Layer(LAYER_TEXTURED)); |
| 2221 gfx::Rect damage_rect(2, 1, 5, 3); | 2238 gfx::Rect damage_rect(2, 1, 5, 3); |
| 2222 | 2239 |
| 2223 FrameDamageCheckingDelegate delegate; | 2240 FrameDamageCheckingDelegate delegate; |
| 2224 layer->set_delegate(&delegate); | 2241 layer->set_delegate(&delegate); |
| 2225 layer->SetShowSurface(cc::SurfaceId(), base::Bind(&FakeSatisfyCallback), | 2242 layer->SetShowSurface(cc::SurfaceId(), base::Bind(&FakeSatisfyCallback), |
| 2226 base::Bind(&FakeRequireCallback), gfx::Size(10, 10), | 2243 base::Bind(&FakeRequireCallback), gfx::Size(10, 10), |
| 2227 1.0, gfx::Size(10, 10)); | 2244 1.0); |
| 2228 | 2245 |
| 2229 EXPECT_FALSE(delegate.delegated_frame_damage_called()); | 2246 EXPECT_FALSE(delegate.delegated_frame_damage_called()); |
| 2230 layer->OnDelegatedFrameDamage(damage_rect); | 2247 layer->OnDelegatedFrameDamage(damage_rect); |
| 2231 EXPECT_TRUE(delegate.delegated_frame_damage_called()); | 2248 EXPECT_TRUE(delegate.delegated_frame_damage_called()); |
| 2232 EXPECT_EQ(damage_rect, delegate.delegated_frame_damage_rect()); | 2249 EXPECT_EQ(damage_rect, delegate.delegated_frame_damage_rect()); |
| 2233 } | 2250 } |
| 2234 | 2251 |
| 2235 TEST_F(LayerWithRealCompositorTest, CompositorAnimationObserverTest) { | 2252 TEST_F(LayerWithRealCompositorTest, CompositorAnimationObserverTest) { |
| 2236 std::unique_ptr<Layer> root(CreateLayer(LAYER_TEXTURED)); | 2253 std::unique_ptr<Layer> root(CreateLayer(LAYER_TEXTURED)); |
| 2237 | 2254 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2254 layer.set_name("foo"); | 2271 layer.set_name("foo"); |
| 2255 std::unique_ptr<base::trace_event::ConvertableToTraceFormat> debug_info = | 2272 std::unique_ptr<base::trace_event::ConvertableToTraceFormat> debug_info = |
| 2256 layer.TakeDebugInfo(nullptr); | 2273 layer.TakeDebugInfo(nullptr); |
| 2257 std::string trace_format("bar,"); | 2274 std::string trace_format("bar,"); |
| 2258 debug_info->AppendAsTraceFormat(&trace_format); | 2275 debug_info->AppendAsTraceFormat(&trace_format); |
| 2259 std::string expected("bar,{\"layer_name\":\"foo\"}"); | 2276 std::string expected("bar,{\"layer_name\":\"foo\"}"); |
| 2260 EXPECT_EQ(expected, trace_format); | 2277 EXPECT_EQ(expected, trace_format); |
| 2261 } | 2278 } |
| 2262 | 2279 |
| 2263 } // namespace ui | 2280 } // namespace ui |
| OLD | NEW |