| OLD | NEW |
| 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/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/synchronization/lock.h" | 10 #include "base/synchronization/lock.h" |
| (...skipping 922 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 933 } | 933 } |
| 934 | 934 |
| 935 virtual void AfterTest() OVERRIDE {} | 935 virtual void AfterTest() OVERRIDE {} |
| 936 | 936 |
| 937 private: | 937 private: |
| 938 bool done_; | 938 bool done_; |
| 939 }; | 939 }; |
| 940 | 940 |
| 941 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestCanDrawBlocksDrawing); | 941 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestCanDrawBlocksDrawing); |
| 942 | 942 |
| 943 // beginLayerWrite should prevent draws from executing until a commit occurs | |
| 944 class LayerTreeHostTestWriteLayersRedraw : public LayerTreeHostTest { | |
| 945 public: | |
| 946 LayerTreeHostTestWriteLayersRedraw() : num_commits_(0), num_draws_(0) {} | |
| 947 | |
| 948 virtual void BeginTest() OVERRIDE { | |
| 949 PostAcquireLayerTextures(); | |
| 950 PostSetNeedsRedrawToMainThread(); // should be inhibited without blocking | |
| 951 PostSetNeedsCommitToMainThread(); | |
| 952 } | |
| 953 | |
| 954 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { | |
| 955 num_draws_++; | |
| 956 EXPECT_EQ(num_draws_, num_commits_); | |
| 957 } | |
| 958 | |
| 959 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { | |
| 960 num_commits_++; | |
| 961 EndTest(); | |
| 962 } | |
| 963 | |
| 964 virtual void AfterTest() OVERRIDE { EXPECT_EQ(1, num_commits_); } | |
| 965 | |
| 966 private: | |
| 967 int num_commits_; | |
| 968 int num_draws_; | |
| 969 }; | |
| 970 | |
| 971 MULTI_THREAD_TEST_F(LayerTreeHostTestWriteLayersRedraw); | |
| 972 | |
| 973 // Verify that when resuming visibility, Requesting layer write permission | |
| 974 // will not deadlock the main thread even though there are not yet any | |
| 975 // scheduled redraws. This behavior is critical for reliably surviving tab | |
| 976 // switching. There are no failure conditions to this test, it just passes | |
| 977 // by not timing out. | |
| 978 class LayerTreeHostTestWriteLayersAfterVisible : public LayerTreeHostTest { | |
| 979 public: | |
| 980 LayerTreeHostTestWriteLayersAfterVisible() : num_commits_(0) {} | |
| 981 | |
| 982 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } | |
| 983 | |
| 984 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { | |
| 985 num_commits_++; | |
| 986 if (num_commits_ == 2) | |
| 987 EndTest(); | |
| 988 else if (num_commits_ < 2) { | |
| 989 PostSetVisibleToMainThread(false); | |
| 990 PostSetVisibleToMainThread(true); | |
| 991 PostAcquireLayerTextures(); | |
| 992 PostSetNeedsCommitToMainThread(); | |
| 993 } | |
| 994 } | |
| 995 | |
| 996 virtual void AfterTest() OVERRIDE {} | |
| 997 | |
| 998 private: | |
| 999 int num_commits_; | |
| 1000 }; | |
| 1001 | |
| 1002 MULTI_THREAD_TEST_F(LayerTreeHostTestWriteLayersAfterVisible); | |
| 1003 | |
| 1004 // A compositeAndReadback while invisible should force a normal commit without | 943 // A compositeAndReadback while invisible should force a normal commit without |
| 1005 // assertion. | 944 // assertion. |
| 1006 class LayerTreeHostTestCompositeAndReadbackWhileInvisible | 945 class LayerTreeHostTestCompositeAndReadbackWhileInvisible |
| 1007 : public LayerTreeHostTest { | 946 : public LayerTreeHostTest { |
| 1008 public: | 947 public: |
| 1009 LayerTreeHostTestCompositeAndReadbackWhileInvisible() : num_commits_(0) {} | 948 LayerTreeHostTestCompositeAndReadbackWhileInvisible() : num_commits_(0) {} |
| 1010 | 949 |
| 1011 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } | 950 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 1012 | 951 |
| 1013 virtual void DidCommitAndDrawFrame() OVERRIDE { | 952 virtual void DidCommitAndDrawFrame() OVERRIDE { |
| (...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1870 virtual void BeginTest() OVERRIDE { | 1809 virtual void BeginTest() OVERRIDE { |
| 1871 layer_tree_host()->SetNeedsRedraw(); | 1810 layer_tree_host()->SetNeedsRedraw(); |
| 1872 PostSetNeedsCommitToMainThread(); | 1811 PostSetNeedsCommitToMainThread(); |
| 1873 } | 1812 } |
| 1874 | 1813 |
| 1875 virtual void DidCommitAndDrawFrame() OVERRIDE { | 1814 virtual void DidCommitAndDrawFrame() OVERRIDE { |
| 1876 if (once_) | 1815 if (once_) |
| 1877 return; | 1816 return; |
| 1878 once_ = true; | 1817 once_ = true; |
| 1879 layer_tree_host()->SetNeedsRedraw(); | 1818 layer_tree_host()->SetNeedsRedraw(); |
| 1880 layer_tree_host()->AcquireLayerTextures(); | |
| 1881 { | 1819 { |
| 1882 base::AutoLock lock(lock_); | 1820 base::AutoLock lock(lock_); |
| 1883 draw_count_ = 0; | 1821 draw_count_ = 0; |
| 1884 } | 1822 } |
| 1885 layer_tree_host()->FinishAllRendering(); | 1823 layer_tree_host()->FinishAllRendering(); |
| 1886 { | 1824 { |
| 1887 base::AutoLock lock(lock_); | 1825 base::AutoLock lock(lock_); |
| 1888 EXPECT_EQ(0, draw_count_); | 1826 EXPECT_EQ(0, draw_count_); |
| 1889 } | 1827 } |
| 1890 EndTest(); | 1828 EndTest(); |
| (...skipping 3391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5282 const gfx::Size bounds_; | 5220 const gfx::Size bounds_; |
| 5283 FakeContentLayerClient client_; | 5221 FakeContentLayerClient client_; |
| 5284 scoped_refptr<ContentLayerWithUpdateTracking> content_layer_; | 5222 scoped_refptr<ContentLayerWithUpdateTracking> content_layer_; |
| 5285 scoped_refptr<FakePictureLayer> picture_layer_; | 5223 scoped_refptr<FakePictureLayer> picture_layer_; |
| 5286 Layer* child_layer_; | 5224 Layer* child_layer_; |
| 5287 }; | 5225 }; |
| 5288 | 5226 |
| 5289 MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousPainting); | 5227 MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousPainting); |
| 5290 | 5228 |
| 5291 } // namespace cc | 5229 } // namespace cc |
| OLD | NEW |