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

Side by Side Diff: cc/trees/layer_tree_host_unittest.cc

Issue 17114008: cc: Remove cc::Thread and cc::ThreadImpl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rm-thread: gutted Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/synchronization/lock.h" 9 #include "base/synchronization/lock.h"
10 #include "cc/animation/timing_function.h" 10 #include "cc/animation/timing_function.h"
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 710
711 EXPECT_NE(first_frame_time_, impl->CurrentFrameTimeTicks()); 711 EXPECT_NE(first_frame_time_, impl->CurrentFrameTimeTicks());
712 EndTest(); 712 EndTest();
713 } 713 }
714 714
715 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 715 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
716 // Ensure there isn't a commit between the two draws, to ensure that a 716 // Ensure there isn't a commit between the two draws, to ensure that a
717 // commit isn't required for updating the current frame time. We can 717 // commit isn't required for updating the current frame time. We can
718 // only check for this in the multi-threaded case, since in the single- 718 // only check for this in the multi-threaded case, since in the single-
719 // threaded case there will always be a commit between consecutive draws. 719 // threaded case there will always be a commit between consecutive draws.
720 if (ImplThread()) 720 if (HasImplThread())
721 EXPECT_EQ(0, frame_); 721 EXPECT_EQ(0, frame_);
722 } 722 }
723 723
724 virtual void AfterTest() OVERRIDE {} 724 virtual void AfterTest() OVERRIDE {}
725 725
726 private: 726 private:
727 int frame_; 727 int frame_;
728 base::TimeTicks first_frame_time_; 728 base::TimeTicks first_frame_time_;
729 }; 729 };
730 730
(...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after
1618 identity_matrix, 1618 identity_matrix,
1619 gfx::PointF(0.f, 0.f), 1619 gfx::PointF(0.f, 0.f),
1620 gfx::PointF(0.f, 0.f), 1620 gfx::PointF(0.f, 0.f),
1621 gfx::Size(10, 20), 1621 gfx::Size(10, 20),
1622 true); 1622 true);
1623 1623
1624 PostSetNeedsCommitToMainThread(); 1624 PostSetNeedsCommitToMainThread();
1625 } 1625 }
1626 1626
1627 void PostEvictTextures() { 1627 void PostEvictTextures() {
1628 DCHECK(ImplThread()); 1628 DCHECK(HasImplThread());
1629 ImplThread()->PostTask( 1629 ImplThreadTaskRunner()->PostTask(
1630 FROM_HERE,
1630 base::Bind(&LayerTreeHostTestEvictTextures::EvictTexturesOnImplThread, 1631 base::Bind(&LayerTreeHostTestEvictTextures::EvictTexturesOnImplThread,
1631 base::Unretained(this))); 1632 base::Unretained(this)));
1632 } 1633 }
1633 1634
1634 void EvictTexturesOnImplThread() { 1635 void EvictTexturesOnImplThread() {
1635 DCHECK(impl_for_evict_textures_); 1636 DCHECK(impl_for_evict_textures_);
1636 impl_for_evict_textures_->EnforceManagedMemoryPolicy( 1637 impl_for_evict_textures_->EnforceManagedMemoryPolicy(
1637 ManagedMemoryPolicy(0)); 1638 ManagedMemoryPolicy(0));
1638 } 1639 }
1639 1640
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1872 proxy->SetLayerTreeHost(this); 1873 proxy->SetLayerTreeHost(this);
1873 EXPECT_TRUE(InitializeForTesting(proxy.PassAs<Proxy>())); 1874 EXPECT_TRUE(InitializeForTesting(proxy.PassAs<Proxy>()));
1874 } 1875 }
1875 }; 1876 };
1876 1877
1877 TEST(LayerTreeHostTest, LimitPartialUpdates) { 1878 TEST(LayerTreeHostTest, LimitPartialUpdates) {
1878 // When partial updates are not allowed, max updates should be 0. 1879 // When partial updates are not allowed, max updates should be 0.
1879 { 1880 {
1880 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); 1881 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D);
1881 1882
1882 scoped_ptr<FakeProxy> proxy = 1883 scoped_ptr<FakeProxy> proxy(new FakeProxy);
1883 make_scoped_ptr(new FakeProxy(scoped_ptr<Thread>()));
1884 proxy->GetRendererCapabilities().allow_partial_texture_updates = false; 1884 proxy->GetRendererCapabilities().allow_partial_texture_updates = false;
1885 proxy->SetMaxPartialTextureUpdates(5); 1885 proxy->SetMaxPartialTextureUpdates(5);
1886 1886
1887 LayerTreeSettings settings; 1887 LayerTreeSettings settings;
1888 settings.max_partial_texture_updates = 10; 1888 settings.max_partial_texture_updates = 10;
1889 1889
1890 LayerTreeHostWithProxy host(&client, settings, proxy.Pass()); 1890 LayerTreeHostWithProxy host(&client, settings, proxy.Pass());
1891 EXPECT_TRUE(host.InitializeOutputSurfaceIfNeeded()); 1891 EXPECT_TRUE(host.InitializeOutputSurfaceIfNeeded());
1892 1892
1893 EXPECT_EQ(0u, host.settings().max_partial_texture_updates); 1893 EXPECT_EQ(0u, host.settings().max_partial_texture_updates);
1894 } 1894 }
1895 1895
1896 // When partial updates are allowed, 1896 // When partial updates are allowed,
1897 // max updates should be limited by the proxy. 1897 // max updates should be limited by the proxy.
1898 { 1898 {
1899 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); 1899 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D);
1900 1900
1901 scoped_ptr<FakeProxy> proxy = 1901 scoped_ptr<FakeProxy> proxy(new FakeProxy);
1902 make_scoped_ptr(new FakeProxy(scoped_ptr<Thread>()));
1903 proxy->GetRendererCapabilities().allow_partial_texture_updates = true; 1902 proxy->GetRendererCapabilities().allow_partial_texture_updates = true;
1904 proxy->SetMaxPartialTextureUpdates(5); 1903 proxy->SetMaxPartialTextureUpdates(5);
1905 1904
1906 LayerTreeSettings settings; 1905 LayerTreeSettings settings;
1907 settings.max_partial_texture_updates = 10; 1906 settings.max_partial_texture_updates = 10;
1908 1907
1909 LayerTreeHostWithProxy host(&client, settings, proxy.Pass()); 1908 LayerTreeHostWithProxy host(&client, settings, proxy.Pass());
1910 EXPECT_TRUE(host.InitializeOutputSurfaceIfNeeded()); 1909 EXPECT_TRUE(host.InitializeOutputSurfaceIfNeeded());
1911 1910
1912 EXPECT_EQ(5u, host.settings().max_partial_texture_updates); 1911 EXPECT_EQ(5u, host.settings().max_partial_texture_updates);
1913 } 1912 }
1914 1913
1915 // When partial updates are allowed, 1914 // When partial updates are allowed,
1916 // max updates should also be limited by the settings. 1915 // max updates should also be limited by the settings.
1917 { 1916 {
1918 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); 1917 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D);
1919 1918
1920 scoped_ptr<FakeProxy> proxy = 1919 scoped_ptr<FakeProxy> proxy(new FakeProxy);
1921 make_scoped_ptr(new FakeProxy(scoped_ptr<Thread>()));
1922 proxy->GetRendererCapabilities().allow_partial_texture_updates = true; 1920 proxy->GetRendererCapabilities().allow_partial_texture_updates = true;
1923 proxy->SetMaxPartialTextureUpdates(20); 1921 proxy->SetMaxPartialTextureUpdates(20);
1924 1922
1925 LayerTreeSettings settings; 1923 LayerTreeSettings settings;
1926 settings.max_partial_texture_updates = 10; 1924 settings.max_partial_texture_updates = 10;
1927 1925
1928 LayerTreeHostWithProxy host(&client, settings, proxy.Pass()); 1926 LayerTreeHostWithProxy host(&client, settings, proxy.Pass());
1929 EXPECT_TRUE(host.InitializeOutputSurfaceIfNeeded()); 1927 EXPECT_TRUE(host.InitializeOutputSurfaceIfNeeded());
1930 1928
1931 EXPECT_EQ(10u, host.settings().max_partial_texture_updates); 1929 EXPECT_EQ(10u, host.settings().max_partial_texture_updates);
1932 } 1930 }
1933 } 1931 }
1934 1932
1935 TEST(LayerTreeHostTest, PartialUpdatesWithGLRenderer) { 1933 TEST(LayerTreeHostTest, PartialUpdatesWithGLRenderer) {
1936 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); 1934 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D);
1937 1935
1938 LayerTreeSettings settings; 1936 LayerTreeSettings settings;
1939 settings.max_partial_texture_updates = 4; 1937 settings.max_partial_texture_updates = 4;
1940 1938
1941 scoped_ptr<LayerTreeHost> host = 1939 scoped_ptr<LayerTreeHost> host = LayerTreeHost::Create(
1942 LayerTreeHost::Create(&client, settings, scoped_ptr<Thread>()); 1940 &client,
1941 settings,
1942 scoped_refptr<base::SingleThreadTaskRunner>());
1943 EXPECT_TRUE(host->InitializeOutputSurfaceIfNeeded()); 1943 EXPECT_TRUE(host->InitializeOutputSurfaceIfNeeded());
1944 EXPECT_EQ(4u, host->settings().max_partial_texture_updates); 1944 EXPECT_EQ(4u, host->settings().max_partial_texture_updates);
1945 } 1945 }
1946 1946
1947 TEST(LayerTreeHostTest, PartialUpdatesWithSoftwareRenderer) { 1947 TEST(LayerTreeHostTest, PartialUpdatesWithSoftwareRenderer) {
1948 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_SOFTWARE); 1948 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_SOFTWARE);
1949 1949
1950 LayerTreeSettings settings; 1950 LayerTreeSettings settings;
1951 settings.max_partial_texture_updates = 4; 1951 settings.max_partial_texture_updates = 4;
1952 1952
1953 scoped_ptr<LayerTreeHost> host = 1953 scoped_ptr<LayerTreeHost> host = LayerTreeHost::Create(
1954 LayerTreeHost::Create(&client, settings, scoped_ptr<Thread>()); 1954 &client,
1955 settings,
1956 scoped_refptr<base::SingleThreadTaskRunner>());
1955 EXPECT_TRUE(host->InitializeOutputSurfaceIfNeeded()); 1957 EXPECT_TRUE(host->InitializeOutputSurfaceIfNeeded());
1956 EXPECT_EQ(4u, host->settings().max_partial_texture_updates); 1958 EXPECT_EQ(4u, host->settings().max_partial_texture_updates);
1957 } 1959 }
1958 1960
1959 TEST(LayerTreeHostTest, PartialUpdatesWithDelegatingRendererAndGLContent) { 1961 TEST(LayerTreeHostTest, PartialUpdatesWithDelegatingRendererAndGLContent) {
1960 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_3D); 1962 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_3D);
1961 1963
1962 LayerTreeSettings settings; 1964 LayerTreeSettings settings;
1963 settings.max_partial_texture_updates = 4; 1965 settings.max_partial_texture_updates = 4;
1964 1966
1965 scoped_ptr<LayerTreeHost> host = 1967 scoped_ptr<LayerTreeHost> host = LayerTreeHost::Create(
1966 LayerTreeHost::Create(&client, settings, scoped_ptr<Thread>()); 1968 &client,
1969 settings,
1970 scoped_refptr<base::SingleThreadTaskRunner>());
1967 EXPECT_TRUE(host->InitializeOutputSurfaceIfNeeded()); 1971 EXPECT_TRUE(host->InitializeOutputSurfaceIfNeeded());
1968 EXPECT_EQ(0u, host->settings().max_partial_texture_updates); 1972 EXPECT_EQ(0u, host->settings().max_partial_texture_updates);
1969 } 1973 }
1970 1974
1971 TEST(LayerTreeHostTest, 1975 TEST(LayerTreeHostTest,
1972 PartialUpdatesWithDelegatingRendererAndSoftwareContent) { 1976 PartialUpdatesWithDelegatingRendererAndSoftwareContent) {
1973 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_SOFTWARE); 1977 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_SOFTWARE);
1974 1978
1975 LayerTreeSettings settings; 1979 LayerTreeSettings settings;
1976 settings.max_partial_texture_updates = 4; 1980 settings.max_partial_texture_updates = 4;
1977 1981
1978 scoped_ptr<LayerTreeHost> host = 1982 scoped_ptr<LayerTreeHost> host = LayerTreeHost::Create(
1979 LayerTreeHost::Create(&client, settings, scoped_ptr<Thread>()); 1983 &client,
1984 settings,
1985 scoped_refptr<base::SingleThreadTaskRunner>());
1980 EXPECT_TRUE(host->InitializeOutputSurfaceIfNeeded()); 1986 EXPECT_TRUE(host->InitializeOutputSurfaceIfNeeded());
1981 EXPECT_EQ(0u, host->settings().max_partial_texture_updates); 1987 EXPECT_EQ(0u, host->settings().max_partial_texture_updates);
1982 } 1988 }
1983 1989
1984 class LayerTreeHostTestCapturePicture : public LayerTreeHostTest { 1990 class LayerTreeHostTestCapturePicture : public LayerTreeHostTest {
1985 public: 1991 public:
1986 LayerTreeHostTestCapturePicture() 1992 LayerTreeHostTestCapturePicture()
1987 : bounds_(gfx::Size(100, 100)), 1993 : bounds_(gfx::Size(100, 100)),
1988 layer_(PictureLayer::Create(&content_client_)) {} 1994 layer_(PictureLayer::Create(&content_client_)) {}
1989 1995
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
2250 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 2256 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
2251 settings->begin_frame_scheduling_enabled = true; 2257 settings->begin_frame_scheduling_enabled = true;
2252 settings->using_synchronous_renderer_compositor = true; 2258 settings->using_synchronous_renderer_compositor = true;
2253 } 2259 }
2254 2260
2255 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 2261 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
2256 2262
2257 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 2263 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
2258 // The BeginFrame notification is turned off now but will get enabled 2264 // The BeginFrame notification is turned off now but will get enabled
2259 // once we return. End test while it's enabled. 2265 // once we return. End test while it's enabled.
2260 ImplThread()->PostTask(base::Bind( 2266 ImplThreadTaskRunner()->PostTask(
2261 &LayerTreeHostTestBeginFrameNotification::EndTest, 2267 FROM_HERE,
2262 base::Unretained(this))); 2268 base::Bind(&LayerTreeHostTestBeginFrameNotification::EndTest,
2269 base::Unretained(this)));
2263 } 2270 }
2264 2271
2265 virtual void AfterTest() OVERRIDE {} 2272 virtual void AfterTest() OVERRIDE {}
2266 }; 2273 };
2267 2274
2268 MULTI_THREAD_TEST_F( 2275 MULTI_THREAD_TEST_F(
2269 LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled); 2276 LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled);
2270 2277
2271 class LayerTreeHostTestUninvertibleTransformDoesNotBlockActivation 2278 class LayerTreeHostTestUninvertibleTransformDoesNotBlockActivation
2272 : public LayerTreeHostTest { 2279 : public LayerTreeHostTest {
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
2820 scoped_ptr<SoftwareOutputDevice>(new SoftwareOutputDevice)) 2827 scoped_ptr<SoftwareOutputDevice>(new SoftwareOutputDevice))
2821 .PassAs<OutputSurface>(); 2828 .PassAs<OutputSurface>();
2822 } 2829 }
2823 2830
2824 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 2831 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
2825 ASSERT_TRUE(host_impl->RootLayer()); 2832 ASSERT_TRUE(host_impl->RootLayer());
2826 FakePictureLayerImpl* layer_impl = 2833 FakePictureLayerImpl* layer_impl =
2827 static_cast<FakePictureLayerImpl*>(host_impl->RootLayer()); 2834 static_cast<FakePictureLayerImpl*>(host_impl->RootLayer());
2828 if (!initialized_gl_) { 2835 if (!initialized_gl_) {
2829 EXPECT_EQ(1u, layer_impl->append_quads_count()); 2836 EXPECT_EQ(1u, layer_impl->append_quads_count());
2830 ImplThread()->PostTask(base::Bind( 2837 ImplThreadTaskRunner()->PostTask(FROM_HERE, base::Bind(
2831 &LayerTreeHostTestDeferredInitialize::DeferredInitializeAndRedraw, 2838 &LayerTreeHostTestDeferredInitialize::DeferredInitializeAndRedraw,
2832 base::Unretained(this), 2839 base::Unretained(this),
2833 base::Unretained(host_impl))); 2840 base::Unretained(host_impl)));
2834 } else { 2841 } else {
2835 EXPECT_EQ(2u, layer_impl->append_quads_count()); 2842 EXPECT_EQ(2u, layer_impl->append_quads_count());
2836 EndTest(); 2843 EndTest();
2837 } 2844 }
2838 } 2845 }
2839 2846
2840 void DeferredInitializeAndRedraw(LayerTreeHostImpl* host_impl) { 2847 void DeferredInitializeAndRedraw(LayerTreeHostImpl* host_impl) {
(...skipping 15 matching lines...) Expand all
2856 private: 2863 private:
2857 FakeContentLayerClient client_; 2864 FakeContentLayerClient client_;
2858 scoped_refptr<FakePictureLayer> layer_; 2865 scoped_refptr<FakePictureLayer> layer_;
2859 bool initialized_gl_; 2866 bool initialized_gl_;
2860 }; 2867 };
2861 2868
2862 MULTI_THREAD_TEST_F(LayerTreeHostTestDeferredInitialize); 2869 MULTI_THREAD_TEST_F(LayerTreeHostTestDeferredInitialize);
2863 2870
2864 } // namespace 2871 } // namespace
2865 } // namespace cc 2872 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698