Merge change 6285

* changes:
  Make backup agent run in the system process as well.
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java
index 0785029..fdb619a 100644
--- a/core/java/android/app/SearchDialog.java
+++ b/core/java/android/app/SearchDialog.java
@@ -1573,6 +1573,15 @@
         }
         
         /**
+         * We override this method to avoid an extra onItemClick being called on the
+         * drop-down's OnItemClickListener by {@link AutoCompleteTextView#onKeyUp(int, KeyEvent)}
+         * when an item is clicked with the trackball.
+         */
+        @Override
+        public void performCompletion() {
+        }
+        
+        /**
          * We override this method so that we can allow a threshold of zero, which ACTV does not.
          */
         @Override
diff --git a/core/java/android/speech/tts/ITts.aidl b/core/java/android/speech/tts/ITts.aidl
index 5612ecd..c9a6180 100755
--- a/core/java/android/speech/tts/ITts.aidl
+++ b/core/java/android/speech/tts/ITts.aidl
@@ -27,15 +27,15 @@
  * {@hide}

  */

 interface ITts {

-    void setSpeechRate(in int speechRate);

+    int setSpeechRate(in int speechRate);

 

-    void setPitch(in int pitch);

+    int setPitch(in int pitch);

 

-    void speak(in String text, in int queueMode, in String[] params);

+    int speak(in String text, in int queueMode, in String[] params);

 

     boolean isSpeaking();

 

-    void stop();

+    int stop();

 

     void addSpeech(in String text, in String packageName, in int resId);

 

@@ -45,11 +45,11 @@
 

     int isLanguageAvailable(in String language, in String country, in String variant);

 

-    void setLanguage(in String language, in String country, in String variant);

+    int setLanguage(in String language, in String country, in String variant);

 

     boolean synthesizeToFile(in String text, in String[] params, in String outputDirectory);

 

-    void playEarcon(in String earcon, in int queueMode, in String[] params);

+    int playEarcon(in String earcon, in int queueMode, in String[] params);

 

     void addEarcon(in String earcon, in String packageName, in int resId);

 

@@ -59,5 +59,5 @@
 

     void unregisterCallback(ITtsCallback cb);

 

-    void playSilence(in long duration, in int queueMode, in String[] params);

+    int playSilence(in long duration, in int queueMode, in String[] params);

 }

diff --git a/core/res/res/layout/progress_dialog.xml b/core/res/res/layout/progress_dialog.xml
index 2d7afd6..8f66451 100644
--- a/core/res/res/layout/progress_dialog.xml
+++ b/core/res/res/layout/progress_dialog.xml
@@ -33,6 +33,7 @@
         android:paddingBottom="10dip">
 
         <ProgressBar android:id="@android:id/progress"
+            style="@android:style/Widget.ProgressBar"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:max="10000"
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index 1736a491..16be668 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -95,7 +95,7 @@
         data.writeEntityHeader(KEY_SYNC, syncProviders.length);
         data.writeEntityData(syncProviders, syncProviders.length);
         
-        //TODO: Permissions problem : backupFile(FILE_WIFI_SUPPLICANT, data);
+        backupFile(FILE_WIFI_SUPPLICANT, data);
     }
 
     @Override
diff --git a/packages/TtsService/src/android/tts/SynthProxy.java b/packages/TtsService/src/android/tts/SynthProxy.java
index 11a4380..bb16b14 100755
--- a/packages/TtsService/src/android/tts/SynthProxy.java
+++ b/packages/TtsService/src/android/tts/SynthProxy.java
@@ -45,15 +45,15 @@
     /**
      * Stops and clears the AudioTrack.
      */
