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

Unified Diff: cc/scheduler/begin_frame_source_unittest.cc

Issue 1026233002: cc: Making BeginFrameSources support multiple BeginFrameObservers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding tests. Created 5 years, 3 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/scheduler/begin_frame_source.cc ('k') | cc/test/scheduler_test_common.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/scheduler/begin_frame_source_unittest.cc
diff --git a/cc/scheduler/begin_frame_source_unittest.cc b/cc/scheduler/begin_frame_source_unittest.cc
index 1f85622878e91680efd7f5ea56402c3653d81ada..2401d51d110966ba3bbb90e4983d6483dbf9f774 100644
--- a/cc/scheduler/begin_frame_source_unittest.cc
+++ b/cc/scheduler/begin_frame_source_unittest.cc
@@ -231,9 +231,6 @@ TEST(BeginFrameSourceBaseTest, ObserverManipulation) {
EXPECT_EQ(&obs, source.GetObserver());
#ifndef NDEBUG
- // Adding an observer when an observer already exists should DCHECK fail.
- EXPECT_DEATH({ source.AddObserver(&otherObs); }, "");
-
// Removing wrong observer should DCHECK fail.
EXPECT_DEATH({ source.RemoveObserver(&otherObs); }, "");
@@ -271,6 +268,92 @@ TEST(BeginFrameSourceBaseTest, NoObserver) {
SEND_BEGIN_FRAME_DROP(source, 100, 200, 300);
}
+TEST(BeginFrameSourceBaseTest, ObserverMulti) {
brianderson 2015/09/12 00:23:50 Looks like the same test as ObserverMultiSimple?
+ MockBeginFrameObserver obs;
+ MockBeginFrameObserver otherObs;
+ FakeBeginFrameSource source;
+
+ EXPECT_BEGIN_FRAME_USED(obs, 100, 200, 300);
+ EXPECT_BEGIN_FRAME_USED(obs, 400, 600, 300);
+ EXPECT_BEGIN_FRAME_USED(obs, 450, 650, 300);
+ EXPECT_BEGIN_FRAME_USED(obs, 700, 900, 300);
+
+ EXPECT_BEGIN_FRAME_USED(otherObs, 400, 600, 300);
+ EXPECT_BEGIN_FRAME_USED(otherObs, 450, 650, 300);
+
+ source.AddObserver(&obs);
+ SEND_BEGIN_FRAME_USED(source, 100, 200, 300);
+ source.AddObserver(&otherObs);
+ SEND_BEGIN_FRAME_USED(source, 400, 600, 300);
+ SEND_BEGIN_FRAME_USED(source, 450, 650, 300);
+ source.RemoveObserver(&otherObs);
+ SEND_BEGIN_FRAME_USED(source, 700, 900, 300);
+}
+
+TEST(BeginFrameSourceBaseTest, ObserverMultiSimple) {
+ MockBeginFrameObserver obs;
+ MockBeginFrameObserver otherObs;
+ FakeBeginFrameSource source;
+
+ EXPECT_BEGIN_FRAME_USED(obs, 100, 200, 300);
+ EXPECT_BEGIN_FRAME_USED(obs, 400, 600, 300);
+ EXPECT_BEGIN_FRAME_USED(obs, 450, 650, 300);
+ EXPECT_BEGIN_FRAME_USED(obs, 700, 900, 300);
+
+ EXPECT_BEGIN_FRAME_USED(otherObs, 400, 600, 300);
+ EXPECT_BEGIN_FRAME_USED(otherObs, 450, 650, 300);
+
+ source.AddObserver(&obs);
+ SEND_BEGIN_FRAME_USED(source, 100, 200, 300);
+ source.AddObserver(&otherObs);
+ SEND_BEGIN_FRAME_USED(source, 400, 600, 300);
+ SEND_BEGIN_FRAME_USED(source, 450, 650, 300);
+ source.RemoveObserver(&otherObs);
+ SEND_BEGIN_FRAME_USED(source, 700, 900, 300);
+
+ scoped_refptr<base::trace_event::TracedValue> state1 =
+ new base::trace_event::TracedValue();
+ source.AsValueInto(state1.get());
+
+ source.AddObserver(&otherObs);
+ scoped_refptr<base::trace_event::TracedValue> state2 =
+ new base::trace_event::TracedValue();
+ source.AsValueInto(state2.get());
+}
+
+class RemovingBeginFrameObserver : public BeginFrameObserverBase {
+ public:
+ explicit RemovingBeginFrameObserver(BeginFrameSource* bfs) : source_(bfs) {}
+
+ protected:
+ // BeginFrameObserverBase
+ bool OnBeginFrameDerivedImpl(const BeginFrameArgs& args) override {
+ source_->RemoveObserver(this);
+ return true;
+ }
+
+ BeginFrameSource* source_;
+};
+
+TEST(BeginFrameSourceBaseTest, ObserverMultiRemoveOnBeginFrame) {
brianderson 2015/09/12 00:23:50 If you are going to add a WillLoseBeginFrameSource
+ MockBeginFrameObserver obs;
+ FakeBeginFrameSource source;
+ RemovingBeginFrameObserver otherObs(&source);
+
+ EXPECT_BEGIN_FRAME_USED(obs, 100, 200, 300);
+ EXPECT_BEGIN_FRAME_USED(obs, 400, 600, 300);
+ EXPECT_BEGIN_FRAME_USED(obs, 700, 900, 300);
+
+ source.AddObserver(&obs);
+ SEND_BEGIN_FRAME_USED(source, 100, 200, 300);
+ source.AddObserver(&otherObs);
+ SEND_BEGIN_FRAME_USED(source, 400, 600, 300);
+ SEND_BEGIN_FRAME_USED(source, 700, 900, 300);
+ EXPECT_EQ(
+ otherObs.LastUsedBeginFrameArgs(),
+ CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 400, 600, 300));
+}
+
TEST(BeginFrameSourceBaseTest, NeedsBeginFrames) {
FakeBeginFrameSource source;
EXPECT_FALSE(source.NeedsBeginFrames());
« no previous file with comments | « cc/scheduler/begin_frame_source.cc ('k') | cc/test/scheduler_test_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698