Renaming SharedPreferences$Editor.startCommit to apply

Also removes the artifical restriction that only one apply() can be in
flight at once.  That was old from when I thought it'd end up being
required, but wasn't.

Change-Id: I3540ea8be6e0760d6a51d218186f71655c2f3f55
diff --git a/api/current.xml b/api/current.xml
index c04134f..0331d3e 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -45080,7 +45080,7 @@
 <parameter name="key" type="java.lang.String">
 </parameter>
 </method>
-<method name="startCommit"
+<method name="apply"
  return="void"
  abstract="true"
  native="false"
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 0cd1f3a..f6ce19d 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -124,7 +124,6 @@
 import java.util.WeakHashMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 class ReceiverRestrictedContext extends ContextWrapper {
     ReceiverRestrictedContext(Context base) {
@@ -2821,8 +2820,6 @@
             private final Map<String, Object> mModified = Maps.newHashMap();
             private boolean mClear = false;
 
-            private AtomicBoolean mCommitInFlight = new AtomicBoolean(false);
-
             public Editor putString(String key, String value) {
                 synchronized (this) {
                     mModified.put(key, value);
@@ -2868,11 +2865,7 @@
                 }
             }
 
-            public void startCommit() {
-                if (!mCommitInFlight.compareAndSet(false, true)) {
-                    throw new IllegalStateException("can't call startCommit() twice");
-                }
-
+            public void apply() {
                 final MemoryCommitResult mcr = commitToMemory();
                 final Runnable awaitCommit = new Runnable() {
                         public void run() {
@@ -2888,7 +2881,6 @@
                 Runnable postWriteRunnable = new Runnable() {
                         public void run() {
                             awaitCommit.run();
-                            mCommitInFlight.set(false);
                             QueuedWork.remove(awaitCommit);
                         }
                     };
@@ -3012,13 +3004,13 @@
          * that they're enqueued.
          *
          * @param postWriteRunnable if non-null, we're being called
-         *   from startCommit() and this is the runnable to run after
+         *   from apply() and this is the runnable to run after
          *   the write proceeds.  if null (from a regular commit()),
          *   then we're allowed to do this disk write on the main
          *   thread (which in addition to reducing allocations and
          *   creating a background thread, this has the advantage that
          *   we catch them in userdebug StrictMode reports to convert
-         *   them where possible to startCommit...)
+         *   them where possible to apply() ...)
          */
         private void enqueueDiskWrite(final MemoryCommitResult mcr,
                                       final Runnable postWriteRunnable) {
diff --git a/core/java/android/content/SharedPreferences.java b/core/java/android/content/SharedPreferences.java
index b3db2ac..1484204 100644
--- a/core/java/android/content/SharedPreferences.java
+++ b/core/java/android/content/SharedPreferences.java
@@ -54,13 +54,13 @@
     /**
      * Interface used for modifying values in a {@link SharedPreferences}
      * object.  All changes you make in an editor are batched, and not copied
-     * back to the original {@link SharedPreferences} or persistent storage
-     * until you call {@link #commit}.
+     * back to the original {@link SharedPreferences} until you call {@link #commit}
+     * or {@link #apply}
      */
     public interface Editor {
         /**
          * Set a String value in the preferences editor, to be written back once
-         * {@link #commit} is called.
+         * {@link #commit} or {@link #apply} are called.
          * 
          * @param key The name of the preference to modify.
          * @param value The new value for the preference.
@@ -72,7 +72,7 @@
         
         /**
          * Set an int value in the preferences editor, to be written back once
-         * {@link #commit} is called.
+         * {@link #commit} or {@link #apply} are called.
          * 
          * @param key The name of the preference to modify.
          * @param value The new value for the preference.
@@ -84,7 +84,7 @@
         
         /**
          * Set a long value in the preferences editor, to be written back once
-         * {@link #commit} is called.
+         * {@link #commit} or {@link #apply} are called.
          * 
          * @param key The name of the preference to modify.
          * @param value The new value for the preference.
@@ -96,7 +96,7 @@
         
         /**
          * Set a float value in the preferences editor, to be written back once
-         * {@link #commit} is called.
+         * {@link #commit} or {@link #apply} are called.
          * 
          * @param key The name of the preference to modify.
          * @param value The new value for the preference.
@@ -108,7 +108,7 @@
         
         /**
          * Set a boolean value in the preferences editor, to be written back
-         * once {@link #commit} is called.
+         * once {@link #commit} or {@link #apply} are called.
          * 
          * @param key The name of the preference to modify.
          * @param value The new value for the preference.
@@ -159,7 +159,7 @@
          *
          * <p>If you don't care about the return value and you're
          * using this from your application's main thread, consider
-         * using {@link #startCommit} instead.
+         * using {@link #apply} instead.
          *
          * @return Returns true if the new values were successfully written
          * to persistent storage.
@@ -173,16 +173,16 @@
          * in the SharedPreferences.
          *
          * <p>Note that when two editors are modifying preferences at the same
-         * time, the last one to call commit wins.
+         * time, the last one to call apply wins.
          *
          * <p>Unlike {@link #commit}, which writes its preferences out
-         * to persistent storage synchronously, {@link #startCommit}
+         * to persistent storage synchronously, {@link #apply}
          * commits its changes to the in-memory
          * {@link SharedPreferences} immediately but starts an
          * asynchronous commit to disk and you won't be notified of
          * any failures.  If another editor on this
          * {@link SharedPreferences} does a regular {@link #commit}
-         * while a {@link #startCommit} is still outstanding, the
+         * while a {@link #apply} is still outstanding, the
          * {@link #commit} will block until all async commits are
          * completed as well as the commit itself.
          *
@@ -190,7 +190,7 @@
          * the base class will wait for any async commits to finish in
          * its {@link android.app.Activity#onPause}.</p>
          */
-        void startCommit();
+        void apply();
     }
 
     /**
diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java
index 1453329..dde6493 100644
--- a/core/java/android/preference/Preference.java
+++ b/core/java/android/preference/Preference.java
@@ -1195,7 +1195,7 @@
 
     private void tryCommit(SharedPreferences.Editor editor) {
         if (mPreferenceManager.shouldCommit()) {
-            editor.startCommit();
+            editor.apply();
         }
     }
     
diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java
index abd66ae..b2aa04d 100644
--- a/core/java/android/server/BluetoothService.java
+++ b/core/java/android/server/BluetoothService.java
@@ -1737,7 +1737,7 @@
                         mContext.getSharedPreferences(SHARED_PREFERENCES_NAME,
                                 mContext.MODE_PRIVATE).edit();
                     editor.putBoolean(SHARED_PREFERENCE_DOCK_ADDRESS + mDockAddress, true);
-                    editor.startCommit();
+                    editor.apply();
                 }
             }
         }
diff --git a/services/java/com/android/server/BootReceiver.java b/services/java/com/android/server/BootReceiver.java
index d15a058..b9ff8d0 100644
--- a/services/java/com/android/server/BootReceiver.java
+++ b/services/java/com/android/server/BootReceiver.java
@@ -167,7 +167,7 @@
             if (lastTime == fileTime) return;  // Already logged this particular file
             // TODO: move all these SharedPreferences Editor commits
             // outside this function to the end of logBootEvents
-            prefs.edit().putLong(filename, fileTime).startCommit();
+            prefs.edit().putLong(filename, fileTime).apply();
         }
 
         Slog.i(TAG, "Copying " + filename + " to DropBox (" + tag + ")");