Import updated Android SetupCompat Library 248257541 am: 14649e7964
am: b10744f1d3

Change-Id: I91a79013cfccfd545ff95c45917e7df3c9353fc4
diff --git a/main/java/com/google/android/setupcompat/internal/SetupCompatServiceProvider.java b/main/java/com/google/android/setupcompat/internal/SetupCompatServiceProvider.java
index eb3afaa..66503a7 100644
--- a/main/java/com/google/android/setupcompat/internal/SetupCompatServiceProvider.java
+++ b/main/java/com/google/android/setupcompat/internal/SetupCompatServiceProvider.java
@@ -154,11 +154,7 @@
     } else {
       // SetupWizard is not installed/calling app does not have permissions to bind.
       swapServiceContextAndNotify(new ServiceContext(State.BIND_FAILED));
-      Log.e(
-          TAG,
-          String.format(
-              "Context#bindService did not succeed, is the manifest missing %s permission?",
-              COMPAT_PERMISSION));
+      Log.e(TAG, "Context#bindService did not succeed.");
     }
   }
 
@@ -341,7 +337,5 @@
   @SuppressLint("StaticFieldLeak")
   private static volatile SetupCompatServiceProvider instance;
 
-  private static final String COMPAT_PERMISSION =
-      "com.google.android.setupwizard.SETUP_COMPAT_SERVICE";
   private static final String TAG = "SucServiceProvider";
 }
diff --git a/main/java/com/google/android/setupcompat/template/FooterBarMixin.java b/main/java/com/google/android/setupcompat/template/FooterBarMixin.java
index c931de8..3c88791 100644
--- a/main/java/com/google/android/setupcompat/template/FooterBarMixin.java
+++ b/main/java/com/google/android/setupcompat/template/FooterBarMixin.java
@@ -110,7 +110,7 @@
           Button button = buttonContainer.findViewById(id);
           if (button != null) {
             button.setEnabled(enabled);
-            if (applyPartnerResources && !enabled) {
+            if (applyPartnerResources) {
               updateButtonTextColorWithPartnerConfig(
                   button,
                   (id == primaryButtonId)
diff --git a/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java b/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java
index b437f2b..6dd71b2 100644
--- a/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java
+++ b/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java
@@ -30,6 +30,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
+import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.TypedValue;
 import com.google.android.setupcompat.partnerconfig.PartnerConfig.ResourceType;
@@ -237,7 +238,8 @@
     }
 
     if (partnerResourceCache.containsKey(resourceConfig)) {
-      return (float) partnerResourceCache.get(resourceConfig);
+      return getDimensionFromTypedValue(
+          context, (TypedValue) partnerResourceCache.get(resourceConfig));
     }
 
     float result = defaultValue;
@@ -245,7 +247,13 @@
       ResourceEntry resourceEntry = getResourceEntryFromKey(resourceConfig.getResourceName());
       Resources resource = getResourcesByPackageName(context, resourceEntry.getPackageName());
       result = resource.getDimension(resourceEntry.getResourceId());
-      partnerResourceCache.put(resourceConfig, result);
+      TypedValue value =
+          getTypedValueFromResource(
+              resource, resourceEntry.getResourceId(), TypedValue.TYPE_DIMENSION);
+      partnerResourceCache.put(resourceConfig, value);
+      result =
+          getDimensionFromTypedValue(
+              context, (TypedValue) partnerResourceCache.get(resourceConfig));
     } catch (PackageManager.NameNotFoundException | NullPointerException exception) {
       // fall through
     }
@@ -331,4 +339,23 @@
   public static synchronized void resetForTesting() {
     instance = null;
   }
+
+  private TypedValue getTypedValueFromResource(Resources resource, int resId, int type) {
+    TypedValue value = new TypedValue();
+    resource.getValue(resId, value, true);
+    if (value.type != type) {
+      throw new NotFoundException(
+          "Resource ID #0x"
+              + Integer.toHexString(resId)
+              + " type #0x"
+              + Integer.toHexString(value.type)
+              + " is not valid");
+    }
+    return value;
+  }
+
+  private float getDimensionFromTypedValue(Context context, TypedValue value) {
+    DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
+    return value.getDimension(displayMetrics);
+  }
 }