summaryrefslogtreecommitdiffstats
path: root/java/com/android/incallui/answer/impl
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2017-10-06 16:35:54 -0700
committerEric Erfanian <erfanian@google.com>2017-10-09 08:41:07 -0700
commit8efb49584f732014076390093ad90e23dce2e3ba (patch)
tree109b16036e6ca27d5fe8d1fb3bc4373ed64cdb03 /java/com/android/incallui/answer/impl
parent30842b209934a98a0220673e2ab6b4bf500c15d3 (diff)
downloadandroid_packages_apps_Dialer-8efb49584f732014076390093ad90e23dce2e3ba.tar.gz
android_packages_apps_Dialer-8efb49584f732014076390093ad90e23dce2e3ba.tar.bz2
android_packages_apps_Dialer-8efb49584f732014076390093ad90e23dce2e3ba.zip
Implement InCallUiLock
When any locks are acquired, the InCallActivity will not auto-finish when there are no active calls. The disconnected cause and reject with SMS dialogs are migrated to use this API, which prevents the activity form ending before the user has finished interacting with the dialogs. Bug: 64215256 Test: InCallPresenterTest PiperOrigin-RevId: 171362338 Change-Id: Ied07ebbf6bee056ea6b2314c57f3324561b1651a
Diffstat (limited to 'java/com/android/incallui/answer/impl')
-rw-r--r--java/com/android/incallui/answer/impl/AnswerFragment.java8
-rw-r--r--java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java10
-rw-r--r--java/com/android/incallui/answer/impl/SmsBottomSheetFragment.java12
3 files changed, 27 insertions, 3 deletions
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index 18de72e8b..3476557ba 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -78,6 +78,7 @@ import com.android.incallui.incall.protocol.InCallScreenDelegateFactory;
import com.android.incallui.incall.protocol.PrimaryCallState;
import com.android.incallui.incall.protocol.PrimaryInfo;
import com.android.incallui.incall.protocol.SecondaryInfo;
+import com.android.incallui.incalluilock.InCallUiLock;
import com.android.incallui.maps.MapsComponent;
import com.android.incallui.sessiondata.AvatarPresenter;
import com.android.incallui.sessiondata.MultimediaFragment;
@@ -977,6 +978,11 @@ public class AnswerFragment extends Fragment
}
@Override
+ public InCallUiLock acquireInCallUiLock(String tag) {
+ return answerScreenDelegate.acquireInCallUiLock(tag);
+ }
+
+ @Override
public void smsSelected(@Nullable CharSequence text) {
LogUtil.i("AnswerFragment.smsSelected", null);
textResponsesFragment = null;
@@ -997,7 +1003,6 @@ public class AnswerFragment extends Fragment
public void smsDismissed() {
LogUtil.i("AnswerFragment.smsDismissed", null);
textResponsesFragment = null;
- answerScreenDelegate.onDismissDialog();
}
@Override
@@ -1014,7 +1019,6 @@ public class AnswerFragment extends Fragment
public void customSmsDismissed() {
LogUtil.i("AnswerFragment.customSmsDismissed", null);
createCustomSmsDialogFragment = null;
- answerScreenDelegate.onDismissDialog();
}
private boolean canRejectCallWithSms() {
diff --git a/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java b/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java
index b49409258..73476f242 100644
--- a/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java
+++ b/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java
@@ -31,6 +31,7 @@ import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import com.android.dialer.common.FragmentUtils;
+import com.android.incallui.incalluilock.InCallUiLock;
/**
* Shows the dialog for users to enter a custom message when rejecting a call with an SMS message.
@@ -40,6 +41,7 @@ public class CreateCustomSmsDialogFragment extends AppCompatDialogFragment {
private static final String ARG_ENTERED_TEXT = "enteredText";
private EditText editText;
+ private InCallUiLock inCallUiLock;
public static CreateCustomSmsDialogFragment newInstance() {
return new CreateCustomSmsDialogFragment();
@@ -55,6 +57,11 @@ public class CreateCustomSmsDialogFragment extends AppCompatDialogFragment {
if (savedInstanceState != null) {
editText.setText(savedInstanceState.getCharSequence(ARG_ENTERED_TEXT));
}
+
+ inCallUiLock =
+ FragmentUtils.getParentUnsafe(
+ CreateCustomSmsDialogFragment.this, CreateCustomSmsHolder.class)
+ .acquireInCallUiLock("CreateCustomSmsDialogFragment");
builder
.setCancelable(true)
.setView(view)
@@ -124,12 +131,15 @@ public class CreateCustomSmsDialogFragment extends AppCompatDialogFragment {
@Override
public void onDismiss(DialogInterface dialogInterface) {
super.onDismiss(dialogInterface);
+ inCallUiLock.release();
FragmentUtils.getParentUnsafe(this, CreateCustomSmsHolder.class).customSmsDismissed();
}
/** Call back for {@link CreateCustomSmsDialogFragment} */
public interface CreateCustomSmsHolder {
+ InCallUiLock acquireInCallUiLock(String tag);
+
void customSmsCreated(@NonNull CharSequence text);
void customSmsDismissed();
diff --git a/java/com/android/incallui/answer/impl/SmsBottomSheetFragment.java b/java/com/android/incallui/answer/impl/SmsBottomSheetFragment.java
index 085430ea2..6742e4a36 100644
--- a/java/com/android/incallui/answer/impl/SmsBottomSheetFragment.java
+++ b/java/com/android/incallui/answer/impl/SmsBottomSheetFragment.java
@@ -36,6 +36,7 @@ import android.widget.TextView;
import com.android.dialer.common.DpUtil;
import com.android.dialer.common.FragmentUtils;
import com.android.dialer.common.LogUtil;
+import com.android.incallui.incalluilock.InCallUiLock;
import java.util.ArrayList;
import java.util.List;
@@ -44,6 +45,8 @@ public class SmsBottomSheetFragment extends BottomSheetDialogFragment {
private static final String ARG_OPTIONS = "options";
+ private InCallUiLock inCallUiLock;
+
public static SmsBottomSheetFragment newInstance(@Nullable ArrayList<CharSequence> options) {
SmsBottomSheetFragment fragment = new SmsBottomSheetFragment();
Bundle args = new Bundle();
@@ -80,6 +83,10 @@ public class SmsBottomSheetFragment extends BottomSheetDialogFragment {
LogUtil.i("SmsBottomSheetFragment.onCreateDialog", null);
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+
+ inCallUiLock =
+ FragmentUtils.getParentUnsafe(SmsBottomSheetFragment.this, SmsSheetHolder.class)
+ .acquireInCallUiLock("SmsBottomSheetFragment");
return dialog;
}
@@ -88,7 +95,7 @@ public class SmsBottomSheetFragment extends BottomSheetDialogFragment {
Context context = new ContextThemeWrapper(getContext(), getTheme());
TypedArray typedArray = context.obtainStyledAttributes(attrs);
Drawable background = typedArray.getDrawable(0);
- //noinspection ResourceType
+ // noinspection ResourceType
typedArray.recycle();
TextView textView = new TextView(context);
@@ -124,11 +131,14 @@ public class SmsBottomSheetFragment extends BottomSheetDialogFragment {
public void onDismiss(DialogInterface dialogInterface) {
super.onDismiss(dialogInterface);
FragmentUtils.getParentUnsafe(this, SmsSheetHolder.class).smsDismissed();
+ inCallUiLock.release();
}
/** Callback interface for {@link SmsBottomSheetFragment} */
public interface SmsSheetHolder {
+ InCallUiLock acquireInCallUiLock(String tag);
+
void smsSelected(@Nullable CharSequence text);
void smsDismissed();