Chromium Code Reviews| Index: components/gcm_driver/gcm_driver.cc |
| diff --git a/components/gcm_driver/gcm_driver.cc b/components/gcm_driver/gcm_driver.cc |
| index e9ff81975aac5f9d4b4bd064bcf67c4216761314..9882264d6c85b13910c3d8b8ea5959f7d8323285 100644 |
| --- a/components/gcm_driver/gcm_driver.cc |
| +++ b/components/gcm_driver/gcm_driver.cc |
| @@ -151,8 +151,13 @@ void GCMDriver::SendFinished(const std::string& app_id, |
| void GCMDriver::Shutdown() { |
| for (GCMAppHandlerMap::const_iterator iter = app_handlers_.begin(); |
| - iter != app_handlers_.end(); ++iter) { |
| - iter->second->ShutdownHandler(); |
| + iter != app_handlers_.end();) { |
|
fgorski
2014/10/03 18:03:32
Jian Li, what do you think about this update?
|
| + DVLOG(1) << "Calling ShutdownHandler for: " << iter->first; |
| + GCMAppHandler* handler = iter->second; |
| + // Incrementing here, to make sure calls to RemoveAppHandler from |
| + // ShutdownHandler don't invalidate the iterator. |
| + ++iter; |
| + handler->ShutdownHandler(); |
| } |
| app_handlers_.clear(); |
| } |
| @@ -163,11 +168,13 @@ void GCMDriver::AddAppHandler(const std::string& app_id, |
| DCHECK(handler); |
| DCHECK_EQ(app_handlers_.count(app_id), 0u); |
| app_handlers_[app_id] = handler; |
| + DVLOG(1) << "App handler added for: " << app_id; |
| } |
| void GCMDriver::RemoveAppHandler(const std::string& app_id) { |
| DCHECK(!app_id.empty()); |
| app_handlers_.erase(app_id); |
| + DVLOG(1) << "App handler removed for: " << app_id; |
| } |
| GCMAppHandler* GCMDriver::GetAppHandler(const std::string& app_id) { |