Handle no clocks case as error
If we have a provider but for some reason it returns no
clockfaces, show error message instead of crashing
Fixes: 134611165
Change-Id: I3a9e50b5d821469284c5b9ef837170ffb3ff1fd9
diff --git a/src/com/android/customization/model/clock/ContentProviderClockProvider.java b/src/com/android/customization/model/clock/ContentProviderClockProvider.java
index 375f3c1..ad60ddc 100644
--- a/src/com/android/customization/model/clock/ContentProviderClockProvider.java
+++ b/src/com/android/customization/model/clock/ContentProviderClockProvider.java
@@ -37,27 +37,35 @@
@Override
public boolean isAvailable() {
- return mProviderInfo != null;
+ return mProviderInfo != null && (mClocks == null || !mClocks.isEmpty());
}
@Override
public void fetch(OptionsFetchedListener<Clockface> callback, boolean reload) {
if (!isAvailable()) {
if (callback != null) {
- callback.onOptionsLoaded(null);
+ callback.onError(null);
}
return;
}
if (mClocks != null && !reload) {
if (callback != null) {
- callback.onOptionsLoaded(mClocks);
+ if (!mClocks.isEmpty()) {
+ callback.onOptionsLoaded(mClocks);
+ } else {
+ callback.onError(null);
+ }
}
return;
}
new ClocksFetchTask(mContext, mProviderInfo, options -> {
mClocks = options;
if (callback != null) {
- callback.onOptionsLoaded(mClocks);
+ if (!mClocks.isEmpty()) {
+ callback.onOptionsLoaded(mClocks);
+ } else {
+ callback.onError(null);
+ }
}
}).execute();
}