Files
palemoon27/dom/base/FileIOObject.h
T
roytam1 f4be2b8299 import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1152694 - Make UUID and service name as input arguments for BluetoothSocket, r=tzimmermann (b7cf048bb)
- Bug 1163388 - patch 1 - make nsIDOMFile an empty interface, r=ehsan (2723c513a)
- Bug 1150160 - Support import of apps as memory blobs. r=marco (ffe4538f1)
- Bug 1142132: Move helper classes of OPP manager into manager's namespace, r=shuang (ffca18a8e)
- uuid of 1146349 (00c6050e5)
- Bug 1151611 - Expose DXVA status in about:support. r=cpearce,felipe (6afe0b458)
- Bug 1157150 - Add nsDOMWindowUtils.postRestyleSelfEvent method, for use in tests. r=smaug (081f852ae)
- Bug 1161206 - Implement native mousewheel event synthesization on OS X. r=mstange (8741c0b62)
- Bug 1163388 - patch 2 - get rid of nsIDOMFile, r=ehsan (ae0c054b6)
- Bug 1159659 - Allow tab sharing on XP and OSX 10.6. r=pkerr (461ffca9d)
- Bug 1155759 - Part 1 - Remove some manual refcounting from docshell. r=smaug (fdcdf3a9a)
- Bug 1155759 - Part 2 - Use a static ref ptr for gObserver in nsSHistory. r=smaug (84706ab08)
- Bug 679939 part 1. Extend the hasRunOnce/treatAsRunOnce setup to global and eval scripts. r=luke (1b0450709)
- Bug 679939 part 2. Disallow execution of global/eval scripts that are flagged runOnce and have already run. r=luke (4a2f9d947)
- pointer style (f95806360)
- Bug 679939 part 3. Add a CompileOptions flag for indicating that the script should be compiled runOnce. r=luke (7e7cfe90a)
- Bug 679939 part 4. Set the isRunOnce compile flag as needed. r=luke (ab84de2ad)
- Bug 1167494 - Build error with --disable-sandbox on OS X. r=jld (a66816733)
- Bug 1146472 part 1. Don't do object-kind guessing for object literal templates in scripts, since we in fact know exactly how many slots we want them to have and hence what the kind should be. r=terrence (aa1db7c23)
- Bug 1146472 part 2. Use JSOP_NEWOBJECT as needed even if the script is not compile-and-go. r=luke (b6e222834)
- Bug 977308 - Pre-tenure all objects attached to scripts; r=sfink (ac3175b8e)
- Bug 1143704 part 12 - Move remaining functions to BytecodeEmitter. r=bhackett (7369f3f6d)
- Bug 1143704 part 13 - Make emitJump, emitN etc return bool instead of ptrdiff_t. r=luke (42c8f936f)
- Bug 1143704 part 14 - Change newSrcNote* to return bool instead of int. r=luke (182525f7d)
- Bug 1147581 - Remove the now defunct TMPSLOT mechanism. (r=jorendorff) (08c377985)
- Bug 1146836 part 1 - Cleanup BytecodeEmitter::emitSwitch. r=luke (2e15e54da)
- Bug 1146836 part 2 - Use Vectors instead of malloc in emitSwitch and fix an old bug. r=luke (018838218)
- Bug 679939 part 5. Stop using the compileAndGo script flag in the bytecode emitter. r=luke (047c3baca)
- Bug 679939 part 6. Drop function-cloning uses of compileAndGo, since it no longer affects the bytecode. r=luke (25ec43122)
- Bug 1145488. Stop using compileAndGo in the JITs. r=jandem (903ed3914)
- Bug 679939 part 7. Drop the now-unused JSScript::compileAndGo. r=luke (979044eb4)
- Bug 679939 part 8. Drop the now-unused compileAndGo from CompileOptions. r=luke (db211ef89)
- Bug 1139217 - Make js::HashSet<T> work with move-only T types; r=luke (353f6e1e3)
- Bug 1144366 followup - Stop declaring multiple pointers on a single line. r=jorendorff (b33884fb0)
- support FreeBSD (1a9b19266)
2020-07-25 07:10:29 +08:00

104 lines
2.7 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
#ifndef FileIOObject_h__
#define FileIOObject_h__
#include "mozilla/DOMEventTargetHelper.h"
#include "nsIFile.h"
#include "nsITimer.h"
#include "nsCOMPtr.h"
#include "nsIAsyncInputStream.h"
#include "mozilla/dom/DOMError.h"
#define NS_PROGRESS_EVENT_INTERVAL 50
namespace mozilla {
class ErrorResult;
namespace dom {
extern const uint64_t kUnknownSize;
// A common base class for FileReader and FileSaver
class FileIOObject : public DOMEventTargetHelper,
public nsIInputStreamCallback,
public nsITimerCallback
{
public:
FileIOObject();
NS_DECL_ISUPPORTS_INHERITED
// Common methods
void Abort(ErrorResult& aRv);
uint16_t ReadyState() const
{
return mReadyState;
}
DOMError* GetError() const
{
return mError;
}
NS_METHOD GetOnabort(JSContext* aCx, JS::MutableHandle<JS::Value> aValue);
NS_METHOD SetOnabort(JSContext* aCx, JS::Handle<JS::Value> aValue);
NS_METHOD GetOnerror(JSContext* aCx, JS::MutableHandle<JS::Value> aValue);
NS_METHOD SetOnerror(JSContext* aCx, JS::Handle<JS::Value> aValue);
NS_METHOD GetOnprogress(JSContext* aCx, JS::MutableHandle<JS::Value> aValue);
NS_METHOD SetOnprogress(JSContext* aCx, JS::Handle<JS::Value> aValue);
IMPL_EVENT_HANDLER(abort)
IMPL_EVENT_HANDLER(error)
IMPL_EVENT_HANDLER(progress)
NS_DECL_NSITIMERCALLBACK
NS_DECL_NSIINPUTSTREAMCALLBACK
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(FileIOObject, DOMEventTargetHelper)
protected:
virtual ~FileIOObject();
// Implemented by the derived class to do whatever it needs to do for abort
virtual void DoAbort(nsAString& aEvent) = 0;
virtual nsresult DoReadData(nsIAsyncInputStream* aStream, uint64_t aCount) = 0;
virtual nsresult DoOnLoadEnd(nsresult aStatus, nsAString& aSuccessEvent,
nsAString& aTerminationEvent) = 0;
nsresult OnLoadEnd(nsresult aStatus);
nsresult DoAsyncWait(nsIAsyncInputStream* aStream);
void StartProgressEventTimer();
void ClearProgressEventTimer();
void DispatchError(nsresult rv, nsAString& finalEvent);
nsresult DispatchProgressEvent(const nsAString& aType);
nsCOMPtr<nsITimer> mProgressNotifier;
bool mProgressEventWasDelayed;
bool mTimerIsActive;
nsCOMPtr<nsIAsyncInputStream> mAsyncStream;
nsRefPtr<DOMError> mError;
uint16_t mReadyState;
uint64_t mTotal;
uint64_t mTransferred;
};
} // namespace dom
} // namespace mozilla
#endif