-    public void stop() {
-        native_stop(mJniData);
+    public int stop() {
+        return native_stop(mJniData);
     }
 
     /**
      * Synthesize speech and speak it directly using AudioTrack.
      */
-    public void speak(String text) {
-        native_speak(mJniData, text);
+    public int speak(String text) {
+        return native_speak(mJniData, text);
     }
 
     /**
@@ -61,12 +61,10 @@
      * WAV file to the given path, assuming it is writable. Something like
      * "/sdcard/???.wav" is recommended.
      */
-    public void synthesizeToFile(String text, String filename) {
-        native_synthesizeToFile(mJniData, text, filename);
+    public int synthesizeToFile(String text, String filename) {
+        return native_synthesizeToFile(mJniData, text, filename);
     }
 
-    // TODO add IPA methods
-
     /**
      * Queries for language support.
      * Return codes are defined in android.speech.tts.TextToSpeech
@@ -78,29 +76,29 @@
     /**
      * Sets the language.
      */
-    public void setLanguage(String language, String country, String variant) {
-        native_setLanguage(mJniData, language, country, variant);
+    public int setLanguage(String language, String country, String variant) {
+        return native_setLanguage(mJniData, language, country, variant);
     }
 
     /**
      * Loads the language: it's not set, but prepared for use later.
      */
-    public void loadLanguage(String language, String country, String variant) {
-        native_loadLanguage(mJniData, language, country, variant);
+    public int loadLanguage(String language, String country, String variant) {
+        return native_loadLanguage(mJniData, language, country, variant);
     }
 
     /**
      * Sets the speech rate.
      */
-    public final void setSpeechRate(int speechRate) {
-        native_setSpeechRate(mJniData, speechRate);
+    public final int setSpeechRate(int speechRate) {
+        return native_setSpeechRate(mJniData, speechRate);
     }
 
     /**
      * Sets the pitch of the synthesized voice.
      */
-    public final void setPitch(int pitch) {
-        native_setPitch(mJniData, pitch);
+    public final int setPitch(int pitch) {
+        return native_setPitch(mJniData, pitch);
     }
 
     /**
diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java
index 5c0c55c..5c3c560 100755
--- a/packages/TtsService/src/android/tts/TtsService.java
+++ b/packages/TtsService/src/android/tts/TtsService.java
@@ -212,17 +212,17 @@
     }
 
 
-    private void setSpeechRate(int rate) {
+    private int setSpeechRate(int rate) {
         if (isDefaultEnforced()) {
-            nativeSynth.setSpeechRate(getDefaultRate());
+            return nativeSynth.setSpeechRate(getDefaultRate());
         } else {
-            nativeSynth.setSpeechRate(rate);
+            return nativeSynth.setSpeechRate(rate);
         }
     }
 
 
-    private void setPitch(int pitch) {
-        nativeSynth.setPitch(pitch);
+    private int setPitch(int pitch) {
+        return nativeSynth.setPitch(pitch);
     }
 
 
@@ -237,13 +237,13 @@
     }
 
 
-    private void setLanguage(String lang, String country, String variant) {
+    private int setLanguage(String lang, String country, String variant) {
         Log.v("TTS", "TtsService.setLanguage(" + lang + ", " + country + ", " + variant + ")");
         if (isDefaultEnforced()) {
-            nativeSynth.setLanguage(getDefaultLanguage(), getDefaultCountry(),
+            return nativeSynth.setLanguage(getDefaultLanguage(), getDefaultCountry(),
                     getDefaultLocVariant());
         } else {
-            nativeSynth.setLanguage(lang, country, variant);
+            return nativeSynth.setLanguage(lang, country, variant);
         }
     }
 
@@ -314,7 +314,7 @@
      *            An ArrayList of parameters. This is not implemented for all
      *            engines.
      */
-    private void speak(String text, int queueMode, ArrayList<String> params) {
+    private int speak(String text, int queueMode, ArrayList<String> params) {
         if (queueMode == 0) {
             stop();
         }
@@ -322,6 +322,7 @@
         if (!mIsSpeaking) {
             processSpeechQueue();
         }
+        return TextToSpeech.TTS_SUCCESS;
     }
 
     /**
@@ -336,7 +337,7 @@
      *            An ArrayList of parameters. This is not implemented for all
      *            engines.
      */
-    private void playEarcon(String earcon, int queueMode,
+    private int playEarcon(String earcon, int queueMode,
             ArrayList<String> params) {
         if (queueMode == 0) {
             stop();
@@ -345,16 +346,17 @@
         if (!mIsSpeaking) {
             processSpeechQueue();
         }
+        return TextToSpeech.TTS_SUCCESS;
     }
 
     /**
      * Stops all speech output and removes any utterances still in the queue.
      */
-    private void stop() {
+    private int stop() {
         Log.i("TTS", "Stopping");
         mSpeechQueue.clear();
 
-        nativeSynth.stop();
+        int result = nativeSynth.stop();
         mIsSpeaking = false;
         if (mPlayer != null) {
             try {
@@ -364,13 +366,14 @@
             }
         }
         Log.i("TTS", "Stopped");
+        return result;
     }
 
     public void onCompletion(MediaPlayer arg0) {
         processSpeechQueue();
     }
 
-    private void playSilence(long duration, int queueMode,
+    private int playSilence(long duration, int queueMode,
             ArrayList<String> params) {
         if (queueMode == 0) {
             stop();
@@ -379,6 +382,7 @@
         if (!mIsSpeaking) {
             processSpeechQueue();
         }
+        return TextToSpeech.TTS_SUCCESS;
     }
 
     private void silence(final long duration) {
@@ -725,12 +729,12 @@
          *            An ArrayList of parameters. The first element of this
          *            array controls the type of voice to use.
          */
-        public void speak(String text, int queueMode, String[] params) {
+        public int speak(String text, int queueMode, String[] params) {
             ArrayList<String> speakingParams = new ArrayList<String>();
             if (params != null) {
                 speakingParams = new ArrayList<String>(Arrays.asList(params));
             }
-            mSelf.speak(text, queueMode, speakingParams);
+            return mSelf.speak(text, queueMode, speakingParams);
         }
 
         /**
@@ -744,12 +748,12 @@
          * @param params
          *            An ArrayList of parameters.
          */
-        public void playEarcon(String earcon, int queueMode, String[] params) {
+        public int playEarcon(String earcon, int queueMode, String[] params) {
             ArrayList<String> speakingParams = new ArrayList<String>();
             if (params != null) {
                 speakingParams = new ArrayList<String>(Arrays.asList(params));
             }
-            mSelf.playEarcon(earcon, queueMode, speakingParams);
+            return mSelf.playEarcon(earcon, queueMode, speakingParams);
         }
 
         /**
@@ -763,20 +767,20 @@
          * @param params
          *            An ArrayList of parameters.
          */
-        public void playSilence(long duration, int queueMode, String[] params) {
+        public int playSilence(long duration, int queueMode, String[] params) {
             ArrayList<String> speakingParams = new ArrayList<String>();
             if (params != null) {
                 speakingParams = new ArrayList<String>(Arrays.asList(params));
             }
-            mSelf.playSilence(duration, queueMode, speakingParams);
+            return mSelf.playSilence(duration, queueMode, speakingParams);
         }
 
         /**
          * Stops all speech output and removes any utterances still in the
          * queue.
          */
-        public void stop() {
-            mSelf.stop();
+        public int stop() {
+            return mSelf.stop();
         }
 
         /**
@@ -849,8 +853,8 @@
          * @param speechRate
          *            The speech rate that should be used
          */
-        public void setSpeechRate(int speechRate) {
-            mSelf.setSpeechRate(speechRate);
+        public int setSpeechRate(int speechRate) {
+            return mSelf.setSpeechRate(speechRate);
         }
 
         /**
@@ -860,8 +864,8 @@
          * @param pitch
          *            The pitch that should be used for the synthesized voice
          */
-        public void setPitch(int pitch) {
-            mSelf.setPitch(pitch);
+        public int setPitch(int pitch) {
+            return mSelf.setPitch(pitch);
         }
 
         /**
@@ -895,8 +899,8 @@
          * @param country  the three letter ISO country code.
          * @param variant  the variant code associated with the country and language pair.
          */
-        public void setLanguage(String lang, String country, String variant) {
-            mSelf.setLanguage(lang, country, variant);
+        public int setLanguage(String lang, String country, String variant) {
+            return mSelf.setLanguage(lang, country, variant);
         }
 
         /**
diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java
index c60a57b..ab6e49c1 100644
--- a/services/java/com/android/server/WifiService.java
+++ b/services/java/com/android/server/WifiService.java
@@ -49,6 +49,7 @@
 import android.os.PowerManager;
 import android.os.Process;
 import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.provider.Settings;
 import android.util.Log;
 import android.text.TextUtils;
@@ -64,6 +65,7 @@
 import java.io.PrintWriter;
 
 import com.android.internal.app.IBatteryStats;
+import android.backup.IBackupManager;
 import com.android.server.am.BatteryStatsService;
 
 /**
@@ -1450,6 +1452,16 @@
                 }
             }
         }
+        // Inform the backup manager about a data change
+        IBackupManager ibm = IBackupManager.Stub.asInterface(
+                ServiceManager.getService(Context.BACKUP_SERVICE));
+        if (ibm != null) {
+            try {
+                ibm.dataChanged("com.android.providers.settings");
+            } catch (Exception e) {
+                // Try again later
+            }
+        }
         return result;
     }