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

Side by Side Diff: components/invalidation/impl/sync_system_resources.cc

Issue 2465733002: Remove stl_util's deletion function use from components/invalidation/. (Closed)
Patch Set: Created 4 years, 1 month 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/invalidation/impl/sync_system_resources.h" 5 #include "components/invalidation/impl/sync_system_resources.h"
6 6
7 #include <algorithm>
7 #include <cstdlib> 8 #include <cstdlib>
8 #include <cstring> 9 #include <cstring>
9 #include <string> 10 #include <string>
10 #include <utility> 11 #include <utility>
11 12
12 #include "base/bind.h" 13 #include "base/bind.h"
13 #include "base/location.h" 14 #include "base/location.h"
14 #include "base/logging.h" 15 #include "base/logging.h"
15 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
16 #include "base/single_thread_task_runner.h" 17 #include "base/single_thread_task_runner.h"
17 #include "base/stl_util.h"
18 #include "base/strings/string_util.h" 18 #include "base/strings/string_util.h"
19 #include "base/strings/stringprintf.h" 19 #include "base/strings/stringprintf.h"
20 #include "base/threading/thread_task_runner_handle.h" 20 #include "base/threading/thread_task_runner_handle.h"
21 #include "components/invalidation/impl/gcm_network_channel.h" 21 #include "components/invalidation/impl/gcm_network_channel.h"
22 #include "components/invalidation/impl/gcm_network_channel_delegate.h" 22 #include "components/invalidation/impl/gcm_network_channel_delegate.h"
23 #include "components/invalidation/impl/push_client_channel.h" 23 #include "components/invalidation/impl/push_client_channel.h"
24 #include "components/invalidation/public/invalidation_util.h" 24 #include "components/invalidation/public/invalidation_util.h"
25 #include "google/cacheinvalidation/deps/callback.h" 25 #include "google/cacheinvalidation/deps/callback.h"
26 #include "google/cacheinvalidation/include/types.h" 26 #include "google/cacheinvalidation/include/types.h"
27 #include "jingle/notifier/listener/push_client.h" 27 #include "jingle/notifier/listener/push_client.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 is_started_ = true; 86 is_started_ = true;
87 is_stopped_ = false; 87 is_stopped_ = false;
88 weak_factory_.InvalidateWeakPtrs(); 88 weak_factory_.InvalidateWeakPtrs();
89 } 89 }
90 90
91 void SyncInvalidationScheduler::Stop() { 91 void SyncInvalidationScheduler::Stop() {
92 CHECK(IsRunningOnThread()); 92 CHECK(IsRunningOnThread());
93 is_stopped_ = true; 93 is_stopped_ = true;
94 is_started_ = false; 94 is_started_ = false;
95 weak_factory_.InvalidateWeakPtrs(); 95 weak_factory_.InvalidateWeakPtrs();
96 base::STLDeleteElements(&posted_tasks_); 96 posted_tasks_.clear();
97 } 97 }
98 98
99 void SyncInvalidationScheduler::Schedule(invalidation::TimeDelta delay, 99 void SyncInvalidationScheduler::Schedule(invalidation::TimeDelta delay,
100 invalidation::Closure* task) { 100 invalidation::Closure* task) {
101 DCHECK(invalidation::IsCallbackRepeatable(task)); 101 DCHECK(invalidation::IsCallbackRepeatable(task));
102 CHECK(IsRunningOnThread()); 102 CHECK(IsRunningOnThread());
103 103
104 if (!is_started_) { 104 if (!is_started_) {
105 delete task; 105 delete task;
106 return; 106 return;
107 } 107 }
108 108
109 posted_tasks_.insert(task); 109 posted_tasks_.insert(base::WrapUnique(task));
110 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 110 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
111 FROM_HERE, base::Bind(&SyncInvalidationScheduler::RunPostedTask, 111 FROM_HERE, base::Bind(&SyncInvalidationScheduler::RunPostedTask,
112 weak_factory_.GetWeakPtr(), task), 112 weak_factory_.GetWeakPtr(), task),
113 delay); 113 delay);
114 } 114 }
115 115
116 bool SyncInvalidationScheduler::IsRunningOnThread() const { 116 bool SyncInvalidationScheduler::IsRunningOnThread() const {
117 return created_on_task_runner_->BelongsToCurrentThread(); 117 return created_on_task_runner_->BelongsToCurrentThread();
118 } 118 }
119 119
120 invalidation::Time SyncInvalidationScheduler::GetCurrentTime() const { 120 invalidation::Time SyncInvalidationScheduler::GetCurrentTime() const {
121 CHECK(IsRunningOnThread()); 121 CHECK(IsRunningOnThread());
122 return base::Time::Now(); 122 return base::Time::Now();
123 } 123 }
124 124
125 void SyncInvalidationScheduler::SetSystemResources( 125 void SyncInvalidationScheduler::SetSystemResources(
126 invalidation::SystemResources* resources) { 126 invalidation::SystemResources* resources) {
127 // Do nothing. 127 // Do nothing.
128 } 128 }
129 129
130 void SyncInvalidationScheduler::RunPostedTask(invalidation::Closure* task) { 130 void SyncInvalidationScheduler::RunPostedTask(invalidation::Closure* task) {
131 CHECK(IsRunningOnThread()); 131 CHECK(IsRunningOnThread());
132 task->Run(); 132 task->Run();
133 posted_tasks_.erase(task); 133 auto it =
134 delete task; 134 std::find_if(posted_tasks_.begin(), posted_tasks_.end(),
dcheng 2016/10/31 00:19:29 Part of me almost feels like we should just have a
Avi (use Gerrit) 2016/10/31 15:21:04 Acknowledged.
135 [task](const std::unique_ptr<invalidation::Closure>& ptr) {
136 return ptr.get() == task;
137 });
138 posted_tasks_.erase(it);
135 } 139 }
136 140
137 SyncNetworkChannel::SyncNetworkChannel() 141 SyncNetworkChannel::SyncNetworkChannel()
138 : last_network_status_(false), 142 : last_network_status_(false),
139 received_messages_count_(0) {} 143 received_messages_count_(0) {}
140 144
141 SyncNetworkChannel::~SyncNetworkChannel() { 145 SyncNetworkChannel::~SyncNetworkChannel() {
142 base::STLDeleteElements(&network_status_receivers_);
143 } 146 }
144 147
145 void SyncNetworkChannel::SetMessageReceiver( 148 void SyncNetworkChannel::SetMessageReceiver(
146 invalidation::MessageCallback* incoming_receiver) { 149 invalidation::MessageCallback* incoming_receiver) {
147 incoming_receiver_.reset(incoming_receiver); 150 incoming_receiver_.reset(incoming_receiver);
148 } 151 }
149 152
150 void SyncNetworkChannel::AddNetworkStatusReceiver( 153 void SyncNetworkChannel::AddNetworkStatusReceiver(
151 invalidation::NetworkStatusCallback* network_status_receiver) { 154 invalidation::NetworkStatusCallback* network_status_receiver) {
152 network_status_receiver->Run(last_network_status_); 155 network_status_receiver->Run(last_network_status_);
153 network_status_receivers_.push_back(network_status_receiver); 156 network_status_receivers_.push_back(
157 base::WrapUnique(network_status_receiver));
154 } 158 }
155 159
156 void SyncNetworkChannel::SetSystemResources( 160 void SyncNetworkChannel::SetSystemResources(
157 invalidation::SystemResources* resources) { 161 invalidation::SystemResources* resources) {
158 // Do nothing. 162 // Do nothing.
159 } 163 }
160 164
161 void SyncNetworkChannel::AddObserver(Observer* observer) { 165 void SyncNetworkChannel::AddObserver(Observer* observer) {
162 observers_.AddObserver(observer); 166 observers_.AddObserver(observer);
163 } 167 }
(...skipping 13 matching lines...) Expand all
177 scoped_refptr<net::URLRequestContextGetter> request_context_getter, 181 scoped_refptr<net::URLRequestContextGetter> request_context_getter,
178 std::unique_ptr<GCMNetworkChannelDelegate> delegate) { 182 std::unique_ptr<GCMNetworkChannelDelegate> delegate) {
179 return base::MakeUnique<GCMNetworkChannel>(request_context_getter, 183 return base::MakeUnique<GCMNetworkChannel>(request_context_getter,
180 std::move(delegate)); 184 std::move(delegate));
181 } 185 }
182 186
183 void SyncNetworkChannel::NotifyNetworkStatusChange(bool online) { 187 void SyncNetworkChannel::NotifyNetworkStatusChange(bool online) {
184 // Remember network state for future NetworkStatusReceivers. 188 // Remember network state for future NetworkStatusReceivers.
185 last_network_status_ = online; 189 last_network_status_ = online;
186 // Notify NetworkStatusReceivers in cacheinvalidation. 190 // Notify NetworkStatusReceivers in cacheinvalidation.
187 for (NetworkStatusReceiverList::const_iterator it = 191 for (const auto& receiver : network_status_receivers_) {
188 network_status_receivers_.begin(); 192 receiver->Run(online);
189 it != network_status_receivers_.end(); ++it) {
190 (*it)->Run(online);
191 } 193 }
192 } 194 }
193 195
194 void SyncNetworkChannel::NotifyChannelStateChange( 196 void SyncNetworkChannel::NotifyChannelStateChange(
195 InvalidatorState invalidator_state) { 197 InvalidatorState invalidator_state) {
196 for (auto& observer : observers_) 198 for (auto& observer : observers_)
197 observer.OnNetworkChannelStateChanged(invalidator_state); 199 observer.OnNetworkChannelStateChanged(invalidator_state);
198 } 200 }
199 201
200 bool SyncNetworkChannel::DeliverIncomingMessage(const std::string& message) { 202 bool SyncNetworkChannel::DeliverIncomingMessage(const std::string& message) {
(...skipping 22 matching lines...) Expand all
223 225
224 void SyncStorage::WriteKey(const std::string& key, const std::string& value, 226 void SyncStorage::WriteKey(const std::string& key, const std::string& value,
225 invalidation::WriteKeyCallback* done) { 227 invalidation::WriteKeyCallback* done) {
226 CHECK(state_writer_); 228 CHECK(state_writer_);
227 // TODO(ghc): actually write key,value associations, and don't invoke the 229 // TODO(ghc): actually write key,value associations, and don't invoke the
228 // callback until the operation completes. 230 // callback until the operation completes.
229 state_writer_->WriteState(value); 231 state_writer_->WriteState(value);
230 cached_state_ = value; 232 cached_state_ = value;
231 // According to the cache invalidation API folks, we can do this as 233 // According to the cache invalidation API folks, we can do this as
232 // long as we make sure to clear the persistent state that we start 234 // long as we make sure to clear the persistent state that we start
233 // up the cache invalidation client with. However, we musn't do it 235 // up the cache invalidation client with. However, we mustn't do it
234 // right away, as we may be called under a lock that the callback 236 // right away, as we may be called under a lock that the callback
235 // uses. 237 // uses.
236 scheduler_->Schedule( 238 scheduler_->Schedule(
237 invalidation::Scheduler::NoDelay(), 239 invalidation::Scheduler::NoDelay(),
238 invalidation::NewPermanentCallback( 240 invalidation::NewPermanentCallback(
239 this, &SyncStorage::RunAndDeleteWriteKeyCallback, 241 this, &SyncStorage::RunAndDeleteWriteKeyCallback,
240 done)); 242 done));
241 } 243 }
242 244
243 void SyncStorage::ReadKey(const std::string& key, 245 void SyncStorage::ReadKey(const std::string& key,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 331
330 SyncInvalidationScheduler* SyncSystemResources::internal_scheduler() { 332 SyncInvalidationScheduler* SyncSystemResources::internal_scheduler() {
331 return internal_scheduler_.get(); 333 return internal_scheduler_.get();
332 } 334 }
333 335
334 SyncInvalidationScheduler* SyncSystemResources::listener_scheduler() { 336 SyncInvalidationScheduler* SyncSystemResources::listener_scheduler() {
335 return listener_scheduler_.get(); 337 return listener_scheduler_.get();
336 } 338 }
337 339
338 } // namespace syncer 340 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698