AnimationTimelinesController.cpp (2142B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 5 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #include "AnimationTimelinesController.h" 8 9 #include "mozilla/dom/DocumentTimeline.h" 10 #include "mozilla/dom/ScrollTimeline.h" 11 12 namespace mozilla::dom { 13 14 void AnimationTimelinesController::AddDocumentTimeline( 15 DocumentTimeline& aTimeline) { 16 mDocumentTimelines.insertBack(&aTimeline); 17 } 18 19 void AnimationTimelinesController::AddScrollTimeline( 20 ScrollTimeline& aTimeline) { 21 mScrollTimelines.insertBack(&aTimeline); 22 } 23 24 void AnimationTimelinesController::WillRefresh() { 25 for (DocumentTimeline* tl : 26 ToTArray<AutoTArray<RefPtr<DocumentTimeline>, 32>>(mDocumentTimelines)) { 27 tl->WillRefresh(); 28 } 29 30 for (ScrollTimeline* tl : 31 ToTArray<AutoTArray<RefPtr<ScrollTimeline>, 32>>(mScrollTimelines)) { 32 tl->WillRefresh(); 33 } 34 } 35 36 void AnimationTimelinesController::UpdateLastRefreshDriverTime() { 37 for (DocumentTimeline* timeline : mDocumentTimelines) { 38 timeline->UpdateLastRefreshDriverTime(); 39 } 40 // We don't use refresh driver time stamp for scroll timelines. 41 } 42 43 void AnimationTimelinesController::TriggerAllPendingAnimationsNow() { 44 for (DocumentTimeline* timeline : mDocumentTimelines) { 45 timeline->TriggerAllPendingAnimationsNow(); 46 } 47 48 // FIXME: Bug 1805950. This is used for testing and printing. We may have to 49 // revisit there when supporting printing for scroll-timelines () 50 } 51 52 void AnimationTimelinesController::UpdateHiddenByContentVisibility() { 53 for (AnimationTimeline* timeline : mDocumentTimelines) { 54 timeline->UpdateHiddenByContentVisibility(); 55 } 56 57 for (AnimationTimeline* timeline : mScrollTimelines) { 58 timeline->UpdateHiddenByContentVisibility(); 59 } 60 } 61 62 void AnimationTimelinesController::TrySampleScrollTimelines() { 63 for (ScrollTimeline* timeline : mScrollTimelines) { 64 timeline->UpdateCachedCurrentTime(); 65 } 66 } 67 68 } // namespace mozilla::dom