TEST(FileInputTypeTest, createFileList)
{
    Vector<FileChooserFileInfo> files;

    // Natvie file.
    files.append(FileChooserFileInfo(
        "/native/path/native-file",
        "display-name"));

    // Non-native file.
    KURL url(ParsedURLStringTag(), "filesystem:http://example.com/isolated/hash/non-native-file");
    FileMetadata metadata;
    metadata.length = 64;
    metadata.modificationTime = 24 * 60 * 60 /* sec */;
    files.append(FileChooserFileInfo(url, metadata));


    FileList* list = FileInputType::createFileList(files, false);
    ASSERT_TRUE(list);
    ASSERT_EQ(2u, list->length());

    EXPECT_EQ("/native/path/native-file", list->item(0)->path());
    EXPECT_EQ("display-name", list->item(0)->name());
    EXPECT_TRUE(list->item(0)->fileSystemURL().isEmpty());

    EXPECT_TRUE(list->item(1)->path().isEmpty());
    EXPECT_EQ("non-native-file", list->item(1)->name());
    EXPECT_EQ(url, list->item(1)->fileSystemURL());
    EXPECT_EQ(64u, list->item(1)->size());
    EXPECT_EQ(24 * 60 * 60 * 1000 /* ms */, list->item(1)->lastModified());
}
void WebFileChooserCompletionImpl::didChooseFile(const WebVector<SelectedFileInfo>& files)
{
    Vector<FileChooserFileInfo> fileInfo;
    for (size_t i = 0; i < files.size(); ++i) {
        if (files[i].fileSystemURL.isEmpty()) {
            fileInfo.append(FileChooserFileInfo(files[i].path, files[i].displayName));
        } else {
            FileMetadata metadata;
            metadata.modificationTime = files[i].modificationTime;
            metadata.length = files[i].length;
            metadata.type = files[i].isDirectory ? FileMetadata::TypeDirectory : FileMetadata::TypeFile;
            fileInfo.append(FileChooserFileInfo(files[i].fileSystemURL, metadata));
        }
    }
    m_fileChooser->chooseFiles(fileInfo);
    // This object is no longer needed.
    delete this;
}
void WebFileChooserCompletionImpl::didChooseFile(const WebVector<WebString>& fileNames)
{
    Vector<FileChooserFileInfo> fileInfo;
    for (size_t i = 0; i < fileNames.size(); ++i)
        fileInfo.append(FileChooserFileInfo(fileNames[i]));
    m_fileChooser->chooseFiles(fileInfo);
    // This object is no longer needed.
    delete this;
}
Пример #4
0
void FileChooser::chooseFiles(const Vector<String>& filenames)
{
    // FIXME: This is inelegant. We should not be looking at settings here.
    if (m_settings.selectedFiles == filenames)
        return;

    if (m_client) {
        Vector<FileChooserFileInfo> files;
        for (unsigned i = 0; i < filenames.size(); ++i)
            files.append(FileChooserFileInfo(filenames[i]));
        m_client->filesChosen(files);
    }
}