Bug 1289254 - Support dnd for webkitdirectory, r=baku

This commit is contained in:
Olli Pettay
2016-07-29 14:41:38 +03:00
parent 44e673038d
commit c225f78ad6
10 changed files with 233 additions and 22 deletions

View File

@@ -2839,6 +2839,11 @@ HTMLInputElement::SetFilesOrDirectories(const nsTArray<OwningFileOrDirectory>& a
{
ClearGetFilesHelpers();
if (Preferences::GetBool("dom.webkitBlink.filesystem.enabled", false)) {
HTMLInputElementBinding::ClearCachedWebkitEntriesValue(this);
mEntries.Clear();
}
mFilesOrDirectories.Clear();
mFilesOrDirectories.AppendElements(aFilesOrDirectories);
@@ -2853,6 +2858,11 @@ HTMLInputElement::SetFiles(nsIDOMFileList* aFiles,
mFilesOrDirectories.Clear();
ClearGetFilesHelpers();
if (Preferences::GetBool("dom.webkitBlink.filesystem.enabled", false)) {
HTMLInputElementBinding::ClearCachedWebkitEntriesValue(this);
mEntries.Clear();
}
if (aFiles) {
uint32_t listLength;
aFiles->GetLength(&listLength);
@@ -2869,12 +2879,12 @@ HTMLInputElement::SetFiles(nsIDOMFileList* aFiles,
void
HTMLInputElement::MozSetDndFilesAndDirectories(const nsTArray<OwningFileOrDirectory>& aFilesOrDirectories)
{
SetFilesOrDirectories(aFilesOrDirectories, true);
if (Preferences::GetBool("dom.webkitBlink.filesystem.enabled", false)) {
UpdateEntries(aFilesOrDirectories);
}
SetFilesOrDirectories(aFilesOrDirectories, true);
RefPtr<DispatchChangeEventCallback> dispatchChangeEventCallback =
new DispatchChangeEventCallback(this);
@@ -8100,7 +8110,7 @@ HTMLInputElement::GetOrCreateGetFilesHelper(bool aRecursiveFlag,
void
HTMLInputElement::UpdateEntries(const nsTArray<OwningFileOrDirectory>& aFilesOrDirectories)
{
mEntries.Clear();
MOZ_ASSERT(mEntries.IsEmpty());
nsCOMPtr<nsIGlobalObject> global = OwnerDoc()->GetScopeObject();
MOZ_ASSERT(global);