Bug 1277456 part 4 - Use the document associated with an AnimationEffectTiming object as the context for parsing easing rather than the current realm document; r?bz draft
authorBrian Birtles <birtles@gmail.com>
Wed, 13 Jul 2016 13:22:13 +0900
changeset 386961 4b1c00bf83491daba1713ecc1f54a6e6a62e75df
parent 386960 8e1aeedde93569813776e2549d84d7057dc0b543
child 386962 80b698a27db3a93cd2777f61ceb486144a2d1116
push id22865
push userbbirtles@mozilla.com
push dateWed, 13 Jul 2016 04:26:23 +0000
reviewersbz
bugs1277456
milestone50.0a1
Bug 1277456 part 4 - Use the document associated with an AnimationEffectTiming object as the context for parsing easing rather than the current realm document; r?bz MozReview-Commit-ID: 4LhbIUIz6Vd
dom/animation/AnimationEffectTiming.cpp
dom/animation/AnimationEffectTiming.h
dom/animation/test/mozilla/test_set-easing.html
dom/bindings/Bindings.conf
--- a/dom/animation/AnimationEffectTiming.cpp
+++ b/dom/animation/AnimationEffectTiming.cpp
@@ -125,28 +125,20 @@ AnimationEffectTiming::SetDirection(cons
   }
 
   mTiming.mDirection = aDirection;
 
   PostSpecifiedTimingUpdated(mEffect);
 }
 
 void
-AnimationEffectTiming::SetEasing(JSContext* aCx,
-                                 const nsAString& aEasing,
-                                 ErrorResult& aRv)
+AnimationEffectTiming::SetEasing(const nsAString& aEasing, ErrorResult& aRv)
 {
-  nsIDocument* document = AnimationUtils::GetCurrentRealmDocument(aCx);
-  if (!document) {
-    aRv.Throw(NS_ERROR_FAILURE);
-    return;
-  }
-
   Maybe<ComputedTimingFunction> newFunction =
-    TimingParams::ParseEasing(aEasing, document, aRv);
+    TimingParams::ParseEasing(aEasing, mDocument, aRv);
   if (aRv.Failed()) {
     return;
   }
 
   if (mTiming.mFunction == newFunction) {
     return;
   }
 
--- a/dom/animation/AnimationEffectTiming.h
+++ b/dom/animation/AnimationEffectTiming.h
@@ -30,17 +30,17 @@ public:
   void SetDelay(double aDelay);
   void SetEndDelay(double aEndDelay);
   void SetFill(const FillMode& aFill);
   void SetIterationStart(double aIterationStart, ErrorResult& aRv);
   void SetIterations(double aIterations, ErrorResult& aRv);
   void SetDuration(const UnrestrictedDoubleOrString& aDuration,
                    ErrorResult& aRv);
   void SetDirection(const PlaybackDirection& aDirection);
-  void SetEasing(JSContext* aCx, const nsAString& aEasing, ErrorResult& aRv);
+  void SetEasing(const nsAString& aEasing, ErrorResult& aRv);
 
 private:
   KeyframeEffect* MOZ_NON_OWNING_REF mEffect;
 };
 
 } // namespace dom
 } // namespace mozilla
 
--- a/dom/animation/test/mozilla/test_set-easing.html
+++ b/dom/animation/test/mozilla/test_set-easing.html
@@ -1,32 +1,35 @@
 <!doctype html>
 <head>
 <meta charset=utf-8>
-<title>Tests AnimationTimingFunction::SetEasing in sandbox</title>
+<title>Test setting easing in sandbox</title>
 <script src="/tests/SimpleTest/SimpleTest.js"></script>
 <script src="/tests/SimpleTest/SpawnTask.js"></script>
 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
 </head>
 <body>
 
 <script>
 "use strict";
 
 add_task(function* set_easing() {
   const div = document.createElement("div");
   document.body.appendChild(div);
   div.animate({ opacity: [0, 1] }, 100000 );
 
   const contentScript = function() {
-    doesThrow(() => {
+    try {
       document.getAnimations()[0].effect.timing.easing = "linear";
-    }, "AnimationTimingFunction::SetEasing should throw in sandbox.");
+      ok(true, 'Setting easing should not throw in sandbox');
+    } catch (e) {
+      ok(false, 'Setting easing should not throw in sandbox');
+    }
   };
 
   const sandbox = new SpecialPowers.Cu.Sandbox(window);
   sandbox.importFunction(document, "document");
-  sandbox.importFunction(SimpleTest.doesThrow, "doesThrow");
+  sandbox.importFunction(SimpleTest.ok, "ok");
   SpecialPowers.Cu.evalInSandbox(`(${contentScript.toSource()})()`, sandbox);
 });
 
 </script>
 </body>
--- a/dom/bindings/Bindings.conf
+++ b/dom/bindings/Bindings.conf
@@ -52,22 +52,16 @@ DOMInterfaces = {
 'AbstractWorker': {
     'concrete': False
 },
 
 'AnimationEffectReadOnly': {
     'concrete': False
 },
 
-'AnimationEffectTiming': {
-    'implicitJSContext': {
-        'setterOnly': [ 'easing' ]
-    }
-},
-
 'AnimationTimeline': {
     'concrete': False
 },
 
 'AnonymousContent': {
     'wrapperCache': False
 },