| OLD | NEW |
| 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 23 matching lines...) Expand all Loading... |
| 34 #include "core/animation/DocumentTimeline.h" | 34 #include "core/animation/DocumentTimeline.h" |
| 35 #include "core/dom/Document.h" | 35 #include "core/dom/Document.h" |
| 36 #include "core/dom/QualifiedName.h" | 36 #include "core/dom/QualifiedName.h" |
| 37 #include "weborigin/KURL.h" | 37 #include "weborigin/KURL.h" |
| 38 #include <gtest/gtest.h> | 38 #include <gtest/gtest.h> |
| 39 | 39 |
| 40 using namespace WebCore; | 40 using namespace WebCore; |
| 41 | 41 |
| 42 namespace { | 42 namespace { |
| 43 | 43 |
| 44 class PlayerTest : public ::testing::Test { | 44 class CoreAnimationPlayerTest : public ::testing::Test { |
| 45 protected: | 45 protected: |
| 46 virtual void SetUp() | 46 virtual void SetUp() |
| 47 { | 47 { |
| 48 document = Document::create(); | 48 document = Document::create(); |
| 49 timeline = DocumentTimeline::create(document.get()); | 49 timeline = DocumentTimeline::create(document.get()); |
| 50 player = Player::create(timeline.get(), 0); | 50 player = Player::create(timeline.get(), 0); |
| 51 timeline->setZeroTimeAsPerfTime(0); | 51 timeline->setZeroTimeAsPerfTime(0); |
| 52 } | 52 } |
| 53 | 53 |
| 54 bool updateTimeline(double time) | 54 bool updateTimeline(double time) |
| 55 { | 55 { |
| 56 timeline->serviceAnimations(time); | 56 timeline->serviceAnimations(time); |
| 57 // The timeline does not know about our player, so we have to explicitly
call update(). | 57 // The timeline does not know about our player, so we have to explicitly
call update(). |
| 58 return player->update(); | 58 return player->update(); |
| 59 } | 59 } |
| 60 | 60 |
| 61 RefPtr<Document> document; | 61 RefPtr<Document> document; |
| 62 RefPtr<DocumentTimeline> timeline; | 62 RefPtr<DocumentTimeline> timeline; |
| 63 RefPtr<Player> player; | 63 RefPtr<Player> player; |
| 64 }; | 64 }; |
| 65 | 65 |
| 66 TEST_F(PlayerTest, InitialState) | 66 TEST_F(CoreAnimationPlayerTest, InitialState) |
| 67 { | 67 { |
| 68 EXPECT_EQ(0, timeline->currentTime()); | 68 EXPECT_EQ(0, timeline->currentTime()); |
| 69 EXPECT_EQ(0, player->currentTime()); | 69 EXPECT_EQ(0, player->currentTime()); |
| 70 EXPECT_FALSE(player->paused()); | 70 EXPECT_FALSE(player->paused()); |
| 71 EXPECT_EQ(1, player->playbackRate()); | 71 EXPECT_EQ(1, player->playbackRate()); |
| 72 EXPECT_EQ(0, player->startTime()); | 72 EXPECT_EQ(0, player->startTime()); |
| 73 EXPECT_EQ(0, player->timeDrift()); | 73 EXPECT_EQ(0, player->timeDrift()); |
| 74 } | 74 } |
| 75 | 75 |
| 76 TEST_F(PlayerTest, CreatePlayerAfterTimelineStarted) | 76 TEST_F(CoreAnimationPlayerTest, CreatePlayerAfterTimelineStarted) |
| 77 { | 77 { |
| 78 updateTimeline(1234); | 78 updateTimeline(1234); |
| 79 EXPECT_EQ(1234, timeline->currentTime()); | 79 EXPECT_EQ(1234, timeline->currentTime()); |
| 80 RefPtr<Player> player = Player::create(timeline.get(), 0); | 80 RefPtr<Player> player = Player::create(timeline.get(), 0); |
| 81 EXPECT_EQ(1234, player->startTime()); | 81 EXPECT_EQ(1234, player->startTime()); |
| 82 EXPECT_EQ(0, player->currentTime()); | 82 EXPECT_EQ(0, player->currentTime()); |
| 83 } | 83 } |
| 84 | 84 |
| 85 TEST_F(PlayerTest, PauseUnpause) | 85 TEST_F(CoreAnimationPlayerTest, PauseUnpause) |
| 86 { | 86 { |
| 87 updateTimeline(200); | 87 updateTimeline(200); |
| 88 player->setPaused(true); | 88 player->setPaused(true); |
| 89 EXPECT_TRUE(player->paused()); | 89 EXPECT_TRUE(player->paused()); |
| 90 EXPECT_EQ(200, player->currentTime()); | 90 EXPECT_EQ(200, player->currentTime()); |
| 91 EXPECT_EQ(0, player->timeDrift()); | 91 EXPECT_EQ(0, player->timeDrift()); |
| 92 | 92 |
| 93 updateTimeline(400); | 93 updateTimeline(400); |
| 94 player->setPaused(false); | 94 player->setPaused(false); |
| 95 EXPECT_FALSE(player->paused()); | 95 EXPECT_FALSE(player->paused()); |
| 96 EXPECT_EQ(200, player->currentTime()); | 96 EXPECT_EQ(200, player->currentTime()); |
| 97 EXPECT_EQ(200, player->timeDrift()); | 97 EXPECT_EQ(200, player->timeDrift()); |
| 98 | 98 |
| 99 updateTimeline(600); | 99 updateTimeline(600); |
| 100 EXPECT_EQ(400, player->currentTime()); | 100 EXPECT_EQ(400, player->currentTime()); |
| 101 EXPECT_EQ(200, player->timeDrift()); | 101 EXPECT_EQ(200, player->timeDrift()); |
| 102 } | 102 } |
| 103 | 103 |
| 104 TEST_F(PlayerTest, PauseBeforeTimelineStarted) | 104 TEST_F(CoreAnimationPlayerTest, PauseBeforeTimelineStarted) |
| 105 { | 105 { |
| 106 player->setPaused(true); | 106 player->setPaused(true); |
| 107 EXPECT_TRUE(player->paused()); | 107 EXPECT_TRUE(player->paused()); |
| 108 EXPECT_EQ(0, player->currentTime()); | 108 EXPECT_EQ(0, player->currentTime()); |
| 109 EXPECT_EQ(0, player->timeDrift()); | 109 EXPECT_EQ(0, player->timeDrift()); |
| 110 | 110 |
| 111 player->setPaused(false); | 111 player->setPaused(false); |
| 112 EXPECT_FALSE(player->paused()); | 112 EXPECT_FALSE(player->paused()); |
| 113 EXPECT_EQ(0, player->currentTime()); | 113 EXPECT_EQ(0, player->currentTime()); |
| 114 EXPECT_EQ(0, player->timeDrift()); | 114 EXPECT_EQ(0, player->timeDrift()); |
| 115 | 115 |
| 116 player->setPaused(true); | 116 player->setPaused(true); |
| 117 updateTimeline(100); | 117 updateTimeline(100); |
| 118 EXPECT_TRUE(player->paused()); | 118 EXPECT_TRUE(player->paused()); |
| 119 EXPECT_EQ(0, player->currentTime()); | 119 EXPECT_EQ(0, player->currentTime()); |
| 120 EXPECT_EQ(100, player->timeDrift()); | 120 EXPECT_EQ(100, player->timeDrift()); |
| 121 | 121 |
| 122 player->setPaused(false); | 122 player->setPaused(false); |
| 123 EXPECT_EQ(0, player->currentTime()); | 123 EXPECT_EQ(0, player->currentTime()); |
| 124 EXPECT_EQ(100, player->timeDrift()); | 124 EXPECT_EQ(100, player->timeDrift()); |
| 125 } | 125 } |
| 126 | 126 |
| 127 TEST_F(PlayerTest, SetCurrentTime) | 127 TEST_F(CoreAnimationPlayerTest, SetCurrentTime) |
| 128 { | 128 { |
| 129 updateTimeline(0); | 129 updateTimeline(0); |
| 130 player->setCurrentTime(250); | 130 player->setCurrentTime(250); |
| 131 EXPECT_EQ(250, player->currentTime()); | 131 EXPECT_EQ(250, player->currentTime()); |
| 132 EXPECT_EQ(-250, player->timeDrift()); | 132 EXPECT_EQ(-250, player->timeDrift()); |
| 133 } | 133 } |
| 134 | 134 |
| 135 TEST_F(PlayerTest, SetCurrentTimeBeforeTimelineStarted) | 135 TEST_F(CoreAnimationPlayerTest, SetCurrentTimeBeforeTimelineStarted) |
| 136 { | 136 { |
| 137 player->setCurrentTime(250); | 137 player->setCurrentTime(250); |
| 138 EXPECT_EQ(250, player->currentTime()); | 138 EXPECT_EQ(250, player->currentTime()); |
| 139 EXPECT_EQ(-250, player->timeDrift()); | 139 EXPECT_EQ(-250, player->timeDrift()); |
| 140 | 140 |
| 141 updateTimeline(0); | 141 updateTimeline(0); |
| 142 EXPECT_EQ(250, player->currentTime()); | 142 EXPECT_EQ(250, player->currentTime()); |
| 143 } | 143 } |
| 144 | 144 |
| 145 TEST_F(PlayerTest, SetPlaybackRate) | 145 TEST_F(CoreAnimationPlayerTest, SetPlaybackRate) |
| 146 { | 146 { |
| 147 updateTimeline(0); | 147 updateTimeline(0); |
| 148 player->setPlaybackRate(2); | 148 player->setPlaybackRate(2); |
| 149 EXPECT_EQ(2, player->playbackRate()); | 149 EXPECT_EQ(2, player->playbackRate()); |
| 150 EXPECT_EQ(0, player->currentTime()); | 150 EXPECT_EQ(0, player->currentTime()); |
| 151 EXPECT_EQ(0, player->timeDrift()); | 151 EXPECT_EQ(0, player->timeDrift()); |
| 152 | 152 |
| 153 updateTimeline(100); | 153 updateTimeline(100); |
| 154 EXPECT_EQ(200, player->currentTime()); | 154 EXPECT_EQ(200, player->currentTime()); |
| 155 EXPECT_EQ(0, player->timeDrift()); | 155 EXPECT_EQ(0, player->timeDrift()); |
| 156 } | 156 } |
| 157 | 157 |
| 158 TEST_F(PlayerTest, SetPlaybackRateBeforeTimelineStarted) | 158 TEST_F(CoreAnimationPlayerTest, SetPlaybackRateBeforeTimelineStarted) |
| 159 { | 159 { |
| 160 player->setPlaybackRate(2); | 160 player->setPlaybackRate(2); |
| 161 EXPECT_EQ(0, player->currentTime()); | 161 EXPECT_EQ(0, player->currentTime()); |
| 162 EXPECT_EQ(0, player->timeDrift()); | 162 EXPECT_EQ(0, player->timeDrift()); |
| 163 | 163 |
| 164 updateTimeline(100); | 164 updateTimeline(100); |
| 165 EXPECT_EQ(200, player->currentTime()); | 165 EXPECT_EQ(200, player->currentTime()); |
| 166 EXPECT_EQ(0, player->timeDrift()); | 166 EXPECT_EQ(0, player->timeDrift()); |
| 167 } | 167 } |
| 168 | 168 |
| 169 TEST_F(PlayerTest, SetPlaybackRateWhilePaused) | 169 TEST_F(CoreAnimationPlayerTest, SetPlaybackRateWhilePaused) |
| 170 { | 170 { |
| 171 updateTimeline(100); | 171 updateTimeline(100); |
| 172 player->setPaused(true); | 172 player->setPaused(true); |
| 173 player->setPlaybackRate(2); | 173 player->setPlaybackRate(2); |
| 174 EXPECT_EQ(100, player->currentTime()); | 174 EXPECT_EQ(100, player->currentTime()); |
| 175 EXPECT_EQ(100, player->timeDrift()); | 175 EXPECT_EQ(100, player->timeDrift()); |
| 176 | 176 |
| 177 updateTimeline(200); | 177 updateTimeline(200); |
| 178 player->setPaused(false); | 178 player->setPaused(false); |
| 179 EXPECT_EQ(100, player->currentTime()); | 179 EXPECT_EQ(100, player->currentTime()); |
| 180 EXPECT_EQ(300, player->timeDrift()); | 180 EXPECT_EQ(300, player->timeDrift()); |
| 181 | 181 |
| 182 updateTimeline(250); | 182 updateTimeline(250); |
| 183 EXPECT_EQ(200, player->currentTime()); | 183 EXPECT_EQ(200, player->currentTime()); |
| 184 EXPECT_EQ(300, player->timeDrift()); | 184 EXPECT_EQ(300, player->timeDrift()); |
| 185 } | 185 } |
| 186 | 186 |
| 187 TEST_F(PlayerTest, SetPlaybackRateNaN) | 187 TEST_F(CoreAnimationPlayerTest, SetPlaybackRateNaN) |
| 188 { | 188 { |
| 189 updateTimeline(0); | 189 updateTimeline(0); |
| 190 player->setPlaybackRate(nullValue()); | 190 player->setPlaybackRate(nullValue()); |
| 191 EXPECT_TRUE(isNull(player->playbackRate())); | 191 EXPECT_TRUE(isNull(player->playbackRate())); |
| 192 EXPECT_TRUE(isNull(player->currentTime())); | 192 EXPECT_TRUE(isNull(player->currentTime())); |
| 193 EXPECT_TRUE(isNull(player->timeDrift())); | 193 EXPECT_TRUE(isNull(player->timeDrift())); |
| 194 | 194 |
| 195 updateTimeline(100); | 195 updateTimeline(100); |
| 196 EXPECT_TRUE(isNull(player->currentTime())); | 196 EXPECT_TRUE(isNull(player->currentTime())); |
| 197 EXPECT_TRUE(isNull(player->timeDrift())); | 197 EXPECT_TRUE(isNull(player->timeDrift())); |
| 198 } | 198 } |
| 199 | 199 |
| 200 TEST_F(PlayerTest, SetPlaybackRateInfinity) | 200 TEST_F(CoreAnimationPlayerTest, SetPlaybackRateInfinity) |
| 201 { | 201 { |
| 202 updateTimeline(0); | 202 updateTimeline(0); |
| 203 player->setPlaybackRate(std::numeric_limits<double>::infinity()); | 203 player->setPlaybackRate(std::numeric_limits<double>::infinity()); |
| 204 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->playbackRate()); | 204 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->playbackRate()); |
| 205 EXPECT_TRUE(isNull(player->currentTime())); | 205 EXPECT_TRUE(isNull(player->currentTime())); |
| 206 EXPECT_TRUE(isNull(player->timeDrift())); | 206 EXPECT_TRUE(isNull(player->timeDrift())); |
| 207 | 207 |
| 208 updateTimeline(100); | 208 updateTimeline(100); |
| 209 EXPECT_TRUE(isNull(player->currentTime())); | 209 EXPECT_TRUE(isNull(player->currentTime())); |
| 210 EXPECT_TRUE(isNull(player->timeDrift())); | 210 EXPECT_TRUE(isNull(player->timeDrift())); |
| 211 } | 211 } |
| 212 | 212 |
| 213 TEST_F(PlayerTest, SetPlaybackRateMax) | 213 TEST_F(CoreAnimationPlayerTest, SetPlaybackRateMax) |
| 214 { | 214 { |
| 215 updateTimeline(0); | 215 updateTimeline(0); |
| 216 player->setPlaybackRate(std::numeric_limits<double>::max()); | 216 player->setPlaybackRate(std::numeric_limits<double>::max()); |
| 217 EXPECT_EQ(std::numeric_limits<double>::max(), player->playbackRate()); | 217 EXPECT_EQ(std::numeric_limits<double>::max(), player->playbackRate()); |
| 218 EXPECT_EQ(0, player->currentTime()); | 218 EXPECT_EQ(0, player->currentTime()); |
| 219 EXPECT_EQ(0, player->timeDrift()); | 219 EXPECT_EQ(0, player->timeDrift()); |
| 220 | 220 |
| 221 updateTimeline(100); | 221 updateTimeline(100); |
| 222 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); | 222 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); |
| 223 } | 223 } |
| 224 | 224 |
| 225 TEST_F(PlayerTest, SetCurrentTimeNan) | 225 TEST_F(CoreAnimationPlayerTest, SetCurrentTimeNan) |
| 226 { | 226 { |
| 227 updateTimeline(0); | 227 updateTimeline(0); |
| 228 player->setCurrentTime(nullValue()); | 228 player->setCurrentTime(nullValue()); |
| 229 EXPECT_TRUE(isNull(player->currentTime())); | 229 EXPECT_TRUE(isNull(player->currentTime())); |
| 230 EXPECT_TRUE(isNull(player->timeDrift())); | 230 EXPECT_TRUE(isNull(player->timeDrift())); |
| 231 | 231 |
| 232 updateTimeline(100); | 232 updateTimeline(100); |
| 233 EXPECT_TRUE(isNull(player->currentTime())); | 233 EXPECT_TRUE(isNull(player->currentTime())); |
| 234 EXPECT_TRUE(isNull(player->timeDrift())); | 234 EXPECT_TRUE(isNull(player->timeDrift())); |
| 235 } | 235 } |
| 236 | 236 |
| 237 TEST_F(PlayerTest, SetCurrentTimeInfinity) | 237 TEST_F(CoreAnimationPlayerTest, SetCurrentTimeInfinity) |
| 238 { | 238 { |
| 239 updateTimeline(0); | 239 updateTimeline(0); |
| 240 player->setCurrentTime(std::numeric_limits<double>::infinity()); | 240 player->setCurrentTime(std::numeric_limits<double>::infinity()); |
| 241 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); | 241 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); |
| 242 EXPECT_EQ(-std::numeric_limits<double>::infinity(), player->timeDrift()); | 242 EXPECT_EQ(-std::numeric_limits<double>::infinity(), player->timeDrift()); |
| 243 | 243 |
| 244 updateTimeline(100); | 244 updateTimeline(100); |
| 245 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); | 245 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); |
| 246 EXPECT_EQ(-std::numeric_limits<double>::infinity(), player->timeDrift()); | 246 EXPECT_EQ(-std::numeric_limits<double>::infinity(), player->timeDrift()); |
| 247 } | 247 } |
| 248 | 248 |
| 249 TEST_F(PlayerTest, SetCurrentTimeMax) | 249 TEST_F(CoreAnimationPlayerTest, SetCurrentTimeMax) |
| 250 { | 250 { |
| 251 updateTimeline(0); | 251 updateTimeline(0); |
| 252 player->setCurrentTime(std::numeric_limits<double>::max()); | 252 player->setCurrentTime(std::numeric_limits<double>::max()); |
| 253 EXPECT_EQ(std::numeric_limits<double>::max(), player->currentTime()); | 253 EXPECT_EQ(std::numeric_limits<double>::max(), player->currentTime()); |
| 254 EXPECT_EQ(-std::numeric_limits<double>::max(), player->timeDrift()); | 254 EXPECT_EQ(-std::numeric_limits<double>::max(), player->timeDrift()); |
| 255 | 255 |
| 256 updateTimeline(100); | 256 updateTimeline(100); |
| 257 EXPECT_EQ(std::numeric_limits<double>::max(), player->currentTime()); | 257 EXPECT_EQ(std::numeric_limits<double>::max(), player->currentTime()); |
| 258 EXPECT_EQ(-std::numeric_limits<double>::max(), player->timeDrift()); | 258 EXPECT_EQ(-std::numeric_limits<double>::max(), player->timeDrift()); |
| 259 } | 259 } |
| 260 | 260 |
| 261 } | 261 } |
| OLD | NEW |