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

Unified Diff: cc/test/fake_external_begin_frame_source.cc

Issue 2061273002: cc: Make BackToBackBeginFrameSource a SyntheticBeginFrameSource. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: syntheticbeginframesource: delete-DEBUG_FRAMES Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/test/fake_external_begin_frame_source.h ('k') | cc/test/layer_tree_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 7dc4bef3073e4b90d6d529e39cf8b570218c58a7..9beff1540566e6df3001846178205339ca1ee42d 100644
--- a/cc/test/fake_external_begin_frame_source.cc
+++ b/cc/test/fake_external_begin_frame_source.cc
@@ -12,8 +12,11 @@
namespace cc {
-FakeExternalBeginFrameSource::FakeExternalBeginFrameSource(double refresh_rate)
- : milliseconds_per_frame_(1000.0 / refresh_rate),
+FakeExternalBeginFrameSource::FakeExternalBeginFrameSource(
+ double refresh_rate,
+ bool tick_automatically)
+ : tick_automatically_(tick_automatically),
+ milliseconds_per_frame_(1000.0 / refresh_rate),
weak_ptr_factory_(this) {
DetachFromThread();
}
@@ -22,20 +25,47 @@ FakeExternalBeginFrameSource::~FakeExternalBeginFrameSource() {
DCHECK(CalledOnValidThread());
}
-void FakeExternalBeginFrameSource::OnNeedsBeginFramesChanged(
- bool needs_begin_frames) {
- DCHECK(CalledOnValidThread());
- if (needs_begin_frames) {
+void FakeExternalBeginFrameSource::SetPaused(bool paused) {
+ if (paused != paused_) {
+ paused_ = paused;
+ std::set<BeginFrameObserver*> observers(observers_);
+ for (auto* obs : observers)
+ obs->OnBeginFrameSourcePausedChanged(paused_);
+ }
+}
+
+void FakeExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
+ DCHECK(obs);
+ DCHECK(observers_.find(obs) == observers_.end());
+
+ bool observers_was_empty = observers_.empty();
+ observers_.insert(obs);
+ obs->OnBeginFrameSourcePausedChanged(paused_);
+ if (observers_was_empty && tick_automatically_)
PostTestOnBeginFrame();
- } else {
+ if (client_)
+ client_->OnAddObserver(obs);
+}
+
+void FakeExternalBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) {
+ DCHECK(obs);
+ DCHECK(observers_.find(obs) != observers_.end());
+
+ observers_.erase(obs);
+ if (observers_.empty())
begin_frame_task_.Cancel();
- }
+ if (client_)
+ client_->OnRemoveObserver(obs);
}
-void FakeExternalBeginFrameSource::TestOnBeginFrame() {
+void FakeExternalBeginFrameSource::TestOnBeginFrame(
+ const BeginFrameArgs& args) {
DCHECK(CalledOnValidThread());
- CallOnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE));
- PostTestOnBeginFrame();
+ std::set<BeginFrameObserver*> observers(observers_);
+ for (auto* obs : observers)
+ obs->OnBeginFrame(args);
+ if (tick_automatically_)
+ PostTestOnBeginFrame();
}
void FakeExternalBeginFrameSource::PostTestOnBeginFrame() {
@@ -43,7 +73,9 @@ void FakeExternalBeginFrameSource::PostTestOnBeginFrame() {
base::Bind(&FakeExternalBeginFrameSource::TestOnBeginFrame,
weak_ptr_factory_.GetWeakPtr()));
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
- FROM_HERE, begin_frame_task_.callback(),
+ FROM_HERE,
+ base::Bind(begin_frame_task_.callback(),
+ CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)),
base::TimeDelta::FromMilliseconds(milliseconds_per_frame_));
}
« no previous file with comments | « cc/test/fake_external_begin_frame_source.h ('k') | cc/test/layer_tree_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698