mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 04:27:37 +00:00
fb9a1a8fb3
A document that belongs to an iframe that is display:none as no associated pres context from which to get a refresh driver. However, in this case document.timeline.currentTime should still never go backwards (since document timelines are supposed to be monotonically increasing). This patch makes AnimationTimeline record the last value returned for the current time so that if the document becomes display:none we can still return the most recently used time.
56 lines
1.6 KiB
C++
56 lines
1.6 KiB
C++
/* vim: set shiftwidth=2 tabstop=8 autoindent cindent expandtab: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef mozilla_dom_AnimationTimeline_h
|
|
#define mozilla_dom_AnimationTimeline_h
|
|
|
|
#include "nsWrapperCache.h"
|
|
#include "nsCycleCollectionParticipant.h"
|
|
#include "mozilla/Attributes.h"
|
|
#include "mozilla/TimeStamp.h"
|
|
#include "js/TypeDecls.h"
|
|
#include "nsIDocument.h"
|
|
|
|
struct JSContext;
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class AnimationTimeline MOZ_FINAL : public nsWrapperCache
|
|
{
|
|
public:
|
|
AnimationTimeline(nsIDocument* aDocument)
|
|
: mDocument(aDocument)
|
|
{
|
|
SetIsDOMBinding();
|
|
}
|
|
|
|
NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(AnimationTimeline)
|
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(AnimationTimeline)
|
|
|
|
nsISupports* GetParentObject() const { return mDocument; }
|
|
virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
|
|
|
|
Nullable<double> GetCurrentTime() const;
|
|
mozilla::TimeStamp GetCurrentTimeStamp() const;
|
|
|
|
Nullable<double> ToTimelineTime(const mozilla::TimeStamp& aTimeStamp) const;
|
|
|
|
protected:
|
|
virtual ~AnimationTimeline() { }
|
|
|
|
nsCOMPtr<nsIDocument> mDocument;
|
|
|
|
// Store the most recently returned value of current time. This is used
|
|
// in cases where we don't have a refresh driver (e.g. because we are in
|
|
// a display:none iframe).
|
|
mutable mozilla::TimeStamp mLastCurrentTime;
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_dom_AnimationTimeline_h
|