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

Unified Diff: third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.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/modules/filesystem/DraggedIsolatedFileSystemImpl.cpp
diff --git a/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.cpp b/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.cpp
index 89d68ff437314cf681c77a8b92b7694e2fce8bf0..2eca96c6c79f7360e5a4e2ef6369d136072fbe17 100644
--- a/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.cpp
+++ b/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.cpp
@@ -39,15 +39,21 @@ namespace blink {
DOMFileSystem* DraggedIsolatedFileSystemImpl::getDOMFileSystem(
DataObject* host,
- ExecutionContext* executionContext) {
+ ExecutionContext* executionContext,
+ const DataObjectItem& item) {
+ if (!item.hasFileSystemId())
+ return nullptr;
+ const String fileSystemId = item.fileSystemId();
DraggedIsolatedFileSystemImpl* draggedIsolatedFileSystem = from(host);
if (!draggedIsolatedFileSystem)
- return 0;
- if (!draggedIsolatedFileSystem->m_filesystem)
- draggedIsolatedFileSystem->m_filesystem =
- DOMFileSystem::createIsolatedFileSystem(executionContext,
- host->filesystemId());
- return draggedIsolatedFileSystem->m_filesystem.get();
+ return nullptr;
+ auto it = draggedIsolatedFileSystem->m_filesystems.find(fileSystemId);
+ if (it != draggedIsolatedFileSystem->m_filesystems.end())
+ return it->value;
+ return draggedIsolatedFileSystem->m_filesystems
+ .add(fileSystemId, DOMFileSystem::createIsolatedFileSystem(
+ executionContext, fileSystemId))
+ .storedValue->value;
}
// static
@@ -62,21 +68,15 @@ DraggedIsolatedFileSystemImpl* DraggedIsolatedFileSystemImpl::from(
Supplement<DataObject>::from(dataObject, supplementName()));
}
-DraggedIsolatedFileSystemImpl::DraggedIsolatedFileSystemImpl(
- DataObject& host,
- const String& filesystemId) {
- host.setFilesystemId(filesystemId);
-}
-
DEFINE_TRACE(DraggedIsolatedFileSystemImpl) {
- visitor->trace(m_filesystem);
+ visitor->trace(m_filesystems);
Supplement<DataObject>::trace(visitor);
}
void DraggedIsolatedFileSystemImpl::prepareForDataObject(
- DataObject* dataObject,
- const String& filesystemId) {
- DraggedIsolatedFileSystemImpl* fileSystem = create(*dataObject, filesystemId);
+ DataObject* dataObject) {
+ DraggedIsolatedFileSystemImpl* fileSystem =
+ new DraggedIsolatedFileSystemImpl();
DraggedIsolatedFileSystemImpl::provideTo(
*dataObject, DraggedIsolatedFileSystemImpl::supplementName(), fileSystem);
}

Powered by Google App Engine
This is Rietveld 408576698