Merge "Settings>Security>Show notifications (on the lockscreen)."
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index fe777c9..69fb73a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1295,6 +1295,7 @@
             <intent-filter>
                 <action android:name="android.bluetooth.device.action.PAIRING_REQUEST" />
                 <action android:name="android.bluetooth.device.action.PAIRING_CANCEL" />
+                <action android:name="android.bluetooth.device.action.BOND_STATE_CHANGED" />
             </intent-filter>
         </receiver>
 
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingRequest.java b/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
index 838e7b1..ea36fee 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
@@ -103,6 +103,19 @@
             NotificationManager manager = (NotificationManager) context
                     .getSystemService(Context.NOTIFICATION_SERVICE);
             manager.cancel(NOTIFICATION_ID);
+
+        } else if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {
+            int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE,
+                    BluetoothDevice.ERROR);
+            int oldState = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE,
+                    BluetoothDevice.ERROR);
+            if((oldState == BluetoothDevice.BOND_BONDING) &&
+                    (bondState == BluetoothDevice.BOND_NONE)) {
+                // Remove the notification
+                NotificationManager manager = (NotificationManager) context
+                    .getSystemService(Context.NOTIFICATION_SERVICE);
+                manager.cancel(NOTIFICATION_ID);
+            }
         }
     }
 }
diff --git a/src/com/android/settings/tts/TtsEngineSettingsFragment.java b/src/com/android/settings/tts/TtsEngineSettingsFragment.java
index bb5ac7a..25ec1fd 100644
--- a/src/com/android/settings/tts/TtsEngineSettingsFragment.java
+++ b/src/com/android/settings/tts/TtsEngineSettingsFragment.java
@@ -158,12 +158,22 @@
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (requestCode == VOICE_DATA_INTEGRITY_CHECK) {
-            mVoiceDataDetails = data;
-            updateVoiceDetails();
+            if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
+                updateVoiceDetails(data);
+            } else {
+                Log.e(TAG, "CheckVoiceData activity failed");
+            }
         }
     }
 
-    private void updateVoiceDetails() {
+    private void updateVoiceDetails(Intent data) {
+        if (data == null){
+            Log.e(TAG, "Engine failed voice data integrity check (null return)" +
+                    mTts.getCurrentEngine());
+            return;
+        }
+        mVoiceDataDetails = data;
+
         if (DBG) Log.d(TAG, "Parsing voice data details, data: " + mVoiceDataDetails.toUri(0));
 
         final ArrayList<String> available = mVoiceDataDetails.getStringArrayListExtra(