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

Side by Side Diff: Source/core/animation/TimedItemTest.cpp

Issue 21156005: Web Animations: Add an event delegate to allow different forms of event dispatch (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Address review feedback. Created 7 years, 4 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
« no previous file with comments | « Source/core/animation/TimedItem.cpp ('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 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 19 matching lines...) Expand all
30 30
31 #include "config.h" 31 #include "config.h"
32 #include "core/animation/TimedItem.h" 32 #include "core/animation/TimedItem.h"
33 33
34 #include <gtest/gtest.h> 34 #include <gtest/gtest.h>
35 35
36 using namespace WebCore; 36 using namespace WebCore;
37 37
38 namespace { 38 namespace {
39 39
40 class TestTimedItemEventDelegate : public TimedItemEventDelegate {
41 public:
42 void onEventCondition(bool wasInPlay, bool isInPlay, double previousIteratio n, double currentIteration) OVERRIDE
43 {
44 m_eventTriggered = true;
45 m_playStateChanged = wasInPlay != isInPlay;
46 m_iterationChanged = isInPlay && previousIteration != currentIteration;
47 if (isInPlay)
48 ASSERT(!isNull(currentIteration));
49
50 }
51 void reset()
52 {
53 m_eventTriggered = false;
54 m_playStateChanged = false;
55 m_iterationChanged = false;
56 }
57 bool eventTriggered() { return m_eventTriggered; }
58 bool playStateChanged() { return m_playStateChanged; }
59 bool iterationChanged() { return m_iterationChanged; }
60
61 private:
62 bool m_eventTriggered;
63 bool m_playStateChanged;
64 bool m_iterationChanged;
65 };
66
40 class TestTimedItem : public TimedItem { 67 class TestTimedItem : public TimedItem {
41 public: 68 public:
42 static PassRefPtr<TestTimedItem> create(const Timing& specified) 69 static PassRefPtr<TestTimedItem> create(const Timing& specified)
43 { 70 {
44 return adoptRef(new TestTimedItem(specified)); 71 return adoptRef(new TestTimedItem(specified, new TestTimedItemEventDeleg ate()));
45 } 72 }
46 73
47 void updateInheritedTime(double time) 74 void updateInheritedTime(double time)
48 { 75 {
76 m_eventDelegate->reset();
49 TimedItem::updateInheritedTime(time); 77 TimedItem::updateInheritedTime(time);
50 } 78 }
51 79
52 void updateChildrenAndEffects(bool wasActiveOrInEffect) const FINAL OVERRIDE { 80 void updateChildrenAndEffects(bool wasActiveOrInEffect) const FINAL OVERRIDE {
53 } 81 }
54 82
55 void willDetach() { } 83 void willDetach() { }
56 84
85 TestTimedItemEventDelegate* eventDelegate() { return m_eventDelegate; }
86
57 private: 87 private:
58 TestTimedItem(const Timing& specified) 88 TestTimedItem(const Timing& specified, TestTimedItemEventDelegate* eventDele gate)
59 : TimedItem(specified) 89 : TimedItem(specified, adoptPtr(eventDelegate))
90 , m_eventDelegate(eventDelegate)
60 { 91 {
61 } 92 }
93
94 TestTimedItemEventDelegate* m_eventDelegate;
62 }; 95 };
63 96
64 TEST(TimedItem, Sanity) 97 TEST(TimedItem, Sanity)
65 { 98 {
66 Timing timing; 99 Timing timing;
67 timing.hasIterationDuration = true; 100 timing.hasIterationDuration = true;
68 timing.iterationDuration = 2; 101 timing.iterationDuration = 2;
69 RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing); 102 RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
70 103
71 ASSERT_FALSE(timedItem->isCurrent()); 104 ASSERT_FALSE(timedItem->isCurrent());
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 ASSERT_TRUE(isNull(timedItem->timeFraction())); 532 ASSERT_TRUE(isNull(timedItem->timeFraction()));
500 533
501 timedItem->updateInheritedTime(0); 534 timedItem->updateInheritedTime(0);
502 ASSERT_EQ(1, timedItem->currentIteration()); 535 ASSERT_EQ(1, timedItem->currentIteration());
503 ASSERT_EQ(1, timedItem->timeFraction()); 536 ASSERT_EQ(1, timedItem->timeFraction());
504 537
505 timedItem->updateInheritedTime(1); 538 timedItem->updateInheritedTime(1);
506 ASSERT_EQ(1, timedItem->currentIteration()); 539 ASSERT_EQ(1, timedItem->currentIteration());
507 ASSERT_EQ(1, timedItem->timeFraction()); 540 ASSERT_EQ(1, timedItem->timeFraction());
508 } 541 }
542
543 TEST(TimedItem, Events)
544 {
545 Timing timing;
546 timing.hasIterationDuration = true;
547 timing.iterationDuration = 1;
548 timing.iterationCount = 2;
549 RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
550
551 timedItem->updateInheritedTime(0.3);
552 ASSERT_TRUE(timedItem->eventDelegate()->eventTriggered());
553 EXPECT_TRUE(timedItem->eventDelegate()->playStateChanged());
554 EXPECT_TRUE(timedItem->eventDelegate()->iterationChanged());
555
556 timedItem->updateInheritedTime(0.6);
557 ASSERT_FALSE(timedItem->eventDelegate()->eventTriggered());
558
559 timedItem->updateInheritedTime(1.5);
560 ASSERT_TRUE(timedItem->eventDelegate()->eventTriggered());
561 EXPECT_TRUE(timedItem->eventDelegate()->iterationChanged());
562 EXPECT_FALSE(timedItem->eventDelegate()->playStateChanged());
563
564 timedItem->updateInheritedTime(2.5);
565 ASSERT_TRUE(timedItem->eventDelegate()->eventTriggered());
566 EXPECT_FALSE(timedItem->eventDelegate()->iterationChanged());
567 EXPECT_TRUE(timedItem->eventDelegate()->playStateChanged());
568
569 timedItem->updateInheritedTime(3);
570 ASSERT_FALSE(timedItem->eventDelegate()->eventTriggered());
571
572 timedItem->updateInheritedTime(1.5);
573 ASSERT_TRUE(timedItem->eventDelegate()->eventTriggered());
574 EXPECT_FALSE(timedItem->eventDelegate()->iterationChanged());
575 EXPECT_TRUE(timedItem->eventDelegate()->playStateChanged());
509 } 576 }
577 }
OLDNEW
« no previous file with comments | « Source/core/animation/TimedItem.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698