1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.chrome.browser.invalidation; 6 7 import android.content.Context; 8 9 import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator; 10 import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator; 11 import org.chromium.sync.notifier.InvalidationClientNameGenerator; 12 import org.chromium.sync.notifier.InvalidationClientNameProvider; 13 14 /** 15 * An InvalidationClientNameGenerator that wraps an UniqueIdentificationGenerator. 16 * 17 * If the right kind of UniqueIdentificationGenerator is provided, then this will produce IDs that 18 * are unique and consistent across restarts. 19 */ 20 public class UniqueIdInvalidationClientNameGenerator implements InvalidationClientNameGenerator { 21 // Pref key to use for UUID-based generator. 22 private static final String INVALIDATIONS_UUID_PREF_KEY = "chromium.invalidations.uuid"; 23 24 /** 25 * Called during early init to make this InvalidationClientNameGenerator the default. 26 * 27 * This should be called very early during initialization to setup the invalidaiton client name. 28 */ doInitializeAndInstallGenerator(Context context)29 public static void doInitializeAndInstallGenerator(Context context) { 30 UniqueIdentificationGenerator idGenerator = 31 new UuidBasedUniqueIdentificationGenerator( 32 context, INVALIDATIONS_UUID_PREF_KEY); 33 InvalidationClientNameGenerator clientNameGenerator = 34 new UniqueIdInvalidationClientNameGenerator(idGenerator); 35 InvalidationClientNameProvider.get().setPreferredClientNameGenerator(clientNameGenerator); 36 } 37 38 private final UniqueIdentificationGenerator mGenerator; 39 UniqueIdInvalidationClientNameGenerator(UniqueIdentificationGenerator generator)40 UniqueIdInvalidationClientNameGenerator(UniqueIdentificationGenerator generator) { 41 mGenerator = generator; 42 } 43 44 @Override generateInvalidatorClientName()45 public byte[] generateInvalidatorClientName() { 46 return mGenerator.getUniqueId(null).getBytes(); 47 } 48 } 49