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 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1032 scroll_layer_->SetScrollOffset(ScrollOffsetWithDelta(offset, | 1032 scroll_layer_->SetScrollOffset(ScrollOffsetWithDelta(offset, |
1033 scroll_delta)); | 1033 scroll_delta)); |
1034 layer_tree_host()->SetPageScaleFactorAndLimits(scale, 0.5f, 2.f); | 1034 layer_tree_host()->SetPageScaleFactorAndLimits(scale, 0.5f, 2.f); |
1035 } | 1035 } |
1036 | 1036 |
1037 void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override { | 1037 void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override { |
1038 // We get one commit before the first draw, and the animation doesn't happen | 1038 // We get one commit before the first draw, and the animation doesn't happen |
1039 // until the second draw. | 1039 // until the second draw. |
1040 switch (impl->active_tree()->source_frame_number()) { | 1040 switch (impl->active_tree()->source_frame_number()) { |
1041 case 0: | 1041 case 0: |
1042 EXPECT_EQ(1.f, impl->active_tree()->page_scale_factor()); | 1042 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); |
1043 // We'll start an animation when we get back to the main thread. | 1043 // We'll start an animation when we get back to the main thread. |
1044 break; | 1044 break; |
1045 case 1: | 1045 case 1: |
1046 EXPECT_EQ(1.f, impl->active_tree()->page_scale_factor()); | 1046 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); |
1047 break; | 1047 break; |
1048 case 2: | 1048 case 2: |
1049 EXPECT_EQ(1.25f, impl->active_tree()->page_scale_factor()); | 1049 EXPECT_EQ(1.25f, impl->active_tree()->current_page_scale_factor()); |
1050 EndTest(); | 1050 EndTest(); |
1051 break; | 1051 break; |
1052 default: | 1052 default: |
1053 NOTREACHED(); | 1053 NOTREACHED(); |
1054 } | 1054 } |
1055 } | 1055 } |
1056 | 1056 |
1057 void DidCommitAndDrawFrame() override { | 1057 void DidCommitAndDrawFrame() override { |
1058 switch (layer_tree_host()->source_frame_number()) { | 1058 switch (layer_tree_host()->source_frame_number()) { |
1059 case 1: | 1059 case 1: |
(...skipping 4480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5540 | 5540 |
5541 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 5541 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
5542 | 5542 |
5543 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 5543 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
5544 LayerTreeHostImpl::FrameData* frame_data, | 5544 LayerTreeHostImpl::FrameData* frame_data, |
5545 DrawResult draw_result) override { | 5545 DrawResult draw_result) override { |
5546 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data); | 5546 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data); |
5547 switch (frame_) { | 5547 switch (frame_) { |
5548 case 1: | 5548 case 1: |
5549 // Drew at page scale 1 before any pinching. | 5549 // Drew at page scale 1 before any pinching. |
5550 EXPECT_EQ(1.f, host_impl->active_tree()->total_page_scale_factor()); | 5550 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); |
5551 EXPECT_EQ(1.f, quad_scale_delta); | 5551 EXPECT_EQ(1.f, quad_scale_delta); |
5552 PostNextAfterDraw(host_impl); | 5552 PostNextAfterDraw(host_impl); |
5553 break; | 5553 break; |
5554 case 2: | 5554 case 2: |
5555 if (quad_scale_delta != 1.f) | 5555 if (quad_scale_delta != 1.f) |
5556 break; | 5556 break; |
5557 // Drew at page scale 1.5 after pinching in. | 5557 // Drew at page scale 1.5 after pinching in. |
5558 EXPECT_EQ(1.5f, host_impl->active_tree()->total_page_scale_factor()); | 5558 EXPECT_EQ(1.5f, host_impl->active_tree()->current_page_scale_factor()); |
5559 EXPECT_EQ(1.f, quad_scale_delta); | 5559 EXPECT_EQ(1.f, quad_scale_delta); |
5560 PostNextAfterDraw(host_impl); | 5560 PostNextAfterDraw(host_impl); |
5561 break; | 5561 break; |
5562 case 3: | 5562 case 3: |
5563 // By pinching out, we will create a new tiling and raster it. This may | 5563 // By pinching out, we will create a new tiling and raster it. This may |
5564 // cause some additional draws, though we should still be drawing with | 5564 // cause some additional draws, though we should still be drawing with |
5565 // the old 1.5 tiling. | 5565 // the old 1.5 tiling. |
5566 if (frame_data->has_no_damage) | 5566 if (frame_data->has_no_damage) |
5567 break; | 5567 break; |
5568 // Drew at page scale 1 with the 1.5 tiling while pinching out. | 5568 // Drew at page scale 1 with the 1.5 tiling while pinching out. |
5569 EXPECT_EQ(1.f, host_impl->active_tree()->total_page_scale_factor()); | 5569 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); |
5570 EXPECT_EQ(1.5f, quad_scale_delta); | 5570 EXPECT_EQ(1.5f, quad_scale_delta); |
5571 // We don't PostNextAfterDraw here, instead we wait for the new tiling | 5571 // We don't PostNextAfterDraw here, instead we wait for the new tiling |
5572 // to finish rastering so we don't get any noise in further steps. | 5572 // to finish rastering so we don't get any noise in further steps. |
5573 break; | 5573 break; |
5574 case 4: | 5574 case 4: |
5575 // Drew at page scale 1 with the 1.5 tiling after pinching out completed | 5575 // Drew at page scale 1 with the 1.5 tiling after pinching out completed |
5576 // while waiting for texture uploads to complete. | 5576 // while waiting for texture uploads to complete. |
5577 EXPECT_EQ(1.f, host_impl->active_tree()->total_page_scale_factor()); | 5577 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); |
5578 // This frame will not have any damage, since it's actually the same as | 5578 // This frame will not have any damage, since it's actually the same as |
5579 // the last frame, and should contain no incomplete tiles. We just want | 5579 // the last frame, and should contain no incomplete tiles. We just want |
5580 // to make sure we drew here at least once after the pinch ended to be | 5580 // to make sure we drew here at least once after the pinch ended to be |
5581 // sure that drawing after pinch doesn't leave us at the wrong scale | 5581 // sure that drawing after pinch doesn't leave us at the wrong scale |
5582 EXPECT_TRUE(frame_data->has_no_damage); | 5582 EXPECT_TRUE(frame_data->has_no_damage); |
5583 PostNextAfterDraw(host_impl); | 5583 PostNextAfterDraw(host_impl); |
5584 break; | 5584 break; |
5585 case 5: | 5585 case 5: |
5586 if (quad_scale_delta != 1.f) | 5586 if (quad_scale_delta != 1.f) |
5587 break; | 5587 break; |
5588 // Drew at scale 1 after texture uploads are done. | 5588 // Drew at scale 1 after texture uploads are done. |
5589 EXPECT_EQ(1.f, host_impl->active_tree()->total_page_scale_factor()); | 5589 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); |
5590 EXPECT_EQ(1.f, quad_scale_delta); | 5590 EXPECT_EQ(1.f, quad_scale_delta); |
5591 EndTest(); | 5591 EndTest(); |
5592 break; | 5592 break; |
5593 } | 5593 } |
5594 return draw_result; | 5594 return draw_result; |
5595 } | 5595 } |
5596 | 5596 |
5597 void PostNextAfterDraw(LayerTreeHostImpl* host_impl) { | 5597 void PostNextAfterDraw(LayerTreeHostImpl* host_impl) { |
5598 if (posted_) | 5598 if (posted_) |
5599 return; | 5599 return; |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5750 | 5750 |
5751 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 5751 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
5752 | 5752 |
5753 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 5753 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
5754 LayerTreeHostImpl::FrameData* frame_data, | 5754 LayerTreeHostImpl::FrameData* frame_data, |
5755 DrawResult draw_result) override { | 5755 DrawResult draw_result) override { |
5756 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data); | 5756 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data); |
5757 switch (step_) { | 5757 switch (step_) { |
5758 case 1: | 5758 case 1: |
5759 // Drew at scale 1 before any pinching. | 5759 // Drew at scale 1 before any pinching. |
5760 EXPECT_EQ(1.f, host_impl->active_tree()->total_page_scale_factor()); | 5760 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); |
5761 EXPECT_EQ(1.f, quad_scale_delta); | 5761 EXPECT_EQ(1.f, quad_scale_delta); |
5762 break; | 5762 break; |
5763 case 2: | 5763 case 2: |
5764 if (quad_scale_delta != 1.f / 1.5f) | 5764 if (quad_scale_delta != 1.f / 1.5f) |
5765 break; | 5765 break; |
5766 // Drew at scale 1 still though the ideal is 1.5. | 5766 // Drew at scale 1 still though the ideal is 1.5. |
5767 EXPECT_EQ(1.5f, host_impl->active_tree()->total_page_scale_factor()); | 5767 EXPECT_EQ(1.5f, host_impl->active_tree()->current_page_scale_factor()); |
5768 EXPECT_EQ(1.f / 1.5f, quad_scale_delta); | 5768 EXPECT_EQ(1.f / 1.5f, quad_scale_delta); |
5769 break; | 5769 break; |
5770 case 3: | 5770 case 3: |
5771 // Continuous draws are attempted. | 5771 // Continuous draws are attempted. |
5772 EXPECT_EQ(1.5f, host_impl->active_tree()->total_page_scale_factor()); | 5772 EXPECT_EQ(1.5f, host_impl->active_tree()->current_page_scale_factor()); |
5773 if (!frame_data->has_no_damage) | 5773 if (!frame_data->has_no_damage) |
5774 EXPECT_EQ(1.f / 1.5f, quad_scale_delta); | 5774 EXPECT_EQ(1.f / 1.5f, quad_scale_delta); |
5775 break; | 5775 break; |
5776 case 4: | 5776 case 4: |
5777 if (quad_scale_delta != 1.f) | 5777 if (quad_scale_delta != 1.f) |
5778 break; | 5778 break; |
5779 // Drew at scale 1.5 when all the tiles completed. | 5779 // Drew at scale 1.5 when all the tiles completed. |
5780 EXPECT_EQ(1.5f, host_impl->active_tree()->total_page_scale_factor()); | 5780 EXPECT_EQ(1.5f, host_impl->active_tree()->current_page_scale_factor()); |
5781 EXPECT_EQ(1.f, quad_scale_delta); | 5781 EXPECT_EQ(1.f, quad_scale_delta); |
5782 break; | 5782 break; |
5783 case 5: | 5783 case 5: |
5784 // TODO(danakj): We get more draws before the NotifyReadyToDraw | 5784 // TODO(danakj): We get more draws before the NotifyReadyToDraw |
5785 // because it is asynchronous from the previous draw and happens late. | 5785 // because it is asynchronous from the previous draw and happens late. |
5786 break; | 5786 break; |
5787 case 6: | 5787 case 6: |
5788 // NotifyReadyToDraw happened. If we were already inside a frame, we may | 5788 // NotifyReadyToDraw happened. If we were already inside a frame, we may |
5789 // try to draw once more. | 5789 // try to draw once more. |
5790 break; | 5790 break; |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5912 | 5912 |
5913 protected: | 5913 protected: |
5914 FakeContentLayerClient client_; | 5914 FakeContentLayerClient client_; |
5915 size_t notify_ready_to_activate_count_; | 5915 size_t notify_ready_to_activate_count_; |
5916 size_t scheduled_manage_tiles_count_; | 5916 size_t scheduled_manage_tiles_count_; |
5917 }; | 5917 }; |
5918 | 5918 |
5919 MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestOneActivatePerManageTiles); | 5919 MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestOneActivatePerManageTiles); |
5920 | 5920 |
5921 } // namespace cc | 5921 } // namespace cc |
OLD | NEW |