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

Unified Diff: chrome/test/android/javatests/src/org/chromium/chrome/test/util/FullscreenTestUtils.java

Issue 1589023003: [Contextual Search] Enable for fullscreen (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 11 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
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/fullscreen/FullscreenManagerTest.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/android/javatests/src/org/chromium/chrome/test/util/FullscreenTestUtils.java
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/FullscreenTestUtils.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/FullscreenTestUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..88839c70010d3076d342a5266dd73337b487505d
--- /dev/null
+++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/FullscreenTestUtils.java
@@ -0,0 +1,112 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.test.util;
+
+import android.app.Activity;
+import android.os.Build;
+import android.view.View;
+import android.view.WindowManager;
+
+import org.chromium.base.ThreadUtils;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tab.TabWebContentsDelegateAndroid;
+import org.chromium.content.browser.test.util.Criteria;
+import org.chromium.content.browser.test.util.CriteriaHelper;
+
+/**
+ * Static methods for use in tests that require toggling persistent fullscreen.
+ */
+public class FullscreenTestUtils {
+
+ /**
+ * Toggles persistent fullscreen for the tab and waits for the fullscreen flag to be set and the
+ * tab to enter persistent fullscreen state.
+ *
+ * @param tab The {@link Tab} to toggle fullscreen on.
+ * @param state Whether the tab should be set to fullscreen.
+ * @param activity The {@link Activity} owning the tab.
+ * @throws InterruptedException
+ */
+ public static void togglePersistentFullscreenAndAssert(final Tab tab, final boolean state,
+ Activity activity) throws InterruptedException {
+ final TabWebContentsDelegateAndroid delegate = tab.getTabWebContentsDelegateAndroid();
+ FullscreenTestUtils.togglePersistentFullscreen(delegate, state);
+ FullscreenTestUtils.waitForFullscreenFlag(tab, state, activity);
+ FullscreenTestUtils.waitForPersistentFullscreen(delegate, state);
+ }
+
+ /**
+ * Toggles persistent fullscreen for the tab.
+ *
+ * @param delegate The {@link TabWebContentsDelegateAndroid} for the tab.
+ * @param state Whether the tab should be set to fullscreen.
+ */
+ public static void togglePersistentFullscreen(final TabWebContentsDelegateAndroid delegate,
+ final boolean state) {
+ ThreadUtils.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ delegate.toggleFullscreenModeForTab(state);
+ }
+ });
+ }
+
+ /**
+ * Waits for the fullscreen flag to be set on the specified {@link Tab}.
+ *
+ * @param tab The {@link Tab} that is expected to have the flag set.
+ * @param state Whether the tab should be to fullscreen.
+ * @param activity The {@link Activity} owning the tab.
+ * @throws InterruptedException
+ */
+ public static void waitForFullscreenFlag(final Tab tab, final boolean state,
+ final Activity activity) throws InterruptedException {
+ CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ return isFullscreenFlagSet(tab, state, activity);
+ }
+ });
+ }
+
+ /**
+ * Waits for the specified {@link Tab} to enter fullscreen. mode
+ *
+ * @param delegate The {@link TabWebContentsDelegateAndroid} for the tab.
+ * @param state Whether the tab should be set to fullscreen.
+ * @throws InterruptedException
+ */
+ public static void waitForPersistentFullscreen(final TabWebContentsDelegateAndroid delegate,
+ final boolean state) throws InterruptedException {
+ CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ return state == delegate.isFullscreenForTabOrPending();
+ }
+ });
+ }
+
+ private static boolean isFlagSet(int flags, int flag) {
+ return (flags & flag) == flag;
+ }
+
+ private static boolean isFullscreenFlagSet(final Tab tab, final boolean state,
+ Activity activity) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
+ View view = tab.getContentViewCore().getContainerView();
+ int visibility = view.getSystemUiVisibility();
+ // SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN should only be used during the transition between
+ // fullscreen states, so it should always be cleared when fullscreen transitions are
+ // completed.
+ return (!isFlagSet(visibility, View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN))
+ && (isFlagSet(visibility, View.SYSTEM_UI_FLAG_FULLSCREEN) == state);
+ } else {
+ WindowManager.LayoutParams attributes = activity.getWindow().getAttributes();
+ return isFlagSet(
+ attributes.flags, WindowManager.LayoutParams.FLAG_FULLSCREEN) == state;
+ }
+ }
+
+}
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/fullscreen/FullscreenManagerTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698