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

Side by Side Diff: chrome/android/junit/src/org/chromium/chrome/browser/fullscreen/BrowserStateBrowserControlsVisibilityDelegateTest.java

Issue 2647943002: Fix fullscreen browser overrides when no tab is present. (Closed)
Patch Set: Created 3 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 unified diff | Download patch
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.fullscreen; 5 package org.chromium.chrome.browser.fullscreen;
6 6
7 import static org.junit.Assert.assertFalse; 7 import static org.junit.Assert.assertFalse;
8 import static org.junit.Assert.assertTrue; 8 import static org.junit.Assert.assertTrue;
9 import static org.mockito.Mockito.times; 9 import static org.mockito.Mockito.times;
10 import static org.mockito.Mockito.verify; 10 import static org.mockito.Mockito.verify;
11 11
12 import static org.chromium.chrome.browser.fullscreen.BrowserStateBrowserControls VisibilityDelegate.MINIMUM_SHOW_DURATION_MS; 12 import static org.chromium.chrome.browser.fullscreen.BrowserStateBrowserControls VisibilityDelegate.MINIMUM_SHOW_DURATION_MS;
13 13
14 import org.junit.Before; 14 import org.junit.Before;
15 import org.junit.Test; 15 import org.junit.Test;
16 import org.junit.runner.RunWith; 16 import org.junit.runner.RunWith;
17 import org.mockito.Mock; 17 import org.mockito.Mock;
18 import org.mockito.MockitoAnnotations; 18 import org.mockito.MockitoAnnotations;
19 import org.robolectric.annotation.Config; 19 import org.robolectric.annotation.Config;
20 import org.robolectric.shadows.ShadowLooper; 20 import org.robolectric.shadows.ShadowLooper;
21 import org.robolectric.shadows.ShadowSystemClock; 21 import org.robolectric.shadows.ShadowSystemClock;
22 22
23 import org.chromium.base.test.util.Feature; 23 import org.chromium.base.test.util.Feature;
24 import org.chromium.chrome.browser.tab.Tab;
25 import org.chromium.testing.local.LocalRobolectricTestRunner; 24 import org.chromium.testing.local.LocalRobolectricTestRunner;
26 25
27 /** 26 /**
28 * Unit tests for the BrowserStateBrowserControlsVisibilityDelegate. 27 * Unit tests for the BrowserStateBrowserControlsVisibilityDelegate.
29 */ 28 */
30 @RunWith(LocalRobolectricTestRunner.class) 29 @RunWith(LocalRobolectricTestRunner.class)
31 @Config(manifest = Config.NONE) 30 @Config(manifest = Config.NONE)
32 public class BrowserStateBrowserControlsVisibilityDelegateTest { 31 public class BrowserStateBrowserControlsVisibilityDelegateTest {
33 @Mock private Tab mTab; 32 @Mock private Runnable mCallback;
34 33
35 private BrowserStateBrowserControlsVisibilityDelegate mDelegate; 34 private BrowserStateBrowserControlsVisibilityDelegate mDelegate;
36 35
37 @Before 36 @Before
38 public void beforeTest() { 37 public void beforeTest() {
39 MockitoAnnotations.initMocks(this); 38 MockitoAnnotations.initMocks(this);
40 39
41 mDelegate = new BrowserStateBrowserControlsVisibilityDelegate(); 40 mDelegate = new BrowserStateBrowserControlsVisibilityDelegate(mCallback) ;
42 mDelegate.setTab(mTab);
43 } 41 }
44 42
45 private void advanceTime(long amount) { 43 private void advanceTime(long amount) {
46 ShadowSystemClock.setCurrentTimeMillis(ShadowSystemClock.elapsedRealtime () + amount); 44 ShadowSystemClock.setCurrentTimeMillis(ShadowSystemClock.elapsedRealtime () + amount);
47 } 45 }
48 46
49 @Test 47 @Test
50 @Feature("Fullscreen") 48 @Feature("Fullscreen")
51 public void testTransientShow() { 49 public void testTransientShow() {
52 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 50 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
53 mDelegate.showControlsTransient(); 51 mDelegate.showControlsTransient();
54 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 52 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
55 53
56 ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); 54 ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
57 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 55 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
58 56
59 verify(mTab, times(2)).updateFullscreenEnabledState(); 57 verify(mCallback, times(2)).run();
60 } 58 }
61 59
62 @Test 60 @Test
63 @Feature("Fullscreen") 61 @Feature("Fullscreen")
64 public void testShowPersistentTokenWithDelayedHide() { 62 public void testShowPersistentTokenWithDelayedHide() {
65 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 63 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
66 int token = mDelegate.showControlsPersistent(); 64 int token = mDelegate.showControlsPersistent();
67 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 65 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
68 // Advance the clock to exceed the minimum show time. 66 // Advance the clock to exceed the minimum show time.
69 advanceTime(2 * MINIMUM_SHOW_DURATION_MS); 67 advanceTime(2 * MINIMUM_SHOW_DURATION_MS);
70 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 68 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
71 mDelegate.hideControlsPersistent(token); 69 mDelegate.hideControlsPersistent(token);
72 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 70 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
73 71
74 verify(mTab, times(2)).updateFullscreenEnabledState(); 72 verify(mCallback, times(2)).run();
75 } 73 }
76 74
77 @Test 75 @Test
78 @Feature("Fullscreen") 76 @Feature("Fullscreen")
79 public void testShowPersistentTokenWithImmediateHide() { 77 public void testShowPersistentTokenWithImmediateHide() {
80 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 78 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
81 int token = mDelegate.showControlsPersistent(); 79 int token = mDelegate.showControlsPersistent();
82 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 80 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
83 mDelegate.hideControlsPersistent(token); 81 mDelegate.hideControlsPersistent(token);
84 82
85 // If the controls are not shown for the mimimum allowed time, then a ta sk is posted to 83 // If the controls are not shown for the mimimum allowed time, then a ta sk is posted to
86 // keep them shown for longer. Ensure the controls can not be hidden un til this delayed 84 // keep them shown for longer. Ensure the controls can not be hidden un til this delayed
87 // task has been run. 85 // task has been run.
88 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 86 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
89 ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); 87 ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
90 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 88 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
91 89
92 verify(mTab, times(2)).updateFullscreenEnabledState(); 90 verify(mCallback, times(2)).run();
93 } 91 }
94 92
95 @Test 93 @Test
96 @Feature("Fullscreen") 94 @Feature("Fullscreen")
97 public void testShowPersistentBeyondRequiredMinDurationAndShowTransient() { 95 public void testShowPersistentBeyondRequiredMinDurationAndShowTransient() {
98 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 96 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
99 int token = mDelegate.showControlsPersistent(); 97 int token = mDelegate.showControlsPersistent();
100 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 98 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
101 99
102 // Advance the clock to exceed the minimum show time. 100 // Advance the clock to exceed the minimum show time.
103 advanceTime(2 * MINIMUM_SHOW_DURATION_MS); 101 advanceTime(2 * MINIMUM_SHOW_DURATION_MS);
104 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 102 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
105 // At this point, the controls have been shown long enough that the tran sient request will 103 // At this point, the controls have been shown long enough that the tran sient request will
106 // be a no-op. 104 // be a no-op.
107 mDelegate.showControlsTransient(); 105 mDelegate.showControlsTransient();
108 mDelegate.hideControlsPersistent(token); 106 mDelegate.hideControlsPersistent(token);
109 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 107 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
110 108
111 verify(mTab, times(2)).updateFullscreenEnabledState(); 109 verify(mCallback, times(2)).run();
112 } 110 }
113 111
114 @Test 112 @Test
115 @Feature("Fullscreen") 113 @Feature("Fullscreen")
116 public void testShowPersistentBelowRequiredMinDurationAndShowTransient() { 114 public void testShowPersistentBelowRequiredMinDurationAndShowTransient() {
117 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 115 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
118 int token = mDelegate.showControlsPersistent(); 116 int token = mDelegate.showControlsPersistent();
119 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 117 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
120 118
121 // Advance the clock but not beyond the min show duration. 119 // Advance the clock but not beyond the min show duration.
122 advanceTime((long) (0.5 * MINIMUM_SHOW_DURATION_MS)); 120 advanceTime((long) (0.5 * MINIMUM_SHOW_DURATION_MS));
123 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 121 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
124 // At this point, the controls have not been shown long enough, so the t ransient request 122 // At this point, the controls have not been shown long enough, so the t ransient request
125 // will delay the ability to hide. 123 // will delay the ability to hide.
126 mDelegate.showControlsTransient(); 124 mDelegate.showControlsTransient();
127 mDelegate.hideControlsPersistent(token); 125 mDelegate.hideControlsPersistent(token);
128 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 126 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
129 127
130 // Run the pending tasks on the UI thread, which will include the transi ent delayed task. 128 // Run the pending tasks on the UI thread, which will include the transi ent delayed task.
131 ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); 129 ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
132 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 130 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
133 131
134 verify(mTab, times(2)).updateFullscreenEnabledState(); 132 verify(mCallback, times(2)).run();
135 } 133 }
136 134
137 @Test 135 @Test
138 @Feature("Fullscreen") 136 @Feature("Fullscreen")
139 public void testShowPersistentMultipleTimes() { 137 public void testShowPersistentMultipleTimes() {
140 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 138 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
141 int firstToken = mDelegate.showControlsPersistent(); 139 int firstToken = mDelegate.showControlsPersistent();
142 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 140 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
143 141
144 int secondToken = mDelegate.showControlsPersistent(); 142 int secondToken = mDelegate.showControlsPersistent();
145 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 143 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
146 144
147 int thirdToken = mDelegate.showControlsPersistent(); 145 int thirdToken = mDelegate.showControlsPersistent();
148 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 146 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
149 147
150 // Advance the clock to exceed the minimum show time. 148 // Advance the clock to exceed the minimum show time.
151 advanceTime(2 * MINIMUM_SHOW_DURATION_MS); 149 advanceTime(2 * MINIMUM_SHOW_DURATION_MS);
152 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 150 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
153 151
154 mDelegate.hideControlsPersistent(secondToken); 152 mDelegate.hideControlsPersistent(secondToken);
155 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 153 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
156 mDelegate.hideControlsPersistent(firstToken); 154 mDelegate.hideControlsPersistent(firstToken);
157 assertFalse(mDelegate.isHidingBrowserControlsEnabled()); 155 assertFalse(mDelegate.isHidingBrowserControlsEnabled());
158 mDelegate.hideControlsPersistent(thirdToken); 156 mDelegate.hideControlsPersistent(thirdToken);
159 assertTrue(mDelegate.isHidingBrowserControlsEnabled()); 157 assertTrue(mDelegate.isHidingBrowserControlsEnabled());
160 158
161 verify(mTab, times(2)).updateFullscreenEnabledState(); 159 verify(mCallback, times(2)).run();
162 } 160 }
163 } 161 }
OLDNEW
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698