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

Side by Side Diff: components/offline_pages/background/request_queue_in_memory_store.cc

Issue 2197573003: Provide API in RequestCoordinator to remove results by client ID. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Enhance unit tests and code per CR feedback per FGorski. 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/offline_pages/background/request_queue_in_memory_store.h" 5 #include "components/offline_pages/background/request_queue_in_memory_store.h"
6 6
7 #include <set>
8
7 #include "base/bind.h" 9 #include "base/bind.h"
8 #include "base/location.h" 10 #include "base/location.h"
9 #include "base/threading/thread_task_runner_handle.h" 11 #include "base/threading/thread_task_runner_handle.h"
10 #include "components/offline_pages/background/save_page_request.h" 12 #include "components/offline_pages/background/save_page_request.h"
11 13
12 namespace offline_pages { 14 namespace offline_pages {
13 15
14 RequestQueueInMemoryStore::RequestQueueInMemoryStore() {} 16 RequestQueueInMemoryStore::RequestQueueInMemoryStore() {}
15 17
16 RequestQueueInMemoryStore::~RequestQueueInMemoryStore() {} 18 RequestQueueInMemoryStore::~RequestQueueInMemoryStore() {}
(...skipping 14 matching lines...) Expand all
31 if (iter != requests_.end()) 33 if (iter != requests_.end())
32 requests_.erase(iter); 34 requests_.erase(iter);
33 requests_.insert(std::make_pair(request.request_id(), request)); 35 requests_.insert(std::make_pair(request.request_id(), request));
34 base::ThreadTaskRunnerHandle::Get()->PostTask( 36 base::ThreadTaskRunnerHandle::Get()->PostTask(
35 FROM_HERE, base::Bind(callback, UpdateStatus::UPDATED)); 37 FROM_HERE, base::Bind(callback, UpdateStatus::UPDATED));
36 } 38 }
37 39
38 void RequestQueueInMemoryStore::RemoveRequests( 40 void RequestQueueInMemoryStore::RemoveRequests(
39 const std::vector<int64_t>& request_ids, 41 const std::vector<int64_t>& request_ids,
40 const RemoveCallback& callback) { 42 const RemoveCallback& callback) {
41 // In case the |request_ids| is empty, the result will be true, but the count
42 // of deleted pages will be empty.
43 int count = 0; 43 int count = 0;
44 RequestsMap::iterator iter; 44 RequestsMap::iterator iter;
45 for (auto request_id : request_ids) { 45 for (auto request_id : request_ids) {
46 iter = requests_.find(request_id); 46 iter = requests_.find(request_id);
47 if (iter != requests_.end()) { 47 if (iter != requests_.end()) {
48 requests_.erase(iter); 48 requests_.erase(iter);
49 ++count; 49 ++count;
50 } 50 }
51 } 51 }
52 52
53 base::ThreadTaskRunnerHandle::Get()->PostTask( 53 base::ThreadTaskRunnerHandle::Get()->PostTask(
54 FROM_HERE, base::Bind(callback, true, count)); 54 FROM_HERE, base::Bind(callback, true, count));
55 } 55 }
56 56
57 void RequestQueueInMemoryStore::RemoveRequestsByClientId(
58 const std::vector<ClientId>& client_ids,
59 const RemoveCallback& callback) {
60 int count = 0;
61
62 std::set<ClientId> client_id_set(client_ids.begin(), client_ids.end());
63 for (auto iter = requests_.begin(); iter != requests_.end(); ) {
64 if (client_id_set.find(iter->second.client_id()) != client_id_set.end()) {
65 requests_.erase(iter++);
66 ++count;
67 } else {
68 ++iter;
69 }
70 }
71
fgorski 2016/08/03 03:29:41 nit: remove 2 emtpy lines.
Pete Williamson 2016/08/03 19:51:09 Done.
72
73
74 base::ThreadTaskRunnerHandle::Get()->PostTask(
75 FROM_HERE, base::Bind(callback, true, count));
76 }
77
57 void RequestQueueInMemoryStore::Reset(const ResetCallback& callback) { 78 void RequestQueueInMemoryStore::Reset(const ResetCallback& callback) {
58 requests_.clear(); 79 requests_.clear();
59 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 80 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
60 base::Bind(callback, true)); 81 base::Bind(callback, true));
61 } 82 }
62 83
63 } // namespace offline_pages 84 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698