| 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 |