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; }
DataObject* DataObject::createFromString(const String& data) { DataObject* dataObject = create(); dataObject->add(data, mimeTypeTextPlain); return dataObject; }