diff --git a/dom/events/DataTransferItem.cpp b/dom/events/DataTransferItem.cpp index aea429a6810e..9aa9e1aa7093 100644 --- a/dom/events/DataTransferItem.cpp +++ b/dom/events/DataTransferItem.cpp @@ -109,7 +109,7 @@ DataTransferItem::KindFromData(nsIVariant* aData) nsresult rv = aData->GetAsISupports(getter_AddRefs(supports)); if (NS_SUCCEEDED(rv) && supports) { // Check if we have one of the supported file data formats - if (nsCOMPtr(do_QueryInterface(supports)) || + if (RefPtr(do_QueryObject(supports)) || nsCOMPtr(do_QueryInterface(supports)) || nsCOMPtr(do_QueryInterface(supports))) { return KIND_FILE; @@ -292,8 +292,7 @@ DataTransferItem::GetAsFile(nsIPrincipal& aSubjectPrincipal, return nullptr; } - if (nsCOMPtr domBlob = do_QueryInterface(supports)) { - Blob* blob = static_cast(domBlob.get()); + if (RefPtr blob = do_QueryObject(supports)) { mCachedFile = blob->ToFile(); } else if (nsCOMPtr blobImpl = do_QueryInterface(supports)) { MOZ_ASSERT(blobImpl->IsFile()); diff --git a/dom/file/Blob.cpp b/dom/file/Blob.cpp index 7ff0f6af20ac..e2951ddd13db 100644 --- a/dom/file/Blob.cpp +++ b/dom/file/Blob.cpp @@ -34,8 +34,12 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(Blob) NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY - NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMBlob) - NS_INTERFACE_MAP_ENTRY(nsIDOMBlob) + NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIMutable) + // Alas, there is no helper macro for this. + if (aIID.Equals(NS_GET_IID(Blob))) { + *aInstancePtr = do_AddRef(this).take(); + return NS_OK; + } else NS_INTERFACE_MAP_ENTRY(nsIMutable) NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) NS_INTERFACE_MAP_END diff --git a/dom/file/Blob.h b/dom/file/Blob.h index 845bc7a9e5ac..b69c284e2056 100644 --- a/dom/file/Blob.h +++ b/dom/file/Blob.h @@ -13,7 +13,6 @@ #include "mozilla/dom/BlobImpl.h" #include "nsCycleCollectionParticipant.h" #include "nsCOMPtr.h" -#include "nsIDOMBlob.h" #include "nsIMutable.h" #include "nsWrapperCache.h" #include "nsWeakReference.h" @@ -27,17 +26,21 @@ struct BlobPropertyBag; class File; class OwningArrayBufferViewOrArrayBufferOrBlobOrUSVString; -class Blob : public nsIDOMBlob - , public nsIMutable +#define NS_DOM_BLOB_IID \ +{ 0x648c2a83, 0xbdb1, 0x4a7d, \ + { 0xb5, 0x0a, 0xca, 0xcd, 0x92, 0x87, 0x45, 0xc2 } } + + +class Blob : public nsIMutable , public nsSupportsWeakReference , public nsWrapperCache { public: - NS_DECL_NSIDOMBLOB NS_DECL_NSIMUTABLE NS_DECL_CYCLE_COLLECTING_ISUPPORTS - NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(Blob, nsIDOMBlob) + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(Blob, nsIMutable) + NS_DECLARE_STATIC_IID_ACCESSOR(NS_DOM_BLOB_IID) typedef OwningArrayBufferViewOrArrayBufferOrBlobOrUSVString BlobPart; @@ -147,6 +150,8 @@ private: nsCOMPtr mParent; }; +NS_DEFINE_STATIC_IID_ACCESSOR(Blob, NS_DOM_BLOB_IID) + // Override BindingJSObjectMallocBytes for blobs to tell the JS GC how much // memory is held live by the binding object. size_t BindingJSObjectMallocBytes(Blob* aBlob); @@ -154,4 +159,10 @@ size_t BindingJSObjectMallocBytes(Blob* aBlob); } // namespace dom } // namespace mozilla +inline nsISupports* +ToSupports(mozilla::dom::Blob* aBlob) +{ + return static_cast(aBlob); +} + #endif // mozilla_dom_Blob_h diff --git a/dom/file/moz.build b/dom/file/moz.build index 02c078d1fa37..66d8ffbf986d 100644 --- a/dom/file/moz.build +++ b/dom/file/moz.build @@ -9,12 +9,6 @@ with Files("**"): DIRS += ['ipc'] -XPIDL_SOURCES += [ - 'nsIDOMBlob.idl', -] - -XPIDL_MODULE = 'dom_file' - EXPORTS += [ 'nsHostObjectProtocolHandler.h', 'nsHostObjectURI.h', diff --git a/dom/file/nsIDOMBlob.idl b/dom/file/nsIDOMBlob.idl deleted file mode 100644 index 152da4459dd8..000000000000 --- a/dom/file/nsIDOMBlob.idl +++ /dev/null @@ -1,12 +0,0 @@ -/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* 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 "nsISupports.idl" - -[scriptable, builtinclass, uuid(f344146a-ee1f-417e-8a68-6984ca56f0ae)] -interface nsIDOMBlob : nsISupports -{ - // Just an empty interface. -}; diff --git a/dom/file/tests/test_ipc_messagemanager_blob.html b/dom/file/tests/test_ipc_messagemanager_blob.html index e51ec3bcf305..42f2b0a7f540 100644 --- a/dom/file/tests/test_ipc_messagemanager_blob.html +++ b/dom/file/tests/test_ipc_messagemanager_blob.html @@ -19,8 +19,10 @@ function childFrameScript() { "use strict"; + Cu.importGlobalProperties(["Blob"]); + addMessageListener("test:ipcClonedMessage", function(message) { - if (!(message.json instanceof Ci.nsIDOMBlob)) { + if (!Blob.isInstance(message.json)) { sendAsyncMessage(message.name, message.json); return; } diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp index ac2d691858f5..a8de92a435bb 100644 --- a/dom/html/HTMLInputElement.cpp +++ b/dom/html/HTMLInputElement.cpp @@ -18,6 +18,7 @@ #include "mozilla/dom/WheelEventBinding.h" #include "nsAttrValueInlines.h" #include "nsCRTGlue.h" +#include "nsQueryObject.h" #include "nsITextControlElement.h" #include "nsIDOMNSEditableElement.h" @@ -508,7 +509,7 @@ HTMLInputElement::nsFilePickerShownCallback::Done(int16_t aResult) while (NS_SUCCEEDED(iter->HasMoreElements(&hasMore)) && hasMore) { iter->GetNext(getter_AddRefs(tmp)); - nsCOMPtr domBlob = do_QueryInterface(tmp); + RefPtr domBlob = do_QueryObject(tmp); MOZ_ASSERT(domBlob, "Null file object from FilePicker's file enumerator?"); if (!domBlob) { @@ -516,7 +517,7 @@ HTMLInputElement::nsFilePickerShownCallback::Done(int16_t aResult) } OwningFileOrDirectory* element = newFilesOrDirectories.AppendElement(); - element->SetAsFile() = static_cast(domBlob.get()); + element->SetAsFile() = domBlob->ToFile(); } } else { MOZ_ASSERT(mode == static_cast(nsIFilePicker::modeOpen) || @@ -525,9 +526,9 @@ HTMLInputElement::nsFilePickerShownCallback::Done(int16_t aResult) nsresult rv = mFilePicker->GetDomFileOrDirectory(getter_AddRefs(tmp)); NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr blob = do_QueryInterface(tmp); + RefPtr blob = do_QueryObject(tmp); if (blob) { - RefPtr file = static_cast(blob.get())->ToFile(); + RefPtr file = blob->ToFile(); MOZ_ASSERT(file); OwningFileOrDirectory* element = newFilesOrDirectories.AppendElement(); diff --git a/dom/indexedDB/IDBDatabase.cpp b/dom/indexedDB/IDBDatabase.cpp index eab2ef7fe6f6..874ee3f9081f 100644 --- a/dom/indexedDB/IDBDatabase.cpp +++ b/dom/indexedDB/IDBDatabase.cpp @@ -915,8 +915,7 @@ IDBDatabase::GetOrCreateFileActorForBlob(Blob* aBlob) // a) it is unique per blob, b) it is reference-counted so that we can // guarantee that it stays alive, and c) it doesn't hold the actual File // alive. - nsCOMPtr blob = aBlob; - nsCOMPtr weakRef = do_GetWeakReference(blob); + nsCOMPtr weakRef = do_GetWeakReference(aBlob); MOZ_ASSERT(weakRef); PBackgroundIDBDatabaseFileChild* actor = nullptr; diff --git a/dom/indexedDB/test/file.js b/dom/indexedDB/test/file.js index d91ced68e2d7..07f3c63b4c8a 100644 --- a/dom/indexedDB/test/file.js +++ b/dom/indexedDB/test/file.js @@ -110,8 +110,8 @@ function verifyBuffers(buffer1, buffer2) function verifyBlob(blob1, blob2, fileId, blobReadHandler) { // eslint-disable-next-line mozilla/use-cc-etc - is(blob1 instanceof Components.interfaces.nsIDOMBlob, true, - "Instance of nsIDOMBlob"); + is(SpecialPowers.wrap(Blob).isInstance(blob1), true, + "Instance of Blob"); is(blob1 instanceof File, blob2 instanceof File, "Instance of DOM File"); is(blob1.size, blob2.size, "Correct size"); diff --git a/dom/indexedDB/test/test_message_manager_ipc.html b/dom/indexedDB/test/test_message_manager_ipc.html index d07faaac8a9d..5f3df92adcce 100644 --- a/dom/indexedDB/test/test_message_manager_ipc.html +++ b/dom/indexedDB/test/test_message_manager_ipc.html @@ -25,7 +25,7 @@ function childFrameScript() { const blobText = blobData.join(""); const blobType = "text/plain"; - Cu.importGlobalProperties(["indexedDB"]); + Cu.importGlobalProperties(["indexedDB", "Blob"]); function info(msg) { sendAsyncMessage(mmName, { op: "info", msg }); @@ -66,7 +66,7 @@ function childFrameScript() { let blob = message.data; - ok(blob instanceof Ci.nsIDOMBlob, "Message manager sent a blob"); + ok(Blob.isInstance(blob), "Message manager sent a blob"); is(blob.size, blobText.length, "Blob has correct length"); is(blob.type, blobType, "Blob has correct type"); @@ -82,7 +82,7 @@ function childFrameScript() { let slice = blob.slice(0, blobData[0].length, blobType); - ok(slice instanceof Ci.nsIDOMBlob, "Slice returned a blob"); + ok(Blob.isInstance(slice), "Slice returned a blob"); is(slice.size, blobData[0].length, "Slice has correct length"); is(slice.type, blobType, "Slice has correct type"); @@ -143,7 +143,7 @@ function childFrameScript() { blob = event.target.result; - ok(blob instanceof Ci.nsIDOMBlob, "Database gave us a blob"); + ok(Blob.isInstance(blob), "Database gave us a blob"); is(blob.size, blobText.length, "Blob has correct length"); is(blob.type, blobType, "Blob has correct type"); @@ -178,7 +178,7 @@ function childFrameScript() { slice = event.target.result; - ok(slice instanceof Ci.nsIDOMBlob, "Database gave us a blob"); + ok(Blob.isInstance(slice), "Database gave us a blob"); is(slice.size, blobData[0].length, "Slice has correct length"); is(slice.type, blobType, "Slice has correct type"); diff --git a/dom/indexedDB/test/unit/xpcshell-head-parent-process.js b/dom/indexedDB/test/unit/xpcshell-head-parent-process.js index 1ca81630bd22..c91b60cb1e7a 100644 --- a/dom/indexedDB/test/unit/xpcshell-head-parent-process.js +++ b/dom/indexedDB/test/unit/xpcshell-head-parent-process.js @@ -10,6 +10,8 @@ var { "classes": Cc, "interfaces": Ci, "utils": Cu } = Components; ChromeUtils.import("resource://gre/modules/Services.jsm"); +Cu.importGlobalProperties(["Blob"]); + if (!("self" in this)) { this.self = this; } @@ -426,7 +428,7 @@ function verifyBuffers(buffer1, buffer2) function verifyBlob(blob1, blob2) { - is(blob1 instanceof Ci.nsIDOMBlob, true, + is(Blob.isInstance(blob1), true, "Instance of nsIDOMBlob"); is(blob1 instanceof File, blob2 instanceof File, "Instance of DOM File"); diff --git a/dom/interfaces/base/nsIDOMWindow.idl b/dom/interfaces/base/nsIDOMWindow.idl index 6d18c41b8d2b..196fe322982e 100644 --- a/dom/interfaces/base/nsIDOMWindow.idl +++ b/dom/interfaces/base/nsIDOMWindow.idl @@ -6,7 +6,6 @@ #include "domstubs.idl" interface nsIControllers; -interface nsIDOMBlob; interface nsIDOMOfflineResourceList; interface nsIPrompt; interface nsIVariant; diff --git a/dom/ipc/tests/test_blob_sliced_from_parent_process.html b/dom/ipc/tests/test_blob_sliced_from_parent_process.html index 0ac26bf02395..99bfb7532b7a 100644 --- a/dom/ipc/tests/test_blob_sliced_from_parent_process.html +++ b/dom/ipc/tests/test_blob_sliced_from_parent_process.html @@ -52,7 +52,7 @@ function childFrameScript() { let blob = message.data; - ok(blob instanceof Ci.nsIDOMBlob, "Received a Blob"); + ok(Blob.isInstance(blob), "Received a Blob"); is(blob.size, blobText.length, "Blob has correct length"); is(blob.type, blobType, "Blob has correct type"); @@ -71,7 +71,7 @@ function childFrameScript() { let slice = blob.slice(firstSliceStart, firstSliceEnd, blobType); - ok(slice instanceof Ci.nsIDOMBlob, "Slice returned a Blob"); + ok(Blob.isInstance(slice), "Slice returned a Blob"); is(slice.size, blobData[2].length, "Slice has correct length"); is(slice.type, blobType, "Slice has correct type"); @@ -90,7 +90,7 @@ function childFrameScript() { slice = slice.slice(secondSliceStart, secondSliceEnd, blobType); - ok(slice instanceof Ci.nsIDOMBlob, "Second slice returned a Blob"); + ok(Blob.isInstance(slice), "Second slice returned a Blob"); is(slice.size, sliceText.length, "Second slice has correct length"); is(slice.type, blobType, "Second slice has correct type"); diff --git a/dom/media/nsIDOMNavigatorUserMedia.idl b/dom/media/nsIDOMNavigatorUserMedia.idl index 991d44e728f5..7030d0eea0e5 100644 --- a/dom/media/nsIDOMNavigatorUserMedia.idl +++ b/dom/media/nsIDOMNavigatorUserMedia.idl @@ -26,7 +26,7 @@ interface nsIGetUserMediaDevicesSuccessCallback : nsISupports interface nsIDOMGetUserMediaSuccessCallback : nsISupports { /* - * value must be a nsIDOMBlob if picture is true and a + * value must be a Blob if picture is true and a * DOMLocalMediaStream if either audio or video are true. */ void onSuccess(in nsISupports value); diff --git a/dom/presentation/PresentationService.cpp b/dom/presentation/PresentationService.cpp index 626f2bd1e3ea..69b3d807b236 100644 --- a/dom/presentation/PresentationService.cpp +++ b/dom/presentation/PresentationService.cpp @@ -808,7 +808,7 @@ PresentationService::SendSessionBinaryMsg(const nsAString& aSessionId, NS_IMETHODIMP PresentationService::SendSessionBlob(const nsAString& aSessionId, uint8_t aRole, - nsIDOMBlob* aBlob) + Blob* aBlob) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(!aSessionId.IsEmpty()); diff --git a/dom/presentation/PresentationSessionInfo.cpp b/dom/presentation/PresentationSessionInfo.cpp index a16ff7a5cc90..54e3f6ba3afd 100644 --- a/dom/presentation/PresentationSessionInfo.cpp +++ b/dom/presentation/PresentationSessionInfo.cpp @@ -291,7 +291,7 @@ PresentationSessionInfo::SendBinaryMsg(const nsACString& aData) } nsresult -PresentationSessionInfo::SendBlob(nsIDOMBlob* aBlob) +PresentationSessionInfo::SendBlob(Blob* aBlob) { if (NS_WARN_IF(!IsSessionReady())) { return NS_ERROR_DOM_INVALID_STATE_ERR; diff --git a/dom/presentation/PresentationSessionInfo.h b/dom/presentation/PresentationSessionInfo.h index 5bf22c933a1b..4a1a3f23527b 100644 --- a/dom/presentation/PresentationSessionInfo.h +++ b/dom/presentation/PresentationSessionInfo.h @@ -102,7 +102,7 @@ public: nsresult SendBinaryMsg(const nsACString& aData); - nsresult SendBlob(nsIDOMBlob* aBlob); + nsresult SendBlob(Blob* aBlob); nsresult Close(nsresult aReason, uint32_t aState); diff --git a/dom/presentation/PresentationTCPSessionTransport.cpp b/dom/presentation/PresentationTCPSessionTransport.cpp index eb7a7e7e52f4..bb5dcd5eff82 100644 --- a/dom/presentation/PresentationTCPSessionTransport.cpp +++ b/dom/presentation/PresentationTCPSessionTransport.cpp @@ -424,7 +424,7 @@ PresentationTCPSessionTransport::SendBinaryMsg(const nsACString& aData) } NS_IMETHODIMP -PresentationTCPSessionTransport::SendBlob(nsIDOMBlob* aBlob) +PresentationTCPSessionTransport::SendBlob(Blob* aBlob) { return NS_ERROR_DOM_NOT_SUPPORTED_ERR; } diff --git a/dom/presentation/interfaces/nsIPresentationService.idl b/dom/presentation/interfaces/nsIPresentationService.idl index a5d4d6198dd8..16f548a8bf29 100644 --- a/dom/presentation/interfaces/nsIPresentationService.idl +++ b/dom/presentation/interfaces/nsIPresentationService.idl @@ -4,7 +4,6 @@ #include "nsISupports.idl" -interface nsIDOMBlob; interface nsIInputStream; interface nsIPresentationAvailabilityListener; interface nsIPresentationRespondingListener; @@ -12,6 +11,7 @@ interface nsIPresentationSessionListener; interface nsIPresentationTransportBuilderConstructor; interface nsIPrincipal; +webidl Blob; webidl EventTarget; %{C++ @@ -120,7 +120,7 @@ interface nsIPresentationService : nsISupports */ void sendSessionBlob(in DOMString sessionId, in uint8_t role, - in nsIDOMBlob blob); + in Blob blob); /* * Close the session. diff --git a/dom/presentation/interfaces/nsIPresentationSessionTransport.idl b/dom/presentation/interfaces/nsIPresentationSessionTransport.idl index a0b5617d7d39..cd73b32ecc46 100644 --- a/dom/presentation/interfaces/nsIPresentationSessionTransport.idl +++ b/dom/presentation/interfaces/nsIPresentationSessionTransport.idl @@ -4,10 +4,11 @@ #include "nsISupports.idl" -interface nsIDOMBlob; interface nsIInputStream; interface nsINetAddr; +webidl Blob; + %{C++ #define PRESENTATION_TCP_SESSION_TRANSPORT_CONTRACTID \ "@mozilla.org/presentation/presentationtcpsessiontransport;1" @@ -59,7 +60,7 @@ interface nsIPresentationSessionTransport : nsISupports * Send the blob to the remote endpoint. * @param blob: The input blob to be sent. */ - void sendBlob(in nsIDOMBlob blob); + void sendBlob(in Blob blob); /* * Close this session transport. diff --git a/dom/presentation/ipc/PresentationBuilderParent.cpp b/dom/presentation/ipc/PresentationBuilderParent.cpp index 0f1ad634f823..8dff1beea4c0 100644 --- a/dom/presentation/ipc/PresentationBuilderParent.cpp +++ b/dom/presentation/ipc/PresentationBuilderParent.cpp @@ -84,7 +84,7 @@ PresentationSessionTransportIPC::SendBinaryMsg(const nsACString& aData) } NS_IMETHODIMP -PresentationSessionTransportIPC::SendBlob(nsIDOMBlob* aBlob) +PresentationSessionTransportIPC::SendBlob(Blob* aBlob) { return NS_OK; } diff --git a/dom/presentation/ipc/PresentationContentSessionInfo.cpp b/dom/presentation/ipc/PresentationContentSessionInfo.cpp index d0010505ff81..37d93fb40ad3 100644 --- a/dom/presentation/ipc/PresentationContentSessionInfo.cpp +++ b/dom/presentation/ipc/PresentationContentSessionInfo.cpp @@ -46,7 +46,7 @@ PresentationContentSessionInfo::SendBinaryMsg(const nsACString& aData) } nsresult -PresentationContentSessionInfo::SendBlob(nsIDOMBlob* aBlob) +PresentationContentSessionInfo::SendBlob(Blob* aBlob) { if (NS_WARN_IF(!mTransport)) { return NS_ERROR_NOT_AVAILABLE; diff --git a/dom/presentation/ipc/PresentationContentSessionInfo.h b/dom/presentation/ipc/PresentationContentSessionInfo.h index 447485dbd124..25384f8c5c92 100644 --- a/dom/presentation/ipc/PresentationContentSessionInfo.h +++ b/dom/presentation/ipc/PresentationContentSessionInfo.h @@ -44,7 +44,7 @@ public: nsresult SendBinaryMsg(const nsACString& aData); - nsresult SendBlob(nsIDOMBlob* aBlob); + nsresult SendBlob(Blob* aBlob); nsresult Close(nsresult aReason); diff --git a/dom/presentation/ipc/PresentationIPCService.cpp b/dom/presentation/ipc/PresentationIPCService.cpp index 3105afe6da87..2d1780253a72 100644 --- a/dom/presentation/ipc/PresentationIPCService.cpp +++ b/dom/presentation/ipc/PresentationIPCService.cpp @@ -129,7 +129,7 @@ PresentationIPCService::SendSessionBinaryMsg(const nsAString& aSessionId, NS_IMETHODIMP PresentationIPCService::SendSessionBlob(const nsAString& aSessionId, uint8_t aRole, - nsIDOMBlob* aBlob) + Blob* aBlob) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(!aSessionId.IsEmpty()); diff --git a/editor/libeditor/HTMLEditorDataTransfer.cpp b/editor/libeditor/HTMLEditorDataTransfer.cpp index 7508e99853c0..7d56e7148750 100644 --- a/editor/libeditor/HTMLEditorDataTransfer.cpp +++ b/editor/libeditor/HTMLEditorDataTransfer.cpp @@ -1045,7 +1045,7 @@ HTMLEditor::InsertObject(const nsACString& aType, nsCOMPtr node = do_QueryInterface(aDestinationNode); MOZ_ASSERT(node); - nsCOMPtr domBlob = Blob::Create(node->GetOwnerGlobal(), blob); + RefPtr domBlob = Blob::Create(node->GetOwnerGlobal(), blob); NS_ENSURE_TRUE(domBlob, NS_ERROR_FAILURE); return utils->SlurpBlob(domBlob, node->OwnerDoc()->GetWindow(), br); diff --git a/editor/nsIEditorUtils.idl b/editor/nsIEditorUtils.idl index e6495eaebfa6..0078a45278f2 100644 --- a/editor/nsIEditorUtils.idl +++ b/editor/nsIEditorUtils.idl @@ -7,9 +7,10 @@ #include "nsISupports.idl" #include "domstubs.idl" -interface nsIDOMBlob; interface mozIDOMWindowProxy; +webidl Blob; + [scriptable, builtinclass, uuid(eb8b8ad9-5d8f-43bd-8ce5-5b943c180d56)] interface nsIEditorBlobListener : nsISupports { @@ -27,6 +28,6 @@ interface nsIEditorUtils : nsISupports /** * Given a blob, returns the data from that blob, asynchronously. */ - void slurpBlob(in nsIDOMBlob aBlob, in mozIDOMWindowProxy aScope, + void slurpBlob(in Blob aBlob, in mozIDOMWindowProxy aScope, in nsIEditorBlobListener aListener); }; diff --git a/ipc/glue/BackgroundChild.h b/ipc/glue/BackgroundChild.h index e9128664b581..8f2e1dea0550 100644 --- a/ipc/glue/BackgroundChild.h +++ b/ipc/glue/BackgroundChild.h @@ -11,8 +11,6 @@ #include "mozilla/Attributes.h" #include "mozilla/ipc/Transport.h" -class nsIDOMBlob; - namespace mozilla { namespace dom { diff --git a/js/xpconnect/tests/chrome/test_cloneInto.xul b/js/xpconnect/tests/chrome/test_cloneInto.xul index 6ff997fbced3..45d1475a7d82 100644 --- a/js/xpconnect/tests/chrome/test_cloneInto.xul +++ b/js/xpconnect/tests/chrome/test_cloneInto.xul @@ -49,7 +49,7 @@ if (a instanceof File) return 'file'; - if (a instanceof Ci.nsIDOMBlob) + if (a instanceof Blob) return 'blob'; if (TypedArrayThings.includes(a.constructor.name)) diff --git a/js/xpconnect/tests/unit/component-blob.js b/js/xpconnect/tests/unit/component-blob.js index 2b6e2fbf9913..c3390264b8f7 100644 --- a/js/xpconnect/tests/unit/component-blob.js +++ b/js/xpconnect/tests/unit/component-blob.js @@ -27,7 +27,7 @@ BlobComponent.prototype = var f1 = new Blob([testContent], {"type" : "text/xml"}); // do some tests - Assert.ok(f1 instanceof Ci.nsIDOMBlob, "Should be a DOM Blob"); + Assert.ok(f1 instanceof Blob, "Should be a DOM Blob"); Assert.ok(!(f1 instanceof File), "Should not be a DOM File"); diff --git a/js/xpconnect/tests/unit/test_blob2.js b/js/xpconnect/tests/unit/test_blob2.js index 7edb5499767e..90d4bdc1c6ea 100644 --- a/js/xpconnect/tests/unit/test_blob2.js +++ b/js/xpconnect/tests/unit/test_blob2.js @@ -11,7 +11,7 @@ function run_test() { var f1 = new Blob([testContent], {"type" : "text/xml"}); // do some tests - Assert.ok(f1 instanceof Ci.nsIDOMBlob, "Should be a DOM Blob"); + Assert.ok(f1 instanceof Blob, "Should be a DOM Blob"); Assert.ok(!(f1 instanceof File), "Should not be a DOM File"); diff --git a/toolkit/modules/PropertyListUtils.jsm b/toolkit/modules/PropertyListUtils.jsm index e9f3135b90d6..e876949a2c99 100644 --- a/toolkit/modules/PropertyListUtils.jsm +++ b/toolkit/modules/PropertyListUtils.jsm @@ -69,7 +69,7 @@ var PropertyListUtils = Object.freeze({ /** * Asynchronously reads a file as a property list. * - * @param aFile (nsIDOMBlob/nsIFile) + * @param aFile (Blob/nsIFile) * the file to be read as a property list. * @param aCallback * If the property list is read successfully, aPropertyListRoot is set diff --git a/widget/nsBaseFilePicker.cpp b/widget/nsBaseFilePicker.cpp index 67fa024e8c2e..4b755d3be458 100644 --- a/widget/nsBaseFilePicker.cpp +++ b/widget/nsBaseFilePicker.cpp @@ -53,8 +53,7 @@ LocalFileToDirectoryOrBlob(nsPIDOMWindowInner* aWindow, return NS_OK; } - nsCOMPtr blob = File::CreateFromFile(aWindow, aFile); - blob.forget(aResult); + *aResult = ToSupports(File::CreateFromFile(aWindow, aFile).take()); return NS_OK; } diff --git a/widget/nsFilePickerProxy.cpp b/widget/nsFilePickerProxy.cpp index 1108504466eb..4497023ef996 100644 --- a/widget/nsFilePickerProxy.cpp +++ b/widget/nsFilePickerProxy.cpp @@ -207,7 +207,7 @@ nsFilePickerProxy::GetDomFileOrDirectory(nsISupports** aValue) MOZ_ASSERT(mFilesOrDirectories.Length() == 1); if (mFilesOrDirectories[0].IsFile()) { - nsCOMPtr blob = mFilesOrDirectories[0].GetAsFile().get(); + nsCOMPtr blob = ToSupports(mFilesOrDirectories[0].GetAsFile()); blob.forget(aValue); return NS_OK; } @@ -247,7 +247,7 @@ public: uint32_t index = mIndex++; if (mFilesOrDirectories[index].IsFile()) { - nsCOMPtr blob = mFilesOrDirectories[index].GetAsFile().get(); + nsCOMPtr blob = ToSupports(mFilesOrDirectories[index].GetAsFile()); blob.forget(aValue); return NS_OK; }