Commit 9f128534 authored by tkent@chromium.org's avatar tkent@chromium.org

Merge odd items and even items of FormDataList::m_items.

FormDataList::Item class represents a name string in a form data, or a value in
a form data.  A value can be a string or Blob, but a name string is always a
string.  Representing a name string by Item class is overkill.  This CL adds
m_key member to Item class.

Odd items in FormDataList::m_items represented name strings, and even items in
FormDataList::m_items represented values. Now each of items in
FormDataList::m_items represents a pair of a name string and a value.  This
makes the code much simpler.

This CL has no behavior changes.

BUG=528840

Review URL: https://codereview.chromium.org/1314013007

git-svn-id: svn://svn.chromium.org/blink/trunk@201862 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 4da8a038
......@@ -34,6 +34,7 @@ namespace blink {
class CORE_EXPORT FormDataList : public GarbageCollected<FormDataList> {
public:
// TODO(tkent): Merge Entry and Item.
class Entry final {
ALLOW_ONLY_INLINE_ALLOCATION();
public:
......@@ -63,10 +64,11 @@ public:
class Item {
ALLOW_ONLY_INLINE_ALLOCATION();
public:
Item() { }
Item(const WTF::CString& data) : m_data(data) { }
Item(Blob* blob, const String& filename) : m_blob(blob), m_filename(filename) { }
Item(const CString& key) : m_key(key) { }
Item(const CString& key, const CString& data) : m_key(key), m_data(data) { }
Item(const CString& key, Blob* blob, const String& filename) : m_key(key), m_blob(blob), m_filename(filename) { }
const CString& key() const { return m_key; }
const WTF::CString& data() const { return m_data; }
Blob* blob() const { return m_blob.get(); }
const String& filename() const { return m_filename; }
......@@ -74,6 +76,7 @@ public:
DECLARE_TRACE();
private:
CString m_key;
WTF::CString m_data;
Member<Blob> m_blob;
String m_filename;
......@@ -88,23 +91,19 @@ public:
void appendData(const String& key, const String& value)
{
appendString(key);
appendString(value);
appendItem(Item(encodeAndNormalize(key), encodeAndNormalize(value)));
}
void appendData(const String& key, const CString& value)
{
appendString(key);
appendString(value);
appendItem(Item(encodeAndNormalize(key), value));
}
void appendData(const String& key, int value)
{
appendString(key);
appendString(String::number(value));
appendItem(Item(encodeAndNormalize(key), encodeAndNormalize(String::number(value))));
}
void appendBlob(const String& key, Blob* blob, const String& filename = String())
{
appendString(key);
appendBlob(blob, filename);
appendItem(Item(encodeAndNormalize(key), blob, filename));
}
void deleteEntry(const String& key);
......@@ -114,7 +113,7 @@ public:
bool hasEntry(const String& key) const;
void setBlob(const String& key, Blob*, const String& filename);
void setData(const String& key, const String& value);
size_t size() const { return m_items.size() / 2; }
size_t size() const { return m_items.size(); }
const FormDataListItems& items() const { return m_items; }
const WTF::TextEncoding& encoding() const { return m_encoding; }
......@@ -130,11 +129,9 @@ protected:
private:
void appendKeyValuePairItemsTo(FormData*, const WTF::TextEncoding&, bool isMultiPartForm, FormData::EncodingType = FormData::FormURLEncoded);
void appendString(const CString&);
void appendString(const String&);
void appendBlob(Blob*, const String& filename);
void setEntry(const String& key, const Item&);
Entry itemsToEntry(const Item& key, const Item& value) const;
void appendItem(const Item&);
void setEntry(const Item&);
Entry itemsToEntry(const Item&) const;
CString encodeAndNormalize(const String& key) const;
WTF::TextEncoding m_encoding;
......
......@@ -214,18 +214,17 @@ bool buildSearchString(const HTMLFormElement* form, Vector<char>* encodedString,
if (!control->appendFormData(*dataList, false))
continue;
const FormDataList::FormDataListItems& items = dataList->items();
for (FormDataList::FormDataListItems::const_iterator j(items.begin()); j != items.end(); ++j) {
for (const FormDataList::Item& item : dataList->items()) {
if (!encodedString->isEmpty())
encodedString->append('&');
FormDataBuilder::encodeStringAsFormData(*encodedString, j->data());
FormDataBuilder::encodeStringAsFormData(*encodedString, item.key());
encodedString->append('=');
++j;
if (control == textElement) {
encodedString->append("{searchTerms}", 13);
isElementFound = true;
} else
FormDataBuilder::encodeStringAsFormData(*encodedString, j->data());
} else {
FormDataBuilder::encodeStringAsFormData(*encodedString, item.data());
}
}
}
return isElementFound;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment