Changeset 221639 in webkit


Ignore:
Timestamp:
Sep 5, 2017 3:53:59 PM (7 years ago)
Author:
Chris Dumez
Message:

FileSystemEntry API should ignore hidden files
https://bugs.webkit.org/show_bug.cgi?id=176292
<rdar://problem/34257666>

Reviewed by Andreas Kling.

Source/WebCore:

FileSystemEntry API should ignore hidden files as the user likely does not mean
to expose those when drag'n dropping a folder.

Test: editing/pasteboard/enties-api/datatransfer-items-drop-hidden-file.html

  • Modules/entriesapi/DOMFileSystem.cpp:

(WebCore::listDirectoryWithMetadata):
(WebCore::validatePathIsExpectedType):
(WebCore::fileType):
(WebCore::DOMFileSystem::getEntry):

LayoutTests:

Add layout test coverage.

  • editing/pasteboard/enties-api/datatransfer-items-drop-getAsEntry-expected.txt:
  • editing/pasteboard/enties-api/datatransfer-items-drop-getAsEntry.html:
  • editing/pasteboard/enties-api/datatransfer-items-drop-hidden-file-expected.txt: Added.
  • editing/pasteboard/enties-api/datatransfer-items-drop-hidden-file.html: Added.
  • fast/forms/file/entries-api/resources/testFiles/.hidden.txt: Added.
  • fast/forms/file/entries-api/resources/testFiles/.hidden/hidden.txt: Added.
  • platform/win/TestExpectations:
Location:
trunk
Files:
5 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r221638 r221639  
     12017-09-05  Chris Dumez  <cdumez@apple.com>
     2
     3        FileSystemEntry API should ignore hidden files
     4        https://bugs.webkit.org/show_bug.cgi?id=176292
     5        <rdar://problem/34257666>
     6
     7        Reviewed by Andreas Kling.
     8
     9        Add layout test coverage.
     10
     11        * editing/pasteboard/enties-api/datatransfer-items-drop-getAsEntry-expected.txt:
     12        * editing/pasteboard/enties-api/datatransfer-items-drop-getAsEntry.html:
     13        * editing/pasteboard/enties-api/datatransfer-items-drop-hidden-file-expected.txt: Added.
     14        * editing/pasteboard/enties-api/datatransfer-items-drop-hidden-file.html: Added.
     15        * fast/forms/file/entries-api/resources/testFiles/.hidden.txt: Added.
     16        * fast/forms/file/entries-api/resources/testFiles/.hidden/hidden.txt: Added.
     17        * platform/win/TestExpectations:
     18
    1192017-09-05  Matt Lewis  <jlewis3@apple.com>
    220
  • trunk/LayoutTests/editing/pasteboard/enties-api/datatransfer-items-drop-getAsEntry-expected.txt

    r221556 r221639  
    1717PASS secondDataTransferItem.type is ""
    1818PASS secondFile.name is "testFiles"
    19 PASS secondFile.size is 204
     19PASS secondFile.size is 272
    2020PASS secondFile.type is ""
    2121PASS secondEntry.isDirectory is true
  • trunk/LayoutTests/editing/pasteboard/enties-api/datatransfer-items-drop-getAsEntry.html

    r221556 r221639  
    3838    secondFile = secondDataTransferItem.getAsFile();
    3939    shouldBeEqualToString("secondFile.name", "testFiles");
    40     shouldBe("secondFile.size", "204"); // Chrome returns folder size, Firefox returns 0.
     40    shouldBe("secondFile.size", "272"); // Chrome returns folder size, Firefox returns 0.
    4141    shouldBeEqualToString("secondFile.type", "");
    4242
  • trunk/LayoutTests/platform/win/TestExpectations

    r221635 r221639  
    581581# TODO Missing WebSpeech implementation
    582582webkit.org/b/136224 fast/speechsynthesis [ Skip ]
     583
     584# Test is Posix-specific.
     585editing/pasteboard/enties-api/datatransfer-items-drop-hidden-file.html [ Skip ]
    583586
    584587# TODO Impossible to test text-only-zoom from DRT on Windows
  • trunk/Source/WebCore/ChangeLog

    r221630 r221639  
     12017-09-05  Chris Dumez  <cdumez@apple.com>
     2
     3        FileSystemEntry API should ignore hidden files
     4        https://bugs.webkit.org/show_bug.cgi?id=176292
     5        <rdar://problem/34257666>
     6
     7        Reviewed by Andreas Kling.
     8
     9        FileSystemEntry API should ignore hidden files as the user likely does not mean
     10        to expose those when drag'n dropping a folder.
     11
     12        Test: editing/pasteboard/enties-api/datatransfer-items-drop-hidden-file.html
     13
     14        * Modules/entriesapi/DOMFileSystem.cpp:
     15        (WebCore::listDirectoryWithMetadata):
     16        (WebCore::validatePathIsExpectedType):
     17        (WebCore::fileType):
     18        (WebCore::DOMFileSystem::getEntry):
     19
    1202017-09-05  Myles C. Maxfield  <mmaxfield@apple.com>
    221
  • trunk/Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp

    r221608 r221639  
    5757    for (auto& childPath : childPaths) {
    5858        auto metadata = fileMetadata(childPath);
    59         if (!metadata)
     59        if (!metadata || metadata.value().isHidden)
    6060            continue;
    6161        listedChildren.uncheckedAppend(ListedChild { pathGetFileName(childPath), metadata.value().type });
     
    165165
    166166    auto metadata = fileMetadata(fullPath);
    167     if (!metadata)
     167    if (!metadata || metadata.value().isHidden)
    168168        return Exception { NotFoundError, ASCIILiteral("Path does not exist") };
    169169
     
    172172
    173173    return WTFMove(virtualPath);
     174}
     175
     176static std::optional<FileMetadata::Type> fileType(const String& fullPath)
     177{
     178    auto metadata = fileMetadata(fullPath);
     179    if (!metadata || metadata.value().isHidden)
     180        return std::nullopt;
     181    return metadata.value().type;
    174182}
    175183
     
    298306
    299307    m_workQueue->dispatch([this, context = makeRef(context), fullPath = crossThreadCopy(fullPath), resolvedVirtualPath = crossThreadCopy(resolvedVirtualPath), completionCallback = WTFMove(completionCallback)]() mutable {
    300         std::optional<FileMetadata::Type> entryType;
    301         if (auto metadata = fileMetadata(fullPath))
    302             entryType = metadata.value().type;
     308        auto entryType = fileType(fullPath);
    303309        callOnMainThread([this, context = WTFMove(context), resolvedVirtualPath = crossThreadCopy(resolvedVirtualPath), entryType, completionCallback = WTFMove(completionCallback)]() mutable {
    304310            if (!entryType) {
Note: See TracChangeset for help on using the changeset viewer.