Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/tab/TabIdManager.java

Issue 2830843004: Update to newer Android Lint and suppress new Lint errors (Closed)
Patch Set: rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.tab; 5 package org.chromium.chrome.browser.tab;
6 6
7 import android.annotation.SuppressLint;
7 import android.content.Context; 8 import android.content.Context;
8 import android.content.SharedPreferences; 9 import android.content.SharedPreferences;
9 10
10 import org.chromium.base.ContextUtils; 11 import org.chromium.base.ContextUtils;
11 import org.chromium.base.VisibleForTesting; 12 import org.chromium.base.VisibleForTesting;
12 import org.chromium.chrome.browser.tabmodel.TabModel; 13 import org.chromium.chrome.browser.tabmodel.TabModel;
13 14
14 import java.util.concurrent.atomic.AtomicInteger; 15 import java.util.concurrent.atomic.AtomicInteger;
15 16
16 /** 17 /**
17 * Maintains a monotonically increasing ID that is used for uniquely identifying {@link Tab}s. This 18 * Maintains a monotonically increasing ID that is used for uniquely identifying {@link Tab}s. This
18 * class is responsible for ensuring that Tabs created in the same process, acro ss every 19 * class is responsible for ensuring that Tabs created in the same process, acro ss every
19 * {@link TabModel}, are allocated a unique ID. Note that only the browser proc ess should be 20 * {@link TabModel}, are allocated a unique ID. Note that only the browser proc ess should be
20 * generating Tab IDs to prevent collisions. 21 * generating Tab IDs to prevent collisions.
21 * 22 *
22 * Calling {@link TabIdManager#incrementIdCounterTo(int)} will ensure new {@link Tab}s get IDs 23 * Calling {@link TabIdManager#incrementIdCounterTo(int)} will ensure new {@link Tab}s get IDs
23 * greater than or equal to the parameter passed to that method. This should be used when doing 24 * greater than or equal to the parameter passed to that method. This should be used when doing
24 * things like loading persisted {@link Tab}s from disk on process start to ensu re all new 25 * things like loading persisted {@link Tab}s from disk on process start to ensu re all new
25 * {@link Tab}s don't have id collision. 26 * {@link Tab}s don't have id collision.
26 * 27 *
27 * TODO(dfalcantara): Tab ID generation prior to M45 is haphazard and dependent on which Activity is 28 * TODO(dfalcantara): Tab ID generation prior to M45 is haphazard and dependent on which Activity is
28 * started first. Unify the ways the maximum Tab ID is set ( crbug.com/502384). 29 * started first. Unify the ways the maximum Tab ID is set ( crbug.com/502384).
29 */ 30 */
30 public class TabIdManager { 31 public class TabIdManager {
31 @VisibleForTesting 32 @VisibleForTesting
32 public static final String PREF_NEXT_ID = 33 public static final String PREF_NEXT_ID =
33 "org.chromium.chrome.browser.tab.TabIdManager.NEXT_ID"; 34 "org.chromium.chrome.browser.tab.TabIdManager.NEXT_ID";
34 35
35 private static final Object INSTANCE_LOCK = new Object(); 36 private static final Object INSTANCE_LOCK = new Object();
37 @SuppressLint("StaticFieldLeak")
36 private static TabIdManager sInstance; 38 private static TabIdManager sInstance;
37 39
38 private final Context mContext; 40 private final Context mContext;
39 private final AtomicInteger mIdCounter = new AtomicInteger(); 41 private final AtomicInteger mIdCounter = new AtomicInteger();
40 42
41 private SharedPreferences mPreferences; 43 private SharedPreferences mPreferences;
42 44
43 /** Returns the Singleton instance of the TabIdManager. */ 45 /** Returns the Singleton instance of the TabIdManager. */
44 public static TabIdManager getInstance() { 46 public static TabIdManager getInstance() {
45 return getInstance(ContextUtils.getApplicationContext()); 47 return getInstance(ContextUtils.getApplicationContext());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 private TabIdManager(Context context) { 90 private TabIdManager(Context context) {
89 mContext = context; 91 mContext = context;
90 92
91 // Read the shared preference. This has to be done on the critical path to ensure that the 93 // Read the shared preference. This has to be done on the critical path to ensure that the
92 // myriad Activities that serve as entries into Chrome are all synchroni zed on the correct 94 // myriad Activities that serve as entries into Chrome are all synchroni zed on the correct
93 // maximum Tab ID. 95 // maximum Tab ID.
94 mPreferences = ContextUtils.getAppSharedPreferences(); 96 mPreferences = ContextUtils.getAppSharedPreferences();
95 mIdCounter.set(mPreferences.getInt(PREF_NEXT_ID, 0)); 97 mIdCounter.set(mPreferences.getInt(PREF_NEXT_ID, 0));
96 } 98 }
97 } 99 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698