@SmallTest @Feature({"IntentHandling"}) public void testNavigationWithUninitializedUserInteractionTime() { // User interaction time could be uninitialized when a new document activity is opened after // clicking a link. In that case, the value is 0. final long uninitializedUserInteractionTime = 0; TabRedirectHandler handler = new TabRedirectHandler(mContext); assertFalse(handler.isOnNavigation()); handler.updateNewUrlLoading( PageTransition.LINK, false, true, uninitializedUserInteractionTime, TabRedirectHandler.INVALID_ENTRY_INDEX); assertTrue(handler.isOnNavigation()); assertEquals( TabRedirectHandler.INVALID_ENTRY_INDEX, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); }
@SmallTest @Feature({"IntentHandling"}) public void testNoIntent() { TabRedirectHandler handler = new TabRedirectHandler(mContext); handler.updateIntent(null); assertFalse(handler.isOnNavigation()); handler.updateNewUrlLoading(TRANS_TYPE_OF_LINK_FROM_INTENT, false, false, 0, 0); assertFalse(handler.isOnEffectiveIntentRedirectChain()); handler.updateNewUrlLoading(TRANS_TYPE_OF_LINK_FROM_INTENT, true, false, 0, 0); assertFalse(handler.isOnEffectiveIntentRedirectChain()); assertTrue(handler.hasNewResolver(sMoblieYtIntent)); assertTrue(handler.hasNewResolver(sFooIntent)); assertFalse(handler.hasNewResolver(null)); assertTrue(handler.isOnNavigation()); assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); }
@SmallTest @Feature({"IntentHandling"}) public void testNavigationWithForwardBack() { TabRedirectHandler handler = new TabRedirectHandler(mContext); handler.updateIntent(sYtIntent); assertFalse(handler.isOnNavigation()); assertFalse(handler.shouldStayInChrome(false)); assertFalse(handler.shouldStayInChrome(true)); handler.updateNewUrlLoading( PageTransition.FORM_SUBMIT | PageTransition.FORWARD_BACK, false, true, SystemClock.elapsedRealtime(), 0); assertTrue(handler.shouldStayInChrome(false)); assertTrue(handler.shouldStayInChrome(true)); handler.updateNewUrlLoading( PageTransition.LINK, false, false, SystemClock.elapsedRealtime(), 1); assertTrue(handler.shouldStayInChrome(false)); assertTrue(handler.shouldStayInChrome(true)); assertTrue(handler.isOnNavigation()); assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); SystemClock.sleep(1); handler.updateNewUrlLoading(PageTransition.LINK, false, true, SystemClock.elapsedRealtime(), 2); assertFalse(handler.shouldStayInChrome(false)); assertFalse(handler.shouldStayInChrome(true)); assertTrue(handler.isOnNavigation()); assertEquals(2, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); }
@SmallTest @Feature({"IntentHandling"}) public void testRedirectFromCurrentNavigationShouldNotOverrideUrlLoading() { ///////////////////////////////////////////////////// // 1. 3XX redirection should not override URL loading. ///////////////////////////////////////////////////// TabRedirectHandler handler = new TabRedirectHandler(mContext); handler.updateIntent(sYtIntent); assertFalse(handler.shouldNotOverrideUrlLoading()); handler.updateNewUrlLoading(PageTransition.LINK, false, true, 0, 0); handler.setShouldNotOverrideUrlLoadingUntilNewUrlLoading(); handler.updateNewUrlLoading(PageTransition.LINK, true, false, 0, 0); assertTrue(handler.shouldNotOverrideUrlLoading()); assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); ///////////////////////////////////////////////////// // 2. Effective redirection should not override URL loading. ///////////////////////////////////////////////////// handler = new TabRedirectHandler(mContext); handler.updateIntent(sYtIntent); assertFalse(handler.shouldNotOverrideUrlLoading()); handler.updateNewUrlLoading(PageTransition.LINK, false, true, 0, 0); handler.setShouldNotOverrideUrlLoadingUntilNewUrlLoading(); // Effective redirection occurred. handler.updateNewUrlLoading(PageTransition.LINK, false, false, 0, 1); assertTrue(handler.shouldNotOverrideUrlLoading()); assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); ///////////////////////////////////////////////////// // 3. New URL loading should not be affected. ///////////////////////////////////////////////////// SystemClock.sleep(1); handler.updateNewUrlLoading(PageTransition.LINK, false, true, SystemClock.elapsedRealtime(), 2); assertFalse(handler.shouldNotOverrideUrlLoading()); assertEquals(2, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); }
@SmallTest @Feature({"IntentHandling"}) public void testIntentHavingChromePackageName() { TabRedirectHandler handler = new TabRedirectHandler(mContext); Intent fooIntent = new Intent(sFooIntent); fooIntent.setPackage(TEST_PACKAGE_NAME); handler.updateIntent(fooIntent); assertFalse(handler.isOnNavigation()); assertTrue(handler.shouldStayInChrome(false)); assertFalse(handler.shouldStayInChrome(true)); handler.updateNewUrlLoading(TRANS_TYPE_OF_LINK_FROM_INTENT, false, false, 0, 0); assertTrue(handler.shouldStayInChrome(false)); assertFalse(handler.shouldStayInChrome(true)); handler.updateNewUrlLoading(PageTransition.LINK, false, false, 0, 1); assertTrue(handler.shouldStayInChrome(false)); assertFalse(handler.shouldStayInChrome(true)); assertTrue(handler.isOnNavigation()); assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); SystemClock.sleep(1); handler.updateNewUrlLoading(PageTransition.LINK, false, true, SystemClock.elapsedRealtime(), 2); assertFalse(handler.shouldStayInChrome(false)); assertFalse(handler.shouldStayInChrome(true)); assertTrue(handler.isOnNavigation()); assertEquals(2, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); }
@SmallTest @Feature({"IntentHandling"}) public void testNavigationFromUserTyping() { TabRedirectHandler handler = new TabRedirectHandler(mContext); handler.updateIntent(sYtIntent); assertFalse(handler.isOnNavigation()); assertFalse(handler.isNavigationFromUserTyping()); handler.updateNewUrlLoading(PageTransition.TYPED, false, false, 0, 0); assertTrue(handler.isNavigationFromUserTyping()); handler.updateNewUrlLoading(PageTransition.LINK, false, false, 0, 1); assertTrue(handler.isNavigationFromUserTyping()); assertTrue(handler.isOnNavigation()); assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); SystemClock.sleep(1); handler.updateNewUrlLoading(PageTransition.LINK, false, true, SystemClock.elapsedRealtime(), 2); assertFalse(handler.isNavigationFromUserTyping()); assertTrue(handler.isOnNavigation()); assertEquals(2, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); }
@SmallTest @Feature({"IntentHandling"}) public void testUserInteraction() { TabRedirectHandler handler = new TabRedirectHandler(mContext); handler.updateIntent(sYtIntent); assertFalse(handler.isOnNavigation()); handler.updateNewUrlLoading(TRANS_TYPE_OF_LINK_FROM_INTENT, false, false, 0, 0); assertFalse(handler.isOnEffectiveIntentRedirectChain()); handler.updateNewUrlLoading(TRANS_TYPE_OF_LINK_FROM_INTENT, true, false, 0, 0); assertTrue(handler.isOnEffectiveIntentRedirectChain()); assertFalse(handler.hasNewResolver(sMoblieYtIntent)); assertTrue(handler.isOnNavigation()); assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); SystemClock.sleep(1); handler.updateNewUrlLoading(PageTransition.LINK, false, true, SystemClock.elapsedRealtime(), 1); assertFalse(handler.isOnEffectiveIntentRedirectChain()); assertTrue(handler.hasNewResolver(sMoblieYtIntent)); assertTrue(handler.hasNewResolver(sFooIntent)); assertFalse(handler.hasNewResolver(null)); assertTrue(handler.isOnNavigation()); assertEquals(1, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); }
@SmallTest @Feature({"IntentHandling"}) public void testNonLinkFromIntent() { TabRedirectHandler handler = new TabRedirectHandler(mContext); handler.updateIntent(sYtIntent); assertFalse(handler.isOnNavigation()); handler.updateNewUrlLoading(PageTransition.FORM_SUBMIT, false, false, 0, 0); assertFalse(handler.isOnEffectiveIntentRedirectChain()); handler.updateNewUrlLoading(PageTransition.LINK, false, false, 0, 1); assertFalse(handler.isOnEffectiveIntentRedirectChain()); assertTrue(handler.hasNewResolver(sMoblieYtIntent)); assertTrue(handler.hasNewResolver(sFooIntent)); assertFalse(handler.hasNewResolver(null)); assertTrue(handler.isOnNavigation()); assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); }