Merge "Revert "Check for providers being enabled"" into ub-launcher3-qt-dev
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 16f8964..ed05ee5 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -22,7 +22,8 @@
     <dimen name="tip_dot_size">8dp</dimen>
     <dimen name="tip_dot_line_width">2dp</dimen>
 
-    <dimen name="check_size">12dp</dimen>
+    <dimen name="check_size">20dp</dimen>
+    <dimen name="check_offset">4dp</dimen>
 
     <dimen name="preview_indicator_width">16dp</dimen>
     <dimen name="preview_indicator_height">8dp</dimen>
diff --git a/src/com/android/customization/model/theme/DefaultThemeProvider.java b/src/com/android/customization/model/theme/DefaultThemeProvider.java
index 5123910..58b6daf 100644
--- a/src/com/android/customization/model/theme/DefaultThemeProvider.java
+++ b/src/com/android/customization/model/theme/DefaultThemeProvider.java
@@ -111,6 +111,11 @@
         }
     }
 
+    @Override
+    public boolean isAvailable() {
+        return mOverlayProvider.isAvailable() && super.isAvailable();
+    }
+
     private void loadAll() {
         addDefaultTheme();
 
diff --git a/src/com/android/customization/model/theme/OverlayManagerCompat.java b/src/com/android/customization/model/theme/OverlayManagerCompat.java
index 202a0d4..163eca1 100644
--- a/src/com/android/customization/model/theme/OverlayManagerCompat.java
+++ b/src/com/android/customization/model/theme/OverlayManagerCompat.java
@@ -44,6 +44,10 @@
         mTargetPackages = ResourceConstants.getPackagesToOverlay(context);
     }
 
+    public boolean isAvailable() {
+        return mOverlayManager != null;
+    }
+
     /**
      * Enables the overlay provided by the given package for the given user Id
      * @return true if the operation succeeded
diff --git a/src/com/android/customization/model/theme/OverlayThemeExtractor.java b/src/com/android/customization/model/theme/OverlayThemeExtractor.java
index 3c261e7..9c85fa4 100644
--- a/src/com/android/customization/model/theme/OverlayThemeExtractor.java
+++ b/src/com/android/customization/model/theme/OverlayThemeExtractor.java
@@ -40,21 +40,26 @@
     OverlayThemeExtractor(Context context) {
         mContext = context;
         OverlayManager om = context.getSystemService(OverlayManager.class);
-        Consumer<OverlayInfo> addToMap = overlayInfo -> mOverlayInfos.put(
-                overlayInfo.getPackageName(), overlayInfo);
+        if (om != null) {
+            Consumer<OverlayInfo> addToMap = overlayInfo -> mOverlayInfos.put(
+                    overlayInfo.getPackageName(), overlayInfo);
 
-        UserHandle user = UserHandle.of(UserHandle.myUserId());
-        om.getOverlayInfosForTarget(ANDROID_PACKAGE, user).forEach(addToMap);
-        om.getOverlayInfosForTarget(SYSUI_PACKAGE, user).forEach(addToMap);
-        om.getOverlayInfosForTarget(SETTINGS_PACKAGE, user).forEach(addToMap);
-        om.getOverlayInfosForTarget(ResourceConstants.getLauncherPackage(context), user)
-                .forEach(addToMap);
-        om.getOverlayInfosForTarget(context.getPackageName(), user).forEach(addToMap);
-
+            UserHandle user = UserHandle.of(UserHandle.myUserId());
+            om.getOverlayInfosForTarget(ANDROID_PACKAGE, user).forEach(addToMap);
+            om.getOverlayInfosForTarget(SYSUI_PACKAGE, user).forEach(addToMap);
+            om.getOverlayInfosForTarget(SETTINGS_PACKAGE, user).forEach(addToMap);
+            om.getOverlayInfosForTarget(ResourceConstants.getLauncherPackage(context), user)
+                    .forEach(addToMap);
+            om.getOverlayInfosForTarget(context.getPackageName(), user).forEach(addToMap);
+        }
         mShapePreviewIconPackages = context.getResources().getStringArray(
                 R.array.icon_shape_preview_packages);
     }
 
+    boolean isAvailable() {
+        return !mOverlayInfos.isEmpty();
+    }
+
     void addColorOverlay(Builder builder, String colorOverlayPackage)
             throws NameNotFoundException {
         if (!TextUtils.isEmpty(colorOverlayPackage)) {
diff --git a/src/com/android/customization/model/theme/ThemeManager.java b/src/com/android/customization/model/theme/ThemeManager.java
index d873972..f7bbd00 100644
--- a/src/com/android/customization/model/theme/ThemeManager.java
+++ b/src/com/android/customization/model/theme/ThemeManager.java
@@ -84,7 +84,7 @@
 
     @Override
     public boolean isAvailable() {
-        return mProvider.isAvailable();
+        return mOverlayManagerCompat.isAvailable() && mProvider.isAvailable();
     }
 
     @Override
diff --git a/src/com/android/customization/widget/OptionSelectorController.java b/src/com/android/customization/widget/OptionSelectorController.java
index de2f09c..b2a81aa 100644
--- a/src/com/android/customization/widget/OptionSelectorController.java
+++ b/src/com/android/customization/widget/OptionSelectorController.java
@@ -201,12 +201,12 @@
                     // Position at lower right
                     int idx = layers.length - 1;
                     int checkSize = (int) res.getDimension(R.dimen.check_size);
+                    int checkOffset = (int) res.getDimension(R.dimen.check_offset);
                     checkedFrame.setLayerGravity(idx, Gravity.BOTTOM | Gravity.RIGHT);
                     checkedFrame.setLayerWidth(idx, checkSize);
                     checkedFrame.setLayerHeight(idx, checkSize);
-                    checkedFrame.setLayerInsetBottom(idx,
-                            holder.itemView.getPaddingBottom() - (checkSize/3));
-                    checkedFrame.setLayerInsetLeft(idx, checkSize/3);
+                    checkedFrame.setLayerInsetBottom(idx, checkOffset);
+                    checkedFrame.setLayerInsetLeft(idx, checkOffset);
                     holder.itemView.setForeground(checkedFrame);
 
                     // Initialize the currently applied option