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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java

Issue 2784353002: Android: Remove GetApplicationContext part 2 (Closed)
Patch Set: Fix tests Created 3 years, 8 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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.ntp.snippets; 5 package org.chromium.chrome.browser.ntp.snippets;
6 6
7 import android.content.Context;
8
9 import com.google.android.gms.gcm.GcmNetworkManager; 7 import com.google.android.gms.gcm.GcmNetworkManager;
10 import com.google.android.gms.gcm.PeriodicTask; 8 import com.google.android.gms.gcm.PeriodicTask;
11 import com.google.android.gms.gcm.Task; 9 import com.google.android.gms.gcm.Task;
12 10
13 import org.chromium.base.ContextUtils; 11 import org.chromium.base.ContextUtils;
14 import org.chromium.base.Log; 12 import org.chromium.base.Log;
15 import org.chromium.base.VisibleForTesting; 13 import org.chromium.base.VisibleForTesting;
16 import org.chromium.base.annotations.CalledByNative; 14 import org.chromium.base.annotations.CalledByNative;
17 import org.chromium.base.annotations.SuppressFBWarnings; 15 import org.chromium.base.annotations.SuppressFBWarnings;
18 import org.chromium.chrome.browser.ChromeBackgroundService; 16 import org.chromium.chrome.browser.ChromeBackgroundService;
(...skipping 26 matching lines...) Expand all
45 // The instance of SnippetsLauncher currently owned by a C++ SnippetsLaunche rAndroid, if any. 43 // The instance of SnippetsLauncher currently owned by a C++ SnippetsLaunche rAndroid, if any.
46 // If it is non-null then the browser is running. 44 // If it is non-null then the browser is running.
47 private static SnippetsLauncher sInstance; 45 private static SnippetsLauncher sInstance;
48 46
49 private GcmNetworkManager mScheduler; 47 private GcmNetworkManager mScheduler;
50 48
51 private boolean mGCMEnabled = true; 49 private boolean mGCMEnabled = true;
52 50
53 /** 51 /**
54 * Create a SnippetsLauncher object, which is owned by C++. 52 * Create a SnippetsLauncher object, which is owned by C++.
55 * @param context The app context.
56 */ 53 */
57 @VisibleForTesting 54 @VisibleForTesting
58 @CalledByNative 55 @CalledByNative
59 public static SnippetsLauncher create(Context context) { 56 public static SnippetsLauncher create() {
60 if (sInstance != null) { 57 if (sInstance != null) {
61 throw new IllegalStateException("Already instantiated"); 58 throw new IllegalStateException("Already instantiated");
62 } 59 }
63 60
64 sInstance = new SnippetsLauncher(context); 61 sInstance = new SnippetsLauncher();
65 return sInstance; 62 return sInstance;
66 } 63 }
67 64
68 /** 65 /**
69 * Called when the C++ counterpart is deleted. 66 * Called when the C++ counterpart is deleted.
70 */ 67 */
71 @VisibleForTesting 68 @VisibleForTesting
72 @SuppressFBWarnings("ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD") 69 @SuppressFBWarnings("ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD")
73 @CalledByNative 70 @CalledByNative
74 public void destroy() { 71 public void destroy() {
75 assert sInstance == this; 72 assert sInstance == this;
76 sInstance = null; 73 sInstance = null;
77 } 74 }
78 75
79 /** 76 /**
80 * Returns true if the native browser has started and created an instance of {@link 77 * Returns true if the native browser has started and created an instance of {@link
81 * SnippetsLauncher}. 78 * SnippetsLauncher}.
82 */ 79 */
83 public static boolean hasInstance() { 80 public static boolean hasInstance() {
84 return sInstance != null; 81 return sInstance != null;
85 } 82 }
86 83
87 protected SnippetsLauncher(Context context) { 84 protected SnippetsLauncher() {
88 checkGCM(context); 85 checkGCM();
89 mScheduler = GcmNetworkManager.getInstance(context); 86 mScheduler = GcmNetworkManager.getInstance(ContextUtils.getApplicationCo ntext());
90 } 87 }
91 88
92 private boolean canUseGooglePlayServices(Context context) { 89 private boolean canUseGooglePlayServices() {
93 return ExternalAuthUtils.getInstance().canUseGooglePlayServices( 90 return ExternalAuthUtils.getInstance().canUseGooglePlayServices(
94 context, new UserRecoverableErrorHandler.Silent()); 91 ContextUtils.getApplicationContext(), new UserRecoverableErrorHa ndler.Silent());
95 } 92 }
96 93
97 private void checkGCM(Context context) { 94 private void checkGCM() {
98 // Check to see if Play Services is up to date, and disable GCM if not. 95 // Check to see if Play Services is up to date, and disable GCM if not.
99 if (!canUseGooglePlayServices(context)) { 96 if (!canUseGooglePlayServices()) {
100 mGCMEnabled = false; 97 mGCMEnabled = false;
101 Log.i(TAG, "Disabling SnippetsLauncher because Play Services is not up to date."); 98 Log.i(TAG, "Disabling SnippetsLauncher because Play Services is not up to date.");
102 } 99 }
103 } 100 }
104 101
105 private static PeriodicTask buildFetchTask( 102 private static PeriodicTask buildFetchTask(
106 String tag, long periodSeconds, int requiredNetwork) { 103 String tag, long periodSeconds, int requiredNetwork) {
107 // Add a bit of "flex" around the target period. This achieves the follo wing: 104 // Add a bit of "flex" around the target period. This achieves the follo wing:
108 // - It makes sure the task doesn't run (significantly) before its initi al period has 105 // - It makes sure the task doesn't run (significantly) before its initi al period has
109 // elapsed. In practice, the scheduler seems to behave like that anywa y, but it doesn't 106 // elapsed. In practice, the scheduler seems to behave like that anywa y, but it doesn't
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 Log.i(TAG, "Unscheduling"); 164 Log.i(TAG, "Unscheduling");
168 return schedule(0, 0); 165 return schedule(0, 0);
169 } 166 }
170 167
171 public static boolean shouldRescheduleTasksOnUpgrade() { 168 public static boolean shouldRescheduleTasksOnUpgrade() {
172 // Reschedule the periodic tasks if they were enabled previously. 169 // Reschedule the periodic tasks if they were enabled previously.
173 return ContextUtils.getAppSharedPreferences().getBoolean(PREF_IS_SCHEDUL ED, false); 170 return ContextUtils.getAppSharedPreferences().getBoolean(PREF_IS_SCHEDUL ED, false);
174 } 171 }
175 } 172 }
176 173
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698