Remove getApplicationContext calls from invalidation

Continuation of work in bug 646094.
Preparing to activate an errorprone check to flag
context#getApplicationContext calls. The goal is to prevent storing the
resulting context as a class property, and instead use ContextUtils.

Bug: 846456
Change-Id: Id41629487bc76880136d8e33529dd37ca3c4e34e
Reviewed-on: https://chromium-review.googlesource.com/1095955
Reviewed-by: Yaron Friedman <yfriedman@chromium.org>
Reviewed-by: Nicolas Zea <zea@chromium.org>
Commit-Queue: Yaron Friedman <yfriedman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576888}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/PowerBroadcastReceiver.java b/chrome/android/java/src/org/chromium/chrome/browser/PowerBroadcastReceiver.java
index 31c06894..3fd859a3 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/PowerBroadcastReceiver.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/PowerBroadcastReceiver.java
@@ -106,7 +106,7 @@
         public void runActions() {
             Context context = ContextUtils.getApplicationContext();
             OmahaBase.onForegroundSessionStart(context);
-            DelayedInvalidationsController.getInstance().notifyPendingInvalidations(context);
+            DelayedInvalidationsController.getInstance().notifyPendingInvalidations();
         }
 
         public long getDelayToRun() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapter.java
index f0d9f7d2..5698a8e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapter.java
@@ -5,7 +5,6 @@
 package org.chromium.chrome.browser.invalidation;
 
 import android.accounts.Account;
-import android.app.Application;
 import android.content.AbstractThreadedSyncAdapter;
 import android.content.ContentProviderClient;
 import android.content.ContentResolver;
