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

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: Fix back button 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..8734ed066524356f6ec92b26753d2ec177447534 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;
@@ -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:
@@ -1025,7 +1028,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
/**
* Closes the foreground tab, potentially sending the user back to the app that launched Chrome.
- *
+ * TODO(dfalcantara): Come up with a better name for this, given that Herb can prevent the tab
+ * from closing.
* @return Whether the tab closed was opened for a help page.
*/
private boolean closeForegroundTab() {
@@ -1043,15 +1047,24 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
return true;
}
+ // Check whether Herb allows the tab to close or just forces the app to minimize itself.
+ boolean isAllowedToClose = true;
+ String herbFlavor = ChromePreferenceManager.getHerbFlavor();
+ if (!TextUtils.isEmpty(herbFlavor)) {
+ // Don't close the tab if the return button is showing.
+ isAllowedToClose = !currentTab.isAllowedToReturnToExternalApp();
+ Log.d(TAG, "Herb: Allowing the tab to close: " + isAllowedToClose);
+ }
+
// [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
+ final boolean shouldCloseTab = isAllowedToClose && (type == TabLaunchType.FROM_LINK
|| type == TabLaunchType.FROM_EXTERNAL_APP
|| type == TabLaunchType.FROM_LONGPRESS_FOREGROUND
|| type == TabLaunchType.FROM_LONGPRESS_BACKGROUND
- || (type == TabLaunchType.FROM_RESTORE && parentId != Tab.INVALID_TAB_ID);
+ || (type == TabLaunchType.FROM_RESTORE && parentId != Tab.INVALID_TAB_ID));
// Minimize the app if either:
// - we decided not to close the tab

Powered by Google App Engine
This is Rietveld 408576698