aboutsummaryrefslogtreecommitdiff
path: root/tests/android_support_car_api_test
diff options
context:
space:
mode:
authorVitalii Tomkiv <vitalit@google.com>2016-10-04 14:08:56 -0700
committerVitalii Tomkiv <vitalit@google.com>2016-10-04 18:04:10 -0700
commitd15d88777f07265b258f637e4967942d98bd6333 (patch)
treeaf0c12da14bcbdee5974fae1ad7699fea7b89dfa /tests/android_support_car_api_test
parentd72b53500006e84b0c69e650878267c693c164a3 (diff)
downloadCar-d15d88777f07265b258f637e4967942d98bd6333.tar.gz
Change CarAppFocusManager to be asynchronous
bug: 31867090 Test: run tests Change-Id: I5ea7719460ee29934efde8aa77c7a367bc86eb12
Diffstat (limited to 'tests/android_support_car_api_test')
-rw-r--r--tests/android_support_car_api_test/src/com/android/support/car/apitest/CarAppFocusManagerTest.java57
-rw-r--r--tests/android_support_car_api_test/src/com/android/support/car/apitest/CarNavigationStatusManagerTest.java17
2 files changed, 61 insertions, 13 deletions
diff --git a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarAppFocusManagerTest.java b/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarAppFocusManagerTest.java
index 6b5ec52eca..de66cbbefb 100644
--- a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarAppFocusManagerTest.java
+++ b/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarAppFocusManagerTest.java
@@ -36,7 +36,7 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
// Request all application focuses and abandon them to ensure no active context is present
// when test starts.
- FocusOwnershipLostListener owner = new FocusOwnershipLostListener();
+ FocusOwnershipCallback owner = new FocusOwnershipCallback();
mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner);
mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner);
mManager.abandonAppFocus(owner);
@@ -82,14 +82,17 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
FocusChangedListener change = new FocusChangedListener();
FocusChangedListener change2 = new FocusChangedListener();
- FocusOwnershipLostListener owner = new FocusOwnershipLostListener();
- FocusOwnershipLostListener owner2 = new FocusOwnershipLostListener();
+ FocusOwnershipCallback owner = new FocusOwnershipCallback();
+ FocusOwnershipCallback owner2 = new FocusOwnershipCallback();
mManager.addFocusListener(change, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
mManager.addFocusListener(change, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
manager2.addFocusListener(change2, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
manager2.addFocusListener(change2, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner);
+ assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
+ CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
+
assertTrue(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner));
assertFalse(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner));
assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2));
@@ -101,6 +104,8 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner);
+ assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
+ CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND));
assertTrue(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner));
assertTrue(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner));
assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2));
@@ -115,12 +120,18 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
change.reset();
change2.reset();
mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner);
+ assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
+ CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
+
assertFalse(change2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
assertFalse(change.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
manager2.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2);
+ assertTrue(owner2.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
+ CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
+
assertFalse(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner));
assertTrue(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner));
assertTrue(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2));
@@ -174,12 +185,15 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
FocusChangedListener listener = new FocusChangedListener();
FocusChangedListener listener2 = new FocusChangedListener();
- FocusOwnershipLostListener owner = new FocusOwnershipLostListener();
+ FocusOwnershipCallback owner = new FocusOwnershipCallback();
mManager.addFocusListener(listener, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
mManager.addFocusListener(listener, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
manager2.addFocusListener(listener2, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner);
+ assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
+ CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
+
assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
assertTrue(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
@@ -188,6 +202,9 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
listener.reset();
listener2.reset();
mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner);
+ assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
+ CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND));
+
assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, true));
assertFalse(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
@@ -213,12 +230,15 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
public void testMultipleChangeListenersPerManager() throws Exception {
FocusChangedListener listener = new FocusChangedListener();
FocusChangedListener listener2 = new FocusChangedListener();
- FocusOwnershipLostListener owner = new FocusOwnershipLostListener();
+ FocusOwnershipCallback owner = new FocusOwnershipCallback();
mManager.addFocusListener(listener, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
mManager.addFocusListener(listener, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
mManager.addFocusListener(listener2, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner);
+ assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
+ CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
+
assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
assertTrue(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
@@ -227,6 +247,9 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
listener.reset();
listener2.reset();
mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner);
+ assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
+ CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND));
+
assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, true));
assertFalse(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
@@ -279,11 +302,14 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
}
}
- private class FocusOwnershipLostListener
- implements CarAppFocusManager.OnAppFocusOwnershipLostListener {
+ private class FocusOwnershipCallback
+ implements CarAppFocusManager.OnAppFocusOwnershipCallback {
private int mLastLossEvent;
private final Semaphore mLossEventWait = new Semaphore(0);
+ private int mLastGrantEvent;
+ private final Semaphore mGrantEventWait = new Semaphore(0);
+
public boolean waitForOwnershipLossAndAssert(long timeoutMs, int expectedAppType)
throws Exception {
if (!mLossEventWait.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS)) {
@@ -293,6 +319,15 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
return true;
}
+ public boolean waitForOwnershipGrantAndAssert(long timeoutMs, int expectedAppType)
+ throws Exception {
+ if (!mGrantEventWait.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS)) {
+ return false;
+ }
+ assertEquals(expectedAppType, mLastGrantEvent);
+ return true;
+ }
+
@Override
public void onAppFocusOwnershipLost(CarAppFocusManager manager, int appType) {
Log.i(TAG, "onAppFocusOwnershipLost " + appType);
@@ -300,5 +335,13 @@ public class CarAppFocusManagerTest extends CarApiTestBase {
mLastLossEvent = appType;
mLossEventWait.release();
}
+
+ @Override
+ public void onAppFocusOwnershipGranted(CarAppFocusManager manager, int appType) {
+ Log.i(TAG, "onAppFocusOwnershipGranted " + appType);
+ assertMainThread();
+ mLastGrantEvent = appType;
+ mGrantEventWait.release();
+ }
}
}
diff --git a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarNavigationStatusManagerTest.java b/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarNavigationStatusManagerTest.java
index adebe70d39..718d1a8196 100644
--- a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarNavigationStatusManagerTest.java
+++ b/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarNavigationStatusManagerTest.java
@@ -20,7 +20,7 @@ import static android.support.car.CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION;
import android.support.car.Car;
import android.support.car.CarAppFocusManager;
import android.support.car.CarAppFocusManager.OnAppFocusChangedListener;
-import android.support.car.CarAppFocusManager.OnAppFocusOwnershipLostListener;
+import android.support.car.CarAppFocusManager.OnAppFocusOwnershipCallback;
import android.support.car.navigation.CarNavigationInstrumentCluster;
import android.support.car.navigation.CarNavigationStatusManager;
@@ -83,15 +83,20 @@ public class CarNavigationStatusManagerTest extends CarApiTestBase {
// Nothing to do here.
}
}, APP_FOCUS_TYPE_NAVIGATION);
- CarAppFocusManager.OnAppFocusOwnershipLostListener
- ownershipListener = new OnAppFocusOwnershipLostListener() {
+ CarAppFocusManager.OnAppFocusOwnershipCallback
+ ownershipCallback = new OnAppFocusOwnershipCallback() {
@Override
- public void onAppFocusOwnershipLost(CarAppFocusManager manager, int focus) {
+ public void onAppFocusOwnershipLost(CarAppFocusManager manager, int focusType) {
+ // Nothing to do here.
+ }
+
+ @Override
+ public void onAppFocusOwnershipGranted(CarAppFocusManager manager, int focusType) {
// Nothing to do here.
}
};
- mCarAppFocusManager.requestAppFocus(APP_FOCUS_TYPE_NAVIGATION, ownershipListener);
- assertTrue(mCarAppFocusManager.isOwningFocus(APP_FOCUS_TYPE_NAVIGATION, ownershipListener));
+ mCarAppFocusManager.requestAppFocus(APP_FOCUS_TYPE_NAVIGATION, ownershipCallback);
+ assertTrue(mCarAppFocusManager.isOwningFocus(APP_FOCUS_TYPE_NAVIGATION, ownershipCallback));
// TODO: we should use mocked HAL to be able to verify this, right now just make sure that
// it is not crashing and logcat has appropriate traces.