summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Stetson <alexstetson@google.com>2022-01-19 17:08:43 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-01-19 17:08:43 +0000
commitc343eec5cbd3e6020fa3cdf1af91e10551cf2aed (patch)
tree0bdf0eb3233c81d13f23fdb9e174f42fb70a505a
parent2440f0dd1b33635ffc14abd50ff3f0dd78a60644 (diff)
parent151dfe1f32bf76782a21b44a9d6c5aea7b3b4a3c (diff)
downloadsystemlibs-c343eec5cbd3e6020fa3cdf1af91e10551cf2aed.tar.gz
Merge "Add bind method to QCControllers"
-rw-r--r--car-qc-lib/src/com/android/car/qc/controller/BaseQCController.java5
-rw-r--r--car-qc-lib/src/com/android/car/qc/controller/LocalQCController.java5
-rw-r--r--car-qc-lib/src/com/android/car/qc/controller/RemoteQCController.java11
-rw-r--r--car-qc-lib/tests/unit/src/com/android/car/qc/controller/LocalQCControllerTest.java11
-rw-r--r--car-qc-lib/tests/unit/src/com/android/car/qc/controller/RemoteQCControllerTest.java10
5 files changed, 39 insertions, 3 deletions
diff --git a/car-qc-lib/src/com/android/car/qc/controller/BaseQCController.java b/car-qc-lib/src/com/android/car/qc/controller/BaseQCController.java
index ce2bea3..a49d23b 100644
--- a/car-qc-lib/src/com/android/car/qc/controller/BaseQCController.java
+++ b/car-qc-lib/src/com/android/car/qc/controller/BaseQCController.java
@@ -85,6 +85,11 @@ public abstract class BaseQCController implements QCItemCallback {
}
/**
+ * Perform a single retrieval from the provider (without subscribing to live updates).
+ */
+ public abstract void bind();
+
+ /**
* Subclasses must override this method to handle a listening update.
*/
protected abstract void updateListening();
diff --git a/car-qc-lib/src/com/android/car/qc/controller/LocalQCController.java b/car-qc-lib/src/com/android/car/qc/controller/LocalQCController.java
index 01bd6f8..a946b9d 100644
--- a/car-qc-lib/src/com/android/car/qc/controller/LocalQCController.java
+++ b/car-qc-lib/src/com/android/car/qc/controller/LocalQCController.java
@@ -45,6 +45,11 @@ public class LocalQCController extends BaseQCController {
}
@Override
+ public void bind() {
+ onQCItemUpdated(mProvider.getQCItem());
+ }
+
+ @Override
protected void updateListening() {
boolean listen = mShouldListen && !mObservers.isEmpty();
if (mWasListening != listen) {
diff --git a/car-qc-lib/src/com/android/car/qc/controller/RemoteQCController.java b/car-qc-lib/src/com/android/car/qc/controller/RemoteQCController.java
index c98ca86..634bbb5 100644
--- a/car-qc-lib/src/com/android/car/qc/controller/RemoteQCController.java
+++ b/car-qc-lib/src/com/android/car/qc/controller/RemoteQCController.java
@@ -77,6 +77,11 @@ public class RemoteQCController extends BaseQCController {
}
@Override
+ public void bind() {
+ mBackgroundExecutor.execute(this::updateQCItem);
+ }
+
+ @Override
protected void updateListening() {
boolean listen = mShouldListen && !mObservers.isEmpty();
mBackgroundExecutor.execute(() -> updateListeningBg(listen));
@@ -119,14 +124,14 @@ public class RemoteQCController extends BaseQCController {
@WorkerThread
private void updateQCItem() {
try {
- QCItem item = bind();
+ QCItem item = getQCItem();
mContext.getMainExecutor().execute(() -> onQCItemUpdated(item));
} catch (Exception e) {
Log.d(TAG, "Error fetching QCItem", e);
}
}
- private QCItem bind() {
+ private QCItem getQCItem() {
try (ContentProviderClient provider = getClient()) {
if (provider == null) {
return null;
@@ -225,7 +230,7 @@ public class RemoteQCController extends BaseQCController {
@Override
public void run() {
trySubscribe();
- QCItem item = bind();
+ QCItem item = getQCItem();
mExecutor.execute(() -> mCallback.onQCItemUpdated(item));
}
};
diff --git a/car-qc-lib/tests/unit/src/com/android/car/qc/controller/LocalQCControllerTest.java b/car-qc-lib/tests/unit/src/com/android/car/qc/controller/LocalQCControllerTest.java
index 17d7392..5226ee7 100644
--- a/car-qc-lib/tests/unit/src/com/android/car/qc/controller/LocalQCControllerTest.java
+++ b/car-qc-lib/tests/unit/src/com/android/car/qc/controller/LocalQCControllerTest.java
@@ -53,6 +53,17 @@ public class LocalQCControllerTest extends BaseQCControllerTestCase<LocalQCContr
}
@Test
+ public void onBind_updatesQCItem() {
+ Observer<QCItem> observer = mock(Observer.class);
+ LocalQCController spiedController = spy(getController());
+ spiedController.addObserver(observer);
+ Mockito.reset(mProvider);
+ spiedController.bind();
+ verify(mProvider).getQCItem();
+ verify(spiedController).onQCItemUpdated(any());
+ }
+
+ @Test
public void updateListening_updatesProviderListening() {
Observer<QCItem> observer = mock(Observer.class);
getController().addObserver(observer);
diff --git a/car-qc-lib/tests/unit/src/com/android/car/qc/controller/RemoteQCControllerTest.java b/car-qc-lib/tests/unit/src/com/android/car/qc/controller/RemoteQCControllerTest.java
index a1db602..55f0a9c 100644
--- a/car-qc-lib/tests/unit/src/com/android/car/qc/controller/RemoteQCControllerTest.java
+++ b/car-qc-lib/tests/unit/src/com/android/car/qc/controller/RemoteQCControllerTest.java
@@ -66,6 +66,16 @@ public class RemoteQCControllerTest extends BaseQCControllerTestCase<RemoteQCCon
}
@Test
+ public void onBind_updatesQCItem() {
+ Observer<QCItem> observer = mock(Observer.class);
+ RemoteQCController spiedController = spy(getController());
+ spiedController.addObserver(observer);
+ spiedController.bind();
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+ verify(spiedController).onQCItemUpdated(notNull());
+ }
+
+ @Test
public void updateListening_listen_updatesQCItem() {
Observer<QCItem> observer = mock(Observer.class);
RemoteQCController spiedController = spy(getController());