tree 9bd404bcedcee822bd69c91d55fc94e22361f7d1
parent a2b4ed6f4340b959e2542e98a6fc2395475827c3
parent e53711736e4da5ae7f722e54182f1cb51082d45c
author Treehugger Robot <treehugger-gerrit@google.com> 1510996087 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 1510996087 +0000

Merge changes I8cb0c6e7,I03258e86,I0b31bd93,I866708a6,I84f9e19b, ...

* changes:
  Implement change SIM animation
  Implement headless PreCall
  Merge the following methods in InCallActivityCommon into InCallActivity: 1. maybeShowErrorDialogOnDisconnect(DisconnectMessage), 2. onDialogDismissed(), 3. showErrorDialog(Dialog, CharSequence), 4. showInternationalCallOnWifiDialog(DialerCall), 5. showWifiFailedDialog(DialerCall), and 6. showWifiToLteHandoverToast(DialerCall).
  Added PhoneLookupDataSource and implemented isDirty.
  Send SUB_ID_EXTRA to VoicemailSettingsActivity in Telephony
  Add preferred SIM meta-data to dialer manifest
  Remove unused code InCallUiBings.getUiReadyBroadcastIntent().
  Move the following methods from InCallActivityCommon to InCallActivity: 1. enableInCallOrientationEventListener(boolean) 2. isDialpadVisible() 3. getDialpadFragment()
  Keyboard now closes in regular search when user scrolls list.
  Optimize contact search by using a Ternary Search Tree.
  Dialpad FAB no longer loses it's icon on fragment resume.
  Automated rollback
  Move InCallActivityCommon#dismissPendingDialogs to InCallActivity.
  Automated rollback
  Replace NUI voicemail media buttons with image buttons
  Notify content URI when preferred SIM is updated
  Use phone account ID for legacy voicemail notification.
  Move InCallActivityCommon#dismissKeyGuard to InCallActivity.
