OLD | NEW |
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 "core/testing/DummyPageHolder.h" | 7 #include "core/testing/DummyPageHolder.h" |
8 #include "modules/fetch/DataConsumerHandleTestUtil.h" | 8 #include "modules/fetch/DataConsumerHandleTestUtil.h" |
9 #include "platform/testing/UnitTestHelpers.h" | 9 #include "platform/testing/UnitTestHelpers.h" |
10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 | 25 |
26 class BodyStreamBufferTest : public ::testing::Test { | 26 class BodyStreamBufferTest : public ::testing::Test { |
27 public: | 27 public: |
28 BodyStreamBufferTest() | 28 BodyStreamBufferTest() |
29 { | 29 { |
30 m_page = DummyPageHolder::create(IntSize(1, 1)); | 30 m_page = DummyPageHolder::create(IntSize(1, 1)); |
31 } | 31 } |
32 ~BodyStreamBufferTest() override {} | 32 ~BodyStreamBufferTest() override {} |
33 | 33 |
34 protected: | 34 protected: |
35 ScriptState* scriptState() { return ScriptState::forMainWorld(m_page->docume
nt().frame()); } | 35 ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->doc
ument().frame()); } |
36 ExecutionContext* executionContext() { return &m_page->document(); } | 36 ExecutionContext* getExecutionContext() { return &m_page->document(); } |
37 | 37 |
38 OwnPtr<DummyPageHolder> m_page; | 38 OwnPtr<DummyPageHolder> m_page; |
39 }; | 39 }; |
40 | 40 |
41 TEST_F(BodyStreamBufferTest, ReleaseHandle) | 41 TEST_F(BodyStreamBufferTest, ReleaseHandle) |
42 { | 42 { |
43 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe
bHandle(createWaitingDataConsumerHandle()); | 43 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe
bHandle(createWaitingDataConsumerHandle()); |
44 FetchDataConsumerHandle* rawHandle = handle.get(); | 44 FetchDataConsumerHandle* rawHandle = handle.get(); |
45 BodyStreamBuffer* buffer = new BodyStreamBuffer(handle.release()); | 45 BodyStreamBuffer* buffer = new BodyStreamBuffer(handle.release()); |
46 | 46 |
47 EXPECT_FALSE(buffer->hasPendingActivity()); | 47 EXPECT_FALSE(buffer->hasPendingActivity()); |
48 EXPECT_FALSE(buffer->stream()->isLocked()); | 48 EXPECT_FALSE(buffer->stream()->isLocked()); |
49 EXPECT_FALSE(buffer->stream()->isDisturbed()); | 49 EXPECT_FALSE(buffer->stream()->isDisturbed()); |
50 EXPECT_EQ(ReadableStream::Readable, buffer->stream()->stateInternal()); | 50 EXPECT_EQ(ReadableStream::Readable, buffer->stream()->stateInternal()); |
51 | 51 |
52 OwnPtr<FetchDataConsumerHandle> handle2 = buffer->releaseHandle(executionCon
text()); | 52 OwnPtr<FetchDataConsumerHandle> handle2 = buffer->releaseHandle(getExecution
Context()); |
53 | 53 |
54 ASSERT_EQ(rawHandle, handle2.get()); | 54 ASSERT_EQ(rawHandle, handle2.get()); |
55 EXPECT_TRUE(buffer->stream()->isLocked()); | 55 EXPECT_TRUE(buffer->stream()->isLocked()); |
56 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 56 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
57 EXPECT_EQ(ReadableStream::Closed, buffer->stream()->stateInternal()); | 57 EXPECT_EQ(ReadableStream::Closed, buffer->stream()->stateInternal()); |
58 } | 58 } |
59 | 59 |
60 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) | 60 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) |
61 { | 61 { |
62 Checkpoint checkpoint; | 62 Checkpoint checkpoint; |
63 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 63 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
64 RefPtr<DOMArrayBuffer> arrayBuffer; | 64 RefPtr<DOMArrayBuffer> arrayBuffer; |
65 | 65 |
66 InSequence s; | 66 InSequence s; |
67 EXPECT_CALL(checkpoint, Call(1)); | 67 EXPECT_CALL(checkpoint, Call(1)); |
68 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg<
0>(&arrayBuffer)); | 68 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg<
0>(&arrayBuffer)); |
69 EXPECT_CALL(checkpoint, Call(2)); | 69 EXPECT_CALL(checkpoint, Call(2)); |
70 | 70 |
71 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); | 71 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); |
72 handle->add(Command(Command::Data, "hello")); | 72 handle->add(Command(Command::Data, "hello")); |
73 handle->add(Command(Command::Done)); | 73 handle->add(Command(Command::Done)); |
74 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(handle.release())); | 74 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(handle.release())); |
75 buffer->startLoading(executionContext(), FetchDataLoader::createLoaderAsArra
yBuffer(), client); | 75 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsA
rrayBuffer(), client); |
76 | 76 |
77 EXPECT_TRUE(buffer->stream()->isLocked()); | 77 EXPECT_TRUE(buffer->stream()->isLocked()); |
78 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 78 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
79 EXPECT_TRUE(buffer->hasPendingActivity()); | 79 EXPECT_TRUE(buffer->hasPendingActivity()); |
80 | 80 |
81 checkpoint.Call(1); | 81 checkpoint.Call(1); |
82 testing::runPendingTasks(); | 82 testing::runPendingTasks(); |
83 checkpoint.Call(2); | 83 checkpoint.Call(2); |
84 | 84 |
85 EXPECT_TRUE(buffer->stream()->isLocked()); | 85 EXPECT_TRUE(buffer->stream()->isLocked()); |
(...skipping 11 matching lines...) Expand all Loading... |
97 | 97 |
98 InSequence s; | 98 InSequence s; |
99 EXPECT_CALL(checkpoint, Call(1)); | 99 EXPECT_CALL(checkpoint, Call(1)); |
100 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0
>(&blobDataHandle)); | 100 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0
>(&blobDataHandle)); |
101 EXPECT_CALL(checkpoint, Call(2)); | 101 EXPECT_CALL(checkpoint, Call(2)); |
102 | 102 |
103 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); | 103 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); |
104 handle->add(Command(Command::Data, "hello")); | 104 handle->add(Command(Command::Data, "hello")); |
105 handle->add(Command(Command::Done)); | 105 handle->add(Command(Command::Done)); |
106 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(handle.release())); | 106 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(handle.release())); |
107 buffer->startLoading(executionContext(), FetchDataLoader::createLoaderAsBlob
Handle("text/plain"), client); | 107 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsB
lobHandle("text/plain"), client); |
108 | 108 |
109 EXPECT_TRUE(buffer->stream()->isLocked()); | 109 EXPECT_TRUE(buffer->stream()->isLocked()); |
110 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 110 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
111 EXPECT_TRUE(buffer->hasPendingActivity()); | 111 EXPECT_TRUE(buffer->hasPendingActivity()); |
112 | 112 |
113 checkpoint.Call(1); | 113 checkpoint.Call(1); |
114 testing::runPendingTasks(); | 114 testing::runPendingTasks(); |
115 checkpoint.Call(2); | 115 checkpoint.Call(2); |
116 | 116 |
117 EXPECT_TRUE(buffer->stream()->isLocked()); | 117 EXPECT_TRUE(buffer->stream()->isLocked()); |
118 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 118 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
119 EXPECT_FALSE(buffer->hasPendingActivity()); | 119 EXPECT_FALSE(buffer->hasPendingActivity()); |
120 EXPECT_EQ(5u, blobDataHandle->size()); | 120 EXPECT_EQ(5u, blobDataHandle->size()); |
121 } | 121 } |
122 | 122 |
123 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) | 123 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) |
124 { | 124 { |
125 Checkpoint checkpoint; | 125 Checkpoint checkpoint; |
126 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 126 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
127 | 127 |
128 InSequence s; | 128 InSequence s; |
129 EXPECT_CALL(checkpoint, Call(1)); | 129 EXPECT_CALL(checkpoint, Call(1)); |
130 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); | 130 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); |
131 EXPECT_CALL(checkpoint, Call(2)); | 131 EXPECT_CALL(checkpoint, Call(2)); |
132 | 132 |
133 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); | 133 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); |
134 handle->add(Command(Command::Data, "hello")); | 134 handle->add(Command(Command::Data, "hello")); |
135 handle->add(Command(Command::Done)); | 135 handle->add(Command(Command::Done)); |
136 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(handle.release())); | 136 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(handle.release())); |
137 buffer->startLoading(executionContext(), FetchDataLoader::createLoaderAsStri
ng(), client); | 137 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS
tring(), client); |
138 | 138 |
139 EXPECT_TRUE(buffer->stream()->isLocked()); | 139 EXPECT_TRUE(buffer->stream()->isLocked()); |
140 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 140 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
141 EXPECT_TRUE(buffer->hasPendingActivity()); | 141 EXPECT_TRUE(buffer->hasPendingActivity()); |
142 | 142 |
143 checkpoint.Call(1); | 143 checkpoint.Call(1); |
144 testing::runPendingTasks(); | 144 testing::runPendingTasks(); |
145 checkpoint.Call(2); | 145 checkpoint.Call(2); |
146 | 146 |
147 EXPECT_TRUE(buffer->stream()->isLocked()); | 147 EXPECT_TRUE(buffer->stream()->isLocked()); |
148 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 148 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
149 EXPECT_FALSE(buffer->hasPendingActivity()); | 149 EXPECT_FALSE(buffer->hasPendingActivity()); |
150 } | 150 } |
151 | 151 |
152 TEST_F(BodyStreamBufferTest, ReleaseClosedHandle) | 152 TEST_F(BodyStreamBufferTest, ReleaseClosedHandle) |
153 { | 153 { |
154 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(createDoneDataConsumerHandle())); | 154 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(createDoneDataConsumerHandle())); |
155 | 155 |
156 EXPECT_EQ(ReadableStream::Readable, buffer->stream()->stateInternal()); | 156 EXPECT_EQ(ReadableStream::Readable, buffer->stream()->stateInternal()); |
157 testing::runPendingTasks(); | 157 testing::runPendingTasks(); |
158 EXPECT_EQ(ReadableStream::Closed, buffer->stream()->stateInternal()); | 158 EXPECT_EQ(ReadableStream::Closed, buffer->stream()->stateInternal()); |
159 | 159 |
160 EXPECT_FALSE(buffer->stream()->isLocked()); | 160 EXPECT_FALSE(buffer->stream()->isLocked()); |
161 EXPECT_FALSE(buffer->stream()->isDisturbed()); | 161 EXPECT_FALSE(buffer->stream()->isDisturbed()); |
162 EXPECT_FALSE(buffer->hasPendingActivity()); | 162 EXPECT_FALSE(buffer->hasPendingActivity()); |
163 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle(executionCont
ext()); | 163 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle(getExecutionC
ontext()); |
164 | 164 |
165 EXPECT_TRUE(handle); | 165 EXPECT_TRUE(handle); |
166 EXPECT_TRUE(buffer->stream()->isLocked()); | 166 EXPECT_TRUE(buffer->stream()->isLocked()); |
167 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 167 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
168 EXPECT_FALSE(buffer->hasPendingActivity()); | 168 EXPECT_FALSE(buffer->hasPendingActivity()); |
169 } | 169 } |
170 | 170 |
171 TEST_F(BodyStreamBufferTest, LoadClosedHandle) | 171 TEST_F(BodyStreamBufferTest, LoadClosedHandle) |
172 { | 172 { |
173 Checkpoint checkpoint; | 173 Checkpoint checkpoint; |
174 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 174 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
175 | 175 |
176 InSequence s; | 176 InSequence s; |
177 EXPECT_CALL(checkpoint, Call(1)); | 177 EXPECT_CALL(checkpoint, Call(1)); |
178 EXPECT_CALL(*client, didFetchDataLoadedString(String(""))); | 178 EXPECT_CALL(*client, didFetchDataLoadedString(String(""))); |
179 EXPECT_CALL(checkpoint, Call(2)); | 179 EXPECT_CALL(checkpoint, Call(2)); |
180 | 180 |
181 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(createDoneDataConsumerHandle())); | 181 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(createDoneDataConsumerHandle())); |
182 | 182 |
183 EXPECT_EQ(ReadableStream::Readable, buffer->stream()->stateInternal()); | 183 EXPECT_EQ(ReadableStream::Readable, buffer->stream()->stateInternal()); |
184 testing::runPendingTasks(); | 184 testing::runPendingTasks(); |
185 EXPECT_EQ(ReadableStream::Closed, buffer->stream()->stateInternal()); | 185 EXPECT_EQ(ReadableStream::Closed, buffer->stream()->stateInternal()); |
186 | 186 |
187 EXPECT_FALSE(buffer->stream()->isLocked()); | 187 EXPECT_FALSE(buffer->stream()->isLocked()); |
188 EXPECT_FALSE(buffer->stream()->isDisturbed()); | 188 EXPECT_FALSE(buffer->stream()->isDisturbed()); |
189 EXPECT_FALSE(buffer->hasPendingActivity()); | 189 EXPECT_FALSE(buffer->hasPendingActivity()); |
190 | 190 |
191 buffer->startLoading(executionContext(), FetchDataLoader::createLoaderAsStri
ng(), client); | 191 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS
tring(), client); |
192 EXPECT_TRUE(buffer->stream()->isLocked()); | 192 EXPECT_TRUE(buffer->stream()->isLocked()); |
193 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 193 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
194 EXPECT_TRUE(buffer->hasPendingActivity()); | 194 EXPECT_TRUE(buffer->hasPendingActivity()); |
195 | 195 |
196 checkpoint.Call(1); | 196 checkpoint.Call(1); |
197 testing::runPendingTasks(); | 197 testing::runPendingTasks(); |
198 checkpoint.Call(2); | 198 checkpoint.Call(2); |
199 | 199 |
200 EXPECT_TRUE(buffer->stream()->isLocked()); | 200 EXPECT_TRUE(buffer->stream()->isLocked()); |
201 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 201 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
202 EXPECT_FALSE(buffer->hasPendingActivity()); | 202 EXPECT_FALSE(buffer->hasPendingActivity()); |
203 } | 203 } |
204 | 204 |
205 TEST_F(BodyStreamBufferTest, ReleaseErroredHandle) | 205 TEST_F(BodyStreamBufferTest, ReleaseErroredHandle) |
206 { | 206 { |
207 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(createUnexpectedErrorDataConsumerHandle())); | 207 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(createUnexpectedErrorDataConsumerHandle())); |
208 | 208 |
209 EXPECT_EQ(ReadableStream::Readable, buffer->stream()->stateInternal()); | 209 EXPECT_EQ(ReadableStream::Readable, buffer->stream()->stateInternal()); |
210 testing::runPendingTasks(); | 210 testing::runPendingTasks(); |
211 EXPECT_EQ(ReadableStream::Errored, buffer->stream()->stateInternal()); | 211 EXPECT_EQ(ReadableStream::Errored, buffer->stream()->stateInternal()); |
212 | 212 |
213 EXPECT_FALSE(buffer->stream()->isLocked()); | 213 EXPECT_FALSE(buffer->stream()->isLocked()); |
214 EXPECT_FALSE(buffer->stream()->isDisturbed()); | 214 EXPECT_FALSE(buffer->stream()->isDisturbed()); |
215 EXPECT_FALSE(buffer->hasPendingActivity()); | 215 EXPECT_FALSE(buffer->hasPendingActivity()); |
216 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle(executionCont
ext()); | 216 OwnPtr<FetchDataConsumerHandle> handle = buffer->releaseHandle(getExecutionC
ontext()); |
217 EXPECT_TRUE(handle); | 217 EXPECT_TRUE(handle); |
218 EXPECT_TRUE(buffer->stream()->isLocked()); | 218 EXPECT_TRUE(buffer->stream()->isLocked()); |
219 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 219 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
220 EXPECT_FALSE(buffer->hasPendingActivity()); | 220 EXPECT_FALSE(buffer->hasPendingActivity()); |
221 } | 221 } |
222 | 222 |
223 TEST_F(BodyStreamBufferTest, LoadErroredHandle) | 223 TEST_F(BodyStreamBufferTest, LoadErroredHandle) |
224 { | 224 { |
225 Checkpoint checkpoint; | 225 Checkpoint checkpoint; |
226 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 226 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
227 | 227 |
228 InSequence s; | 228 InSequence s; |
229 EXPECT_CALL(checkpoint, Call(1)); | 229 EXPECT_CALL(checkpoint, Call(1)); |
230 EXPECT_CALL(*client, didFetchDataLoadFailed()); | 230 EXPECT_CALL(*client, didFetchDataLoadFailed()); |
231 EXPECT_CALL(checkpoint, Call(2)); | 231 EXPECT_CALL(checkpoint, Call(2)); |
232 | 232 |
233 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(createUnexpectedErrorDataConsumerHandle())); | 233 BodyStreamBuffer* buffer = new BodyStreamBuffer(createFetchDataConsumerHandl
eFromWebHandle(createUnexpectedErrorDataConsumerHandle())); |
234 | 234 |
235 EXPECT_EQ(ReadableStream::Readable, buffer->stream()->stateInternal()); | 235 EXPECT_EQ(ReadableStream::Readable, buffer->stream()->stateInternal()); |
236 testing::runPendingTasks(); | 236 testing::runPendingTasks(); |
237 EXPECT_EQ(ReadableStream::Errored, buffer->stream()->stateInternal()); | 237 EXPECT_EQ(ReadableStream::Errored, buffer->stream()->stateInternal()); |
238 | 238 |
239 EXPECT_FALSE(buffer->stream()->isLocked()); | 239 EXPECT_FALSE(buffer->stream()->isLocked()); |
240 EXPECT_FALSE(buffer->stream()->isDisturbed()); | 240 EXPECT_FALSE(buffer->stream()->isDisturbed()); |
241 EXPECT_FALSE(buffer->hasPendingActivity()); | 241 EXPECT_FALSE(buffer->hasPendingActivity()); |
242 buffer->startLoading(executionContext(), FetchDataLoader::createLoaderAsStri
ng(), client); | 242 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS
tring(), client); |
243 EXPECT_TRUE(buffer->stream()->isLocked()); | 243 EXPECT_TRUE(buffer->stream()->isLocked()); |
244 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 244 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
245 EXPECT_TRUE(buffer->hasPendingActivity()); | 245 EXPECT_TRUE(buffer->hasPendingActivity()); |
246 | 246 |
247 checkpoint.Call(1); | 247 checkpoint.Call(1); |
248 testing::runPendingTasks(); | 248 testing::runPendingTasks(); |
249 checkpoint.Call(2); | 249 checkpoint.Call(2); |
250 | 250 |
251 EXPECT_TRUE(buffer->stream()->isLocked()); | 251 EXPECT_TRUE(buffer->stream()->isLocked()); |
252 EXPECT_TRUE(buffer->stream()->isDisturbed()); | 252 EXPECT_TRUE(buffer->stream()->isDisturbed()); |
253 EXPECT_FALSE(buffer->hasPendingActivity()); | 253 EXPECT_FALSE(buffer->hasPendingActivity()); |
254 } | 254 } |
255 | 255 |
256 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) | 256 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) |
257 { | 257 { |
258 Checkpoint checkpoint; | 258 Checkpoint checkpoint; |
259 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 259 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
260 | 260 |
261 InSequence s; | 261 InSequence s; |
262 EXPECT_CALL(checkpoint, Call(1)); | 262 EXPECT_CALL(checkpoint, Call(1)); |
263 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); | 263 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); |
264 EXPECT_CALL(checkpoint, Call(2)); | 264 EXPECT_CALL(checkpoint, Call(2)); |
265 | 265 |
266 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); | 266 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); |
267 handle->add(Command(Command::Data, "hello")); | 267 handle->add(Command(Command::Data, "hello")); |
268 handle->add(Command(Command::Done)); | 268 handle->add(Command(Command::Done)); |
269 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(createFetchDataCo
nsumerHandleFromWebHandle(handle.release())); | 269 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(createFetchDataCo
nsumerHandleFromWebHandle(handle.release())); |
270 buffer->startLoading(executionContext(), FetchDataLoader::createLoaderAsStri
ng(), client); | 270 buffer->startLoading(getExecutionContext(), FetchDataLoader::createLoaderAsS
tring(), client); |
271 | 271 |
272 Heap::collectAllGarbage(); | 272 Heap::collectAllGarbage(); |
273 checkpoint.Call(1); | 273 checkpoint.Call(1); |
274 testing::runPendingTasks(); | 274 testing::runPendingTasks(); |
275 checkpoint.Call(2); | 275 checkpoint.Call(2); |
276 } | 276 } |
277 | 277 |
278 // TODO(hiroshige): Merge this class into MockFetchDataConsumerHandle. | 278 // TODO(hiroshige): Merge this class into MockFetchDataConsumerHandle. |
279 class MockFetchDataConsumerHandleWithMockDestructor : public DataConsumerHandleT
estUtil::MockFetchDataConsumerHandle { | 279 class MockFetchDataConsumerHandleWithMockDestructor : public DataConsumerHandleT
estUtil::MockFetchDataConsumerHandle { |
280 public: | 280 public: |
281 static PassOwnPtr<::testing::StrictMock<MockFetchDataConsumerHandleWithMockD
estructor>> create() { return adoptPtr(new ::testing::StrictMock<MockFetchDataCo
nsumerHandleWithMockDestructor>); } | 281 static PassOwnPtr<::testing::StrictMock<MockFetchDataConsumerHandleWithMockD
estructor>> create() { return adoptPtr(new ::testing::StrictMock<MockFetchDataCo
nsumerHandleWithMockDestructor>); } |
282 | 282 |
283 ~MockFetchDataConsumerHandleWithMockDestructor() override | 283 ~MockFetchDataConsumerHandleWithMockDestructor() override |
284 { | 284 { |
285 destruct(); | 285 destruct(); |
286 } | 286 } |
287 | 287 |
288 MOCK_METHOD0(destruct, void()); | 288 MOCK_METHOD0(destruct, void()); |
289 }; | 289 }; |
290 | 290 |
291 TEST_F(BodyStreamBufferTest, SourceHandleAndReaderShouldBeDestructedWhenCanceled
) | 291 TEST_F(BodyStreamBufferTest, SourceHandleAndReaderShouldBeDestructedWhenCanceled
) |
292 { | 292 { |
293 ScriptState::Scope scope(scriptState()); | 293 ScriptState::Scope scope(getScriptState()); |
294 using MockHandle = MockFetchDataConsumerHandleWithMockDestructor; | 294 using MockHandle = MockFetchDataConsumerHandleWithMockDestructor; |
295 using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader; | 295 using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader; |
296 OwnPtr<MockHandle> handle = MockHandle::create(); | 296 OwnPtr<MockHandle> handle = MockHandle::create(); |
297 OwnPtr<MockReader> reader = MockReader::create(); | 297 OwnPtr<MockReader> reader = MockReader::create(); |
298 | 298 |
299 Checkpoint checkpoint; | 299 Checkpoint checkpoint; |
300 InSequence s; | 300 InSequence s; |
301 | 301 |
302 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea
der.get())); | 302 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea
der.get())); |
303 EXPECT_CALL(checkpoint, Call(1)); | 303 EXPECT_CALL(checkpoint, Call(1)); |
304 EXPECT_CALL(*reader, destruct()); | 304 EXPECT_CALL(*reader, destruct()); |
305 EXPECT_CALL(*handle, destruct()); | 305 EXPECT_CALL(*handle, destruct()); |
306 EXPECT_CALL(checkpoint, Call(2)); | 306 EXPECT_CALL(checkpoint, Call(2)); |
307 | 307 |
308 // |reader| is adopted by |obtainReader|. | 308 // |reader| is adopted by |obtainReader|. |
309 ASSERT_TRUE(reader.leakPtr()); | 309 ASSERT_TRUE(reader.leakPtr()); |
310 | 310 |
311 BodyStreamBuffer* buffer = new BodyStreamBuffer(handle.release()); | 311 BodyStreamBuffer* buffer = new BodyStreamBuffer(handle.release()); |
312 checkpoint.Call(1); | 312 checkpoint.Call(1); |
313 ScriptValue reason(scriptState(), v8String(scriptState()->isolate(), "reason
")); | 313 ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), "
reason")); |
314 buffer->cancelSource(scriptState(), reason); | 314 buffer->cancelSource(getScriptState(), reason); |
315 checkpoint.Call(2); | 315 checkpoint.Call(2); |
316 } | 316 } |
317 | 317 |
318 } // namespace | 318 } // namespace |
319 | 319 |
320 } // namespace blink | 320 } // namespace blink |
OLD | NEW |