diff options
author | Setup Wizard Team <android-setup-team-eng@google.com> | 2019-05-09 19:31:02 +0800 |
---|---|---|
committer | Nicole Huang <nicolehuang@google.com> | 2019-05-09 11:34:16 +0000 |
commit | 3266cd8b60eab2ff75573e7df5ff62b2a8f7db00 (patch) | |
tree | b71b724c0225aac13934f68cafc39737011ef49a | |
parent | d66b8aa735422814f209f110f6ad7d8733d7d1fc (diff) | |
download | setupcompat-3266cd8b60eab2ff75573e7df5ff62b2a8f7db00.tar.gz |
Import updated Android SetupCompat Library 247399054
Copied from google3/third_party/java_src/android_libs/setupcompat
Bug: 131432480
Test: mm
Included changes:
- 247399054 Add protection to footer button text color
- 247364164 Remove unused class BuildCompat
- 247352933 Check SDK version before access attr to set system bars p...
- 247338100 Change isAtLeastQ() to the SDK_INT check across all of go...
PiperOrigin-RevId: 247399054
Change-Id: I480d4dcc8fc5996f853fde6dbbbf1aab3656336a
8 files changed, 58 insertions, 65 deletions
diff --git a/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java b/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java index 95d6af4..360a0a0 100644 --- a/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java +++ b/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java @@ -31,7 +31,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; -import com.google.android.setupcompat.internal.BuildCompat; import com.google.android.setupcompat.internal.LifecycleFragment; import com.google.android.setupcompat.internal.PersistableBundles; import com.google.android.setupcompat.internal.TemplateLayout; @@ -192,7 +191,7 @@ public class PartnerCustomizationLayout extends TemplateLayout { protected void onDetachedFromWindow() { super.onDetachedFromWindow(); if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP - && BuildCompat.isAtLeastQ() + && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && WizardManagerHelper.isAnySetupWizard(activity.getIntent())) { FooterBarMixin footerBarMixin = getMixin(FooterBarMixin.class); footerBarMixin.onDetachedFromWindow(); @@ -247,7 +246,7 @@ public class PartnerCustomizationLayout extends TemplateLayout { if (!usePartnerResourceAttr) { return false; } - if (!BuildCompat.isAtLeastQ()) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { return false; } if (!PartnerConfigHelper.get(getContext()).isAvailable()) { diff --git a/main/java/com/google/android/setupcompat/internal/BuildCompat.java b/main/java/com/google/android/setupcompat/internal/BuildCompat.java deleted file mode 100644 index 7aeb85d..0000000 --- a/main/java/com/google/android/setupcompat/internal/BuildCompat.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.google.android.setupcompat.internal; - -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; - -/** Utility methods for detecting the build API version. */ -public final class BuildCompat { - - private BuildCompat() {} - - // TODO: remove the code for pre-release version of Android Q - public static boolean isAtLeastQ() { - return (VERSION.SDK_INT > VERSION_CODES.P) - || (VERSION.CODENAME.length() == 1 - && VERSION.CODENAME.charAt(0) >= 'Q' - && VERSION.CODENAME.charAt(0) <= 'Z'); - } -} diff --git a/main/java/com/google/android/setupcompat/logging/CustomEvent.java b/main/java/com/google/android/setupcompat/logging/CustomEvent.java index e0264fc..88ac05e 100644 --- a/main/java/com/google/android/setupcompat/logging/CustomEvent.java +++ b/main/java/com/google/android/setupcompat/logging/CustomEvent.java @@ -19,13 +19,13 @@ package com.google.android.setupcompat.logging; import static com.google.android.setupcompat.internal.Validations.assertLengthInRange; import android.annotation.TargetApi; +import android.os.Build; import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.os.PersistableBundle; import androidx.annotation.VisibleForTesting; -import com.google.android.setupcompat.internal.BuildCompat; import com.google.android.setupcompat.internal.ClockProvider; import com.google.android.setupcompat.internal.PersistableBundles; import com.google.android.setupcompat.internal.Preconditions; @@ -50,7 +50,8 @@ public final class CustomEvent implements Parcelable { public static CustomEvent create( MetricKey metricKey, PersistableBundle bundle, PersistableBundle piiValues) { Preconditions.checkArgument( - BuildCompat.isAtLeastQ(), "The constructor only support on sdk Q or higher"); + Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q, + "The constructor only support on sdk Q or higher"); return new CustomEvent( ClockProvider.timeInMillis(), metricKey, @@ -64,7 +65,8 @@ public final class CustomEvent implements Parcelable { /** Creates a new instance of {@code CustomEvent}. Null arguments are not allowed. */ public static CustomEvent create(MetricKey metricKey, PersistableBundle bundle) { Preconditions.checkArgument( - BuildCompat.isAtLeastQ(), "The constructor only support on sdk Q or higher."); + Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q, + "The constructor only support on sdk Q or higher."); return create(metricKey, bundle, PersistableBundle.EMPTY); } diff --git a/main/java/com/google/android/setupcompat/template/FooterBarMixin.java b/main/java/com/google/android/setupcompat/template/FooterBarMixin.java index feb87e4..c931de8 100644 --- a/main/java/com/google/android/setupcompat/template/FooterBarMixin.java +++ b/main/java/com/google/android/setupcompat/template/FooterBarMixin.java @@ -56,7 +56,6 @@ import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import com.google.android.setupcompat.PartnerCustomizationLayout; import com.google.android.setupcompat.R; -import com.google.android.setupcompat.internal.BuildCompat; import com.google.android.setupcompat.internal.FooterButtonPartnerConfig; import com.google.android.setupcompat.internal.Preconditions; import com.google.android.setupcompat.internal.TemplateLayout; @@ -557,7 +556,9 @@ public class FooterBarMixin implements Mixin { if (button.isEnabled()) { @ColorInt int color = PartnerConfigHelper.get(context).getColor(context, buttonTextColorConfig); - button.setTextColor(ColorStateList.valueOf(color)); + if (color != Color.TRANSPARENT) { + button.setTextColor(ColorStateList.valueOf(color)); + } } else { // disable state will use the default disable state color button.setTextColor( @@ -587,7 +588,8 @@ public class FooterBarMixin implements Mixin { private void updateButtonBackgroundWithPartnerConfig( Button button, PartnerConfig buttonBackgroundConfig) { Preconditions.checkArgument( - BuildCompat.isAtLeastQ(), "Update button background only support on sdk Q or higher"); + Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q, + "Update button background only support on sdk Q or higher"); @ColorInt int color; int[] DISABLED_STATE_SET = {-android.R.attr.state_enabled}; int[] ENABLED_STATE_SET = {}; diff --git a/main/java/com/google/android/setupcompat/template/StatusBarMixin.java b/main/java/com/google/android/setupcompat/template/StatusBarMixin.java index 9996128..1bd6949 100644 --- a/main/java/com/google/android/setupcompat/template/StatusBarMixin.java +++ b/main/java/com/google/android/setupcompat/template/StatusBarMixin.java @@ -78,20 +78,20 @@ public class StatusBarMixin implements Mixin { decorView = window.getDecorView(); - // Override the color of status bar to transparent such that the color of - // StatusBarBackgroundLayout can be seen. - if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { + // Support updating system status bar background color and is light system status bar from M. + if (Build.VERSION.SDK_INT >= VERSION_CODES.M) { + // Override the color of status bar to transparent such that the color of + // StatusBarBackgroundLayout can be seen. window.setStatusBarColor(Color.TRANSPARENT); + TypedArray a = + partnerCustomizationLayout + .getContext() + .obtainStyledAttributes(attrs, R.styleable.SucStatusBarMixin, defStyleAttr, 0); + setLightStatusBar( + a.getBoolean(R.styleable.SucStatusBarMixin_sucLightStatusBar, isLightStatusBar())); + setStatusBarBackground(a.getDrawable(R.styleable.SucStatusBarMixin_sucStatusBarBackground)); + a.recycle(); } - - TypedArray a = - partnerCustomizationLayout - .getContext() - .obtainStyledAttributes(attrs, R.styleable.SucStatusBarMixin, defStyleAttr, 0); - setLightStatusBar( - a.getBoolean(R.styleable.SucStatusBarMixin_sucLightStatusBar, isLightStatusBar())); - setStatusBarBackground(a.getDrawable(R.styleable.SucStatusBarMixin_sucStatusBarBackground)); - a.recycle(); } /** diff --git a/main/java/com/google/android/setupcompat/template/SystemNavBarMixin.java b/main/java/com/google/android/setupcompat/template/SystemNavBarMixin.java index a3ce567..e055d28 100644 --- a/main/java/com/google/android/setupcompat/template/SystemNavBarMixin.java +++ b/main/java/com/google/android/setupcompat/template/SystemNavBarMixin.java @@ -70,16 +70,21 @@ public class SystemNavBarMixin implements Mixin { * @param defStyleAttr The default style attribute as given to the constructor of the layout. */ public void applyPartnerCustomizations(@Nullable AttributeSet attrs, @AttrRes int defStyleAttr) { - TypedArray a = - templateLayout - .getContext() - .obtainStyledAttributes(attrs, R.styleable.SucSystemNavBarMixin, defStyleAttr, 0); - sucSystemNavBarBackgroundColor = - a.getColor(R.styleable.SucSystemNavBarMixin_sucSystemNavBarBackgroundColor, 0); - setSystemNavBarBackground(sucSystemNavBarBackgroundColor); - setLightSystemNavBar( - a.getBoolean(R.styleable.SucSystemNavBarMixin_sucLightSystemNavBar, isLightSystemNavBar())); - a.recycle(); + // Support updating system navigation bar background color and is light system navigation bar + // from O. + if (Build.VERSION.SDK_INT >= VERSION_CODES.O_MR1) { + TypedArray a = + templateLayout + .getContext() + .obtainStyledAttributes(attrs, R.styleable.SucSystemNavBarMixin, defStyleAttr, 0); + sucSystemNavBarBackgroundColor = + a.getColor(R.styleable.SucSystemNavBarMixin_sucSystemNavBarBackgroundColor, 0); + setSystemNavBarBackground(sucSystemNavBarBackgroundColor); + setLightSystemNavBar( + a.getBoolean( + R.styleable.SucSystemNavBarMixin_sucLightSystemNavBar, isLightSystemNavBar())); + a.recycle(); + } } /** @@ -194,20 +199,23 @@ public class SystemNavBarMixin implements Mixin { window.setStatusBarColor(Color.TRANSPARENT); window.setNavigationBarColor(partnerNavigationBarColor); } else { + // noinspection AndroidLintInlinedApi + TypedArray typedArray = + context.obtainStyledAttributes( + new int[] {android.R.attr.statusBarColor, android.R.attr.navigationBarColor}); + int statusBarColor = typedArray.getColor(0, 0); + int navigationBarColor = typedArray.getColor(1, 0); if (templateLayout instanceof PartnerCustomizationLayout) { - window.setStatusBarColor(Color.TRANSPARENT); - window.setNavigationBarColor(sucSystemNavBarBackgroundColor); - } else { - // noinspection AndroidLintInlinedApi - final TypedArray typedArray = - context.obtainStyledAttributes( - new int[] {android.R.attr.statusBarColor, android.R.attr.navigationBarColor}); - final int statusBarColor = typedArray.getColor(0, 0); - final int navigationBarColor = typedArray.getColor(1, 0); - window.setStatusBarColor(statusBarColor); - window.setNavigationBarColor(navigationBarColor); - typedArray.recycle(); + if (VERSION.SDK_INT >= VERSION_CODES.M) { + statusBarColor = Color.TRANSPARENT; + } + if (VERSION.SDK_INT >= VERSION_CODES.O_MR1) { + navigationBarColor = sucSystemNavBarBackgroundColor; + } } + window.setStatusBarColor(statusBarColor); + window.setNavigationBarColor(navigationBarColor); + typedArray.recycle(); } } } diff --git a/main/java/com/google/android/setupcompat/util/WizardManagerHelper.java b/main/java/com/google/android/setupcompat/util/WizardManagerHelper.java index 61cd760..3896731 100644 --- a/main/java/com/google/android/setupcompat/util/WizardManagerHelper.java +++ b/main/java/com/google/android/setupcompat/util/WizardManagerHelper.java @@ -19,12 +19,12 @@ package com.google.android.setupcompat.util; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.os.Build; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.provider.Settings; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; -import com.google.android.setupcompat.internal.BuildCompat; import java.util.Arrays; /** @@ -202,7 +202,7 @@ public class WizardManagerHelper { return false; } - if (BuildCompat.isAtLeastQ()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { return originalIntent.getBooleanExtra(EXTRA_IS_SETUP_FLOW, false); } else { return isSetupWizardIntent(originalIntent) diff --git a/main/res/values/attrs.xml b/main/res/values/attrs.xml index e336905..1a5342c 100644 --- a/main/res/values/attrs.xml +++ b/main/res/values/attrs.xml @@ -34,7 +34,7 @@ <attr name="sucUsePartnerResource" format="boolean" /> </declare-styleable> - <!-- Status bar attributes --> + <!-- Status bar attributes; only takes effect on M or above --> <declare-styleable name="SucStatusBarMixin"> <!-- The color for the status bar. For this to take effect, "android:windowDrawsSystemBarBackgrounds" should be set to true and @@ -45,7 +45,7 @@ <attr name="sucLightStatusBar" format="boolean" /> </declare-styleable> - <!-- System navigation bar attributes --> + <!-- System navigation bar attributes; only takes effect on O_MR1 or above --> <declare-styleable name="SucSystemNavBarMixin"> <!-- The color for the system navigation bar. For this to take effect, "android:windowDrawsSystemBarBackgrounds" should be set to true and |