| 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..a2e3115b730aa1c541cdfc890554a2361f649b4e 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();
|
| @@ -1039,7 +1044,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| // actual redirected URL is a different system language based help url.
|
| if (type == TabLaunchType.FROM_MENU_OR_OVERVIEW && helpUrl) {
|
| getCurrentTabModel().closeTab(currentTab);
|
| - Log.i(TAG, "closeForegroundTab() - help url");
|
| + Log.i(TAG, "handleBackPressedWithoutBackStack() - help url");
|
| return true;
|
| }
|
|
|
| @@ -1060,7 +1065,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| final boolean minimizeApp = !shouldCloseTab || currentTab.isCreatedForExternalApp();
|
|
|
| if (minimizeApp) {
|
| - Log.i(TAG, "closeForegroundTab() - moveTaskToBack");
|
| + Log.i(TAG, "handleBackPressedWithoutBackStack() - moveTaskToBack");
|
| moveTaskToBack(true);
|
| if (shouldCloseTab) {
|
| // In the case of closing a tab upon minimalization, don't allow the close
|
|
|