• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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