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 5package org.chromium.chrome.browser.invalidation; 6 7import android.content.Context; 8 9import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator; 10import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator; 11import org.chromium.sync.notifier.InvalidationClientNameGenerator; 12import 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 */ 20public 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 */ 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 40 UniqueIdInvalidationClientNameGenerator(UniqueIdentificationGenerator generator) { 41 mGenerator = generator; 42 } 43 44 @Override 45 public byte[] generateInvalidatorClientName() { 46 return mGenerator.getUniqueId(null).getBytes(); 47 } 48} 49