summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-06-08 23:04:54 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-06-08 23:04:54 +0000
commit87a41d79bb983d28f2d7a4b6cb63d643061f3e52 (patch)
tree135b6851cca7371bdf71600af5ebd3688c175d73
parentcd4690599b062a8f01fb8131bd8dec5df4be7936 (diff)
parent5ac1671ba678b91262c0864da21ad91953ae86ed (diff)
downloadsetupwizard-android10-s1-release.tar.gz
Snap for 5645017 from 5ac1671ba678b91262c0864da21ad91953ae86ed to qt-releaseandroid-vts-10.0_r9android-vts-10.0_r8android-vts-10.0_r7android-vts-10.0_r6android-vts-10.0_r5android-vts-10.0_r4android-vts-10.0_r3android-vts-10.0_r2android-vts-10.0_r16android-vts-10.0_r15android-vts-10.0_r14android-vts-10.0_r13android-vts-10.0_r12android-vts-10.0_r11android-vts-10.0_r10android-vts-10.0_r1android-security-10.0.0_r75android-security-10.0.0_r74android-security-10.0.0_r73android-security-10.0.0_r72android-security-10.0.0_r71android-security-10.0.0_r70android-security-10.0.0_r69android-security-10.0.0_r68android-security-10.0.0_r67android-security-10.0.0_r66android-security-10.0.0_r65android-security-10.0.0_r64android-security-10.0.0_r63android-security-10.0.0_r62android-security-10.0.0_r61android-security-10.0.0_r60android-security-10.0.0_r59android-security-10.0.0_r58android-security-10.0.0_r57android-security-10.0.0_r56android-security-10.0.0_r55android-security-10.0.0_r54android-security-10.0.0_r53android-security-10.0.0_r52android-security-10.0.0_r51android-security-10.0.0_r50android-security-10.0.0_r49android-security-10.0.0_r48android-cts-10.0_r9android-cts-10.0_r8android-cts-10.0_r7android-cts-10.0_r6android-cts-10.0_r5android-cts-10.0_r4android-cts-10.0_r3android-cts-10.0_r2android-cts-10.0_r16android-cts-10.0_r15android-cts-10.0_r14android-cts-10.0_r13android-cts-10.0_r12android-cts-10.0_r11android-cts-10.0_r10android-cts-10.0_r1android-10.0.0_r6android-10.0.0_r5android-10.0.0_r47android-10.0.0_r46android-10.0.0_r4android-10.0.0_r3android-10.0.0_r2android-10.0.0_r17android-10.0.0_r11android-10.0.0_r10android-10.0.0_r1android10-tests-releaseandroid10-security-releaseandroid10-s3-releaseandroid10-s2-releaseandroid10-s1-releaseandroid10-release
Change-Id: I9f54c131c3ce55850795cedb1eb662a5d8c0576a
-rw-r--r--library/main/src/com/android/car/setupwizardlib/BaseSetupWizardActivity.java3
-rw-r--r--library/main/src/com/android/car/setupwizardlib/partner/PartnerConfig.java4
-rw-r--r--library/main/src/com/android/car/setupwizardlib/partner/PartnerConfigHelper.java36
-rw-r--r--library/main/src/com/android/car/setupwizardlib/partner/PartnerConfigKey.java3
-rw-r--r--library/main/src/com/android/car/setupwizardlib/util/CarSetupWizardUiUtils.java66
5 files changed, 112 insertions, 0 deletions
diff --git a/library/main/src/com/android/car/setupwizardlib/BaseSetupWizardActivity.java b/library/main/src/com/android/car/setupwizardlib/BaseSetupWizardActivity.java
index 03dba6b..cf9829b 100644
--- a/library/main/src/com/android/car/setupwizardlib/BaseSetupWizardActivity.java
+++ b/library/main/src/com/android/car/setupwizardlib/BaseSetupWizardActivity.java
@@ -29,6 +29,7 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import com.android.car.setupwizardlib.util.CarDrivingStateMonitor;
+import com.android.car.setupwizardlib.util.CarSetupWizardUiUtils;
import com.android.car.setupwizardlib.util.CarWizardManagerHelper;
/**
@@ -109,6 +110,8 @@ abstract class BaseSetupWizardActivity extends FragmentActivity {
@CallSuper
protected void onStart() {
super.onStart();
+ // Must be done here so that the SystemUI is hidden when back button is clicked
+ CarSetupWizardUiUtils.maybeHideSystemUI(this);
// Fragment commits are not allowed once the Activity's state has been saved. Once
// onStart() has been called, the FragmentManager should now allow commits.
mAllowFragmentCommits = true;
diff --git a/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfig.java b/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfig.java
index 443e132..d3f6ea2 100644
--- a/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfig.java
+++ b/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfig.java
@@ -19,6 +19,9 @@ package com.android.car.setupwizardlib.partner;
/** Resources that can be customized by partner overlay APK. */
public enum PartnerConfig {
+ CONFIG_IS_IMMERSIVE(
+ PartnerConfigKey.KEY_IS_IMMERSIVE, ResourceType.BOOLEAN),
+
CONFIG_TOOLBAR_BG_COLOR(
PartnerConfigKey.KEY_TOOLBAR_BG_COLOR, ResourceType.COLOR),
@@ -72,6 +75,7 @@ public enum PartnerConfig {
DRAWABLE,
STRING,
DIMENSION,
+ BOOLEAN,
}
private final String mResourceName;
diff --git a/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfigHelper.java b/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfigHelper.java
index b337012..2f367a8 100644
--- a/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfigHelper.java
+++ b/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfigHelper.java
@@ -223,6 +223,42 @@ public class PartnerConfigHelper {
return result;
}
+ /**
+ * Returns the boolean value of given {@code partnerConfig}. If the given {@code partnerConfig}
+ * not found, will return {@code defaultValue}. If the {@code ResourceType} of given {@code
+ * resourceConfig} is not boolean, will throw IllegalArgumentException.
+ *
+ * @param context The context of client activity
+ * @param partnerConfig The {@code PartnerConfig} of target resource
+ * @param defaultValue The default value
+ */
+ public boolean getBoolean(
+ @NonNull Context context, PartnerConfig partnerConfig, boolean defaultValue) {
+ if (partnerConfig.getResourceType() != PartnerConfig.ResourceType.BOOLEAN) {
+ throw new IllegalArgumentException("Not a boolean resource");
+ }
+
+ if (mPartnerResourceCache.containsKey(partnerConfig)) {
+ return (boolean) mPartnerResourceCache.get(partnerConfig);
+ }
+
+ boolean result = defaultValue;
+ try {
+ String resourceName = partnerConfig.getResourceName();
+ ResourceEntry resourceEntry = getResourceEntryFromKey(resourceName);
+ if (resourceEntry == null) {
+ Log.w(TAG, "Resource not found: " + resourceName);
+ return defaultValue;
+ }
+ Resources resource = getResourcesByPackageName(context, resourceEntry.getPackageName());
+ result = resource.getBoolean(resourceEntry.getResourceId());
+ mPartnerResourceCache.put(partnerConfig, result);
+ } catch (PackageManager.NameNotFoundException exception) {
+ Log.e(TAG, exception.getMessage());
+ }
+ return result;
+ }
+
private void getPartnerConfigBundle(Context context) {
if (mResultBundle == null) {
try {
diff --git a/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfigKey.java b/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfigKey.java
index e07b883..e98a533 100644
--- a/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfigKey.java
+++ b/library/main/src/com/android/car/setupwizardlib/partner/PartnerConfigKey.java
@@ -23,6 +23,7 @@ import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.SOURCE)
@StringDef({
+ PartnerConfigKey.KEY_IS_IMMERSIVE,
PartnerConfigKey.KEY_TOOLBAR_BG_COLOR,
PartnerConfigKey.KEY_TOOLBAR_BUTTON_ICON_BACK,
PartnerConfigKey.KEY_TOOLBAR_BUTTON_FONT_FAMILY,
@@ -44,6 +45,8 @@ import java.lang.annotation.RetentionPolicy;
/** Resource names that can be customized by partner overlay APK. */
public @interface PartnerConfigKey {
+ String KEY_IS_IMMERSIVE = "suw_compat_is_immersive";
+
String KEY_TOOLBAR_BG_COLOR = "suw_compat_toolbar_bg_color";
String KEY_TOOLBAR_BUTTON_ICON_BACK = "suw_compat_toolbar_button_icon_back";
diff --git a/library/main/src/com/android/car/setupwizardlib/util/CarSetupWizardUiUtils.java b/library/main/src/com/android/car/setupwizardlib/util/CarSetupWizardUiUtils.java
new file mode 100644
index 0000000..5a87323
--- /dev/null
+++ b/library/main/src/com/android/car/setupwizardlib/util/CarSetupWizardUiUtils.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.setupwizardlib.util;
+
+import android.app.Activity;
+import android.util.Log;
+import android.view.View;
+
+import androidx.core.util.Preconditions;
+
+import com.android.car.setupwizardlib.partner.PartnerConfig;
+import com.android.car.setupwizardlib.partner.PartnerConfigHelper;
+
+/** Utilities to aid in UI for car setup wizard flow. */
+public final class CarSetupWizardUiUtils {
+ private static final String TAG = CarSetupWizardUiUtils.class.getSimpleName();
+ private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
+
+ /** Hide system UI if configured as such by partner */
+ public static void maybeHideSystemUI(Activity activity) {
+ Preconditions.checkNotNull(activity);
+
+ if (!PartnerConfigHelper.get(activity)
+ .getBoolean(activity, PartnerConfig.CONFIG_IS_IMMERSIVE, true)) {
+ if (VERBOSE) {
+ Log.v(TAG, "Immersive mode disabled");
+ }
+ return;
+ }
+ if (VERBOSE) {
+ Log.v(TAG, "Setting immersive mode for SystemUi");
+ }
+ // See https://developer.android.com/training/system-ui/immersive#EnableFullscreen
+ // Enables regular immersive mode.
+ // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
+ // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+ View decorView = activity.getWindow().getDecorView();
+ decorView.setSystemUiVisibility(
+ View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+ // Set the content to appear under the system bars so that the
+ // content doesn't resize when the system bars hide and show.
+ | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+ | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+ // Hide the nav bar and status bar
+ | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_FULLSCREEN);
+ }
+
+ private CarSetupWizardUiUtils() {
+ }
+}