Merge "API Cleanup: Remove references to VideoState class." into mnc-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 11dbd04..ac3799f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -228,19 +228,6 @@
             </intent-filter>
         </activity>
 
-        <activity-alias android:name="ProtectedEnableAccountPreferenceActivity"
-                  android:targetActivity=".settings.EnableAccountPreferenceActivity"
-                  android:label="@string/enable_account_preference_title"
-                  android:configChanges="orientation|screenSize|keyboardHidden"
-                  android:theme="@style/Theme.Telecom.DialerSettings"
-                  android:process=":ui"
-                  android:permission="android.permission.MODIFY_PHONE_STATE">
-            <intent-filter>
-                <action android:name="android.telecom.action.ENABLE_PHONE_ACCOUNT_SETTING" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity-alias>
-
         <activity android:name=".components.ErrorDialogActivity"
                 android:configChanges="orientation|screenSize|keyboardHidden"
                 android:excludeFromRecents="true"
@@ -261,17 +248,6 @@
             </intent-filter>
         </activity>
 
-        <activity-alias android:name="ProtectedChangeDefaultDialerActivity"
-                  android:targetActivity=".components.ChangeDefaultDialerDialog"
-                  android:label="@string/change_default_dialer_dialog_title"
-                  android:process=":ui"
-                  android:permission="android.permission.MODIFY_PHONE_STATE">
-            <intent-filter>
-                <action android:name="android.telecom.action.CHANGE_DEFAULT_DIALER_PRIVILEGED" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity-alias>
-
         <receiver android:name=".components.PrimaryCallReceiver"
                 android:exported="true"
                 android:permission="android.permission.MODIFY_PHONE_STATE"
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index 6335762..f346a49 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -22,7 +22,7 @@
     <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Telefonata të humbura"</string>
     <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> telefonata të humbura"</string>
     <string name="notification_missedCallTicker" msgid="504686252427747209">"Telefonatë e humbur nga <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
-    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ri-telefono"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Telefono"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Mesazh"</string>
     <string name="accessibility_call_muted" msgid="2776111226185342220">"Telefonata kaloi në heshtje."</string>
     <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Altoparlanti u aktivizua."</string>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 8d11e43..efe1a11 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -22,7 +22,7 @@
     <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Javobsiz qo‘ng‘iroqlar"</string>
     <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ta javobsiz qo‘ng‘iroq"</string>
     <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> qo‘ng‘irog‘i javobsiz qoldirildi"</string>
-    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Qo‘ng‘iroq"</string>
+    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Telefon"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"SMS"</string>
     <string name="accessibility_call_muted" msgid="2776111226185342220">"Qo‘ng‘iroq ovozi o‘chirildi."</string>
     <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Karnaychalar yoqildi."</string>
diff --git a/src/com/android/server/telecom/BluetoothManager.java b/src/com/android/server/telecom/BluetoothManager.java
index f74349f..aec0d3e 100644
--- a/src/com/android/server/telecom/BluetoothManager.java
+++ b/src/com/android/server/telecom/BluetoothManager.java
@@ -42,11 +42,14 @@
                 public void onServiceConnected(int profile, BluetoothProfile proxy) {
                     mBluetoothHeadset = (BluetoothHeadset) proxy;
                     Log.v(this, "- Got BluetoothHeadset: " + mBluetoothHeadset);
+                    updateBluetoothState();
                 }
 
                 @Override
                 public void onServiceDisconnected(int profile) {
                     mBluetoothHeadset = null;
+                    Log.v(this, "Lost BluetoothHeadset: " + mBluetoothHeadset);
+                    updateBluetoothState();
                 }
            };
 
diff --git a/src/com/android/server/telecom/PhoneAccountRegistrar.java b/src/com/android/server/telecom/PhoneAccountRegistrar.java
index b5ddc87..83f1207 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -353,15 +353,19 @@
         mCurrentUserHandle = userHandle;
     }
 
