summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2017-10-02 23:30:08 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-10-02 23:30:08 +0000
commit6f46d805933dd73a6af8e407b266a9633a5d703e (patch)
treea7fb6b6ab287054cf1806ff1b75067fc0d79a438
parent43d73dfdbda67ed9f405fa15e303643d97d33b70 (diff)
parent90b570e4f427f14fd17d53561c209d5eb1ac1936 (diff)
Merge changes Ifa8ebcd5,I25e0f431
* changes: Fix audio route selector. Fix crash on hanging up simulator video call.
-rw-r--r--java/com/android/dialer/logging/video_tech.proto19
-rw-r--r--java/com/android/dialer/simulator/impl/SimulatorVideoProvider.java4
-rw-r--r--java/com/android/incallui/AudioRouteSelectorActivity.java6
-rw-r--r--java/com/android/incallui/InCallActivity.java2
-rw-r--r--java/com/android/incallui/ReturnToCallActionReceiver.java8
-rw-r--r--java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java20
-rw-r--r--java/com/android/incallui/call/DialerCall.java42
-rw-r--r--java/com/android/incallui/videotech/VideoTech.java2
-rw-r--r--java/com/android/incallui/videotech/empty/EmptyVideoTech.java5
-rw-r--r--java/com/android/incallui/videotech/ims/ImsVideoTech.java5
-rw-r--r--java/com/android/incallui/videotech/lightbringer/LightbringerTech.java5
11 files changed, 76 insertions, 42 deletions
diff --git a/java/com/android/dialer/logging/video_tech.proto b/java/com/android/dialer/logging/video_tech.proto
new file mode 100644
index 000000000..b5cd35145
--- /dev/null
+++ b/java/com/android/dialer/logging/video_tech.proto
@@ -0,0 +1,19 @@
+syntax = "proto2";
+
+package com.android.dialer.logging;
+option java_package = "com.android.dialer.logging";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+
+
+
+message VideoTech {
+ enum Type {
+ NONE = 0;
+
+ IMS_VIDEO_TECH = 1;
+ LIGHTBRINGER_VIDEO_TECH = 2;
+ RCS_VIDEO_SHARE = 3;
+ }
+} \ No newline at end of file
diff --git a/java/com/android/dialer/simulator/impl/SimulatorVideoProvider.java b/java/com/android/dialer/simulator/impl/SimulatorVideoProvider.java
index a596728a8..0ed81da28 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorVideoProvider.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorVideoProvider.java
@@ -52,6 +52,10 @@ final class SimulatorVideoProvider extends Connection.VideoProvider {
simulatorPreviewCamera.stopCamera();
simulatorPreviewCamera = null;
}
+ if (previewCameraId == null && simulatorRemoteVideo != null) {
+ simulatorRemoteVideo.stopVideo();
+ simulatorRemoteVideo = null;
+ }
}
@Override
diff --git a/java/com/android/incallui/AudioRouteSelectorActivity.java b/java/com/android/incallui/AudioRouteSelectorActivity.java
index f0ae79bc2..2fdc89aa8 100644
--- a/java/com/android/incallui/AudioRouteSelectorActivity.java
+++ b/java/com/android/incallui/AudioRouteSelectorActivity.java
@@ -57,7 +57,9 @@ public class AudioRouteSelectorActivity extends FragmentActivity
if (audioRouteSelectorDialogFragment != null) {
audioRouteSelectorDialogFragment.dismiss();
}
- // We don't expect the activity to resume
- finish();
+ // We don't expect the activity to resume, except for orientation change.
+ if (!isChangingConfigurations()) {
+ finish();
+ }
}
}
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index 178a404ba..b82b6c994 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -200,9 +200,9 @@ public class InCallActivity extends TransactionSafeFragmentActivity
protected void onStop() {
Trace.beginSection("InCallActivity.onStop");
LogUtil.i("InCallActivity.onStop", "");
+ isVisible = false;
super.onStop();
common.onStop();
- isVisible = false;
Trace.endSection();
}
diff --git a/java/com/android/incallui/ReturnToCallActionReceiver.java b/java/com/android/incallui/ReturnToCallActionReceiver.java
index b645c155c..c37b0b816 100644
--- a/java/com/android/incallui/ReturnToCallActionReceiver.java
+++ b/java/com/android/incallui/ReturnToCallActionReceiver.java
@@ -20,6 +20,7 @@ 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;
@@ -51,6 +52,9 @@ public class ReturnToCallActionReceiver extends BroadcastReceiver {
case ACTION_END_CALL:
endCall(context);
break;
+ default:
+ throw Assert.createIllegalStateFailException(
+ "Invalid intent action: " + intent.getAction());
}
}
@@ -87,7 +91,9 @@ public class ReturnToCallActionReceiver extends BroadcastReceiver {
}
public void showAudioRouteSelector(Context context) {
- context.startActivity(new Intent(context, AudioRouteSelectorActivity.class));
+ Intent intent = new Intent(context, AudioRouteSelectorActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+ context.startActivity(intent);
}
private void toggleMute(Context context) {
diff --git a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
index 860d2d282..9fd3aed5b 100644
--- a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
+++ b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
@@ -27,7 +27,6 @@ import android.support.design.widget.BottomSheetDialogFragment;
import android.telecom.CallAudioState;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.TextView;
@@ -92,12 +91,14 @@ public class AudioRouteSelectorDialogFragment extends BottomSheetDialogFragment
(TextView) view.findViewById(R.id.audioroute_earpiece),
CallAudioState.ROUTE_EARPIECE,
audioState);
+
+ // TODO(b/67013452): set peak height correctly to fully expand it in landscape mode.
return view;
}
@Override
- public void onDismiss(DialogInterface dialogInterface) {
- super.onDismiss(dialogInterface);
+ public void onCancel(DialogInterface dialogInterface) {
+ super.onCancel(dialogInterface);
FragmentUtils.getParentUnsafe(
AudioRouteSelectorDialogFragment.this, AudioRouteSelectorPresenter.class)
.onAudioRouteSelectorDismiss();
@@ -113,14 +114,11 @@ public class AudioRouteSelectorDialogFragment extends BottomSheetDialogFragment
item.setCompoundDrawableTintMode(Mode.SRC_ATOP);
}
item.setOnClickListener(
- new OnClickListener() {
- @Override
- public void onClick(View v) {
- dismiss();
- FragmentUtils.getParentUnsafe(
- AudioRouteSelectorDialogFragment.this, AudioRouteSelectorPresenter.class)
- .onAudioRouteSelected(itemRoute);
- }
+ (v) -> {
+ dismiss();
+ FragmentUtils.getParentUnsafe(
+ AudioRouteSelectorDialogFragment.this, AudioRouteSelectorPresenter.class)
+ .onAudioRouteSelected(itemRoute);
});
}
}
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 4f31dadf4..82a29ee84 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -153,9 +153,10 @@ 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;
+ private VideoTech videoTech = new EmptyVideoTech();
- private boolean isImsReachable;
+ private com.android.dialer.logging.VideoTech.Type selectedAvailableVideoTechType =
+ com.android.dialer.logging.VideoTech.Type.NONE;
public static String getNumberFromHandle(Uri handle) {
return handle == null ? "" : handle.getSchemeSpecificPart();
@@ -451,10 +452,15 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
private void update() {
Trace.beginSection("DialerCall.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();
+ // Only store the first video tech type found to be available during the life of the call.
+ if (selectedAvailableVideoTechType == com.android.dialer.logging.VideoTech.Type.NONE) {
+ // Update the video tech.
+ videoTech = mVideoTechManager.findBestAvailableVideoTech();
+ videoTech.becomePrimary();
+ selectedAvailableVideoTechType = videoTech.getVideoTechType();
+ }
if (oldState != getState() && getState() == DialerCall.State.DISCONNECTED) {
for (DialerCallListener listener : mListeners) {
listener.onDialerCallDisconnect();
@@ -1156,9 +1162,6 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
}
public VideoTech getVideoTech() {
- if (videoTech == null) {
- videoTech = mVideoTechManager.getVideoTech();
- }
return videoTech;
}
@@ -1333,12 +1336,8 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
mVideoTechManager.dispatchRemovedFromCallList();
}
- public boolean isImsReachable() {
- return isImsReachable;
- }
-
- private void setImsReachable(boolean imsReachable) {
- isImsReachable = imsReachable;
+ public com.android.dialer.logging.VideoTech.Type getSelectedAvailableVideoTechType() {
+ return selectedAvailableVideoTechType;
}
/**
@@ -1535,7 +1534,6 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
private final Context context;
private final EmptyVideoTech emptyVideoTech = new EmptyVideoTech();
private final List<VideoTech> videoTechs;
- private VideoTech savedTech;
VideoTechManager(DialerCall call) {
this.context = call.mContext;
@@ -1547,10 +1545,7 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
// Insert order here determines the priority of that video tech option
videoTechs = new ArrayList<>();
- ImsVideoTech imsVideoTech =
- new ImsVideoTech(Logger.get(call.mContext), call, call.mTelecomCall);
- call.setImsReachable(imsVideoTech.isAvailable(context));
- videoTechs.add(imsVideoTech);
+ videoTechs.add(new ImsVideoTech(Logger.get(call.mContext), call, call.mTelecomCall));
VideoTech rcsVideoTech =
EnrichedCallComponent.get(call.mContext)
@@ -1571,17 +1566,10 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
phoneNumber));
}
- VideoTech getVideoTech() {
- if (savedTech != null) {
- return savedTech;
- }
-
+ VideoTech findBestAvailableVideoTech() {
for (VideoTech tech : videoTechs) {
if (tech.isAvailable(context)) {
- // Remember the first VideoTech that becomes available and always use it
- savedTech = tech;
- savedTech.becomePrimary();
- return savedTech;
+ return tech;
}
}
diff --git a/java/com/android/incallui/videotech/VideoTech.java b/java/com/android/incallui/videotech/VideoTech.java
index 410c35762..71087cb2c 100644
--- a/java/com/android/incallui/videotech/VideoTech.java
+++ b/java/com/android/incallui/videotech/VideoTech.java
@@ -85,6 +85,8 @@ public interface VideoTech {
*/
void becomePrimary();
+ com.android.dialer.logging.VideoTech.Type getVideoTechType();
+
/** Listener for video call events. */
interface VideoTechListener {
diff --git a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
index f156a14ad..2e34a6a8a 100644
--- a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
+++ b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
@@ -107,4 +107,9 @@ public class EmptyVideoTech implements VideoTech {
@Override
public void becomePrimary() {}
+
+ @Override
+ public com.android.dialer.logging.VideoTech.Type getVideoTechType() {
+ return com.android.dialer.logging.VideoTech.Type.NONE;
+ }
}
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
index 0ef07d667..0310a90ac 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
@@ -327,6 +327,11 @@ public class ImsVideoTech implements VideoTech {
DialerImpression.Type.UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_IMS);
}
+ @Override
+ public com.android.dialer.logging.VideoTech.Type getVideoTechType() {
+ return com.android.dialer.logging.VideoTech.Type.IMS_VIDEO_TECH;
+ }
+
private boolean canPause() {
return call.getDetails().can(Details.CAPABILITY_CAN_PAUSE_VIDEO);
}
diff --git a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
index 1ddf3716e..9adc53b0d 100644
--- a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
+++ b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
@@ -195,4 +195,9 @@ public class LightbringerTech implements VideoTech, LightbringerListener {
public void onLightbringerStateChanged() {
listener.onVideoTechStateChanged();
}
+
+ @Override
+ public com.android.dialer.logging.VideoTech.Type getVideoTechType() {
+ return com.android.dialer.logging.VideoTech.Type.LIGHTBRINGER_VIDEO_TECH;
+ }
}