diff options
5 files changed, 19 insertions, 7 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java index 09e2bd4e..07b6472 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java @@ -208,7 +208,8 @@ public class ChromeApplication extends ContentApplication { } // For multiwindow mode we do not track keyboard visibility. - return activity != null && MultiWindowUtils.getInstance().isMultiWindow(activity); + return activity != null + && MultiWindowUtils.getInstance().isLegacyMultiWindow(activity); } }); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java index 6a22e52..db025c2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java @@ -129,7 +129,8 @@ public class CompositorView mPreviousWindowTop = windowTop; Activity activity = mWindowAndroid != null ? mWindowAndroid.getActivity().get() : null; - boolean isMultiWindow = MultiWindowUtils.getInstance().isMultiWindow(activity); + boolean isMultiWindow = MultiWindowUtils.getInstance().isLegacyMultiWindow(activity) + || MultiWindowUtils.getInstance().isMultiWindow(activity); // If the measured width is the same as the allowed width (i.e. the orientation has // not changed) and multi-window mode is off, use the largest measured height seen thus diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java index abb5eb1..feb69ce 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java @@ -41,7 +41,7 @@ public class MultiWindowUtils { /** * @param activity The {@link Activity} to check. - * @return Whether or not {@code activity} is currently in multi-window mode. + * @return Whether or not {@code activity} is currently in Android N+ multi-window mode. */ public boolean isMultiWindow(Activity activity) { // This logic is overridden in a subclass. @@ -50,12 +50,22 @@ public class MultiWindowUtils { /** * @param activity The {@link Activity} to check. + * @return Whether or not {@code activity} is currently in legacy pre-N multi-window mode + * (e.g. Samsung's multi-window mode). + */ + public boolean isLegacyMultiWindow(Activity activity) { + // This logic is overridden in a subclass. + return false; + } + + /** + * @param activity The {@link Activity} to check. * @return Whether or not {@code activity} should run in multi-instance mode. */ public boolean shouldRunInMultiInstanceMode(ChromeLauncherActivity activity) { return Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP && TextUtils.equals(activity.getIntent().getAction(), Intent.ACTION_MAIN) - && isMultiWindow(activity) + && isLegacyMultiWindow(activity) && activity.isChromeBrowserActivityRunning(); } @@ -64,7 +74,7 @@ public class MultiWindowUtils { */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) public void makeMultiInstanceIntent(Activity activity, Intent intent) { - if (activity instanceof ChromeLauncherActivity && isMultiWindow(activity)) { + if (activity instanceof ChromeLauncherActivity && isLegacyMultiWindow(activity)) { if (TextUtils.equals(ChromeTabbedActivity.class.getName(), intent.getComponent().getClassName())) { intent.setClassName(activity, MultiInstanceChromeTabbedActivity.class.getName()); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoScreen.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoScreen.java index b2e7241..d833820 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoScreen.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoScreen.java @@ -52,7 +52,7 @@ public class DataReductionPromoScreen extends Dialog implements View.OnClickList if (getDisplayedDataReductionPromo(parentActivity)) return; // Showing the promo dialog in multiwindow mode is broken on Galaxy Note devices: // http://crbug.com/354696. If we're in multiwindow mode, save the dialog for later. - if (MultiWindowUtils.getInstance().isMultiWindow(parentActivity)) return; + if (MultiWindowUtils.getInstance().isLegacyMultiWindow(parentActivity)) return; DataReductionPromoScreen promoScreen = new DataReductionPromoScreen(parentActivity); promoScreen.setOnDismissListener(promoScreen); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoScreen.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoScreen.java index 8fff265..3cccd6c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoScreen.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoScreen.java @@ -48,7 +48,7 @@ public class SigninPromoScreen // navigate to and view a URL on startup), the instance is part of the field trial, // and the promo has been marked to display. ChromePreferenceManager preferenceManager = ChromePreferenceManager.getInstance(activity); - if (MultiWindowUtils.getInstance().isMultiWindow(activity)) return false; + if (MultiWindowUtils.getInstance().isLegacyMultiWindow(activity)) return false; if (!preferenceManager.getShowSigninPromo()) return false; preferenceManager.setShowSigninPromo(false); |