| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "modules/fetch/FetchDataLoader.h" | 5 #include "modules/fetch/FetchDataLoader.h" |
| 6 | 6 |
| 7 #include "modules/fetch/DataConsumerHandleTestUtil.h" | 7 #include "modules/fetch/DataConsumerHandleTestUtil.h" |
| 8 #include "testing/gmock/include/gmock/gmock.h" | 8 #include "testing/gmock/include/gmock/gmock.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include <memory> |
| 10 | 11 |
| 11 namespace blink { | 12 namespace blink { |
| 12 | 13 |
| 13 namespace { | 14 namespace { |
| 14 | 15 |
| 15 using ::testing::InSequence; | 16 using ::testing::InSequence; |
| 16 using ::testing::Return; | 17 using ::testing::Return; |
| 17 using ::testing::DoAll; | 18 using ::testing::DoAll; |
| 18 using ::testing::StrictMock; | 19 using ::testing::StrictMock; |
| 19 using ::testing::_; | 20 using ::testing::_; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 32 | 33 |
| 33 const char kQuickBrownFox[] = "Quick brown fox"; | 34 const char kQuickBrownFox[] = "Quick brown fox"; |
| 34 const size_t kQuickBrownFoxLength = 15; | 35 const size_t kQuickBrownFoxLength = 15; |
| 35 const size_t kQuickBrownFoxLengthWithTerminatingNull = 16; | 36 const size_t kQuickBrownFoxLengthWithTerminatingNull = 16; |
| 36 | 37 |
| 37 TEST(FetchDataLoaderTest, LoadAsBlob) | 38 TEST(FetchDataLoaderTest, LoadAsBlob) |
| 38 { | 39 { |
| 39 WebDataConsumerHandle::Client *client = nullptr; | 40 WebDataConsumerHandle::Client *client = nullptr; |
| 40 Checkpoint checkpoint; | 41 Checkpoint checkpoint; |
| 41 | 42 |
| 42 OwnPtr<MockHandle> handle = MockHandle::create(); | 43 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 43 OwnPtr<MockReader> reader = MockReader::create(); | 44 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 44 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); | 45 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); |
| 45 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 46 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 46 RefPtr<BlobDataHandle> blobDataHandle; | 47 RefPtr<BlobDataHandle> blobDataHandle; |
| 47 | 48 |
| 48 InSequence s; | 49 InSequence s; |
| 49 EXPECT_CALL(checkpoint, Call(1)); | 50 EXPECT_CALL(checkpoint, Call(1)); |
| 50 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); | 51 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); |
| 51 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); | 52 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); |
| 52 EXPECT_CALL(checkpoint, Call(2)); | 53 EXPECT_CALL(checkpoint, Call(2)); |
| 53 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); | 54 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); |
| 54 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); | 55 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); |
| 55 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); | 56 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); |
| 56 EXPECT_CALL(*reader, destruct()); | 57 EXPECT_CALL(*reader, destruct()); |
| 57 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); | 58 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); |
| 58 EXPECT_CALL(checkpoint, Call(3)); | 59 EXPECT_CALL(checkpoint, Call(3)); |
| 59 EXPECT_CALL(checkpoint, Call(4)); | 60 EXPECT_CALL(checkpoint, Call(4)); |
| 60 | 61 |
| 61 // |reader| is adopted by |obtainReader|. | 62 // |reader| is adopted by |obtainReader|. |
| 62 ASSERT_TRUE(reader.leakPtr()); | 63 ASSERT_TRUE(reader.release()); |
| 63 | 64 |
| 64 checkpoint.Call(1); | 65 checkpoint.Call(1); |
| 65 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 66 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 66 checkpoint.Call(2); | 67 checkpoint.Call(2); |
| 67 ASSERT_TRUE(client); | 68 ASSERT_TRUE(client); |
| 68 client->didGetReadable(); | 69 client->didGetReadable(); |
| 69 checkpoint.Call(3); | 70 checkpoint.Call(3); |
| 70 fetchDataLoader->cancel(); | 71 fetchDataLoader->cancel(); |
| 71 checkpoint.Call(4); | 72 checkpoint.Call(4); |
| 72 | 73 |
| 73 ASSERT_TRUE(blobDataHandle); | 74 ASSERT_TRUE(blobDataHandle); |
| 74 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); | 75 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); |
| 75 EXPECT_EQ(String("text/test"), blobDataHandle->type()); | 76 EXPECT_EQ(String("text/test"), blobDataHandle->type()); |
| 76 } | 77 } |
| 77 | 78 |
| 78 TEST(FetchDataLoaderTest, LoadAsBlobFailed) | 79 TEST(FetchDataLoaderTest, LoadAsBlobFailed) |
| 79 { | 80 { |
| 80 WebDataConsumerHandle::Client *client = nullptr; | 81 WebDataConsumerHandle::Client *client = nullptr; |
| 81 Checkpoint checkpoint; | 82 Checkpoint checkpoint; |
| 82 | 83 |
| 83 OwnPtr<MockHandle> handle = MockHandle::create(); | 84 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 84 OwnPtr<MockReader> reader = MockReader::create(); | 85 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 85 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); | 86 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); |
| 86 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 87 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 87 | 88 |
| 88 InSequence s; | 89 InSequence s; |
| 89 EXPECT_CALL(checkpoint, Call(1)); | 90 EXPECT_CALL(checkpoint, Call(1)); |
| 90 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); | 91 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); |
| 91 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); | 92 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); |
| 92 EXPECT_CALL(checkpoint, Call(2)); | 93 EXPECT_CALL(checkpoint, Call(2)); |
| 93 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); | 94 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); |
| 94 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); | 95 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); |
| 95 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); | 96 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); |
| 96 EXPECT_CALL(*reader, destruct()); | 97 EXPECT_CALL(*reader, destruct()); |
| 97 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); | 98 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); |
| 98 EXPECT_CALL(checkpoint, Call(3)); | 99 EXPECT_CALL(checkpoint, Call(3)); |
| 99 EXPECT_CALL(checkpoint, Call(4)); | 100 EXPECT_CALL(checkpoint, Call(4)); |
| 100 | 101 |
| 101 // |reader| is adopted by |obtainReader|. | 102 // |reader| is adopted by |obtainReader|. |
| 102 ASSERT_TRUE(reader.leakPtr()); | 103 ASSERT_TRUE(reader.release()); |
| 103 | 104 |
| 104 checkpoint.Call(1); | 105 checkpoint.Call(1); |
| 105 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 106 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 106 checkpoint.Call(2); | 107 checkpoint.Call(2); |
| 107 ASSERT_TRUE(client); | 108 ASSERT_TRUE(client); |
| 108 client->didGetReadable(); | 109 client->didGetReadable(); |
| 109 checkpoint.Call(3); | 110 checkpoint.Call(3); |
| 110 fetchDataLoader->cancel(); | 111 fetchDataLoader->cancel(); |
| 111 checkpoint.Call(4); | 112 checkpoint.Call(4); |
| 112 } | 113 } |
| 113 | 114 |
| 114 TEST(FetchDataLoaderTest, LoadAsBlobCancel) | 115 TEST(FetchDataLoaderTest, LoadAsBlobCancel) |
| 115 { | 116 { |
| 116 Checkpoint checkpoint; | 117 Checkpoint checkpoint; |
| 117 | 118 |
| 118 OwnPtr<MockHandle> handle = MockHandle::create(); | 119 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 119 OwnPtr<MockReader> reader = MockReader::create(); | 120 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 120 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); | 121 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); |
| 121 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 122 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 122 | 123 |
| 123 InSequence s; | 124 InSequence s; |
| 124 EXPECT_CALL(checkpoint, Call(1)); | 125 EXPECT_CALL(checkpoint, Call(1)); |
| 125 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get()))
; | 126 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get()))
; |
| 126 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); | 127 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); |
| 127 EXPECT_CALL(checkpoint, Call(2)); | 128 EXPECT_CALL(checkpoint, Call(2)); |
| 128 EXPECT_CALL(*reader, destruct()); | 129 EXPECT_CALL(*reader, destruct()); |
| 129 EXPECT_CALL(checkpoint, Call(3)); | 130 EXPECT_CALL(checkpoint, Call(3)); |
| 130 | 131 |
| 131 // |reader| is adopted by |obtainReader|. | 132 // |reader| is adopted by |obtainReader|. |
| 132 ASSERT_TRUE(reader.leakPtr()); | 133 ASSERT_TRUE(reader.release()); |
| 133 | 134 |
| 134 checkpoint.Call(1); | 135 checkpoint.Call(1); |
| 135 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 136 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 136 checkpoint.Call(2); | 137 checkpoint.Call(2); |
| 137 fetchDataLoader->cancel(); | 138 fetchDataLoader->cancel(); |
| 138 checkpoint.Call(3); | 139 checkpoint.Call(3); |
| 139 } | 140 } |
| 140 | 141 |
| 141 TEST(FetchDataLoaderTest, LoadAsBlobViaDrainAsBlobDataHandleWithSameContentType) | 142 TEST(FetchDataLoaderTest, LoadAsBlobViaDrainAsBlobDataHandleWithSameContentType) |
| 142 { | 143 { |
| 143 OwnPtr<BlobData> blobData = BlobData::create(); | 144 std::unique_ptr<BlobData> blobData = BlobData::create(); |
| 144 blobData->appendBytes(kQuickBrownFox, kQuickBrownFoxLengthWithTerminatingNul
l); | 145 blobData->appendBytes(kQuickBrownFox, kQuickBrownFoxLengthWithTerminatingNul
l); |
| 145 blobData->setContentType("text/test"); | 146 blobData->setContentType("text/test"); |
| 146 RefPtr<BlobDataHandle> inputBlobDataHandle = BlobDataHandle::create(std::mov
e(blobData), kQuickBrownFoxLengthWithTerminatingNull); | 147 RefPtr<BlobDataHandle> inputBlobDataHandle = BlobDataHandle::create(std::mov
e(blobData), kQuickBrownFoxLengthWithTerminatingNull); |
| 147 | 148 |
| 148 Checkpoint checkpoint; | 149 Checkpoint checkpoint; |
| 149 | 150 |
| 150 OwnPtr<MockHandle> handle = MockHandle::create(); | 151 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 151 OwnPtr<MockReader> reader = MockReader::create(); | 152 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 152 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); | 153 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); |
| 153 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 154 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 154 RefPtr<BlobDataHandle> blobDataHandle; | 155 RefPtr<BlobDataHandle> blobDataHandle; |
| 155 | 156 |
| 156 InSequence s; | 157 InSequence s; |
| 157 EXPECT_CALL(checkpoint, Call(1)); | 158 EXPECT_CALL(checkpoint, Call(1)); |
| 158 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get()))
; | 159 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get()))
; |
| 159 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(inputBlobDataHandle)); | 160 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(inputBlobDataHandle)); |
| 160 EXPECT_CALL(*reader, destruct()); | 161 EXPECT_CALL(*reader, destruct()); |
| 161 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); | 162 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); |
| 162 EXPECT_CALL(checkpoint, Call(2)); | 163 EXPECT_CALL(checkpoint, Call(2)); |
| 163 EXPECT_CALL(checkpoint, Call(3)); | 164 EXPECT_CALL(checkpoint, Call(3)); |
| 164 | 165 |
| 165 // |reader| is adopted by |obtainReader|. | 166 // |reader| is adopted by |obtainReader|. |
| 166 ASSERT_TRUE(reader.leakPtr()); | 167 ASSERT_TRUE(reader.release()); |
| 167 | 168 |
| 168 checkpoint.Call(1); | 169 checkpoint.Call(1); |
| 169 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 170 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 170 checkpoint.Call(2); | 171 checkpoint.Call(2); |
| 171 fetchDataLoader->cancel(); | 172 fetchDataLoader->cancel(); |
| 172 checkpoint.Call(3); | 173 checkpoint.Call(3); |
| 173 | 174 |
| 174 ASSERT_TRUE(blobDataHandle); | 175 ASSERT_TRUE(blobDataHandle); |
| 175 EXPECT_EQ(inputBlobDataHandle, blobDataHandle); | 176 EXPECT_EQ(inputBlobDataHandle, blobDataHandle); |
| 176 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); | 177 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); |
| 177 EXPECT_EQ(String("text/test"), blobDataHandle->type()); | 178 EXPECT_EQ(String("text/test"), blobDataHandle->type()); |
| 178 } | 179 } |
| 179 | 180 |
| 180 TEST(FetchDataLoaderTest, LoadAsBlobViaDrainAsBlobDataHandleWithDifferentContent
Type) | 181 TEST(FetchDataLoaderTest, LoadAsBlobViaDrainAsBlobDataHandleWithDifferentContent
Type) |
| 181 { | 182 { |
| 182 OwnPtr<BlobData> blobData = BlobData::create(); | 183 std::unique_ptr<BlobData> blobData = BlobData::create(); |
| 183 blobData->appendBytes(kQuickBrownFox, kQuickBrownFoxLengthWithTerminatingNul
l); | 184 blobData->appendBytes(kQuickBrownFox, kQuickBrownFoxLengthWithTerminatingNul
l); |
| 184 blobData->setContentType("text/different"); | 185 blobData->setContentType("text/different"); |
| 185 RefPtr<BlobDataHandle> inputBlobDataHandle = BlobDataHandle::create(std::mov
e(blobData), kQuickBrownFoxLengthWithTerminatingNull); | 186 RefPtr<BlobDataHandle> inputBlobDataHandle = BlobDataHandle::create(std::mov
e(blobData), kQuickBrownFoxLengthWithTerminatingNull); |
| 186 | 187 |
| 187 Checkpoint checkpoint; | 188 Checkpoint checkpoint; |
| 188 | 189 |
| 189 OwnPtr<MockHandle> handle = MockHandle::create(); | 190 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 190 OwnPtr<MockReader> reader = MockReader::create(); | 191 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 191 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); | 192 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); |
| 192 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 193 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 193 RefPtr<BlobDataHandle> blobDataHandle; | 194 RefPtr<BlobDataHandle> blobDataHandle; |
| 194 | 195 |
| 195 InSequence s; | 196 InSequence s; |
| 196 EXPECT_CALL(checkpoint, Call(1)); | 197 EXPECT_CALL(checkpoint, Call(1)); |
| 197 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get()))
; | 198 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get()))
; |
| 198 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(inputBlobDataHandle)); | 199 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(inputBlobDataHandle)); |
| 199 EXPECT_CALL(*reader, destruct()); | 200 EXPECT_CALL(*reader, destruct()); |
| 200 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); | 201 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); |
| 201 EXPECT_CALL(checkpoint, Call(2)); | 202 EXPECT_CALL(checkpoint, Call(2)); |
| 202 EXPECT_CALL(checkpoint, Call(3)); | 203 EXPECT_CALL(checkpoint, Call(3)); |
| 203 | 204 |
| 204 // |reader| is adopted by |obtainReader|. | 205 // |reader| is adopted by |obtainReader|. |
| 205 ASSERT_TRUE(reader.leakPtr()); | 206 ASSERT_TRUE(reader.release()); |
| 206 | 207 |
| 207 checkpoint.Call(1); | 208 checkpoint.Call(1); |
| 208 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 209 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 209 checkpoint.Call(2); | 210 checkpoint.Call(2); |
| 210 fetchDataLoader->cancel(); | 211 fetchDataLoader->cancel(); |
| 211 checkpoint.Call(3); | 212 checkpoint.Call(3); |
| 212 | 213 |
| 213 ASSERT_TRUE(blobDataHandle); | 214 ASSERT_TRUE(blobDataHandle); |
| 214 EXPECT_NE(inputBlobDataHandle, blobDataHandle); | 215 EXPECT_NE(inputBlobDataHandle, blobDataHandle); |
| 215 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); | 216 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); |
| 216 EXPECT_EQ(String("text/test"), blobDataHandle->type()); | 217 EXPECT_EQ(String("text/test"), blobDataHandle->type()); |
| 217 } | 218 } |
| 218 | 219 |
| 219 TEST(FetchDataLoaderTest, LoadAsArrayBuffer) | 220 TEST(FetchDataLoaderTest, LoadAsArrayBuffer) |
| 220 { | 221 { |
| 221 WebDataConsumerHandle::Client *client = nullptr; | 222 WebDataConsumerHandle::Client *client = nullptr; |
| 222 Checkpoint checkpoint; | 223 Checkpoint checkpoint; |
| 223 | 224 |
| 224 OwnPtr<MockHandle> handle = MockHandle::create(); | 225 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 225 OwnPtr<MockReader> reader = MockReader::create(); | 226 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 226 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); | 227 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); |
| 227 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 228 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 228 DOMArrayBuffer* arrayBuffer = nullptr; | 229 DOMArrayBuffer* arrayBuffer = nullptr; |
| 229 | 230 |
| 230 InSequence s; | 231 InSequence s; |
| 231 EXPECT_CALL(checkpoint, Call(1)); | 232 EXPECT_CALL(checkpoint, Call(1)); |
| 232 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); | 233 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); |
| 233 EXPECT_CALL(checkpoint, Call(2)); | 234 EXPECT_CALL(checkpoint, Call(2)); |
| 234 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); | 235 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); |
| 235 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); | 236 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); |
| 236 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); | 237 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); |
| 237 EXPECT_CALL(*reader, destruct()); | 238 EXPECT_CALL(*reader, destruct()); |
| 238 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedArrayBufferMock(_)).Wi
llOnce(SaveArg<0>(&arrayBuffer)); | 239 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedArrayBufferMock(_)).Wi
llOnce(SaveArg<0>(&arrayBuffer)); |
| 239 EXPECT_CALL(checkpoint, Call(3)); | 240 EXPECT_CALL(checkpoint, Call(3)); |
| 240 EXPECT_CALL(checkpoint, Call(4)); | 241 EXPECT_CALL(checkpoint, Call(4)); |
| 241 | 242 |
| 242 // |reader| is adopted by |obtainReader|. | 243 // |reader| is adopted by |obtainReader|. |
| 243 ASSERT_TRUE(reader.leakPtr()); | 244 ASSERT_TRUE(reader.release()); |
| 244 | 245 |
| 245 checkpoint.Call(1); | 246 checkpoint.Call(1); |
| 246 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 247 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 247 checkpoint.Call(2); | 248 checkpoint.Call(2); |
| 248 ASSERT_TRUE(client); | 249 ASSERT_TRUE(client); |
| 249 client->didGetReadable(); | 250 client->didGetReadable(); |
| 250 checkpoint.Call(3); | 251 checkpoint.Call(3); |
| 251 fetchDataLoader->cancel(); | 252 fetchDataLoader->cancel(); |
| 252 checkpoint.Call(4); | 253 checkpoint.Call(4); |
| 253 | 254 |
| 254 ASSERT_TRUE(arrayBuffer); | 255 ASSERT_TRUE(arrayBuffer); |
| 255 ASSERT_EQ(kQuickBrownFoxLengthWithTerminatingNull, arrayBuffer->byteLength()
); | 256 ASSERT_EQ(kQuickBrownFoxLengthWithTerminatingNull, arrayBuffer->byteLength()
); |
| 256 EXPECT_STREQ(kQuickBrownFox, static_cast<const char*>(arrayBuffer->data())); | 257 EXPECT_STREQ(kQuickBrownFox, static_cast<const char*>(arrayBuffer->data())); |
| 257 } | 258 } |
| 258 | 259 |
| 259 TEST(FetchDataLoaderTest, LoadAsArrayBufferFailed) | 260 TEST(FetchDataLoaderTest, LoadAsArrayBufferFailed) |
| 260 { | 261 { |
| 261 WebDataConsumerHandle::Client *client = nullptr; | 262 WebDataConsumerHandle::Client *client = nullptr; |
| 262 Checkpoint checkpoint; | 263 Checkpoint checkpoint; |
| 263 | 264 |
| 264 OwnPtr<MockHandle> handle = MockHandle::create(); | 265 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 265 OwnPtr<MockReader> reader = MockReader::create(); | 266 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 266 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); | 267 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); |
| 267 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 268 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 268 | 269 |
| 269 InSequence s; | 270 InSequence s; |
| 270 EXPECT_CALL(checkpoint, Call(1)); | 271 EXPECT_CALL(checkpoint, Call(1)); |
| 271 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); | 272 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); |
| 272 EXPECT_CALL(checkpoint, Call(2)); | 273 EXPECT_CALL(checkpoint, Call(2)); |
| 273 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); | 274 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); |
| 274 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); | 275 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); |
| 275 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); | 276 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); |
| 276 EXPECT_CALL(*reader, destruct()); | 277 EXPECT_CALL(*reader, destruct()); |
| 277 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); | 278 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); |
| 278 EXPECT_CALL(checkpoint, Call(3)); | 279 EXPECT_CALL(checkpoint, Call(3)); |
| 279 EXPECT_CALL(checkpoint, Call(4)); | 280 EXPECT_CALL(checkpoint, Call(4)); |
| 280 | 281 |
| 281 // |reader| is adopted by |obtainReader|. | 282 // |reader| is adopted by |obtainReader|. |
| 282 ASSERT_TRUE(reader.leakPtr()); | 283 ASSERT_TRUE(reader.release()); |
| 283 | 284 |
| 284 checkpoint.Call(1); | 285 checkpoint.Call(1); |
| 285 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 286 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 286 checkpoint.Call(2); | 287 checkpoint.Call(2); |
| 287 ASSERT_TRUE(client); | 288 ASSERT_TRUE(client); |
| 288 client->didGetReadable(); | 289 client->didGetReadable(); |
| 289 checkpoint.Call(3); | 290 checkpoint.Call(3); |
| 290 fetchDataLoader->cancel(); | 291 fetchDataLoader->cancel(); |
| 291 checkpoint.Call(4); | 292 checkpoint.Call(4); |
| 292 } | 293 } |
| 293 | 294 |
| 294 TEST(FetchDataLoaderTest, LoadAsArrayBufferCancel) | 295 TEST(FetchDataLoaderTest, LoadAsArrayBufferCancel) |
| 295 { | 296 { |
| 296 Checkpoint checkpoint; | 297 Checkpoint checkpoint; |
| 297 | 298 |
| 298 OwnPtr<MockHandle> handle = MockHandle::create(); | 299 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 299 OwnPtr<MockReader> reader = MockReader::create(); | 300 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 300 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); | 301 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); |
| 301 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 302 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 302 | 303 |
| 303 InSequence s; | 304 InSequence s; |
| 304 EXPECT_CALL(checkpoint, Call(1)); | 305 EXPECT_CALL(checkpoint, Call(1)); |
| 305 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get()))
; | 306 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get()))
; |
| 306 EXPECT_CALL(checkpoint, Call(2)); | 307 EXPECT_CALL(checkpoint, Call(2)); |
| 307 EXPECT_CALL(*reader, destruct()); | 308 EXPECT_CALL(*reader, destruct()); |
| 308 EXPECT_CALL(checkpoint, Call(3)); | 309 EXPECT_CALL(checkpoint, Call(3)); |
| 309 | 310 |
| 310 // |reader| is adopted by |obtainReader|. | 311 // |reader| is adopted by |obtainReader|. |
| 311 ASSERT_TRUE(reader.leakPtr()); | 312 ASSERT_TRUE(reader.release()); |
| 312 | 313 |
| 313 checkpoint.Call(1); | 314 checkpoint.Call(1); |
| 314 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 315 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 315 checkpoint.Call(2); | 316 checkpoint.Call(2); |
| 316 fetchDataLoader->cancel(); | 317 fetchDataLoader->cancel(); |
| 317 checkpoint.Call(3); | 318 checkpoint.Call(3); |
| 318 } | 319 } |
| 319 | 320 |
| 320 TEST(FetchDataLoaderTest, LoadAsString) | 321 TEST(FetchDataLoaderTest, LoadAsString) |
| 321 { | 322 { |
| 322 WebDataConsumerHandle::Client *client = nullptr; | 323 WebDataConsumerHandle::Client *client = nullptr; |
| 323 Checkpoint checkpoint; | 324 Checkpoint checkpoint; |
| 324 | 325 |
| 325 OwnPtr<MockHandle> handle = MockHandle::create(); | 326 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 326 OwnPtr<MockReader> reader = MockReader::create(); | 327 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 327 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); | 328 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); |
| 328 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 329 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 329 | 330 |
| 330 InSequence s; | 331 InSequence s; |
| 331 EXPECT_CALL(checkpoint, Call(1)); | 332 EXPECT_CALL(checkpoint, Call(1)); |
| 332 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); | 333 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); |
| 333 EXPECT_CALL(checkpoint, Call(2)); | 334 EXPECT_CALL(checkpoint, Call(2)); |
| 334 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
h), Return(kOk))); | 335 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
h), Return(kOk))); |
| 335 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk)); | 336 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk)); |
| 336 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); | 337 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); |
| 337 EXPECT_CALL(*reader, destruct()); | 338 EXPECT_CALL(*reader, destruct()); |
| 338 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String(kQuickBr
ownFox))); | 339 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String(kQuickBr
ownFox))); |
| 339 EXPECT_CALL(checkpoint, Call(3)); | 340 EXPECT_CALL(checkpoint, Call(3)); |
| 340 EXPECT_CALL(checkpoint, Call(4)); | 341 EXPECT_CALL(checkpoint, Call(4)); |
| 341 | 342 |
| 342 // |reader| is adopted by |obtainReader|. | 343 // |reader| is adopted by |obtainReader|. |
| 343 ASSERT_TRUE(reader.leakPtr()); | 344 ASSERT_TRUE(reader.release()); |
| 344 | 345 |
| 345 checkpoint.Call(1); | 346 checkpoint.Call(1); |
| 346 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 347 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 347 checkpoint.Call(2); | 348 checkpoint.Call(2); |
| 348 ASSERT_TRUE(client); | 349 ASSERT_TRUE(client); |
| 349 client->didGetReadable(); | 350 client->didGetReadable(); |
| 350 checkpoint.Call(3); | 351 checkpoint.Call(3); |
| 351 fetchDataLoader->cancel(); | 352 fetchDataLoader->cancel(); |
| 352 checkpoint.Call(4); | 353 checkpoint.Call(4); |
| 353 } | 354 } |
| 354 | 355 |
| 355 TEST(FetchDataLoaderTest, LoadAsStringWithNullBytes) | 356 TEST(FetchDataLoaderTest, LoadAsStringWithNullBytes) |
| 356 { | 357 { |
| 357 WebDataConsumerHandle::Client *client = nullptr; | 358 WebDataConsumerHandle::Client *client = nullptr; |
| 358 Checkpoint checkpoint; | 359 Checkpoint checkpoint; |
| 359 | 360 |
| 360 OwnPtr<MockHandle> handle = MockHandle::create(); | 361 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 361 OwnPtr<MockReader> reader = MockReader::create(); | 362 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 362 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); | 363 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); |
| 363 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 364 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 364 | 365 |
| 365 InSequence s; | 366 InSequence s; |
| 366 EXPECT_CALL(checkpoint, Call(1)); | 367 EXPECT_CALL(checkpoint, Call(1)); |
| 367 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); | 368 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); |
| 368 EXPECT_CALL(checkpoint, Call(2)); | 369 EXPECT_CALL(checkpoint, Call(2)); |
| 369 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>("Quick\0brown\0fox")), SetArgPointee<2>(16), Return(kO
k))); | 370 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>("Quick\0brown\0fox")), SetArgPointee<2>(16), Return(kO
k))); |
| 370 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); | 371 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); |
| 371 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); | 372 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); |
| 372 EXPECT_CALL(*reader, destruct()); | 373 EXPECT_CALL(*reader, destruct()); |
| 373 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String("Quick\0
brown\0fox", 16))); | 374 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String("Quick\0
brown\0fox", 16))); |
| 374 EXPECT_CALL(checkpoint, Call(3)); | 375 EXPECT_CALL(checkpoint, Call(3)); |
| 375 EXPECT_CALL(checkpoint, Call(4)); | 376 EXPECT_CALL(checkpoint, Call(4)); |
| 376 | 377 |
| 377 // |reader| is adopted by |obtainReader|. | 378 // |reader| is adopted by |obtainReader|. |
| 378 ASSERT_TRUE(reader.leakPtr()); | 379 ASSERT_TRUE(reader.release()); |
| 379 | 380 |
| 380 checkpoint.Call(1); | 381 checkpoint.Call(1); |
| 381 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 382 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 382 checkpoint.Call(2); | 383 checkpoint.Call(2); |
| 383 ASSERT_TRUE(client); | 384 ASSERT_TRUE(client); |
| 384 client->didGetReadable(); | 385 client->didGetReadable(); |
| 385 checkpoint.Call(3); | 386 checkpoint.Call(3); |
| 386 fetchDataLoader->cancel(); | 387 fetchDataLoader->cancel(); |
| 387 checkpoint.Call(4); | 388 checkpoint.Call(4); |
| 388 } | 389 } |
| 389 | 390 |
| 390 TEST(FetchDataLoaderTest, LoadAsStringError) | 391 TEST(FetchDataLoaderTest, LoadAsStringError) |
| 391 { | 392 { |
| 392 WebDataConsumerHandle::Client *client = nullptr; | 393 WebDataConsumerHandle::Client *client = nullptr; |
| 393 Checkpoint checkpoint; | 394 Checkpoint checkpoint; |
| 394 | 395 |
| 395 OwnPtr<MockHandle> handle = MockHandle::create(); | 396 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 396 OwnPtr<MockReader> reader = MockReader::create(); | 397 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 397 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); | 398 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); |
| 398 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 399 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 399 | 400 |
| 400 InSequence s; | 401 InSequence s; |
| 401 EXPECT_CALL(checkpoint, Call(1)); | 402 EXPECT_CALL(checkpoint, Call(1)); |
| 402 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); | 403 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli
ent), Return(reader.get()))); |
| 403 EXPECT_CALL(checkpoint, Call(2)); | 404 EXPECT_CALL(checkpoint, Call(2)); |
| 404 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
h), Return(kOk))); | 405 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
h), Return(kOk))); |
| 405 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk)); | 406 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk)); |
| 406 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); | 407 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); |
| 407 EXPECT_CALL(*reader, destruct()); | 408 EXPECT_CALL(*reader, destruct()); |
| 408 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); | 409 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); |
| 409 EXPECT_CALL(checkpoint, Call(3)); | 410 EXPECT_CALL(checkpoint, Call(3)); |
| 410 EXPECT_CALL(checkpoint, Call(4)); | 411 EXPECT_CALL(checkpoint, Call(4)); |
| 411 | 412 |
| 412 // |reader| is adopted by |obtainReader|. | 413 // |reader| is adopted by |obtainReader|. |
| 413 ASSERT_TRUE(reader.leakPtr()); | 414 ASSERT_TRUE(reader.release()); |
| 414 | 415 |
| 415 checkpoint.Call(1); | 416 checkpoint.Call(1); |
| 416 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 417 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 417 checkpoint.Call(2); | 418 checkpoint.Call(2); |
| 418 ASSERT_TRUE(client); | 419 ASSERT_TRUE(client); |
| 419 client->didGetReadable(); | 420 client->didGetReadable(); |
| 420 checkpoint.Call(3); | 421 checkpoint.Call(3); |
| 421 fetchDataLoader->cancel(); | 422 fetchDataLoader->cancel(); |
| 422 checkpoint.Call(4); | 423 checkpoint.Call(4); |
| 423 } | 424 } |
| 424 | 425 |
| 425 TEST(FetchDataLoaderTest, LoadAsStringCancel) | 426 TEST(FetchDataLoaderTest, LoadAsStringCancel) |
| 426 { | 427 { |
| 427 Checkpoint checkpoint; | 428 Checkpoint checkpoint; |
| 428 | 429 |
| 429 OwnPtr<MockHandle> handle = MockHandle::create(); | 430 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 430 OwnPtr<MockReader> reader = MockReader::create(); | 431 std::unique_ptr<MockReader> reader = MockReader::create(); |
| 431 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); | 432 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); |
| 432 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 433 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 433 | 434 |
| 434 InSequence s; | 435 InSequence s; |
| 435 EXPECT_CALL(checkpoint, Call(1)); | 436 EXPECT_CALL(checkpoint, Call(1)); |
| 436 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get()))
; | 437 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get()))
; |
| 437 EXPECT_CALL(checkpoint, Call(2)); | 438 EXPECT_CALL(checkpoint, Call(2)); |
| 438 EXPECT_CALL(*reader, destruct()); | 439 EXPECT_CALL(*reader, destruct()); |
| 439 EXPECT_CALL(checkpoint, Call(3)); | 440 EXPECT_CALL(checkpoint, Call(3)); |
| 440 | 441 |
| 441 // |reader| is adopted by |obtainReader|. | 442 // |reader| is adopted by |obtainReader|. |
| 442 ASSERT_TRUE(reader.leakPtr()); | 443 ASSERT_TRUE(reader.release()); |
| 443 | 444 |
| 444 checkpoint.Call(1); | 445 checkpoint.Call(1); |
| 445 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 446 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); |
| 446 checkpoint.Call(2); | 447 checkpoint.Call(2); |
| 447 fetchDataLoader->cancel(); | 448 fetchDataLoader->cancel(); |
| 448 checkpoint.Call(3); | 449 checkpoint.Call(3); |
| 449 } | 450 } |
| 450 | 451 |
| 451 } // namespace | 452 } // namespace |
| 452 | 453 |
| 453 } // namespace blink | 454 } // namespace blink |
| OLD | NEW |