summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/precall
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2017-11-21 17:54:34 -0800
committerCopybara-Service <copybara-piper@google.com>2017-11-22 16:25:46 -0800
commit1fb1c697a2b71ed629df76c4be129729f3cb6aea (patch)
tree79bd528ffe8b1a37d11c1ae42c7a50b4bdb28901 /java/com/android/dialer/precall
parentecbcc5c8cce01c70480e73284a9e5e1115fc6649 (diff)
Fix showing CallingAccountSelector in lock screen
android:showWhenLocked and FLAG_SHOW_WHEN_LOCKED is added to PreCallActivity so it can be launched in lockscreen. PreCallCoordinator now grabs new instances of PreCallActions onResume so the state can be flushed. If it is reused states like PendingAction might be used after it is discarded. Added null check before discarding fragment because it might not be created yet due to background query. Bug: 69570769 Test: CallingAccountSelectorTest PiperOrigin-RevId: 176587256 Change-Id: Iaa7145e860136e9177f568e2c84461ed5efa12a1
Diffstat (limited to 'java/com/android/dialer/precall')
-rw-r--r--java/com/android/dialer/precall/impl/AndroidManifest.xml1
-rw-r--r--java/com/android/dialer/precall/impl/CallingAccountSelector.java24
-rw-r--r--java/com/android/dialer/precall/impl/PreCallActivity.java2
-rw-r--r--java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java2
4 files changed, 18 insertions, 11 deletions
diff --git a/java/com/android/dialer/precall/impl/AndroidManifest.xml b/java/com/android/dialer/precall/impl/AndroidManifest.xml
index d3d0f538d..b960f6bad 100644
--- a/java/com/android/dialer/precall/impl/AndroidManifest.xml
+++ b/java/com/android/dialer/precall/impl/AndroidManifest.xml
@@ -23,6 +23,7 @@
android:name="com.android.dialer.precall.impl.PreCallActivity"
android:excludeFromRecents="true"
android:noHistory="true"
+ android:showWhenLocked="true"
android:theme="@style/Theme.PreCall.DialogHolder">
</activity>
</application>
diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
index 144d94e20..4d2e6063a 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -119,12 +119,12 @@ public class CallingAccountSelector implements PreCallAction {
PendingAction pendingAction = coordinator.startPendingAction();
DialerExecutorComponent.get(coordinator.getActivity())
.dialerExecutorFactory()
- .createUiTaskBuilder(
- activity.getFragmentManager(),
- "PreferredAccountWorker",
- new PreferredAccountWorker(phoneNumber))
+ .createNonUiTaskBuilder(new PreferredAccountWorker(phoneNumber))
.onSuccess(
(result -> {
+ if (isDiscarding) {
+ return;
+ }
if (result.phoneAccountHandle.isPresent()) {
coordinator.getBuilder().setPhoneAccountHandle(result.phoneAccountHandle.get());
pendingAction.finish();
@@ -213,7 +213,9 @@ public class CallingAccountSelector implements PreCallAction {
@Override
public void onDiscard() {
isDiscarding = true;
- selectPhoneAccountDialogFragment.dismiss();
+ if (selectPhoneAccountDialogFragment != null) {
+ selectPhoneAccountDialogFragment.dismiss();
+ }
}
private static class PreferredAccountWorkerResult {
@@ -353,11 +355,13 @@ public class CallingAccountSelector implements PreCallAction {
new WritePreferredAccountWorkerInput(
coordinator.getActivity(), dataId, selectedAccountHandle));
}
- DialerExecutorComponent.get(coordinator.getActivity())
- .dialerExecutorFactory()
- .createNonUiTaskBuilder(new UserSelectionReporter(selectedAccountHandle, number))
- .build()
- .executeParallel(coordinator.getActivity());
+ if (number != null) {
+ DialerExecutorComponent.get(coordinator.getActivity())
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new UserSelectionReporter(selectedAccountHandle, number))
+ .build()
+ .executeParallel(coordinator.getActivity());
+ }
listener.finish();
}
diff --git a/java/com/android/dialer/precall/impl/PreCallActivity.java b/java/com/android/dialer/precall/impl/PreCallActivity.java
index 938d31d5f..eadba2b11 100644
--- a/java/com/android/dialer/precall/impl/PreCallActivity.java
+++ b/java/com/android/dialer/precall/impl/PreCallActivity.java
@@ -19,6 +19,7 @@ package com.android.dialer.precall.impl;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
+import android.view.WindowManager.LayoutParams;
/** A transparent activity to host dialogs for {@link PreCallCoordinatorImpl} */
public class PreCallActivity extends Activity {
@@ -30,6 +31,7 @@ public class PreCallActivity extends Activity {
super.onCreate(savedInstanceState);
preCallCoordinator = new PreCallCoordinatorImpl(this);
preCallCoordinator.onCreate(getIntent(), savedInstanceState);
+ getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}
@Override
diff --git a/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java b/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
index de32cc2ae..94ba90d75 100644
--- a/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
+++ b/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
@@ -59,7 +59,6 @@ public class PreCallCoordinatorImpl implements PreCallCoordinator {
} else {
builder = Assert.isNotNull(intent.getParcelableExtra(EXTRA_CALL_INTENT_BUILDER));
}
- actions = PreCallComponent.get(activity).getPreCall().getActions();
}
void onRestoreInstanceState(Bundle savedInstanceState) {
@@ -68,6 +67,7 @@ public class PreCallCoordinatorImpl implements PreCallCoordinator {
}
void onResume() {
+ actions = PreCallComponent.get(activity).getPreCall().getActions();
runNextAction();
}