diff options
author | Alex Stetson <alexstetson@google.com> | 2022-01-19 17:08:43 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-01-19 17:08:43 +0000 |
commit | c343eec5cbd3e6020fa3cdf1af91e10551cf2aed (patch) | |
tree | 0bdf0eb3233c81d13f23fdb9e174f42fb70a505a | |
parent | 2440f0dd1b33635ffc14abd50ff3f0dd78a60644 (diff) | |
parent | 151dfe1f32bf76782a21b44a9d6c5aea7b3b4a3c (diff) | |
download | systemlibs-c343eec5cbd3e6020fa3cdf1af91e10551cf2aed.tar.gz |
Merge "Add bind method to QCControllers"
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()); |