Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4579)

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

Issue 1683533002: Herb: Show an icon allowing the user to open a tab in Chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Trying to unify codepaths Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
index 265f36545028202e4e0f601fb3ac3a3c38d6442d..0ebe3452143802c08c15b1c0c8af7f9c34d14b70 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -48,6 +48,7 @@ import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter;
import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout;
import org.chromium.chrome.browser.cookies.CookiesFetcher;
import org.chromium.chrome.browser.device.DeviceClassManager;
+import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.document.DocumentUma;
import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkUtils;
import org.chromium.chrome.browser.firstrun.FirstRunActivity;
@@ -81,6 +82,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelUtils;
import org.chromium.chrome.browser.tabmodel.TabWindowManager;
import org.chromium.chrome.browser.toolbar.ToolbarControlContainer;
import org.chromium.chrome.browser.util.FeatureUtilities;
+import org.chromium.chrome.browser.util.IntentUtils;
import org.chromium.chrome.browser.widget.emptybackground.EmptyBackgroundViewWrapper;
import org.chromium.chrome.browser.widget.findinpage.FindToolbarManager;
import org.chromium.content.browser.ContentVideoView;
@@ -467,7 +469,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
getToolbarManager().getToolbar().setReturnButtonListener(new OnClickListener() {
@Override
public void onClick(View v) {
- if (getActivityTab() != null) closeForegroundTab();
+ if (getActivityTab() != null) handleBackPressedWithoutBackStack();
}
});
@@ -695,7 +697,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
break;
case OPEN_NEW_TAB:
Tab newTab = launchIntent(url, referer, headers, externalAppId, true, intent);
- newTab.setIsAllowedToReturnToExternalApp(true);
+ newTab.setIsAllowedToReturnToExternalApp(IntentUtils.safeGetBooleanExtra(intent,
+ ChromeLauncherActivity.EXTRA_IS_ALLOWED_TO_RETURN_TO_PARENT, true));
RecordUserAction.record("MobileReceivedExternalIntent");
break;
case OPEN_NEW_INCOGNITO_TAB:
@@ -1012,7 +1015,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
if (!getToolbarManager().back()) {
Log.i(TAG, "handleBackPressed() - no back stack");
- if (closeForegroundTab()) return true;
+ if (handleBackPressedWithoutBackStack()) return true;
} else {
Log.i(TAG, "handleBackPressed() - moving back in navigation");
RecordUserAction.record("SystemBackForNavigation");
@@ -1024,11 +1027,13 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
}
/**
- * Closes the foreground tab, potentially sending the user back to the app that launched Chrome.
+ * Additional logic for handling situations where a user hits a 'back' or 'return' button.
+ *
+ * May result in closing the foreground tab or returning to the app that opened Chrome.
*
* @return Whether the tab closed was opened for a help page.
*/
- private boolean closeForegroundTab() {
+ private boolean handleBackPressedWithoutBackStack() {
final Tab currentTab = getActivityTab();
final TabLaunchType type = currentTab.getLaunchType();
final int parentId = currentTab.getParentId();
@@ -1043,12 +1048,19 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
return true;
}
+ // Herb is currently specced to disallow closing an externally launched tab in any scenario
+ // where the back button is pressed.
+ boolean isAllowedToCloseTabForExternalApp = true;
+ if (!TextUtils.isEmpty(ChromePreferenceManager.getHerbFlavor())) {
+ isAllowedToCloseTabForExternalApp = false;
+ }
+
// [true]: Reached the bottom of the back stack on a tab the user did not explicitly
// create (i.e. it was created by an external app or opening a link in background, etc).
// [false]: Reached the bottom of the back stack on a tab that the user explicitly
// created (e.g. selecting "new tab" from menu).
final boolean shouldCloseTab = type == TabLaunchType.FROM_LINK
- || type == TabLaunchType.FROM_EXTERNAL_APP
+ || (type == TabLaunchType.FROM_EXTERNAL_APP && isAllowedToCloseTabForExternalApp)
|| type == TabLaunchType.FROM_LONGPRESS_FOREGROUND
|| type == TabLaunchType.FROM_LONGPRESS_BACKGROUND
|| (type == TabLaunchType.FROM_RESTORE && parentId != Tab.INVALID_TAB_ID);

Powered by Google App Engine
This is Rietveld 408576698