Bug 1590022 - Use union return value for FileReader.result, r=smaug

Differential Revision: https://phabricator.services.mozilla.com/D49876

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Andrea Marchesini 2019-10-22 05:18:03 +00:00
Родитель 854a6bfecb
Коммит e5b77e11f4
3 изменённых файлов: 9 добавлений и 23 удалений

Просмотреть файл

@ -143,31 +143,20 @@ FileReader::GetInterface(const nsIID& aIID, void** aResult) {
return QueryInterface(aIID, aResult);
}
void FileReader::GetResult(JSContext* aCx, JS::MutableHandle<JS::Value> aResult,
ErrorResult& aRv) {
void FileReader::GetResult(JSContext* aCx,
Nullable<OwningStringOrArrayBuffer>& aResult) {
JS::Rooted<JS::Value> result(aCx);
if (mDataFormat == FILE_AS_ARRAYBUFFER) {
if (mReadyState == DONE && mResultArrayBuffer) {
result.setObject(*mResultArrayBuffer);
} else {
result.setNull();
if (mReadyState != DONE || !mResultArrayBuffer ||
!aResult.SetValue().SetAsArrayBuffer().Init(mResultArrayBuffer)) {
aResult.SetNull();
}
if (!JS_WrapValue(aCx, &result)) {
aRv.Throw(NS_ERROR_FAILURE);
return;
}
aResult.set(result);
return;
}
nsString tmpResult = mResult;
if (!xpc::StringToJsval(aCx, tmpResult, aResult)) {
aRv.Throw(NS_ERROR_FAILURE);
return;
}
aResult.SetValue().SetAsString() = mResult;
}
void FileReader::OnLoadEndArrayBuffer() {

Просмотреть файл

@ -27,6 +27,7 @@ namespace dom {
class Blob;
class DOMException;
class OwningStringOrArrayBuffer;
class StrongWorkerRef;
class WeakWorkerRef;
@ -93,8 +94,7 @@ class FileReader final : public DOMEventTargetHelper,
DOMException* GetError() const { return mError; }
void GetResult(JSContext* aCx, JS::MutableHandle<JS::Value> aResult,
ErrorResult& aRv);
void GetResult(JSContext* aCx, Nullable<OwningStringOrArrayBuffer>& aResult);
IMPL_EVENT_HANDLER(loadstart)
IMPL_EVENT_HANDLER(progress)

Просмотреть файл

@ -34,10 +34,7 @@ interface FileReader : EventTarget {
readonly attribute unsigned short readyState;
// File or Blob data
// bug 858217: readonly attribute (DOMString or ArrayBuffer)? result;
[Throws]
readonly attribute any result;
readonly attribute (DOMString or ArrayBuffer)? result;
readonly attribute DOMException? error;