DELETE: 1 patches - 939636-promiseglobal
authorNikhil Marathe <nsm.nikhil@gmail.com>
Wed, 23 Jul 2014 17:33:29 -0700
changeset 1111 6b363bfd74f3691455865bdd60cca27746498046
parent 1110 4438fd9f3ae866a06620808ce596d1b50a330ead
child 1112 236f9ddeeb6ed32c819eeb375657ff53427c90ac
push id32
push usernsm.nikhil@gmail.com
push dateThu, 24 Jul 2014 00:32:46 +0000
bugs939636
DELETE: 1 patches - 939636-promiseglobal DELETE: 939636-promiseglobal qparent: 666e5e6b3abf qtip: 666e5e6b3abf top: (none)
939636-promiseglobal
series
deleted file mode 100644
--- a/939636-promiseglobal
+++ /dev/null
@@ -1,543 +0,0 @@
-# HG changeset patch
-# User Nikhil Marathe <nsm.nikhil@gmail.com>
-# Date 1385161301 28800
-#      Fri Nov 22 15:01:41 2013 -0800
-# Node ID 75727ed045732caf92b09a6349092b705cf317cb
-# Parent a3e6c5927c854ee3836c64346ab940de2c91a71c
-Bug 939636 - Part 1: Enable Promise bindings on chrome global scope. r=bholley
-
-diff --git a/dom/promise/Promise.cpp b/dom/promise/Promise.cpp
---- a/dom/promise/Promise.cpp
-+++ b/dom/promise/Promise.cpp
-@@ -8,22 +8,21 @@
- 
- #include "jsfriendapi.h"
- #include "mozilla/dom/OwningNonNull.h"
- #include "mozilla/dom/PromiseBinding.h"
- #include "mozilla/Preferences.h"
- #include "PromiseCallback.h"
- #include "PromiseNativeHandler.h"
- #include "nsContentUtils.h"
--#include "nsPIDOMWindow.h"
-+#include "nsIGlobalObject.h"
- #include "WorkerPrivate.h"
- #include "WorkerRunnable.h"
- #include "nsJSPrincipals.h"
- #include "nsJSUtils.h"
--#include "nsPIDOMWindow.h"
- #include "nsJSEnvironment.h"
- 
- namespace mozilla {
- namespace dom {
- 
- using namespace workers;
- 
- NS_IMPL_ISUPPORTS0(PromiseNativeHandler)
-@@ -185,25 +184,25 @@ public:
- };
- 
- // Promise
- 
- NS_IMPL_CYCLE_COLLECTION_CLASS(Promise)
- 
- NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(Promise)
-   tmp->MaybeReportRejected();
--  NS_IMPL_CYCLE_COLLECTION_UNLINK(mWindow)
-+  NS_IMPL_CYCLE_COLLECTION_UNLINK(mGlobalObject)
-   NS_IMPL_CYCLE_COLLECTION_UNLINK(mResolveCallbacks);
-   NS_IMPL_CYCLE_COLLECTION_UNLINK(mRejectCallbacks);
-   tmp->mResult = JS::UndefinedValue();
-   NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
- NS_IMPL_CYCLE_COLLECTION_UNLINK_END
- 
- NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(Promise)
--  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWindow)
-+  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mGlobalObject)
-   NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mResolveCallbacks);
-   NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mRejectCallbacks);
-   NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
- NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
- 
- NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(Promise)
-   NS_IMPL_CYCLE_COLLECTION_TRACE_JSVAL_MEMBER_CALLBACK(mResult)
-   NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
-@@ -212,18 +211,18 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_END
- NS_IMPL_CYCLE_COLLECTING_ADDREF(Promise)
- NS_IMPL_CYCLE_COLLECTING_RELEASE(Promise)
- 
- NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(Promise)
-   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-   NS_INTERFACE_MAP_ENTRY(nsISupports)
- NS_INTERFACE_MAP_END
- 
--Promise::Promise(nsPIDOMWindow* aWindow)
--  : mWindow(aWindow)
-+Promise::Promise(nsIGlobalObject* aGlobal)
-+  : mGlobalObject(aGlobal)
-   , mResult(JS::UndefinedValue())
-   , mState(Pending)
-   , mTaskPending(false)
-   , mHadRejectCallback(false)
-   , mResolvePending(false)
- {
-   MOZ_COUNT_CTOR(Promise);
-   mozilla::HoldJSObjects(this);
-@@ -470,28 +469,20 @@ Promise::CreateThenableFunction(JSContex
-   return obj;
- }
- 
- /* static */ already_AddRefed<Promise>
- Promise::Constructor(const GlobalObject& aGlobal,
-                      PromiseInit& aInit, ErrorResult& aRv)
- {
-   JSContext* cx = aGlobal.GetContext();
--  nsCOMPtr<nsPIDOMWindow> window;
-+  nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(aGlobal.GetAsSupports());
-+  MOZ_ASSERT(global);
- 
--  // On workers, let the window be null.
--  if (MOZ_LIKELY(NS_IsMainThread())) {
--    window = do_QueryInterface(aGlobal.GetAsSupports());
--    if (!window) {
--      aRv.Throw(NS_ERROR_UNEXPECTED);
--      return nullptr;
--    }
--  }
--
--  nsRefPtr<Promise> promise = new Promise(window);
-+  nsRefPtr<Promise> promise = new Promise(global);
- 
-   JS::Rooted<JSObject*> resolveFunc(cx,
-                                     CreateFunction(cx, aGlobal.Get(), promise,
-                                                    PromiseCallback::Resolve));
-   if (!resolveFunc) {
-     aRv.Throw(NS_ERROR_UNEXPECTED);
-     return nullptr;
-   }
-@@ -519,65 +510,51 @@ Promise::Constructor(const GlobalObject&
- 
-   return promise.forget();
- }
- 
- /* static */ already_AddRefed<Promise>
- Promise::Resolve(const GlobalObject& aGlobal, JSContext* aCx,
-                  const Optional<JS::Handle<JS::Value>>& aValue, ErrorResult& aRv)
- {
--  nsCOMPtr<nsPIDOMWindow> window;
--  if (MOZ_LIKELY(NS_IsMainThread())) {
--    window = do_QueryInterface(aGlobal.GetAsSupports());
--    if (!window) {
--      aRv.Throw(NS_ERROR_UNEXPECTED);
--      return nullptr;
--    }
--  }
-+  nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(aGlobal.GetAsSupports());
- 
--  return Resolve(window, aCx,
-+  return Resolve(global, aCx,
-                  aValue.WasPassed() ? aValue.Value() : JS::UndefinedHandleValue,
-                  aRv);
- }
- 
- /* static */ already_AddRefed<Promise>
--Promise::Resolve(nsPIDOMWindow* aWindow, JSContext* aCx,
-+Promise::Resolve(nsIGlobalObject* aGlobal, JSContext* aCx,
-                 JS::Handle<JS::Value> aValue, ErrorResult& aRv)
- {
--  // aWindow may be null.
--  nsRefPtr<Promise> promise = new Promise(aWindow);
-+  MOZ_ASSERT(aGlobal);
-+  nsRefPtr<Promise> promise = new Promise(aGlobal);
- 
-   promise->MaybeResolveInternal(aCx, aValue);
-   return promise.forget();
- }
- 
- /* static */ already_AddRefed<Promise>
- Promise::Reject(const GlobalObject& aGlobal, JSContext* aCx,
-                 const Optional<JS::Handle<JS::Value>>& aValue, ErrorResult& aRv)
- {
--  nsCOMPtr<nsPIDOMWindow> window;
--  if (MOZ_LIKELY(NS_IsMainThread())) {
--    window = do_QueryInterface(aGlobal.GetAsSupports());
--    if (!window) {
--      aRv.Throw(NS_ERROR_UNEXPECTED);
--      return nullptr;
--    }
--  }
-+  nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(aGlobal.GetAsSupports());
- 
--  return Reject(window, aCx,
-+  return Reject(global, aCx,
-                 aValue.WasPassed() ? aValue.Value() : JS::UndefinedHandleValue,
-                 aRv);
- }
- 
- /* static */ already_AddRefed<Promise>
--Promise::Reject(nsPIDOMWindow* aWindow, JSContext* aCx,
-+Promise::Reject(nsIGlobalObject* aGlobal, JSContext* aCx,
-                 JS::Handle<JS::Value> aValue, ErrorResult& aRv)
- {
--  // aWindow may be null.
--  nsRefPtr<Promise> promise = new Promise(aWindow);
-+  MOZ_ASSERT(aGlobal);
-+  nsRefPtr<Promise> promise = new Promise(aGlobal);
- 
-   promise->MaybeRejectInternal(aCx, aValue);
-   return promise.forget();
- }
- 
- already_AddRefed<Promise>
- Promise::Then(AnyCallback* aResolveCallback, AnyCallback* aRejectCallback)
- {
-@@ -726,36 +703,30 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
- NS_INTERFACE_MAP_END_INHERITING(PromiseNativeHandler)
- 
- NS_IMPL_CYCLE_COLLECTION_1(AllResolveHandler, mCountdownHolder)
- 
- /* static */ already_AddRefed<Promise>
- Promise::All(const GlobalObject& aGlobal, JSContext* aCx,
-              const Sequence<JS::Value>& aIterable, ErrorResult& aRv)
- {
--  nsCOMPtr<nsPIDOMWindow> window;
--  if (MOZ_LIKELY(NS_IsMainThread())) {
--    window = do_QueryInterface(aGlobal.GetAsSupports());
--    if (!window) {
--      aRv.Throw(NS_ERROR_UNEXPECTED);
--      return nullptr;
--    }
--  }
-+  nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(aGlobal.GetAsSupports());
-+  MOZ_ASSERT(global);
- 
-   if (aIterable.Length() == 0) {
-     JS::Rooted<JSObject*> empty(aCx, JS_NewArrayObject(aCx, 0, nullptr));
-     if (!empty) {
-       aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
-       return nullptr;
-     }
-     Optional<JS::Handle<JS::Value>> optValue(aCx, JS::ObjectValue(*empty));
-     return Promise::Resolve(aGlobal, aCx, optValue, aRv);
-   }
- 
--  nsRefPtr<Promise> promise = new Promise(window);
-+  nsRefPtr<Promise> promise = new Promise(global);
-   nsRefPtr<CountdownHolder> holder =
-     new CountdownHolder(aGlobal, promise, aIterable.Length());
- 
-   nsRefPtr<PromiseCallback> rejectCb = new RejectPromiseCallback(promise);
- 
-   for (uint32_t i = 0; i < aIterable.Length(); ++i) {
-     Optional<JS::Handle<JS::Value>> optValue(aCx, aIterable.ElementAt(i));
-     nsRefPtr<Promise> nextPromise = Promise::Cast(aGlobal, aCx, optValue, aRv);
-@@ -795,26 +766,20 @@ Promise::Cast(const GlobalObject& aGloba
- 
-   return Promise::Resolve(aGlobal, aCx, aValue, aRv);
- }
- 
- /* static */ already_AddRefed<Promise>
- Promise::Race(const GlobalObject& aGlobal, JSContext* aCx,
-               const Sequence<JS::Value>& aIterable, ErrorResult& aRv)
- {
--  nsCOMPtr<nsPIDOMWindow> window;
--  if (MOZ_LIKELY(NS_IsMainThread())) {
--    window = do_QueryInterface(aGlobal.GetAsSupports());
--    if (!window) {
--      aRv.Throw(NS_ERROR_UNEXPECTED);
--      return nullptr;
--    }
--  }
-+  nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(aGlobal.GetAsSupports());
-+  MOZ_ASSERT(global);
- 
--  nsRefPtr<Promise> promise = new Promise(window);
-+  nsRefPtr<Promise> promise = new Promise(global);
-   nsRefPtr<PromiseCallback> resolveCb = new ResolvePromiseCallback(promise);
-   nsRefPtr<PromiseCallback> rejectCb = new RejectPromiseCallback(promise);
- 
-   for (uint32_t i = 0; i < aIterable.Length(); ++i) {
-     Optional<JS::Handle<JS::Value>> optValue(aCx, aIterable.ElementAt(i));
-     nsRefPtr<Promise> nextPromise = Promise::Cast(aGlobal, aCx, optValue, aRv);
-     // According to spec, Cast can throw, but our implementation never does.
-     // Remove this when subclassing is supported.
-@@ -903,16 +868,19 @@ Promise::MaybeReportRejected()
- 
-   // Remains null in case of worker.
-   nsCOMPtr<nsPIDOMWindow> win;
-   bool isChromeError = false;
- 
-   if (MOZ_LIKELY(NS_IsMainThread())) {
-     win =
-       do_QueryInterface(nsJSUtils::GetStaticScriptGlobal(&mResult.toObject()));
-+    if (!nsContentUtils::GetSecurityManager()) {
-+      return;
-+    }
-     nsIPrincipal* principal = nsContentUtils::GetObjectPrincipal(&mResult.toObject());
-     isChromeError = nsContentUtils::IsSystemPrincipal(principal);
-   } else {
-     WorkerPrivate* worker = GetCurrentThreadWorkerPrivate();
-     MOZ_ASSERT(worker);
-     isChromeError = worker->IsChromeWorker();
-   }
- 
-diff --git a/dom/promise/Promise.h b/dom/promise/Promise.h
---- a/dom/promise/Promise.h
-+++ b/dom/promise/Promise.h
-@@ -9,17 +9,17 @@
- 
- #include "mozilla/Attributes.h"
- #include "mozilla/ErrorResult.h"
- #include "mozilla/dom/BindingDeclarations.h"
- #include "nsCycleCollectionParticipant.h"
- #include "mozilla/dom/PromiseBinding.h"
- #include "nsWrapperCache.h"
- #include "nsAutoPtr.h"
--#include "nsPIDOMWindow.h"
-+#include "nsIGlobalObject.h"
- #include "js/TypeDecls.h"
- 
- namespace mozilla {
- namespace dom {
- 
- class AnyCallback;
- class PromiseCallback;
- class PromiseInit;
-@@ -37,54 +37,54 @@ class Promise MOZ_FINAL : public nsISupp
-   friend class WorkerPromiseResolverTask;
-   friend class WorkerPromiseTask;
-   friend class WrapperPromiseCallback;
- 
- public:
-   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
-   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(Promise)
- 
--  Promise(nsPIDOMWindow* aWindow);
-+  Promise(nsIGlobalObject* aWindow);
-   ~Promise();
- 
-   static bool EnabledForScope(JSContext* aCx, JSObject* /* unused */);
- 
-   void MaybeResolve(JSContext* aCx,
-                     JS::Handle<JS::Value> aValue);
-   void MaybeReject(JSContext* aCx,
-                    JS::Handle<JS::Value> aValue);
- 
-   // WebIDL
- 
--  nsPIDOMWindow* GetParentObject() const
-+  nsIGlobalObject* GetParentObject() const
-   {
--    return mWindow;
-+    return mGlobalObject;
-   }
- 
-   virtual JSObject*
-   WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
- 
-   static already_AddRefed<Promise>
-   Constructor(const GlobalObject& aGlobal, PromiseInit& aInit,
-               ErrorResult& aRv);
- 
-   static already_AddRefed<Promise>
-   Resolve(const GlobalObject& aGlobal, JSContext* aCx,
-           const Optional<JS::Handle<JS::Value>>& aValue, ErrorResult& aRv);
- 
-   static already_AddRefed<Promise>
--  Resolve(nsPIDOMWindow* aWindow, JSContext* aCx,
-+  Resolve(nsIGlobalObject* aWindow, JSContext* aCx,
-           JS::Handle<JS::Value> aValue, ErrorResult& aRv);
- 
-   static already_AddRefed<Promise>
-   Reject(const GlobalObject& aGlobal, JSContext* aCx,
-          const Optional<JS::Handle<JS::Value>>& aValue, ErrorResult& aRv);
- 
-   static already_AddRefed<Promise>
--  Reject(nsPIDOMWindow* aWindow, JSContext* aCx,
-+  Reject(nsIGlobalObject* aWindow, JSContext* aCx,
-          JS::Handle<JS::Value> aValue, ErrorResult& aRv);
- 
-   already_AddRefed<Promise>
-   Then(AnyCallback* aResolveCallback, AnyCallback* aRejectCallback);
- 
-   already_AddRefed<Promise>
-   Catch(AnyCallback* aRejectCallback);
- 
-@@ -176,17 +176,17 @@ private:
-   CreateFunction(JSContext* aCx, JSObject* aParent, Promise* aPromise,
-                 int32_t aTask);
- 
-   static JSObject*
-   CreateThenableFunction(JSContext* aCx, Promise* aPromise, uint32_t aTask);
- 
-   void HandleException(JSContext* aCx);
- 
--  nsRefPtr<nsPIDOMWindow> mWindow;
-+  nsRefPtr<nsIGlobalObject> mGlobalObject;
- 
-   nsTArray<nsRefPtr<PromiseCallback> > mResolveCallbacks;
-   nsTArray<nsRefPtr<PromiseCallback> > mRejectCallbacks;
- 
-   JS::Heap<JS::Value> mResult;
-   PromiseState mState;
-   bool mTaskPending;
-   bool mHadRejectCallback;
-diff --git a/dom/src/notification/Notification.cpp b/dom/src/notification/Notification.cpp
---- a/dom/src/notification/Notification.cpp
-+++ b/dom/src/notification/Notification.cpp
-@@ -707,17 +707,18 @@ Notification::Get(const GlobalObject& aG
-   nsresult rv;
-   nsCOMPtr<nsINotificationStorage> notificationStorage =
-     do_GetService(NS_NOTIFICATION_STORAGE_CONTRACTID, &rv);
-   if (NS_FAILED(rv)) {
-     aRv.Throw(rv);
-     return nullptr;
-   }
- 
--  nsRefPtr<Promise> promise = new Promise(window);
-+  nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(window);
-+  nsRefPtr<Promise> promise = new Promise(global);
-   nsCOMPtr<nsINotificationStorageCallback> callback =
-     new NotificationStorageCallback(aGlobal, window, promise);
-   nsString tag = aFilter.mTag.WasPassed() ?
-                  aFilter.mTag.Value() :
-                  EmptyString();
-   aRv = notificationStorage->Get(origin, tag, callback);
-   if (aRv.Failed()) {
-     return nullptr;
-diff --git a/js/xpconnect/src/Sandbox.cpp b/js/xpconnect/src/Sandbox.cpp
---- a/js/xpconnect/src/Sandbox.cpp
-+++ b/js/xpconnect/src/Sandbox.cpp
-@@ -26,16 +26,17 @@
- #include "nsXMLHttpRequest.h"
- #include "WrapperFactory.h"
- #include "xpcprivate.h"
- #include "XPCQuickStubs.h"
- #include "XPCWrapper.h"
- #include "XrayWrapper.h"
- #include "mozilla/dom/BindingUtils.h"
- #include "mozilla/dom/indexedDB/IndexedDatabaseManager.h"
-+#include "mozilla/dom/PromiseBinding.h"
- #include "mozilla/dom/TextDecoderBinding.h"
- #include "mozilla/dom/TextEncoderBinding.h"
- #include "mozilla/dom/URLBinding.h"
- 
- using namespace mozilla;
- using namespace JS;
- using namespace js;
- using namespace xpc;
-@@ -971,16 +972,18 @@ xpc::GlobalProperties::Parse(JSContext *
-         } else if (!strcmp(name.ptr(), "TextDecoder")) {
-             TextDecoder = true;
-         } else if (!strcmp(name.ptr(), "URL")) {
-             URL = true;
-         } else if (!strcmp(name.ptr(), "atob")) {
-             atob = true;
-         } else if (!strcmp(name.ptr(), "btoa")) {
-             btoa = true;
-+        } else if (!strcmp(name.ptr(), "Promise")) {
-+            Promise = true;
-         } else {
-             JS_ReportError(cx, "Unknown property name: %s", name.ptr());
-             return false;
-         }
-     }
-     return true;
- }
- 
-@@ -1010,16 +1013,20 @@ xpc::GlobalProperties::Define(JSContext 
-     if (atob &&
-         !JS_DefineFunction(cx, obj, "atob", Atob, 1, 0))
-         return false;
- 
-     if (btoa &&
-         !JS_DefineFunction(cx, obj, "btoa", Btoa, 1, 0))
-         return false;
- 
-+    if (Promise &&
-+        !dom::PromiseBinding::GetConstructorObject(cx, obj))
-+        return false;
-+
-     return true;
- }
- 
- nsresult
- xpc::CreateSandboxObject(JSContext *cx, MutableHandleValue vp, nsISupports *prinOrSop,
-                          SandboxOptions& options)
- {
-     // Create the sandbox global object
-diff --git a/js/xpconnect/src/xpcprivate.h b/js/xpconnect/src/xpcprivate.h
---- a/js/xpconnect/src/xpcprivate.h
-+++ b/js/xpconnect/src/xpcprivate.h
-@@ -3343,16 +3343,17 @@ struct GlobalProperties {
-     bool Define(JSContext *cx, JS::HandleObject obj);
-     bool indexedDB : 1;
-     bool XMLHttpRequest : 1;
-     bool TextDecoder : 1;
-     bool TextEncoder : 1;
-     bool URL : 1;
-     bool atob : 1;
-     bool btoa : 1;
-+    bool Promise : 1;
- };
- 
- // Infallible.
- already_AddRefed<nsIXPCComponents_utils_Sandbox>
- NewSandboxConstructor();
- 
- // Returns true if class of 'obj' is SandboxClass.
- bool
-diff --git a/js/xpconnect/tests/unit/test_Promise.js b/js/xpconnect/tests/unit/test_Promise.js
-new file mode 100644
---- /dev/null
-+++ b/js/xpconnect/tests/unit/test_Promise.js
-@@ -0,0 +1,29 @@
-+function run_test() {
-+  var Cu = Components.utils;
-+  var sb = new Cu.Sandbox('http://www.example.com',
-+                      { wantGlobalProperties: ["Promise"] });
-+  sb.do_test_pending = do_test_pending;
-+  sb.do_test_finished = do_test_finished;
-+  sb.do_check_eq = do_check_eq;
-+
-+
-+
-+
-+
-+
-+Math.sin(0);
-+  Cu.evalInSandbox('do_test_pending();' +
-+                   'do_check_eq(typeof Promise, "function");' +
-+                   'Promise.resolve(5).then(function(v) {' +
-+                   '  do_check_eq(v, 5); do_test_finished();' +
-+                   '}, function(e) {' +
-+                   '  do_throw("Promise fail!"); do_test_finished();' +
-+                   '})', sb);
-+
-+
-+
-+
-+
-+  Cu.importGlobalProperties(["Promise"]);
-+  do_check_eq(typeof Promise, "function");
-+}
-diff --git a/js/xpconnect/tests/unit/xpcshell.ini b/js/xpconnect/tests/unit/xpcshell.ini
---- a/js/xpconnect/tests/unit/xpcshell.ini
-+++ b/js/xpconnect/tests/unit/xpcshell.ini
-@@ -43,16 +43,17 @@ support-files =
- [test_bug_442086.js]
- [test_file.js]
- [test_blob.js]
- [test_blob2.js]
- [test_file2.js]
- [test_import.js]
- [test_import_fail.js]
- [test_js_weak_references.js]
-+[test_Promise.js]
- [test_reflect_parse.js]
- [test_localeCompare.js]
- # Bug 676965: test fails consistently on Android
- fail-if = os == "android"
- [test_recursive_import.js]
- [test_xpcomutils.js]
- [test_unload.js]
- [test_attributes.js]
--- a/series
+++ b/series
@@ -15,13 +15,12 @@ 903441-sw-nointercept
 foo
 898524-cache
 sw-install-tests2
 sw-more-install-tests
 943704-importscripts
 939636-toolkit
 939636-browser
 939636-testing
-939636-promiseglobal
 939636-promisejsm
 promise-nsresult
 984048-swutil-fetcher
 984048-swm-update+