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

Side by Side Diff: cc/scheduler/scheduler_unittest.cc

Issue 270703004: Making BeginFrameArgs work with TRACE_EVENT system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Using AsValue rather than StateAsValue. Created 6 years, 7 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 | Annotate | Revision Log
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 #include "cc/scheduler/scheduler.h" 4 #include "cc/scheduler/scheduler.h"
5 5
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_vector.h" 10 #include "base/memory/scoped_vector.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 void SetSwapWillHappenIfDrawHappens(bool swap_will_happen_if_draw_happens) { 91 void SetSwapWillHappenIfDrawHappens(bool swap_will_happen_if_draw_happens) {
92 swap_will_happen_if_draw_happens_ = swap_will_happen_if_draw_happens; 92 swap_will_happen_if_draw_happens_ = swap_will_happen_if_draw_happens;
93 } 93 }
94 void SetAutomaticSwapAck(bool automatic_swap_ack) { 94 void SetAutomaticSwapAck(bool automatic_swap_ack) {
95 automatic_swap_ack_ = automatic_swap_ack; 95 automatic_swap_ack_ = automatic_swap_ack;
96 } 96 }
97 97
98 // SchedulerClient implementation. 98 // SchedulerClient implementation.
99 virtual void SetNeedsBeginFrame(bool enable) OVERRIDE { 99 virtual void SetNeedsBeginFrame(bool enable) OVERRIDE {
100 actions_.push_back("SetNeedsBeginFrame"); 100 actions_.push_back("SetNeedsBeginFrame");
101 states_.push_back(scheduler_->StateAsValue().release()); 101 states_.push_back(scheduler_->AsValue().release());
102 needs_begin_frame_ = enable; 102 needs_begin_frame_ = enable;
103 } 103 }
104 virtual void WillBeginImplFrame(const BeginFrameArgs& args) OVERRIDE { 104 virtual void WillBeginImplFrame(const BeginFrameArgs& args) OVERRIDE {
105 actions_.push_back("WillBeginImplFrame"); 105 actions_.push_back("WillBeginImplFrame");
106 states_.push_back(scheduler_->StateAsValue().release()); 106 states_.push_back(scheduler_->AsValue().release());
107 } 107 }
108 virtual void ScheduledActionSendBeginMainFrame() OVERRIDE { 108 virtual void ScheduledActionSendBeginMainFrame() OVERRIDE {
109 actions_.push_back("ScheduledActionSendBeginMainFrame"); 109 actions_.push_back("ScheduledActionSendBeginMainFrame");
110 states_.push_back(scheduler_->StateAsValue().release()); 110 states_.push_back(scheduler_->AsValue().release());
111 } 111 }
112 virtual void ScheduledActionAnimate() OVERRIDE { 112 virtual void ScheduledActionAnimate() OVERRIDE {
113 actions_.push_back("ScheduledActionAnimate"); 113 actions_.push_back("ScheduledActionAnimate");
114 states_.push_back(scheduler_->StateAsValue().release()); 114 states_.push_back(scheduler_->AsValue().release());
115 } 115 }
116 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() 116 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible()
117 OVERRIDE { 117 OVERRIDE {
118 actions_.push_back("ScheduledActionDrawAndSwapIfPossible"); 118 actions_.push_back("ScheduledActionDrawAndSwapIfPossible");
119 states_.push_back(scheduler_->StateAsValue().release()); 119 states_.push_back(scheduler_->AsValue().release());
120 num_draws_++; 120 num_draws_++;
121 bool did_readback = false; 121 bool did_readback = false;
122 DrawSwapReadbackResult::DrawResult result = 122 DrawSwapReadbackResult::DrawResult result =
123 draw_will_happen_ 123 draw_will_happen_
124 ? DrawSwapReadbackResult::DRAW_SUCCESS 124 ? DrawSwapReadbackResult::DRAW_SUCCESS
125 : DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS; 125 : DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS;
126 bool swap_will_happen = 126 bool swap_will_happen =
127 draw_will_happen_ && swap_will_happen_if_draw_happens_; 127 draw_will_happen_ && swap_will_happen_if_draw_happens_;
128 if (swap_will_happen) { 128 if (swap_will_happen) {
129 scheduler_->DidSwapBuffers(); 129 scheduler_->DidSwapBuffers();
130 if (automatic_swap_ack_) 130 if (automatic_swap_ack_)
131 scheduler_->DidSwapBuffersComplete(); 131 scheduler_->DidSwapBuffersComplete();
132 } 132 }
133 return DrawSwapReadbackResult( 133 return DrawSwapReadbackResult(
134 result, 134 result,
135 draw_will_happen_ && swap_will_happen_if_draw_happens_, 135 draw_will_happen_ && swap_will_happen_if_draw_happens_,
136 did_readback); 136 did_readback);
137 } 137 }
138 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE { 138 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE {
139 actions_.push_back("ScheduledActionDrawAndSwapForced"); 139 actions_.push_back("ScheduledActionDrawAndSwapForced");
140 states_.push_back(scheduler_->StateAsValue().release()); 140 states_.push_back(scheduler_->AsValue().release());
141 bool did_request_swap = swap_will_happen_if_draw_happens_; 141 bool did_request_swap = swap_will_happen_if_draw_happens_;
142 bool did_readback = false; 142 bool did_readback = false;
143 return DrawSwapReadbackResult( 143 return DrawSwapReadbackResult(
144 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback); 144 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback);
145 } 145 }
146 virtual DrawSwapReadbackResult ScheduledActionDrawAndReadback() OVERRIDE { 146 virtual DrawSwapReadbackResult ScheduledActionDrawAndReadback() OVERRIDE {
147 actions_.push_back("ScheduledActionDrawAndReadback"); 147 actions_.push_back("ScheduledActionDrawAndReadback");
148 states_.push_back(scheduler_->StateAsValue().release()); 148 states_.push_back(scheduler_->AsValue().release());
149 bool did_request_swap = false; 149 bool did_request_swap = false;
150 bool did_readback = true; 150 bool did_readback = true;
151 return DrawSwapReadbackResult( 151 return DrawSwapReadbackResult(
152 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback); 152 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback);
153 } 153 }
154 virtual void ScheduledActionCommit() OVERRIDE { 154 virtual void ScheduledActionCommit() OVERRIDE {
155 actions_.push_back("ScheduledActionCommit"); 155 actions_.push_back("ScheduledActionCommit");
156 states_.push_back(scheduler_->StateAsValue().release()); 156 states_.push_back(scheduler_->AsValue().release());
157 } 157 }
158 virtual void ScheduledActionUpdateVisibleTiles() OVERRIDE { 158 virtual void ScheduledActionUpdateVisibleTiles() OVERRIDE {
159 actions_.push_back("ScheduledActionUpdateVisibleTiles"); 159 actions_.push_back("ScheduledActionUpdateVisibleTiles");
160 states_.push_back(scheduler_->StateAsValue().release()); 160 states_.push_back(scheduler_->AsValue().release());
161 } 161 }
162 virtual void ScheduledActionActivatePendingTree() OVERRIDE { 162 virtual void ScheduledActionActivatePendingTree() OVERRIDE {
163 actions_.push_back("ScheduledActionActivatePendingTree"); 163 actions_.push_back("ScheduledActionActivatePendingTree");
164 states_.push_back(scheduler_->StateAsValue().release()); 164 states_.push_back(scheduler_->AsValue().release());
165 } 165 }
166 virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE { 166 virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE {
167 actions_.push_back("ScheduledActionBeginOutputSurfaceCreation"); 167 actions_.push_back("ScheduledActionBeginOutputSurfaceCreation");
168 states_.push_back(scheduler_->StateAsValue().release()); 168 states_.push_back(scheduler_->AsValue().release());
169 } 169 }
170 virtual void ScheduledActionManageTiles() OVERRIDE { 170 virtual void ScheduledActionManageTiles() OVERRIDE {
171 actions_.push_back("ScheduledActionManageTiles"); 171 actions_.push_back("ScheduledActionManageTiles");
172 states_.push_back(scheduler_->StateAsValue().release()); 172 states_.push_back(scheduler_->AsValue().release());
173 } 173 }
174 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks) OVERRIDE { 174 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks) OVERRIDE {
175 if (log_anticipated_draw_time_change_) 175 if (log_anticipated_draw_time_change_)
176 actions_.push_back("DidAnticipatedDrawTimeChange"); 176 actions_.push_back("DidAnticipatedDrawTimeChange");
177 } 177 }
178 virtual base::TimeDelta DrawDurationEstimate() OVERRIDE { 178 virtual base::TimeDelta DrawDurationEstimate() OVERRIDE {
179 return base::TimeDelta(); 179 return base::TimeDelta();
180 } 180 }
181 virtual base::TimeDelta BeginMainFrameToCommitDurationEstimate() OVERRIDE { 181 virtual base::TimeDelta BeginMainFrameToCommitDurationEstimate() OVERRIDE {
182 return base::TimeDelta(); 182 return base::TimeDelta();
(...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after
1107 scheduler->DidSwapBuffers(); 1107 scheduler->DidSwapBuffers();
1108 1108
1109 // Spin the event loop a few times and make sure we get more 1109 // Spin the event loop a few times and make sure we get more
1110 // DidAnticipateDrawTimeChange calls every time. 1110 // DidAnticipateDrawTimeChange calls every time.
1111 int actions_so_far = client.num_actions_(); 1111 int actions_so_far = client.num_actions_();
1112 1112
1113 // Does three iterations to make sure that the timer is properly repeating. 1113 // Does three iterations to make sure that the timer is properly repeating.
1114 for (int i = 0; i < 3; ++i) { 1114 for (int i = 0; i < 3; ++i) {
1115 EXPECT_EQ((frame_args.interval * 2).InMicroseconds(), 1115 EXPECT_EQ((frame_args.interval * 2).InMicroseconds(),
1116 client.task_runner().NextPendingTaskDelay().InMicroseconds()) 1116 client.task_runner().NextPendingTaskDelay().InMicroseconds())
1117 << *scheduler->StateAsValue(); 1117 << *scheduler->AsValue();
1118 client.task_runner().RunPendingTasks(); 1118 client.task_runner().RunPendingTasks();
1119 EXPECT_GT(client.num_actions_(), actions_so_far); 1119 EXPECT_GT(client.num_actions_(), actions_so_far);
1120 EXPECT_STREQ(client.Action(client.num_actions_() - 1), 1120 EXPECT_STREQ(client.Action(client.num_actions_() - 1),
1121 "DidAnticipatedDrawTimeChange"); 1121 "DidAnticipatedDrawTimeChange");
1122 actions_so_far = client.num_actions_(); 1122 actions_so_far = client.num_actions_();
1123 } 1123 }
1124 1124
1125 // Do the same thing after BeginMainFrame starts but still before activation. 1125 // Do the same thing after BeginMainFrame starts but still before activation.
1126 scheduler->NotifyBeginMainFrameStarted(); 1126 scheduler->NotifyBeginMainFrameStarted();
1127 for (int i = 0; i < 3; ++i) { 1127 for (int i = 0; i < 3; ++i) {
1128 EXPECT_EQ((frame_args.interval * 2).InMicroseconds(), 1128 EXPECT_EQ((frame_args.interval * 2).InMicroseconds(),
1129 client.task_runner().NextPendingTaskDelay().InMicroseconds()) 1129 client.task_runner().NextPendingTaskDelay().InMicroseconds())
1130 << *scheduler->StateAsValue(); 1130 << *scheduler->AsValue();
1131 client.task_runner().RunPendingTasks(); 1131 client.task_runner().RunPendingTasks();
1132 EXPECT_GT(client.num_actions_(), actions_so_far); 1132 EXPECT_GT(client.num_actions_(), actions_so_far);
1133 EXPECT_STREQ(client.Action(client.num_actions_() - 1), 1133 EXPECT_STREQ(client.Action(client.num_actions_() - 1),
1134 "DidAnticipatedDrawTimeChange"); 1134 "DidAnticipatedDrawTimeChange");
1135 actions_so_far = client.num_actions_(); 1135 actions_so_far = client.num_actions_();
1136 } 1136 }
1137 } 1137 }
1138 1138
1139 TEST(SchedulerTest, BeginRetroFrame) { 1139 TEST(SchedulerTest, BeginRetroFrame) {
1140 FakeSchedulerClient client; 1140 FakeSchedulerClient client;
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
1484 TEST(SchedulerTest, 1484 TEST(SchedulerTest,
1485 SyntheticBeginFrames_And_VSyncThrottlingDisabled_SwapThrottled) { 1485 SyntheticBeginFrames_And_VSyncThrottlingDisabled_SwapThrottled) {
1486 bool begin_frame_scheduling_enabled = false; 1486 bool begin_frame_scheduling_enabled = false;
1487 bool throttle_frame_production = false; 1487 bool throttle_frame_production = false;
1488 BeginFramesNotFromClient_SwapThrottled(begin_frame_scheduling_enabled, 1488 BeginFramesNotFromClient_SwapThrottled(begin_frame_scheduling_enabled,
1489 throttle_frame_production); 1489 throttle_frame_production);
1490 } 1490 }
1491 1491
1492 } // namespace 1492 } // namespace
1493 } // namespace cc 1493 } // namespace cc
OLDNEW
« cc/debug/traced_value.h ('K') | « cc/scheduler/scheduler.cc ('k') | cc/trees/proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698