Merge "Warn that SettingInjectorService must be fast" into klp-dev
diff --git a/api/current.txt b/api/current.txt
index 5918417..0d4dccf 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -11814,6 +11814,7 @@
     ctor public SettingInjectorService(java.lang.String);
     method protected abstract android.location.SettingInjectorService.Status getStatus();
     method protected final void onHandleIntent(android.content.Intent);
+    field public static final java.lang.String UPDATE_INTENT = "com.android.location.InjectedSettingChanged";
   }
 
   public static final class SettingInjectorService.Status {
diff --git a/location/java/android/location/SettingInjectorService.java b/location/java/android/location/SettingInjectorService.java
index d410408..4bfa150 100644
--- a/location/java/android/location/SettingInjectorService.java
+++ b/location/java/android/location/SettingInjectorService.java
@@ -69,6 +69,11 @@
  *     to the user that it is not part of the system settings.</li>
  * </ul>
  *
+ * To ensure a good user experience, your {@link #onHandleIntent(Intent)} must complete within
+ * 200 msec even if your app is not already running. This means that both
+ * {@link android.app.Application#onCreate()} and {@link #getStatus()} must be fast. If you exceed
+ * this time, then this can delay the retrieval of settings status for other apps as well.
+ *
  * For consistency, the label and {@link #getStatus()} values should be provided in all of the
  * locales supported by the system settings app. The text should not contain offensive language.
  *
@@ -82,6 +87,7 @@
  */
 // TODO: is there a public list of supported locales?
 // TODO: is there a public list of guidelines for settings text?
+// TODO: would a bound service be better? E.g., we could just disconnect if a service took too long
 public abstract class SettingInjectorService extends IntentService {
 
     /**
@@ -106,6 +112,12 @@
      */
     public static final String MESSENGER_KEY = "messenger";
 
+    /**
+     * Intent action a client should broadcast when the value of one of its injected settings has
+     * changed, so that the setting can be updated in the UI.
+     */
+    public static final String UPDATE_INTENT = "com.android.location.InjectedSettingChanged";
+
     private final String mLogTag;
 
     /**