Chromium Code Reviews

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java

Issue 1274953006: Check first run finished before custom tabs feature is used (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionService.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java
index 1814b77764effbd0ffbebae8ff72a3a05b0856ab..eb210b77f2ae308b90ab21fabc258661f7bb44f8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java
@@ -112,6 +112,8 @@ public class ChromeLauncherActivity extends Activity
private boolean mIsInMultiInstanceMode;
private boolean mIsFinishNeeded;
+ private boolean mIsCustomTabIntent;
+
/** When started with an intent, maybe pre-resolve the domain. */
private void maybePrefetchDnsInBackground() {
if (getIntent() != null && Intent.ACTION_VIEW.equals(getIntent().getAction())) {
@@ -147,13 +149,10 @@ public class ChromeLauncherActivity extends Activity
mIntentHandler = new IntentHandler(this, getPackageName());
maybePerformMigrationTasks();
- if (handleCustomTabActivityIntent()) {
- finish();
- return;
- }
+ mIsCustomTabIntent = isCustomTabIntent();
// Check if we should launch the ChromeTabbedActivity.
- if (!FeatureUtilities.isDocumentMode(this)) {
+ if (!mIsCustomTabIntent && !FeatureUtilities.isDocumentMode(this)) {
launchTabbedMode();
finish();
return;
@@ -177,6 +176,12 @@ public class ChromeLauncherActivity extends Activity
// ChromeTabbedActivity because ChromeTabbedActivity handles FRE in its own way.
if (launchFirstRunExperience()) return;
+ if (mIsCustomTabIntent) {
+ launchCustomTabActivity();
+ finish();
+ return;
+ }
+
// Launch a DocumentActivity to handle the Intent.
handleDocumentActivityIntent();
if (!mIsFinishNeeded) ApiCompatibilityUtils.finishAndRemoveTask(this);
@@ -188,7 +193,10 @@ public class ChromeLauncherActivity extends Activity
if (requestCode == FIRST_RUN_EXPERIENCE_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
// User might have opted out during FRE, so check again.
- if (FeatureUtilities.isDocumentMode(this)) {
+ if (mIsCustomTabIntent) {
+ launchCustomTabActivity();
+ finish();
+ } else if (FeatureUtilities.isDocumentMode(this)) {
handleDocumentActivityIntent();
if (!mIsFinishNeeded) ApiCompatibilityUtils.finishAndRemoveTask(this);
} else {
@@ -228,11 +236,9 @@ public class ChromeLauncherActivity extends Activity
}
/**
- * Handles launching a {@link CustomTabActivity}, which will sit on top of a client's activity
- * in the same task.
- * @return True if the intent is handled here.
+ * @return Whether the intent sent is for launching a Custom Tab.
*/
- private boolean handleCustomTabActivityIntent() {
+ private boolean isCustomTabIntent() {
if (getIntent() == null || !getIntent().hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
return false;
}
@@ -241,18 +247,24 @@ public class ChromeLauncherActivity extends Activity
if (url == null) return false;
if (!ChromePreferenceManager.getInstance(this).getCustomTabsEnabled()) return false;
+ return true;
+ }
+ /**
+ * Handles launching a {@link CustomTabActivity}, which will sit on top of a client's activity
+ * in the same task.
+ */
+ private void launchCustomTabActivity() {
boolean handled = CustomTabActivity.handleInActiveContentIfNeeded(getIntent());
- if (handled) return true;
+ if (handled) return;
// Create and fire a launch intent. Use the copy constructor to carry over the myriad of
// extras.
Intent newIntent = new Intent(getIntent());
newIntent.setAction(Intent.ACTION_VIEW);
newIntent.setClassName(this, CustomTabActivity.class.getName());
- newIntent.setData(Uri.parse(url));
+ newIntent.setData(Uri.parse(IntentHandler.getUrlFromIntent(getIntent())));
startActivity(newIntent);
- return true;
}
/**
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionService.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine