| 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 |