// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.chrome.browser.invalidation; import android.content.Context; import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator; import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator; import org.chromium.sync.notifier.InvalidationClientNameGenerator; import org.chromium.sync.notifier.InvalidationClientNameProvider; /** * An InvalidationClientNameGenerator that wraps an UniqueIdentificationGenerator. * * If the right kind of UniqueIdentificationGenerator is provided, then this will produce IDs that * are unique and consistent across restarts. */ public class UniqueIdInvalidationClientNameGenerator implements InvalidationClientNameGenerator { // Pref key to use for UUID-based generator. private static final String INVALIDATIONS_UUID_PREF_KEY = "chromium.invalidations.uuid"; /** * Called during early init to make this InvalidationClientNameGenerator the default. * * This should be called very early during initialization to setup the invalidaiton client name. */ public static void doInitializeAndInstallGenerator(Context context) { UniqueIdentificationGenerator idGenerator = new UuidBasedUniqueIdentificationGenerator( context, INVALIDATIONS_UUID_PREF_KEY); InvalidationClientNameGenerator clientNameGenerator = new UniqueIdInvalidationClientNameGenerator(idGenerator); InvalidationClientNameProvider.get().setPreferredClientNameGenerator(clientNameGenerator); } private final UniqueIdentificationGenerator mGenerator; UniqueIdInvalidationClientNameGenerator(UniqueIdentificationGenerator generator) { mGenerator = generator; } @Override public byte[] generateInvalidatorClientName() { return mGenerator.getUniqueId(null).getBytes(); } }