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

Unified Diff: Source/core/html/FormDataList.h

Issue 564963002: New FormData methods: get, getAll, has, set, delete and iterable (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: webexposed/global-interface-listing updates Created 5 years, 11 months 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
« no previous file with comments | « Source/core/html/FormData.idl ('k') | Source/core/html/FormDataList.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/html/FormDataList.h
diff --git a/Source/core/html/FormDataList.h b/Source/core/html/FormDataList.h
index 4789c861a4770acfb926f11372bc501646a27b77..f15f94c3cfb1048dff42ea8d7d48ff3325d0e63f 100644
--- a/Source/core/html/FormDataList.h
+++ b/Source/core/html/FormDataList.h
@@ -22,6 +22,7 @@
#define FormDataList_h
#include "core/fileapi/Blob.h"
+#include "core/fileapi/File.h"
#include "platform/heap/Handle.h"
#include "platform/network/FormData.h"
#include "wtf/Forward.h"
@@ -33,6 +34,32 @@ namespace blink {
class FormDataList : public RefCountedWillBeGarbageCollected<FormDataList> {
DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(FormDataList);
public:
+ class Entry final {
+ ALLOW_ONLY_INLINE_ALLOCATION();
+ public:
+ enum Type { None, StringType, FileType };
+
+ Entry() : m_type(None) { }
+ Entry(const String& name, const String& value) : m_type(StringType), m_name(name), m_string(value) { }
+ Entry(const String& name, File* value) : m_type(FileType), m_name(name), m_file(value) { }
+
+ bool isNone() const { return m_type == None; }
+ bool isString() const { return m_type == StringType; }
+ bool isFile() const { return m_type == FileType; }
+
+ const String& name() const { ASSERT(m_type != None); return m_name; }
+ const String& string() const { ASSERT(m_type == StringType); return m_string; }
+ File* file() const { ASSERT(m_type == FileType); return m_file; }
+
+ void trace(Visitor*);
+
+ private:
+ const Type m_type;
+ const String m_name;
+ const String m_string;
+ const Member<File> m_file;
+ };
+
class Item {
ALLOW_ONLY_INLINE_ALLOCATION();
public:
@@ -80,6 +107,15 @@ public:
appendBlob(blob, filename);
}
+ void deleteEntry(const String& key);
+ Entry getEntry(const String& key) const;
+ Entry getEntry(size_t index) const;
+ WillBeHeapVector<Entry> getAll(const String& key) const;
+ 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; }
+
const FormDataListItems& items() const { return m_items; }
const WTF::TextEncoding& encoding() const { return m_encoding; }
@@ -97,6 +133,9 @@ private:
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;
+ CString encodeAndNormalize(const String& key) const;
WTF::TextEncoding m_encoding;
FormDataListItems m_items;
@@ -104,6 +143,7 @@ private:
} // namespace blink
-WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::FormDataList::Item);
+WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::FormDataList::Entry);
+WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::FormDataList::Item);
#endif // FormDataList_h
« no previous file with comments | « Source/core/html/FormData.idl ('k') | Source/core/html/FormDataList.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698