Example #1
0
DataObject* DataObject::create(WebDragData data) {
  DataObject* dataObject = create();

  WebVector<WebDragData::Item> items = data.items();
  for (unsigned i = 0; i < items.size(); ++i) {
    WebDragData::Item item = items[i];

    switch (item.storageType) {
      case WebDragData::Item::StorageTypeString:
        if (String(item.stringType) == mimeTypeTextURIList)
          dataObject->setURLAndTitle(item.stringData, item.title);
        else if (String(item.stringType) == mimeTypeTextHTML)
          dataObject->setHTMLAndBaseURL(item.stringData, item.baseURL);
        else
          dataObject->setData(item.stringType, item.stringData);
        break;
      case WebDragData::Item::StorageTypeFilename:
        dataObject->addFilename(item.filenameData, item.displayNameData);
        break;
      case WebDragData::Item::StorageTypeBinaryData:
        // This should never happen when dragging in.
        break;
      case WebDragData::Item::StorageTypeFileSystemFile: {
        // FIXME: The file system URL may refer a user visible file, see
        // http://crbug.com/429077
        FileMetadata fileMetadata;
        fileMetadata.length = item.fileSystemFileSize;
        dataObject->add(File::createForFileSystemFile(
            item.fileSystemURL, fileMetadata, File::IsNotUserVisible));
      } break;
    }
  }

  if (!data.filesystemId().isNull())
    DraggedIsolatedFileSystem::prepareForDataObject(dataObject,
                                                    data.filesystemId());
  return dataObject;
}
Example #2
0
DataObject* DataObject::createFromString(const String& data) {
  DataObject* dataObject = create();
  dataObject->add(data, mimeTypeTextPlain);
  return dataObject;
}