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

Side by Side Diff: chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl.cc

Issue 897113003: Fix crash when affiliated invalidation service becomes available (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compilation. Created 5 years, 10 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 | chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/chromeos/policy/affiliated_invalidation_service_provide r_impl.h" 5 #include "chrome/browser/chromeos/policy/affiliated_invalidation_service_provide r_impl.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 } 235 }
236 236
237 if (!device_invalidation_service_) { 237 if (!device_invalidation_service_) {
238 // The lack of a device-global invalidation service implies that another 238 // The lack of a device-global invalidation service implies that another
239 // connected invalidation service is being made available to consumers 239 // connected invalidation service is being made available to consumers
240 // already. There is no need to switch from that to the service which just 240 // already. There is no need to switch from that to the service which just
241 // connected. 241 // connected.
242 return; 242 return;
243 } 243 }
244 244
245 if (invalidation_service != device_invalidation_service_.get()) { 245 // Make the invalidation service that just connected available to consumers.
246 // If an invalidation service other than the device-global one connected, 246 invalidation_service_ = nullptr;
247 // destroy the device-global service. 247 SetInvalidationService(invalidation_service);
248 invalidation_service_ = nullptr; 248
249 if (invalidation_service_ &&
250 device_invalidation_service_ &&
251 invalidation_service_ != device_invalidation_service_.get()) {
252 // If a different invalidation service is being made available to consumers
253 // now, destroy the device-global one.
249 DestroyDeviceInvalidationService(); 254 DestroyDeviceInvalidationService();
250 } 255 }
251 256
252 // Make the invalidation service that just connected available to consumers.
253 SetInvalidationService(invalidation_service);
254 } 257 }
255 258
256 void 259 void
257 AffiliatedInvalidationServiceProviderImpl::OnInvalidationServiceDisconnected( 260 AffiliatedInvalidationServiceProviderImpl::OnInvalidationServiceDisconnected(
258 invalidation::InvalidationService* invalidation_service) { 261 invalidation::InvalidationService* invalidation_service) {
259 DCHECK(!is_shut_down_); 262 DCHECK(!is_shut_down_);
260 263
261 if (invalidation_service != invalidation_service_) { 264 if (invalidation_service != invalidation_service_) {
262 // If the invalidation service which disconnected was not being made 265 // If the invalidation service which disconnected was not being made
263 // available to consumers, return. 266 // available to consumers, return.
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 OnInvalidationServiceSet(invalidation_service_)); 339 OnInvalidationServiceSet(invalidation_service_));
337 } 340 }
338 341
339 void 342 void
340 AffiliatedInvalidationServiceProviderImpl::DestroyDeviceInvalidationService() { 343 AffiliatedInvalidationServiceProviderImpl::DestroyDeviceInvalidationService() {
341 device_invalidation_service_observer_.reset(); 344 device_invalidation_service_observer_.reset();
342 device_invalidation_service_.reset(); 345 device_invalidation_service_.reset();
343 } 346 }
344 347
345 } // namespace policy 348 } // namespace policy
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698