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

Side by Side Diff: chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc

Issue 2000803003: Use std::unique_ptr for base::DictionaryValue and base::ListValue's internal store. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More fixes Created 4 years, 6 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
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 "chrome/browser/ui/webui/md_downloads/downloads_list_tracker.h" 5 #include "chrome/browser/ui/webui/md_downloads/downloads_list_tracker.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 12 matching lines...) Expand all
23 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
24 24
25 using content::DownloadItem; 25 using content::DownloadItem;
26 using content::MockDownloadItem; 26 using content::MockDownloadItem;
27 using DownloadVector = std::vector<DownloadItem*>; 27 using DownloadVector = std::vector<DownloadItem*>;
28 using testing::_; 28 using testing::_;
29 using testing::Return; 29 using testing::Return;
30 30
31 namespace { 31 namespace {
32 32
33 uint64_t GetId(const base::Value* value) { 33 uint64_t GetId(const base::Value& value) {
34 const base::DictionaryValue* dict; 34 const base::DictionaryValue* dict;
35 CHECK(value->GetAsDictionary(&dict)); 35 CHECK(value.GetAsDictionary(&dict));
36 36
37 int id; 37 int id;
38 CHECK(dict->GetInteger("id", &id)); 38 CHECK(dict->GetInteger("id", &id));
39 CHECK_GE(id, 0); 39 CHECK_GE(id, 0);
40 return static_cast<uint64_t>(id); 40 return static_cast<uint64_t>(id);
41 } 41 }
42 42
43 std::vector<uint64_t> GetIds(const base::Value* value) { 43 std::vector<uint64_t> GetIds(const base::Value& value) {
44 CHECK(value);
45
46 std::vector<uint64_t> ids; 44 std::vector<uint64_t> ids;
47 45
48 if (value->GetType() == base::Value::TYPE_LIST) { 46 const base::ListValue* list;
49 const base::ListValue* list; 47 if (value.GetAsList(&list)) {
50 value->GetAsList(&list); 48 for (const auto& list_item : *list)
51 49 ids.push_back(GetId(*list_item));
52 for (auto* list_item : *list)
53 ids.push_back(GetId(list_item));
54 } else { 50 } else {
55 ids.push_back(GetId(value)); 51 ids.push_back(GetId(value));
56 } 52 }
57 53
58 return ids; 54 return ids;
59 } 55 }
60 56
61 int GetIndex(const base::Value* value) { 57 int GetIndex(const base::Value* value) {
62 CHECK(value); 58 CHECK(value);
63 int index; 59 int index;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 ASSERT_TRUE(tracker()->GetItemForTesting(0)); 174 ASSERT_TRUE(tracker()->GetItemForTesting(0));
179 EXPECT_TRUE(web_ui()->call_data().empty()); 175 EXPECT_TRUE(web_ui()->call_data().empty());
180 176
181 tracker()->StartAndSendChunk(); 177 tracker()->StartAndSendChunk();
182 ASSERT_FALSE(web_ui()->call_data().empty()); 178 ASSERT_FALSE(web_ui()->call_data().empty());
183 179
184 EXPECT_EQ("downloads.Manager.insertItems", 180 EXPECT_EQ("downloads.Manager.insertItems",
185 web_ui()->call_data()[0]->function_name()); 181 web_ui()->call_data()[0]->function_name());
186 EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1())); 182 EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1()));
187 183
188 std::vector<uint64_t> ids = GetIds(web_ui()->call_data()[0]->arg2()); 184 std::vector<uint64_t> ids = GetIds(*web_ui()->call_data()[0]->arg2());
189 ASSERT_FALSE(ids.empty()); 185 ASSERT_FALSE(ids.empty());
190 EXPECT_EQ(first_item->GetId(), ids[0]); 186 EXPECT_EQ(first_item->GetId(), ids[0]);
191 } 187 }
192 188
193 // The page is in a loading state until it gets an insertItems call. Ensure that 189 // The page is in a loading state until it gets an insertItems call. Ensure that
194 // happens even without downloads. 190 // happens even without downloads.
195 TEST_F(DownloadsListTrackerTest, EmptyGetAllItemsStillCallsInsertItems) { 191 TEST_F(DownloadsListTrackerTest, EmptyGetAllItemsStillCallsInsertItems) {
196 CreateTracker(); 192 CreateTracker();
197 193
198 ASSERT_FALSE(tracker()->GetItemForTesting(0)); 194 ASSERT_FALSE(tracker()->GetItemForTesting(0));
199 ASSERT_TRUE(web_ui()->call_data().empty()); 195 ASSERT_TRUE(web_ui()->call_data().empty());
200 196
201 tracker()->StartAndSendChunk(); 197 tracker()->StartAndSendChunk();
202 198
203 ASSERT_FALSE(web_ui()->call_data().empty()); 199 ASSERT_FALSE(web_ui()->call_data().empty());
204 EXPECT_EQ("downloads.Manager.insertItems", 200 EXPECT_EQ("downloads.Manager.insertItems",
205 web_ui()->call_data()[0]->function_name()); 201 web_ui()->call_data()[0]->function_name());
206 ASSERT_TRUE(web_ui()->call_data()[0]->arg2()); 202 ASSERT_TRUE(web_ui()->call_data()[0]->arg2());
207 EXPECT_TRUE(GetIds(web_ui()->call_data()[0]->arg2()).empty()); 203 EXPECT_TRUE(GetIds(*web_ui()->call_data()[0]->arg2()).empty());
208 } 204 }
209 205
210 TEST_F(DownloadsListTrackerTest, OnDownloadCreatedCallsInsertItems) { 206 TEST_F(DownloadsListTrackerTest, OnDownloadCreatedCallsInsertItems) {
211 CreateTracker(); 207 CreateTracker();
212 tracker()->StartAndSendChunk(); 208 tracker()->StartAndSendChunk();
213 web_ui()->ClearTrackedCalls(); 209 web_ui()->ClearTrackedCalls();
214 210
215 ASSERT_FALSE(tracker()->GetItemForTesting(0)); 211 ASSERT_FALSE(tracker()->GetItemForTesting(0));
216 DownloadItem* first_item = CreateNextItem(); 212 DownloadItem* first_item = CreateNextItem();
217 tracker()->OnDownloadCreated(manager(), first_item); 213 tracker()->OnDownloadCreated(manager(), first_item);
218 214
219 ASSERT_FALSE(web_ui()->call_data().empty()); 215 ASSERT_FALSE(web_ui()->call_data().empty());
220 EXPECT_EQ("downloads.Manager.insertItems", 216 EXPECT_EQ("downloads.Manager.insertItems",
221 web_ui()->call_data()[0]->function_name()); 217 web_ui()->call_data()[0]->function_name());
222 EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1())); 218 EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1()));
223 219
224 std::vector<uint64_t> ids = GetIds(web_ui()->call_data()[0]->arg2()); 220 std::vector<uint64_t> ids = GetIds(*web_ui()->call_data()[0]->arg2());
225 ASSERT_FALSE(ids.empty()); 221 ASSERT_FALSE(ids.empty());
226 EXPECT_EQ(first_item->GetId(), ids[0]); 222 EXPECT_EQ(first_item->GetId(), ids[0]);
227 } 223 }
228 224
229 TEST_F(DownloadsListTrackerTest, OnDownloadRemovedCallsRemoveItem) { 225 TEST_F(DownloadsListTrackerTest, OnDownloadRemovedCallsRemoveItem) {
230 DownloadItem* first_item = CreateNextItem(); 226 DownloadItem* first_item = CreateNextItem();
231 227
232 CreateTracker(); 228 CreateTracker();
233 tracker()->StartAndSendChunk(); 229 tracker()->StartAndSendChunk();
234 web_ui()->ClearTrackedCalls(); 230 web_ui()->ClearTrackedCalls();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 DownloadItem* first_item = CreateNextItem(); 265 DownloadItem* first_item = CreateNextItem();
270 DownloadItemModel(first_item).SetShouldShowInShelf(false); 266 DownloadItemModel(first_item).SetShouldShowInShelf(false);
271 267
272 CreateTracker(); 268 CreateTracker();
273 tracker()->StartAndSendChunk(); 269 tracker()->StartAndSendChunk();
274 270
275 ASSERT_FALSE(web_ui()->call_data().empty()); 271 ASSERT_FALSE(web_ui()->call_data().empty());
276 272
277 EXPECT_EQ("downloads.Manager.insertItems", 273 EXPECT_EQ("downloads.Manager.insertItems",
278 web_ui()->call_data()[0]->function_name()); 274 web_ui()->call_data()[0]->function_name());
279 EXPECT_TRUE(GetIds(web_ui()->call_data()[0]->arg2()).empty()); 275 EXPECT_TRUE(GetIds(*web_ui()->call_data()[0]->arg2()).empty());
280 } 276 }
281 277
282 TEST_F(DownloadsListTrackerTest, Incognito) { 278 TEST_F(DownloadsListTrackerTest, Incognito) {
283 testing::NiceMock<content::MockDownloadManager> incognito_manager; 279 testing::NiceMock<content::MockDownloadManager> incognito_manager;
284 ON_CALL(incognito_manager, GetBrowserContext()).WillByDefault(Return( 280 ON_CALL(incognito_manager, GetBrowserContext()).WillByDefault(Return(
285 TestingProfile::Builder().BuildIncognito(profile()))); 281 TestingProfile::Builder().BuildIncognito(profile())));
286 282
287 MockDownloadItem item; 283 MockDownloadItem item;
288 EXPECT_CALL(item, GetId()).WillRepeatedly(Return(0)); 284 EXPECT_CALL(item, GetId()).WillRepeatedly(Return(0));
289 285
(...skipping 12 matching lines...) Expand all
302 298
303 CreateTracker(); 299 CreateTracker();
304 tracker()->SetChunkSizeForTesting(3); 300 tracker()->SetChunkSizeForTesting(3);
305 tracker()->StartAndSendChunk(); 301 tracker()->StartAndSendChunk();
306 302
307 ASSERT_FALSE(web_ui()->call_data().empty()); 303 ASSERT_FALSE(web_ui()->call_data().empty());
308 304
309 EXPECT_EQ("downloads.Manager.insertItems", 305 EXPECT_EQ("downloads.Manager.insertItems",
310 web_ui()->call_data()[0]->function_name()); 306 web_ui()->call_data()[0]->function_name());
311 EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1())); 307 EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1()));
312 EXPECT_EQ(3u, GetIds(web_ui()->call_data()[0]->arg2()).size()); 308 EXPECT_EQ(3u, GetIds(*web_ui()->call_data()[0]->arg2()).size());
313 309
314 tracker()->StartAndSendChunk(); 310 tracker()->StartAndSendChunk();
315 ASSERT_GE(2u, web_ui()->call_data().size()); 311 ASSERT_GE(2u, web_ui()->call_data().size());
316 312
317 EXPECT_EQ("downloads.Manager.insertItems", 313 EXPECT_EQ("downloads.Manager.insertItems",
318 web_ui()->call_data()[1]->function_name()); 314 web_ui()->call_data()[1]->function_name());
319 EXPECT_EQ(3, GetIndex(web_ui()->call_data()[1]->arg1())); 315 EXPECT_EQ(3, GetIndex(web_ui()->call_data()[1]->arg1()));
320 EXPECT_EQ(2u, GetIds(web_ui()->call_data()[1]->arg2()).size()); 316 EXPECT_EQ(2u, GetIds(*web_ui()->call_data()[1]->arg2()).size());
321 } 317 }
322 318
323 TEST_F(DownloadsListTrackerTest, IgnoreUnsentItemUpdates) { 319 TEST_F(DownloadsListTrackerTest, IgnoreUnsentItemUpdates) {
324 DownloadItem* unsent_item = CreateNextItem(); 320 DownloadItem* unsent_item = CreateNextItem();
325 CreateNextItem(); 321 CreateNextItem();
326 322
327 CreateTracker(); 323 CreateTracker();
328 tracker()->SetChunkSizeForTesting(1); 324 tracker()->SetChunkSizeForTesting(1);
329 tracker()->StartAndSendChunk(); 325 tracker()->StartAndSendChunk();
330 326
331 ASSERT_FALSE(web_ui()->call_data().empty()); 327 ASSERT_FALSE(web_ui()->call_data().empty());
332 328
333 EXPECT_EQ("downloads.Manager.insertItems", 329 EXPECT_EQ("downloads.Manager.insertItems",
334 web_ui()->call_data()[0]->function_name()); 330 web_ui()->call_data()[0]->function_name());
335 EXPECT_EQ(1u, GetIds(web_ui()->call_data()[0]->arg2()).size()); 331 EXPECT_EQ(1u, GetIds(*web_ui()->call_data()[0]->arg2()).size());
336 332
337 tracker()->OnDownloadUpdated(manager(), unsent_item); 333 tracker()->OnDownloadUpdated(manager(), unsent_item);
338 EXPECT_EQ(1u, web_ui()->call_data().size()); 334 EXPECT_EQ(1u, web_ui()->call_data().size());
339 } 335 }
340 336
341 TEST_F(DownloadsListTrackerTest, IgnoreUnsentItemRemovals) { 337 TEST_F(DownloadsListTrackerTest, IgnoreUnsentItemRemovals) {
342 DownloadItem* unsent_item = CreateNextItem(); 338 DownloadItem* unsent_item = CreateNextItem();
343 CreateNextItem(); 339 CreateNextItem();
344 340
345 CreateTracker(); 341 CreateTracker();
346 tracker()->SetChunkSizeForTesting(1); 342 tracker()->SetChunkSizeForTesting(1);
347 tracker()->StartAndSendChunk(); 343 tracker()->StartAndSendChunk();
348 344
349 ASSERT_FALSE(web_ui()->call_data().empty()); 345 ASSERT_FALSE(web_ui()->call_data().empty());
350 346
351 EXPECT_EQ("downloads.Manager.insertItems", 347 EXPECT_EQ("downloads.Manager.insertItems",
352 web_ui()->call_data()[0]->function_name()); 348 web_ui()->call_data()[0]->function_name());
353 EXPECT_EQ(1u, GetIds(web_ui()->call_data()[0]->arg2()).size()); 349 EXPECT_EQ(1u, GetIds(*web_ui()->call_data()[0]->arg2()).size());
354 350
355 DownloadItemModel(unsent_item).SetShouldShowInShelf(false); 351 DownloadItemModel(unsent_item).SetShouldShowInShelf(false);
356 tracker()->OnDownloadUpdated(manager(), unsent_item); 352 tracker()->OnDownloadUpdated(manager(), unsent_item);
357 EXPECT_EQ(1u, web_ui()->call_data().size()); 353 EXPECT_EQ(1u, web_ui()->call_data().size());
358 354
359 DownloadItemModel(unsent_item).SetShouldShowInShelf(true); 355 DownloadItemModel(unsent_item).SetShouldShowInShelf(true);
360 tracker()->OnDownloadUpdated(manager(), unsent_item); 356 tracker()->OnDownloadUpdated(manager(), unsent_item);
361 EXPECT_EQ(1u, web_ui()->call_data().size()); 357 EXPECT_EQ(1u, web_ui()->call_data().size());
362 } 358 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698