Bug 1231100 - Get rid of nsIDOMFileReader - patch 1, r=sicking

This commit is contained in:
Andrea Marchesini 2015-12-09 15:52:15 -05:00
parent 885593747b
commit c2230f21f8
23 changed files with 91 additions and 277 deletions

View File

@ -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));
};

View File

@ -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);

View File

@ -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() {

View File

@ -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

View File

@ -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);

View File

@ -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"));

View File

@ -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;

View File

@ -16,7 +16,6 @@ XPIDL_SOURCES += [
'nsIDOMDOMCursor.idl',
'nsIDOMDOMRequest.idl',
'nsIDOMFileList.idl',
'nsIDOMFileReader.idl',
'nsIDOMFormData.idl',
'nsIDOMParser.idl',
'nsIDOMSerializer.idl',

View File

@ -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" },

View File

@ -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"
%}

View File

@ -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 :

View File

@ -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);

View File

@ -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);

View 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;

View File

@ -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);

View File

@ -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);

View File

@ -10,7 +10,8 @@
* liability, trademark and document use rules apply.
*/
[Constructor]
[Constructor,
Exposed=(Window,System)]
interface FileReader : EventTarget {
// async read methods
[Throws]

View File

@ -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);

View File

@ -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 },

View File

@ -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 () {

View File

@ -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,

View File

@ -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 {

View File

@ -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),