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

Side by Side Diff: third_party/WebKit/Source/modules/fetch/FetchFormDataConsumerHandleTest.cpp

Issue 1414553002: Fix out-of-memory crashes related to ArrayBuffer allocation Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase+more tweaks Created 5 years, 1 month 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/FetchFormDataConsumerHandle.h" 6 #include "modules/fetch/FetchFormDataConsumerHandle.h"
7 7
8 #include "core/dom/DOMTypedArray.h" 8 #include "core/dom/DOMTypedArray.h"
9 #include "core/html/FormData.h" 9 #include "core/html/FormData.h"
10 #include "core/loader/ThreadableLoader.h" 10 #include "core/loader/ThreadableLoader.h"
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create (String(cs)); 146 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create (String(cs));
147 HandleReaderRunner<HandleReader> runner(handle.release()); 147 HandleReaderRunner<HandleReader> runner(handle.release());
148 OwnPtr<HandleReadResult> r = runner.wait(); 148 OwnPtr<HandleReadResult> r = runner.wait();
149 EXPECT_EQ(kDone, r->result()); 149 EXPECT_EQ(kDone, r->result());
150 EXPECT_EQ("\xe3\x81\x82", toString(r->data())); 150 EXPECT_EQ("\xe3\x81\x82", toString(r->data()));
151 } 151 }
152 152
153 TEST_F(FetchFormDataConsumerHandleTest, ReadFromArrayBuffer) 153 TEST_F(FetchFormDataConsumerHandleTest, ReadFromArrayBuffer)
154 { 154 {
155 const unsigned char data[] = { 0x21, 0xfe, 0x00, 0x00, 0xff, 0xa3, 0x42, 0x3 0, 0x42, 0x99, 0x88 }; 155 const unsigned char data[] = { 0x21, 0xfe, 0x00, 0x00, 0xff, 0xa3, 0x42, 0x3 0, 0x42, 0x99, 0x88 };
156 RefPtr<DOMArrayBuffer> buffer = DOMArrayBuffer::create(data, WTF_ARRAY_LENGT H(data)); 156 RefPtr<DOMArrayBuffer> buffer = DOMArrayBuffer::deprecatedCreateOrCrash(data , WTF_ARRAY_LENGTH(data));
157 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create (buffer); 157 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create (buffer);
158 HandleReaderRunner<HandleReader> runner(handle.release()); 158 HandleReaderRunner<HandleReader> runner(handle.release());
159 OwnPtr<HandleReadResult> r = runner.wait(); 159 OwnPtr<HandleReadResult> r = runner.wait();
160 EXPECT_EQ(kDone, r->result()); 160 EXPECT_EQ(kDone, r->result());
161 Vector<char> expected; 161 Vector<char> expected;
162 expected.append(data, WTF_ARRAY_LENGTH(data)); 162 expected.append(data, WTF_ARRAY_LENGTH(data));
163 EXPECT_EQ(expected, r->data()); 163 EXPECT_EQ(expected, r->data());
164 } 164 }
165 165
166 TEST_F(FetchFormDataConsumerHandleTest, ReadFromArrayBufferView) 166 TEST_F(FetchFormDataConsumerHandleTest, ReadFromArrayBufferView)
167 { 167 {
168 const unsigned char data[] = { 0x21, 0xfe, 0x00, 0x00, 0xff, 0xa3, 0x42, 0x3 0, 0x42, 0x99, 0x88 }; 168 const unsigned char data[] = { 0x21, 0xfe, 0x00, 0x00, 0xff, 0xa3, 0x42, 0x3 0, 0x42, 0x99, 0x88 };
169 const size_t offset = 1, size = 4; 169 const size_t offset = 1, size = 4;
170 RefPtr<DOMArrayBuffer> buffer = DOMArrayBuffer::create(data, WTF_ARRAY_LENGT H(data)); 170 RefPtr<DOMArrayBuffer> buffer = DOMArrayBuffer::deprecatedCreateOrCrash(data , WTF_ARRAY_LENGTH(data));
171 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create (DOMUint8Array::create(buffer, offset, size)); 171 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create (DOMUint8Array::create(buffer, offset, size));
172 HandleReaderRunner<HandleReader> runner(handle.release()); 172 HandleReaderRunner<HandleReader> runner(handle.release());
173 OwnPtr<HandleReadResult> r = runner.wait(); 173 OwnPtr<HandleReadResult> r = runner.wait();
174 EXPECT_EQ(kDone, r->result()); 174 EXPECT_EQ(kDone, r->result());
175 Vector<char> expected; 175 Vector<char> expected;
176 expected.append(data + offset, size); 176 expected.append(data + offset, size);
177 EXPECT_EQ(expected, r->data()); 177 EXPECT_EQ(expected, r->data());
178 } 178 }
179 179
180 TEST_F(FetchFormDataConsumerHandleTest, ReadFromSimplFormData) 180 TEST_F(FetchFormDataConsumerHandleTest, ReadFromSimplFormData)
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 EXPECT_EQ("hello, world", formData->flattenToString()); 244 EXPECT_EQ("hello, world", formData->flattenToString());
245 245
246 const void* buffer = nullptr; 246 const void* buffer = nullptr;
247 size_t size; 247 size_t size;
248 EXPECT_EQ(kDone, reader->read(nullptr, 0, kNone, &size)); 248 EXPECT_EQ(kDone, reader->read(nullptr, 0, kNone, &size));
249 EXPECT_EQ(kDone, reader->beginRead(&buffer, kNone, &size)); 249 EXPECT_EQ(kDone, reader->beginRead(&buffer, kNone, &size));
250 } 250 }
251 251
252 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromArrayBuffer) 252 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromArrayBuffer)
253 { 253 {
254 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create (DOMArrayBuffer::create("foo", 3)); 254 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create (DOMArrayBuffer::deprecatedCreateOrCrash("foo", 3));
255 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt r); 255 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt r);
256 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); 256 RefPtr<EncodedFormData> formData = reader->drainAsFormData();
257 ASSERT_TRUE(formData); 257 ASSERT_TRUE(formData);
258 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); 258 EXPECT_TRUE(formData->isSafeToSendToAnotherThread());
259 EXPECT_EQ("foo", formData->flattenToString()); 259 EXPECT_EQ("foo", formData->flattenToString());
260 } 260 }
261 261
262 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromSimpleFormData) 262 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromSimpleFormData)
263 { 263 {
264 FormData* data = FormData::create(UTF8Encoding()); 264 FormData* data = FormData::create(UTF8Encoding());
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available)); 372 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available));
373 testing::runPendingTasks(); 373 testing::runPendingTasks();
374 EXPECT_EQ(kOk, reader->beginRead(&buffer, kNone, &available)); 374 EXPECT_EQ(kOk, reader->beginRead(&buffer, kNone, &available));
375 EXPECT_FALSE(reader->drainAsFormData()); 375 EXPECT_FALSE(reader->drainAsFormData());
376 reader->endRead(0); 376 reader->endRead(0);
377 EXPECT_FALSE(reader->drainAsFormData()); 377 EXPECT_FALSE(reader->drainAsFormData());
378 } 378 }
379 379
380 } // namespace 380 } // namespace
381 } // namespace blink 381 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698