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 |