@@ -34,11 +33,8 @@
 public class ChromeBrowserSyncAdapter extends AbstractThreadedSyncAdapter {
     private static final String TAG = "invalidation";
 
-    private final Application mApplication;
-
-    public ChromeBrowserSyncAdapter(Context context, Application application) {
+    public ChromeBrowserSyncAdapter(Context context) {
         super(context, false);
-        mApplication = application;
     }
 
     @Override
@@ -57,7 +53,7 @@
 
         DelayedInvalidationsController controller = DelayedInvalidationsController.getInstance();
         if (!controller.shouldNotifyInvalidation(extras)) {
-            controller.addPendingInvalidation(getContext(), account.name, invalidation);
+            controller.addPendingInvalidation(account.name, invalidation);
             return;
         }
 
@@ -65,8 +61,7 @@
         Semaphore semaphore = new Semaphore(0);
 
         // Configure the BrowserParts with all the data it needs.
-        BrowserParts parts =
-                getBrowserParts(mApplication, account.name, invalidation, syncResult, semaphore);
+        BrowserParts parts = getBrowserParts(account.name, invalidation, syncResult, semaphore);
         startBrowserProcess(parts, syncResult, semaphore);
 
         try {
@@ -109,9 +104,9 @@
         }
     }
 
-    private BrowserParts getBrowserParts(final Context context,
-            final String account, final PendingInvalidation invalidation,
-            final SyncResult syncResult, final Semaphore semaphore) {
+    private BrowserParts getBrowserParts(final String account,
+            final PendingInvalidation invalidation, final SyncResult syncResult,
+            final Semaphore semaphore) {
         return new EmptyBrowserParts() {
             @Override
             public void finishNativeInitialization() {
@@ -125,7 +120,7 @@
             public void onStartupFailure() {
                 // The startup failed, so we defer the invalidation.
                 DelayedInvalidationsController.getInstance().addPendingInvalidation(
-                        context, account, invalidation);
+                        account, invalidation);
                 // Using numIoExceptions so Android will treat this as a soft error.
                 syncResult.stats.numIoExceptions++;
                 semaphore.release();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapterService.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapterService.java
index 76149cb..69c0263 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapterService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapterService.java
@@ -10,6 +10,7 @@
 import android.content.Intent;
 import android.os.IBinder;
 
+import org.chromium.base.ContextUtils;
 import org.chromium.chrome.browser.init.ProcessInitializationHandler;
 
 /**
@@ -28,7 +29,7 @@
         synchronized (LOCK) {
             if (sSyncAdapter == null) {
                 ProcessInitializationHandler.getInstance().initializePreNative();
-                sSyncAdapter = new ChromeBrowserSyncAdapter(applicationContext, getApplication());
+                sSyncAdapter = new ChromeBrowserSyncAdapter(applicationContext);
             }
         }
         return sSyncAdapter;
@@ -36,6 +37,6 @@
 
     @Override
     public IBinder onBind(Intent intent) {
-        return getOrCreateSyncAdapter(getApplicationContext()).getSyncAdapterBinder();
+        return getOrCreateSyncAdapter(ContextUtils.getApplicationContext()).getSyncAdapterBinder();
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsController.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsController.java
index f246903..546c582 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsController.java
@@ -6,7 +6,6 @@
 
 import android.accounts.Account;
 import android.content.ContentResolver;
-import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.support.v4.util.ObjectsCompat;
@@ -53,7 +52,7 @@
      * Notify any invalidations that were delayed while Chromium was backgrounded.
      * @return whether there were any invalidations pending to be notified.
      */
-    public boolean notifyPendingInvalidations(final Context context) {
+    public boolean notifyPendingInvalidations() {
         SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
         String accountName = prefs.getString(DELAYED_ACCOUNT_NAME, null);
         if (accountName == null) {
@@ -62,8 +61,8 @@
         } else {
             Log.d(TAG, "Handling pending invalidations.");
             Account account = AccountManagerFacade.createAccountFromName(accountName);
-            List<Bundle> bundles = popPendingInvalidations(context);
-            notifyInvalidationsOnBackgroundThread(context, account, bundles);
+            List<Bundle> bundles = popPendingInvalidations();
+            notifyInvalidationsOnBackgroundThread(account, bundles);
             return true;
         }
     }
@@ -73,8 +72,7 @@
      * IO operations.
      */
     @VisibleForTesting
-    void notifyInvalidationsOnBackgroundThread(
-            final Context context, final Account account, final List<Bundle> bundles) {
+    void notifyInvalidationsOnBackgroundThread(final Account account, final List<Bundle> bundles) {
         new AsyncTask<Void, Void, Void>() {
             @Override
             protected Void doInBackground(Void... unused) {
@@ -91,7 +89,7 @@
      * Stores preferences to indicate that an invalidation has arrived, but dropped on the floor.
      */
     @VisibleForTesting
-    void addPendingInvalidation(Context context, String account, PendingInvalidation invalidation) {
+    void addPendingInvalidation(String account, PendingInvalidation invalidation) {
         SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
         String oldAccount = prefs.getString(DELAYED_ACCOUNT_NAME, null);
         // Make sure to construct a new set so it can be modified safely. See crbug.com/568369.
@@ -144,11 +142,11 @@
         return true;
     }
 
-    private List<Bundle> popPendingInvalidations(final Context context) {
+    private List<Bundle> popPendingInvalidations() {
         SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
         assert prefs.contains(DELAYED_ACCOUNT_NAME);
         Set<String> savedInvalidations = prefs.getStringSet(DELAYED_INVALIDATIONS, null);
-        clearPendingInvalidations(context);
+        clearPendingInvalidations();
         // Absence of specific invalidations indicates invalidate all types.
         if (savedInvalidations == null) return Arrays.asList(new Bundle());
 
@@ -168,7 +166,7 @@
      * If there are any pending invalidations, they will be cleared.
      */
     @VisibleForTesting
-    public void clearPendingInvalidations(Context context) {
+    public void clearPendingInvalidations() {
         SharedPreferences.Editor editor =
                 ContextUtils.getAppSharedPreferences().edit();
         editor.putString(DELAYED_ACCOUNT_NAME, null);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
index bcb574c..5093deca 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
@@ -5,7 +5,6 @@
 package org.chromium.chrome.browser.invalidation;
 
 import android.annotation.SuppressLint;
-import android.content.Context;
 import android.content.Intent;
 import android.os.Build;
 import android.os.Handler;
@@ -16,6 +15,7 @@
 import org.chromium.base.ApplicationState;
 import org.chromium.base.ApplicationStatus;
 import org.chromium.base.AsyncTask;
+import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.chrome.browser.ChromeFeatureList;
@@ -132,8 +132,6 @@
     @SuppressLint("StaticFieldLeak")
     private static InvalidationController sInstance;
 
-    private final Context mContext;
-
     /**
      * Whether session sync invalidations can be disabled.
      */
@@ -191,8 +189,8 @@
 
         Intent registerIntent = InvalidationIntentProtocol.createRegisterIntent(
                 ChromeSigninController.get().getSignedInUser(), typesToRegister);
-        registerIntent.setClass(
-                mContext, InvalidationClientService.getRegisteredClass());
+        registerIntent.setClass(ContextUtils.getApplicationContext(),
+                InvalidationClientService.getRegisteredClass());
         startServiceIfPossible(registerIntent);
     }
 
@@ -206,7 +204,8 @@
             @Override
             protected Void doInBackground(Void... arg0) {
                 boolean useGcmUpstream = true;
-                AndroidGcmController.get(mContext).initializeGcm(useGcmUpstream);
+                AndroidGcmController.get(ContextUtils.getApplicationContext())
+                        .initializeGcm(useGcmUpstream);
                 return null;
             }
         }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
@@ -223,8 +222,8 @@
     private void start() {
         mStarted = true;
         mEnableSessionInvalidationsTimer.resume();
-        Intent intent = new Intent(
-                mContext, InvalidationClientService.getRegisteredClass());
+        Intent intent = new Intent(ContextUtils.getApplicationContext(),
+                InvalidationClientService.getRegisteredClass());
         startServiceIfPossible(intent);
     }
 
@@ -234,8 +233,8 @@
     public void stop() {
         mStarted = false;
         mEnableSessionInvalidationsTimer.pause();
-        Intent intent = new Intent(
-                mContext, InvalidationClientService.getRegisteredClass());
+        Intent intent = new Intent(ContextUtils.getApplicationContext(),
+                InvalidationClientService.getRegisteredClass());
         intent.putExtra(InvalidationIntentProtocol.EXTRA_STOP, true);
         startServiceIfPossible(intent);
     }
@@ -245,12 +244,12 @@
         // for O. See crbug.com/680812.
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
             try {
-                mContext.startService(intent);
+                ContextUtils.getApplicationContext().startService(intent);
             } catch (IllegalStateException exception) {
                 Log.e(TAG, "Failed to start service from exception: ", exception);
             }
         } else {
-            mContext.startService(intent);
+            ContextUtils.getApplicationContext().startService(intent);
         }
     }
 
@@ -291,15 +290,14 @@
      *
      * Calling this method will create the instance if it does not yet exist.
      */
-    public static InvalidationController get(Context context) {
+    public static InvalidationController get() {
         synchronized (LOCK) {
             if (sInstance == null) {
                 // If the NTP is trying to suggest foreign tabs, then recieving invalidations is
                 // vital, otherwise data is stale and less useful.
                 boolean requireInvalidationsForSuggestions = ChromeFeatureList.isEnabled(
                         ChromeFeatureList.NTP_FOREIGN_SESSIONS_SUGGESTIONS);
-                sInstance =
-                        new InvalidationController(context, !requireInvalidationsForSuggestions);
+                sInstance = new InvalidationController(!requireInvalidationsForSuggestions);
             }
             return sInstance;
         }
@@ -331,10 +329,9 @@
      * Creates an instance using {@code context} to send intents.
      */
     @VisibleForTesting
-    InvalidationController(Context context, boolean canDisableSessionInvalidations) {
-        Context appContext = context.getApplicationContext();
-        if (appContext == null) throw new NullPointerException("Unable to get application context");
-        mContext = appContext;
+    InvalidationController(boolean canDisableSessionInvalidations) {
+        if (ContextUtils.getApplicationContext() == null)
+            throw new NullPointerException("Unable to get application context");
         mCanDisableSessionInvalidations = canDisableSessionInvalidations;
         mSessionInvalidationsEnabled = !mCanDisableSessionInvalidations;
         mEnableSessionInvalidationsTimer = new Timer();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
index 165dbd9..a1b524e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
@@ -117,7 +117,7 @@
         mForeignSessionHelper.triggerSessionSync();
         registerObservers();
 
-        InvalidationController.get(mContext).onRecentTabsPageOpened();
+        InvalidationController.get().onRecentTabsPageOpened();
     }
 
     /**
@@ -147,7 +147,7 @@
         mPrefs.destroy();
         mPrefs = null;
 
-        InvalidationController.get(mContext).onRecentTabsPageClosed();
+        InvalidationController.get().onRecentTabsPageClosed();
     }
 
     private void registerForForeignSessionUpdates() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SyncAndServicesPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SyncAndServicesPreferences.java
index 1d16d18..34acde3 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SyncAndServicesPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SyncAndServicesPreferences.java
@@ -490,7 +490,7 @@
         boolean syncEverything = mUseSyncAndAllServices.isChecked();
         mProfileSyncService.setPreferredDataTypes(syncEverything, getSelectedModelTypes());
         // Update the invalidation listener with the set of types we are enabling.
-        InvalidationController invController = InvalidationController.get(getActivity());
+        InvalidationController invController = InvalidationController.get();
         invController.ensureStartedAndUpdateRegisteredTypes();
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncController.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncController.java
index ce96d03..fa83255 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncController.java
@@ -174,7 +174,7 @@
     @Override
     public void syncStateChanged() {
         ThreadUtils.assertOnUiThread();
-        InvalidationController invalidationController = InvalidationController.get(mContext);
+        InvalidationController invalidationController = InvalidationController.get();
         if (mProfileSyncService.isSyncRequested()) {
             if (!invalidationController.isStarted()) {
                 invalidationController.ensureStartedAndUpdateRegisteredTypes();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncCustomizationFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncCustomizationFragment.java
index 1127f8c..7f98a81 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncCustomizationFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncCustomizationFragment.java
@@ -365,7 +365,7 @@
         boolean syncEverything = mSyncEverything.isChecked();
         mProfileSyncService.setPreferredDataTypes(syncEverything, getSelectedModelTypes());
         // Update the invalidation listener with the set of types we are enabling.
-        InvalidationController invController = InvalidationController.get(getActivity());
+        InvalidationController invController = InvalidationController.get();
         invController.ensureStartedAndUpdateRegisteredTypes();
     }
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapterTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapterTest.java
index ea2bb92a..fe66eadd 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapterTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/ChromeBrowserSyncAdapterTest.java
@@ -6,7 +6,6 @@
 
 import android.accounts.Account;
 import android.app.Activity;
-import android.app.Application;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
@@ -62,8 +61,8 @@
         private long mVersion;
         private String mPayload;
 
-        public TestSyncAdapter(Context context, Application application) {
-            super(context, application);
+        public TestSyncAdapter(Context context) {
+            super(context);
         }
 
         @Override
@@ -84,8 +83,7 @@
     @Before
     public void setUp() throws Exception {
         mActivityTestRule.startMainActivityOnBlankPage();
-        mSyncAdapter = new TestSyncAdapter(InstrumentationRegistry.getTargetContext(),
-                mActivityTestRule.getActivity().getApplication());
+        mSyncAdapter = new TestSyncAdapter(InstrumentationRegistry.getTargetContext());
     }
 
     private void performSyncWithBundle(Bundle bundle) {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsControllerTest.java
index 192c644..3d169a2a 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsControllerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsControllerTest.java
@@ -7,9 +7,7 @@
 import android.accounts.Account;
 import android.app.Activity;
 import android.content.ContentResolver;
-import android.content.Context;
 import android.os.Bundle;
-import android.support.test.InstrumentationRegistry;
 import android.support.test.annotation.UiThreadTest;
 import android.support.test.filters.SmallTest;
 import android.support.test.rule.UiThreadTestRule;
@@ -46,7 +44,6 @@
     private static final String PAYLOAD_2 = "payload_2";
 
     private MockDelayedInvalidationsController mController;
-    private Context mContext;
     private Activity mPlaceholderActivity;
 
     @Rule
@@ -63,8 +60,7 @@
         private MockDelayedInvalidationsController() {}
 
         @Override
-        void notifyInvalidationsOnBackgroundThread(
-                Context context, Account account, List<Bundle> bundles) {
+        void notifyInvalidationsOnBackgroundThread(Account account, List<Bundle> bundles) {
             mInvalidated = true;
             mBundles = bundles;
         }
@@ -73,7 +69,6 @@
     @Before
     public void setUp() throws Exception {
         mController = new MockDelayedInvalidationsController();
-        mContext = InstrumentationRegistry.getTargetContext();
 
         mPlaceholderActivity = new Activity();
         setApplicationState(ActivityState.CREATED);
@@ -124,8 +119,8 @@
     @UiThreadTest
     public void testOnlySpecificInvalidationsTriggeredOnResume() throws InterruptedException {
         // First make sure there are no pending invalidations.
-        mController.clearPendingInvalidations(mContext);
-        Assert.assertFalse(mController.notifyPendingInvalidations(mContext));
+        mController.clearPendingInvalidations();
+        Assert.assertFalse(mController.notifyPendingInvalidations());
         Assert.assertFalse(mController.mInvalidated);
 
         // Create some invalidations.
@@ -139,11 +134,11 @@
         Assert.assertFalse(mController.shouldNotifyInvalidation(new Bundle()));
 
         // Add multiple pending invalidations.
-        mController.addPendingInvalidation(mContext, TEST_ACCOUNT, firstInv);
-        mController.addPendingInvalidation(mContext, TEST_ACCOUNT, secondInv);
+        mController.addPendingInvalidation(TEST_ACCOUNT, firstInv);
+        mController.addPendingInvalidation(TEST_ACCOUNT, secondInv);
 
         // Make sure there are pending invalidations.
-        Assert.assertTrue(mController.notifyPendingInvalidations(mContext));
+        Assert.assertTrue(mController.notifyPendingInvalidations());
         Assert.assertTrue(mController.mInvalidated);
 
         // Ensure only specific invalidations are being notified.
@@ -160,8 +155,8 @@
     @UiThreadTest
     public void testAllInvalidationsTriggeredOnResume() throws InterruptedException {
         // First make sure there are no pending invalidations.
-        mController.clearPendingInvalidations(mContext);
-        Assert.assertFalse(mController.notifyPendingInvalidations(mContext));
+        mController.clearPendingInvalidations();
+        Assert.assertFalse(mController.notifyPendingInvalidations());
         Assert.assertFalse(mController.mInvalidated);
 
         // Create some invalidations.
@@ -177,12 +172,12 @@
         Assert.assertFalse(mController.shouldNotifyInvalidation(new Bundle()));
 
         // Add multiple pending invalidations.
-        mController.addPendingInvalidation(mContext, TEST_ACCOUNT, firstInv);
-        mController.addPendingInvalidation(mContext, TEST_ACCOUNT, allInvalidations);
-        mController.addPendingInvalidation(mContext, TEST_ACCOUNT, secondInv);
+        mController.addPendingInvalidation(TEST_ACCOUNT, firstInv);
+        mController.addPendingInvalidation(TEST_ACCOUNT, allInvalidations);
+        mController.addPendingInvalidation(TEST_ACCOUNT, secondInv);
 
         // Make sure there are pending invalidations.
-        Assert.assertTrue(mController.notifyPendingInvalidations(mContext));
+        Assert.assertTrue(mController.notifyPendingInvalidations());
         Assert.assertTrue(mController.mInvalidated);
 
         // As Invalidation for all ids has been received, it will supersede all other invalidations.
@@ -196,8 +191,8 @@
     @UiThreadTest
     public void testSameObjectInvalidationsGetCombined() throws InterruptedException {
         // First make sure there are no pending invalidations.
-        mController.clearPendingInvalidations(mContext);
-        Assert.assertFalse(mController.notifyPendingInvalidations(mContext));
+        mController.clearPendingInvalidations();
+        Assert.assertFalse(mController.notifyPendingInvalidations());
         Assert.assertFalse(mController.mInvalidated);
 
         // Create invalidations with the same id/src, but different versions and payloads.
@@ -211,11 +206,11 @@
         Assert.assertFalse(mController.shouldNotifyInvalidation(new Bundle()));
 
         // Add multiple pending invalidations.
-        mController.addPendingInvalidation(mContext, TEST_ACCOUNT, lowerVersionInv);
-        mController.addPendingInvalidation(mContext, TEST_ACCOUNT, higherVersionInv);
+        mController.addPendingInvalidation(TEST_ACCOUNT, lowerVersionInv);
+        mController.addPendingInvalidation(TEST_ACCOUNT, higherVersionInv);
 
         // Make sure there are pending invalidations.
-        Assert.assertTrue(mController.notifyPendingInvalidations(mContext));
+        Assert.assertTrue(mController.notifyPendingInvalidations());
         Assert.assertTrue(mController.mInvalidated);
 
         // As Invalidation for all ids has been received, it will supersede all other invalidations.
@@ -229,8 +224,8 @@
     @UiThreadTest
     public void testSameObjectLowerVersionInvalidationGetsDiscarded() throws InterruptedException {
         // First make sure there are no pending invalidations.
-        mController.clearPendingInvalidations(mContext);
-        Assert.assertFalse(mController.notifyPendingInvalidations(mContext));
+        mController.clearPendingInvalidations();
+        Assert.assertFalse(mController.notifyPendingInvalidations());
         Assert.assertFalse(mController.mInvalidated);
 
         // Create invalidations with the same id/src, but different versions and payloads.
@@ -244,11 +239,11 @@
         Assert.assertFalse(mController.shouldNotifyInvalidation(new Bundle()));
 
         // Add multiple pending invalidations.
-        mController.addPendingInvalidation(mContext, TEST_ACCOUNT, higherVersionInv);
-        mController.addPendingInvalidation(mContext, TEST_ACCOUNT, lowerVersionInv);
+        mController.addPendingInvalidation(TEST_ACCOUNT, higherVersionInv);
+        mController.addPendingInvalidation(TEST_ACCOUNT, lowerVersionInv);
 
         // Make sure there are pending invalidations.
-        Assert.assertTrue(mController.notifyPendingInvalidations(mContext));
+        Assert.assertTrue(mController.notifyPendingInvalidations());
         Assert.assertTrue(mController.mInvalidated);
 
         // As Invalidation for all ids has been received, it will supersede all other invalidations.
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/invalidation/InvalidationControllerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/invalidation/InvalidationControllerTest.java
index 37379b7..485a94a 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/invalidation/InvalidationControllerTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/invalidation/InvalidationControllerTest.java
@@ -150,7 +150,7 @@
     @Test
     @Feature({"Sync"})
     public void testStop() throws Exception {
-        InvalidationController controller = new InvalidationController(mActivity, true);
+        InvalidationController controller = new InvalidationController(true);
         controller.stop();
         Intent intent = getOnlyIntent();
         validateIntentComponent(intent);
@@ -165,7 +165,7 @@
     @Test
     @Feature({"Sync"})
     public void testEnsureStartedAndUpdateRegisteredTypes() {
-        InvalidationController controller = new InvalidationController(mActivity, false);
+        InvalidationController controller = new InvalidationController(false);
         controller.ensureStartedAndUpdateRegisteredTypes();
         Intent intent = getOnlyIntent();
 
@@ -195,7 +195,7 @@
     public void testPauseAndResumeMainActivityWithSyncDisabled() throws Exception {
         AndroidSyncSettings.disableChromeSync();
 
-        InvalidationController controller = new InvalidationController(mActivity, false);
+        InvalidationController controller = new InvalidationController(false);
         controller.onApplicationStateChange(ApplicationState.HAS_PAUSED_ACTIVITIES);
         controller.onApplicationStateChange(ApplicationState.HAS_RUNNING_ACTIVITIES);
         assertNoNewIntents();
@@ -210,7 +210,7 @@
     public void testNullProfileSyncService() throws Exception {
         ProfileSyncService.overrideForTests(null);
 
-        InvalidationController controller = new InvalidationController(mActivity, false);
+        InvalidationController controller = new InvalidationController(false);
         controller.ensureStartedAndUpdateRegisteredTypes();
         assertNoNewIntents();
     }
@@ -224,7 +224,7 @@
         final AtomicBoolean listenerCallbackCalled = new AtomicBoolean();
 
         // Create instance.
-        new InvalidationController(mActivity, true) {
+        new InvalidationController(true) {
             @Override
             public void onApplicationStateChange(int newState) {
                 listenerCallbackCalled.set(true);
@@ -246,7 +246,7 @@
     @Test
     @Feature({"Sync"})
     public void testCannotToggleSessionInvalidations() {
-        InvalidationController controller = new InvalidationController(mActivity, false);
+        InvalidationController controller = new InvalidationController(false);
         controller.ensureStartedAndUpdateRegisteredTypes();
         Assert.assertEquals(mAllTypes, getRegisterIntentRegisterTypes(getOnlyIntent()));
 
@@ -270,7 +270,7 @@
     @Test
     @Feature({"Sync"})
     public void testRecentTabsPageShown() {
-        InvalidationController controller = new InvalidationController(mActivity, true);
+        InvalidationController controller = new InvalidationController(true);
         controller.ensureStartedAndUpdateRegisteredTypes();
         Assert.assertEquals(mNonSessionTypes, getRegisterIntentRegisterTypes(getOnlyIntent()));
 
@@ -291,7 +291,7 @@
     @Test
     @Feature({"Sync"})
     public void testStartWhileRecentTabsPageShown() {
-        InvalidationController controller = new InvalidationController(mActivity, true);
+        InvalidationController controller = new InvalidationController(true);
         controller.onRecentTabsPageOpened();
         ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
         assertNoNewIntents();
@@ -312,7 +312,7 @@
     @Test
     @Feature({"Sync"})
     public void testMultipleRecentTabsPages() {
-        InvalidationController controller = new InvalidationController(mActivity, true);
+        InvalidationController controller = new InvalidationController(true);
         controller.ensureStartedAndUpdateRegisteredTypes();
         Assert.assertEquals(mNonSessionTypes, getRegisterIntentRegisterTypes(getOnlyIntent()));
 
@@ -339,7 +339,7 @@
     @Test
     @Feature({"Sync"})
     public void testOpenCloseRecentTabsPageQuickly() {
-        InvalidationController controller = new InvalidationController(mActivity, true);
+        InvalidationController controller = new InvalidationController(true);
         controller.ensureStartedAndUpdateRegisteredTypes();
         Assert.assertEquals(mNonSessionTypes, getRegisterIntentRegisterTypes(getOnlyIntent()));
 
@@ -369,7 +369,7 @@
     @Test
     @Feature({"Sync"})
     public void testDisableSessionInvalidationsOnStart() {
-        InvalidationController controller = new InvalidationController(mActivity, true);
+        InvalidationController controller = new InvalidationController(true);
         controller.ensureStartedAndUpdateRegisteredTypes();
         Assert.assertEquals(mNonSessionTypes, getRegisterIntentRegisterTypes(getOnlyIntent()));
         controller.onRecentTabsPageOpened();
@@ -395,7 +395,7 @@
     @Test
     @Feature({"Sync"})
     public void testDisableSessionInvalidationsOnResume() {
-        InvalidationController controller = new InvalidationController(mActivity, true);
+        InvalidationController controller = new InvalidationController(true);
         controller.ensureStartedAndUpdateRegisteredTypes();
         Assert.assertEquals(mNonSessionTypes, getRegisterIntentRegisterTypes(getOnlyIntent()));
         controller.onRecentTabsPageOpened();
@@ -420,7 +420,7 @@
     @Test
     @Feature({"Sync"})
     public void testPauseAndResumeMainActivity() throws Exception {
-        InvalidationController controller = new InvalidationController(mActivity, true);
+        InvalidationController controller = new InvalidationController(true);
         controller.ensureStartedAndUpdateRegisteredTypes();
         Assert.assertEquals(mNonSessionTypes, getRegisterIntentRegisterTypes(getOnlyIntent()));
         controller.onRecentTabsPageOpened();
@@ -444,7 +444,7 @@
     @Test
     @Feature({"Sync"})
     public void testPauseAndResumeMainActivityAfterStop() throws Exception {
-        InvalidationController controller = new InvalidationController(mActivity, true);
+        InvalidationController controller = new InvalidationController(true);
         controller.ensureStartedAndUpdateRegisteredTypes();
         Assert.assertEquals(mNonSessionTypes, getRegisterIntentRegisterTypes(getOnlyIntent()));