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

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

Issue 2141383002: [Fetch API] Remove HandleScope to protect local handles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 years, 5 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 "modules/fetch/BodyStreamBuffer.h" 5 #include "modules/fetch/BodyStreamBuffer.h"
6 6
7 #include "bindings/core/v8/V8BindingForTesting.h"
7 #include "core/html/FormData.h" 8 #include "core/html/FormData.h"
8 #include "core/testing/DummyPageHolder.h"
9 #include "modules/fetch/DataConsumerHandleTestUtil.h" 9 #include "modules/fetch/DataConsumerHandleTestUtil.h"
10 #include "modules/fetch/FetchBlobDataConsumerHandle.h" 10 #include "modules/fetch/FetchBlobDataConsumerHandle.h"
11 #include "modules/fetch/FetchFormDataConsumerHandle.h" 11 #include "modules/fetch/FetchFormDataConsumerHandle.h"
12 #include "platform/blob/BlobData.h" 12 #include "platform/blob/BlobData.h"
13 #include "platform/blob/BlobURL.h" 13 #include "platform/blob/BlobURL.h"
14 #include "platform/network/EncodedFormData.h" 14 #include "platform/network/EncodedFormData.h"
15 #include "platform/testing/UnitTestHelpers.h" 15 #include "platform/testing/UnitTestHelpers.h"
16 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 #include "wtf/PtrUtil.h" 18 #include "wtf/PtrUtil.h"
(...skipping 14 matching lines...) Expand all
33 class FakeLoaderFactory : public FetchBlobDataConsumerHandle::LoaderFactory { 33 class FakeLoaderFactory : public FetchBlobDataConsumerHandle::LoaderFactory {
34 public: 34 public:
35 std::unique_ptr<ThreadableLoader> create(ExecutionContext&, ThreadableLoader Client*, const ThreadableLoaderOptions&, const ResourceLoaderOptions&) override 35 std::unique_ptr<ThreadableLoader> create(ExecutionContext&, ThreadableLoader Client*, const ThreadableLoaderOptions&, const ResourceLoaderOptions&) override
36 { 36 {
37 ASSERT_NOT_REACHED(); 37 ASSERT_NOT_REACHED();
38 return nullptr; 38 return nullptr;
39 } 39 }
40 }; 40 };
41 41
42 class BodyStreamBufferTest : public ::testing::Test { 42 class BodyStreamBufferTest : public ::testing::Test {
43 public:
44 BodyStreamBufferTest()
45 {
46 m_page = DummyPageHolder::create(IntSize(1, 1));
47 }
48 ~BodyStreamBufferTest() override {}
49
50 protected: 43 protected:
51 ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->doc ument().frame()); } 44 ScriptValue eval(ScriptState* scriptState, const char* s)
52 ExecutionContext* getExecutionContext() { return &m_page->document(); }
53
54 std::unique_ptr<DummyPageHolder> m_page;
55
56 ScriptValue eval(const char* s)
57 { 45 {
58 v8::Local<v8::String> source; 46 v8::Local<v8::String> source;
59 v8::Local<v8::Script> script; 47 v8::Local<v8::Script> script;
60 v8::MicrotasksScope microtasks(getScriptState()->isolate(), v8::Microtas ksScope::kDoNotRunMicrotasks); 48 v8::MicrotasksScope microtasks(scriptState->isolate(), v8::MicrotasksSco pe::kDoNotRunMicrotasks);
61 if (!v8Call(v8::String::NewFromUtf8(getScriptState()->isolate(), s, v8:: NewStringType::kNormal), source)) { 49 if (!v8Call(v8::String::NewFromUtf8(scriptState->isolate(), s, v8::NewSt ringType::kNormal), source)) {
62 ADD_FAILURE(); 50 ADD_FAILURE();
63 return ScriptValue(); 51 return ScriptValue();
64 } 52 }
65 if (!v8Call(v8::Script::Compile(getScriptState()->context(), source), sc ript)) { 53 if (!v8Call(v8::Script::Compile(scriptState->context(), source), script) ) {
66 ADD_FAILURE() << "Compilation fails"; 54 ADD_FAILURE() << "Compilation fails";
67 return ScriptValue(); 55 return ScriptValue();
68 } 56 }
69 return ScriptValue(getScriptState(), script->Run(getScriptState()->conte xt())); 57 return ScriptValue(scriptState, script->Run(scriptState->context()));
70 } 58 }
71 ScriptValue evalWithPrintingError(const char* s) 59 ScriptValue evalWithPrintingError(ScriptState* scriptState, const char* s)
72 { 60 {
73 v8::TryCatch block(getScriptState()->isolate()); 61 v8::TryCatch block(scriptState->isolate());
74 ScriptValue r = eval(s); 62 ScriptValue r = eval(scriptState, s);
75 if (block.HasCaught()) { 63 if (block.HasCaught()) {
76 ADD_FAILURE() << toCoreString(block.Exception()->ToString(getScriptS tate()->isolate())).utf8().data(); 64 ADD_FAILURE() << toCoreString(block.Exception()->ToString(scriptStat e->isolate())).utf8().data();
77 block.ReThrow(); 65 block.ReThrow();
78 } 66 }
79 return r; 67 return r;
80 } 68 }
81 }; 69 };
82 70
83 TEST_F(BodyStreamBufferTest, Tee) 71 TEST_F(BodyStreamBufferTest, Tee)
84 { 72 {
73 V8TestingScope scope;
85 Checkpoint checkpoint; 74 Checkpoint checkpoint;
86 MockFetchDataLoaderClient* client1 = MockFetchDataLoaderClient::create(); 75 MockFetchDataLoaderClient* client1 = MockFetchDataLoaderClient::create();
87 MockFetchDataLoaderClient* client2 = MockFetchDataLoaderClient::create(); 76 MockFetchDataLoaderClient* client2 = MockFetchDataLoaderClient::create();
88 77
89 InSequence s; 78 InSequence s;
90 EXPECT_CALL(checkpoint, Call(1)); 79 EXPECT_CALL(checkpoint, Call(1));
91 EXPECT_CALL(*client1, didFetchDataLoadedString(String("hello, world"))); 80 EXPECT_CALL(*client1, didFetchDataLoadedString(String("hello, world")));
92 EXPECT_CALL(checkpoint, Call(2)); 81 EXPECT_CALL(checkpoint, Call(2));
93 EXPECT_CALL(checkpoint, Call(3)); 82 EXPECT_CALL(checkpoint, Call(3));
94 EXPECT_CALL(*client2, didFetchDataLoadedString(String("hello, world"))); 83 EXPECT_CALL(*client2, didFetchDataLoadedString(String("hello, world")));
95 EXPECT_CALL(checkpoint, Call(4)); 84 EXPECT_CALL(checkpoint, Call(4));
96 85
97 std::unique_ptr<DataConsumerHandleTestUtil::ReplayingHandle> handle = DataCo nsumerHandleTestUtil::ReplayingHandle::create(); 86 std::unique_ptr<DataConsumerHandleTestUtil::ReplayingHandle> handle = DataCo nsumerHandleTestUtil::ReplayingHandle::create();
98 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil:: Command::Data, "hello, ")); 87 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil:: Command::Data, "hello, "));
99 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil:: Command::Data, "world")); 88 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil:: Command::Data, "world"));
100 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil:: Command::Done)); 89 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil:: Command::Done));
101 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(std::move(handle))); 90 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea teFetchDataConsumerHandleFromWebHandle(std::move(handle)));
102 91
103 BodyStreamBuffer* new1; 92 BodyStreamBuffer* new1;
104 BodyStreamBuffer* new2; 93 BodyStreamBuffer* new2;
105 buffer->tee(&new1, &new2); 94 buffer->tee(&new1, &new2);
106 95
107 EXPECT_TRUE(buffer->isStreamLocked()); 96 EXPECT_TRUE(buffer->isStreamLocked());
108 EXPECT_TRUE(buffer->isStreamDisturbed()); 97 EXPECT_TRUE(buffer->isStreamDisturbed());
109 EXPECT_FALSE(buffer->hasPendingActivity()); 98 EXPECT_FALSE(buffer->hasPendingActivity());
110 99
111 new1->startLoading(FetchDataLoader::createLoaderAsString(), client1); 100 new1->startLoading(FetchDataLoader::createLoaderAsString(), client1);
112 checkpoint.Call(1); 101 checkpoint.Call(1);
113 testing::runPendingTasks(); 102 testing::runPendingTasks();
114 checkpoint.Call(2); 103 checkpoint.Call(2);
115 104
116 new2->startLoading(FetchDataLoader::createLoaderAsString(), client2); 105 new2->startLoading(FetchDataLoader::createLoaderAsString(), client2);
117 checkpoint.Call(3); 106 checkpoint.Call(3);
118 testing::runPendingTasks(); 107 testing::runPendingTasks();
119 checkpoint.Call(4); 108 checkpoint.Call(4);
120 } 109 }
121 110
122 TEST_F(BodyStreamBufferTest, TeeFromHandleMadeFromStream) 111 TEST_F(BodyStreamBufferTest, TeeFromHandleMadeFromStream)
123 { 112 {
124 ScriptState::Scope scope(getScriptState()); 113 V8TestingScope scope;
125 ScriptValue stream = evalWithPrintingError( 114 ScriptValue stream = evalWithPrintingError(
115 scope.getScriptState(),
126 "stream = new ReadableStream({start: c => controller = c});" 116 "stream = new ReadableStream({start: c => controller = c});"
127 "controller.enqueue(new Uint8Array([0x41, 0x42]));" 117 "controller.enqueue(new Uint8Array([0x41, 0x42]));"
128 "controller.enqueue(new Uint8Array([0x55, 0x58]));" 118 "controller.enqueue(new Uint8Array([0x55, 0x58]));"
129 "controller.close();" 119 "controller.close();"
130 "stream"); 120 "stream");
131 Checkpoint checkpoint; 121 Checkpoint checkpoint;
132 MockFetchDataLoaderClient* client1 = MockFetchDataLoaderClient::create(); 122 MockFetchDataLoaderClient* client1 = MockFetchDataLoaderClient::create();
133 MockFetchDataLoaderClient* client2 = MockFetchDataLoaderClient::create(); 123 MockFetchDataLoaderClient* client2 = MockFetchDataLoaderClient::create();
134 124
135 InSequence s; 125 InSequence s;
136 EXPECT_CALL(checkpoint, Call(1)); 126 EXPECT_CALL(checkpoint, Call(1));
137 EXPECT_CALL(*client1, didFetchDataLoadedString(String("ABUX"))); 127 EXPECT_CALL(*client1, didFetchDataLoadedString(String("ABUX")));
138 EXPECT_CALL(checkpoint, Call(2)); 128 EXPECT_CALL(checkpoint, Call(2));
139 EXPECT_CALL(checkpoint, Call(3)); 129 EXPECT_CALL(checkpoint, Call(3));
140 EXPECT_CALL(*client2, didFetchDataLoadedString(String("ABUX"))); 130 EXPECT_CALL(*client2, didFetchDataLoadedString(String("ABUX")));
141 EXPECT_CALL(checkpoint, Call(4)); 131 EXPECT_CALL(checkpoint, Call(4));
142 132
143 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), stream); 133 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), stre am);
144 134
145 BodyStreamBuffer* new1; 135 BodyStreamBuffer* new1;
146 BodyStreamBuffer* new2; 136 BodyStreamBuffer* new2;
147 buffer->tee(&new1, &new2); 137 buffer->tee(&new1, &new2);
148 138
149 EXPECT_TRUE(buffer->isStreamLocked()); 139 EXPECT_TRUE(buffer->isStreamLocked());
150 // Note that this behavior is slightly different from for the behavior of 140 // Note that this behavior is slightly different from for the behavior of
151 // a BodyStreamBuffer made from a FetchDataConsumerHandle. See the above 141 // a BodyStreamBuffer made from a FetchDataConsumerHandle. See the above
152 // test. In this test, the stream will get disturbed when the microtask 142 // test. In this test, the stream will get disturbed when the microtask
153 // is performed. 143 // is performed.
154 // TODO(yhirano): A uniformed behavior is preferred. 144 // TODO(yhirano): A uniformed behavior is preferred.
155 EXPECT_FALSE(buffer->isStreamDisturbed()); 145 EXPECT_FALSE(buffer->isStreamDisturbed());
156 EXPECT_FALSE(buffer->hasPendingActivity()); 146 EXPECT_FALSE(buffer->hasPendingActivity());
157 147
158 v8::MicrotasksScope::PerformCheckpoint(getScriptState()->isolate()); 148 v8::MicrotasksScope::PerformCheckpoint(scope.getScriptState()->isolate());
159 149
160 EXPECT_TRUE(buffer->isStreamLocked()); 150 EXPECT_TRUE(buffer->isStreamLocked());
161 EXPECT_TRUE(buffer->isStreamDisturbed()); 151 EXPECT_TRUE(buffer->isStreamDisturbed());
162 EXPECT_FALSE(buffer->hasPendingActivity()); 152 EXPECT_FALSE(buffer->hasPendingActivity());
163 153
164 new1->startLoading(FetchDataLoader::createLoaderAsString(), client1); 154 new1->startLoading(FetchDataLoader::createLoaderAsString(), client1);
165 checkpoint.Call(1); 155 checkpoint.Call(1);
166 testing::runPendingTasks(); 156 testing::runPendingTasks();
167 checkpoint.Call(2); 157 checkpoint.Call(2);
168 158
169 new2->startLoading(FetchDataLoader::createLoaderAsString(), client2); 159 new2->startLoading(FetchDataLoader::createLoaderAsString(), client2);
170 checkpoint.Call(3); 160 checkpoint.Call(3);
171 testing::runPendingTasks(); 161 testing::runPendingTasks();
172 checkpoint.Call(4); 162 checkpoint.Call(4);
173 } 163 }
174 164
175 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandle) 165 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandle)
176 { 166 {
167 V8TestingScope scope;
177 std::unique_ptr<BlobData> data = BlobData::create(); 168 std::unique_ptr<BlobData> data = BlobData::create();
178 data->appendText("hello", false); 169 data->appendText("hello", false);
179 auto size = data->length(); 170 auto size = data->length();
180 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(std::move(dat a), size); 171 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(std::move(dat a), size);
181 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchBlobD ataConsumerHandle::create(getExecutionContext(), blobDataHandle, new FakeLoaderF actory)); 172 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), Fetc hBlobDataConsumerHandle::create(scope.getExecutionContext(), blobDataHandle, new FakeLoaderFactory));
182 173
183 EXPECT_FALSE(buffer->isStreamLocked()); 174 EXPECT_FALSE(buffer->isStreamLocked());
184 EXPECT_FALSE(buffer->isStreamDisturbed()); 175 EXPECT_FALSE(buffer->isStreamDisturbed());
185 EXPECT_FALSE(buffer->hasPendingActivity()); 176 EXPECT_FALSE(buffer->hasPendingActivity());
186 RefPtr<BlobDataHandle> outputBlobDataHandle = buffer->drainAsBlobDataHandle( FetchDataConsumerHandle::Reader::AllowBlobWithInvalidSize); 177 RefPtr<BlobDataHandle> outputBlobDataHandle = buffer->drainAsBlobDataHandle( FetchDataConsumerHandle::Reader::AllowBlobWithInvalidSize);
187 178
188 EXPECT_TRUE(buffer->isStreamLocked()); 179 EXPECT_TRUE(buffer->isStreamLocked());
189 EXPECT_TRUE(buffer->isStreamDisturbed()); 180 EXPECT_TRUE(buffer->isStreamDisturbed());
190 EXPECT_FALSE(buffer->hasPendingActivity()); 181 EXPECT_FALSE(buffer->hasPendingActivity());
191 EXPECT_EQ(blobDataHandle, outputBlobDataHandle); 182 EXPECT_EQ(blobDataHandle, outputBlobDataHandle);
192 } 183 }
193 184
194 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandleReturnsNull) 185 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandleReturnsNull)
195 { 186 {
187 V8TestingScope scope;
196 // This handle is not drainable. 188 // This handle is not drainable.
197 std::unique_ptr<FetchDataConsumerHandle> handle = createFetchDataConsumerHan dleFromWebHandle(createWaitingDataConsumerHandle()); 189 std::unique_ptr<FetchDataConsumerHandle> handle = createFetchDataConsumerHan dleFromWebHandle(createWaitingDataConsumerHandle());
198 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move( handle)); 190 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std: :move(handle));
199 191
200 EXPECT_FALSE(buffer->isStreamLocked()); 192 EXPECT_FALSE(buffer->isStreamLocked());
201 EXPECT_FALSE(buffer->isStreamDisturbed()); 193 EXPECT_FALSE(buffer->isStreamDisturbed());
202 EXPECT_FALSE(buffer->hasPendingActivity()); 194 EXPECT_FALSE(buffer->hasPendingActivity());
203 195
204 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader:: AllowBlobWithInvalidSize)); 196 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader:: AllowBlobWithInvalidSize));
205 197
206 EXPECT_FALSE(buffer->isStreamLocked()); 198 EXPECT_FALSE(buffer->isStreamLocked());
207 EXPECT_FALSE(buffer->isStreamDisturbed()); 199 EXPECT_FALSE(buffer->isStreamDisturbed());
208 EXPECT_FALSE(buffer->hasPendingActivity()); 200 EXPECT_FALSE(buffer->hasPendingActivity());
209 } 201 }
210 202
211 TEST_F(BodyStreamBufferTest, DrainAsBlobFromBufferMadeFromBufferMadeFromStream) 203 TEST_F(BodyStreamBufferTest, DrainAsBlobFromBufferMadeFromBufferMadeFromStream)
212 { 204 {
213 ScriptState::Scope scope(getScriptState()); 205 V8TestingScope scope;
214 ScriptValue stream = evalWithPrintingError("new ReadableStream()"); 206 ScriptValue stream = evalWithPrintingError(scope.getScriptState(), "new Read ableStream()");
215 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), stream); 207 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), stre am);
216 208
217 EXPECT_FALSE(buffer->hasPendingActivity()); 209 EXPECT_FALSE(buffer->hasPendingActivity());
218 EXPECT_FALSE(buffer->isStreamLocked()); 210 EXPECT_FALSE(buffer->isStreamLocked());
219 EXPECT_FALSE(buffer->isStreamDisturbed()); 211 EXPECT_FALSE(buffer->isStreamDisturbed());
220 EXPECT_TRUE(buffer->isStreamReadable()); 212 EXPECT_TRUE(buffer->isStreamReadable());
221 213
222 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader:: AllowBlobWithInvalidSize)); 214 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader:: AllowBlobWithInvalidSize));
223 215
224 EXPECT_FALSE(buffer->hasPendingActivity()); 216 EXPECT_FALSE(buffer->hasPendingActivity());
225 EXPECT_FALSE(buffer->isStreamLocked()); 217 EXPECT_FALSE(buffer->isStreamLocked());
226 EXPECT_FALSE(buffer->isStreamDisturbed()); 218 EXPECT_FALSE(buffer->isStreamDisturbed());
227 EXPECT_TRUE(buffer->isStreamReadable()); 219 EXPECT_TRUE(buffer->isStreamReadable());
228 } 220 }
229 221
230 TEST_F(BodyStreamBufferTest, DrainAsFormData) 222 TEST_F(BodyStreamBufferTest, DrainAsFormData)
231 { 223 {
224 V8TestingScope scope;
232 FormData* data = FormData::create(UTF8Encoding()); 225 FormData* data = FormData::create(UTF8Encoding());
233 data->append("name1", "value1"); 226 data->append("name1", "value1");
234 data->append("name2", "value2"); 227 data->append("name2", "value2");
235 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData(); 228 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData();
236 229
237 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchFormD ataConsumerHandle::create(getExecutionContext(), inputFormData)); 230 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), Fetc hFormDataConsumerHandle::create(scope.getExecutionContext(), inputFormData));
238 231
239 EXPECT_FALSE(buffer->isStreamLocked()); 232 EXPECT_FALSE(buffer->isStreamLocked());
240 EXPECT_FALSE(buffer->isStreamDisturbed()); 233 EXPECT_FALSE(buffer->isStreamDisturbed());
241 EXPECT_FALSE(buffer->hasPendingActivity()); 234 EXPECT_FALSE(buffer->hasPendingActivity());
242 RefPtr<EncodedFormData> outputFormData = buffer->drainAsFormData(); 235 RefPtr<EncodedFormData> outputFormData = buffer->drainAsFormData();
243 236
244 EXPECT_TRUE(buffer->isStreamLocked()); 237 EXPECT_TRUE(buffer->isStreamLocked());
245 EXPECT_TRUE(buffer->isStreamDisturbed()); 238 EXPECT_TRUE(buffer->isStreamDisturbed());
246 EXPECT_FALSE(buffer->hasPendingActivity()); 239 EXPECT_FALSE(buffer->hasPendingActivity());
247 EXPECT_EQ(outputFormData->flattenToString(), inputFormData->flattenToString( )); 240 EXPECT_EQ(outputFormData->flattenToString(), inputFormData->flattenToString( ));
248 } 241 }
249 242
250 TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull) 243 TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull)
251 { 244 {
245 V8TestingScope scope;
252 // This handle is not drainable. 246 // This handle is not drainable.
253 std::unique_ptr<FetchDataConsumerHandle> handle = createFetchDataConsumerHan dleFromWebHandle(createWaitingDataConsumerHandle()); 247 std::unique_ptr<FetchDataConsumerHandle> handle = createFetchDataConsumerHan dleFromWebHandle(createWaitingDataConsumerHandle());
254 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move( handle)); 248 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std: :move(handle));
255 249
256 EXPECT_FALSE(buffer->isStreamLocked()); 250 EXPECT_FALSE(buffer->isStreamLocked());
257 EXPECT_FALSE(buffer->isStreamDisturbed()); 251 EXPECT_FALSE(buffer->isStreamDisturbed());
258 EXPECT_FALSE(buffer->hasPendingActivity()); 252 EXPECT_FALSE(buffer->hasPendingActivity());
259 253
260 EXPECT_FALSE(buffer->drainAsFormData()); 254 EXPECT_FALSE(buffer->drainAsFormData());
261 255
262 EXPECT_FALSE(buffer->isStreamLocked()); 256 EXPECT_FALSE(buffer->isStreamLocked());
263 EXPECT_FALSE(buffer->isStreamDisturbed()); 257 EXPECT_FALSE(buffer->isStreamDisturbed());
264 EXPECT_FALSE(buffer->hasPendingActivity()); 258 EXPECT_FALSE(buffer->hasPendingActivity());
265 } 259 }
266 260
267 TEST_F(BodyStreamBufferTest, DrainAsFormDataFromBufferMadeFromBufferMadeFromStre am) 261 TEST_F(BodyStreamBufferTest, DrainAsFormDataFromBufferMadeFromBufferMadeFromStre am)
268 { 262 {
269 ScriptState::Scope scope(getScriptState()); 263 V8TestingScope scope;
270 ScriptValue stream = evalWithPrintingError("new ReadableStream()"); 264 ScriptValue stream = evalWithPrintingError(scope.getScriptState(), "new Read ableStream()");
271 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), stream); 265 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), stre am);
272 266
273 EXPECT_FALSE(buffer->hasPendingActivity()); 267 EXPECT_FALSE(buffer->hasPendingActivity());
274 EXPECT_FALSE(buffer->isStreamLocked()); 268 EXPECT_FALSE(buffer->isStreamLocked());
275 EXPECT_FALSE(buffer->isStreamDisturbed()); 269 EXPECT_FALSE(buffer->isStreamDisturbed());
276 EXPECT_TRUE(buffer->isStreamReadable()); 270 EXPECT_TRUE(buffer->isStreamReadable());
277 271
278 EXPECT_FALSE(buffer->drainAsFormData()); 272 EXPECT_FALSE(buffer->drainAsFormData());
279 273
280 EXPECT_FALSE(buffer->hasPendingActivity()); 274 EXPECT_FALSE(buffer->hasPendingActivity());
281 EXPECT_FALSE(buffer->isStreamLocked()); 275 EXPECT_FALSE(buffer->isStreamLocked());
282 EXPECT_FALSE(buffer->isStreamDisturbed()); 276 EXPECT_FALSE(buffer->isStreamDisturbed());
283 EXPECT_TRUE(buffer->isStreamReadable()); 277 EXPECT_TRUE(buffer->isStreamReadable());
284 } 278 }
285 279
286 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) 280 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer)
287 { 281 {
282 V8TestingScope scope;
288 Checkpoint checkpoint; 283 Checkpoint checkpoint;
289 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 284 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
290 DOMArrayBuffer* arrayBuffer = nullptr; 285 DOMArrayBuffer* arrayBuffer = nullptr;
291 286
292 InSequence s; 287 InSequence s;
293 EXPECT_CALL(checkpoint, Call(1)); 288 EXPECT_CALL(checkpoint, Call(1));
294 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg< 0>(&arrayBuffer)); 289 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg< 0>(&arrayBuffer));
295 EXPECT_CALL(checkpoint, Call(2)); 290 EXPECT_CALL(checkpoint, Call(2));
296 291
297 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 292 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
298 handle->add(Command(Command::Data, "hello")); 293 handle->add(Command(Command::Data, "hello"));
299 handle->add(Command(Command::Done)); 294 handle->add(Command(Command::Done));
300 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(std::move(handle))); 295 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea teFetchDataConsumerHandleFromWebHandle(std::move(handle)));
301 buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client); 296 buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client);
302 297
303 EXPECT_TRUE(buffer->isStreamLocked()); 298 EXPECT_TRUE(buffer->isStreamLocked());
304 EXPECT_TRUE(buffer->isStreamDisturbed()); 299 EXPECT_TRUE(buffer->isStreamDisturbed());
305 EXPECT_TRUE(buffer->hasPendingActivity()); 300 EXPECT_TRUE(buffer->hasPendingActivity());
306 301
307 checkpoint.Call(1); 302 checkpoint.Call(1);
308 testing::runPendingTasks(); 303 testing::runPendingTasks();
309 checkpoint.Call(2); 304 checkpoint.Call(2);
310 305
311 EXPECT_TRUE(buffer->isStreamLocked()); 306 EXPECT_TRUE(buffer->isStreamLocked());
312 EXPECT_TRUE(buffer->isStreamDisturbed()); 307 EXPECT_TRUE(buffer->isStreamDisturbed());
313 EXPECT_FALSE(buffer->hasPendingActivity()); 308 EXPECT_FALSE(buffer->hasPendingActivity());
314 ASSERT_TRUE(arrayBuffer); 309 ASSERT_TRUE(arrayBuffer);
315 EXPECT_EQ("hello", String(static_cast<const char*>(arrayBuffer->data()), arr ayBuffer->byteLength())); 310 EXPECT_EQ("hello", String(static_cast<const char*>(arrayBuffer->data()), arr ayBuffer->byteLength()));
316 } 311 }
317 312
318 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsBlob) 313 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsBlob)
319 { 314 {
315 V8TestingScope scope;
320 Checkpoint checkpoint; 316 Checkpoint checkpoint;
321 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 317 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
322 RefPtr<BlobDataHandle> blobDataHandle; 318 RefPtr<BlobDataHandle> blobDataHandle;
323 319
324 InSequence s; 320 InSequence s;
325 EXPECT_CALL(checkpoint, Call(1)); 321 EXPECT_CALL(checkpoint, Call(1));
326 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0 >(&blobDataHandle)); 322 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0 >(&blobDataHandle));
327 EXPECT_CALL(checkpoint, Call(2)); 323 EXPECT_CALL(checkpoint, Call(2));
328 324
329 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 325 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
330 handle->add(Command(Command::Data, "hello")); 326 handle->add(Command(Command::Data, "hello"));
331 handle->add(Command(Command::Done)); 327 handle->add(Command(Command::Done));
332 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(std::move(handle))); 328 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea teFetchDataConsumerHandleFromWebHandle(std::move(handle)));
333 buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain") , client); 329 buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain") , client);
334 330
335 EXPECT_TRUE(buffer->isStreamLocked()); 331 EXPECT_TRUE(buffer->isStreamLocked());
336 EXPECT_TRUE(buffer->isStreamDisturbed()); 332 EXPECT_TRUE(buffer->isStreamDisturbed());
337 EXPECT_TRUE(buffer->hasPendingActivity()); 333 EXPECT_TRUE(buffer->hasPendingActivity());
338 334
339 checkpoint.Call(1); 335 checkpoint.Call(1);
340 testing::runPendingTasks(); 336 testing::runPendingTasks();
341 checkpoint.Call(2); 337 checkpoint.Call(2);
342 338
343 EXPECT_TRUE(buffer->isStreamLocked()); 339 EXPECT_TRUE(buffer->isStreamLocked());
344 EXPECT_TRUE(buffer->isStreamDisturbed()); 340 EXPECT_TRUE(buffer->isStreamDisturbed());
345 EXPECT_FALSE(buffer->hasPendingActivity()); 341 EXPECT_FALSE(buffer->hasPendingActivity());
346 EXPECT_EQ(5u, blobDataHandle->size()); 342 EXPECT_EQ(5u, blobDataHandle->size());
347 } 343 }
348 344
349 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) 345 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString)
350 { 346 {
347 V8TestingScope scope;
351 Checkpoint checkpoint; 348 Checkpoint checkpoint;
352 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 349 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
353 350
354 InSequence s; 351 InSequence s;
355 EXPECT_CALL(checkpoint, Call(1)); 352 EXPECT_CALL(checkpoint, Call(1));
356 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); 353 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello")));
357 EXPECT_CALL(checkpoint, Call(2)); 354 EXPECT_CALL(checkpoint, Call(2));
358 355
359 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 356 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
360 handle->add(Command(Command::Data, "hello")); 357 handle->add(Command(Command::Data, "hello"));
361 handle->add(Command(Command::Done)); 358 handle->add(Command(Command::Done));
362 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(std::move(handle))); 359 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea teFetchDataConsumerHandleFromWebHandle(std::move(handle)));
363 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); 360 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client);
364 361
365 EXPECT_TRUE(buffer->isStreamLocked()); 362 EXPECT_TRUE(buffer->isStreamLocked());
366 EXPECT_TRUE(buffer->isStreamDisturbed()); 363 EXPECT_TRUE(buffer->isStreamDisturbed());
367 EXPECT_TRUE(buffer->hasPendingActivity()); 364 EXPECT_TRUE(buffer->hasPendingActivity());
368 365
369 checkpoint.Call(1); 366 checkpoint.Call(1);
370 testing::runPendingTasks(); 367 testing::runPendingTasks();
371 checkpoint.Call(2); 368 checkpoint.Call(2);
372 369
373 EXPECT_TRUE(buffer->isStreamLocked()); 370 EXPECT_TRUE(buffer->isStreamLocked());
374 EXPECT_TRUE(buffer->isStreamDisturbed()); 371 EXPECT_TRUE(buffer->isStreamDisturbed());
375 EXPECT_FALSE(buffer->hasPendingActivity()); 372 EXPECT_FALSE(buffer->hasPendingActivity());
376 } 373 }
377 374
378 TEST_F(BodyStreamBufferTest, LoadClosedHandle) 375 TEST_F(BodyStreamBufferTest, LoadClosedHandle)
379 { 376 {
377 V8TestingScope scope;
380 Checkpoint checkpoint; 378 Checkpoint checkpoint;
381 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 379 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
382 380
383 InSequence s; 381 InSequence s;
384 EXPECT_CALL(checkpoint, Call(1)); 382 EXPECT_CALL(checkpoint, Call(1));
385 EXPECT_CALL(*client, didFetchDataLoadedString(String(""))); 383 EXPECT_CALL(*client, didFetchDataLoadedString(String("")));
386 EXPECT_CALL(checkpoint, Call(2)); 384 EXPECT_CALL(checkpoint, Call(2));
387 385
388 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle())); 386 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea teFetchDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle()));
389 387
390 EXPECT_TRUE(buffer->isStreamReadable()); 388 EXPECT_TRUE(buffer->isStreamReadable());
391 testing::runPendingTasks(); 389 testing::runPendingTasks();
392 EXPECT_TRUE(buffer->isStreamClosed()); 390 EXPECT_TRUE(buffer->isStreamClosed());
393 391
394 EXPECT_FALSE(buffer->isStreamLocked()); 392 EXPECT_FALSE(buffer->isStreamLocked());
395 EXPECT_FALSE(buffer->isStreamDisturbed()); 393 EXPECT_FALSE(buffer->isStreamDisturbed());
396 EXPECT_FALSE(buffer->hasPendingActivity()); 394 EXPECT_FALSE(buffer->hasPendingActivity());
397 395
398 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); 396 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client);
399 EXPECT_TRUE(buffer->isStreamLocked()); 397 EXPECT_TRUE(buffer->isStreamLocked());
400 EXPECT_TRUE(buffer->isStreamDisturbed()); 398 EXPECT_TRUE(buffer->isStreamDisturbed());
401 EXPECT_TRUE(buffer->hasPendingActivity()); 399 EXPECT_TRUE(buffer->hasPendingActivity());
402 400
403 checkpoint.Call(1); 401 checkpoint.Call(1);
404 testing::runPendingTasks(); 402 testing::runPendingTasks();
405 checkpoint.Call(2); 403 checkpoint.Call(2);
406 404
407 EXPECT_TRUE(buffer->isStreamLocked()); 405 EXPECT_TRUE(buffer->isStreamLocked());
408 EXPECT_TRUE(buffer->isStreamDisturbed()); 406 EXPECT_TRUE(buffer->isStreamDisturbed());
409 EXPECT_FALSE(buffer->hasPendingActivity()); 407 EXPECT_FALSE(buffer->hasPendingActivity());
410 } 408 }
411 409
412 TEST_F(BodyStreamBufferTest, LoadErroredHandle) 410 TEST_F(BodyStreamBufferTest, LoadErroredHandle)
413 { 411 {
412 V8TestingScope scope;
414 Checkpoint checkpoint; 413 Checkpoint checkpoint;
415 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 414 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
416 415
417 InSequence s; 416 InSequence s;
418 EXPECT_CALL(checkpoint, Call(1)); 417 EXPECT_CALL(checkpoint, Call(1));
419 EXPECT_CALL(*client, didFetchDataLoadFailed()); 418 EXPECT_CALL(*client, didFetchDataLoadFailed());
420 EXPECT_CALL(checkpoint, Call(2)); 419 EXPECT_CALL(checkpoint, Call(2));
421 420
422 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle())); 421 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea teFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle() ));
423 422
424 EXPECT_TRUE(buffer->isStreamReadable()); 423 EXPECT_TRUE(buffer->isStreamReadable());
425 testing::runPendingTasks(); 424 testing::runPendingTasks();
426 EXPECT_TRUE(buffer->isStreamErrored()); 425 EXPECT_TRUE(buffer->isStreamErrored());
427 426
428 EXPECT_FALSE(buffer->isStreamLocked()); 427 EXPECT_FALSE(buffer->isStreamLocked());
429 EXPECT_FALSE(buffer->isStreamDisturbed()); 428 EXPECT_FALSE(buffer->isStreamDisturbed());
430 EXPECT_FALSE(buffer->hasPendingActivity()); 429 EXPECT_FALSE(buffer->hasPendingActivity());
431 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); 430 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client);
432 EXPECT_TRUE(buffer->isStreamLocked()); 431 EXPECT_TRUE(buffer->isStreamLocked());
433 EXPECT_TRUE(buffer->isStreamDisturbed()); 432 EXPECT_TRUE(buffer->isStreamDisturbed());
434 EXPECT_TRUE(buffer->hasPendingActivity()); 433 EXPECT_TRUE(buffer->hasPendingActivity());
435 434
436 checkpoint.Call(1); 435 checkpoint.Call(1);
437 testing::runPendingTasks(); 436 testing::runPendingTasks();
438 checkpoint.Call(2); 437 checkpoint.Call(2);
439 438
440 EXPECT_TRUE(buffer->isStreamLocked()); 439 EXPECT_TRUE(buffer->isStreamLocked());
441 EXPECT_TRUE(buffer->isStreamDisturbed()); 440 EXPECT_TRUE(buffer->isStreamDisturbed());
442 EXPECT_FALSE(buffer->hasPendingActivity()); 441 EXPECT_FALSE(buffer->hasPendingActivity());
443 } 442 }
444 443
445 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) 444 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer)
446 { 445 {
446 V8TestingScope scope;
447 Checkpoint checkpoint; 447 Checkpoint checkpoint;
448 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 448 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
449 449
450 InSequence s; 450 InSequence s;
451 EXPECT_CALL(checkpoint, Call(1)); 451 EXPECT_CALL(checkpoint, Call(1));
452 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); 452 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello")));
453 EXPECT_CALL(checkpoint, Call(2)); 453 EXPECT_CALL(checkpoint, Call(2));
454 454
455 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 455 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
456 handle->add(Command(Command::Data, "hello")); 456 handle->add(Command(Command::Data, "hello"));
457 handle->add(Command(Command::Done)); 457 handle->add(Command(Command::Done));
458 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 458 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(scope.getScriptSt ate(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
459 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); 459 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client);
460 460
461 ThreadHeap::collectAllGarbage(); 461 ThreadHeap::collectAllGarbage();
462 checkpoint.Call(1); 462 checkpoint.Call(1);
463 testing::runPendingTasks(); 463 testing::runPendingTasks();
464 checkpoint.Call(2); 464 checkpoint.Call(2);
465 } 465 }
466 466
467 // TODO(hiroshige): Merge this class into MockFetchDataConsumerHandle. 467 // TODO(hiroshige): Merge this class into MockFetchDataConsumerHandle.
468 class MockFetchDataConsumerHandleWithMockDestructor : public DataConsumerHandleT estUtil::MockFetchDataConsumerHandle { 468 class MockFetchDataConsumerHandleWithMockDestructor : public DataConsumerHandleT estUtil::MockFetchDataConsumerHandle {
469 public: 469 public:
470 static std::unique_ptr<::testing::StrictMock<MockFetchDataConsumerHandleWith MockDestructor>> create() { return wrapUnique(new ::testing::StrictMock<MockFetc hDataConsumerHandleWithMockDestructor>); } 470 static std::unique_ptr<::testing::StrictMock<MockFetchDataConsumerHandleWith MockDestructor>> create() { return wrapUnique(new ::testing::StrictMock<MockFetc hDataConsumerHandleWithMockDestructor>); }
471 471
472 ~MockFetchDataConsumerHandleWithMockDestructor() override 472 ~MockFetchDataConsumerHandleWithMockDestructor() override
473 { 473 {
474 destruct(); 474 destruct();
475 } 475 }
476 476
477 MOCK_METHOD0(destruct, void()); 477 MOCK_METHOD0(destruct, void());
478 }; 478 };
479 479
480 TEST_F(BodyStreamBufferTest, SourceHandleAndReaderShouldBeDestructedWhenCanceled ) 480 TEST_F(BodyStreamBufferTest, SourceHandleAndReaderShouldBeDestructedWhenCanceled )
481 { 481 {
482 ScriptState::Scope scope(getScriptState()); 482 V8TestingScope scope;
483 using MockHandle = MockFetchDataConsumerHandleWithMockDestructor; 483 using MockHandle = MockFetchDataConsumerHandleWithMockDestructor;
484 using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader; 484 using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader;
485 std::unique_ptr<MockHandle> handle = MockHandle::create(); 485 std::unique_ptr<MockHandle> handle = MockHandle::create();
486 std::unique_ptr<MockReader> reader = MockReader::create(); 486 std::unique_ptr<MockReader> reader = MockReader::create();
487 487
488 Checkpoint checkpoint; 488 Checkpoint checkpoint;
489 InSequence s; 489 InSequence s;
490 490
491 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea der.get())); 491 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea der.get()));
492 EXPECT_CALL(checkpoint, Call(1)); 492 EXPECT_CALL(checkpoint, Call(1));
493 EXPECT_CALL(*reader, destruct()); 493 EXPECT_CALL(*reader, destruct());
494 EXPECT_CALL(*handle, destruct()); 494 EXPECT_CALL(*handle, destruct());
495 EXPECT_CALL(checkpoint, Call(2)); 495 EXPECT_CALL(checkpoint, Call(2));
496 496
497 // |reader| is adopted by |obtainReader|. 497 // |reader| is adopted by |obtainReader|.
498 ASSERT_TRUE(reader.release()); 498 ASSERT_TRUE(reader.release());
499 499
500 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move( handle)); 500 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std: :move(handle));
501 checkpoint.Call(1); 501 checkpoint.Call(1);
502 ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), " reason")); 502 ScriptValue reason(scope.getScriptState(), v8String(scope.getScriptState()-> isolate(), "reason"));
503 buffer->cancelSource(getScriptState(), reason); 503 buffer->cancelSource(scope.getScriptState(), reason);
504 checkpoint.Call(2); 504 checkpoint.Call(2);
505 } 505 }
506 506
507 } // namespace 507 } // namespace
508 508
509 } // namespace blink 509 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp ('k') | third_party/WebKit/Source/modules/fetch/FetchManager.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698