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