Commit abdebb56 authored by Peter Kotwicz's avatar Peter Kotwicz Committed by Commit Bot

Fix deep links for new-style WebAPKs

This CL:
- Handles onActivityResult() being called after onNewIntent()
and before onResume()
- Changes SplashActivityTest#testDeepLink() to reflect what actually
occurs

BUG=978716

Change-Id: I3b5265368a32eb0b94fdc78e905285258666b72f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1717877
Commit-Queue: Peter Kotwicz <pkotwicz@chromium.org>
Reviewed-by: default avatarPavel Shmakov <pshmakov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#681469}
parent a238a6bf
......@@ -12,4 +12,4 @@
# //chrome/android/webapk/shell_apk:webapk is changed. This includes
# Java files, Android resource files and AndroidManifest.xml. Does not affect
# Chrome.apk
current_shell_apk_version = 100
current_shell_apk_version = 101
......@@ -200,6 +200,25 @@ public final class SplashActivityTest {
Robolectric.buildActivity(SplashActivity.class, new Intent());
setAppTaskTopActivity(splashActivityController.get().getTaskId(), new Activity());
splashActivityController.create(new Bundle()).visible();
splashActivityController.newIntent(new Intent());
splashActivityController.get().onActivityResult(0, 0, null);
splashActivityController.resume();
assertNotNull(mShadowApplication.getNextStartedActivity());
assertFalse(splashActivityController.get().isFinishing());
}
/**
* Test that SplashActivity does not finish itself when it receives onActivityResult()
* prior to onNewIntent().
*/
@Test
public void testActivityResultBeforeNewIntent() {
ActivityController<SplashActivity> splashActivityController =
Robolectric.buildActivity(SplashActivity.class, new Intent());
setAppTaskTopActivity(splashActivityController.get().getTaskId(), new Activity());
splashActivityController.create(new Bundle()).visible();
splashActivityController.get().onActivityResult(0, 0, null);
splashActivityController.newIntent(new Intent());
......
......@@ -14,6 +14,7 @@ import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.annotation.IntDef;
import android.view.View;
import android.view.ViewTreeObserver;
......@@ -26,6 +27,8 @@ import org.chromium.webapk.shell_apk.WebApkUtils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/** Displays splash screen. */
public class SplashActivity extends Activity {
......@@ -36,9 +39,17 @@ public class SplashActivity extends Activity {
@SuppressWarnings("NoAndroidAsyncTaskCheck")
private android.os.AsyncTask mScreenshotSplashTask;
@IntDef({ActivityResult.NONE, ActivityResult.CANCELED, ActivityResult.IGNORE})
@Retention(RetentionPolicy.SOURCE)
private @interface ActivityResult {
int NONE = 0;
int CANCELED = 1;
int IGNORE = 2;
}
private View mSplashView;
private HostBrowserLauncherParams mParams;
private boolean mGotCanceledResult;
private @ActivityResult int mResult;
private boolean mResumed;
private boolean mPendingLaunch;
......@@ -67,7 +78,9 @@ public class SplashActivity extends Activity {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
mGotCanceledResult = (resultCode == Activity.RESULT_CANCELED);
if (mResult != ActivityResult.IGNORE && resultCode == Activity.RESULT_CANCELED) {
mResult = ActivityResult.CANCELED;
}
}
@Override
......@@ -79,7 +92,7 @@ public class SplashActivity extends Activity {
// The host browser activity is killed - triggering SplashActivity#onActivityResult()
// - when SplashActivity gets a new intent because SplashActivity has launchMode
// "singleTask".
mGotCanceledResult = false;
mResult = ActivityResult.IGNORE;
mPendingLaunch = true;
......@@ -90,11 +103,12 @@ public class SplashActivity extends Activity {
public void onResume() {
super.onResume();
mResumed = true;
if (mGotCanceledResult) {
if (mResult == ActivityResult.CANCELED) {
WebApkUtils.finishAndRemoveTask(this);
return;
}
mResult = ActivityResult.NONE;
maybeScreenshotSplashAndLaunch();
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment