| Index: cc/test/fake_external_begin_frame_source.cc
|
| diff --git a/cc/test/fake_external_begin_frame_source.cc b/cc/test/fake_external_begin_frame_source.cc
|
| index 23051fa32b246bd376446fac37ccfcee37bcc1fb..916d01bde471578d0750cce31dba6eb89399e236 100644
|
| --- a/cc/test/fake_external_begin_frame_source.cc
|
| +++ b/cc/test/fake_external_begin_frame_source.cc
|
| @@ -41,8 +41,16 @@ void FakeExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
|
| bool observers_was_empty = observers_.empty();
|
| observers_.insert(obs);
|
| obs->OnBeginFrameSourcePausedChanged(paused_);
|
| - if (observers_was_empty && tick_automatically_)
|
| + if (observers_was_empty && tick_automatically_) {
|
| PostTestOnBeginFrame();
|
| + } else if (current_args_.IsValid()) {
|
| + const BeginFrameArgs& last_args = obs->LastUsedBeginFrameArgs();
|
| + if (!last_args.IsValid() ||
|
| + last_args.frame_time < current_args_.frame_time) {
|
| + current_args_.type = BeginFrameArgs::MISSED;
|
| + obs->OnBeginFrame(current_args_);
|
| + }
|
| + }
|
| if (client_)
|
| client_->OnAddObserver(obs);
|
| }
|
| @@ -65,12 +73,12 @@ bool FakeExternalBeginFrameSource::IsThrottled() const {
|
| void FakeExternalBeginFrameSource::TestOnBeginFrame(
|
| const BeginFrameArgs& args) {
|
| DCHECK(CalledOnValidThread());
|
| - BeginFrameArgs modified_args = args;
|
| - modified_args.source_id = source_id();
|
| - modified_args.sequence_number = next_begin_frame_number_++;
|
| + current_args_ = args;
|
| + current_args_.source_id = source_id();
|
| + current_args_.sequence_number = next_begin_frame_number_++;
|
| std::set<BeginFrameObserver*> observers(observers_);
|
| for (auto* obs : observers)
|
| - obs->OnBeginFrame(modified_args);
|
| + obs->OnBeginFrame(current_args_);
|
| if (tick_automatically_)
|
| PostTestOnBeginFrame();
|
| }
|
|
|