-    public void enablePhoneAccount(PhoneAccountHandle accountHandle, boolean isEnabled) {
+    /**
+     * @return {@code true} if the phone account was successfully enabled/disabled, {@code false}
+     *         otherwise.
+     */
+    public boolean enablePhoneAccount(PhoneAccountHandle accountHandle, boolean isEnabled) {
         PhoneAccount account = getPhoneAccount(accountHandle);
         if (account == null) {
             Log.w(this, "Could not find account to enable: " + accountHandle);
-            return;
+            return false;
         } else if (account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
             // We never change the enabled state of SIM-based accounts.
             Log.w(this, "Could not change enable state of SIM account: " + accountHandle);
-            return;
+            return false;
         }
 
         if (account.isEnabled() != isEnabled) {
@@ -369,6 +373,7 @@
             write();
             fireAccountsChanged();
         }
+        return true;
     }
 
     private boolean isVisibleForUser(PhoneAccount account) {
diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
index 1d213b7..f0221b7 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -22,6 +22,7 @@
 import static android.Manifest.permission.REGISTER_CALL_PROVIDER;
 import static android.Manifest.permission.REGISTER_CONNECTION_MANAGER;
 import static android.Manifest.permission.REGISTER_SIM_SUBSCRIPTION;
+import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
 
 import android.app.AppOpsManager;
 import android.content.ComponentName;
@@ -833,13 +834,27 @@
          * @see android.telecom.TelecomManager#enablePhoneAccount
          */
         @Override
-        public void enablePhoneAccount(PhoneAccountHandle accountHandle, boolean isEnabled) {
+        public boolean enablePhoneAccount(PhoneAccountHandle accountHandle, boolean isEnabled) {
             enforceModifyPermission();
             synchronized (mLock) {
                 long token  = Binder.clearCallingIdentity();
                 try {
                     // enable/disable phone account
-                    mPhoneAccountRegistrar.enablePhoneAccount(accountHandle, isEnabled);
+                    return mPhoneAccountRegistrar.enablePhoneAccount(accountHandle, isEnabled);
+                } finally {
+                    Binder.restoreCallingIdentity(token);
+                }
+            }
+        }
+
+        @Override
+        public boolean setDefaultDialer(String packageName) {
+            enforcePermission(MODIFY_PHONE_STATE);
+            enforcePermission(WRITE_SECURE_SETTINGS);
+            synchronized (mLock) {
+                long token  = Binder.clearCallingIdentity();
+                try {
+                    return DefaultDialerManager.setDefaultDialerApplication(mContext, packageName);
                 } finally {
                     Binder.restoreCallingIdentity(token);
                 }
diff --git a/src/com/android/server/telecom/components/ChangeDefaultDialerDialog.java b/src/com/android/server/telecom/components/ChangeDefaultDialerDialog.java
index c4ca7da..95b81b1 100644
--- a/src/com/android/server/telecom/components/ChangeDefaultDialerDialog.java
+++ b/src/com/android/server/telecom/components/ChangeDefaultDialerDialog.java
@@ -57,10 +57,8 @@
             finish();
         }
 
-        if (!maybeHandlePrivilegedOperation(getIntent(), mNewPackage)) {
-            // Show dialog to require user confirmation.
-            buildDialog(oldPackage, mNewPackage);
-        }
+        // Show dialog to require user confirmation.
+         buildDialog(oldPackage, mNewPackage);
     }
 
     @Override
@@ -77,24 +75,6 @@
         }
     }
 
-    private boolean maybeHandlePrivilegedOperation(Intent intent, String newPackage) {
-        // Verify that both the launched activity aliases and the intent action are the privileged
-        // versions that can only be launched with the MODIFY_PHONE_STATE permission.
-        if (getClass().getName().equals(intent.getComponent().getClassName())) {
-            // Activity was not launched as privileged activity-alias.
-            return false;
-        }
-        if (!TelecomManager.ACTION_CHANGE_DEFAULT_DIALER_PRIVILEGED.equals(intent.getAction())) {
-            return false;
-        }
-
-        DefaultDialerManager.setDefaultDialerApplication(ChangeDefaultDialerDialog.this,
-                newPackage);
-        setResult(RESULT_OK);
-        finish();
-        return true;
-    }
-
     private boolean canChangeToProvidedPackage(String oldPackage, String newPackage) {
         final TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
         if (!tm.isVoiceCapable()) {
diff --git a/src/com/android/server/telecom/settings/EnableAccountPreferenceActivity.java b/src/com/android/server/telecom/settings/EnableAccountPreferenceActivity.java
index 728100c..2367825 100644
--- a/src/com/android/server/telecom/settings/EnableAccountPreferenceActivity.java
+++ b/src/com/android/server/telecom/settings/EnableAccountPreferenceActivity.java
@@ -31,12 +31,6 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-
-        if (handleDirectChangeRequest()) {
-            finish();
-            return;
-        }
-
         getFragmentManager().beginTransaction()
                 .replace(android.R.id.content, new EnableAccountPreferenceFragment())
                 .commit();
@@ -47,54 +41,6 @@
         }
     }
 
-    private boolean handleDirectChangeRequest() {
-        // Here we check to see if the intent action is the protected version which allows
-        // for immediate enabling/disabling of phone accounts. If it is, take the phone account
-        // handle and value and simply enable/disable the account. If any part is missing, then
-        // open the setting screen as normal.
-        Intent intent = getIntent();
-        String action = intent.getAction();
-        if (!TelecomManager.ACTION_ENABLE_PHONE_ACCOUNT_SETTING.equals(action)) {
-            return false;
-        }
-
-        if (!intent.hasExtra(TelecomManager.EXTRA_ENABLE_PHONE_ACCOUNT_VALUE)) {
-            Log.w(this, "Boolean extra value not found in %s",
-                    TelecomManager.EXTRA_ENABLE_PHONE_ACCOUNT_VALUE);
-            return false;
-        }
-
-        String desc = intent.getStringExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_DESCRIPTION);
-        if (desc == null) {
-            Log.w(this, "Extra value not found or is null in %s",
-                    TelecomManager.EXTRA_PHONE_ACCOUNT_DESCRIPTION);
-            return false;
-        }
-
-        String[] parts = desc.split(";");
-        if (parts.length < 2) {
-            Log.w(this, "Description not split into two parts with semi-colon: %s", desc);
-            return false;
-        }
-
-        ComponentName component = ComponentName.unflattenFromString(parts[0]);
-        if (component == null) {
-            Log.w(this, "Value does not unflatten to ComponentName: %s", parts[0]);
-            return false;
-        }
-
-        PhoneAccountHandle handle = new PhoneAccountHandle(component, parts[1]);
-        boolean enabled = intent.getBooleanExtra(
-                TelecomManager.EXTRA_ENABLE_PHONE_ACCOUNT_VALUE, false);
-        try {
-            TelecomManager.from(this).enablePhoneAccount(handle, enabled);
-            return true;
-        } catch (Exception e) {
-            Log.e(this, e, "Exception enabling account %s, %s", parts[0], parts[1]);
-            return false;
-        }
-    }
-
     /** ${inheritDoc} */
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {