summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2017-12-19 01:38:34 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-12-19 01:38:34 +0000
commitd55b09c780dad2fdbc851e60c7fd05f531b10425 (patch)
tree985185fd12e676d53bbe361968e69242d087d482
parent7393d2481003d0df31d061ddb8973cc0f39ac487 (diff)
parentf539f7885be23d3aff470e573c70d52db3b2a878 (diff)
Merge changes I4e2ee34f,Ic53ca21f,I68d16567
* changes: Bubble v2 logging. Ensure we do not have a null data string before checking for Duo Bug: 70402588
-rw-r--r--java/com/android/bubble/res/layout/bubble_base.xml12
-rw-r--r--java/com/android/bubble/res/values-car/values.xml27
-rw-r--r--java/com/android/bubble/res/values/values.xml5
-rw-r--r--java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java6
-rw-r--r--java/com/android/dialer/logging/dialer_impression.proto21
-rw-r--r--java/com/android/incallui/AndroidManifest.xml3
-rw-r--r--java/com/android/incallui/AudioRouteSelectorActivity.java39
-rw-r--r--java/com/android/incallui/NewReturnToCallActionReceiver.java156
-rw-r--r--java/com/android/incallui/NewReturnToCallController.java24
-rw-r--r--java/com/android/newbubble/NewBubble.java38
10 files changed, 284 insertions, 47 deletions
diff --git a/java/com/android/bubble/res/layout/bubble_base.xml b/java/com/android/bubble/res/layout/bubble_base.xml
index 0712db603..9f88e7083 100644
--- a/java/com/android/bubble/res/layout/bubble_base.xml
+++ b/java/com/android/bubble/res/layout/bubble_base.xml
@@ -49,7 +49,7 @@
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginStart="48dp"
+ android:layout_marginStart="@dimen/bubble_drawer_margin"
android:elevation="10dp"
android:paddingTop="@dimen/bubble_shadow_padding_size"
android:paddingBottom="@dimen/bubble_shadow_padding_size"
@@ -59,8 +59,8 @@
android:id="@+id/bubble_expanded_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:paddingStart="32dp"
- android:paddingEnd="8dp"
+ android:paddingStart="@dimen/bubble_drawer_padding_start"
+ android:paddingEnd="@dimen/bubble_drawer_padding_end"
android:background="@drawable/bubble_background_pill_ltr"
android:layoutDirection="ltr"
android:orientation="horizontal"
@@ -102,7 +102,7 @@
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginRight="48dp"
+ android:layout_marginRight="@dimen/bubble_drawer_margin"
android:elevation="10dp"
android:paddingTop="@dimen/bubble_shadow_padding_size"
android:paddingBottom="@dimen/bubble_shadow_padding_size"
@@ -111,8 +111,8 @@
android:id="@+id/bubble_expanded_layout_rtl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:paddingRight="32dp"
- android:paddingLeft="8dp"
+ android:paddingRight="@dimen/bubble_drawer_padding_start"
+ android:paddingLeft="@dimen/bubble_drawer_padding_end"
android:background="@drawable/bubble_background_pill_rtl"
android:layoutDirection="rtl"
android:orientation="horizontal"
diff --git a/java/com/android/bubble/res/values-car/values.xml b/java/com/android/bubble/res/values-car/values.xml
new file mode 100644
index 000000000..cf8839a84
--- /dev/null
+++ b/java/com/android/bubble/res/values-car/values.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+
+<resources>
+ <dimen name="bubble_size">64dp</dimen>
+ <dimen name="bubble_drawer_margin">54dp</dimen>
+ <dimen name="bubble_drawer_padding_start">38dp</dimen>
+ <dimen name="bubble_drawer_padding_end">10dp</dimen>
+ <dimen name="bubble_icon_padding">18dp</dimen>
+ <dimen name="bubble_shadow_padding_size">18dp</dimen>
+</resources>
+
diff --git a/java/com/android/bubble/res/values/values.xml b/java/com/android/bubble/res/values/values.xml
index f5816172d..6066e18c3 100644
--- a/java/com/android/bubble/res/values/values.xml
+++ b/java/com/android/bubble/res/values/values.xml
@@ -15,11 +15,16 @@
~ limitations under the License
-->
+
<resources>
<dimen name="bubble_safe_margin_x">16dp</dimen>
<dimen name="bubble_safe_margin_y">64dp</dimen>
<dimen name="bubble_size">56dp</dimen>
+ <dimen name="bubble_drawer_margin">48dp</dimen>
+ <dimen name="bubble_drawer_padding_start">32dp</dimen>
+ <dimen name="bubble_drawer_padding_end">8dp</dimen>
<dimen name="bubble_icon_padding">16dp</dimen>
<dimen name="bubble_move_elevation_change">4dp</dimen>
<dimen name="bubble_shadow_padding_size">16dp</dimen>
</resources>
+
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index babf1f8ca..2baf117dc 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -740,7 +740,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
}
boolean isBlockedOrSpam = blockId != null || (isSpamFeatureEnabled && isSpam);
-
+
if (!isBlockedOrSpam && info != null && UriUtils.isEncodedContactUri(info.lookupUri)) {
createNewContactButtonView.setTag(
IntentProvider.getAddContactIntentProvider(
@@ -1034,8 +1034,8 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
&& intent.getIntExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, -1)
== VideoProfile.STATE_BIDIRECTIONAL) {
Logger.get(mContext).logImpression(DialerImpression.Type.IMS_VIDEO_REQUESTED_FROM_CALL_LOG);
- }
- if (intent.getDataString().contains(DuoConstants.PACKAGE_NAME)) {
+ } else if (intent.getDataString() != null
+ && intent.getDataString().contains(DuoConstants.PACKAGE_NAME)) {
Logger.get(mContext).logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_INSTALL);
}
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index aed66251a..2d2eebf67 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -12,7 +12,7 @@ message DialerImpression {
// Event enums to be used for Impression Logging in Dialer.
// It's perfectly acceptable for this enum to be large
// Values should be from 1000 to 100000.
- // Next Tag: 1311
+ // Next Tag: 1320
enum Type {
UNKNOWN_AOSP_EVENT_TYPE = 1000;
@@ -625,5 +625,24 @@ message DialerImpression {
DUO_CALL_LOG_SET_UP_INSTALL = 1308;
DUO_CALL_LOG_SET_UP_ACTIVATE = 1309;
DUO_CALL_LOG_INVITE = 1310;
+
+ // Bubble primary button first click to expand bubble
+ BUBBLE_V2_CLICK_TO_EXPAND = 1311;
+ // Bubble primary button second click to collapse bubble
+ BUBBLE_V2_CLICK_TO_COLLAPSE = 1312;
+ // User return to call from bubble call action menu
+ BUBBLE_V2_RETURN_TO_CALL = 1313;
+ // User muted call from bubble call action menu
+ BUBBLE_V2_MUTE_CALL = 1314;
+ // User unmuted call from bubble call action menu
+ BUBBLE_V2_UNMUTE_CALL = 1315;
+ // User choose audio route speakerphone from bubble call action menu
+ BUBBLE_V2_SPEAKERPHONE = 1316;
+ // User choose audio route wired or earpiece from bubble call action menu
+ BUBBLE_V2_WIRED_OR_EARPIECE = 1317;
+ // User choose audio route bluetooth from bubble call action menu
+ BUBBLE_V2_BLUETOOTH = 1318;
+ // User ended call from bubble call action menu
+ BUBBLE_V2_END_CALL = 1319;
}
}
diff --git a/java/com/android/incallui/AndroidManifest.xml b/java/com/android/incallui/AndroidManifest.xml
index af9970056..b9d481b31 100644
--- a/java/com/android/incallui/AndroidManifest.xml
+++ b/java/com/android/incallui/AndroidManifest.xml
@@ -109,6 +109,9 @@
<receiver
android:exported="false"
android:name=".ReturnToCallActionReceiver"/>
+ <receiver
+ android:exported="false"
+ android:name=".NewReturnToCallActionReceiver"/>
</application>
diff --git a/java/com/android/incallui/AudioRouteSelectorActivity.java b/java/com/android/incallui/AudioRouteSelectorActivity.java
index 8d166649c..a6fcc9c7d 100644
--- a/java/com/android/incallui/AudioRouteSelectorActivity.java
+++ b/java/com/android/incallui/AudioRouteSelectorActivity.java
@@ -19,18 +19,29 @@ package com.android.incallui;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
+import android.telecom.CallAudioState;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
import com.android.incallui.audiomode.AudioModeProvider;
import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment;
import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter;
+import com.android.incallui.call.CallList;
+import com.android.incallui.call.DialerCall;
import com.android.incallui.call.TelecomAdapter;
/** Simple activity that just shows the audio route selector fragment */
public class AudioRouteSelectorActivity extends FragmentActivity
implements AudioRouteSelectorPresenter {
+ public static final String SHOULD_LOG_BUBBLE_V2_IMPRESSION_EXTRA = "shouldLogBubbleV2Impression";
+
+ private boolean shouldLogBubbleV2Impression;
+
@Override
protected void onCreate(@Nullable Bundle bundle) {
super.onCreate(bundle);
+ shouldLogBubbleV2Impression =
+ getIntent().getBooleanExtra(SHOULD_LOG_BUBBLE_V2_IMPRESSION_EXTRA, false);
AudioRouteSelectorDialogFragment.newInstance(AudioModeProvider.getInstance().getAudioState())
.show(getSupportFragmentManager(), AudioRouteSelectorDialogFragment.TAG);
}
@@ -39,6 +50,34 @@ public class AudioRouteSelectorActivity extends FragmentActivity
public void onAudioRouteSelected(int audioRoute) {
TelecomAdapter.getInstance().setAudioRoute(audioRoute);
finish();
+
+ if (!shouldLogBubbleV2Impression) {
+ return;
+ }
+
+ // Log the select action with audio route and call
+ DialerImpression.Type impressionType = null;
+ if ((audioRoute & CallAudioState.ROUTE_WIRED_OR_EARPIECE) != 0) {
+ impressionType = DialerImpression.Type.BUBBLE_V2_WIRED_OR_EARPIECE;
+ } else if (audioRoute == CallAudioState.ROUTE_SPEAKER) {
+ impressionType = DialerImpression.Type.BUBBLE_V2_SPEAKERPHONE;
+ } else if (audioRoute == CallAudioState.ROUTE_BLUETOOTH) {
+ impressionType = DialerImpression.Type.BUBBLE_V2_BLUETOOTH;
+ }
+ if (impressionType == null) {
+ return;
+ }
+
+ DialerCall call = CallList.getInstance().getOutgoingCall();
+ if (call == null) {
+ call = CallList.getInstance().getActiveOrBackgroundCall();
+ }
+ if (call != null) {
+ Logger.get(this)
+ .logCallImpression(impressionType, call.getUniqueCallId(), call.getTimeAddedMs());
+ } else {
+ Logger.get(this).logImpression(impressionType);
+ }
}
@Override
diff --git a/java/com/android/incallui/NewReturnToCallActionReceiver.java b/java/com/android/incallui/NewReturnToCallActionReceiver.java
new file mode 100644
index 000000000..23debe204
--- /dev/null
+++ b/java/com/android/incallui/NewReturnToCallActionReceiver.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.incallui;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.telecom.CallAudioState;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
+import com.android.incallui.audiomode.AudioModeProvider;
+import com.android.incallui.call.CallList;
+import com.android.incallui.call.DialerCall;
+import com.android.incallui.call.TelecomAdapter;
+
+/** Handles clicks on the return-to-call bubble */
+public class NewReturnToCallActionReceiver extends BroadcastReceiver {
+
+ public static final String ACTION_RETURN_TO_CALL = "returnToCallV2";
+ public static final String ACTION_TOGGLE_SPEAKER = "toggleSpeakerV2";
+ public static final String ACTION_SHOW_AUDIO_ROUTE_SELECTOR = "showAudioRouteSelectorV2";
+ public static final String ACTION_TOGGLE_MUTE = "toggleMuteV2";
+ public static final String ACTION_END_CALL = "endCallV2";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ switch (intent.getAction()) {
+ case ACTION_RETURN_TO_CALL:
+ returnToCall(context);
+ break;
+ case ACTION_TOGGLE_SPEAKER:
+ toggleSpeaker(context);
+ break;
+ case ACTION_SHOW_AUDIO_ROUTE_SELECTOR:
+ showAudioRouteSelector(context);
+ break;
+ case ACTION_TOGGLE_MUTE:
+ toggleMute(context);
+ break;
+ case ACTION_END_CALL:
+ endCall(context);
+ break;
+ default:
+ throw Assert.createIllegalStateFailException(
+ "Invalid intent action: " + intent.getAction());
+ }
+ }
+
+ private void returnToCall(Context context) {
+ DialerCall call = getCall();
+ Logger.get(context)
+ .logCallImpression(
+ DialerImpression.Type.BUBBLE_V2_RETURN_TO_CALL,
+ call != null ? call.getUniqueCallId() : "",
+ call != null ? call.getTimeAddedMs() : 0);
+
+ Intent activityIntent = InCallActivity.getIntent(context, false, false, false);
+ activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(activityIntent);
+ }
+
+ private void toggleSpeaker(Context context) {
+ CallAudioState audioState = AudioModeProvider.getInstance().getAudioState();
+
+ if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH)
+ == CallAudioState.ROUTE_BLUETOOTH) {
+ LogUtil.w(
+ "ReturnToCallActionReceiver.toggleSpeaker",
+ "toggleSpeaker() called when bluetooth available."
+ + " Probably should have shown audio route selector");
+ }
+
+ DialerCall call = getCall();
+
+ int newRoute;
+ if (audioState.getRoute() == CallAudioState.ROUTE_SPEAKER) {
+ newRoute = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
+ Logger.get(context)
+ .logCallImpression(
+ DialerImpression.Type.BUBBLE_V2_WIRED_OR_EARPIECE,
+ call != null ? call.getUniqueCallId() : "",
+ call != null ? call.getTimeAddedMs() : 0);
+ } else {
+ newRoute = CallAudioState.ROUTE_SPEAKER;
+ Logger.get(context)
+ .logCallImpression(
+ DialerImpression.Type.BUBBLE_V2_SPEAKERPHONE,
+ call != null ? call.getUniqueCallId() : "",
+ call != null ? call.getTimeAddedMs() : 0);
+ }
+ TelecomAdapter.getInstance().setAudioRoute(newRoute);
+ }
+
+ public void showAudioRouteSelector(Context context) {
+ Intent intent = new Intent(context, AudioRouteSelectorActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+ intent.putExtra(AudioRouteSelectorActivity.SHOULD_LOG_BUBBLE_V2_IMPRESSION_EXTRA, true);
+ context.startActivity(intent);
+ }
+
+ private void toggleMute(Context context) {
+ DialerCall call = getCall();
+ boolean shouldMute = !AudioModeProvider.getInstance().getAudioState().isMuted();
+ Logger.get(context)
+ .logCallImpression(
+ shouldMute
+ ? DialerImpression.Type.BUBBLE_V2_MUTE_CALL
+ : DialerImpression.Type.BUBBLE_V2_UNMUTE_CALL,
+ call != null ? call.getUniqueCallId() : "",
+ call != null ? call.getTimeAddedMs() : 0);
+ TelecomAdapter.getInstance().mute(shouldMute);
+ }
+
+ private void endCall(Context context) {
+ DialerCall call = getCall();
+
+ Logger.get(context)
+ .logCallImpression(
+ DialerImpression.Type.BUBBLE_V2_END_CALL,
+ call != null ? call.getUniqueCallId() : "",
+ call != null ? call.getTimeAddedMs() : 0);
+ if (call != null) {
+ call.disconnect();
+ }
+ }
+
+ private DialerCall getCall() {
+ CallList callList = InCallPresenter.getInstance().getCallList();
+ if (callList != null) {
+ DialerCall call = callList.getOutgoingCall();
+ if (call == null) {
+ call = callList.getActiveOrBackgroundCall();
+ }
+ if (call != null) {
+ return call;
+ }
+ }
+ return null;
+ }
+}
diff --git a/java/com/android/incallui/NewReturnToCallController.java b/java/com/android/incallui/NewReturnToCallController.java
index d3d993027..ad49d6828 100644
--- a/java/com/android/incallui/NewReturnToCallController.java
+++ b/java/com/android/incallui/NewReturnToCallController.java
@@ -53,8 +53,6 @@ import java.util.List;
*/
public class NewReturnToCallController implements InCallUiListener, Listener, AudioModeListener {
- public static final String RETURN_TO_CALL_EXTRA_KEY = "RETURN_TO_CALL_BUBBLE";
-
private final Context context;
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
@@ -78,18 +76,12 @@ public class NewReturnToCallController implements InCallUiListener, Listener, Au
this.context = context;
this.contactInfoCache = contactInfoCache;
- toggleSpeaker = createActionIntent(ReturnToCallActionReceiver.ACTION_TOGGLE_SPEAKER);
+ toggleSpeaker = createActionIntent(NewReturnToCallActionReceiver.ACTION_TOGGLE_SPEAKER);
showSpeakerSelect =
- createActionIntent(ReturnToCallActionReceiver.ACTION_SHOW_AUDIO_ROUTE_SELECTOR);
- toggleMute = createActionIntent(ReturnToCallActionReceiver.ACTION_TOGGLE_MUTE);
- endCall = createActionIntent(ReturnToCallActionReceiver.ACTION_END_CALL);
-
- Intent activityIntent = InCallActivity.getIntent(context, false, false, false);
- activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- activityIntent.putExtra(RETURN_TO_CALL_EXTRA_KEY, true);
- fullScreen =
- PendingIntent.getActivity(
- context, InCallActivity.PendingIntentRequestCodes.BUBBLE, activityIntent, 0);
+ createActionIntent(NewReturnToCallActionReceiver.ACTION_SHOW_AUDIO_ROUTE_SELECTOR);
+ toggleMute = createActionIntent(NewReturnToCallActionReceiver.ACTION_TOGGLE_MUTE);
+ endCall = createActionIntent(NewReturnToCallActionReceiver.ACTION_END_CALL);
+ fullScreen = createActionIntent(NewReturnToCallActionReceiver.ACTION_RETURN_TO_CALL);
InCallPresenter.getInstance().addInCallUiListener(this);
CallList.getInstance().addListener(this);
@@ -280,9 +272,9 @@ public class NewReturnToCallController implements InCallUiListener, Listener, Au
@NonNull
private PendingIntent createActionIntent(String action) {
- Intent toggleSpeaker = new Intent(context, ReturnToCallActionReceiver.class);
- toggleSpeaker.setAction(action);
- return PendingIntent.getBroadcast(context, 0, toggleSpeaker, 0);
+ Intent intent = new Intent(context, NewReturnToCallActionReceiver.class);
+ intent.setAction(action);
+ return PendingIntent.getBroadcast(context, 0, intent, 0);
}
@NonNull
diff --git a/java/com/android/newbubble/NewBubble.java b/java/com/android/newbubble/NewBubble.java
index d13952ba5..3378ad81a 100644
--- a/java/com/android/newbubble/NewBubble.java
+++ b/java/com/android/newbubble/NewBubble.java
@@ -232,10 +232,7 @@ public class NewBubble {
}
/** Expands the main bubble menu. */
- public void expand(boolean isUserAction) {
- if (isUserAction) {
- logBasicOrCallImpression(DialerImpression.Type.BUBBLE_PRIMARY_BUTTON_EXPAND);
- }
+ public void expand() {
setPrimaryButtonAccessibilityAction(
context.getString(R.string.a11y_bubble_primary_button_collapse_action));
@@ -307,8 +304,7 @@ public class NewBubble {
}
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
- public void startCollapse(
- @CollapseEnd int endAction, boolean isUserAction, boolean shouldRecoverYPosition) {
+ public void startCollapse(@CollapseEnd int endAction, boolean shouldRecoverYPosition) {
View expandedView = viewHolder.getExpandedView();
if (expandedView.getVisibility() != View.VISIBLE || collapseAnimation != null) {
// Drawer is already collapsed or animation is running.
@@ -321,10 +317,6 @@ public class NewBubble {
if (collapseEndAction == CollapseEnd.NOTHING) {
collapseEndAction = endAction;
}
- if (isUserAction && collapseEndAction == CollapseEnd.NOTHING) {
- logBasicOrCallImpression(DialerImpression.Type.BUBBLE_COLLAPSE_BY_USER);
- }
-
setPrimaryButtonAccessibilityAction(
context.getString(R.string.a11y_bubble_primary_button_expand_action));
@@ -572,8 +564,7 @@ public class NewBubble {
public void showText(@NonNull CharSequence text) {
textShowing = true;
if (expanded) {
- startCollapse(
- CollapseEnd.NOTHING, false /* isUserAction */, false /* shouldRecoverYPosition */);
+ startCollapse(CollapseEnd.NOTHING, false /* shouldRecoverYPosition */);
doShowText(text);
} else {
// Need to transition from old bounds to new bounds manually
@@ -667,10 +658,11 @@ public class NewBubble {
return;
}
if (expanded) {
- startCollapse(
- CollapseEnd.NOTHING, true /* isUserAction */, true /* shouldRecoverYPosition */);
+ logBasicOrCallImpression(DialerImpression.Type.BUBBLE_V2_CLICK_TO_COLLAPSE);
+ startCollapse(CollapseEnd.NOTHING, true /* shouldRecoverYPosition */);
} else {
- expand(true);
+ logBasicOrCallImpression(DialerImpression.Type.BUBBLE_V2_CLICK_TO_EXPAND);
+ expand();
}
}
@@ -713,7 +705,7 @@ public class NewBubble {
}
if (expanded) {
- startCollapse(CollapseEnd.HIDE, false /* isUserAction */, false /* shouldRecoverYPosition */);
+ startCollapse(CollapseEnd.HIDE, false /* shouldRecoverYPosition */);
return;
}
@@ -891,7 +883,11 @@ public class NewBubble {
}
private void logBasicOrCallImpression(DialerImpression.Type impressionType) {
- DialerCall call = CallList.getInstance().getActiveOrBackgroundCall();
+ // Bubble is shown for outgoing, active or background call
+ DialerCall call = CallList.getInstance().getOutgoingCall();
+ if (call == null) {
+ call = CallList.getInstance().getActiveOrBackgroundCall();
+ }
if (call != null) {
Logger.get(context)
.logCallImpression(impressionType, call.getUniqueCallId(), call.getTimeAddedMs());
@@ -982,8 +978,8 @@ public class NewBubble {
root.setOnBackPressedListener(
() -> {
if (visibility == Visibility.SHOWING && expanded) {
- startCollapse(
- CollapseEnd.NOTHING, true /* isUserAction */, true /* shouldRecoverYPosition */);
+ logBasicOrCallImpression(DialerImpression.Type.BUBBLE_V2_CLICK_TO_COLLAPSE);
+ startCollapse(CollapseEnd.NOTHING, true /* shouldRecoverYPosition */);
return true;
}
return false;
@@ -998,8 +994,8 @@ public class NewBubble {
root.setOnTouchListener(
(v, event) -> {
if (expanded && event.getActionMasked() == MotionEvent.ACTION_OUTSIDE) {
- startCollapse(
- CollapseEnd.NOTHING, true /* isUserAction */, true /* shouldRecoverYPosition */);
+ logBasicOrCallImpression(DialerImpression.Type.BUBBLE_V2_CLICK_TO_COLLAPSE);
+ startCollapse(CollapseEnd.NOTHING, true /* shouldRecoverYPosition */);
return true;
}
return false;