| 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/html/FormData.h" | 7 #include "core/html/FormData.h" |
| 8 #include "core/testing/DummyPageHolder.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" |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->doc
ument().frame()); } | 50 ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->doc
ument().frame()); } |
| 51 ExecutionContext* getExecutionContext() { return &m_page->document(); } | 51 ExecutionContext* getExecutionContext() { return &m_page->document(); } |
| 52 | 52 |
| 53 OwnPtr<DummyPageHolder> m_page; | 53 OwnPtr<DummyPageHolder> m_page; |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 TEST_F(BodyStreamBufferTest, ReleaseHandle) | 56 TEST_F(BodyStreamBufferTest, ReleaseHandle) |
| 57 { | 57 { |
| 58 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe
bHandle(createWaitingDataConsumerHandle()); | 58 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe
bHandle(createWaitingDataConsumerHandle()); |
| 59 FetchDataConsumerHandle* rawHandle = handle.get(); | 59 FetchDataConsumerHandle* rawHandle = handle.get(); |
| 60 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), handle.rel
ease()); | 60 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move(
handle)); |
| 61 | 61 |
| 62 EXPECT_FALSE(buffer->hasPendingActivity()); | 62 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 63 EXPECT_FALSE(buffer->isStreamLocked()); | 63 EXPECT_FALSE(buffer->isStreamLocked()); |
| 64 EXPECT_FALSE(buffer->isStreamDisturbed()); | 64 EXPECT_FALSE(buffer->isStreamDisturbed()); |
| 65 EXPECT_TRUE(buffer->isStreamReadable()); | 65 EXPECT_TRUE(buffer->isStreamReadable()); |
| 66 | 66 |
| 67 OwnPtr<FetchDataConsumerHandle> handle2 = buffer->releaseHandle(); | 67 OwnPtr<FetchDataConsumerHandle> handle2 = buffer->releaseHandle(); |
| 68 | 68 |
| 69 ASSERT_EQ(rawHandle, handle2.get()); | 69 ASSERT_EQ(rawHandle, handle2.get()); |
| 70 EXPECT_TRUE(buffer->isStreamLocked()); | 70 EXPECT_TRUE(buffer->isStreamLocked()); |
| 71 EXPECT_TRUE(buffer->isStreamDisturbed()); | 71 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 72 EXPECT_TRUE(buffer->isStreamClosed()); | 72 EXPECT_TRUE(buffer->isStreamClosed()); |
| 73 } | 73 } |
| 74 | 74 |
| 75 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandle) | 75 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandle) |
| 76 { | 76 { |
| 77 OwnPtr<BlobData> data = BlobData::create(); | 77 OwnPtr<BlobData> data = BlobData::create(); |
| 78 data->appendText("hello", false); | 78 data->appendText("hello", false); |
| 79 auto size = data->length(); | 79 auto size = data->length(); |
| 80 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(data.release(
), size); | 80 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(std::move(dat
a), size); |
| 81 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchBlobD
ataConsumerHandle::create(getExecutionContext(), blobDataHandle, new FakeLoaderF
actory)); | 81 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchBlobD
ataConsumerHandle::create(getExecutionContext(), blobDataHandle, new FakeLoaderF
actory)); |
| 82 | 82 |
| 83 EXPECT_FALSE(buffer->isStreamLocked()); | 83 EXPECT_FALSE(buffer->isStreamLocked()); |
| 84 EXPECT_FALSE(buffer->isStreamDisturbed()); | 84 EXPECT_FALSE(buffer->isStreamDisturbed()); |
| 85 EXPECT_FALSE(buffer->hasPendingActivity()); | 85 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 86 RefPtr<BlobDataHandle> outputBlobDataHandle = buffer->drainAsBlobDataHandle(
FetchDataConsumerHandle::Reader::AllowBlobWithInvalidSize); | 86 RefPtr<BlobDataHandle> outputBlobDataHandle = buffer->drainAsBlobDataHandle(
FetchDataConsumerHandle::Reader::AllowBlobWithInvalidSize); |
| 87 | 87 |
| 88 EXPECT_TRUE(buffer->isStreamLocked()); | 88 EXPECT_TRUE(buffer->isStreamLocked()); |
| 89 EXPECT_TRUE(buffer->isStreamDisturbed()); | 89 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 90 EXPECT_FALSE(buffer->hasPendingActivity()); | 90 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 91 EXPECT_EQ(blobDataHandle, outputBlobDataHandle); | 91 EXPECT_EQ(blobDataHandle, outputBlobDataHandle); |
| 92 } | 92 } |
| 93 | 93 |
| 94 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandleReturnsNull) | 94 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandleReturnsNull) |
| 95 { | 95 { |
| 96 // This handle is not drainable. | 96 // This handle is not drainable. |
| 97 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe
bHandle(createWaitingDataConsumerHandle()); | 97 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe
bHandle(createWaitingDataConsumerHandle()); |
| 98 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), handle.rel
ease()); | 98 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move(
handle)); |
| 99 | 99 |
| 100 EXPECT_FALSE(buffer->isStreamLocked()); | 100 EXPECT_FALSE(buffer->isStreamLocked()); |
| 101 EXPECT_FALSE(buffer->isStreamDisturbed()); | 101 EXPECT_FALSE(buffer->isStreamDisturbed()); |
| 102 EXPECT_FALSE(buffer->hasPendingActivity()); | 102 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 103 | 103 |
| 104 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::
AllowBlobWithInvalidSize)); | 104 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::
AllowBlobWithInvalidSize)); |
| 105 | 105 |
| 106 EXPECT_FALSE(buffer->isStreamLocked()); | 106 EXPECT_FALSE(buffer->isStreamLocked()); |
| 107 EXPECT_FALSE(buffer->isStreamDisturbed()); | 107 EXPECT_FALSE(buffer->isStreamDisturbed()); |
| 108 EXPECT_FALSE(buffer->hasPendingActivity()); | 108 EXPECT_FALSE(buffer->hasPendingActivity()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 125 EXPECT_TRUE(buffer->isStreamLocked()); | 125 EXPECT_TRUE(buffer->isStreamLocked()); |
| 126 EXPECT_TRUE(buffer->isStreamDisturbed()); | 126 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 127 EXPECT_FALSE(buffer->hasPendingActivity()); | 127 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 128 EXPECT_EQ(outputFormData->flattenToString(), inputFormData->flattenToString(
)); | 128 EXPECT_EQ(outputFormData->flattenToString(), inputFormData->flattenToString(
)); |
| 129 } | 129 } |
| 130 | 130 |
| 131 TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull) | 131 TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull) |
| 132 { | 132 { |
| 133 // This handle is not drainable. | 133 // This handle is not drainable. |
| 134 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe
bHandle(createWaitingDataConsumerHandle()); | 134 OwnPtr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWe
bHandle(createWaitingDataConsumerHandle()); |
| 135 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), handle.rel
ease()); | 135 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move(
handle)); |
| 136 | 136 |
| 137 EXPECT_FALSE(buffer->isStreamLocked()); | 137 EXPECT_FALSE(buffer->isStreamLocked()); |
| 138 EXPECT_FALSE(buffer->isStreamDisturbed()); | 138 EXPECT_FALSE(buffer->isStreamDisturbed()); |
| 139 EXPECT_FALSE(buffer->hasPendingActivity()); | 139 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 140 | 140 |
| 141 EXPECT_FALSE(buffer->drainAsFormData()); | 141 EXPECT_FALSE(buffer->drainAsFormData()); |
| 142 | 142 |
| 143 EXPECT_FALSE(buffer->isStreamLocked()); | 143 EXPECT_FALSE(buffer->isStreamLocked()); |
| 144 EXPECT_FALSE(buffer->isStreamDisturbed()); | 144 EXPECT_FALSE(buffer->isStreamDisturbed()); |
| 145 EXPECT_FALSE(buffer->hasPendingActivity()); | 145 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 146 } | 146 } |
| 147 | 147 |
| 148 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) | 148 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) |
| 149 { | 149 { |
| 150 Checkpoint checkpoint; | 150 Checkpoint checkpoint; |
| 151 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 151 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 152 DOMArrayBuffer* arrayBuffer = nullptr; | 152 DOMArrayBuffer* arrayBuffer = nullptr; |
| 153 | 153 |
| 154 InSequence s; | 154 InSequence s; |
| 155 EXPECT_CALL(checkpoint, Call(1)); | 155 EXPECT_CALL(checkpoint, Call(1)); |
| 156 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg<
0>(&arrayBuffer)); | 156 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg<
0>(&arrayBuffer)); |
| 157 EXPECT_CALL(checkpoint, Call(2)); | 157 EXPECT_CALL(checkpoint, Call(2)); |
| 158 | 158 |
| 159 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); | 159 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 160 handle->add(Command(Command::Data, "hello")); | 160 handle->add(Command(Command::Data, "hello")); |
| 161 handle->add(Command(Command::Done)); | 161 handle->add(Command(Command::Done)); |
| 162 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc
hDataConsumerHandleFromWebHandle(handle.release())); | 162 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc
hDataConsumerHandleFromWebHandle(std::move(handle))); |
| 163 buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client); | 163 buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client); |
| 164 | 164 |
| 165 EXPECT_TRUE(buffer->isStreamLocked()); | 165 EXPECT_TRUE(buffer->isStreamLocked()); |
| 166 EXPECT_TRUE(buffer->isStreamDisturbed()); | 166 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 167 EXPECT_TRUE(buffer->hasPendingActivity()); | 167 EXPECT_TRUE(buffer->hasPendingActivity()); |
| 168 | 168 |
| 169 checkpoint.Call(1); | 169 checkpoint.Call(1); |
| 170 testing::runPendingTasks(); | 170 testing::runPendingTasks(); |
| 171 checkpoint.Call(2); | 171 checkpoint.Call(2); |
| 172 | 172 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 184 RefPtr<BlobDataHandle> blobDataHandle; | 184 RefPtr<BlobDataHandle> blobDataHandle; |
| 185 | 185 |
| 186 InSequence s; | 186 InSequence s; |
| 187 EXPECT_CALL(checkpoint, Call(1)); | 187 EXPECT_CALL(checkpoint, Call(1)); |
| 188 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0
>(&blobDataHandle)); | 188 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0
>(&blobDataHandle)); |
| 189 EXPECT_CALL(checkpoint, Call(2)); | 189 EXPECT_CALL(checkpoint, Call(2)); |
| 190 | 190 |
| 191 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); | 191 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 192 handle->add(Command(Command::Data, "hello")); | 192 handle->add(Command(Command::Data, "hello")); |
| 193 handle->add(Command(Command::Done)); | 193 handle->add(Command(Command::Done)); |
| 194 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc
hDataConsumerHandleFromWebHandle(handle.release())); | 194 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc
hDataConsumerHandleFromWebHandle(std::move(handle))); |
| 195 buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain")
, client); | 195 buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain")
, client); |
| 196 | 196 |
| 197 EXPECT_TRUE(buffer->isStreamLocked()); | 197 EXPECT_TRUE(buffer->isStreamLocked()); |
| 198 EXPECT_TRUE(buffer->isStreamDisturbed()); | 198 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 199 EXPECT_TRUE(buffer->hasPendingActivity()); | 199 EXPECT_TRUE(buffer->hasPendingActivity()); |
| 200 | 200 |
| 201 checkpoint.Call(1); | 201 checkpoint.Call(1); |
| 202 testing::runPendingTasks(); | 202 testing::runPendingTasks(); |
| 203 checkpoint.Call(2); | 203 checkpoint.Call(2); |
| 204 | 204 |
| 205 EXPECT_TRUE(buffer->isStreamLocked()); | 205 EXPECT_TRUE(buffer->isStreamLocked()); |
| 206 EXPECT_TRUE(buffer->isStreamDisturbed()); | 206 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 207 EXPECT_FALSE(buffer->hasPendingActivity()); | 207 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 208 EXPECT_EQ(5u, blobDataHandle->size()); | 208 EXPECT_EQ(5u, blobDataHandle->size()); |
| 209 } | 209 } |
| 210 | 210 |
| 211 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) | 211 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) |
| 212 { | 212 { |
| 213 Checkpoint checkpoint; | 213 Checkpoint checkpoint; |
| 214 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 214 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 215 | 215 |
| 216 InSequence s; | 216 InSequence s; |
| 217 EXPECT_CALL(checkpoint, Call(1)); | 217 EXPECT_CALL(checkpoint, Call(1)); |
| 218 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); | 218 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); |
| 219 EXPECT_CALL(checkpoint, Call(2)); | 219 EXPECT_CALL(checkpoint, Call(2)); |
| 220 | 220 |
| 221 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); | 221 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 222 handle->add(Command(Command::Data, "hello")); | 222 handle->add(Command(Command::Data, "hello")); |
| 223 handle->add(Command(Command::Done)); | 223 handle->add(Command(Command::Done)); |
| 224 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc
hDataConsumerHandleFromWebHandle(handle.release())); | 224 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc
hDataConsumerHandleFromWebHandle(std::move(handle))); |
| 225 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); | 225 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); |
| 226 | 226 |
| 227 EXPECT_TRUE(buffer->isStreamLocked()); | 227 EXPECT_TRUE(buffer->isStreamLocked()); |
| 228 EXPECT_TRUE(buffer->isStreamDisturbed()); | 228 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 229 EXPECT_TRUE(buffer->hasPendingActivity()); | 229 EXPECT_TRUE(buffer->hasPendingActivity()); |
| 230 | 230 |
| 231 checkpoint.Call(1); | 231 checkpoint.Call(1); |
| 232 testing::runPendingTasks(); | 232 testing::runPendingTasks(); |
| 233 checkpoint.Call(2); | 233 checkpoint.Call(2); |
| 234 | 234 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 347 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 348 | 348 |
| 349 InSequence s; | 349 InSequence s; |
| 350 EXPECT_CALL(checkpoint, Call(1)); | 350 EXPECT_CALL(checkpoint, Call(1)); |
| 351 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); | 351 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); |
| 352 EXPECT_CALL(checkpoint, Call(2)); | 352 EXPECT_CALL(checkpoint, Call(2)); |
| 353 | 353 |
| 354 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); | 354 OwnPtr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 355 handle->add(Command(Command::Data, "hello")); | 355 handle->add(Command(Command::Data, "hello")); |
| 356 handle->add(Command(Command::Done)); | 356 handle->add(Command(Command::Done)); |
| 357 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(getScriptState(),
createFetchDataConsumerHandleFromWebHandle(handle.release())); | 357 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(getScriptState(),
createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
| 358 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); | 358 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); |
| 359 | 359 |
| 360 ThreadHeap::collectAllGarbage(); | 360 ThreadHeap::collectAllGarbage(); |
| 361 checkpoint.Call(1); | 361 checkpoint.Call(1); |
| 362 testing::runPendingTasks(); | 362 testing::runPendingTasks(); |
| 363 checkpoint.Call(2); | 363 checkpoint.Call(2); |
| 364 } | 364 } |
| 365 | 365 |
| 366 // TODO(hiroshige): Merge this class into MockFetchDataConsumerHandle. | 366 // TODO(hiroshige): Merge this class into MockFetchDataConsumerHandle. |
| 367 class MockFetchDataConsumerHandleWithMockDestructor : public DataConsumerHandleT
estUtil::MockFetchDataConsumerHandle { | 367 class MockFetchDataConsumerHandleWithMockDestructor : public DataConsumerHandleT
estUtil::MockFetchDataConsumerHandle { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 389 | 389 |
| 390 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea
der.get())); | 390 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea
der.get())); |
| 391 EXPECT_CALL(checkpoint, Call(1)); | 391 EXPECT_CALL(checkpoint, Call(1)); |
| 392 EXPECT_CALL(*reader, destruct()); | 392 EXPECT_CALL(*reader, destruct()); |
| 393 EXPECT_CALL(*handle, destruct()); | 393 EXPECT_CALL(*handle, destruct()); |
| 394 EXPECT_CALL(checkpoint, Call(2)); | 394 EXPECT_CALL(checkpoint, Call(2)); |
| 395 | 395 |
| 396 // |reader| is adopted by |obtainReader|. | 396 // |reader| is adopted by |obtainReader|. |
| 397 ASSERT_TRUE(reader.leakPtr()); | 397 ASSERT_TRUE(reader.leakPtr()); |
| 398 | 398 |
| 399 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), handle.rel
ease()); | 399 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move(
handle)); |
| 400 checkpoint.Call(1); | 400 checkpoint.Call(1); |
| 401 ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), "
reason")); | 401 ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), "
reason")); |
| 402 buffer->cancelSource(getScriptState(), reason); | 402 buffer->cancelSource(getScriptState(), reason); |
| 403 checkpoint.Call(2); | 403 checkpoint.Call(2); |
| 404 } | 404 } |
| 405 | 405 |
| 406 } // namespace | 406 } // namespace |
| 407 | 407 |
| 408 } // namespace blink | 408 } // namespace blink |
| OLD | NEW |