Bug 1585284 - Force global in Blob CTOR, r=smaug

Differential Revision: https://phabricator.services.mozilla.com/D49629
This commit is contained in:
Andrea Marchesini
2019-10-21 05:33:19 +00:00
parent de63797ea7
commit b80e4fd342
30 changed files with 254 additions and 151 deletions

View File

@@ -243,12 +243,19 @@ class DispatchChangeEventCallback final : public GetFilesCallback {
MOZ_ASSERT(aInputElement);
}
virtual void Callback(nsresult aStatus,
const Sequence<RefPtr<File>>& aFiles) override {
virtual void Callback(
nsresult aStatus,
const FallibleTArray<RefPtr<BlobImpl>>& aBlobImpls) override {
nsTArray<OwningFileOrDirectory> array;
for (uint32_t i = 0; i < aFiles.Length(); ++i) {
for (uint32_t i = 0; i < aBlobImpls.Length(); ++i) {
OwningFileOrDirectory* element = array.AppendElement();
element->SetAsFile() = aFiles[i];
RefPtr<File> file =
File::Create(mInputElement->GetOwnerGlobal(), aBlobImpls[i]);
if (NS_WARN_IF(!file)) {
break;
}
element->SetAsFile() = file;
}
mInputElement->SetFilesOrDirectories(array, true);
@@ -2002,7 +2009,9 @@ void HTMLInputElement::MozSetFileArray(
nsTArray<OwningFileOrDirectory> files;
for (uint32_t i = 0; i < aFiles.Length(); ++i) {
RefPtr<File> file = File::Create(global, aFiles[i].get()->Impl());
MOZ_ASSERT(file);
if (NS_WARN_IF(!file)) {
return;
}
OwningFileOrDirectory* element = files.AppendElement();
element->SetAsFile() = file;
@@ -2050,6 +2059,10 @@ void HTMLInputElement::MozSetFileNameArray(const Sequence<nsString>& aFileNames,
}
RefPtr<File> domFile = File::CreateFromFile(global, file);
if (NS_WARN_IF(!domFile)) {
aRv.Throw(NS_ERROR_FAILURE);
return;
}
OwningFileOrDirectory* element = files.AppendElement();
element->SetAsFile() = domFile;
@@ -6113,7 +6126,9 @@ static nsTArray<OwningFileOrDirectory> RestoreFileContentData(
}
RefPtr<File> file = File::Create(aWindow->AsGlobal(), it.get_BlobImpl());
MOZ_ASSERT(file);
if (NS_WARN_IF(!file)) {
continue;
}
OwningFileOrDirectory* element = res.AppendElement();
element->SetAsFile() = file;
@@ -7135,17 +7150,10 @@ GetFilesHelper* HTMLInputElement::GetOrCreateGetFilesHelper(bool aRecursiveFlag,
ErrorResult& aRv) {
MOZ_ASSERT(mFileData);
nsCOMPtr<nsIGlobalObject> global = OwnerDoc()->GetScopeObject();
MOZ_ASSERT(global);
if (!global) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
if (aRecursiveFlag) {
if (!mFileData->mGetFilesRecursiveHelper) {
mFileData->mGetFilesRecursiveHelper = GetFilesHelper::Create(
global, GetFilesOrDirectoriesInternal(), aRecursiveFlag, aRv);
GetFilesOrDirectoriesInternal(), aRecursiveFlag, aRv);
if (NS_WARN_IF(aRv.Failed())) {
return nullptr;
}
@@ -7156,7 +7164,7 @@ GetFilesHelper* HTMLInputElement::GetOrCreateGetFilesHelper(bool aRecursiveFlag,
if (!mFileData->mGetFilesNonRecursiveHelper) {
mFileData->mGetFilesNonRecursiveHelper = GetFilesHelper::Create(
global, GetFilesOrDirectoriesInternal(), aRecursiveFlag, aRv);
GetFilesOrDirectoriesInternal(), aRecursiveFlag, aRv);
if (NS_WARN_IF(aRv.Failed())) {
return nullptr;
}