summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-07-16 07:36:54 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-07-16 07:36:54 +0000
commit4896ac87608bc93b78243c5dd63912499ce9ef05 (patch)
tree69b531d3abf6cd5c13cd70a0679aba67a0d39a40
parentece8175822d0f80656ef9b0252be3a62bb83a1af (diff)
parenta110c3f4e050fa1f994cbe75faf4d1679e582456 (diff)
downloadandroid_packages_apps_Dialer-4896ac87608bc93b78243c5dd63912499ce9ef05.tar.gz
android_packages_apps_Dialer-4896ac87608bc93b78243c5dd63912499ce9ef05.tar.bz2
android_packages_apps_Dialer-4896ac87608bc93b78243c5dd63912499ce9ef05.zip
release-request-05263112-375a-4b1f-a657-a14bb2a5c5a3-for-git_oc-mr1-release-4185249 snap-temp-L63000000082739046
Change-Id: Ibe8fb2284880105220bdcd6f0c75450eb4999268
-rw-r--r--java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java31
-rw-r--r--java/com/android/dialer/app/calllog/CallLogAdapter.java12
-rw-r--r--java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java9
-rw-r--r--java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml3
-rw-r--r--java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml1
-rw-r--r--java/com/android/dialer/callcomposer/res/values/dimens.xml12
-rw-r--r--java/com/android/dialer/callcomposer/res/values/styles.xml3
-rw-r--r--java/com/android/dialer/calldetails/AndroidManifest.xml6
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsAdapter.java5
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java4
-rw-r--r--java/com/android/dialer/calldetails/proto/call_details_entries.proto1
-rw-r--r--java/com/android/dialer/calllogutils/CallTypeHelper.java28
-rw-r--r--java/com/android/dialer/contactsfragment/ContactsFragment.java4
-rw-r--r--java/com/android/dialer/contactsfragment/FastScroller.java1
-rw-r--r--java/com/android/dialer/lightbringer/Lightbringer.java9
-rw-r--r--java/com/android/dialer/lightbringer/stub/LightbringerStub.java13
-rw-r--r--java/com/android/dialer/postcall/AndroidManifest.xml3
-rw-r--r--java/com/android/dialer/postcall/PostCall.java8
-rw-r--r--java/com/android/dialer/postcall/res/layout/post_call_activity.xml23
-rw-r--r--java/com/android/dialer/widget/res/layout/fragment_message.xml32
-rw-r--r--java/com/android/incallui/CallButtonPresenter.java2
-rw-r--r--java/com/android/incallui/call/DialerCall.java25
22 files changed, 173 insertions, 62 deletions
diff --git a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
index d5e61354a..5d10720b5 100644
--- a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
+++ b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
@@ -20,6 +20,9 @@ import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* An {@AsyncQueryHandler} that will never return a null cursor.
@@ -27,6 +30,8 @@ import android.net.Uri;
* <p>Instead, will return a {@link Cursor} with 0 records.
*/
public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
+ private static final AtomicInteger pendingQueryCount = new AtomicInteger();
+ @Nullable private static PendingQueryCountChangedListener pendingQueryCountChangedListener;
public NoNullCursorAsyncQueryHandler(ContentResolver cr) {
super(cr);
@@ -41,6 +46,11 @@ public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
String selection,
String[] selectionArgs,
String orderBy) {
+ pendingQueryCount.getAndIncrement();
+ if (pendingQueryCountChangedListener != null) {
+ pendingQueryCountChangedListener.onPendingQueryCountChanged();
+ }
+
final CookieWithProjection projectionCookie = new CookieWithProjection(cookie, projection);
super.startQuery(token, projectionCookie, uri, projection, selection, selectionArgs, orderBy);
}
@@ -55,10 +65,31 @@ public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
cursor = new EmptyCursor(projectionCookie.projection);
}
onNotNullableQueryComplete(token, projectionCookie.originalCookie, cursor);
+
+ pendingQueryCount.getAndDecrement();
+ if (pendingQueryCountChangedListener != null) {
+ pendingQueryCountChangedListener.onPendingQueryCountChanged();
+ }
}
protected abstract void onNotNullableQueryComplete(int token, Object cookie, Cursor cursor);
+ @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+ public static void setPendingQueryCountChangedListener(
+ @Nullable PendingQueryCountChangedListener listener) {
+ pendingQueryCountChangedListener = listener;
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+ public static int getPendingQueryCount() {
+ return pendingQueryCount.get();
+ }
+
+ /** Callback to listen for changes in the number of queries that have not completed. */
+ public interface PendingQueryCountChangedListener {
+ void onPendingQueryCountChanged();
+ }
+
/** Class to add projection to an existing cookie. */
private static class CookieWithProjection {
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index 4942184a2..41c9d6003 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -967,7 +967,7 @@ public class CallLogAdapter extends GroupingListAdapter
}
@MainThread
- private static CallDetailsEntries createCallDetailsEntries(Cursor cursor, int count) {
+ private CallDetailsEntries createCallDetailsEntries(Cursor cursor, int count) {
Assert.isMainThread();
int position = cursor.getPosition();
CallDetailsEntries.Builder entries = CallDetailsEntries.newBuilder();
@@ -980,6 +980,16 @@ public class CallLogAdapter extends GroupingListAdapter
.setDate(cursor.getLong(CallLogQuery.DATE))
.setDuration(cursor.getLong(CallLogQuery.DURATION))
.setFeatures(cursor.getInt(CallLogQuery.FEATURES));
+
+ String phoneAccountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
+ if (getLightbringer().getPhoneAccountComponentName() != null
+ && getLightbringer()
+ .getPhoneAccountComponentName()
+ .flattenToString()
+ .equals(phoneAccountComponentName)) {
+ entry.setIsLightbringerCall(true);
+ }
+
entries.addEntries(entry.build());
cursor.moveToNext();
}
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index 884d07d50..6b97bd694 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -581,12 +581,16 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
return;
}
+ TextView callTypeOrLocationView =
+ ((TextView) callButtonView.findViewById(R.id.call_type_or_location_text));
+
if (canPlaceCallToNumber) {
// Set up the call button but hide it by default (the primary action is to call so it is
// redundant). We then set it to be visible when appropriate below. This saves us having to
// remember to set it to GONE in multiple places.
callButtonView.setTag(IntentProvider.getReturnCallIntentProvider(number));
callButtonView.setVisibility(View.GONE);
+ callTypeOrLocationView.setVisibility(View.GONE);
}
if (!TextUtils.isEmpty(voicemailUri) && canPlaceCallToNumber) {
@@ -595,13 +599,10 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
TextUtils.expandTemplate(
mContext.getString(R.string.call_log_action_call),
nameOrNumber == null ? "" : nameOrNumber));
- TextView callTypeOrLocationView =
- ((TextView) callButtonView.findViewById(R.id.call_type_or_location_text));
+
if (callType == Calls.VOICEMAIL_TYPE && !TextUtils.isEmpty(callTypeOrLocation)) {
callTypeOrLocationView.setText(callTypeOrLocation);
callTypeOrLocationView.setVisibility(View.VISIBLE);
- } else {
- callTypeOrLocationView.setVisibility(View.GONE);
}
callButtonView.setVisibility(View.VISIBLE);
}
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
index 504638348..ec9e5a00e 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
@@ -35,8 +35,7 @@
<LinearLayout
android:id="@+id/call_action"
- style="@style/CallLogActionStyle"
- android:paddingTop="@dimen/call_log_actions_top_padding">
+ style="@style/CallLogActionStyle">
<ImageView
style="@style/CallLogActionIconStyle"
diff --git a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
index 15562476a..39c2d0d47 100644
--- a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
+++ b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
@@ -51,7 +51,6 @@
android:background="@color/call_composer_divider"/>
<RelativeLayout
- android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
diff --git a/java/com/android/dialer/callcomposer/res/values/dimens.xml b/java/com/android/dialer/callcomposer/res/values/dimens.xml
index 083bd0ab5..798c46f8e 100644
--- a/java/com/android/dialer/callcomposer/res/values/dimens.xml
+++ b/java/com/android/dialer/callcomposer/res/values/dimens.xml
@@ -15,15 +15,15 @@
~ limitations under the License
-->
<resources>
- <dimen name="call_composer_view_pager_height">306dp</dimen>
+ <dimen name="call_composer_view_pager_height">292dp</dimen>
<!-- Contact bar -->
<dimen name="call_composer_contact_photo_border_thickness">2dp</dimen>
- <dimen name="call_composer_contact_photo_size">116dp</dimen>
- <dimen name="call_composer_contact_container_margin_top">58dp</dimen>
- <dimen name="call_composer_contact_container_padding_top">58dp</dimen>
- <dimen name="call_composer_contact_container_padding_bottom">18dp</dimen>
- <dimen name="call_composer_name_text_size">32sp</dimen>
+ <dimen name="call_composer_contact_photo_size">112dp</dimen>
+ <dimen name="call_composer_contact_container_margin_top">56dp</dimen>
+ <dimen name="call_composer_contact_container_padding_top">56dp</dimen>
+ <dimen name="call_composer_contact_container_padding_bottom">16dp</dimen>
+ <dimen name="call_composer_name_text_size">28sp</dimen>
<dimen name="call_composer_number_text_size">16sp</dimen>
<dimen name="call_composer_contact_container_elevation">2dp</dimen>
diff --git a/java/com/android/dialer/callcomposer/res/values/styles.xml b/java/com/android/dialer/callcomposer/res/values/styles.xml
index 16e7fb622..a03ee4894 100644
--- a/java/com/android/dialer/callcomposer/res/values/styles.xml
+++ b/java/com/android/dialer/callcomposer/res/values/styles.xml
@@ -34,7 +34,8 @@
<style name="message_composer_textview">
<item name="android:textSize">@dimen/message_compose_item_text_size</item>
<item name="android:textColor">@color/dialer_primary_text_color</item>
- <item name="android:padding">@dimen/message_composer_item_padding</item>
+ <item name="android:paddingStart">@dimen/message_composer_item_padding</item>
+ <item name="android:paddingEnd">@dimen/message_composer_item_padding</item>
<item name="android:background">@drawable/item_background_material_light</item>
<item name="android:gravity">center_vertical</item>
</style>
diff --git a/java/com/android/dialer/calldetails/AndroidManifest.xml b/java/com/android/dialer/calldetails/AndroidManifest.xml
index fd887c4b5..9cf656e42 100644
--- a/java/com/android/dialer/calldetails/AndroidManifest.xml
+++ b/java/com/android/dialer/calldetails/AndroidManifest.xml
@@ -19,13 +19,9 @@
<application android:theme="@style/Theme.AppCompat">
<activity
android:label="@string/call_details"
+ android:exported="false"
android:name="com.android.dialer.calldetails.CallDetailsActivity"
android:theme="@style/DialerThemeBase.NoActionBar">
- <intent-filter>
- <action android:name="android.intent.action.VIEW"/>
- <category android:name="android.intent.category.DEFAULT"/>
- <data android:mimeType="vnd.android.cursor.item/calls"/>
- </intent-filter>
</activity>
</application>
</manifest>
diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapter.java b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
index 48e9b6998..66a736c8d 100644
--- a/java/com/android/dialer/calldetails/CallDetailsAdapter.java
+++ b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
@@ -26,6 +26,7 @@ import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
import com.android.dialer.calllogutils.CallTypeHelper;
import com.android.dialer.common.Assert;
import com.android.dialer.dialercontact.DialerContact;
+import com.android.dialer.lightbringer.LightbringerComponent;
import java.util.List;
/** Adapter for RecyclerView in {@link CallDetailsActivity}. */
@@ -48,7 +49,9 @@ final class CallDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
this.contact = Assert.isNotNull(contact);
this.callDetailsEntries = callDetailsEntries;
this.listener = listener;
- callTypeHelper = new CallTypeHelper(context.getResources());
+ callTypeHelper =
+ new CallTypeHelper(
+ context.getResources(), LightbringerComponent.get(context).getLightbringer());
}
@Override
diff --git a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
index 6ad158e8c..9c592fc5f 100644
--- a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
@@ -91,6 +91,7 @@ public class CallDetailsEntryViewHolder extends ViewHolder {
boolean isPulledCall =
(entry.getFeatures() & Calls.FEATURES_PULLED_EXTERNALLY)
== Calls.FEATURES_PULLED_EXTERNALLY;
+ boolean isLightbringerCall = entry.getIsLightbringerCall();
callTime.setTextColor(getColorForCallType(context, callType));
callTypeIcon.clear();
@@ -100,7 +101,8 @@ public class CallDetailsEntryViewHolder extends ViewHolder {
callTypeIcon.setShowWifi(
MotorolaUtils.shouldShowWifiIconInCallLog(context, entry.getFeatures()));
- callTypeText.setText(callTypeHelper.getCallTypeText(callType, isVideoCall, isPulledCall));
+ callTypeText.setText(
+ callTypeHelper.getCallTypeText(callType, isVideoCall, isPulledCall, isLightbringerCall));
callTime.setText(CallEntryFormatter.formatDate(context, entry.getDate()));
if (CallTypeHelper.isMissedCallType(callType)) {
callDuration.setVisibility(View.GONE);
diff --git a/java/com/android/dialer/calldetails/proto/call_details_entries.proto b/java/com/android/dialer/calldetails/proto/call_details_entries.proto
index 18bc931cb..587fd35bd 100644
--- a/java/com/android/dialer/calldetails/proto/call_details_entries.proto
+++ b/java/com/android/dialer/calldetails/proto/call_details_entries.proto
@@ -18,6 +18,7 @@ message CallDetailsEntries {
optional int64 duration = 5;
optional int64 data_usage = 6;
repeated enrichedcall.historyquery.proto.HistoryResult history_results = 7;
+ optional bool is_lightbringer_call = 8;
}
repeated CallDetailsEntry entries = 1;
diff --git a/java/com/android/dialer/calllogutils/CallTypeHelper.java b/java/com/android/dialer/calllogutils/CallTypeHelper.java
index d3b5b67d7..783f799f3 100644
--- a/java/com/android/dialer/calllogutils/CallTypeHelper.java
+++ b/java/com/android/dialer/calllogutils/CallTypeHelper.java
@@ -18,6 +18,7 @@ package com.android.dialer.calllogutils;
import android.content.res.Resources;
import com.android.dialer.compat.AppCompatConstants;
+import com.android.dialer.lightbringer.Lightbringer;
/** Helper class to perform operations related to call types. */
public class CallTypeHelper {
@@ -50,8 +51,12 @@ public class CallTypeHelper {
private final CharSequence mBlockedName;
/** Name used to identify calls which were answered on another device. */
private final CharSequence mAnsweredElsewhereName;
+ /** Name used to identify incoming lightbringer calls. */
+ private final CharSequence mIncomingLightbringerCall;
+ /** Name used to identify outgoing lightbringer calls. */
+ private final CharSequence mOutgoingLightbringerCall;
- public CallTypeHelper(Resources resources) {
+ public CallTypeHelper(Resources resources, Lightbringer lightbringer) {
// Cache these values so that we do not need to look them up each time.
mIncomingName = resources.getString(R.string.type_incoming);
mIncomingPulledName = resources.getString(R.string.type_incoming_pulled);
@@ -67,6 +72,18 @@ public class CallTypeHelper {
mRejectedName = resources.getString(R.string.type_rejected);
mBlockedName = resources.getString(R.string.type_blocked);
mAnsweredElsewhereName = resources.getString(R.string.type_answered_elsewhere);
+
+ if (lightbringer.getIncomingCallTypeText() != -1) {
+ mIncomingLightbringerCall = resources.getString(lightbringer.getIncomingCallTypeText());
+ } else {
+ mIncomingLightbringerCall = mIncomingVideoName;
+ }
+
+ if (lightbringer.getOutgoingCallTypeText() != -1) {
+ mOutgoingLightbringerCall = resources.getString(lightbringer.getOutgoingCallTypeText());
+ } else {
+ mOutgoingLightbringerCall = mOutgoingVideoName;
+ }
}
public static boolean isMissedCallType(int callType) {
@@ -77,13 +94,17 @@ public class CallTypeHelper {
}
/** Returns the text used to represent the given call type. */
- public CharSequence getCallTypeText(int callType, boolean isVideoCall, boolean isPulledCall) {
+ public CharSequence getCallTypeText(
+ int callType, boolean isVideoCall, boolean isPulledCall, boolean isLightbringerCall) {
switch (callType) {
case AppCompatConstants.CALLS_INCOMING_TYPE:
if (isVideoCall) {
if (isPulledCall) {
return mIncomingVideoPulledName;
} else {
+ if (isLightbringerCall) {
+ return mIncomingLightbringerCall;
+ }
return mIncomingVideoName;
}
} else {
@@ -99,6 +120,9 @@ public class CallTypeHelper {
if (isPulledCall) {
return mOutgoingVideoPulledName;
} else {
+ if (isLightbringerCall) {
+ return mOutgoingLightbringerCall;
+ }
return mOutgoingVideoName;
}
} else {
diff --git a/java/com/android/dialer/contactsfragment/ContactsFragment.java b/java/com/android/dialer/contactsfragment/ContactsFragment.java
index e62771837..41fa8f9c5 100644
--- a/java/com/android/dialer/contactsfragment/ContactsFragment.java
+++ b/java/com/android/dialer/contactsfragment/ContactsFragment.java
@@ -170,6 +170,10 @@ public class ContactsFragment extends Fragment
fastScroller.updateContainerAndScrollBarPosition(recyclerView);
int firstVisibleItem = manager.findFirstVisibleItemPosition();
int firstCompletelyVisible = manager.findFirstCompletelyVisibleItemPosition();
+ if (firstCompletelyVisible == RecyclerView.NO_POSITION) {
+ // No items are visible, so there are no headers to update.
+ return;
+ }
String anchoredHeaderString = adapter.getHeaderString(firstCompletelyVisible);
// If the user swipes to the top of the list very quickly, there is some strange behavior
diff --git a/java/com/android/dialer/contactsfragment/FastScroller.java b/java/com/android/dialer/contactsfragment/FastScroller.java
index 0223c5f1f..2a86a3bb6 100644
--- a/java/com/android/dialer/contactsfragment/FastScroller.java
+++ b/java/com/android/dialer/contactsfragment/FastScroller.java
@@ -91,6 +91,7 @@ public class FastScroller extends RelativeLayout {
int targetPos = getValueInRange(0, itemCount - 1, (int) scrolledPosition);
layoutManager.scrollToPositionWithOffset(targetPos, 0);
container.setText(adapter.getHeaderString(targetPos));
+ adapter.refreshHeaders();
}
// Returns a float in range [0, 1] which represents the position of the scroller.
diff --git a/java/com/android/dialer/lightbringer/Lightbringer.java b/java/com/android/dialer/lightbringer/Lightbringer.java
index 669e571a0..9b8a18061 100644
--- a/java/com/android/dialer/lightbringer/Lightbringer.java
+++ b/java/com/android/dialer/lightbringer/Lightbringer.java
@@ -22,6 +22,7 @@ import android.content.Intent;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
import android.telecom.Call;
import android.telecom.PhoneAccountHandle;
@@ -56,4 +57,12 @@ public interface Lightbringer {
@Nullable
@MainThread
String getPackageName();
+
+ @StringRes
+ @MainThread
+ int getOutgoingCallTypeText();
+
+ @StringRes
+ @MainThread
+ int getIncomingCallTypeText();
}
diff --git a/java/com/android/dialer/lightbringer/stub/LightbringerStub.java b/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
index 1cb3c1ff0..92230a49e 100644
--- a/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
+++ b/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
@@ -22,6 +22,7 @@ import android.content.Intent;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
import android.telecom.Call;
import android.telecom.PhoneAccountHandle;
import com.android.dialer.common.Assert;
@@ -97,4 +98,16 @@ public class LightbringerStub implements Lightbringer {
public String getPackageName() {
return null;
}
+
+ @StringRes
+ @Override
+ public int getOutgoingCallTypeText() {
+ return -1;
+ }
+
+ @StringRes
+ @Override
+ public int getIncomingCallTypeText() {
+ return -1;
+ }
}
diff --git a/java/com/android/dialer/postcall/AndroidManifest.xml b/java/com/android/dialer/postcall/AndroidManifest.xml
index 22c77dd93..7e69d3368 100644
--- a/java/com/android/dialer/postcall/AndroidManifest.xml
+++ b/java/com/android/dialer/postcall/AndroidManifest.xml
@@ -22,7 +22,6 @@
android:name="com.android.dialer.postcall.PostCallActivity"
android:exported="false"
android:theme="@style/DialerThemeBase.NoActionBar"
- android:windowSoftInputMode="adjustResize"
- android:screenOrientation="portrait"/>
+ android:windowSoftInputMode="adjustResize"/>
</application>
</manifest>
diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java
index b17a9b66d..6d9ad01a8 100644
--- a/java/com/android/dialer/postcall/PostCall.java
+++ b/java/com/android/dialer/postcall/PostCall.java
@@ -26,6 +26,7 @@ import android.support.design.widget.Snackbar;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
+import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.configprovider.ConfigProvider;
import com.android.dialer.configprovider.ConfigProviderBindings;
@@ -84,12 +85,12 @@ public class PostCall {
? activity.getString(R.string.post_call_add_message)
: activity.getString(R.string.post_call_send_message);
+ String number = Assert.isNotNull(getPhoneNumber(activity));
OnClickListener onClickListener =
v -> {
Logger.get(activity)
.logImpression(DialerImpression.Type.POST_CALL_PROMPT_USER_TO_SEND_MESSAGE_CLICKED);
- activity.startActivity(
- PostCallActivity.newIntent(activity, getPhoneNumber(activity), isRcsPostCall));
+ activity.startActivity(PostCallActivity.newIntent(activity, number, isRcsPostCall));
};
int durationMs =
@@ -113,12 +114,13 @@ public class PostCall {
"returned from sending a post call message, message sent.");
String message = activity.getString(R.string.post_call_message_sent);
String addMessage = activity.getString(R.string.view);
+ String number = Assert.isNotNull(getPhoneNumber(activity));
OnClickListener onClickListener =
v -> {
Logger.get(activity)
.logImpression(
DialerImpression.Type.POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE_CLICKED);
- Intent intent = IntentUtil.getSendSmsIntent(getPhoneNumber(activity));
+ Intent intent = IntentUtil.getSendSmsIntent(number);
DialerUtils.startActivityWithErrorToast(activity, intent);
};
diff --git a/java/com/android/dialer/postcall/res/layout/post_call_activity.xml b/java/com/android/dialer/postcall/res/layout/post_call_activity.xml
index 256c110b9..c42764e5b 100644
--- a/java/com/android/dialer/postcall/res/layout/post_call_activity.xml
+++ b/java/com/android/dialer/postcall/res/layout/post_call_activity.xml
@@ -14,20 +14,21 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:background="@color/background_dialer_white"
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <FrameLayout
- android:id="@+id/message_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:background="@color/background_dialer_white"/>
+ android:layout_height="match_parent"
+ android:background="@color/background_dialer_white">
<com.android.dialer.widget.DialerToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
-</RelativeLayout> \ No newline at end of file
+
+ <FrameLayout
+ android:id="@+id/message_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/background_dialer_white"/>
+</LinearLayout> \ No newline at end of file
diff --git a/java/com/android/dialer/widget/res/layout/fragment_message.xml b/java/com/android/dialer/widget/res/layout/fragment_message.xml
index 5b0bab536..bdb85fa81 100644
--- a/java/com/android/dialer/widget/res/layout/fragment_message.xml
+++ b/java/com/android/dialer/widget/res/layout/fragment_message.xml
@@ -14,28 +14,36 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<LinearLayout
+<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical"
- android:gravity="bottom"
android:background="@color/background_dialer_white">
- <LinearLayout
- android:id="@+id/message_container"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_above="@+id/divider">
+
+ <LinearLayout
+ android:id="@+id/message_container"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ </ScrollView>
<View
+ android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="@dimen/message_divider_height"
- android:background="#12000000"/>
+ android:background="#12000000"
+ android:layout_above="@+id/edittext_container"/>
<RelativeLayout
+ android:id="@+id/edittext_container"
android:layout_width="wrap_content"
- android:layout_height="wrap_content">
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true">
<EditText
android:id="@+id/custom_message"
@@ -50,7 +58,7 @@
android:textCursorDrawable="@drawable/searchedittext_custom_cursor"
android:layout_toStartOf="@+id/count_and_send_container"
android:inputType="textShortMessage|textCapSentences"
- android:imeOptions="actionSend"/>
+ android:imeOptions="flagNoExtractUi|actionSend"/>
<LinearLayout
android:id="@+id/count_and_send_container"
@@ -80,4 +88,4 @@
android:textColor="@color/dialer_edit_text_hint_color"/>
</LinearLayout>
</RelativeLayout>
-</LinearLayout> \ No newline at end of file
+</RelativeLayout> \ No newline at end of file
diff --git a/java/com/android/incallui/CallButtonPresenter.java b/java/com/android/incallui/CallButtonPresenter.java
index e36d9cf9e..dbb6a1c18 100644
--- a/java/com/android/incallui/CallButtonPresenter.java
+++ b/java/com/android/incallui/CallButtonPresenter.java
@@ -365,7 +365,7 @@ public class CallButtonPresenter
}
private void updateUi(InCallState state, DialerCall call) {
- LogUtil.v("CallButtonPresenter", "updating call UI for call: ", call);
+ LogUtil.v("CallButtonPresenter", "updating call UI for call: %s", call);
if (mInCallButtonUi == null) {
return;
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 88e0dbb5e..2e15264a5 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -152,6 +152,7 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
// Times when a second call is received but AnswerAndRelease button is not shown
// since it's not supported.
private int secondCallWithoutAnswerAndReleasedButtonTimes = 0;
+ private VideoTech videoTech;
public static String getNumberFromHandle(Uri handle) {
return handle == null ? "" : handle.getSchemeSpecificPart();
@@ -194,14 +195,15 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
@Override
public void onDetailsChanged(Call call, Call.Details details) {
- LogUtil.v("TelecomCallCallback.onStateChanged", " call=" + call + " details=" + details);
+ LogUtil.v(
+ "TelecomCallCallback.onDetailsChanged", " call=" + call + " details=" + details);
update();
}
@Override
public void onCannedTextResponsesLoaded(Call call, List<String> cannedTextResponses) {
LogUtil.v(
- "TelecomCallCallback.onStateChanged",
+ "TelecomCallCallback.onCannedTextResponsesLoaded",
"call=" + call + " cannedTextResponses=" + cannedTextResponses);
for (CannedTextResponsesLoadedListener listener : mCannedTextResponsesLoadedListeners) {
listener.onCannedTextResponsesLoaded(DialerCall.this);
@@ -211,7 +213,7 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
@Override
public void onPostDialWait(Call call, String remainingPostDialSequence) {
LogUtil.v(
- "TelecomCallCallback.onStateChanged",
+ "TelecomCallCallback.onPostDialWait",
"call=" + call + " remainingPostDialSequence=" + remainingPostDialSequence);
update();
}
@@ -219,20 +221,20 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
@Override
public void onVideoCallChanged(Call call, VideoCall videoCall) {
LogUtil.v(
- "TelecomCallCallback.onStateChanged", "call=" + call + " videoCall=" + videoCall);
+ "TelecomCallCallback.onVideoCallChanged", "call=" + call + " videoCall=" + videoCall);
update();
}
@Override
public void onCallDestroyed(Call call) {
- LogUtil.v("TelecomCallCallback.onStateChanged", "call=" + call);
+ LogUtil.v("TelecomCallCallback.onCallDestroyed", "call=" + call);
unregisterCallback();
}
@Override
public void onConferenceableCallsChanged(Call call, List<Call> conferenceableCalls) {
LogUtil.v(
- "DialerCall.onConferenceableCallsChanged",
+ "TelecomCallCallback.onConferenceableCallsChanged",
"call %s, conferenceable calls: %d",
call,
conferenceableCalls.size());
@@ -242,7 +244,7 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
@Override
public void onConnectionEvent(android.telecom.Call call, String event, Bundle extras) {
LogUtil.v(
- "DialerCall.onConnectionEvent",
+ "TelecomCallCallback.onConnectionEvent",
"Call: " + call + ", Event: " + event + ", Extras: " + extras);
switch (event) {
// The Previous attempt to Merge two calls together has failed in Telecom. We must
@@ -430,6 +432,8 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
private void update() {
Trace.beginSection("Update");
int oldState = getState();
+ // Clear any cache here that could potentially change on update.
+ videoTech = null;
// We want to potentially register a video call callback here.
updateFromTelecomCall();
if (oldState != getState() && getState() == DialerCall.State.DISCONNECTED) {
@@ -441,7 +445,7 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
.unregisterCapabilitiesListener(this);
EnrichedCallComponent.get(mContext)
.getEnrichedCallManager()
- .unregisterCapabilitiesListener(this);
+ .unregisterStateChangedListener(this);
} else {
for (DialerCallListener listener : mListeners) {
listener.onDialerCallUpdate();
@@ -1114,7 +1118,10 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
}
public VideoTech getVideoTech() {
- return mVideoTechManager.getVideoTech();
+ if (videoTech == null) {
+ videoTech = mVideoTechManager.getVideoTech();
+ }
+ return videoTech;
}
public String getCallbackNumber() {