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

Side by Side Diff: LayoutTests/http/tests/local/formdata/formdata-methods.html

Issue 564963002: New FormData methods: get, getAll, has, set, delete and iterable (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Implement getAll(), fix get() with no matches Created 6 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/core/html/DOMFormData.h » ('j') | Source/core/html/DOMFormData.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <title>FormData interface</title>
3 <script src="../../resources/testharness.js"></script>
4 <script src="../../resources/testharnessreport.js"></script>
5 <script>
6
7 function serializeFormData(formData)
8 {
9 return new Promise(function(resolve, reject) {
10 var xhr = new XMLHttpRequest(), async = true;
11 xhr.open('POST', 'http://127.0.0.1:8000/xmlhttprequest/resources/multipa rt-post-echo.php', async);
12 xhr.send(formData);
13 xhr.onreadystatechange = function() {
14 if (xhr.readyState !== XMLHttpRequest.DONE)
15 return;
16 if (xhr.status === 200) {
17 resolve(xhr.responseText);
18 } else {
19 reject(Error(xhr.statusText));
20 }
21 };
22 });
23 }
24
25 function checkFormData(test, formData, expected, message)
26 {
27 message = message || 'Serialized FormData should match';
28 return serializeFormData(formData)
29 .then(test.step_func(function(value) {
30 assert_equals(value, expected, message);
31 test.done();
32 }))
33 .catch(test.unreached_func('Failed to fetch form data'));
34 }
35
36 function blobAsString(blob)
37 {
38 return new Promise(function(resolve, reject) {
39 var reader = new FileReader();
40 reader.readAsText(blob);
41 reader.onload = function(e) { resolve(reader.result); };
42 reader.onerror = function(e) { reject(reader.error); };
43 });
44 }
45
46 function checkBlobData(test, blob, expected, message)
47 {
48 message = message || 'Blob daata should match';
tyoshino (SeeGerritForStatus) 2014/09/12 07:52:54 daata -> data
jsbell 2014/09/12 16:30:09 Done.
49 return blobAsString(blob)
50 .then(test.step_func(function(value) {
51 assert_equals(value, expected, message);
52 test.done();
53 }))
54 .catch(test.unreached_func('Failed to read Blob data'));
55 }
56
57 async_test(function(t) {
58 var fd = new FormData();
59 fd.append('n1', 'value');
60 assert_equals(fd.has('n1'), true, 'FormData.has() should see appended entry' );
61 assert_equals(fd.has('n2'), false, 'FormData.has() should not see absent ent ry');
62 fd.append('n2', 'value');
63 assert_equals(fd.has('n1'), true, 'FormData.has() should still see original entry');
64 assert_equals(fd.has('n2'), true, 'FormData.has() should see newly appended entry');
65 fd.append('n3', new Blob(['content']));
66 assert_equals(fd.has('n3'), true, 'FormData.has() should see newly appended Blob entry');
67
68 checkFormData(t, fd, 'n1=value&n2=value&n3=blob:application/octet-stream:con tent');
69 }, 'FormData.has()');
70
71 async_test(function(t) {
72 var fd = new FormData();
73 fd.append('name', 'value');
74 assert_equals(fd.has('name'), true, 'FormData.has() should see appended entr y');
75 fd.delete('name');
76 assert_equals(fd.has('name'), false, 'FormData.has() should not see deleted entry');
77
78 fd.append('name', new Blob(['content']));
79 assert_equals(fd.has('name'), true, 'FormData.has() should see newly appende d Blob entry');
80 fd.delete('name');
81 assert_equals(fd.has('name'), false, 'FormData.has() should not see deleted Blob entry');
82
83 fd.append('n1', 'v1');
84 fd.append('n2', 'v2');
85 fd.append('n1', 'v3');
86 fd.delete('n1');
87 assert_equals(fd.has('n1'), false, 'FormData.delete() should delete all matc hing entries');
88
89 checkFormData(t, fd, 'n2=v2');
90 }, 'FormData.delete()');
91
92 async_test(function(t) {
93 var fd = new FormData();
94 fd.set('n1', 'v1');
95 assert_equals(fd.has('n1'), true, 'FormData.has() should see set() entry');
96 checkFormData(t, fd, 'n1=v1');
97 }, 'FormData.set() - DOMString');
98
99 async_test(function(t) {
100 var fd = new FormData();
101 fd.set('n1', new Blob(['content']));
102
103 checkFormData(t, fd, 'n1=blob:application/octet-stream:content');
104 }, 'FormData.set() - Blob');
105
106 async_test(function(t) {
107 var fd = new FormData();
108 fd.set('n1', new Blob(['content']), 'name1');
109
110 checkFormData(t, fd, 'n1=name1:application/octet-stream:content');
111 }, 'FormData.set() - Blob and filename');
112
113 async_test(function(t) {
114 var fd = new FormData();
115 fd.append('n1', 'v1');
116 fd.append('n1', 'v2');
117 fd.set('n1', 'v3');
118 assert_equals(fd.has('n1'), true, 'FormData.has() should see set() entry');
119 fd.set('n2', 'v4');
120 fd.set('n2', new Blob(['content']), 'name1');
121
122 checkFormData(t, fd, 'n1=v3&n2=name1:application/octet-stream:content',
123 'FormData.set() should replace all matching entries');
124 }, 'FormData.set() replaces all entries');
125
126 test(function() {
127 var fd = new FormData();
128 fd.append('n1', 'v1');
129 var result = fd.get('n1');
130 assert_equals(result, 'v1', 'FormData.get() should return matching DOMString entry');
131 }, 'FormData.get() - DOMString');
132
133 async_test(function(t) {
134 var fd = new FormData();
135 fd.append('n1', new Blob(['content']));
136 var result = fd.get('n1');
137 assert_true(result instanceof File, 'FormData.get() on an appended Blob shou ld return a File');
138 assert_equals(result.name, 'blob', 'Default name on a Blob is "blob"');
139 checkBlobData(t, result, 'content');
140 }, 'FormData.get() - Blob');
141
142 async_test(function(t) {
143 var fd = new FormData();
144 fd.append('n1', new Blob(['content']), 'name1');
145 var result = fd.get('n1');
146 assert_true(result instanceof File, 'FormData.get() on an appended Blob shou ld return a File');
147 assert_equals(result.name, 'name1', 'Returned File should have specified nam e');
148 checkBlobData(t, result, 'content');
149 }, 'FormData.get() - Blob and filename');
150
151 test(function() {
152 var fd = new FormData();
153 fd.append('n1', 'v1');
154 fd.append('n1', 'v2');
155 var result = fd.get('n1');
156 assert_equals(result, 'v1', 'FormData.get() should return first matching ent ry');
157 }, 'FormData.get() - multiple matches');
158
159 test(function() {
160 var fd = new FormData();
161 fd.append('n1', 'v1');
162 fd.append('n2', 'v2');
163 var result = fd.get('n3');
164 assert_equals(result, null, 'FormData.get() should return null if no matches ');
165 }, 'FormData.get() - no matches');
166
167 test(function() {
168 var fd = new FormData();
169 fd.append('n1', 'v1');
170 fd.append('n2', 'v2');
171 fd.append('n1', new Blob(['content']));
172 fd.append('n3', 'v3');
173 fd.append('n1', new Blob(['content2']), 'name2');
174 fd.append('n4', 'v4');
175 var results = fd.getAll('n1');
176
177 assert_equals(results.length, 3, 'FormData.getAll() should return all matchi ng entries');
178
179 assert_equals(results[0], 'v1', 'First entry should match');
180
181 assert_true(results[1] instanceof File, 'Second entry should be a File');
182 assert_equals(results[1].name, 'blob', 'Second entry name should be the defa ult');
183
184 assert_true(results[2] instanceof File, 'Third entry should be a File');
185 assert_equals(results[2].name, 'name2', 'Third entry name should be as speci fied');
186 }, 'FormData.getAll()');
187
188 test(function() {
189 var fd = new FormData();
190 fd.append('n1', 'v1');
191 fd.append('n2', 'v2');
192 var results = fd.getAll('n3');
193
194 assert_equals(results.length, 0, 'FormData.getAll() should return empty sequ ence if no matches');
195 }, 'FormData.getAll() - no matches');
196
197 // FIXME: Add test for get() for appended File without filename
198 // FIXME: Add test for get() for appended File with filename
199 // FIXME: Add test for getAll() for appended File without filename
200 // FIXME: Add test for getAll() for appended File with filename
201
202 </script>
OLDNEW
« no previous file with comments | « no previous file | Source/core/html/DOMFormData.h » ('j') | Source/core/html/DOMFormData.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698