mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-26 12:20:56 +00:00
Bug 1231100 - Get rid of nsIDOMFileReader - patch 1, r=sicking
This commit is contained in:
parent
885593747b
commit
c2230f21f8
@ -198,9 +198,7 @@ var LogCapture = {
|
||||
try {
|
||||
this.ensureLoaded();
|
||||
|
||||
let fr = Cc["@mozilla.org/files/filereader;1"]
|
||||
.createInstance(Ci.nsIDOMFileReader);
|
||||
|
||||
let fr = new FileReader();
|
||||
fr.onload = function(evt) {
|
||||
deferred.resolve(new Uint8Array(evt.target.result));
|
||||
};
|
||||
|
@ -545,8 +545,7 @@ Cookies.prototype = {
|
||||
},
|
||||
|
||||
_readCookieFile(aFile, aCallback) {
|
||||
let fileReader = Cc["@mozilla.org/files/filereader;1"].
|
||||
createInstance(Ci.nsIDOMFileReader);
|
||||
let fileReader = new FileReader();
|
||||
let onLoadEnd = () => {
|
||||
fileReader.removeEventListener("loadend", onLoadEnd, false);
|
||||
|
||||
|
@ -25,7 +25,6 @@ var DeviceActor = exports.DeviceActor = protocol.ActorClass({
|
||||
getWallpaper: method(function() {
|
||||
let deferred = promise.defer();
|
||||
getSetting("wallpaper.image").then((blob) => {
|
||||
let FileReader = CC("@mozilla.org/files/filereader;1");
|
||||
let reader = new FileReader();
|
||||
let conn = this.conn;
|
||||
reader.addEventListener("load", function() {
|
||||
|
@ -851,8 +851,7 @@ WebappsActor.prototype = {
|
||||
}
|
||||
|
||||
// Convert the blog to a base64 encoded data URI
|
||||
let reader = Cc["@mozilla.org/files/filereader;1"]
|
||||
.createInstance(Ci.nsIDOMFileReader);
|
||||
let reader = new FileReader();
|
||||
reader.onload = function () {
|
||||
deferred.resolve({
|
||||
url: reader.result
|
||||
|
@ -262,8 +262,7 @@ this.ImportExport = {
|
||||
debug("_writeBlobToTempFile");
|
||||
let path;
|
||||
return new Promise((aResolve, aReject) => {
|
||||
let reader = Cc['@mozilla.org/files/filereader;1']
|
||||
.createInstance(Ci.nsIDOMFileReader);
|
||||
let reader = new FileReader();
|
||||
reader.onloadend = () => {
|
||||
path = OS.Path.join(OS.Constants.Path.tmpDir, "app-blob.zip");
|
||||
debug("onloadend path=" + path);
|
||||
|
@ -70,20 +70,12 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_END
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(FileReader)
|
||||
NS_INTERFACE_MAP_ENTRY(nsITimerCallback)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIInputStreamCallback)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMFileReader)
|
||||
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
|
||||
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(FileReader, DOMEventTargetHelper)
|
||||
NS_IMPL_RELEASE_INHERITED(FileReader, DOMEventTargetHelper)
|
||||
|
||||
NS_IMPL_EVENT_HANDLER(FileReader, abort)
|
||||
NS_IMPL_EVENT_HANDLER(FileReader, error)
|
||||
NS_IMPL_EVENT_HANDLER(FileReader, progress)
|
||||
NS_IMPL_EVENT_HANDLER(FileReader, load)
|
||||
NS_IMPL_EVENT_HANDLER(FileReader, loadend)
|
||||
NS_IMPL_EVENT_HANDLER(FileReader, loadstart)
|
||||
|
||||
void
|
||||
FileReader::RootResultArrayBuffer()
|
||||
{
|
||||
@ -92,14 +84,15 @@ FileReader::RootResultArrayBuffer()
|
||||
|
||||
//FileReader constructors/initializers
|
||||
|
||||
FileReader::FileReader()
|
||||
: mFileData(nullptr)
|
||||
FileReader::FileReader(nsPIDOMWindow* aWindow)
|
||||
: DOMEventTargetHelper(aWindow)
|
||||
, mFileData(nullptr)
|
||||
, mDataLen(0)
|
||||
, mDataFormat(FILE_AS_BINARY)
|
||||
, mResultArrayBuffer(nullptr)
|
||||
, mProgressEventWasDelayed(false)
|
||||
, mTimerIsActive(false)
|
||||
, mReadyState(0)
|
||||
, mReadyState(EMPTY)
|
||||
, mTotal(0)
|
||||
, mTransferred(0)
|
||||
{
|
||||
@ -113,32 +106,20 @@ FileReader::~FileReader()
|
||||
DropJSObjects(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* This Init method is called from the factory constructor.
|
||||
*/
|
||||
nsresult
|
||||
FileReader::Init()
|
||||
{
|
||||
// Instead of grabbing some random global from the context stack,
|
||||
// let's use the default one (junk scope) for now.
|
||||
// We should move away from this Init...
|
||||
BindToOwner(xpc::NativeGlobal(xpc::PrivilegedJunkScope()));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* static */ already_AddRefed<FileReader>
|
||||
FileReader::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
|
||||
{
|
||||
RefPtr<FileReader> fileReader = new FileReader();
|
||||
|
||||
// The owner can be null when this object is used by chrome code.
|
||||
nsCOMPtr<nsPIDOMWindow> owner = do_QueryInterface(aGlobal.GetAsSupports());
|
||||
if (!owner) {
|
||||
NS_WARNING("Unexpected owner");
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
RefPtr<FileReader> fileReader = new FileReader(owner);
|
||||
|
||||
if (!owner && nsContentUtils::IsCallerChrome()) {
|
||||
// Instead of grabbing some random global from the context stack,
|
||||
// let's use the default one (junk scope) for now.
|
||||
// We should move away from this Init...
|
||||
fileReader->BindToOwner(xpc::NativeGlobal(xpc::PrivilegedJunkScope()));
|
||||
}
|
||||
|
||||
fileReader->BindToOwner(owner);
|
||||
return fileReader.forget();
|
||||
}
|
||||
|
||||
@ -150,104 +131,37 @@ FileReader::GetInterface(const nsIID & aIID, void **aResult)
|
||||
return QueryInterface(aIID, aResult);
|
||||
}
|
||||
|
||||
// nsIDOMFileReader
|
||||
|
||||
NS_IMETHODIMP
|
||||
FileReader::GetReadyState(uint16_t *aReadyState)
|
||||
{
|
||||
*aReadyState = ReadyState();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
FileReader::GetResult(JSContext* aCx, JS::MutableHandle<JS::Value> aResult,
|
||||
FileReader::GetResult(JSContext* aCx,
|
||||
JS::MutableHandle<JS::Value> aResult,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
aRv = GetResult(aCx, aResult);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
FileReader::GetResult(JSContext* aCx, JS::MutableHandle<JS::Value> aResult)
|
||||
{
|
||||
JS::Rooted<JS::Value> result(aCx);
|
||||
|
||||
if (mDataFormat == FILE_AS_ARRAYBUFFER) {
|
||||
if (mReadyState == nsIDOMFileReader::DONE && mResultArrayBuffer) {
|
||||
if (mReadyState == DONE && mResultArrayBuffer) {
|
||||
result.setObject(*mResultArrayBuffer);
|
||||
} else {
|
||||
result.setNull();
|
||||
}
|
||||
|
||||
if (!JS_WrapValue(aCx, &result)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return;
|
||||
}
|
||||
|
||||
aResult.set(result);
|
||||
return NS_OK;
|
||||
return;
|
||||
}
|
||||
|
||||
nsString tmpResult = mResult;
|
||||
if (!xpc::StringToJsval(aCx, tmpResult, aResult)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
FileReader::GetError(nsISupports** aError)
|
||||
{
|
||||
NS_IF_ADDREF(*aError = GetError());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
FileReader::ReadAsArrayBuffer(nsIDOMBlob* aBlob, JSContext* aCx)
|
||||
{
|
||||
NS_ENSURE_TRUE(aBlob, NS_ERROR_NULL_POINTER);
|
||||
ErrorResult rv;
|
||||
RefPtr<Blob> blob = static_cast<Blob*>(aBlob);
|
||||
ReadAsArrayBuffer(aCx, *blob, rv);
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
FileReader::ReadAsBinaryString(nsIDOMBlob* aBlob)
|
||||
{
|
||||
NS_ENSURE_TRUE(aBlob, NS_ERROR_NULL_POINTER);
|
||||
ErrorResult rv;
|
||||
RefPtr<Blob> blob = static_cast<Blob*>(aBlob);
|
||||
ReadAsBinaryString(*blob, rv);
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
FileReader::ReadAsText(nsIDOMBlob* aBlob,
|
||||
const nsAString &aCharset)
|
||||
{
|
||||
NS_ENSURE_TRUE(aBlob, NS_ERROR_NULL_POINTER);
|
||||
ErrorResult rv;
|
||||
RefPtr<Blob> blob = static_cast<Blob*>(aBlob);
|
||||
ReadAsText(*blob, aCharset, rv);
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
FileReader::ReadAsDataURL(nsIDOMBlob* aBlob)
|
||||
{
|
||||
NS_ENSURE_TRUE(aBlob, NS_ERROR_NULL_POINTER);
|
||||
ErrorResult rv;
|
||||
RefPtr<Blob> blob = static_cast<Blob*>(aBlob);
|
||||
ReadAsDataURL(*blob, rv);
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
FileReader::Abort()
|
||||
{
|
||||
ErrorResult rv;
|
||||
Abort(rv);
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
static
|
||||
NS_METHOD
|
||||
static NS_IMETHODIMP
|
||||
ReadFuncBinaryString(nsIInputStream* in,
|
||||
void* closure,
|
||||
const char* fromRawSegment,
|
||||
@ -390,12 +304,15 @@ FileReader::ReadFileContent(Blob& aBlob,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
//Implicit abort to clear any other activity going on
|
||||
Abort();
|
||||
ErrorResult error;
|
||||
Abort(error);
|
||||
error.SuppressException();
|
||||
|
||||
mError = nullptr;
|
||||
SetDOMStringToNull(mResult);
|
||||
mTransferred = 0;
|
||||
mTotal = 0;
|
||||
mReadyState = nsIDOMFileReader::EMPTY;
|
||||
mReadyState = EMPTY;
|
||||
FreeFileData();
|
||||
|
||||
mBlob = &aBlob;
|
||||
@ -403,7 +320,6 @@ FileReader::ReadFileContent(Blob& aBlob,
|
||||
CopyUTF16toUTF8(aCharset, mCharset);
|
||||
|
||||
nsresult rv;
|
||||
|
||||
nsCOMPtr<nsIStreamTransportService> sts =
|
||||
do_GetService(kStreamTransportServiceCID, &rv);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
@ -418,23 +334,21 @@ FileReader::ReadFileContent(Blob& aBlob,
|
||||
}
|
||||
|
||||
nsCOMPtr<nsITransport> transport;
|
||||
rv = sts->CreateInputTransport(stream,
|
||||
/* aStartOffset */ 0,
|
||||
/* aReadLimit */ -1,
|
||||
/* aCloseWhenDone */ true,
|
||||
getter_AddRefs(transport));
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
aRv.Throw(rv);
|
||||
aRv = sts->CreateInputTransport(stream,
|
||||
/* aStartOffset */ 0,
|
||||
/* aReadLimit */ -1,
|
||||
/* aCloseWhenDone */ true,
|
||||
getter_AddRefs(transport));
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIInputStream> wrapper;
|
||||
rv = transport->OpenInputStream(/* aFlags */ 0,
|
||||
/* aSegmentSize */ 0,
|
||||
/* aSegmentCount */ 0,
|
||||
getter_AddRefs(wrapper));
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
aRv.Throw(rv);
|
||||
aRv = transport->OpenInputStream(/* aFlags */ 0,
|
||||
/* aSegmentSize */ 0,
|
||||
/* aSegmentCount */ 0,
|
||||
getter_AddRefs(wrapper));
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -447,14 +361,16 @@ FileReader::ReadFileContent(Blob& aBlob,
|
||||
return;
|
||||
}
|
||||
|
||||
rv = DoAsyncWait(mAsyncStream);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
aRv.Throw(rv);
|
||||
aRv = mAsyncStream->AsyncWait(this,
|
||||
/* aFlags*/ 0,
|
||||
/* aRequestedCount */ 0,
|
||||
NS_GetCurrentThread());
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
//FileReader should be in loading state here
|
||||
mReadyState = nsIDOMFileReader::LOADING;
|
||||
mReadyState = LOADING;
|
||||
DispatchProgressEvent(NS_LITERAL_STRING(LOADSTART_STR));
|
||||
|
||||
if (mDataFormat == FILE_AS_ARRAYBUFFER) {
|
||||
@ -514,7 +430,7 @@ FileReader::GetAsDataURL(Blob *aBlob,
|
||||
{
|
||||
aResult.AssignLiteral("data:");
|
||||
|
||||
nsString contentType;
|
||||
nsAutoString contentType;
|
||||
aBlob->GetType(contentType);
|
||||
if (!contentType.IsEmpty()) {
|
||||
aResult.Append(contentType);
|
||||
@ -630,7 +546,7 @@ FileReader::Notify(nsITimer* aTimer)
|
||||
NS_IMETHODIMP
|
||||
FileReader::OnInputStreamReady(nsIAsyncInputStream* aStream)
|
||||
{
|
||||
if (mReadyState != 1 || aStream != mAsyncStream) {
|
||||
if (mReadyState != LOADING || aStream != mAsyncStream) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -642,7 +558,10 @@ FileReader::OnInputStreamReady(nsIAsyncInputStream* aStream)
|
||||
}
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = DoAsyncWait(aStream);
|
||||
rv = aStream->AsyncWait(this,
|
||||
/* aFlags*/ 0,
|
||||
/* aRequestedCount */ 0,
|
||||
NS_GetCurrentThread());
|
||||
}
|
||||
|
||||
if (NS_FAILED(rv) || !aCount) {
|
||||
@ -674,9 +593,9 @@ FileReader::OnLoadEnd(nsresult aStatus)
|
||||
ClearProgressEventTimer();
|
||||
|
||||
// FileReader must be in DONE stage after an operation
|
||||
mReadyState = 2;
|
||||
mReadyState = DONE;
|
||||
|
||||
nsString successEvent, termEvent;
|
||||
nsAutoString successEvent, termEvent;
|
||||
nsresult rv = DoOnLoadEnd(aStatus, successEvent, termEvent);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
@ -693,19 +612,10 @@ FileReader::OnLoadEnd(nsresult aStatus)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
FileReader::DoAsyncWait(nsIAsyncInputStream* aStream)
|
||||
{
|
||||
return aStream->AsyncWait(this,
|
||||
/* aFlags*/ 0,
|
||||
/* aRequestedCount */ 0,
|
||||
NS_GetCurrentThread());
|
||||
}
|
||||
|
||||
void
|
||||
FileReader::Abort(ErrorResult& aRv)
|
||||
{
|
||||
if (mReadyState != 1) {
|
||||
if (mReadyState != LOADING) {
|
||||
// XXX The spec doesn't say this
|
||||
aRv.Throw(NS_ERROR_DOM_FILE_ABORT_ERR);
|
||||
return;
|
||||
@ -713,8 +623,8 @@ FileReader::Abort(ErrorResult& aRv)
|
||||
|
||||
ClearProgressEventTimer();
|
||||
|
||||
mReadyState = 2; // There are DONE constants on multiple interfaces,
|
||||
// but they all have value 2.
|
||||
mReadyState = DONE;
|
||||
|
||||
// XXX The spec doesn't say this
|
||||
mError = new DOMError(GetOwner(), NS_LITERAL_STRING("AbortError"));
|
||||
|
||||
|
@ -13,7 +13,6 @@
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIAsyncInputStream.h"
|
||||
#include "nsIDOMFileReader.h"
|
||||
#include "nsIStreamListener.h"
|
||||
#include "nsISupportsUtils.h"
|
||||
#include "nsIInterfaceRequestor.h"
|
||||
@ -34,29 +33,22 @@ class Blob;
|
||||
extern const uint64_t kUnknownSize;
|
||||
|
||||
class FileReader final : public DOMEventTargetHelper,
|
||||
public nsIDOMFileReader,
|
||||
public nsIInterfaceRequestor,
|
||||
public nsSupportsWeakReference,
|
||||
public nsIInputStreamCallback,
|
||||
public nsITimerCallback
|
||||
{
|
||||
public:
|
||||
FileReader();
|
||||
explicit FileReader(nsPIDOMWindow* aWindow);
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
NS_DECL_NSIDOMFILEREADER
|
||||
NS_DECL_NSITIMERCALLBACK
|
||||
NS_DECL_NSIINPUTSTREAMCALLBACK
|
||||
NS_DECL_NSIINTERFACEREQUESTOR
|
||||
|
||||
NS_REALLY_FORWARD_NSIDOMEVENTTARGET(DOMEventTargetHelper)
|
||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(FileReader, DOMEventTargetHelper)
|
||||
|
||||
nsPIDOMWindow* GetParentObject() const
|
||||
{
|
||||
return GetOwner();
|
||||
}
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
// WebIDL
|
||||
@ -81,7 +73,7 @@ public:
|
||||
|
||||
uint16_t ReadyState() const
|
||||
{
|
||||
return mReadyState;
|
||||
return static_cast<uint16_t>(mReadyState);
|
||||
}
|
||||
|
||||
DOMError* GetError() const
|
||||
@ -104,11 +96,16 @@ public:
|
||||
ReadFileContent(aBlob, EmptyString(), FILE_AS_BINARY, aRv);
|
||||
}
|
||||
|
||||
nsresult Init();
|
||||
|
||||
private:
|
||||
virtual ~FileReader();
|
||||
|
||||
// This must be in sync with dom/webidl/FileReader.webidl
|
||||
enum eReadyState {
|
||||
EMPTY = 0,
|
||||
LOADING = 1,
|
||||
DONE = 2
|
||||
};
|
||||
|
||||
enum eDataFormat {
|
||||
FILE_AS_ARRAYBUFFER,
|
||||
FILE_AS_BINARY,
|
||||
@ -128,7 +125,6 @@ private:
|
||||
uint32_t aDataLen, nsAString &aResult);
|
||||
|
||||
nsresult OnLoadEnd(nsresult aStatus);
|
||||
nsresult DoAsyncWait(nsIAsyncInputStream* aStream);
|
||||
|
||||
void StartProgressEventTimer();
|
||||
void ClearProgressEventTimer();
|
||||
@ -166,7 +162,7 @@ private:
|
||||
|
||||
RefPtr<DOMError> mError;
|
||||
|
||||
uint16_t mReadyState;
|
||||
eReadyState mReadyState;
|
||||
|
||||
uint64_t mTotal;
|
||||
uint64_t mTransferred;
|
||||
|
@ -16,7 +16,6 @@ XPIDL_SOURCES += [
|
||||
'nsIDOMDOMCursor.idl',
|
||||
'nsIDOMDOMRequest.idl',
|
||||
'nsIDOMFileList.idl',
|
||||
'nsIDOMFileReader.idl',
|
||||
'nsIDOMFormData.idl',
|
||||
'nsIDOMParser.idl',
|
||||
'nsIDOMSerializer.idl',
|
||||
|
@ -2275,8 +2275,7 @@ struct InterfaceShimEntry {
|
||||
// interface that has interface constants that sites might be getting off
|
||||
// of Ci.
|
||||
const InterfaceShimEntry kInterfaceShimMap[] =
|
||||
{ { "nsIDOMFileReader", "FileReader" },
|
||||
{ "nsIXMLHttpRequest", "XMLHttpRequest" },
|
||||
{ { "nsIXMLHttpRequest", "XMLHttpRequest" },
|
||||
{ "nsIDOMDOMException", "DOMException" },
|
||||
{ "nsIDOMNode", "Node" },
|
||||
{ "nsIDOMCSSPrimitiveValue", "CSSPrimitiveValue" },
|
||||
|
@ -1,47 +0,0 @@
|
||||
/* -*- Mode: C++; 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 "nsIDOMEventTarget.idl"
|
||||
|
||||
interface nsIDOMEventListener;
|
||||
interface nsIDOMBlob;
|
||||
|
||||
[builtinclass, uuid(2f34c719-bc14-4546-9fb9-2bab75e56e45)]
|
||||
interface nsIDOMFileReader : nsIDOMEventTarget
|
||||
{
|
||||
[implicit_jscontext]
|
||||
void readAsArrayBuffer(in nsIDOMBlob filedata);
|
||||
void readAsBinaryString(in nsIDOMBlob filedata);
|
||||
void readAsText(in nsIDOMBlob filedata, [optional] in DOMString encoding);
|
||||
void readAsDataURL(in nsIDOMBlob file);
|
||||
|
||||
void abort();
|
||||
|
||||
const unsigned short EMPTY = 0;
|
||||
const unsigned short LOADING = 1;
|
||||
const unsigned short DONE = 2;
|
||||
readonly attribute unsigned short readyState;
|
||||
|
||||
[implicit_jscontext]
|
||||
readonly attribute jsval result;
|
||||
|
||||
// This is a DOMError
|
||||
readonly attribute nsISupports error;
|
||||
|
||||
[implicit_jscontext] attribute jsval onloadstart;
|
||||
[implicit_jscontext] attribute jsval onprogress;
|
||||
[implicit_jscontext] attribute jsval onload;
|
||||
[implicit_jscontext] attribute jsval onabort;
|
||||
[implicit_jscontext] attribute jsval onerror;
|
||||
[implicit_jscontext] attribute jsval onloadend;
|
||||
};
|
||||
|
||||
%{ C++
|
||||
#define NS_FILEREADER_CID \
|
||||
{0x06aa7c21, 0xfe05, 0x4cf2, \
|
||||
{0xb1, 0xc4, 0x0c, 0x71, 0x26, 0xa4, 0xf7, 0x13}}
|
||||
#define NS_FILEREADER_CONTRACTID \
|
||||
"@mozilla.org/files/filereader;1"
|
||||
%}
|
@ -26,9 +26,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
let reader =
|
||||
Components.classes["@mozilla.org/files/filereader;1"]
|
||||
.createInstance(Components.interfaces.nsIDOMFileReader);
|
||||
let reader = new FileReader();
|
||||
reader.addEventListener("load", function() {
|
||||
let response = reader.result == "this is a great success!" ?
|
||||
message.json :
|
||||
|
@ -50,11 +50,6 @@ function childFrameScript() {
|
||||
sendAsyncMessage(mmName, { op: "done", result: result });
|
||||
}
|
||||
|
||||
function createFileReader() {
|
||||
return Cc["@mozilla.org/files/filereader;1"]
|
||||
.createInstance(Ci.nsIDOMFileReader);
|
||||
}
|
||||
|
||||
function grabAndContinue(arg) {
|
||||
testGenerator.send(arg);
|
||||
}
|
||||
@ -78,7 +73,7 @@ function childFrameScript() {
|
||||
|
||||
info("Reading blob");
|
||||
|
||||
let reader = createFileReader();
|
||||
let reader = new FileReader();
|
||||
reader.addEventListener("load", grabAndContinue);
|
||||
reader.readAsText(blob);
|
||||
|
||||
@ -94,7 +89,7 @@ function childFrameScript() {
|
||||
|
||||
info("Reading slice");
|
||||
|
||||
reader = createFileReader();
|
||||
reader = new FileReader();
|
||||
reader.addEventListener("load", grabAndContinue);
|
||||
reader.readAsText(slice);
|
||||
|
||||
@ -155,7 +150,7 @@ function childFrameScript() {
|
||||
|
||||
info("Reading blob");
|
||||
|
||||
reader = createFileReader();
|
||||
reader = new FileReader();
|
||||
reader.addEventListener("load", grabAndContinue);
|
||||
reader.readAsText(blob);
|
||||
|
||||
@ -190,7 +185,7 @@ function childFrameScript() {
|
||||
|
||||
info("Reading Slice");
|
||||
|
||||
reader = createFileReader();
|
||||
reader = new FileReader();
|
||||
reader.addEventListener("load", grabAndContinue);
|
||||
reader.readAsText(slice);
|
||||
|
||||
|
@ -7,11 +7,6 @@ var disableWorkerTest = "This test uses SpecialPowers";
|
||||
|
||||
var testGenerator = testSteps();
|
||||
|
||||
function createFileReader() {
|
||||
return SpecialPowers.Cc["@mozilla.org/files/filereader;1"]
|
||||
.createInstance(SpecialPowers.Ci.nsIDOMFileReader);
|
||||
}
|
||||
|
||||
function testSteps()
|
||||
{
|
||||
const fileIOFlags = 0x02 | // PR_WRONLY
|
||||
@ -48,7 +43,7 @@ function testSteps()
|
||||
is(file.size, fileData.length, "Correct size");
|
||||
is(file.type, fileType, "Correct type");
|
||||
|
||||
let fileReader = createFileReader();
|
||||
let fileReader = new FileReader();
|
||||
fileReader.onload = grabEventAndContinueHandler;
|
||||
fileReader.readAsText(file);
|
||||
|
||||
@ -85,7 +80,7 @@ function testSteps()
|
||||
is(file.size, fileData.length, "Correct size");
|
||||
is(file.type, fileType, "Correct type");
|
||||
|
||||
fileReader = createFileReader();
|
||||
fileReader = new FileReader();
|
||||
fileReader.onload = grabEventAndContinueHandler;
|
||||
fileReader.readAsText(file);
|
||||
|
||||
|
@ -339,12 +339,6 @@ function getFile(name, type, str)
|
||||
return new File([str], name, {type: type});
|
||||
}
|
||||
|
||||
function getFileReader()
|
||||
{
|
||||
return SpecialPowers.Cc["@mozilla.org/files/filereader;1"]
|
||||
.createInstance(SpecialPowers.Ci.nsIDOMFileReader);
|
||||
}
|
||||
|
||||
function compareBuffers(buffer1, buffer2)
|
||||
{
|
||||
if (buffer1.byteLength != buffer2.byteLength) {
|
||||
@ -388,7 +382,7 @@ function verifyBlob(blob1, blob2)
|
||||
}
|
||||
|
||||
if (!buffer2) {
|
||||
let reader = getFileReader();
|
||||
let reader = new FileReader();
|
||||
reader.readAsArrayBuffer(blob2);
|
||||
reader.onload = function(event) {
|
||||
buffer2 = event.target.result;
|
||||
@ -400,7 +394,7 @@ function verifyBlob(blob1, blob2)
|
||||
}
|
||||
}
|
||||
|
||||
let reader = getFileReader();
|
||||
let reader = new FileReader();
|
||||
reader.readAsArrayBuffer(blob1);
|
||||
reader.onload = function(event) {
|
||||
buffer1 = event.target.result;
|
||||
|
@ -44,11 +44,6 @@ function childFrameScript() {
|
||||
sendAsyncMessage(messageName, { op: "done", result: result });
|
||||
}
|
||||
|
||||
function createFileReader() {
|
||||
return Cc["@mozilla.org/files/filereader;1"]
|
||||
.createInstance(Ci.nsIDOMFileReader);
|
||||
}
|
||||
|
||||
function grabAndContinue(arg) {
|
||||
testGenerator.send(arg);
|
||||
}
|
||||
@ -65,7 +60,7 @@ function childFrameScript() {
|
||||
|
||||
info("Reading blob");
|
||||
|
||||
let reader = createFileReader();
|
||||
let reader = new FileReader();
|
||||
reader.addEventListener("load", grabAndContinue);
|
||||
reader.readAsText(blob);
|
||||
|
||||
@ -84,7 +79,7 @@ function childFrameScript() {
|
||||
|
||||
info("Reading slice");
|
||||
|
||||
reader = createFileReader();
|
||||
reader = new FileReader();
|
||||
reader.addEventListener("load", grabAndContinue);
|
||||
reader.readAsText(slice);
|
||||
|
||||
|
@ -1303,8 +1303,7 @@ SendTransaction.prototype = Object.create(CancellableTransaction.prototype, {
|
||||
return;
|
||||
}
|
||||
|
||||
let fileReader = Cc["@mozilla.org/files/filereader;1"]
|
||||
.createInstance(Ci.nsIDOMFileReader);
|
||||
let fileReader = new FileReader();
|
||||
fileReader.addEventListener("loadend", (aEvent) => {
|
||||
let arrayBuffer = aEvent.target.result;
|
||||
aPart.content = new Uint8Array(arrayBuffer);
|
||||
|
@ -10,7 +10,8 @@
|
||||
* liability, trademark and document use rules apply.
|
||||
*/
|
||||
|
||||
[Constructor]
|
||||
[Constructor,
|
||||
Exposed=(Window,System)]
|
||||
interface FileReader : EventTarget {
|
||||
// async read methods
|
||||
[Throws]
|
||||
|
@ -20,7 +20,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=790732
|
||||
// constants for a couple of interfaces, and then once it's pretty clear that
|
||||
// it's working as intended we just check that the objects themselves are the
|
||||
// same.
|
||||
is(Ci.nsIDOMFileReader.DONE, FileReader.DONE);
|
||||
is(Ci.nsIXMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.HEADERS_RECEIVED);
|
||||
is(Ci.nsIDOMDOMException.DATA_CLONE_ERR, DOMException.DATA_CLONE_ERR);
|
||||
is(Ci.nsIDOMNode.DOCUMENT_NODE, Node.DOCUMENT_NODE);
|
||||
|
@ -67,9 +67,6 @@
|
||||
// view stuff
|
||||
#include "nsContentCreatorFunctions.h"
|
||||
|
||||
// DOM includes
|
||||
#include "mozilla/dom/FileReader.h"
|
||||
|
||||
#include "nsFormData.h"
|
||||
#include "nsHostObjectProtocolHandler.h"
|
||||
#include "nsHostObjectURI.h"
|
||||
@ -301,7 +298,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(XPathEvaluator)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(txNodeSetAdaptor, Init)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDOMSerializer)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsXMLHttpRequest, Init)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(FileReader, Init)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFormData)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsBlobProtocolHandler)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMediaStreamProtocolHandler)
|
||||
@ -751,7 +747,6 @@ NS_DEFINE_NAMED_CID(TRANSFORMIIX_XSLT_PROCESSOR_CID);
|
||||
NS_DEFINE_NAMED_CID(TRANSFORMIIX_XPATH_EVALUATOR_CID);
|
||||
NS_DEFINE_NAMED_CID(TRANSFORMIIX_NODESET_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_XMLSERIALIZER_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_FILEREADER_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_FORMDATA_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_BLOBPROTOCOLHANDLER_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_MEDIASTREAMPROTOCOLHANDLER_CID);
|
||||
@ -1059,7 +1054,6 @@ static const mozilla::Module::CIDEntry kLayoutCIDs[] = {
|
||||
{ &kTRANSFORMIIX_XPATH_EVALUATOR_CID, false, nullptr, XPathEvaluatorConstructor },
|
||||
{ &kTRANSFORMIIX_NODESET_CID, false, nullptr, txNodeSetAdaptorConstructor },
|
||||
{ &kNS_XMLSERIALIZER_CID, false, nullptr, nsDOMSerializerConstructor },
|
||||
{ &kNS_FILEREADER_CID, false, nullptr, FileReaderConstructor },
|
||||
{ &kNS_FORMDATA_CID, false, nullptr, nsFormDataConstructor },
|
||||
{ &kNS_BLOBPROTOCOLHANDLER_CID, false, nullptr, nsBlobProtocolHandlerConstructor },
|
||||
{ &kNS_MEDIASTREAMPROTOCOLHANDLER_CID, false, nullptr, nsMediaStreamProtocolHandlerConstructor },
|
||||
@ -1227,7 +1221,6 @@ static const mozilla::Module::ContractIDEntry kLayoutContracts[] = {
|
||||
{ NS_XPATH_EVALUATOR_CONTRACTID, &kTRANSFORMIIX_XPATH_EVALUATOR_CID },
|
||||
{ TRANSFORMIIX_NODESET_CONTRACTID, &kTRANSFORMIIX_NODESET_CID },
|
||||
{ NS_XMLSERIALIZER_CONTRACTID, &kNS_XMLSERIALIZER_CID },
|
||||
{ NS_FILEREADER_CONTRACTID, &kNS_FILEREADER_CID },
|
||||
{ NS_FORMDATA_CONTRACTID, &kNS_FORMDATA_CID },
|
||||
{ NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX BLOBURI_SCHEME, &kNS_BLOBPROTOCOLHANDLER_CID },
|
||||
{ NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX MEDIASTREAMURI_SCHEME, &kNS_MEDIASTREAMPROTOCOLHANDLER_CID },
|
||||
|
@ -83,9 +83,9 @@ const TaskUtils = {
|
||||
*/
|
||||
readBlob: function readBlob(blob) {
|
||||
let deferred = Promise.defer();
|
||||
let reader = Cc["@mozilla.org/files/filereader;1"].createInstance(Ci.nsIDOMFileReader);
|
||||
let reader = new FileReader();
|
||||
reader.onloadend = function onloadend() {
|
||||
if (reader.readyState != Ci.nsIDOMFileReader.DONE) {
|
||||
if (reader.readyState != FileReader.DONE) {
|
||||
deferred.reject(reader.error);
|
||||
} else {
|
||||
deferred.resolve(reader.result);
|
||||
@ -305,8 +305,7 @@ this.PageThumbs = {
|
||||
mm.removeMessageListener("Browser:Thumbnail:Response", thumbFunc);
|
||||
let imageBlob = aMsg.data.thumbnail;
|
||||
let doc = aBrowser.parentElement.ownerDocument;
|
||||
let reader = Cc["@mozilla.org/files/filereader;1"].
|
||||
createInstance(Ci.nsIDOMFileReader);
|
||||
let reader = new FileReader();
|
||||
reader.addEventListener("loadend", function() {
|
||||
let image = doc.createElementNS(PageThumbUtils.HTML_NAMESPACE, "img");
|
||||
image.onload = function () {
|
||||
|
@ -141,8 +141,7 @@ const backgroundPageThumbsContent = {
|
||||
|
||||
_finishCurrentCapture: function () {
|
||||
let capture = this._currentCapture;
|
||||
let fileReader = Cc["@mozilla.org/files/filereader;1"].
|
||||
createInstance(Ci.nsIDOMFileReader);
|
||||
let fileReader = new FileReader();
|
||||
fileReader.onloadend = () => {
|
||||
sendAsyncMessage("BackgroundPageThumbs:didCapture", {
|
||||
id: capture.id,
|
||||
|
@ -100,8 +100,7 @@ this.PropertyListUtils = Object.freeze({
|
||||
file = new File(file);
|
||||
}
|
||||
|
||||
let fileReader = Cc["@mozilla.org/files/filereader;1"].
|
||||
createInstance(Ci.nsIDOMFileReader);
|
||||
let fileReader = new FileReader();
|
||||
let onLoadEnd = function() {
|
||||
let root = null;
|
||||
try {
|
||||
|
@ -44,7 +44,6 @@
|
||||
#include "nsIDOMEvent.h"
|
||||
#include "nsIDOMEventTarget.h"
|
||||
#include "nsIDOMFileList.h"
|
||||
#include "nsIDOMFileReader.h"
|
||||
#include "nsIDOMFocusEvent.h"
|
||||
#include "nsIDOMFormData.h"
|
||||
#include "nsIDOMGeoPositionError.h"
|
||||
@ -179,7 +178,6 @@
|
||||
#include "mozilla/dom/EventBinding.h"
|
||||
#include "mozilla/dom/EventTargetBinding.h"
|
||||
#include "mozilla/dom/FileListBinding.h"
|
||||
#include "mozilla/dom/FileReaderBinding.h"
|
||||
#include "mozilla/dom/FocusEventBinding.h"
|
||||
#include "mozilla/dom/FormDataBinding.h"
|
||||
#include "mozilla/dom/HistoryBinding.h"
|
||||
@ -368,7 +366,6 @@ const ComponentsInterfaceShimEntry kComponentsInterfaceShimMap[] =
|
||||
DEFINE_SHIM(Element),
|
||||
DEFINE_SHIM(Event),
|
||||
DEFINE_SHIM(EventTarget),
|
||||
DEFINE_SHIM(FileReader),
|
||||
DEFINE_SHIM(FileList),
|
||||
DEFINE_SHIM(FocusEvent),
|
||||
DEFINE_SHIM(FormData),
|
||||
|
Loading…
x
Reference in New Issue
Block a user