Merge "Add Spam#updateSpamSync API to control when syncing the Apdl spam list is enabled"
diff --git a/java/com/android/dialer/spam/Spam.java b/java/com/android/dialer/spam/Spam.java
index c22f541..21d770e 100644
--- a/java/com/android/dialer/spam/Spam.java
+++ b/java/com/android/dialer/spam/Spam.java
@@ -16,6 +16,8 @@
 
 package com.android.dialer.spam;
 
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceChangeListener;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import com.android.dialer.DialerPhoneNumber;
@@ -39,6 +41,20 @@
       ImmutableSet<DialerPhoneNumber> dialerPhoneNumbers);
 
   /**
+   * Called as an indication that the Spam implementation should check whether downloading a spam
+   * list needs to occur or not.
+   *
+   * @param isEnabledByUser true if spam is enabled by the user. Generally, this value should be
+   *     passed as {@link SpamSettings#isSpamEnabled()}. In the scenario where the user toggles the
+   *     spam setting isSpamEnabled returns stale data: the SharedPreferences will not have updated
+   *     prior to executing {@link OnPreferenceChangeListener#onPreferenceChange(Preference,
+   *     Object)}. For that case, use the new value provided in the onPreferenceChange callback.
+   * @return a future containing no value. It is only an indication of success or failure of the
+   *     operation.
+   */
+  ListenableFuture<Void> updateSpamListDownload(boolean isEnabledByUser);
+
+  /**
    * Checks if the given number is suspected of being a spam.
    *
    * @param number The phone number of the call.
diff --git a/java/com/android/dialer/spam/SpamStub.java b/java/com/android/dialer/spam/SpamStub.java
index 28f26d1..8851fd0 100644
--- a/java/com/android/dialer/spam/SpamStub.java
+++ b/java/com/android/dialer/spam/SpamStub.java
@@ -66,6 +66,12 @@
   }
 
   @Override
+  public ListenableFuture<Void> updateSpamListDownload(boolean isEnabledByUser) {
+    // no-op
+    return Futures.immediateFuture(null);
+  }
+
+  @Override
   public void checkSpamStatus(String number, String countryIso, Listener listener) {
     listener.onComplete(false);
   }