From b51a32c23b2fc0cdb3de3009d367af6a5011dd40 Mon Sep 17 00:00:00 2001 From: Reuben Morais Date: Fri, 1 Mar 2013 16:21:01 -0800 Subject: [PATCH] Bug 837865 - Use DOMCursor instead of DeviceStorageCursor. r=bent --- dom/base/DOMCursor.cpp | 4 +-- dom/base/nsDOMClassInfo.cpp | 5 ++- dom/devicestorage/DeviceStorage.h | 2 +- dom/devicestorage/nsDeviceStorage.cpp | 31 ++++++++++--------- dom/devicestorage/nsDeviceStorage.h | 10 +++--- dom/interfaces/devicestorage/moz.build | 1 - .../devicestorage/nsIDOMDeviceStorage.idl | 8 ++--- .../nsIDOMDeviceStorageCursor.idl | 11 ------- 8 files changed, 31 insertions(+), 41 deletions(-) delete mode 100644 dom/interfaces/devicestorage/nsIDOMDeviceStorageCursor.idl diff --git a/dom/base/DOMCursor.cpp b/dom/base/DOMCursor.cpp index e3c3ddc2e89d..33e3f012fcf7 100644 --- a/dom/base/DOMCursor.cpp +++ b/dom/base/DOMCursor.cpp @@ -39,7 +39,6 @@ DOMCursor::DOMCursor(nsIDOMWindow* aWindow, nsICursorContinueCallback* aCallback , mCallback(aCallback) , mFinished(false) { - MOZ_ASSERT(aCallback); } void @@ -51,7 +50,6 @@ DOMCursor::Reset() if (mRooted) { UnrootResultVal(); } - mResult = JSVAL_VOID; mDone = false; } @@ -73,6 +71,8 @@ DOMCursor::GetDone(bool *aDone) NS_IMETHODIMP DOMCursor::Continue() { + MOZ_ASSERT(mCallback, "If you're creating your own cursor class with no callback, you should override Continue()"); + // We need to have a result here because we must be in a 'success' state. if (mResult == JSVAL_VOID) { return NS_ERROR_DOM_INVALID_STATE_ERR; diff --git a/dom/base/nsDOMClassInfo.cpp b/dom/base/nsDOMClassInfo.cpp index e26fe414a96d..b023d78c5679 100644 --- a/dom/base/nsDOMClassInfo.cpp +++ b/dom/base/nsDOMClassInfo.cpp @@ -266,7 +266,6 @@ // Device Storage #include "nsIDOMDeviceStorage.h" -#include "nsIDOMDeviceStorageCursor.h" // Drag and drop #include "nsIDOMDataTransfer.h" @@ -2486,8 +2485,8 @@ nsDOMClassInfo::Init() DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget) DOM_CLASSINFO_MAP_END - DOM_CLASSINFO_MAP_BEGIN(DeviceStorageCursor, nsIDOMDeviceStorageCursor) - DOM_CLASSINFO_MAP_ENTRY(nsIDOMDeviceStorageCursor) + DOM_CLASSINFO_MAP_BEGIN_NO_CLASS_IF(DeviceStorageCursor, nsIDOMDOMCursor) + DOM_CLASSINFO_MAP_ENTRY(nsIDOMDOMCursor) DOM_CLASSINFO_MAP_ENTRY(nsIDOMDOMRequest) DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget) DOM_CLASSINFO_MAP_END diff --git a/dom/devicestorage/DeviceStorage.h b/dom/devicestorage/DeviceStorage.h index ff8eb7d1fdaa..9a45f97e518f 100644 --- a/dom/devicestorage/DeviceStorage.h +++ b/dom/devicestorage/DeviceStorage.h @@ -105,7 +105,7 @@ private: JSContext* aCx, uint8_t aArgc, bool aEditable, - nsIDOMDeviceStorageCursor** aRetval); + nsIDOMDOMCursor** aRetval); nsString mStorageType; nsCOMPtr mRootDirectory; diff --git a/dom/devicestorage/nsDeviceStorage.cpp b/dom/devicestorage/nsDeviceStorage.cpp index 4f4ef0c67fcd..4b301ad0598b 100644 --- a/dom/devicestorage/nsDeviceStorage.cpp +++ b/dom/devicestorage/nsDeviceStorage.cpp @@ -742,7 +742,7 @@ nsDOMDeviceStorage::SetRootDirectoryForType(const nsAString& aType) dirService->Get(NS_WIN_MUSIC_DIR, NS_GET_IID(nsIFile), getter_AddRefs(f)); #endif } - + // Apps directory else if (aType.EqualsLiteral(DEVICESTORAGE_APPS)) { #ifdef MOZ_WIDGET_GONK @@ -1025,9 +1025,12 @@ ContinueCursorEvent::Run() nsDOMDeviceStorageCursor* cursor = static_cast(mRequest.get()); jsval val = nsIFileToJsval(cursor->GetOwner(), file); - cursor->mOkToCallContinue = true; - - mRequest->FireSuccess(val); + if (file) { + cursor->mOkToCallContinue = true; + cursor->FireSuccess(val); + } else { + cursor->FireDone(); + } mRequest = nullptr; return NS_OK; } @@ -1072,21 +1075,19 @@ private: DOMCI_DATA(DeviceStorageCursor, nsDOMDeviceStorageCursor) NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(nsDOMDeviceStorageCursor) - NS_INTERFACE_MAP_ENTRY(nsIDOMDeviceStorageCursor) + NS_INTERFACE_MAP_ENTRY(nsIDOMDOMCursor) NS_INTERFACE_MAP_ENTRY(nsIContentPermissionRequest) - NS_INTERFACE_MAP_ENTRY(nsIDOMDOMRequest) - NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMDeviceStorageCursor) NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(DeviceStorageCursor) -NS_INTERFACE_MAP_END_INHERITING(DOMRequest) +NS_INTERFACE_MAP_END_INHERITING(DOMCursor) -NS_IMPL_ADDREF_INHERITED(nsDOMDeviceStorageCursor, DOMRequest) -NS_IMPL_RELEASE_INHERITED(nsDOMDeviceStorageCursor, DOMRequest) +NS_IMPL_ADDREF_INHERITED(nsDOMDeviceStorageCursor, DOMCursor) +NS_IMPL_RELEASE_INHERITED(nsDOMDeviceStorageCursor, DOMCursor) nsDOMDeviceStorageCursor::nsDOMDeviceStorageCursor(nsIDOMWindow* aWindow, nsIPrincipal* aPrincipal, DeviceStorageFile* aFile, PRTime aSince) - : DOMRequest(aWindow) + : DOMCursor(aWindow, nullptr) , mOkToCallContinue(false) , mSince(aSince) , mFile(aFile) @@ -1223,7 +1224,7 @@ nsDOMDeviceStorageCursor::IPDLRelease() void nsDOMDeviceStorageCursor::RequestComplete() { - NS_ASSERTION(!mOkToCallContinue, "mOkToCallContinue must be false"); + NS_ASSERTION(!mOkToCallContinue, "mOkToCallContinue must be false"); mOkToCallContinue = true; } @@ -2144,7 +2145,7 @@ nsDOMDeviceStorage::Enumerate(const JS::Value & aName, const JS::Value & aOptions, JSContext* aCx, uint8_t aArgc, - nsIDOMDeviceStorageCursor** aRetval) + nsIDOMDOMCursor** aRetval) { return EnumerateInternal(aName, aOptions, aCx, aArgc, false, aRetval); } @@ -2154,7 +2155,7 @@ nsDOMDeviceStorage::EnumerateEditable(const JS::Value & aName, const JS::Value & aOptions, JSContext* aCx, uint8_t aArgc, - nsIDOMDeviceStorageCursor** aRetval) + nsIDOMDOMCursor** aRetval) { return EnumerateInternal(aName, aOptions, aCx, aArgc, true, aRetval); } @@ -2183,7 +2184,7 @@ nsDOMDeviceStorage::EnumerateInternal(const JS::Value & aName, JSContext* aCx, uint8_t aArgc, bool aEditable, - nsIDOMDeviceStorageCursor** aRetval) + nsIDOMDOMCursor** aRetval) { nsCOMPtr win = GetOwner(); if (!win) diff --git a/dom/devicestorage/nsDeviceStorage.h b/dom/devicestorage/nsDeviceStorage.h index d98440c89135..9434d9587961 100644 --- a/dom/devicestorage/nsDeviceStorage.h +++ b/dom/devicestorage/nsDeviceStorage.h @@ -9,12 +9,12 @@ class nsPIDOMWindow; #include "PCOMContentPermissionRequestChild.h" #include "DOMRequest.h" +#include "DOMCursor.h" #include "nsAutoPtr.h" #include "nsCycleCollectionParticipant.h" #include "nsDOMClassInfoID.h" #include "nsIClassInfo.h" #include "nsIContentPermissionPrompt.h" -#include "nsIDOMDeviceStorageCursor.h" #include "nsIDOMWindow.h" #include "nsIURI.h" #include "nsInterfaceHashtable.h" @@ -88,8 +88,7 @@ private: }; class nsDOMDeviceStorageCursor MOZ_FINAL - : public nsIDOMDeviceStorageCursor - , public mozilla::dom::DOMRequest + : public mozilla::dom::DOMCursor , public nsIContentPermissionRequest , public PCOMContentPermissionRequestChild , public mozilla::dom::devicestorage::DeviceStorageRequestChildCallback @@ -97,7 +96,10 @@ class nsDOMDeviceStorageCursor MOZ_FINAL public: NS_DECL_ISUPPORTS_INHERITED NS_DECL_NSICONTENTPERMISSIONREQUEST - NS_DECL_NSIDOMDEVICESTORAGECURSOR + + // nsIDOMDOMCursor interface. + // We use DOMCursor::GetDone. + NS_IMETHOD Continue() MOZ_OVERRIDE; nsDOMDeviceStorageCursor(nsIDOMWindow* aWindow, nsIPrincipal* aPrincipal, diff --git a/dom/interfaces/devicestorage/moz.build b/dom/interfaces/devicestorage/moz.build index c58e38e6bd61..807a8eb766f7 100644 --- a/dom/interfaces/devicestorage/moz.build +++ b/dom/interfaces/devicestorage/moz.build @@ -6,7 +6,6 @@ XPIDL_SOURCES += [ 'nsIDOMDeviceStorage.idl', 'nsIDOMDeviceStorageChangeEvent.idl', - 'nsIDOMDeviceStorageCursor.idl', 'nsIDOMNavigatorDeviceStorage.idl', ] diff --git a/dom/interfaces/devicestorage/nsIDOMDeviceStorage.idl b/dom/interfaces/devicestorage/nsIDOMDeviceStorage.idl index aaa199d24366..d54f248b093a 100644 --- a/dom/interfaces/devicestorage/nsIDOMDeviceStorage.idl +++ b/dom/interfaces/devicestorage/nsIDOMDeviceStorage.idl @@ -6,7 +6,7 @@ #include "nsIDOMEventTarget.idl" interface nsIDOMBlob; interface nsIDOMDOMRequest; -interface nsIDOMDeviceStorageCursor; +interface nsIDOMDOMCursor; interface nsIDOMDeviceStorageChangeEvent; interface nsIDOMEventListener; interface nsIFile; @@ -16,7 +16,7 @@ dictionary DeviceStorageEnumerationParameters jsval since; }; -[scriptable, uuid(c611b701-ddfc-456d-893a-3b3fcb30d9fd), builtinclass] +[scriptable, uuid(d0df738b-1c42-4b1a-84d0-9a089d830974), builtinclass] interface nsIDOMDeviceStorage : nsIDOMEventTarget { [implicit_jscontext] attribute jsval onchange; @@ -33,10 +33,10 @@ interface nsIDOMDeviceStorage : nsIDOMEventTarget nsIDOMDOMRequest delete(in jsval aName); [optional_argc, implicit_jscontext] - nsIDOMDeviceStorageCursor enumerate([optional] in jsval aName, /* DeviceStorageEnumerationParameters */ [optional] in jsval options); + nsIDOMDOMCursor enumerate([optional] in jsval aName, /* DeviceStorageEnumerationParameters */ [optional] in jsval options); [optional_argc, implicit_jscontext] - nsIDOMDeviceStorageCursor enumerateEditable([optional] in jsval aName, /* DeviceStorageEnumerationParameters */ [optional] in jsval options); + nsIDOMDOMCursor enumerateEditable([optional] in jsval aName, /* DeviceStorageEnumerationParameters */ [optional] in jsval options); nsIDOMDOMRequest freeSpace(); diff --git a/dom/interfaces/devicestorage/nsIDOMDeviceStorageCursor.idl b/dom/interfaces/devicestorage/nsIDOMDeviceStorageCursor.idl deleted file mode 100644 index c5472f24e0f9..000000000000 --- a/dom/interfaces/devicestorage/nsIDOMDeviceStorageCursor.idl +++ /dev/null @@ -1,11 +0,0 @@ -/* 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/. */ - -#include "domstubs.idl" - -[scriptable, uuid(995DFF99-ED70-4780-AC9A-4B58CD491186)] -interface nsIDOMDeviceStorageCursor : nsISupports -{ - void continue(); -};