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

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

Issue 2464903003: Revert of 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
« no previous file with comments | « components/invalidation/impl/sync_system_resources.h ('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 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>
8 #include <cstdlib> 7 #include <cstdlib>
9 #include <cstring> 8 #include <cstring>
10 #include <string> 9 #include <string>
11 #include <utility> 10 #include <utility>
12 11
13 #include "base/bind.h" 12 #include "base/bind.h"
14 #include "base/location.h" 13 #include "base/location.h"
15 #include "base/logging.h" 14 #include "base/logging.h"
16 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
17 #include "base/single_thread_task_runner.h" 16 #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 posted_tasks_.clear(); 96 base::STLDeleteElements(&posted_tasks_);
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(base::WrapUnique(task)); 109 posted_tasks_.insert(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 auto it = 133 posted_tasks_.erase(task);
134 std::find_if(posted_tasks_.begin(), posted_tasks_.end(), 134 delete task;
135 [task](const std::unique_ptr<invalidation::Closure>& ptr) {
136 return ptr.get() == task;
137 });
138 posted_tasks_.erase(it);
139 } 135 }
140 136
141 SyncNetworkChannel::SyncNetworkChannel() 137 SyncNetworkChannel::SyncNetworkChannel()
142 : last_network_status_(false), 138 : last_network_status_(false),
143 received_messages_count_(0) {} 139 received_messages_count_(0) {}
144 140
145 SyncNetworkChannel::~SyncNetworkChannel() { 141 SyncNetworkChannel::~SyncNetworkChannel() {
142 base::STLDeleteElements(&network_status_receivers_);
146 } 143 }
147 144
148 void SyncNetworkChannel::SetMessageReceiver( 145 void SyncNetworkChannel::SetMessageReceiver(
149 invalidation::MessageCallback* incoming_receiver) { 146 invalidation::MessageCallback* incoming_receiver) {
150 incoming_receiver_.reset(incoming_receiver); 147 incoming_receiver_.reset(incoming_receiver);
151 } 148 }
152 149
153 void SyncNetworkChannel::AddNetworkStatusReceiver( 150 void SyncNetworkChannel::AddNetworkStatusReceiver(
154 invalidation::NetworkStatusCallback* network_status_receiver) { 151 invalidation::NetworkStatusCallback* network_status_receiver) {
155 network_status_receiver->Run(last_network_status_); 152 network_status_receiver->Run(last_network_status_);
156 network_status_receivers_.push_back( 153 network_status_receivers_.push_back(network_status_receiver);
157 base::WrapUnique(network_status_receiver));
158 } 154 }
159 155
160 void SyncNetworkChannel::SetSystemResources( 156 void SyncNetworkChannel::SetSystemResources(
161 invalidation::SystemResources* resources) { 157 invalidation::SystemResources* resources) {
162 // Do nothing. 158 // Do nothing.
163 } 159 }
164 160
165 void SyncNetworkChannel::AddObserver(Observer* observer) { 161 void SyncNetworkChannel::AddObserver(Observer* observer) {
166 observers_.AddObserver(observer); 162 observers_.AddObserver(observer);
167 } 163 }
(...skipping 13 matching lines...) Expand all
181 scoped_refptr<net::URLRequestContextGetter> request_context_getter, 177 scoped_refptr<net::URLRequestContextGetter> request_context_getter,
182 std::unique_ptr<GCMNetworkChannelDelegate> delegate) { 178 std::unique_ptr<GCMNetworkChannelDelegate> delegate) {
183 return base::MakeUnique<GCMNetworkChannel>(request_context_getter, 179 return base::MakeUnique<GCMNetworkChannel>(request_context_getter,
184 std::move(delegate)); 180 std::move(delegate));
185 } 181 }
186 182
187 void SyncNetworkChannel::NotifyNetworkStatusChange(bool online) { 183 void SyncNetworkChannel::NotifyNetworkStatusChange(bool online) {
188 // Remember network state for future NetworkStatusReceivers. 184 // Remember network state for future NetworkStatusReceivers.
189 last_network_status_ = online; 185 last_network_status_ = online;
190 // Notify NetworkStatusReceivers in cacheinvalidation. 186 // Notify NetworkStatusReceivers in cacheinvalidation.
191 for (const auto& receiver : network_status_receivers_) { 187 for (NetworkStatusReceiverList::const_iterator it =
192 receiver->Run(online); 188 network_status_receivers_.begin();
189 it != network_status_receivers_.end(); ++it) {
190 (*it)->Run(online);
193 } 191 }
194 } 192 }
195 193
196 void SyncNetworkChannel::NotifyChannelStateChange( 194 void SyncNetworkChannel::NotifyChannelStateChange(
197 InvalidatorState invalidator_state) { 195 InvalidatorState invalidator_state) {
198 for (auto& observer : observers_) 196 for (auto& observer : observers_)
199 observer.OnNetworkChannelStateChanged(invalidator_state); 197 observer.OnNetworkChannelStateChanged(invalidator_state);
200 } 198 }
201 199
202 bool SyncNetworkChannel::DeliverIncomingMessage(const std::string& message) { 200 bool SyncNetworkChannel::DeliverIncomingMessage(const std::string& message) {
(...skipping 22 matching lines...) Expand all
225 223
226 void SyncStorage::WriteKey(const std::string& key, const std::string& value, 224 void SyncStorage::WriteKey(const std::string& key, const std::string& value,
227 invalidation::WriteKeyCallback* done) { 225 invalidation::WriteKeyCallback* done) {
228 CHECK(state_writer_); 226 CHECK(state_writer_);
229 // TODO(ghc): actually write key,value associations, and don't invoke the 227 // TODO(ghc): actually write key,value associations, and don't invoke the
230 // callback until the operation completes. 228 // callback until the operation completes.
231 state_writer_->WriteState(value); 229 state_writer_->WriteState(value);
232 cached_state_ = value; 230 cached_state_ = value;
233 // According to the cache invalidation API folks, we can do this as 231 // According to the cache invalidation API folks, we can do this as
234 // long as we make sure to clear the persistent state that we start 232 // long as we make sure to clear the persistent state that we start
235 // up the cache invalidation client with. However, we mustn't do it 233 // up the cache invalidation client with. However, we musn't do it
236 // right away, as we may be called under a lock that the callback 234 // right away, as we may be called under a lock that the callback
237 // uses. 235 // uses.
238 scheduler_->Schedule( 236 scheduler_->Schedule(
239 invalidation::Scheduler::NoDelay(), 237 invalidation::Scheduler::NoDelay(),
240 invalidation::NewPermanentCallback( 238 invalidation::NewPermanentCallback(
241 this, &SyncStorage::RunAndDeleteWriteKeyCallback, 239 this, &SyncStorage::RunAndDeleteWriteKeyCallback,
242 done)); 240 done));
243 } 241 }
244 242
245 void SyncStorage::ReadKey(const std::string& key, 243 void SyncStorage::ReadKey(const std::string& key,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 329
332 SyncInvalidationScheduler* SyncSystemResources::internal_scheduler() { 330 SyncInvalidationScheduler* SyncSystemResources::internal_scheduler() {
333 return internal_scheduler_.get(); 331 return internal_scheduler_.get();
334 } 332 }
335 333
336 SyncInvalidationScheduler* SyncSystemResources::listener_scheduler() { 334 SyncInvalidationScheduler* SyncSystemResources::listener_scheduler() {
337 return listener_scheduler_.get(); 335 return listener_scheduler_.get();
338 } 336 }
339 337
340 } // namespace syncer 338 } // namespace syncer
OLDNEW
« no previous file with comments | « components/invalidation/impl/sync_system_resources.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698