diff --git a/dom/devicestorage/DeviceStorageRequestChild.cpp b/dom/devicestorage/DeviceStorageRequestChild.cpp index f796721e4a0c..5075f4ae8f7c 100644 --- a/dom/devicestorage/DeviceStorageRequestChild.cpp +++ b/dom/devicestorage/DeviceStorageRequestChild.cpp @@ -58,6 +58,11 @@ DeviceStorageRequestChild:: mCallback = nullptr; } + nsCOMPtr window = mRequest->GetOwner(); + if (!window) { + return true; + } + switch (aValue.type()) { case DeviceStorageResponseValue::TErrorResponse: @@ -73,7 +78,7 @@ DeviceStorageRequestChild:: mDSFile->GetFullPath(fullPath); AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), fullPath, &result); + StringToJsval(window, fullPath, &result); mRequest->FireSuccess(result); break; } @@ -86,7 +91,7 @@ DeviceStorageRequestChild:: mDSFile->GetFullPath(fullPath); AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), fullPath, &result); + StringToJsval(window, fullPath, &result); mDSFileDescriptor->mDSFile = mDSFile; mDSFileDescriptor->mFileDescriptor = r.fileDescriptor(); @@ -103,7 +108,7 @@ DeviceStorageRequestChild:: nsCOMPtr file = do_QueryInterface(blob); AutoJSContext cx; JS::Rooted result(cx, - InterfaceToJsval(mRequest->GetOwner(), file, &NS_GET_IID(nsIDOMFile))); + InterfaceToJsval(window, file, &NS_GET_IID(nsIDOMFile))); mRequest->FireSuccess(result); break; } @@ -131,7 +136,7 @@ DeviceStorageRequestChild:: AvailableStorageResponse r = aValue; AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), r.mountState(), &result); + StringToJsval(window, r.mountState(), &result); mRequest->FireSuccess(result); break; } @@ -141,7 +146,7 @@ DeviceStorageRequestChild:: StorageStatusResponse r = aValue; AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), r.storageStatus(), &result); + StringToJsval(window, r.storageStatus(), &result); mRequest->FireSuccess(result); break; } @@ -151,7 +156,7 @@ DeviceStorageRequestChild:: FormatStorageResponse r = aValue; AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), r.mountState(), &result); + StringToJsval(window, r.mountState(), &result); mRequest->FireSuccess(result); break; } @@ -161,7 +166,7 @@ DeviceStorageRequestChild:: MountStorageResponse r = aValue; AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), r.storageStatus(), &result); + StringToJsval(window, r.storageStatus(), &result); mRequest->FireSuccess(result); break; } @@ -171,7 +176,7 @@ DeviceStorageRequestChild:: UnmountStorageResponse r = aValue; AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), r.storageStatus(), &result); + StringToJsval(window, r.storageStatus(), &result); mRequest->FireSuccess(result); break; } diff --git a/dom/devicestorage/nsDeviceStorage.cpp b/dom/devicestorage/nsDeviceStorage.cpp index 70cfb547c2ff..710e6f67e7cb 100644 --- a/dom/devicestorage/nsDeviceStorage.cpp +++ b/dom/devicestorage/nsDeviceStorage.cpp @@ -1816,6 +1816,9 @@ public: NS_IMETHOD Run() { MOZ_ASSERT(NS_IsMainThread()); + if (!mRequest->GetOwner()) { + return NS_OK; + } mRequest->FireError(mError); mRequest = nullptr; return NS_OK; @@ -1906,13 +1909,18 @@ ContinueCursorEvent::Continue() NS_IMETHODIMP ContinueCursorEvent::Run() { + nsCOMPtr window = mRequest->GetOwner(); + if (!window) { + return NS_OK; + } + nsRefPtr file = GetNextFile(); nsDOMDeviceStorageCursor* cursor = static_cast(mRequest.get()); AutoJSContext cx; - JS::Rooted val(cx, nsIFileToJsval(cursor->GetOwner(), file)); + JS::Rooted val(cx, nsIFileToJsval(window, file)); if (file) { cursor->mOkToCallContinue = true; @@ -2135,6 +2143,10 @@ public: NS_IMETHOD Run() { MOZ_ASSERT(NS_IsMainThread()); + nsCOMPtr window = mRequest->GetOwner(); + if (!window) { + return NS_OK; + } nsString state = NS_LITERAL_STRING("unavailable"); if (mFile) { @@ -2143,7 +2155,7 @@ public: AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), state, &result); + StringToJsval(window, state, &result); mRequest->FireSuccess(result); mRequest = nullptr; return NS_OK; @@ -2169,6 +2181,10 @@ public: NS_IMETHOD Run() { MOZ_ASSERT(NS_IsMainThread()); + nsCOMPtr window = mRequest->GetOwner(); + if (!window) { + return NS_OK; + } nsString state = NS_LITERAL_STRING("undefined"); if (mFile) { @@ -2177,7 +2193,7 @@ public: AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), state, &result); + StringToJsval(window, state, &result); mRequest->FireSuccess(result); mRequest = nullptr; return NS_OK; @@ -2203,6 +2219,10 @@ public: NS_IMETHOD Run() { MOZ_ASSERT(NS_IsMainThread()); + nsCOMPtr window = mRequest->GetOwner(); + if (!window) { + return NS_OK; + } nsString state = NS_LITERAL_STRING("unavailable"); if (mFile) { @@ -2211,7 +2231,7 @@ public: AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), state, &result); + StringToJsval(window, state, &result); mRequest->FireSuccess(result); mRequest = nullptr; return NS_OK; @@ -2237,6 +2257,10 @@ public: NS_IMETHOD Run() { MOZ_ASSERT(NS_IsMainThread()); + nsCOMPtr window = mRequest->GetOwner(); + if (!window) { + return NS_OK; + } nsString state = NS_LITERAL_STRING("unavailable"); if (mFile) { @@ -2245,7 +2269,7 @@ public: AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), state, &result); + StringToJsval(window, state, &result); mRequest->FireSuccess(result); mRequest = nullptr; return NS_OK; @@ -2271,6 +2295,10 @@ public: NS_IMETHOD Run() { MOZ_ASSERT(NS_IsMainThread()); + nsCOMPtr window = mRequest->GetOwner(); + if (!window) { + return NS_OK; + } nsString state = NS_LITERAL_STRING("unavailable"); if (mFile) { @@ -2279,7 +2307,7 @@ public: AutoJSContext cx; JS::Rooted result(cx); - StringToJsval(mRequest->GetOwner(), state, &result); + StringToJsval(window, state, &result); mRequest->FireSuccess(result); mRequest = nullptr; return NS_OK; @@ -2322,10 +2350,13 @@ public: NS_IMETHOD Run() { MOZ_ASSERT(NS_IsMainThread()); + nsCOMPtr window = mRequest->GetOwner(); + if (!window) { + return NS_OK; + } AutoJSContext cx; JS::Rooted result(cx, JSVAL_NULL); - nsPIDOMWindow* window = mRequest->GetOwner(); if (mFile) { result = nsIFileToJsval(window, mFile);