OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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.dom_distiller; | 5 package org.chromium.chrome.browser.dom_distiller; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.support.test.InstrumentationRegistry; |
| 9 import android.support.test.annotation.UiThreadTest; |
8 import android.support.test.filters.SmallTest; | 10 import android.support.test.filters.SmallTest; |
9 import android.test.InstrumentationTestCase; | 11 import android.support.test.rule.UiThreadTestRule; |
| 12 |
| 13 import org.junit.Assert; |
| 14 import org.junit.Before; |
| 15 import org.junit.Rule; |
| 16 import org.junit.Test; |
| 17 import org.junit.runner.RunWith; |
10 | 18 |
11 import org.chromium.base.test.util.Feature; | 19 import org.chromium.base.test.util.Feature; |
12 import org.chromium.base.test.util.RetryOnFailure; | 20 import org.chromium.base.test.util.RetryOnFailure; |
13 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChange
Reason; | 21 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChange
Reason; |
14 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelContent; | 22 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelContent; |
15 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManager; | 23 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManager; |
16 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManagerWrapp
er; | 24 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManagerWrapp
er; |
17 import org.chromium.chrome.browser.compositor.bottombar.readermode.ReaderModeBar
Control; | 25 import org.chromium.chrome.browser.compositor.bottombar.readermode.ReaderModeBar
Control; |
18 import org.chromium.chrome.browser.compositor.bottombar.readermode.ReaderModePan
el; | 26 import org.chromium.chrome.browser.compositor.bottombar.readermode.ReaderModePan
el; |
19 import org.chromium.chrome.browser.compositor.scene_layer.ReaderModeSceneLayer; | 27 import org.chromium.chrome.browser.compositor.scene_layer.ReaderModeSceneLayer; |
20 import org.chromium.chrome.browser.tab.Tab; | 28 import org.chromium.chrome.browser.tab.Tab; |
| 29 import org.chromium.chrome.test.ChromeJUnit4ClassRunner; |
21 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModel.MockTabModelD
elegate; | 30 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModel.MockTabModelD
elegate; |
22 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModelSelector; | 31 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModelSelector; |
23 import org.chromium.content_public.browser.WebContents; | 32 import org.chromium.content_public.browser.WebContents; |
24 import org.chromium.content_public.browser.WebContentsObserver; | 33 import org.chromium.content_public.browser.WebContentsObserver; |
25 | 34 |
26 /** | 35 /** |
27 * Tests logic in the ReaderModeManager. | 36 * Tests logic in the ReaderModeManager. |
28 */ | 37 */ |
29 public class ReaderModeManagerTest extends InstrumentationTestCase { | 38 @RunWith(ChromeJUnit4ClassRunner.class) |
30 | 39 public class ReaderModeManagerTest { |
31 OverlayPanelManagerWrapper mPanelManager; | 40 OverlayPanelManagerWrapper mPanelManager; |
32 ReaderModeManagerWrapper mReaderManager; | 41 ReaderModeManagerWrapper mReaderManager; |
33 MockReaderModePanel mPanel; | 42 MockReaderModePanel mPanel; |
34 ReaderModeMockTabModelSelector mTabModelSelector; | 43 ReaderModeMockTabModelSelector mTabModelSelector; |
35 | 44 |
| 45 @Rule |
| 46 public UiThreadTestRule mRule = new UiThreadTestRule(); |
| 47 |
36 /** | 48 /** |
37 * A mock TabModelSelector for creating tabs. | 49 * A mock TabModelSelector for creating tabs. |
38 */ | 50 */ |
39 private static class ReaderModeMockTabModelSelector extends MockTabModelSele
ctor { | 51 private static class ReaderModeMockTabModelSelector extends MockTabModelSele
ctor { |
40 public ReaderModeMockTabModelSelector() { | 52 public ReaderModeMockTabModelSelector() { |
41 super(2, 0, | 53 super(2, 0, |
42 new MockTabModelDelegate() { | 54 new MockTabModelDelegate() { |
43 @Override | 55 @Override |
44 public Tab createTab(int id, boolean incognito) { | 56 public Tab createTab(int id, boolean incognito) { |
45 return new Tab(id, incognito, null); | 57 return new Tab(id, incognito, null); |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 private static class MockOverlayPanelContent extends OverlayPanelContent
{ | 171 private static class MockOverlayPanelContent extends OverlayPanelContent
{ |
160 public MockOverlayPanelContent() { | 172 public MockOverlayPanelContent() { |
161 super(null, null, null); | 173 super(null, null, null); |
162 } | 174 } |
163 | 175 |
164 @Override | 176 @Override |
165 public void removeLastHistoryEntry(String url, long timeInMs) {} | 177 public void removeLastHistoryEntry(String url, long timeInMs) {} |
166 } | 178 } |
167 } | 179 } |
168 | 180 |
169 @Override | 181 @Before |
170 protected void setUp() throws Exception { | 182 public void setUp() throws Exception { |
171 super.setUp(); | |
172 mPanelManager = new OverlayPanelManagerWrapper(); | 183 mPanelManager = new OverlayPanelManagerWrapper(); |
173 mTabModelSelector = new ReaderModeMockTabModelSelector(); | 184 mTabModelSelector = new ReaderModeMockTabModelSelector(); |
174 mReaderManager = new ReaderModeManagerWrapper(mTabModelSelector); | 185 mReaderManager = new ReaderModeManagerWrapper(mTabModelSelector); |
175 mPanel = new MockReaderModePanel(getInstrumentation().getTargetContext()
, mPanelManager); | 186 mPanel = new MockReaderModePanel( |
| 187 InstrumentationRegistry.getInstrumentation().getTargetContext(),
mPanelManager); |
176 mReaderManager.setReaderModePanel(mPanel); | 188 mReaderManager.setReaderModePanel(mPanel); |
177 mPanel.setManagerDelegate(mReaderManager); | 189 mPanel.setManagerDelegate(mReaderManager); |
178 } | 190 } |
179 | 191 |
180 // Start ReaderModeManager test suite. | 192 // Start ReaderModeManager test suite. |
181 | 193 |
182 /** | 194 /** |
183 * Tests that the panel behaves appropriately with infobar events. | 195 * Tests that the panel behaves appropriately with infobar events. |
184 */ | 196 */ |
| 197 @Test |
185 @SmallTest | 198 @SmallTest |
186 @Feature({"ReaderModeManager"}) | 199 @Feature({"ReaderModeManager"}) |
| 200 @UiThreadTest |
187 @RetryOnFailure | 201 @RetryOnFailure |
188 public void testInfoBarEvents() { | 202 public void testInfoBarEvents() { |
189 mPanel.requestPanelShow(StateChangeReason.UNKNOWN); | 203 mPanel.requestPanelShow(StateChangeReason.UNKNOWN); |
190 | 204 |
191 mReaderManager.onAddInfoBar(null, null, true); | 205 mReaderManager.onAddInfoBar(null, null, true); |
192 assertEquals(1, mPanelManager.getRequestPanelShowCount()); | 206 Assert.assertEquals(1, mPanelManager.getRequestPanelShowCount()); |
193 assertEquals(1, mPanelManager.getPanelHideCount()); | 207 Assert.assertEquals(1, mPanelManager.getPanelHideCount()); |
194 | 208 |
195 mReaderManager.onRemoveInfoBar(null, null, true); | 209 mReaderManager.onRemoveInfoBar(null, null, true); |
196 assertEquals(2, mPanelManager.getRequestPanelShowCount()); | 210 Assert.assertEquals(2, mPanelManager.getRequestPanelShowCount()); |
197 assertEquals(1, mPanelManager.getPanelHideCount()); | 211 Assert.assertEquals(1, mPanelManager.getPanelHideCount()); |
198 } | 212 } |
199 | 213 |
200 /** | 214 /** |
201 * Tests that the panel behaves appropriately with fullscreen events. | 215 * Tests that the panel behaves appropriately with fullscreen events. |
202 */ | 216 */ |
| 217 @Test |
203 @SmallTest | 218 @SmallTest |
204 @Feature({"ReaderModeManager"}) | 219 @Feature({"ReaderModeManager"}) |
| 220 @UiThreadTest |
205 @RetryOnFailure | 221 @RetryOnFailure |
206 public void testFullscreenEvents() { | 222 public void testFullscreenEvents() { |
207 mPanel.requestPanelShow(StateChangeReason.UNKNOWN); | 223 mPanel.requestPanelShow(StateChangeReason.UNKNOWN); |
208 | 224 |
209 mReaderManager.onToggleFullscreenMode(null, true); | 225 mReaderManager.onToggleFullscreenMode(null, true); |
210 assertEquals(1, mPanelManager.getRequestPanelShowCount()); | 226 Assert.assertEquals(1, mPanelManager.getRequestPanelShowCount()); |
211 assertEquals(1, mPanelManager.getPanelHideCount()); | 227 Assert.assertEquals(1, mPanelManager.getPanelHideCount()); |
212 | 228 |
213 mReaderManager.onToggleFullscreenMode(null, false); | 229 mReaderManager.onToggleFullscreenMode(null, false); |
214 assertEquals(2, mPanelManager.getRequestPanelShowCount()); | 230 Assert.assertEquals(2, mPanelManager.getRequestPanelShowCount()); |
215 assertEquals(1, mPanelManager.getPanelHideCount()); | 231 Assert.assertEquals(1, mPanelManager.getPanelHideCount()); |
216 } | 232 } |
217 | 233 |
218 /** | 234 /** |
219 * Tests that the metric that tracks when the panel is visible is correctly
recorded. | 235 * Tests that the metric that tracks when the panel is visible is correctly
recorded. |
220 */ | 236 */ |
| 237 @Test |
221 @SmallTest | 238 @SmallTest |
222 @Feature({"ReaderModeManager"}) | 239 @Feature({"ReaderModeManager"}) |
| 240 @UiThreadTest |
223 @RetryOnFailure | 241 @RetryOnFailure |
224 public void testPanelOpenRecorded() { | 242 public void testPanelOpenRecorded() { |
225 Tab tab = new Tab(0, false, null); | 243 Tab tab = new Tab(0, false, null); |
226 mReaderManager.onShown(tab); | 244 mReaderManager.onShown(tab); |
227 | 245 |
228 assertEquals(1, mReaderManager.getRecordedCount()); | 246 Assert.assertEquals(1, mReaderManager.getRecordedCount()); |
229 assertEquals(1, mReaderManager.getVisibleCount()); | 247 Assert.assertEquals(1, mReaderManager.getVisibleCount()); |
230 assertTrue(null != mReaderManager.getTabInfo(0)); | 248 Assert.assertTrue(null != mReaderManager.getTabInfo(0)); |
231 | 249 |
232 // Make sure recording the panel showing only occurs once per navigation
. | 250 // Make sure recording the panel showing only occurs once per navigation
. |
233 mReaderManager.onShown(tab); | 251 mReaderManager.onShown(tab); |
234 | 252 |
235 assertEquals(1, mReaderManager.getRecordedCount()); | 253 Assert.assertEquals(1, mReaderManager.getRecordedCount()); |
236 assertEquals(1, mReaderManager.getVisibleCount()); | 254 Assert.assertEquals(1, mReaderManager.getVisibleCount()); |
237 | 255 |
238 // Destroy shouldn't record either if the panel showed. | 256 // Destroy shouldn't record either if the panel showed. |
239 mReaderManager.onDestroyed(tab); | 257 mReaderManager.onDestroyed(tab); |
240 | 258 |
241 assertEquals(1, mReaderManager.getRecordedCount()); | 259 Assert.assertEquals(1, mReaderManager.getRecordedCount()); |
242 assertEquals(1, mReaderManager.getVisibleCount()); | 260 Assert.assertEquals(1, mReaderManager.getVisibleCount()); |
243 assertTrue(null == mReaderManager.getTabInfo(0)); | 261 Assert.assertTrue(null == mReaderManager.getTabInfo(0)); |
244 } | 262 } |
245 | 263 |
246 /** | 264 /** |
247 * Tests that a tab closing records the panel was not visible. | 265 * Tests that a tab closing records the panel was not visible. |
248 */ | 266 */ |
| 267 @Test |
249 @SmallTest | 268 @SmallTest |
250 @Feature({"ReaderModeManager"}) | 269 @Feature({"ReaderModeManager"}) |
| 270 @UiThreadTest |
251 @RetryOnFailure | 271 @RetryOnFailure |
252 public void testPanelCloseRecorded() { | 272 public void testPanelCloseRecorded() { |
253 Tab tab = new Tab(0, false, null); | 273 Tab tab = new Tab(0, false, null); |
254 mReaderManager.setShouldTrigger(false); | 274 mReaderManager.setShouldTrigger(false); |
255 mReaderManager.onShown(tab); | 275 mReaderManager.onShown(tab); |
256 mReaderManager.onDestroyed(tab); | 276 mReaderManager.onDestroyed(tab); |
257 | 277 |
258 assertEquals(1, mReaderManager.getRecordedCount()); | 278 Assert.assertEquals(1, mReaderManager.getRecordedCount()); |
259 assertEquals(0, mReaderManager.getVisibleCount()); | 279 Assert.assertEquals(0, mReaderManager.getVisibleCount()); |
260 assertTrue(null == mReaderManager.getTabInfo(0)); | 280 Assert.assertTrue(null == mReaderManager.getTabInfo(0)); |
261 } | 281 } |
262 | 282 |
263 // TODO(mdjones): Test add/remove infobar while fullscreen is enabled. | 283 // TODO(mdjones): Test add/remove infobar while fullscreen is enabled. |
264 // TODO(mdjones): Test onclosebuttonpressed disables Reader Mode for a parti
cular tab. | 284 // TODO(mdjones): Test onclosebuttonpressed disables Reader Mode for a parti
cular tab. |
265 // TODO(mdjones): Test onorientationchanged closes and re-opens panel. | 285 // TODO(mdjones): Test onorientationchanged closes and re-opens panel. |
266 // TODO(mdjones): Test tab events. | 286 // TODO(mdjones): Test tab events. |
267 // TODO(mdjones): Test distillability callback. | 287 // TODO(mdjones): Test distillability callback. |
268 } | 288 } |
OLD | NEW |