| 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/synchronization/lock.h" | 9 #include "base/synchronization/lock.h" |
| 10 #include "cc/animation/timing_function.h" | 10 #include "cc/animation/timing_function.h" |
| (...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 743 EXPECT_NE(first_frame_time_, impl->CurrentFrameTimeTicks()); | 743 EXPECT_NE(first_frame_time_, impl->CurrentFrameTimeTicks()); |
| 744 EndTest(); | 744 EndTest(); |
| 745 return; | 745 return; |
| 746 } | 746 } |
| 747 | 747 |
| 748 EXPECT_FALSE(impl->settings().impl_side_painting); | 748 EXPECT_FALSE(impl->settings().impl_side_painting); |
| 749 EndTest(); | 749 EndTest(); |
| 750 } | 750 } |
| 751 | 751 |
| 752 virtual bool CanActivatePendingTree(LayerTreeHostImpl* impl) OVERRIDE { | 752 virtual bool CanActivatePendingTree(LayerTreeHostImpl* impl) OVERRIDE { |
| 753 if (frame_ >= 1) |
| 754 return true; |
| 755 |
| 756 return false; |
| 757 } |
| 758 |
| 759 virtual bool CanActivatePendingTreeIfNeeded(LayerTreeHostImpl* impl) |
| 760 OVERRIDE { |
| 753 frame_++; | 761 frame_++; |
| 754 if (frame_ == 1) { | 762 if (frame_ == 1) { |
| 755 first_frame_time_ = impl->CurrentFrameTimeTicks(); | 763 first_frame_time_ = impl->CurrentFrameTimeTicks(); |
| 756 | 764 |
| 757 // Since base::TimeTicks::Now() uses a low-resolution clock on | 765 // Since base::TimeTicks::Now() uses a low-resolution clock on |
| 758 // Windows, we need to make sure that the clock has incremented past | 766 // Windows, we need to make sure that the clock has incremented past |
| 759 // first_frame_time_. | 767 // first_frame_time_. |
| 760 while (first_frame_time_ == base::TimeTicks::Now()) {} | 768 while (first_frame_time_ == base::TimeTicks::Now()) {} |
| 761 | 769 |
| 762 return false; | 770 return false; |
| (...skipping 2128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2891 } | 2899 } |
| 2892 | 2900 |
| 2893 virtual void SetupTree() OVERRIDE { | 2901 virtual void SetupTree() OVERRIDE { |
| 2894 layer_ = FakePictureLayer::Create(&client_); | 2902 layer_ = FakePictureLayer::Create(&client_); |
| 2895 layer_tree_host()->SetRootLayer(layer_); | 2903 layer_tree_host()->SetRootLayer(layer_); |
| 2896 LayerTreeHostTest::SetupTree(); | 2904 LayerTreeHostTest::SetupTree(); |
| 2897 } | 2905 } |
| 2898 | 2906 |
| 2899 virtual void BeginTest() OVERRIDE { | 2907 virtual void BeginTest() OVERRIDE { |
| 2900 initialized_gl_ = false; | 2908 initialized_gl_ = false; |
| 2909 num_draws_ = 0; |
| 2901 PostSetNeedsCommitToMainThread(); | 2910 PostSetNeedsCommitToMainThread(); |
| 2902 } | 2911 } |
| 2903 | 2912 |
| 2904 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE { | 2913 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE { |
| 2905 scoped_ptr<TestWebGraphicsContext3D> context3d( | 2914 scoped_ptr<TestWebGraphicsContext3D> context3d( |
| 2906 TestWebGraphicsContext3D::Create()); | 2915 TestWebGraphicsContext3D::Create()); |
| 2907 context3d->set_support_swapbuffers_complete_callback(false); | 2916 context3d->set_support_swapbuffers_complete_callback(false); |
| 2908 | 2917 |
| 2909 return FakeOutputSurface::CreateDeferredGL( | 2918 return FakeOutputSurface::CreateDeferredGL( |
| 2910 scoped_ptr<SoftwareOutputDevice>(new SoftwareOutputDevice)) | 2919 scoped_ptr<SoftwareOutputDevice>(new SoftwareOutputDevice)) |
| 2911 .PassAs<OutputSurface>(); | 2920 .PassAs<OutputSurface>(); |
| 2912 } | 2921 } |
| 2913 | 2922 |
| 2914 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 2923 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 2915 ASSERT_TRUE(host_impl->RootLayer()); | 2924 ASSERT_TRUE(host_impl->RootLayer()); |
| 2916 FakePictureLayerImpl* layer_impl = | 2925 FakePictureLayerImpl* layer_impl = |
| 2917 static_cast<FakePictureLayerImpl*>(host_impl->RootLayer()); | 2926 static_cast<FakePictureLayerImpl*>(host_impl->RootLayer()); |
| 2918 if (!initialized_gl_) { | 2927 if (!initialized_gl_) { |
| 2919 EXPECT_EQ(1u, layer_impl->append_quads_count()); | 2928 EXPECT_EQ(1u, layer_impl->append_quads_count()); |
| 2920 ImplThreadTaskRunner()->PostTask(FROM_HERE, base::Bind( | 2929 ImplThreadTaskRunner()->PostTask(FROM_HERE, base::Bind( |
| 2921 &LayerTreeHostTestDeferredInitialize::DeferredInitializeAndRedraw, | 2930 &LayerTreeHostTestDeferredInitialize::DeferredInitializeAndRedraw, |
| 2922 base::Unretained(this), | 2931 base::Unretained(this), |
| 2923 base::Unretained(host_impl))); | 2932 base::Unretained(host_impl))); |
| 2924 } else { | 2933 } else { |
| 2925 EXPECT_EQ(2u, layer_impl->append_quads_count()); | 2934 if (!num_draws_) { |
| 2926 EndTest(); | 2935 EXPECT_EQ(2u, layer_impl->append_quads_count()); |
| 2936 EndTest(); |
| 2937 } |
| 2938 num_draws_++; |
| 2927 } | 2939 } |
| 2928 } | 2940 } |
| 2929 | 2941 |
| 2930 void DeferredInitializeAndRedraw(LayerTreeHostImpl* host_impl) { | 2942 void DeferredInitializeAndRedraw(LayerTreeHostImpl* host_impl) { |
| 2931 EXPECT_TRUE(static_cast<FakeOutputSurface*>(host_impl->output_surface()) | 2943 EXPECT_TRUE(static_cast<FakeOutputSurface*>(host_impl->output_surface()) |
| 2932 ->SetAndInitializeContext3D( | 2944 ->SetAndInitializeContext3D( |
| 2933 scoped_ptr<WebKit::WebGraphicsContext3D>( | 2945 scoped_ptr<WebKit::WebGraphicsContext3D>( |
| 2934 TestWebGraphicsContext3D::Create()))); | 2946 TestWebGraphicsContext3D::Create()))); |
| 2935 initialized_gl_ = true; | 2947 initialized_gl_ = true; |
| 2936 | 2948 |
| 2937 // Force redraw again. | 2949 // Force redraw again. |
| 2938 host_impl->SetNeedsRedrawRect(gfx::Rect(1, 1)); | 2950 host_impl->SetNeedsRedrawRect(gfx::Rect(1, 1)); |
| 2939 | 2951 |
| 2940 // If we didn't swap this begin frame, we need to request another one. | 2952 // If we didn't swap this begin frame, we need to request another one. |
| 2941 host_impl->SetNeedsBeginFrame(true); | 2953 host_impl->SetNeedsBeginFrame(true); |
| 2942 } | 2954 } |
| 2943 | 2955 |
| 2944 virtual void AfterTest() OVERRIDE { | 2956 virtual void AfterTest() OVERRIDE { |
| 2945 EXPECT_TRUE(initialized_gl_); | 2957 EXPECT_TRUE(initialized_gl_); |
| 2946 } | 2958 } |
| 2947 | 2959 |
| 2948 private: | 2960 private: |
| 2949 FakeContentLayerClient client_; | 2961 FakeContentLayerClient client_; |
| 2950 scoped_refptr<FakePictureLayer> layer_; | 2962 scoped_refptr<FakePictureLayer> layer_; |
| 2951 bool initialized_gl_; | 2963 bool initialized_gl_; |
| 2964 int num_draws_; |
| 2952 }; | 2965 }; |
| 2953 | 2966 |
| 2954 MULTI_THREAD_TEST_F(LayerTreeHostTestDeferredInitialize); | 2967 MULTI_THREAD_TEST_F(LayerTreeHostTestDeferredInitialize); |
| 2955 | 2968 |
| 2956 } // namespace | 2969 } // namespace |
| 2957 } // namespace cc | 2970 } // namespace cc |
| OLD | NEW |