Merge "Fix failures on com.android.settings.network.ApnEditorTest" into rvc-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 18cf866..d31fb30 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1135,6 +1135,7 @@
                 android:targetActivity=".applications.InstalledAppDetailsTop">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.APPLICATION_DETAILS_SETTINGS" />
+                <action android:name="android.intent.action.AUTO_REVOKE_PERMISSIONS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:scheme="package" />
             </intent-filter>
diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
index 1802060..cea8eb3 100644
--- a/res/xml/accessibility_settings.xml
+++ b/res/xml/accessibility_settings.xml
@@ -154,6 +154,7 @@
             android:persistent="false"
             android:summary="@string/live_caption_summary"
             android:title="@string/live_caption_title"
+            settings:searchable="false"
             settings:controller="com.android.settings.accessibility.LiveCaptionPreferenceController"/>
 
         <SwitchPreference
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index c61e573..ac758dc 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -172,7 +172,7 @@
                 com.android.internal.R.string.config_ethernet_iface_regex);
 
         final boolean usbAvailable = mUsbRegexs.length != 0;
-        final boolean bluetoothAvailable = mBluetoothRegexs.length != 0;
+        final boolean bluetoothAvailable = adapter != null && mBluetoothRegexs.length != 0;
         final boolean ethernetAvailable = !TextUtils.isEmpty(mEthernetRegex);
 
         if (!usbAvailable || Utils.isMonkeyRunning()) {
@@ -326,7 +326,8 @@
         if (intent != null) mTetherChangeReceiver.onReceive(activity, intent);
 
         mEthernetListener = new EthernetListener();
-        mEm.addListener(mEthernetListener);
+        if (mEm != null)
+            mEm.addListener(mEthernetListener);
 
         updateState();
     }
@@ -340,7 +341,8 @@
         }
         getActivity().unregisterReceiver(mTetherChangeReceiver);
         mTm.unregisterTetheringEventCallback(mTetheringEventCallback);
-        mEm.removeListener(mEthernetListener);
+        if (mEm != null)
+            mEm.removeListener(mEthernetListener);
         mTetherChangeReceiver = null;
         mStartTetheringCallback = null;
         mTetheringEventCallback = null;
@@ -438,7 +440,7 @@
         if (isTethered) {
             mEthernetTether.setEnabled(!mDataSaverEnabled);
             mEthernetTether.setChecked(true);
-        } else if (isAvailable || mEm.isAvailable()) {
+        } else if (isAvailable || (mEm != null && mEm.isAvailable())) {
             mEthernetTether.setEnabled(!mDataSaverEnabled);
             mEthernetTether.setChecked(false);
         } else {
diff --git a/src/com/android/settings/network/TetherEnabler.java b/src/com/android/settings/network/TetherEnabler.java
index c4b36d3..87832d9 100644
--- a/src/com/android/settings/network/TetherEnabler.java
+++ b/src/com/android/settings/network/TetherEnabler.java
@@ -212,7 +212,8 @@
         // Only check bluetooth tethering state if not stopped by user already.
         if (!mBluetoothTetheringStoppedByUser) {
             final BluetoothPan pan = mBluetoothPan.get();
-            if (mBluetoothAdapter.getState() == BluetoothAdapter.STATE_ON
+            if (mBluetoothAdapter != null &&
+                mBluetoothAdapter.getState() == BluetoothAdapter.STATE_ON
                     && pan != null && pan.isTetheringOn()) {
                 tetherState |= TETHERING_BLUETOOTH_ON;
             }
@@ -279,7 +280,7 @@
 
         if (choice == TETHERING_BLUETOOTH) {
             mBluetoothTetheringStoppedByUser = false;
-            if (isBluetoothTethering(state)) {
+            if (mBluetoothAdapter == null || isBluetoothTethering(state)) {
                 return;
             } else if (mBluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF) {
                 if (DEBUG) {