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

Side by Side Diff: Source/modules/fetch/BodyStreamBufferTest.cpp

Issue 1192913007: Change BodyStreamBuffer to be FetchDataConsumerHandle-based and enable backpressure in Fetch API (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase. Created 5 years, 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "modules/fetch/BodyStreamBuffer.h" 6 #include "modules/fetch/BodyStreamBuffer.h"
7 7
8 #include "core/dom/DOMArrayBuffer.h" 8 #include "core/dom/DOMArrayBuffer.h"
9 #include "core/dom/DOMException.h" 9 #include "core/dom/DOMException.h"
10 #include "core/dom/ExceptionCode.h" 10 #include "core/dom/ExceptionCode.h"
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 buffer->close(); 138 buffer->close();
139 EXPECT_TRUE(buffer->isClosed()); 139 EXPECT_TRUE(buffer->isClosed());
140 EXPECT_EQ(2, observer1->writeCount()); 140 EXPECT_EQ(2, observer1->writeCount());
141 EXPECT_EQ(1, observer1->closeCount()); 141 EXPECT_EQ(1, observer1->closeCount());
142 EXPECT_EQ(0, observer1->errorCount()); 142 EXPECT_EQ(0, observer1->errorCount());
143 EXPECT_EQ(0, observer2->writeCount()); 143 EXPECT_EQ(0, observer2->writeCount());
144 EXPECT_EQ(0, observer2->closeCount()); 144 EXPECT_EQ(0, observer2->closeCount());
145 EXPECT_EQ(0, observer2->errorCount()); 145 EXPECT_EQ(0, observer2->errorCount());
146 } 146 }
147 147
148 TEST(BodyStreamBufferTest, CreateBlob)
149 {
150 BodyStreamBuffer* buffer = new BodyStreamBuffer(new MockCanceller);
151 BlobHandleCallback* callback1 = new BlobHandleCallback();
152 BlobHandleCallback* callback2 = new BlobHandleCallback();
153 EXPECT_TRUE(buffer->readAllAndCreateBlobHandle("text/html", callback1));
154 EXPECT_FALSE(buffer->readAllAndCreateBlobHandle("text/html", callback2));
155 buffer->write(DOMArrayBuffer::create("foobar", 6));
156 EXPECT_FALSE(callback1->blobHandle());
157 buffer->write(DOMArrayBuffer::create("piyo", 4));
158 EXPECT_FALSE(callback1->blobHandle());
159 buffer->close();
160 EXPECT_TRUE(callback1->blobHandle());
161 EXPECT_EQ("text/html", callback1->blobHandle()->type());
162 EXPECT_FALSE(callback2->blobHandle());
163 EXPECT_EQ(10u, callback1->blobHandle()->size());
164 WebVector<WebBlobData::Item*> items;
165 EXPECT_TRUE(Platform::current()->unitTestSupport()->getBlobItems(callback1-> blobHandle()->uuid(), &items));
166 EXPECT_EQ(2u, items.size());
167 EXPECT_EQ(6u, items[0]->data.size());
168 EXPECT_EQ(0, memcmp(items[0]->data.data(), "foobar", 6));
169 EXPECT_EQ(4u, items[1]->data.size());
170 EXPECT_EQ(0, memcmp(items[1]->data.data(), "piyo", 4));
171 EXPECT_FALSE(callback1->exception());
172 EXPECT_FALSE(callback2->exception());
173 }
174
175 TEST(BodyStreamBufferTest, CreateBlobAfterWrite)
176 {
177 BodyStreamBuffer* buffer = new BodyStreamBuffer(new MockCanceller);
178 BlobHandleCallback* callback = new BlobHandleCallback();
179 buffer->write(DOMArrayBuffer::create("foobar", 6));
180 EXPECT_TRUE(buffer->readAllAndCreateBlobHandle("", callback));
181 buffer->close();
182 EXPECT_TRUE(callback->blobHandle());
183 EXPECT_EQ(6u, callback->blobHandle()->size());
184 WebVector<WebBlobData::Item*> items;
185 EXPECT_TRUE(Platform::current()->unitTestSupport()->getBlobItems(callback->b lobHandle()->uuid(), &items));
186 EXPECT_EQ(1u, items.size());
187 EXPECT_EQ(6u, items[0]->data.size());
188 EXPECT_EQ(0, memcmp(items[0]->data.data(), "foobar", 6));
189 }
190
191 TEST(BodyStreamBufferTest, CreateBlobAfterClose)
192 {
193 BodyStreamBuffer* buffer = new BodyStreamBuffer(new MockCanceller);
194 BlobHandleCallback* callback = new BlobHandleCallback();
195 buffer->write(DOMArrayBuffer::create("foobar", 6));
196 buffer->close();
197 EXPECT_TRUE(buffer->readAllAndCreateBlobHandle("", callback));
198 EXPECT_TRUE(callback->blobHandle());
199 EXPECT_EQ(6u, callback->blobHandle()->size());
200 WebVector<WebBlobData::Item*> items;
201 EXPECT_TRUE(Platform::current()->unitTestSupport()->getBlobItems(callback->b lobHandle()->uuid(), &items));
202 EXPECT_EQ(1u, items.size());
203 EXPECT_EQ(6u, items[0]->data.size());
204 EXPECT_EQ(0, memcmp(items[0]->data.data(), "foobar", 6));
205 }
206
207 TEST(BodyStreamBufferTest, CreateBlobException)
208 {
209 BodyStreamBuffer* buffer = new BodyStreamBuffer(new MockCanceller);
210 BlobHandleCallback* callback1 = new BlobHandleCallback();
211 BlobHandleCallback* callback2 = new BlobHandleCallback();
212 EXPECT_TRUE(buffer->readAllAndCreateBlobHandle("", callback1));
213 EXPECT_FALSE(buffer->readAllAndCreateBlobHandle("", callback2));
214 buffer->write(DOMArrayBuffer::create("foobar", 6));
215 buffer->write(DOMArrayBuffer::create("piyo", 4));
216 EXPECT_FALSE(buffer->hasError());
217 buffer->error(DOMException::create(NetworkError, "Error Message"));
218 EXPECT_TRUE(buffer->hasError());
219 EXPECT_FALSE(callback1->blobHandle());
220 EXPECT_FALSE(callback2->blobHandle());
221 EXPECT_TRUE(callback1->exception());
222 EXPECT_FALSE(callback2->exception());
223 EXPECT_EQ("NetworkError", callback1->exception()->name());
224 EXPECT_EQ("Error Message", callback1->exception()->message());
225 }
226
227 TEST(BodyStreamBufferTest, CreateBlobExceptionAfterWrite)
228 {
229 BodyStreamBuffer* buffer = new BodyStreamBuffer(new MockCanceller);
230 BlobHandleCallback* callback = new BlobHandleCallback();
231 buffer->write(DOMArrayBuffer::create("foobar", 6));
232 EXPECT_TRUE(buffer->readAllAndCreateBlobHandle("", callback));
233 buffer->error(DOMException::create(NetworkError, "Error Message"));
234 EXPECT_TRUE(callback->exception());
235 EXPECT_EQ("NetworkError", callback->exception()->name());
236 EXPECT_EQ("Error Message", callback->exception()->message());
237 }
238
239 TEST(BodyStreamBufferTest, CreateBlobExceptionAfterError)
240 {
241 BodyStreamBuffer* buffer = new BodyStreamBuffer(new MockCanceller);
242 BlobHandleCallback* callback = new BlobHandleCallback();
243 buffer->write(DOMArrayBuffer::create("foobar", 6));
244 buffer->error(DOMException::create(NetworkError, "Error Message"));
245 EXPECT_TRUE(buffer->readAllAndCreateBlobHandle("", callback));
246 EXPECT_TRUE(callback->exception());
247 EXPECT_EQ("NetworkError", callback->exception()->name());
248 EXPECT_EQ("Error Message", callback->exception()->message());
249 }
250
251 TEST(BodyStreamBufferTest, Cancel) 148 TEST(BodyStreamBufferTest, Cancel)
252 { 149 {
253 auto canceller = new MockCanceller; 150 auto canceller = new MockCanceller;
254 BodyStreamBuffer* buffer = new BodyStreamBuffer(canceller); 151 BodyStreamBuffer* buffer = new BodyStreamBuffer(canceller);
255 buffer->cancel(); 152 buffer->cancel();
256 153
257 EXPECT_EQ(1, canceller->counter()); 154 EXPECT_EQ(1, canceller->counter());
258 EXPECT_FALSE(buffer->isClosed()); 155 EXPECT_FALSE(buffer->isClosed());
259 EXPECT_FALSE(buffer->hasError()); 156 EXPECT_FALSE(buffer->hasError());
260 } 157 }
261 158
262 } // namespace blink 159 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698