summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSetup Wizard Team <android-setup-team-eng@google.com>2019-05-09 19:31:02 +0800
committerNicole Huang <nicolehuang@google.com>2019-05-09 11:34:16 +0000
commit3266cd8b60eab2ff75573e7df5ff62b2a8f7db00 (patch)
treeb71b724c0225aac13934f68cafc39737011ef49a
parentd66b8aa735422814f209f110f6ad7d8733d7d1fc (diff)
downloadsetupcompat-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
-rw-r--r--main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java5
-rw-r--r--main/java/com/google/android/setupcompat/internal/BuildCompat.java18
-rw-r--r--main/java/com/google/android/setupcompat/logging/CustomEvent.java8
-rw-r--r--main/java/com/google/android/setupcompat/template/FooterBarMixin.java8
-rw-r--r--main/java/com/google/android/setupcompat/template/StatusBarMixin.java24
-rw-r--r--main/java/com/google/android/setupcompat/template/SystemNavBarMixin.java52
-rw-r--r--main/java/com/google/android/setupcompat/util/WizardManagerHelper.java4
-rw-r--r--main/res/values/attrs.xml4
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