Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(864)

Side by Side Diff: third_party/WebKit/Source/modules/fetch/FetchDataLoaderTest.cpp

Issue 2229313002: Make FetchDataLoader accept BytesConsumer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove-c++-rs
Patch Set: fix Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/BytesConsumerForDataConsumerHandle.h"
7 #include "modules/fetch/DataConsumerHandleTestUtil.h" 8 #include "modules/fetch/DataConsumerHandleTestUtil.h"
8 #include "testing/gmock/include/gmock/gmock.h" 9 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
10 #include <memory> 11 #include <memory>
11 12
12 namespace blink { 13 namespace blink {
13 14
14 namespace { 15 namespace {
15 16
16 using ::testing::ByMove; 17 using ::testing::ByMove;
17 using ::testing::InSequence; 18 using ::testing::InSequence;
18 using ::testing::Return; 19 using ::testing::Return;
19 using ::testing::DoAll; 20 using ::testing::DoAll;
20 using ::testing::StrictMock; 21 using ::testing::StrictMock;
21 using ::testing::_; 22 using ::testing::_;
22 using ::testing::SaveArg; 23 using ::testing::SaveArg;
23 using ::testing::SetArgPointee; 24 using ::testing::SetArgPointee;
24 using Checkpoint = StrictMock<::testing::MockFunction<void(int)>>; 25 using Checkpoint = StrictMock<::testing::MockFunction<void(int)>>;
25 using MockFetchDataLoaderClient = DataConsumerHandleTestUtil::MockFetchDataLoade rClient; 26 using MockFetchDataLoaderClient = DataConsumerHandleTestUtil::MockFetchDataLoade rClient;
26 using MockHandle = DataConsumerHandleTestUtil::MockFetchDataConsumerHandle; 27 using MockHandle = DataConsumerHandleTestUtil::MockFetchDataConsumerHandle;
27 using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader; 28 using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader;
28 29
29 const WebDataConsumerHandle::Result kOk = WebDataConsumerHandle::Ok; 30 constexpr WebDataConsumerHandle::Result kOk = WebDataConsumerHandle::Ok;
30 const WebDataConsumerHandle::Result kUnexpectedError = WebDataConsumerHandle::Un expectedError; 31 constexpr WebDataConsumerHandle::Result kUnexpectedError = WebDataConsumerHandle ::UnexpectedError;
31 const WebDataConsumerHandle::Result kDone = WebDataConsumerHandle::Done; 32 constexpr WebDataConsumerHandle::Result kShouldWait = WebDataConsumerHandle::Sho uldWait;
32 const WebDataConsumerHandle::Flags kNone = WebDataConsumerHandle::FlagNone; 33 constexpr WebDataConsumerHandle::Result kDone = WebDataConsumerHandle::Done;
33 const FetchDataConsumerHandle::Reader::BlobSizePolicy kDisallowBlobWithInvalidSi ze = FetchDataConsumerHandle::Reader::DisallowBlobWithInvalidSize; 34 constexpr WebDataConsumerHandle::Flags kNone = WebDataConsumerHandle::FlagNone;
35 constexpr FetchDataConsumerHandle::Reader::BlobSizePolicy kDisallowBlobWithInval idSize = FetchDataConsumerHandle::Reader::DisallowBlobWithInvalidSize;
34 36
35 const char kQuickBrownFox[] = "Quick brown fox"; 37 constexpr char kQuickBrownFox[] = "Quick brown fox";
36 const size_t kQuickBrownFoxLength = 15; 38 constexpr size_t kQuickBrownFoxLength = 15;
37 const size_t kQuickBrownFoxLengthWithTerminatingNull = 16; 39 constexpr size_t kQuickBrownFoxLengthWithTerminatingNull = 16;
38 40
39 TEST(FetchDataLoaderTest, LoadAsBlob) 41 TEST(FetchDataLoaderTest, LoadAsBlob)
40 { 42 {
41 WebDataConsumerHandle::Client *client = nullptr; 43 WebDataConsumerHandle::Client *client = nullptr;
42 Checkpoint checkpoint; 44 Checkpoint checkpoint;
43 45
44 std::unique_ptr<MockHandle> handle = MockHandle::create(); 46 std::unique_ptr<MockHandle> handle = MockHandle::create();
45 47
46 // |reader| will be adopted by |obtainFetchDataReader|. 48 // |reader| will be adopted by |obtainFetchDataReader|.
47 MockReader* reader = MockReader::create().release(); 49 MockReader* reader = MockReader::create().release();
48 50
49 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test"); 51 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test");
50 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create(); 52 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
51 RefPtr<BlobDataHandle> blobDataHandle; 53 RefPtr<BlobDataHandle> blobDataHandle;
52 54
53 InSequence s; 55 InSequence s;
54 EXPECT_CALL(checkpoint, Call(1)); 56 EXPECT_CALL(checkpoint, Call(1));
55 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader))))); 57 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader)))));
56 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi llOnce(Return(nullptr)); 58 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi llOnce(Return(nullptr));
59 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
57 EXPECT_CALL(checkpoint, Call(2)); 60 EXPECT_CALL(checkpoint, Call(2));
61 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe e<3>(0), Return(kShouldWait)));
58 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt hWithTerminatingNull), Return(kOk))); 62 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt hWithTerminatingNull), Return(kOk)));
59 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO nce(Return(kOk)); 63 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO nce(Return(kOk));
60 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); 64 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone));
61 EXPECT_CALL(*reader, destruct()); 65 EXPECT_CALL(*reader, destruct());
62 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil lOnce(SaveArg<0>(&blobDataHandle)); 66 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil lOnce(SaveArg<0>(&blobDataHandle));
63 EXPECT_CALL(checkpoint, Call(3)); 67 EXPECT_CALL(checkpoint, Call(3));
64 EXPECT_CALL(checkpoint, Call(4)); 68 EXPECT_CALL(checkpoint, Call(4));
65 69
66 checkpoint.Call(1); 70 checkpoint.Call(1);
67 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 71 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
68 checkpoint.Call(2); 72 checkpoint.Call(2);
69 ASSERT_TRUE(client); 73 ASSERT_TRUE(client);
70 client->didGetReadable(); 74 client->didGetReadable();
71 checkpoint.Call(3); 75 checkpoint.Call(3);
72 fetchDataLoader->cancel(); 76 fetchDataLoader->cancel();
73 checkpoint.Call(4); 77 checkpoint.Call(4);
74 78
75 ASSERT_TRUE(blobDataHandle); 79 ASSERT_TRUE(blobDataHandle);
76 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); 80 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size());
77 EXPECT_EQ(String("text/test"), blobDataHandle->type()); 81 EXPECT_EQ(String("text/test"), blobDataHandle->type());
78 } 82 }
79 83
80 TEST(FetchDataLoaderTest, LoadAsBlobFailed) 84 TEST(FetchDataLoaderTest, LoadAsBlobFailed)
81 { 85 {
82 WebDataConsumerHandle::Client *client = nullptr; 86 WebDataConsumerHandle::Client *client = nullptr;
83 Checkpoint checkpoint; 87 Checkpoint checkpoint;
84 88
85 std::unique_ptr<MockHandle> handle = MockHandle::create(); 89 std::unique_ptr<MockHandle> handle = MockHandle::create();
86 90
87 // |reader| is adopted by |obtainFetchDataReader|. 91 // |reader| is adopted by |obtainFetchDataReader|.
88 MockReader* reader = MockReader::create().release(); 92 MockReader* reader = MockReader::create().release();
89 93
90 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test"); 94 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test");
91 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create(); 95 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
92 96
93 InSequence s; 97 InSequence s;
94 EXPECT_CALL(checkpoint, Call(1)); 98 EXPECT_CALL(checkpoint, Call(1));
95 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader))))); 99 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader)))));
96 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi llOnce(Return(nullptr)); 100 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi llOnce(Return(nullptr));
101 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
97 EXPECT_CALL(checkpoint, Call(2)); 102 EXPECT_CALL(checkpoint, Call(2));
103 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe e<3>(0), Return(kShouldWait)));
98 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt hWithTerminatingNull), Return(kOk))); 104 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt hWithTerminatingNull), Return(kOk)));
99 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO nce(Return(kOk)); 105 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO nce(Return(kOk));
100 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro r)); 106 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro r));
101 EXPECT_CALL(*reader, destruct()); 107 EXPECT_CALL(*reader, destruct());
102 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); 108 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed());
103 EXPECT_CALL(checkpoint, Call(3)); 109 EXPECT_CALL(checkpoint, Call(3));
104 EXPECT_CALL(checkpoint, Call(4)); 110 EXPECT_CALL(checkpoint, Call(4));
105 111
106 checkpoint.Call(1); 112 checkpoint.Call(1);
107 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 113 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
108 checkpoint.Call(2); 114 checkpoint.Call(2);
109 ASSERT_TRUE(client); 115 ASSERT_TRUE(client);
110 client->didGetReadable(); 116 client->didGetReadable();
111 checkpoint.Call(3); 117 checkpoint.Call(3);
112 fetchDataLoader->cancel(); 118 fetchDataLoader->cancel();
113 checkpoint.Call(4); 119 checkpoint.Call(4);
114 } 120 }
115 121
116 TEST(FetchDataLoaderTest, LoadAsBlobCancel) 122 TEST(FetchDataLoaderTest, LoadAsBlobCancel)
117 { 123 {
118 Checkpoint checkpoint; 124 Checkpoint checkpoint;
119 125
120 std::unique_ptr<MockHandle> handle = MockHandle::create(); 126 std::unique_ptr<MockHandle> handle = MockHandle::create();
121 127
122 // |reader| will be adopted by |obtainFetchDataReader|. 128 // |reader| will be adopted by |obtainFetchDataReader|.
123 MockReader* reader = MockReader::create().release(); 129 MockReader* reader = MockReader::create().release();
124 130
125 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test"); 131 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test");
126 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create(); 132 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
127 133
128 InSequence s; 134 InSequence s;
129 EXPECT_CALL(checkpoint, Call(1)); 135 EXPECT_CALL(checkpoint, Call(1));
130 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader)))); 136 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader))));
131 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi llOnce(Return(nullptr)); 137 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi llOnce(Return(nullptr));
138 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
132 EXPECT_CALL(checkpoint, Call(2)); 139 EXPECT_CALL(checkpoint, Call(2));
133 EXPECT_CALL(*reader, destruct()); 140 EXPECT_CALL(*reader, destruct());
134 EXPECT_CALL(checkpoint, Call(3)); 141 EXPECT_CALL(checkpoint, Call(3));
135 142
136 checkpoint.Call(1); 143 checkpoint.Call(1);
137 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 144 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
138 checkpoint.Call(2); 145 checkpoint.Call(2);
139 fetchDataLoader->cancel(); 146 fetchDataLoader->cancel();
140 checkpoint.Call(3); 147 checkpoint.Call(3);
141 } 148 }
142 149
143 TEST(FetchDataLoaderTest, LoadAsBlobViaDrainAsBlobDataHandleWithSameContentType) 150 TEST(FetchDataLoaderTest, LoadAsBlobViaDrainAsBlobDataHandleWithSameContentType)
144 { 151 {
145 std::unique_ptr<BlobData> blobData = BlobData::create(); 152 std::unique_ptr<BlobData> blobData = BlobData::create();
146 blobData->appendBytes(kQuickBrownFox, kQuickBrownFoxLengthWithTerminatingNul l); 153 blobData->appendBytes(kQuickBrownFox, kQuickBrownFoxLengthWithTerminatingNul l);
147 blobData->setContentType("text/test"); 154 blobData->setContentType("text/test");
(...skipping 13 matching lines...) Expand all
161 InSequence s; 168 InSequence s;
162 EXPECT_CALL(checkpoint, Call(1)); 169 EXPECT_CALL(checkpoint, Call(1));
163 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader)))); 170 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader))));
164 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi llOnce(Return(inputBlobDataHandle)); 171 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi llOnce(Return(inputBlobDataHandle));
165 EXPECT_CALL(*reader, destruct()); 172 EXPECT_CALL(*reader, destruct());
166 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil lOnce(SaveArg<0>(&blobDataHandle)); 173 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil lOnce(SaveArg<0>(&blobDataHandle));
167 EXPECT_CALL(checkpoint, Call(2)); 174 EXPECT_CALL(checkpoint, Call(2));
168 EXPECT_CALL(checkpoint, Call(3)); 175 EXPECT_CALL(checkpoint, Call(3));
169 176
170 checkpoint.Call(1); 177 checkpoint.Call(1);
171 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 178 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
172 checkpoint.Call(2); 179 checkpoint.Call(2);
173 fetchDataLoader->cancel(); 180 fetchDataLoader->cancel();
174 checkpoint.Call(3); 181 checkpoint.Call(3);
175 182
176 ASSERT_TRUE(blobDataHandle); 183 ASSERT_TRUE(blobDataHandle);
177 EXPECT_EQ(inputBlobDataHandle, blobDataHandle); 184 EXPECT_EQ(inputBlobDataHandle, blobDataHandle);
178 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); 185 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size());
179 EXPECT_EQ(String("text/test"), blobDataHandle->type()); 186 EXPECT_EQ(String("text/test"), blobDataHandle->type());
180 } 187 }
181 188
(...skipping 18 matching lines...) Expand all
200 InSequence s; 207 InSequence s;
201 EXPECT_CALL(checkpoint, Call(1)); 208 EXPECT_CALL(checkpoint, Call(1));
202 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader)))); 209 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader))));
203 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi llOnce(Return(inputBlobDataHandle)); 210 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi llOnce(Return(inputBlobDataHandle));
204 EXPECT_CALL(*reader, destruct()); 211 EXPECT_CALL(*reader, destruct());
205 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil lOnce(SaveArg<0>(&blobDataHandle)); 212 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil lOnce(SaveArg<0>(&blobDataHandle));
206 EXPECT_CALL(checkpoint, Call(2)); 213 EXPECT_CALL(checkpoint, Call(2));
207 EXPECT_CALL(checkpoint, Call(3)); 214 EXPECT_CALL(checkpoint, Call(3));
208 215
209 checkpoint.Call(1); 216 checkpoint.Call(1);
210 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 217 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
211 checkpoint.Call(2); 218 checkpoint.Call(2);
212 fetchDataLoader->cancel(); 219 fetchDataLoader->cancel();
213 checkpoint.Call(3); 220 checkpoint.Call(3);
214 221
215 ASSERT_TRUE(blobDataHandle); 222 ASSERT_TRUE(blobDataHandle);
216 EXPECT_NE(inputBlobDataHandle, blobDataHandle); 223 EXPECT_NE(inputBlobDataHandle, blobDataHandle);
217 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); 224 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size());
218 EXPECT_EQ(String("text/test"), blobDataHandle->type()); 225 EXPECT_EQ(String("text/test"), blobDataHandle->type());
219 } 226 }
220 227
221 TEST(FetchDataLoaderTest, LoadAsArrayBuffer) 228 TEST(FetchDataLoaderTest, LoadAsArrayBuffer)
222 { 229 {
223 WebDataConsumerHandle::Client *client = nullptr; 230 WebDataConsumerHandle::Client *client = nullptr;
224 Checkpoint checkpoint; 231 Checkpoint checkpoint;
225 232
226 std::unique_ptr<MockHandle> handle = MockHandle::create(); 233 std::unique_ptr<MockHandle> handle = MockHandle::create();
227 234
228 // |reader| will be adopted by |obtainFetchDataReader|. 235 // |reader| will be adopted by |obtainFetchDataReader|.
229 MockReader* reader = MockReader::create().release(); 236 MockReader* reader = MockReader::create().release();
230 237
231 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe r(); 238 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe r();
232 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create(); 239 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
233 DOMArrayBuffer* arrayBuffer = nullptr; 240 DOMArrayBuffer* arrayBuffer = nullptr;
234 241
235 InSequence s; 242 InSequence s;
236 EXPECT_CALL(checkpoint, Call(1)); 243 EXPECT_CALL(checkpoint, Call(1));
237 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader))))); 244 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader)))));
245 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
238 EXPECT_CALL(checkpoint, Call(2)); 246 EXPECT_CALL(checkpoint, Call(2));
247 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe e<3>(0), Return(kShouldWait)));
239 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt hWithTerminatingNull), Return(kOk))); 248 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt hWithTerminatingNull), Return(kOk)));
240 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO nce(Return(kOk)); 249 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO nce(Return(kOk));
241 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); 250 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone));
242 EXPECT_CALL(*reader, destruct()); 251 EXPECT_CALL(*reader, destruct());
243 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedArrayBufferMock(_)).Wi llOnce(SaveArg<0>(&arrayBuffer)); 252 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedArrayBufferMock(_)).Wi llOnce(SaveArg<0>(&arrayBuffer));
244 EXPECT_CALL(checkpoint, Call(3)); 253 EXPECT_CALL(checkpoint, Call(3));
245 EXPECT_CALL(checkpoint, Call(4)); 254 EXPECT_CALL(checkpoint, Call(4));
246 255
247 checkpoint.Call(1); 256 checkpoint.Call(1);
248 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 257 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
249 checkpoint.Call(2); 258 checkpoint.Call(2);
250 ASSERT_TRUE(client); 259 ASSERT_TRUE(client);
251 client->didGetReadable(); 260 client->didGetReadable();
252 checkpoint.Call(3); 261 checkpoint.Call(3);
253 fetchDataLoader->cancel(); 262 fetchDataLoader->cancel();
254 checkpoint.Call(4); 263 checkpoint.Call(4);
255 264
256 ASSERT_TRUE(arrayBuffer); 265 ASSERT_TRUE(arrayBuffer);
257 ASSERT_EQ(kQuickBrownFoxLengthWithTerminatingNull, arrayBuffer->byteLength() ); 266 ASSERT_EQ(kQuickBrownFoxLengthWithTerminatingNull, arrayBuffer->byteLength() );
258 EXPECT_STREQ(kQuickBrownFox, static_cast<const char*>(arrayBuffer->data())); 267 EXPECT_STREQ(kQuickBrownFox, static_cast<const char*>(arrayBuffer->data()));
259 } 268 }
260 269
261 TEST(FetchDataLoaderTest, LoadAsArrayBufferFailed) 270 TEST(FetchDataLoaderTest, LoadAsArrayBufferFailed)
262 { 271 {
263 WebDataConsumerHandle::Client *client = nullptr; 272 WebDataConsumerHandle::Client *client = nullptr;
264 Checkpoint checkpoint; 273 Checkpoint checkpoint;
265 274
266 std::unique_ptr<MockHandle> handle = MockHandle::create(); 275 std::unique_ptr<MockHandle> handle = MockHandle::create();
267 276
268 // |reader| will be adopted by |obtainFetchDataReader|. 277 // |reader| will be adopted by |obtainFetchDataReader|.
269 MockReader* reader = MockReader::create().release(); 278 MockReader* reader = MockReader::create().release();
270 279
271 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe r(); 280 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe r();
272 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create(); 281 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
273 282
274 InSequence s; 283 InSequence s;
275 EXPECT_CALL(checkpoint, Call(1)); 284 EXPECT_CALL(checkpoint, Call(1));
276 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader))))); 285 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader)))));
286 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
277 EXPECT_CALL(checkpoint, Call(2)); 287 EXPECT_CALL(checkpoint, Call(2));
288 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe e<3>(0), Return(kShouldWait)));
278 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt hWithTerminatingNull), Return(kOk))); 289 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt hWithTerminatingNull), Return(kOk)));
279 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO nce(Return(kOk)); 290 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO nce(Return(kOk));
280 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro r)); 291 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro r));
281 EXPECT_CALL(*reader, destruct()); 292 EXPECT_CALL(*reader, destruct());
282 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); 293 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed());
283 EXPECT_CALL(checkpoint, Call(3)); 294 EXPECT_CALL(checkpoint, Call(3));
284 EXPECT_CALL(checkpoint, Call(4)); 295 EXPECT_CALL(checkpoint, Call(4));
285 296
286 checkpoint.Call(1); 297 checkpoint.Call(1);
287 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 298 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
288 checkpoint.Call(2); 299 checkpoint.Call(2);
289 ASSERT_TRUE(client); 300 ASSERT_TRUE(client);
290 client->didGetReadable(); 301 client->didGetReadable();
291 checkpoint.Call(3); 302 checkpoint.Call(3);
292 fetchDataLoader->cancel(); 303 fetchDataLoader->cancel();
293 checkpoint.Call(4); 304 checkpoint.Call(4);
294 } 305 }
295 306
296 TEST(FetchDataLoaderTest, LoadAsArrayBufferCancel) 307 TEST(FetchDataLoaderTest, LoadAsArrayBufferCancel)
297 { 308 {
298 Checkpoint checkpoint; 309 Checkpoint checkpoint;
299 310
300 std::unique_ptr<MockHandle> handle = MockHandle::create(); 311 std::unique_ptr<MockHandle> handle = MockHandle::create();
301 312
302 // |reader| will be adopted by |obtainFetchDataReader|. 313 // |reader| will be adopted by |obtainFetchDataReader|.
303 MockReader* reader = MockReader::create().release(); 314 MockReader* reader = MockReader::create().release();
304 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe r(); 315 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe r();
305 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create(); 316 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
306 317
307 InSequence s; 318 InSequence s;
308 EXPECT_CALL(checkpoint, Call(1)); 319 EXPECT_CALL(checkpoint, Call(1));
309 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader)))); 320 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader))));
321 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
310 EXPECT_CALL(checkpoint, Call(2)); 322 EXPECT_CALL(checkpoint, Call(2));
311 EXPECT_CALL(*reader, destruct()); 323 EXPECT_CALL(*reader, destruct());
312 EXPECT_CALL(checkpoint, Call(3)); 324 EXPECT_CALL(checkpoint, Call(3));
313 325
314 checkpoint.Call(1); 326 checkpoint.Call(1);
315 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 327 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
316 checkpoint.Call(2); 328 checkpoint.Call(2);
317 fetchDataLoader->cancel(); 329 fetchDataLoader->cancel();
318 checkpoint.Call(3); 330 checkpoint.Call(3);
319 } 331 }
320 332
321 TEST(FetchDataLoaderTest, LoadAsString) 333 TEST(FetchDataLoaderTest, LoadAsString)
322 { 334 {
323 WebDataConsumerHandle::Client *client = nullptr; 335 WebDataConsumerHandle::Client *client = nullptr;
324 Checkpoint checkpoint; 336 Checkpoint checkpoint;
325 337
326 std::unique_ptr<MockHandle> handle = MockHandle::create(); 338 std::unique_ptr<MockHandle> handle = MockHandle::create();
327 339
328 // |reader| will be adopted by |obtainFetchDataReader|. 340 // |reader| will be adopted by |obtainFetchDataReader|.
329 MockReader* reader = MockReader::create().release(); 341 MockReader* reader = MockReader::create().release();
330 342
331 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); 343 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString();
332 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create(); 344 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
333 345
334 InSequence s; 346 InSequence s;
335 EXPECT_CALL(checkpoint, Call(1)); 347 EXPECT_CALL(checkpoint, Call(1));
336 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader))))); 348 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader)))));
349 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
337 EXPECT_CALL(checkpoint, Call(2)); 350 EXPECT_CALL(checkpoint, Call(2));
351 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe e<3>(0), Return(kShouldWait)));
338 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt h), Return(kOk))); 352 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt h), Return(kOk)));
339 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk)); 353 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk));
340 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); 354 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone));
341 EXPECT_CALL(*reader, destruct()); 355 EXPECT_CALL(*reader, destruct());
342 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String(kQuickBr ownFox))); 356 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String(kQuickBr ownFox)));
343 EXPECT_CALL(checkpoint, Call(3)); 357 EXPECT_CALL(checkpoint, Call(3));
344 EXPECT_CALL(checkpoint, Call(4)); 358 EXPECT_CALL(checkpoint, Call(4));
345 359
346 checkpoint.Call(1); 360 checkpoint.Call(1);
347 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 361 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
348 checkpoint.Call(2); 362 checkpoint.Call(2);
349 ASSERT_TRUE(client); 363 ASSERT_TRUE(client);
350 client->didGetReadable(); 364 client->didGetReadable();
351 checkpoint.Call(3); 365 checkpoint.Call(3);
352 fetchDataLoader->cancel(); 366 fetchDataLoader->cancel();
353 checkpoint.Call(4); 367 checkpoint.Call(4);
354 } 368 }
355 369
356 TEST(FetchDataLoaderTest, LoadAsStringWithNullBytes) 370 TEST(FetchDataLoaderTest, LoadAsStringWithNullBytes)
357 { 371 {
358 WebDataConsumerHandle::Client *client = nullptr; 372 WebDataConsumerHandle::Client *client = nullptr;
359 Checkpoint checkpoint; 373 Checkpoint checkpoint;
360 374
361 std::unique_ptr<MockHandle> handle = MockHandle::create(); 375 std::unique_ptr<MockHandle> handle = MockHandle::create();
362 376
363 // |reader| will be adopted by |obtainFetchDataReader|. 377 // |reader| will be adopted by |obtainFetchDataReader|.
364 MockReader* reader = MockReader::create().release(); 378 MockReader* reader = MockReader::create().release();
365 379
366 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); 380 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString();
367 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create(); 381 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
368 382
369 InSequence s; 383 InSequence s;
370 EXPECT_CALL(checkpoint, Call(1)); 384 EXPECT_CALL(checkpoint, Call(1));
371 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader))))); 385 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader)))));
386 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
372 EXPECT_CALL(checkpoint, Call(2)); 387 EXPECT_CALL(checkpoint, Call(2));
388 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe e<3>(0), Return(kShouldWait)));
373 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>("Quick\0brown\0fox")), SetArgPointee<2>(16), Return(kO k))); 389 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>("Quick\0brown\0fox")), SetArgPointee<2>(16), Return(kO k)));
374 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO nce(Return(kOk)); 390 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO nce(Return(kOk));
375 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); 391 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone));
376 EXPECT_CALL(*reader, destruct()); 392 EXPECT_CALL(*reader, destruct());
377 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String("Quick\0 brown\0fox", 16))); 393 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String("Quick\0 brown\0fox", 16)));
378 EXPECT_CALL(checkpoint, Call(3)); 394 EXPECT_CALL(checkpoint, Call(3));
379 EXPECT_CALL(checkpoint, Call(4)); 395 EXPECT_CALL(checkpoint, Call(4));
380 396
381 checkpoint.Call(1); 397 checkpoint.Call(1);
382 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 398 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
383 checkpoint.Call(2); 399 checkpoint.Call(2);
384 ASSERT_TRUE(client); 400 ASSERT_TRUE(client);
385 client->didGetReadable(); 401 client->didGetReadable();
386 checkpoint.Call(3); 402 checkpoint.Call(3);
387 fetchDataLoader->cancel(); 403 fetchDataLoader->cancel();
388 checkpoint.Call(4); 404 checkpoint.Call(4);
389 } 405 }
390 406
391 TEST(FetchDataLoaderTest, LoadAsStringError) 407 TEST(FetchDataLoaderTest, LoadAsStringError)
392 { 408 {
393 WebDataConsumerHandle::Client *client = nullptr; 409 WebDataConsumerHandle::Client *client = nullptr;
394 Checkpoint checkpoint; 410 Checkpoint checkpoint;
395 411
396 std::unique_ptr<MockHandle> handle = MockHandle::create(); 412 std::unique_ptr<MockHandle> handle = MockHandle::create();
397 413
398 // |reader| will be adopted by |obtainFetchDataReader|. 414 // |reader| will be adopted by |obtainFetchDataReader|.
399 MockReader* reader = MockReader::create().release(); 415 MockReader* reader = MockReader::create().release();
400 416
401 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); 417 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString();
402 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create(); 418 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
403 419
404 InSequence s; 420 InSequence s;
405 EXPECT_CALL(checkpoint, Call(1)); 421 EXPECT_CALL(checkpoint, Call(1));
406 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader))))); 422 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader)))));
423 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
407 EXPECT_CALL(checkpoint, Call(2)); 424 EXPECT_CALL(checkpoint, Call(2));
425 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe e<3>(0), Return(kShouldWait)));
408 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt h), Return(kOk))); 426 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt h), Return(kOk)));
409 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk)); 427 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk));
410 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro r)); 428 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro r));
411 EXPECT_CALL(*reader, destruct()); 429 EXPECT_CALL(*reader, destruct());
412 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); 430 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed());
413 EXPECT_CALL(checkpoint, Call(3)); 431 EXPECT_CALL(checkpoint, Call(3));
414 EXPECT_CALL(checkpoint, Call(4)); 432 EXPECT_CALL(checkpoint, Call(4));
415 433
416 checkpoint.Call(1); 434 checkpoint.Call(1);
417 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 435 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
418 checkpoint.Call(2); 436 checkpoint.Call(2);
419 ASSERT_TRUE(client); 437 ASSERT_TRUE(client);
420 client->didGetReadable(); 438 client->didGetReadable();
421 checkpoint.Call(3); 439 checkpoint.Call(3);
422 fetchDataLoader->cancel(); 440 fetchDataLoader->cancel();
423 checkpoint.Call(4); 441 checkpoint.Call(4);
424 } 442 }
425 443
426 TEST(FetchDataLoaderTest, LoadAsStringCancel) 444 TEST(FetchDataLoaderTest, LoadAsStringCancel)
427 { 445 {
428 Checkpoint checkpoint; 446 Checkpoint checkpoint;
429 447
430 std::unique_ptr<MockHandle> handle = MockHandle::create(); 448 std::unique_ptr<MockHandle> handle = MockHandle::create();
431 449
432 // |reader| will be adopted by |obtainFetchDataReader|. 450 // |reader| will be adopted by |obtainFetchDataReader|.
433 MockReader* reader = MockReader::create().release(); 451 MockReader* reader = MockReader::create().release();
434 452
435 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); 453 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString();
436 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create(); 454 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
437 455
438 InSequence s; 456 InSequence s;
439 EXPECT_CALL(checkpoint, Call(1)); 457 EXPECT_CALL(checkpoint, Call(1));
440 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader)))); 458 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader))));
459 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
441 EXPECT_CALL(checkpoint, Call(2)); 460 EXPECT_CALL(checkpoint, Call(2));
442 EXPECT_CALL(*reader, destruct()); 461 EXPECT_CALL(*reader, destruct());
443 EXPECT_CALL(checkpoint, Call(3)); 462 EXPECT_CALL(checkpoint, Call(3));
444 463
445 checkpoint.Call(1); 464 checkpoint.Call(1);
446 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); 465 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand le)), fetchDataLoaderClient);
447 checkpoint.Call(2); 466 checkpoint.Call(2);
448 fetchDataLoader->cancel(); 467 fetchDataLoader->cancel();
449 checkpoint.Call(3); 468 checkpoint.Call(3);
450 } 469 }
451 470
452 } // namespace 471 } // namespace
453 472
454 } // namespace blink 473 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698