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

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

Issue 884243004: cc: Record frame timing composite events in the tracker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/synchronization/lock.h" 10 #include "base/synchronization/lock.h"
(...skipping 6102 matching lines...) Expand 10 before | Expand all | Expand 10 after
6113 } 6113 }
6114 6114
6115 protected: 6115 protected:
6116 FakeContentLayerClient client_; 6116 FakeContentLayerClient client_;
6117 size_t notify_ready_to_activate_count_; 6117 size_t notify_ready_to_activate_count_;
6118 size_t scheduled_prepare_tiles_count_; 6118 size_t scheduled_prepare_tiles_count_;
6119 }; 6119 };
6120 6120
6121 MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestOneActivatePerPrepareTiles); 6121 MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestOneActivatePerPrepareTiles);
6122 6122
6123 class LayerTreeHostTestFrameTimingRequestsSaveTimestamps
6124 : public LayerTreeHostTest {
6125 public:
6126 LayerTreeHostTestFrameTimingRequestsSaveTimestamps()
6127 : check_results_on_commit_(false) {}
6128
6129 void SetupTree() override {
6130 scoped_refptr<FakePictureLayer> root_layer =
6131 FakePictureLayer::Create(&client_);
6132 root_layer->SetBounds(gfx::Size(200, 200));
6133 root_layer->SetIsDrawable(true);
6134
6135 scoped_refptr<FakePictureLayer> child_layer =
6136 FakePictureLayer::Create(&client_);
6137 child_layer->SetBounds(gfx::Size(1500, 1500));
6138 child_layer->SetIsDrawable(true);
6139
6140 std::vector<FrameTimingRequest> requests;
6141 requests.push_back(FrameTimingRequest(1, gfx::Rect(0, 0, 100, 100)));
6142 requests.push_back(FrameTimingRequest(2, gfx::Rect(300, 0, 100, 100)));
6143 child_layer->SetFrameTimingRequests(requests);
6144
6145 root_layer->AddChild(child_layer);
6146 layer_tree_host()->SetRootLayer(root_layer);
6147 LayerTreeHostTest::SetupTree();
6148 }
6149
6150 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
6151
6152 void BeginCommitOnThread(LayerTreeHostImpl* host_impl) override {
6153 if (!check_results_on_commit_)
6154 return;
6155
6156 // Since in reality, the events will be read by LayerTreeHost during commit,
danakj 2015/02/02 23:57:29 Then it would be even better if you did this in Di
vmpstr 2015/02/03 00:10:41 DidCommit doesn't have a host_impl... I think this
danakj 2015/02/03 00:21:28 Poking LTHI in DidCommit would be unthreadsafe. So
vmpstr 2015/02/03 00:26:08 Done.
6157 // we check the requests here to ensure that they are correct at the next
6158 // commit time (as opposed to checking in DrawLayers for instance).
6159 FrameTimingTracker* tracker = host_impl->frame_timing_tracker();
6160 scoped_ptr<FrameTimingTracker::CompositeTimingSet> timing_set =
6161 tracker->GroupCountsByRectId();
6162 EXPECT_EQ(1u, timing_set->size());
6163 auto rect_1_it = timing_set->find(1);
danakj 2015/02/02 23:57:29 const auto&?
vmpstr 2015/02/03 00:10:41 We typically do iterators by value. I can make an
danakj 2015/02/03 00:21:28 Hm.. ya okay nvm!
6164 EXPECT_TRUE(rect_1_it != timing_set->end());
6165 const auto& timing_events = rect_1_it->second;
6166 EXPECT_EQ(1u, timing_events.size());
6167 EXPECT_EQ(host_impl->active_tree()->source_frame_number(),
6168 timing_events[0].frame_id);
6169 EXPECT_GT(timing_events[0].timestamp, base::TimeTicks());
6170
6171 EndTest();
6172 }
6173
6174 void DrawLayersOnThread(LayerTreeHostImpl* host_impl) override {
6175 check_results_on_commit_ = true;
6176 PostSetNeedsCommitToMainThread();
6177 }
6178
6179 void AfterTest() override {}
6180
6181 private:
6182 FakeContentLayerClient client_;
6183 bool check_results_on_commit_;
6184 };
6185
6186 MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestFrameTimingRequestsSaveTimestamps);
6187
6123 class LayerTreeHostTestActivationCausesPrepareTiles : public LayerTreeHostTest { 6188 class LayerTreeHostTestActivationCausesPrepareTiles : public LayerTreeHostTest {
6124 public: 6189 public:
6125 LayerTreeHostTestActivationCausesPrepareTiles() 6190 LayerTreeHostTestActivationCausesPrepareTiles()
6126 : scheduled_prepare_tiles_count_(0) {} 6191 : scheduled_prepare_tiles_count_(0) {}
6127 6192
6128 void SetupTree() override { 6193 void SetupTree() override {
6129 client_.set_fill_with_nonsolid_color(true); 6194 client_.set_fill_with_nonsolid_color(true);
6130 scoped_refptr<FakePictureLayer> root_layer = 6195 scoped_refptr<FakePictureLayer> root_layer =
6131 FakePictureLayer::Create(&client_); 6196 FakePictureLayer::Create(&client_);
6132 root_layer->SetBounds(gfx::Size(150, 150)); 6197 root_layer->SetBounds(gfx::Size(150, 150));
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
6195 6260
6196 void AfterTest() override { EXPECT_TRUE(did_commit_); } 6261 void AfterTest() override { EXPECT_TRUE(did_commit_); }
6197 6262
6198 private: 6263 private:
6199 bool did_commit_; 6264 bool did_commit_;
6200 }; 6265 };
6201 6266
6202 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNoTasksBetweenWillAndDidCommit); 6267 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNoTasksBetweenWillAndDidCommit);
6203 6268
6204 } // namespace cc 6269 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698