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.customtabs; | 5 package org.chromium.chrome.browser.customtabs; |
6 | 6 |
7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E
ND_DEVICE; | 7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E
ND_DEVICE; |
8 | 8 |
9 import android.app.Activity; | 9 import android.app.Activity; |
10 import android.app.Application; | 10 import android.app.Application; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 import org.chromium.chrome.browser.ChromeActivity; | 48 import org.chromium.chrome.browser.ChromeActivity; |
49 import org.chromium.chrome.browser.ChromeSwitches; | 49 import org.chromium.chrome.browser.ChromeSwitches; |
50 import org.chromium.chrome.browser.ChromeTabbedActivity; | 50 import org.chromium.chrome.browser.ChromeTabbedActivity; |
51 import org.chromium.chrome.browser.IntentHandler; | 51 import org.chromium.chrome.browser.IntentHandler; |
52 import org.chromium.chrome.browser.TabsOpenedFromExternalAppTest; | 52 import org.chromium.chrome.browser.TabsOpenedFromExternalAppTest; |
53 import org.chromium.chrome.browser.document.ChromeLauncherActivity; | 53 import org.chromium.chrome.browser.document.ChromeLauncherActivity; |
54 import org.chromium.chrome.browser.prerender.ExternalPrerenderHandler; | 54 import org.chromium.chrome.browser.prerender.ExternalPrerenderHandler; |
55 import org.chromium.chrome.browser.profiles.Profile; | 55 import org.chromium.chrome.browser.profiles.Profile; |
56 import org.chromium.chrome.browser.tab.EmptyTabObserver; | 56 import org.chromium.chrome.browser.tab.EmptyTabObserver; |
57 import org.chromium.chrome.browser.tab.Tab; | 57 import org.chromium.chrome.browser.tab.Tab; |
| 58 import org.chromium.chrome.browser.tab.TabObserver; |
58 import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver; | 59 import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver; |
59 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; | 60 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
60 import org.chromium.chrome.browser.tabmodel.TabModelSelector; | 61 import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
61 import org.chromium.chrome.browser.toolbar.CustomTabToolbar; | 62 import org.chromium.chrome.browser.toolbar.CustomTabToolbar; |
62 import org.chromium.chrome.browser.util.ColorUtils; | 63 import org.chromium.chrome.browser.util.ColorUtils; |
63 import org.chromium.chrome.test.util.ChromeRestriction; | 64 import org.chromium.chrome.test.util.ChromeRestriction; |
64 import org.chromium.chrome.test.util.browser.LocationSettingsTestUtil; | 65 import org.chromium.chrome.test.util.browser.LocationSettingsTestUtil; |
65 import org.chromium.chrome.test.util.browser.contextmenu.ContextMenuUtils; | 66 import org.chromium.chrome.test.util.browser.contextmenu.ContextMenuUtils; |
66 import org.chromium.content.browser.BrowserStartupController; | 67 import org.chromium.content.browser.BrowserStartupController; |
67 import org.chromium.content.browser.BrowserStartupController.StartupCallback; | 68 import org.chromium.content.browser.BrowserStartupController.StartupCallback; |
(...skipping 1154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1222 fail(); | 1223 fail(); |
1223 } | 1224 } |
1224 return connection; | 1225 return connection; |
1225 } | 1226 } |
1226 | 1227 |
1227 private ChromeActivity reparentAndVerifyTab() throws InterruptedException { | 1228 private ChromeActivity reparentAndVerifyTab() throws InterruptedException { |
1228 ActivityResult result = null; | 1229 ActivityResult result = null; |
1229 final ActivityMonitor monitor = getInstrumentation().addMonitor( | 1230 final ActivityMonitor monitor = getInstrumentation().addMonitor( |
1230 ChromeTabbedActivity.class.getName(), result, false); | 1231 ChromeTabbedActivity.class.getName(), result, false); |
1231 final Tab tabToBeReparented = mActivity.getActivityTab(); | 1232 final Tab tabToBeReparented = mActivity.getActivityTab(); |
| 1233 final CallbackHelper tabHiddenHelper = new CallbackHelper(); |
| 1234 TabObserver observer = new EmptyTabObserver() { |
| 1235 @Override |
| 1236 public void onHidden(Tab tab) { |
| 1237 tabHiddenHelper.notifyCalled(); |
| 1238 } |
| 1239 }; |
| 1240 tabToBeReparented.addObserver(observer); |
1232 ThreadUtils.postOnUiThread(new Runnable() { | 1241 ThreadUtils.postOnUiThread(new Runnable() { |
1233 @Override | 1242 @Override |
1234 public void run() { | 1243 public void run() { |
1235 mActivity.openCurrentUrlInBrowser(true); | 1244 mActivity.openCurrentUrlInBrowser(true); |
1236 assertNull(mActivity.getActivityTab()); | 1245 assertNull(mActivity.getActivityTab()); |
1237 } | 1246 } |
1238 }); | 1247 }); |
1239 CriteriaHelper.pollInstrumentationThread(new Criteria() { | 1248 CriteriaHelper.pollInstrumentationThread(new Criteria() { |
1240 @Override | 1249 @Override |
1241 public boolean isSatisfied() { | 1250 public boolean isSatisfied() { |
(...skipping 12 matching lines...) Expand all Loading... |
1254 CriteriaHelper.pollUiThread((new Criteria() { | 1263 CriteriaHelper.pollUiThread((new Criteria() { |
1255 @Override | 1264 @Override |
1256 public boolean isSatisfied() { | 1265 public boolean isSatisfied() { |
1257 return mActivity.isActivityDestroyed(); | 1266 return mActivity.isActivityDestroyed(); |
1258 } | 1267 } |
1259 })); | 1268 })); |
1260 assertEquals(newActivity.getWindowAndroid(), tabToBeReparented.getWindow
Android()); | 1269 assertEquals(newActivity.getWindowAndroid(), tabToBeReparented.getWindow
Android()); |
1261 assertEquals(newActivity.getWindowAndroid(), | 1270 assertEquals(newActivity.getWindowAndroid(), |
1262 tabToBeReparented.getContentViewCore().getWindowAndroid()); | 1271 tabToBeReparented.getContentViewCore().getWindowAndroid()); |
1263 assertFalse(tabToBeReparented.getDelegateFactory() instanceof CustomTabD
elegateFactory); | 1272 assertFalse(tabToBeReparented.getDelegateFactory() instanceof CustomTabD
elegateFactory); |
| 1273 assertEquals("The tab should never be hidden during the reparenting proc
ess", |
| 1274 0, tabHiddenHelper.getCallCount()); |
| 1275 tabToBeReparented.removeObserver(observer); |
1264 return newActivity; | 1276 return newActivity; |
1265 } | 1277 } |
1266 | 1278 |
1267 private IBinder warmUpAndLaunchUrlWithSession(ICustomTabsCallback cb) | 1279 private IBinder warmUpAndLaunchUrlWithSession(ICustomTabsCallback cb) |
1268 throws InterruptedException { | 1280 throws InterruptedException { |
1269 CustomTabsConnection connection = warmUpAndWait(); | 1281 CustomTabsConnection connection = warmUpAndWait(); |
1270 connection.newSession(cb); | 1282 connection.newSession(cb); |
1271 Context context = getInstrumentation().getTargetContext().getApplication
Context(); | 1283 Context context = getInstrumentation().getTargetContext().getApplication
Context(); |
1272 startCustomTabActivityWithIntent(CustomTabsTestUtils.createMinimalCustom
TabIntent( | 1284 startCustomTabActivityWithIntent(CustomTabsTestUtils.createMinimalCustom
TabIntent( |
1273 context, mTestPage, cb.asBinder())); | 1285 context, mTestPage, cb.asBinder())); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1348 if (jsonText.equalsIgnoreCase("null")) jsonText = ""; | 1360 if (jsonText.equalsIgnoreCase("null")) jsonText = ""; |
1349 value = jsonText; | 1361 value = jsonText; |
1350 } catch (InterruptedException | TimeoutException e) { | 1362 } catch (InterruptedException | TimeoutException e) { |
1351 e.printStackTrace(); | 1363 e.printStackTrace(); |
1352 return false; | 1364 return false; |
1353 } | 1365 } |
1354 return TextUtils.equals(mExpected, value); | 1366 return TextUtils.equals(mExpected, value); |
1355 } | 1367 } |
1356 } | 1368 } |
1357 } | 1369 } |
OLD | NEW |