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

Side by Side Diff: chrome/browser/extensions/api/dial/dial_registry.cc

Issue 2436403003: [DIAL] Make a copy of device id before erasing device from map. (Closed)
Patch Set: fmt Created 4 years, 2 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
« no previous file with comments | « no previous file | 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 (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 "chrome/browser/extensions/api/dial/dial_registry.h" 5 #include "chrome/browser/extensions/api/dial/dial_registry.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 } 153 }
154 154
155 bool DialRegistry::PruneExpiredDevices() { 155 bool DialRegistry::PruneExpiredDevices() {
156 DCHECK_CURRENTLY_ON(BrowserThread::IO); 156 DCHECK_CURRENTLY_ON(BrowserThread::IO);
157 bool pruned_device = false; 157 bool pruned_device = false;
158 DeviceByLabelMap::iterator it = device_by_label_map_.begin(); 158 DeviceByLabelMap::iterator it = device_by_label_map_.begin();
159 while (it != device_by_label_map_.end()) { 159 while (it != device_by_label_map_.end()) {
160 auto* device = it->second; 160 auto* device = it->second;
161 if (IsDeviceExpired(*device)) { 161 if (IsDeviceExpired(*device)) {
162 VLOG(2) << "Device " << device->label() << " expired, removing"; 162 VLOG(2) << "Device " << device->label() << " expired, removing";
163 const size_t num_erased_by_id = 163
164 device_by_id_map_.erase(device->device_id()); 164 // Make a copy of the device ID here since |device| will be destroyed
165 // during erase().
166 std::string device_id = device->device_id();
miu 2016/10/22 18:37:19 nit: Probably not a big deal for performance, but
167 const size_t num_erased_by_id = device_by_id_map_.erase(device_id);
Wez 2016/10/22 00:55:39 As discussed offline... wow, really surprised that
165 DCHECK_EQ(1U, num_erased_by_id); 168 DCHECK_EQ(1U, num_erased_by_id);
166 device_by_label_map_.erase(it++); 169 device_by_label_map_.erase(it++);
167 pruned_device = true; 170 pruned_device = true;
168 } else { 171 } else {
169 ++it; 172 ++it;
170 } 173 }
171 } 174 }
172 return pruned_device; 175 return pruned_device;
173 } 176 }
174 177
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 case NetworkChangeNotifier::CONNECTION_BLUETOOTH: 328 case NetworkChangeNotifier::CONNECTION_BLUETOOTH:
326 if (!dial_) { 329 if (!dial_) {
327 VLOG(2) << "Connection detected, restarting discovery."; 330 VLOG(2) << "Connection detected, restarting discovery.";
328 StartPeriodicDiscovery(); 331 StartPeriodicDiscovery();
329 } 332 }
330 break; 333 break;
331 } 334 }
332 } 335 }
333 336
334 } // namespace extensions 337 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698