Title: [222904] trunk/Source/WebCore
- Revision
- 222904
- Author
- [email protected]
- Date
- 2017-10-05 01:06:16 -0700 (Thu, 05 Oct 2017)
Log Message
Address post-review feedback following r222885
https://bugs.webkit.org/show_bug.cgi?id=177853
<rdar://problem/34807346>
Reviewed by Ryosuke Niwa and Dan Bates.
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::updateFileList):
(WebCore::DataTransfer::types const):
(WebCore::DataTransfer::filesFromPasteboardAndItemList const):
* dom/DataTransferItem.h:
(WebCore::DataTransferItem::file):
(WebCore::DataTransferItem::file const): Deleted.
* dom/DataTransferItemList.cpp:
(WebCore::DataTransferItemList::add):
(WebCore::DataTransferItemList::remove):
When removing a data transfer item, capture it in a Ref for the scope of remove(), so that it won't be destroyed
immediately after removing from the item list.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (222903 => 222904)
--- trunk/Source/WebCore/ChangeLog 2017-10-05 07:54:02 UTC (rev 222903)
+++ trunk/Source/WebCore/ChangeLog 2017-10-05 08:06:16 UTC (rev 222904)
@@ -1,3 +1,25 @@
+2017-10-05 Wenson Hsieh <[email protected]>
+
+ Address post-review feedback following r222885
+ https://bugs.webkit.org/show_bug.cgi?id=177853
+ <rdar://problem/34807346>
+
+ Reviewed by Ryosuke Niwa and Dan Bates.
+
+ * dom/DataTransfer.cpp:
+ (WebCore::DataTransfer::updateFileList):
+ (WebCore::DataTransfer::types const):
+ (WebCore::DataTransfer::filesFromPasteboardAndItemList const):
+ * dom/DataTransferItem.h:
+ (WebCore::DataTransferItem::file):
+ (WebCore::DataTransferItem::file const): Deleted.
+ * dom/DataTransferItemList.cpp:
+ (WebCore::DataTransferItemList::add):
+ (WebCore::DataTransferItemList::remove):
+
+ When removing a data transfer item, capture it in a Ref for the scope of remove(), so that it won't be destroyed
+ immediately after removing from the item list.
+
2017-10-05 Youenn Fablet <[email protected]>
Make LibWebRTCProvider port agnostic
Modified: trunk/Source/WebCore/dom/DataTransfer.cpp (222903 => 222904)
--- trunk/Source/WebCore/dom/DataTransfer.cpp 2017-10-05 07:54:02 UTC (rev 222903)
+++ trunk/Source/WebCore/dom/DataTransfer.cpp 2017-10-05 08:06:16 UTC (rev 222904)
@@ -164,8 +164,6 @@
void DataTransfer::updateFileList()
{
- // If we're removing an item, then the item list must exist, which implies that the file list must have been initialized already.
- ASSERT(m_fileList);
ASSERT(canWriteData());
m_fileList->m_files = filesFromPasteboardAndItemList();
@@ -203,11 +201,11 @@
}
if (m_itemList && m_itemList->hasItems() && m_itemList->items().findMatching([] (const auto& item) { return item->isFile(); }) != notFound)
- return { "Files" };
+ return { ASCIILiteral("Files") };
if (m_pasteboard->containsFiles()) {
ASSERT(!m_pasteboard->typesSafeForBindings().contains("Files"));
- return { "Files" };
+ return { ASCIILiteral("Files") };
}
auto types = m_pasteboard->typesSafeForBindings();
@@ -229,9 +227,8 @@
bool itemListContainsItems = false;
if (m_itemList && m_itemList->hasItems()) {
for (auto& item : m_itemList->items()) {
- if (auto file = item->file()) {
- files.append(*file);
- }
+ if (auto file = item->file())
+ files.append(file.releaseNonNull());
}
itemListContainsItems = true;
}
Modified: trunk/Source/WebCore/dom/DataTransferItem.h (222903 => 222904)
--- trunk/Source/WebCore/dom/DataTransferItem.h 2017-10-05 07:54:02 UTC (rev 222903)
+++ trunk/Source/WebCore/dom/DataTransferItem.h 2017-10-05 08:06:16 UTC (rev 222904)
@@ -54,7 +54,7 @@
~DataTransferItem();
- RefPtr<File> file() const { return m_file; }
+ RefPtr<File> file() { return m_file; }
void clearListAndPutIntoDisabledMode();
bool isFile() const { return m_file; }
Modified: trunk/Source/WebCore/dom/DataTransferItemList.cpp (222903 => 222904)
--- trunk/Source/WebCore/dom/DataTransferItemList.cpp 2017-10-05 07:54:02 UTC (rev 222903)
+++ trunk/Source/WebCore/dom/DataTransferItemList.cpp 2017-10-05 08:06:16 UTC (rev 222904)
@@ -91,7 +91,7 @@
ensureItems().append(DataTransferItem::create(m_weakPtrFactory.createWeakPtr(*this), file->type(), file.copyRef()));
m_dataTransfer.didAddFileToItemList();
- return RefPtr<DataTransferItem> { m_items->last().ptr() };
+ return m_items->last().ptr();
}
ExceptionOr<void> DataTransferItemList::remove(unsigned index)
@@ -103,15 +103,13 @@
if (items.size() <= index)
return Exception { IndexSizeError }; // Matches Gecko. See https://github.com/whatwg/html/issues/2925
- // Since file-backed DataTransferItems are not actually written to the pasteboard yet, we don't need to remove any
- // temporary files. When we support writing file-backed DataTransferItems to the platform pasteboard, we will need
- // to clean up here.
- auto& removedItem = items[index].get();
- if (!removedItem.isFile())
- m_dataTransfer.pasteboard().clear(removedItem.type());
- removedItem.clearListAndPutIntoDisabledMode();
+ // FIXME: Remove the file from the pasteboard object once we add support for it.
+ Ref<DataTransferItem> removedItem = items[index].copyRef();
+ if (!removedItem->isFile())
+ m_dataTransfer.pasteboard().clear(removedItem->type());
+ removedItem->clearListAndPutIntoDisabledMode();
items.remove(index);
- if (removedItem.isFile())
+ if (removedItem->isFile())
m_dataTransfer.updateFileList();
return { };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes