[webkit-reviews] review denied: [Bug 39083] Refactor FormData and Blob for better support of Blobs synthesized by BlobBuilder : [Attachment 56610] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu May 20 17:35:57 PDT 2010
Jian Li <jianli at chromium.org> has denied Kinuko Yasuda <kinuko at chromium.org>'s
request for review:
Bug 39083: Refactor FormData and Blob for better support of Blobs synthesized
by BlobBuilder
https://bugs.webkit.org/show_bug.cgi?id=39083
Attachment 56610: Patch
https://bugs.webkit.org/attachment.cgi?id=56610&action=review
------- Additional Comments from Jian Li <jianli at chromium.org>
WebCore/ChangeLog:8
+ - Introduces a new class BlobItem (platform/BlobData.{h,cpp}) as
Should it be "platform/BlobItem.{h,cpp}"? Perhaps we do not even need to
mention the file names.
WebCore/ChangeLog:22
+ The existing tests should be able to be used for regression:
There're quite a few more tests to test file and form data. Probably we do not
need to mention the test names.
WebCore/html/Blob.h:50
+ static PassRefPtr<Blob> create(const String& path)
Seems that we do not need this creator any more.
WebCore/html/Blob.h:58
+ const String& path() const;
Is this still needed now? I do not see any reference to path() now since we
access the underlying items directly.
WebCore/html/Blob.h:62
+ void append(PassRefPtr<BlobItem> item);
item name can be omitted.
WebCore/html/Blob.h:73
+ BlobItemList m_itemList;
Probably it is simpler to call the name as BlobItems and m_items. Not only for
the simpler names, but also consistent with items() getter.
WebCore/html/Blob.cpp:40
+ Blob::Blob(const String& path)
I think we do not need this constructor. Instead, we can move the append
operation to the File constructor.
WebCore/html/FileStream.cpp:93
+ const FileRangeBlobItem* range =
blob->items().at(0)->toFileRangeBlobItem();
Please add an assert to ensure the blob has only one item. Also a FIXME about
needing to handle multiple items when BlobBuilder is introduced.
WebCore/html/FormDataList.h:49
+ void appendBlob(const String& key, PassRefPtr<Blob> blob);
blob can be omitted.
WebCore/platform/BlobItem.cpp:63
+ start += fileRangeItem->start();
What if the new start value is beyond the old range? It seems that we're only
doing partial checks and clamps in BlobItem::slice, which is quite risky. Why
not moving the clamp logic in Blob::slice to here?
WebCore/platform/BlobItem.cpp:82
+ return v.releaseBuffer();
I think this would incur extra overhead for ByteArrayBlobItem that already uses
Vector<char> to hold the data.
Probably it is better to move the implementation of releaseBuffer to each
subclass. You might also choose to override releaseBuffer in ByteArrayBlobItem.
WebCore/platform/BlobItem.cpp:122
+ if (!fileItem || m_path != fileItem->m_path)
It is simpler to say:
return fileItem && m_path == fileItem->m_path;
WebCore/platform/BlobItem.cpp:140
+ StringBlobItem::StringBlobItem(const String& text, EndingType ending,
TextEncoding encoding)
The constructor body seems to be too cumbersome. Can we move the ending logic
to a helper function?
WebCore/platform/BlobItem.cpp:243
+ : m_item(item)
For better readability, can we move setting m_item and m_start values to be
else part of the if check in the constructor body?
WebCore/platform/BlobItem.cpp:248
+ const DataRangeBlobItem* rangeItem = m_item->toDataRangeBlobItem();
This line can be moved before the above if statement.
WebCore/platform/BlobItem.cpp:273
+ if (!m_item->equals(rangeItem->m_item.get()))
It would be simpler to combine all 3 if checks to one return.
WebCore/platform/network/FormData.cpp:190
+ void FormData::appendFormDataItems(const BlobItemList& list, const
TextEncoding& encoding, bool isMultiPartForm, Document* document)
The name appendFormDataItems is a bit confusing. How about appendItems?
WebCore/platform/network/FormData.h:133
+ void appendFormDataItems(const BlobItemList& formDataItems, const
TextEncoding&, bool isMultiPartForm, Document* document);
We can omit the names of 1st and last arguments.
More information about the webkit-reviews
mailing list