[webkit-reviews] review canceled: [Bug 203707] [Clipboard API] Add a helper class to resolve ClipboardItems into pasteboard data for writing : [Attachment 382578] Another build fix in MediaStreamTrack.cpp

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Nov 7 18:38:38 PST 2019


Wenson Hsieh <wenson_hsieh at apple.com> has canceled Wenson Hsieh
<wenson_hsieh at apple.com>'s request for review:
Bug 203707: [Clipboard API] Add a helper class to resolve ClipboardItems into
pasteboard data for writing
https://bugs.webkit.org/show_bug.cgi?id=203707

Attachment 382578: Another build fix in MediaStreamTrack.cpp

https://bugs.webkit.org/attachment.cgi?id=382578&action=review




--- Comment #7 from Wenson Hsieh <wenson_hsieh at apple.com> ---
Comment on attachment 382578
  --> https://bugs.webkit.org/attachment.cgi?id=382578
Another build fix in MediaStreamTrack.cpp

View in context: https://bugs.webkit.org/attachment.cgi?id=382578&action=review

>> Source/WebCore/ChangeLog:42
>> +	    ClipboardItemDataCollector and ClipboardItem carry out these steps
in parallel, so that for each pair of
> 
> "in parallel" is misleading because we don't have multiple threads here.
Maybe asynchronously?

Good point — changed the wording accordingly.

>>
Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:98
>> +void
ClipboardItemBindingsDataSource::collectDataForWriting(ClipboardItemDataCollect
or& collector)
> 
> Having dependency to ClipboardItemDataCollector is weird here.
> I think this function should take a lambda which takes the result instead.

Refactored so that collectDataForWriting() takes completion handlers.

>>
Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:105
>> +		    collector->cancelDataCollection();
> 
> It's somewhat unclear why we'd have to clear other data collection.
> I think it's better to have more descriptive helper function like
didReceiveBadItem() or didFailToResolveItem().

Good point — I find didFailToResolveItem() to be a better name as well.

>> Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.cpp:68
>> +		++m_pendingLoadResultCount;
> 
> This manual incrementing & decrementing seems super fragile.
> If we made the change to make collectDataForWriting take a lambda,
> we can increment & decrement the count in that single lambda.

Done.

>> Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:69
>> +		return PtrHash<ClipboardItem*>::hash(key.item.get()) +
key.type.hash();
> 
> Please use DefaultHash<>::hash(std::pair<>(key.item, key.type)).

Removed this custom hashable key altogether.

>> Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:90
>> +	class ClipboardItemBlobLoader : public
RefCounted<ClipboardItemBlobLoader>, public FileReaderLoaderClient {
> 
> This class should be defined in the cpp file.
> You only need a decoration here.

Removed ClipboardItemBlobLoader.

>> Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:102
>> +	    ClipboardItemBlobLoader(ClipboardItemDataCollector& collector,
const LoadResultKey& loadResultKey, FileReaderLoader::ReadType readType)
> 
> Again, this loader should probably just take a lambda instead of having
interdependency.

Removed ClipboardItemBlobLoader.

>> Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:124
>> +	    RefPtr<ClipboardItemBlobLoader> loader;
> 
> It's very strange that m_loadResults contains loader.

Refactored this to avoid having a separate wrapper class around the loader.

>> Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:136
>> +	HashMap<LoadResultKey, LoadResult, LoadResultKeyHash,
LoadResultKeyHashTrait> m_loadResults;
> 
> This map seems completely unnecessary. We can just keep accumulating results
in a list
> then we can iterate them all to assign all the results in
takePasteboardItemsFromResults.

Removed this map.


More information about the webkit-reviews mailing list