Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(549)

Unified Diff: third_party/WebKit/Source/core/clipboard/DataObject.cpp

Issue 2582463002: Fix webkitGetEntry for non-native files. (Closed)
Patch Set: . Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/clipboard/DataObject.cpp
diff --git a/third_party/WebKit/Source/core/clipboard/DataObject.cpp b/third_party/WebKit/Source/core/clipboard/DataObject.cpp
index 023c4a163beb0ea6c3ed72f51cd8986d3d3693af..167f877bf0773313fcc983d9deceb1643e7e5f4b 100644
--- a/third_party/WebKit/Source/core/clipboard/DataObject.cpp
+++ b/third_party/WebKit/Source/core/clipboard/DataObject.cpp
@@ -100,7 +100,17 @@ DataObjectItem* DataObject::add(File* file) {
return nullptr;
DataObjectItem* item = DataObjectItem::createFromFile(file);
- m_itemList.append(item);
+ internalAddFileItem(item);
+ return item;
+}
+
+DataObjectItem* DataObject::add(File* file, const String& fileSystemId) {
+ if (!file)
+ return nullptr;
+
+ DataObjectItem* item =
+ DataObjectItem::createFromFileWithFileSystemId(file, fileSystemId);
+ internalAddFileItem(item);
return item;
}
@@ -200,9 +210,10 @@ Vector<String> DataObject::filenames() const {
}
void DataObject::addFilename(const String& filename,
- const String& displayName) {
- internalAddFileItem(DataObjectItem::createFromFile(
- File::createForUserProvidedFile(filename, displayName)));
+ const String& displayName,
+ const String& fileSystemId) {
+ internalAddFileItem(DataObjectItem::createFromFileWithFileSystemId(
+ File::createForUserProvidedFile(filename, displayName), fileSystemId));
}
void DataObject::addSharedBuffer(const String& name,
@@ -246,6 +257,7 @@ DEFINE_TRACE(DataObject) {
DataObject* DataObject::create(WebDragData data) {
DataObject* dataObject = create();
+ bool hasFileSystem = false;
WebVector<WebDragData::Item> items = data.items();
for (unsigned i = 0; i < items.size(); ++i) {
@@ -261,7 +273,9 @@ DataObject* DataObject::create(WebDragData data) {
dataObject->setData(item.stringType, item.stringData);
break;
case WebDragData::Item::StorageTypeFilename:
- dataObject->addFilename(item.filenameData, item.displayNameData);
+ hasFileSystem = true;
+ dataObject->addFilename(item.filenameData, item.displayNameData,
+ data.filesystemId());
break;
case WebDragData::Item::StorageTypeBinaryData:
// This should never happen when dragging in.
@@ -269,17 +283,23 @@ DataObject* DataObject::create(WebDragData data) {
case WebDragData::Item::StorageTypeFileSystemFile: {
// FIXME: The file system URL may refer a user visible file, see
// http://crbug.com/429077
+ hasFileSystem = true;
FileMetadata fileMetadata;
fileMetadata.length = item.fileSystemFileSize;
- dataObject->add(File::createForFileSystemFile(
- item.fileSystemURL, fileMetadata, File::IsNotUserVisible));
+
+ dataObject->add(
+ File::createForFileSystemFile(item.fileSystemURL, fileMetadata,
+ File::IsNotUserVisible),
+ item.fileSystemId);
} break;
}
}
- if (!data.filesystemId().isNull())
- DraggedIsolatedFileSystem::prepareForDataObject(dataObject,
- data.filesystemId());
+ dataObject->setFilesystemId(data.filesystemId());
+
+ if (hasFileSystem)
+ DraggedIsolatedFileSystem::prepareForDataObject(dataObject);
+
return dataObject;
}
@@ -312,6 +332,7 @@ WebDragData DataObject::toWebDragData() {
item.storageType = WebDragData::Item::StorageTypeFileSystemFile;
item.fileSystemURL = file->fileSystemURL();
item.fileSystemFileSize = file->size();
+ item.fileSystemId = originalItem->fileSystemId();
} else {
// FIXME: support dragging constructed Files across renderers, see
// http://crbug.com/394955
« no previous file with comments | « third_party/WebKit/Source/core/clipboard/DataObject.h ('k') | third_party/WebKit/Source/core/clipboard/DataObjectItem.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698