| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "jingle/notifier/listener/non_blocking_push_client.h" | 5 #include "jingle/notifier/listener/non_blocking_push_client.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 NonBlockingPushClient::NonBlockingPushClient( | 154 NonBlockingPushClient::NonBlockingPushClient( |
| 155 const scoped_refptr<base::SingleThreadTaskRunner>& delegate_task_runner, | 155 const scoped_refptr<base::SingleThreadTaskRunner>& delegate_task_runner, |
| 156 const CreateBlockingPushClientCallback& | 156 const CreateBlockingPushClientCallback& |
| 157 create_blocking_push_client_callback) | 157 create_blocking_push_client_callback) |
| 158 : delegate_task_runner_(delegate_task_runner), | 158 : delegate_task_runner_(delegate_task_runner), |
| 159 weak_ptr_factory_(this) { | 159 weak_ptr_factory_(this) { |
| 160 core_ = new Core(delegate_task_runner_, weak_ptr_factory_.GetWeakPtr()); | 160 core_ = new Core(delegate_task_runner_, weak_ptr_factory_.GetWeakPtr()); |
| 161 delegate_task_runner_->PostTask( | 161 delegate_task_runner_->PostTask( |
| 162 FROM_HERE, | 162 FROM_HERE, |
| 163 base::Bind(&NonBlockingPushClient::Core::CreateOnDelegateThread, | 163 base::Bind(&NonBlockingPushClient::Core::CreateOnDelegateThread, |
| 164 core_.get(), create_blocking_push_client_callback)); | 164 core_, create_blocking_push_client_callback)); |
| 165 } | 165 } |
| 166 | 166 |
| 167 NonBlockingPushClient::~NonBlockingPushClient() { | 167 NonBlockingPushClient::~NonBlockingPushClient() { |
| 168 DCHECK(thread_checker_.CalledOnValidThread()); | 168 DCHECK(thread_checker_.CalledOnValidThread()); |
| 169 delegate_task_runner_->PostTask( | 169 delegate_task_runner_->PostTask( |
| 170 FROM_HERE, | 170 FROM_HERE, |
| 171 base::Bind(&NonBlockingPushClient::Core::DestroyOnDelegateThread, | 171 base::Bind(&NonBlockingPushClient::Core::DestroyOnDelegateThread, |
| 172 core_.get())); | 172 core_)); |
| 173 } | 173 } |
| 174 | 174 |
| 175 void NonBlockingPushClient::AddObserver(PushClientObserver* observer) { | 175 void NonBlockingPushClient::AddObserver(PushClientObserver* observer) { |
| 176 DCHECK(thread_checker_.CalledOnValidThread()); | 176 DCHECK(thread_checker_.CalledOnValidThread()); |
| 177 observers_.AddObserver(observer); | 177 observers_.AddObserver(observer); |
| 178 } | 178 } |
| 179 | 179 |
| 180 void NonBlockingPushClient::RemoveObserver(PushClientObserver* observer) { | 180 void NonBlockingPushClient::RemoveObserver(PushClientObserver* observer) { |
| 181 DCHECK(thread_checker_.CalledOnValidThread()); | 181 DCHECK(thread_checker_.CalledOnValidThread()); |
| 182 observers_.RemoveObserver(observer); | 182 observers_.RemoveObserver(observer); |
| 183 } | 183 } |
| 184 | 184 |
| 185 void NonBlockingPushClient::UpdateSubscriptions( | 185 void NonBlockingPushClient::UpdateSubscriptions( |
| 186 const SubscriptionList& subscriptions) { | 186 const SubscriptionList& subscriptions) { |
| 187 DCHECK(thread_checker_.CalledOnValidThread()); | 187 DCHECK(thread_checker_.CalledOnValidThread()); |
| 188 delegate_task_runner_->PostTask( | 188 delegate_task_runner_->PostTask( |
| 189 FROM_HERE, | 189 FROM_HERE, |
| 190 base::Bind(&NonBlockingPushClient::Core::UpdateSubscriptions, | 190 base::Bind(&NonBlockingPushClient::Core::UpdateSubscriptions, |
| 191 core_.get(), subscriptions)); | 191 core_, subscriptions)); |
| 192 } | 192 } |
| 193 | 193 |
| 194 void NonBlockingPushClient::UpdateCredentials( | 194 void NonBlockingPushClient::UpdateCredentials( |
| 195 const std::string& email, const std::string& token) { | 195 const std::string& email, const std::string& token) { |
| 196 DCHECK(thread_checker_.CalledOnValidThread()); | 196 DCHECK(thread_checker_.CalledOnValidThread()); |
| 197 delegate_task_runner_->PostTask( | 197 delegate_task_runner_->PostTask( |
| 198 FROM_HERE, | 198 FROM_HERE, |
| 199 base::Bind(&NonBlockingPushClient::Core::UpdateCredentials, | 199 base::Bind(&NonBlockingPushClient::Core::UpdateCredentials, |
| 200 core_.get(), email, token)); | 200 core_, email, token)); |
| 201 } | 201 } |
| 202 | 202 |
| 203 void NonBlockingPushClient::SendNotification( | 203 void NonBlockingPushClient::SendNotification( |
| 204 const Notification& notification) { | 204 const Notification& notification) { |
| 205 DCHECK(thread_checker_.CalledOnValidThread()); | 205 DCHECK(thread_checker_.CalledOnValidThread()); |
| 206 delegate_task_runner_->PostTask( | 206 delegate_task_runner_->PostTask( |
| 207 FROM_HERE, | 207 FROM_HERE, |
| 208 base::Bind(&NonBlockingPushClient::Core::SendNotification, core_.get(), | 208 base::Bind(&NonBlockingPushClient::Core::SendNotification, core_, |
| 209 notification)); | 209 notification)); |
| 210 } | 210 } |
| 211 | 211 |
| 212 void NonBlockingPushClient::SendPing() { | 212 void NonBlockingPushClient::SendPing() { |
| 213 DCHECK(thread_checker_.CalledOnValidThread()); | 213 DCHECK(thread_checker_.CalledOnValidThread()); |
| 214 delegate_task_runner_->PostTask( | 214 delegate_task_runner_->PostTask( |
| 215 FROM_HERE, | 215 FROM_HERE, |
| 216 base::Bind(&NonBlockingPushClient::Core::SendPing, core_.get())); | 216 base::Bind(&NonBlockingPushClient::Core::SendPing, core_)); |
| 217 } | 217 } |
| 218 | 218 |
| 219 void NonBlockingPushClient::OnNotificationsEnabled() { | 219 void NonBlockingPushClient::OnNotificationsEnabled() { |
| 220 DCHECK(thread_checker_.CalledOnValidThread()); | 220 DCHECK(thread_checker_.CalledOnValidThread()); |
| 221 FOR_EACH_OBSERVER(PushClientObserver, observers_, | 221 FOR_EACH_OBSERVER(PushClientObserver, observers_, |
| 222 OnNotificationsEnabled()); | 222 OnNotificationsEnabled()); |
| 223 } | 223 } |
| 224 | 224 |
| 225 void NonBlockingPushClient::OnNotificationsDisabled( | 225 void NonBlockingPushClient::OnNotificationsDisabled( |
| 226 NotificationsDisabledReason reason) { | 226 NotificationsDisabledReason reason) { |
| 227 DCHECK(thread_checker_.CalledOnValidThread()); | 227 DCHECK(thread_checker_.CalledOnValidThread()); |
| 228 FOR_EACH_OBSERVER(PushClientObserver, observers_, | 228 FOR_EACH_OBSERVER(PushClientObserver, observers_, |
| 229 OnNotificationsDisabled(reason)); | 229 OnNotificationsDisabled(reason)); |
| 230 } | 230 } |
| 231 | 231 |
| 232 void NonBlockingPushClient::OnIncomingNotification( | 232 void NonBlockingPushClient::OnIncomingNotification( |
| 233 const Notification& notification) { | 233 const Notification& notification) { |
| 234 DCHECK(thread_checker_.CalledOnValidThread()); | 234 DCHECK(thread_checker_.CalledOnValidThread()); |
| 235 FOR_EACH_OBSERVER(PushClientObserver, observers_, | 235 FOR_EACH_OBSERVER(PushClientObserver, observers_, |
| 236 OnIncomingNotification(notification)); | 236 OnIncomingNotification(notification)); |
| 237 } | 237 } |
| 238 | 238 |
| 239 void NonBlockingPushClient::OnPingResponse() { | 239 void NonBlockingPushClient::OnPingResponse() { |
| 240 DCHECK(thread_checker_.CalledOnValidThread()); | 240 DCHECK(thread_checker_.CalledOnValidThread()); |
| 241 FOR_EACH_OBSERVER(PushClientObserver, observers_, OnPingResponse()); | 241 FOR_EACH_OBSERVER(PushClientObserver, observers_, OnPingResponse()); |
| 242 } | 242 } |
| 243 | 243 |
| 244 } // namespace notifier | 244 } // namespace notifier |
| OLD | NEW |