diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a34713dce6c..1d85a8d3df0 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1679,6 +1679,10 @@
android:value="com.android.settings.accessibility.AccessibilitySettingsForSetupWizard" />
+
+
+
+
diff --git a/libs/window_ext_lib.aar b/libs/window_ext_lib.aar
index 301ff9672ae..c576270fec0 100644
Binary files a/libs/window_ext_lib.aar and b/libs/window_ext_lib.aar differ
diff --git a/res/layout/accessibility_screen_size_setup_wizard.xml b/res/layout/accessibility_screen_size_setup_wizard.xml
new file mode 100644
index 00000000000..e4bc55bb3a6
--- /dev/null
+++ b/res/layout/accessibility_screen_size_setup_wizard.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/suw_font_size_fragment.xml b/res/layout/suw_font_size_fragment.xml
new file mode 100644
index 00000000000..0e03a6989f5
--- /dev/null
+++ b/res/layout/suw_font_size_fragment.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/suw_preview_seek_bar_view_pager.xml b/res/layout/suw_preview_seek_bar_view_pager.xml
new file mode 100644
index 00000000000..71ec5f06547
--- /dev/null
+++ b/res/layout/suw_preview_seek_bar_view_pager.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/suw_screen_zoom_fragment.xml b/res/layout/suw_screen_zoom_fragment.xml
new file mode 100644
index 00000000000..0747381085f
--- /dev/null
+++ b/res/layout/suw_screen_zoom_fragment.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/values-sw300dp-land-v31/dimens.xml b/res/values-sw300dp-land-v31/dimens.xml
new file mode 100644
index 00000000000..fa7d2bf5235
--- /dev/null
+++ b/res/values-sw300dp-land-v31/dimens.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ 0dp
+
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 2cd944ac040..e1d758467d4 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -434,6 +434,9 @@
24dp
+
+ -12dp
+
6dp
1dp
diff --git a/res/values/integers.xml b/res/values/integers.xml
index 3d73f64fabe..53543889766 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -21,4 +21,9 @@
102
103
104
+
+
+ 0
+ 1
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d6f22fbb102..5f2fd54c7dc 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6283,6 +6283,8 @@
Detecting when apps drain battery
+
+ Detecting when apps drain battery
Off
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 8b0b7a23f47..5b3b1c8a357 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -237,6 +237,16 @@
- @android:style/TextAppearance.DeviceDefault.Small
+
+
@@ -243,6 +244,7 @@
- 16dp
- @style/PreferenceTheme.SettingsLib
- @style/Switch.SettingsLib
+ - @style/SetupWizardPreferenceFragmentStyle
diff --git a/res/xml/accessibility_settings_for_setup_wizard.xml b/res/xml/accessibility_settings_for_setup_wizard.xml
index a3f56b534d6..d1b4f4a5bab 100644
--- a/res/xml/accessibility_settings_for_setup_wizard.xml
+++ b/res/xml/accessibility_settings_for_setup_wizard.xml
@@ -21,18 +21,28 @@
android:title="@string/vision_settings_title">
+ android:title="@string/title_font_size">
+
+
+
+
+ android:title="@string/screen_zoom_title">
+
+
+
+
{
+ onBackPressed();
+ };
+ final FooterButton primaryButton =
+ new FooterButton.Builder(this)
+ .setText(R.string.done)
+ .setListener(nextButtonListener)
+ .setButtonType(FooterButton.ButtonType.NEXT)
+ .setTheme(R.style.SudGlifButton_Primary)
+ .build();
+ mixin.setPrimaryButton(primaryButton);
+ }
+
+ /**
+ * Scrolls to bottom while {@link ScrollView} layout changed.
+ */
+ private void scrollToBottom() {
+ final GlifLayout layout = findViewById(R.id.setup_wizard_layout);
+ final ScrollView scrollView = layout.getScrollView();
+ scrollView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
+ final int scrollViewHeight = scrollView.getHeight();
+ if (scrollViewHeight > 0) {
+ scrollView.post(() -> {
+ // Here is no need to show the scrolling animation. So disabled first and
+ // then enabled it after scrolling finished.
+ scrollView.setSmoothScrollingEnabled(false);
+ scrollView.fullScroll(View.FOCUS_DOWN);
+ scrollView.setSmoothScrollingEnabled(true);
+ });
+ }
+ });
+ }
+}
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
index 4e8be420a37..da95df9f590 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
@@ -28,11 +28,11 @@ import android.content.pm.ServiceInfo;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityManager;
-import android.widget.LinearLayout;
import androidx.preference.Preference;
import androidx.recyclerview.widget.RecyclerView;
@@ -42,7 +42,6 @@ import com.android.settings.SettingsPreferenceFragment;
import com.android.settingslib.RestrictedPreference;
import com.google.android.setupdesign.GlifPreferenceLayout;
-import com.google.android.setupdesign.util.ThemeHelper;
import java.util.List;
@@ -81,16 +80,11 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
super.onViewCreated(view, savedInstanceState);
final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
- layout.setDividerInsets(Integer.MAX_VALUE, 0);
- layout.setDescriptionText(R.string.vision_settings_description);
- layout.setHeaderText(R.string.vision_settings_title);
- layout.setIcon(getPrefContext().getDrawable(R.drawable.ic_accessibility_visibility));
-
- if (ThemeHelper.shouldApplyExtendedPartnerConfig(getActivity())) {
- final LinearLayout headerLayout = layout.findManagedViewById(R.id.sud_layout_header);
- headerLayout.setPadding(0, headerLayout.getPaddingTop(), 0,
- headerLayout.getPaddingBottom());
- }
+ final String title = getContext().getString(R.string.vision_settings_title);
+ final String description = getContext().getString(R.string.vision_settings_description);
+ final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
+ AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
+ description, icon);
}
@Override
@@ -143,6 +137,13 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
return super.onPreferenceTreeClick(preference);
}
+ /**
+ * Returns accessibility service info by given package name and service name.
+ *
+ * @param packageName Package of accessibility service
+ * @param serviceName Class of accessibility service
+ * @return {@link AccessibilityServiceInfo} instance if available, null otherwise.
+ */
private AccessibilityServiceInfo findService(String packageName, String serviceName) {
final AccessibilityManager manager =
getActivity().getSystemService(AccessibilityManager.class);
@@ -150,8 +151,8 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
manager.getInstalledAccessibilityServiceList();
for (AccessibilityServiceInfo info : accessibilityServices) {
ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo;
- if (packageName.equals(serviceInfo.packageName)
- && serviceName.equals(serviceInfo.name)) {
+ if (TextUtils.equals(packageName, serviceInfo.packageName)
+ && TextUtils.equals(serviceName, serviceInfo.name)) {
return info;
}
}
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
index b65b349707c..0625fd28700 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
@@ -16,7 +16,10 @@
package com.android.settings.accessibility;
+import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
+
import android.content.ComponentName;
+import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
@@ -30,7 +33,6 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SetupWizardUtils;
import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
import com.android.settings.search.actionbar.SearchMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settingslib.core.instrumentation.Instrumentable;
@@ -123,19 +125,12 @@ public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivit
&& new ComponentName(getPackageName(),
CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW).equals(
getIntent().getComponent())) {
- final Bundle args = new Bundle();
- args.putInt(HelpResourceProvider.HELP_URI_RESOURCE_KEY, 0);
- args.putBoolean(SearchMenuController.NEED_SEARCH_ICON_IN_ACTION_BAR, false);
- final SubSettingLauncher subSettingLauncher = new SubSettingLauncher(this)
- .setDestination(FontSizePreferenceFragmentForSetupWizard.class.getName())
- .setArguments(args)
- .setSourceMetricsCategory(Instrumentable.METRICS_CATEGORY_UNKNOWN)
- .setExtras(SetupWizardUtils.copyLifecycleExtra(getIntent().getExtras(),
- new Bundle()))
- .setTransitionType(SettingsTransitionHelper.TransitionType.TRANSITION_FADE);
-
+ final Intent intent = new Intent(this,
+ AccessibilityScreenSizeForSetupWizardActivity.class);
+ intent.putExtra(VISION_FRAGMENT_NO,
+ getResources().getInteger(R.integer.suw_font_size_fragment_no));
+ startActivity(intent);
Log.d(LOG_TAG, "Launch font size settings");
- subSettingLauncher.launch();
finish();
}
}
diff --git a/src/com/android/settings/accessibility/AccessibilitySetupWizardUtils.java b/src/com/android/settings/accessibility/AccessibilitySetupWizardUtils.java
new file mode 100644
index 00000000000..95b689b73eb
--- /dev/null
+++ b/src/com/android/settings/accessibility/AccessibilitySetupWizardUtils.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2021 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.settings.accessibility;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.widget.LinearLayout;
+
+import com.android.settings.R;
+
+import com.google.android.setupdesign.GlifPreferenceLayout;
+import com.google.android.setupdesign.util.ThemeHelper;
+
+/** Provides utility methods to accessibility settings for Setup Wizard only. */
+class AccessibilitySetupWizardUtils {
+
+ private AccessibilitySetupWizardUtils(){}
+
+ /**
+ * Update the {@link GlifPreferenceLayout} attributes if they have previously been initialized.
+ * When the SetupWizard supports the extended partner configs, it means the material layout
+ * would be applied. It should set a different padding/margin in views to align Settings style
+ * for accessibility feature pages.
+ *
+ * @param layout The layout instance
+ * @param title The text to be set as title
+ * @param description The text to be set as description
+ * @param icon The icon to be set
+ */
+ public static void updateGlifPreferenceLayout(Context context, GlifPreferenceLayout layout,
+ CharSequence title, CharSequence description, Drawable icon) {
+ layout.setHeaderText(title);
+ layout.setDescriptionText(description);
+ layout.setIcon(icon);
+ layout.setDividerInsets(Integer.MAX_VALUE, 0);
+
+ if (ThemeHelper.shouldApplyExtendedPartnerConfig(context)) {
+ final LinearLayout headerLayout = layout.findManagedViewById(R.id.sud_layout_header);
+ if (headerLayout != null) {
+ headerLayout.setPadding(0, layout.getPaddingTop(), 0,
+ layout.getPaddingBottom());
+ }
+ }
+ }
+}
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java
index 016ac059873..ce8c6bf64ef 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java
@@ -17,12 +17,44 @@
package com.android.settings.accessibility;
import android.app.settings.SettingsEnums;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.settings.R;
+
+import com.google.android.setupdesign.GlifPreferenceLayout;
public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard
extends ToggleScreenMagnificationPreferenceFragment {
+ @Override
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+
+ final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
+ final String title = getContext().getString(
+ R.string.accessibility_screen_magnification_title);
+ final String description = getContext().getString(R.string.accelerometer_title);
+ final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
+ AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
+ description, icon);
+
+ // Hide the setting from the vision settings.
+ mSettingsPreference.setVisible(false);
+ }
+
+ @Override
+ public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
+ Bundle savedInstanceState) {
+ final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
+ return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
+ }
+
@Override
public int getMetricsCategory() {
return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION;
@@ -49,12 +81,4 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard
// Hides help center in action bar and footer bar in SuW
return 0;
}
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
-
- // Hide the setting from the vision settings.
- mSettingsPreference.setVisible(false);
- }
}
diff --git a/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java
index c0d54e8eeed..316ce520600 100644
--- a/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java
@@ -17,8 +17,17 @@
package com.android.settings.accessibility;
import android.app.settings.SettingsEnums;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.settings.R;
+
+import com.google.android.setupdesign.GlifPreferenceLayout;
public class ToggleScreenReaderPreferenceFragmentForSetupWizard
extends ToggleAccessibilityServicePreferenceFragment {
@@ -28,9 +37,25 @@ public class ToggleScreenReaderPreferenceFragmentForSetupWizard
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
+
+ final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
+ final String title = getArguments().getString(AccessibilitySettings.EXTRA_TITLE);
+ final String description = getContext().getString(
+ R.string.accessibility_screen_magnification_title);
+ final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
+ AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
+ description, icon);
+
mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked();
}
+ @Override
+ public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
+ Bundle savedInstanceState) {
+ final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
+ return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
+ }
+
@Override
public int getMetricsCategory() {
return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER;
diff --git a/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java
index 9ca1f199756..b5c11233ac2 100644
--- a/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java
@@ -17,8 +17,17 @@
package com.android.settings.accessibility;
import android.app.settings.SettingsEnums;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.settings.R;
+
+import com.google.android.setupdesign.GlifPreferenceLayout;
public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard
extends InvisibleToggleAccessibilityServicePreferenceFragment {
@@ -28,9 +37,24 @@ public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
+
+ final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
+ final String title = getArguments().getString(AccessibilitySettings.EXTRA_TITLE);
+ final String description = getContext().getString(R.string.select_to_speak_summary);
+ final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
+ AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
+ description, icon);
+
mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked();
}
+ @Override
+ public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
+ Bundle savedInstanceState) {
+ final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
+ return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
+ }
+
@Override
public int getMetricsCategory() {
return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK;
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java b/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java
new file mode 100644
index 00000000000..7585dce5b5f
--- /dev/null
+++ b/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2021 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.settings.activityembedding;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+/**
+ * A content provider for querying the state of activity embedding feature
+ */
+public class ActivityEmbeddingProvider extends ContentProvider {
+
+ private static final String METHOD_IS_EMBEDDING_ACTIVITY_ENABLED = "isEmbeddingActivityEnabled";
+ private static final String EXTRA_ENABLED_STATE = "enabled_state";
+
+ @Override
+ public boolean onCreate() {
+ return true;
+ }
+
+ @Override
+ public Bundle call(String method, String arg, Bundle extras) {
+ if (TextUtils.equals(method, METHOD_IS_EMBEDDING_ACTIVITY_ENABLED)) {
+ final Bundle bundle = new Bundle();
+ bundle.putBoolean(EXTRA_ENABLED_STATE,
+ ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext()));
+ return bundle;
+ }
+ return null;
+ }
+
+ @Override
+ public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+ String sortOrder) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String getType(Uri uri) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Uri insert(Uri uri, ContentValues values) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int delete(Uri uri, String selection, String[] selectionArgs) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java b/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
index 04b6dc33f4a..627f107a69f 100644
--- a/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
@@ -18,9 +18,16 @@ package com.android.settings.display;
import android.app.settings.SettingsEnums;
+import com.android.settings.R;
+
public class FontSizePreferenceFragmentForSetupWizard
extends ToggleFontSizePreferenceFragment {
+ @Override
+ protected int getActivityLayoutResId() {
+ return R.layout.suw_font_size_fragment;
+ }
+
@Override
public int getMetricsCategory() {
return SettingsEnums.SUW_ACCESSIBILITY_FONT_SIZE;
diff --git a/src/com/android/settings/display/PreviewPagerAdapter.java b/src/com/android/settings/display/PreviewPagerAdapter.java
index 018be326d1b..a424b1da84e 100644
--- a/src/com/android/settings/display/PreviewPagerAdapter.java
+++ b/src/com/android/settings/display/PreviewPagerAdapter.java
@@ -109,6 +109,10 @@ public class PreviewPagerAdapter extends PagerAdapter {
return (view == object);
}
+ FrameLayout[] getPreviewFrames() {
+ return mPreviewFrames;
+ }
+
boolean isAnimating() {
return mAnimationCounter > 0;
}
diff --git a/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java b/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java
index abd14d25d9e..c6d5b8b44a9 100644
--- a/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java
+++ b/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java
@@ -264,6 +264,12 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
@Override
public void onPageSelected(int position) {
mPreviewPager.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
+ // To avoid displaying previous page on the left side in SUW landscape mode for
+ // large size.
+ if (position > 0) {
+ mPreviewPagerAdapter.getPreviewFrames()[position - 1].setVisibility(View.INVISIBLE);
+ }
+ mPreviewPagerAdapter.getPreviewFrames()[position].setVisibility(View.VISIBLE);
}
};
diff --git a/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java b/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java
index cfa7b5d4281..7185c63c3f7 100644
--- a/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java
@@ -18,8 +18,15 @@ package com.android.settings.display;
import android.app.settings.SettingsEnums;
+import com.android.settings.R;
+
public class ScreenZoomPreferenceFragmentForSetupWizard extends ScreenZoomSettings {
+ @Override
+ protected int getActivityLayoutResId() {
+ return R.layout.suw_screen_zoom_fragment;
+ }
+
@Override
public int getMetricsCategory() {
return SettingsEnums.SUW_ACCESSIBILITY_DISPLAY_SIZE;
diff --git a/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java b/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
index c84a15e1e86..2e59725cdc1 100644
--- a/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
+++ b/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
@@ -31,6 +31,7 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
+import com.android.settings.activityembedding.ActivityEmbeddingUtils;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedTopLevelPreference;
@@ -97,7 +98,8 @@ public class TopLevelWallpaperPreferenceController extends BasePreferenceControl
if (getPreferenceKey().equals(preference.getKey())) {
final Intent intent = new Intent().setComponent(
getComponentName()).putExtra(mWallpaperLaunchExtra, LAUNCHED_SETTINGS);
- if (areStylesAvailable()) {
+ if (areStylesAvailable() && !ActivityEmbeddingUtils.isEmbeddingActivityEnabled(
+ mContext)) {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
}
preference.getContext().startActivity(intent);
diff --git a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
index 854117978f2..4249c44493f 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
@@ -350,7 +350,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
private void addAllPreferences() {
final List entries =
mBatteryIndexedMap.get(Integer.valueOf(mTrapezoidIndex));
- addFooterPreferenceIfNeeded(!entries.isEmpty());
+ addFooterPreferenceIfNeeded(entries != null && !entries.isEmpty());
if (entries == null) {
Log.w(TAG, "cannot find BatteryDiffEntry for:" + mTrapezoidIndex);
return;
diff --git a/src/com/android/settings/fuelgauge/BatteryChartView.java b/src/com/android/settings/fuelgauge/BatteryChartView.java
index 7bc60b23c38..98cfdc8f825 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartView.java
+++ b/src/com/android/settings/fuelgauge/BatteryChartView.java
@@ -79,12 +79,14 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
private boolean mIsSlotsClickabled;
private String[] mPercentages = getPercentages();
- @VisibleForTesting int mSelectedIndex;
+ @VisibleForTesting int mHoveredIndex = SELECTED_INDEX_INVALID;
+ @VisibleForTesting int mSelectedIndex = SELECTED_INDEX_INVALID;
@VisibleForTesting String[] mTimestamps;
// Colors for drawing the trapezoid shape and dividers.
private int mTrapezoidColor;
private int mTrapezoidSolidColor;
+ private int mTrapezoidHoverColor;
// For drawing the percentage information.
private int mTextPadding;
private final Rect mIndent = new Rect();
@@ -108,7 +110,7 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
Paint mTrapezoidCurvePaint = null;
private TrapezoidSlot[] mTrapezoidSlots;
// Records the location to calculate selected index.
- private MotionEvent mTouchUpEvent;
+ private float mTouchUpEventX = Float.MIN_VALUE;
private BatteryChartView.OnSelectListener mOnSelectListener;
public BatteryChartView(Context context) {
@@ -254,21 +256,49 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
public boolean onTouchEvent(MotionEvent event) {
// Caches the location to calculate selected trapezoid index.
final int action = event.getAction();
- if (action == MotionEvent.ACTION_UP) {
- mTouchUpEvent = MotionEvent.obtain(event);
- } else if (action == MotionEvent.ACTION_CANCEL) {
- mTouchUpEvent = null; // reset
+ switch (action) {
+ case MotionEvent.ACTION_UP:
+ mTouchUpEventX = event.getX();
+ break;
+ case MotionEvent.ACTION_CANCEL:
+ mTouchUpEventX = Float.MIN_VALUE; // reset
+ break;
}
return super.onTouchEvent(event);
}
+ @Override
+ public boolean onHoverEvent(MotionEvent event) {
+ final int action = event.getAction();
+ switch (action) {
+ case MotionEvent.ACTION_HOVER_ENTER:
+ case MotionEvent.ACTION_HOVER_MOVE:
+ final int trapezoidIndex = getTrapezoidIndex(event.getX());
+ if (mHoveredIndex != trapezoidIndex) {
+ mHoveredIndex = trapezoidIndex;
+ invalidate();
+ }
+ break;
+ }
+ return super.onHoverEvent(event);
+ }
+
+ @Override
+ public void onHoverChanged(boolean hovered) {
+ super.onHoverChanged(hovered);
+ if (!hovered) {
+ mHoveredIndex = SELECTED_INDEX_INVALID; // reset
+ invalidate();
+ }
+ }
+
@Override
public void onClick(View view) {
- if (mTouchUpEvent == null) {
+ if (mTouchUpEventX == Float.MIN_VALUE) {
Log.w(TAG, "invalid motion event for onClick() callback");
return;
}
- final int trapezoidIndex = getTrapezoidIndex(mTouchUpEvent.getX());
+ final int trapezoidIndex = getTrapezoidIndex(mTouchUpEventX);
// Ignores the click event if the level is zero.
if (trapezoidIndex == SELECTED_INDEX_INVALID
|| !isValidToDraw(trapezoidIndex)) {
@@ -347,6 +377,8 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
setBackgroundColor(Color.TRANSPARENT);
mTrapezoidSolidColor = Utils.getColorAccentDefaultColor(context);
mTrapezoidColor = Utils.getDisabled(context, mTrapezoidSolidColor);
+ mTrapezoidHoverColor = Utils.getColorAttrDefaultColor(context,
+ com.android.internal.R.attr.colorAccentSecondaryVariant);
// Initializes the divider line paint.
final Resources resources = getContext().getResources();
mDividerWidth = resources.getDimensionPixelSize(R.dimen.chartview_divider_width);
@@ -494,7 +526,8 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
? mTrapezoidColor
: mSelectedIndex == index || mSelectedIndex == SELECTED_INDEX_ALL
? mTrapezoidSolidColor : mTrapezoidColor;
- mTrapezoidPaint.setColor(trapezoidColor);
+ final boolean isHover = mHoveredIndex == index && isValidToDraw(mHoveredIndex);
+ mTrapezoidPaint.setColor(isHover ? mTrapezoidHoverColor : trapezoidColor);
final float leftTop = round(trapezoidBottom - mLevels[index] * unitHeight);
final float rightTop = round(trapezoidBottom - mLevels[index + 1] * unitHeight);
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
index a8e0317ff1d..b6d7efee3cc 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
@@ -139,6 +139,11 @@ public interface PowerUsageFeatureProvider {
*/
boolean isChartGraphSlotsEnabled(Context context);
+ /**
+ * Checks whether adaptive charging feature is supported in this device
+ */
+ boolean isAdaptiveChargingSupported();
+
/**
* Gets a intent for one time bypass charge limited to resume charging.
*/
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
index e2c7800472c..3f47af4e9fa 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
@@ -166,6 +166,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
return false;
}
+ @Override
+ public boolean isAdaptiveChargingSupported() {
+ return false;
+ }
+
@Override
public Intent getResumeChargeIntent() {
return null;
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
index 59a592c6c78..1a7fa38be31 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
@@ -19,6 +19,8 @@ package com.android.settings.fuelgauge.batterysaver;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
import android.os.PowerManager;
import android.provider.SettingsSlicesContract;
import android.widget.Switch;
@@ -42,10 +44,12 @@ import com.android.settingslib.widget.OnMainSwitchChangeListener;
public class BatterySaverButtonPreferenceController extends
TogglePreferenceController implements OnMainSwitchChangeListener, LifecycleObserver,
OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
+ private static final long SWITCH_ANIMATION_DURATION = 350L;
private final BatterySaverReceiver mBatterySaverReceiver;
private final PowerManager mPowerManager;
+ private Handler mHandler;
private MainSwitchPreference mPreference;
public BatterySaverButtonPreferenceController(Context context, String key) {
@@ -53,6 +57,7 @@ public class BatterySaverButtonPreferenceController extends
mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
mBatterySaverReceiver = new BatterySaverReceiver(context);
mBatterySaverReceiver.setBatterySaverListener(this);
+ mHandler = new Handler(Looper.getMainLooper());
}
@Override
@@ -83,6 +88,7 @@ public class BatterySaverButtonPreferenceController extends
@Override
public void onStop() {
mBatterySaverReceiver.setListening(false);
+ mHandler.removeCallbacksAndMessages(null /* token */);
}
@Override
@@ -114,6 +120,11 @@ public class BatterySaverButtonPreferenceController extends
@Override
public void onPowerSaveModeChanged() {
+ mHandler.postDelayed(() -> onPowerSaveModeChangedInternal(),
+ SWITCH_ANIMATION_DURATION);
+ }
+
+ private void onPowerSaveModeChangedInternal() {
final boolean isChecked = isChecked();
if (mPreference != null && mPreference.isChecked() != isChecked) {
mPreference.setChecked(isChecked);
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java
index 790264cf313..d920a8ef777 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java
@@ -64,7 +64,10 @@ public class BatteryManagerPreferenceController extends BasePreferenceController
preference.setSummary(mContext.getResources().getQuantityString(
R.plurals.battery_manager_app_restricted, num, num));
} else {
- preference.setSummary(R.string.battery_manager_summary);
+ preference.setSummary(
+ mPowerUsageFeatureProvider.isAdaptiveChargingSupported()
+ ? R.string.battery_manager_summary
+ : R.string.battery_manager_summary_unsupported);
}
}
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivityTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivityTest.java
new file mode 100644
index 00000000000..05e5b3217c0
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivityTest.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2021 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.settings.accessibility;
+
+import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+
+import com.google.android.setupcompat.template.FooterBarMixin;
+import com.google.android.setupdesign.GlifLayout;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link AccessibilityScreenSizeForSetupWizardActivity} */
+@RunWith(RobolectricTestRunner.class)
+public class AccessibilityScreenSizeForSetupWizardActivityTest {
+ private static final int DISPLAY_SIZE_FRAGMENT_NO = 1;
+
+ private Context mContext = ApplicationProvider.getApplicationContext();
+ private AccessibilityScreenSizeForSetupWizardActivity mActivity;
+
+ @Before
+ public void setup() {
+ final Intent intent = new Intent();
+ intent.putExtra(VISION_FRAGMENT_NO,
+ mContext.getResources().getInteger(R.integer.suw_font_size_fragment_no));
+ mActivity = Robolectric.buildActivity(AccessibilityScreenSizeForSetupWizardActivity.class,
+ intent).create().get();
+ }
+
+ @Test
+ public void generateHeader_setPageNoAsFontSize_returnFontSizeTitle() {
+ mActivity.generateHeader(
+ mActivity.getResources().getInteger(R.integer.suw_font_size_fragment_no));
+
+ final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
+
+ assertThat(layout.getHeaderText()).isEqualTo(mContext.getText(R.string.title_font_size));
+ }
+
+ @Test
+ public void generateHeader_setPageNoAsDisplaySize_returnDisplaySizeTitle() {
+ mActivity.generateHeader(DISPLAY_SIZE_FRAGMENT_NO);
+
+ final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
+
+ assertThat(layout.getHeaderText()).isEqualTo(mContext.getText(R.string.screen_zoom_title));
+ }
+
+ @Test
+ public void initFooterButton_generateDoneButton() {
+ mActivity.initFooterButton();
+
+ final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
+ final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
+
+ assertThat(mixin.getPrimaryButton().getText()).isEqualTo(mContext.getText(R.string.done));
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java
index c3a630b0670..4d9668a6ab0 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java
@@ -16,6 +16,7 @@
package com.android.settings.accessibility;
+import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
import static com.android.settings.accessibility.AccessibilitySettingsForSetupWizardActivity.CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW;
import static com.google.common.truth.Truth.assertThat;
@@ -26,8 +27,6 @@ import android.content.Intent;
import androidx.test.filters.SmallTest;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -42,45 +41,47 @@ import org.robolectric.Shadows;
@SmallTest
public class AccessibilitySettingsForSetupWizardActivityTest {
- @Test
- public void createSetupAccessibilityActivity_shouldBeSUWTheme() {
- final Intent intent = new Intent();
- AccessibilitySettingsForSetupWizardActivity activity =
- Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class, intent).get();
+ @Test
+ public void createSetupAccessibilityActivity_shouldBeSUWTheme() {
+ final Intent intent = new Intent();
+ AccessibilitySettingsForSetupWizardActivity activity =
+ Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
+ intent).get();
- assertThat(activity.getThemeResId()).isEqualTo(R.style.GlifV3Theme_Light);
- }
+ assertThat(activity.getThemeResId()).isEqualTo(R.style.GlifV3Theme_Light);
+ }
- @Test
- public void onCreate_hasFontSizeComponent_shouldGoToFontSizePreferenceDirectly() {
- AccessibilitySettingsForSetupWizardActivity activity =
- Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
- new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(
- RuntimeEnvironment.application, CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW)).
- putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true).
- putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
+ @Test
+ public void onCreate_hasFontSizeComponent_shouldGoToFontSizePreferenceDirectly() {
+ AccessibilitySettingsForSetupWizardActivity activity =
+ Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
+ new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(
+ RuntimeEnvironment.application,
+ CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW))
+ .putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
+ .putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
- activity.tryLaunchFontSizeSettings();
+ activity.tryLaunchFontSizeSettings();
- final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
- assertThat(launchIntent).isNotNull();
- assertThat(launchIntent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
- FontSizePreferenceFragmentForSetupWizard.class.getName());
- assertThat(activity.isFinishing()).isTrue();
- }
+ final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
+ assertThat(launchIntent).isNotNull();
+ assertThat(launchIntent.getIntExtra(VISION_FRAGMENT_NO, -1)).isEqualTo(
+ activity.getResources().getInteger(R.integer.suw_font_size_fragment_no));
+ assertThat(activity.isFinishing()).isTrue();
+ }
- @Test
- public void onCreate_noFontSizeComponent_shouldNotFinishCurrentActivity() {
- AccessibilitySettingsForSetupWizardActivity activity =
- Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
- new Intent(Intent.ACTION_MAIN).
- putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true).
- putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
+ @Test
+ public void onCreate_noFontSizeComponent_shouldNotFinishCurrentActivity() {
+ AccessibilitySettingsForSetupWizardActivity activity =
+ Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
+ new Intent(Intent.ACTION_MAIN)
+ .putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
+ .putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
- activity.tryLaunchFontSizeSettings();
+ activity.tryLaunchFontSizeSettings();
- final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
- assertThat(launchIntent).isNull();
- assertThat(activity.isFinishing()).isFalse();
- }
+ final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
+ assertThat(launchIntent).isNull();
+ assertThat(activity.isFinishing()).isFalse();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySetupWizardUtilsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySetupWizardUtilsTest.java
new file mode 100644
index 00000000000..e79b12231c9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySetupWizardUtilsTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 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.settings.accessibility;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.google.android.setupdesign.GlifPreferenceLayout;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link AccessibilitySetupWizardUtils} */
+@RunWith(RobolectricTestRunner.class)
+public class AccessibilitySetupWizardUtilsTest {
+
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+
+ @Test
+ public void setupGlifPreferenceLayout_assignValueToVariable() {
+ final String title = "title";
+ final String description = "description";
+ final Drawable icon = mock(Drawable.class);
+ GlifPreferenceLayout layout = mock(GlifPreferenceLayout.class);
+
+ AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(mContext, layout, title,
+ description, icon);
+
+ verify(layout).setHeaderText(title);
+ verify(layout).setDescriptionText(description);
+ verify(layout).setIcon(icon);
+ verify(layout).setHeaderText(title);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
index 49489865049..c2de51050e8 100644
--- a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
@@ -152,7 +152,8 @@ public class BrightnessLevelPreferenceControllerTest {
System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
when(mDisplay.getBrightnessInfo()).thenReturn(
- new BrightnessInfo(0.1f, 0.0f, 1.0f, BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF));
+ new BrightnessInfo(0.1f, 0.0f, 1.0f, BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF,
+ 0.5f));
mController.updateState(mPreference);
@@ -166,7 +167,8 @@ public class BrightnessLevelPreferenceControllerTest {
System.SCREEN_BRIGHTNESS_MODE_MANUAL);
when(mDisplay.getBrightnessInfo()).thenReturn(
- new BrightnessInfo(0.5f, 0.0f, 1.0f, BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF));
+ new BrightnessInfo(0.5f, 0.0f, 1.0f, BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF,
+ 0.5f));
mController.updateState(mPreference);
diff --git a/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java
index 6ad99745748..62b34e26546 100644
--- a/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java
@@ -29,6 +29,7 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.testutils.shadow.SettingsShadowResources;
+import com.android.settings.testutils.shadow.ShadowActivityEmbeddingUtils;
import com.google.common.collect.Lists;
@@ -43,7 +44,7 @@ import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowPackageManager;
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {SettingsShadowResources.class})
+@Config(shadows = {SettingsShadowResources.class, ShadowActivityEmbeddingUtils.class})
public class TopLevelWallpaperPreferenceControllerTest {
private static final String TEST_KEY = "test_key";
@@ -204,18 +205,32 @@ public class TopLevelWallpaperPreferenceControllerTest {
}
@Test
- public void handlePreferenceTreeClick_launchClearTask() {
- mShadowPackageManager.setResolveInfosForIntent(
- mWallpaperIntent, Lists.newArrayList());
+ public void handlePreferenceTreeClick_embeddingActivityDisabled_launchWithTaskFlag() {
+ ShadowActivityEmbeddingUtils.setIsEmbeddingActivityEnabled(false);
mShadowPackageManager.setResolveInfosForIntent(
mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
-
Preference preference = new Preference(mContext);
preference.setKey(TEST_KEY);
mController.handlePreferenceTreeClick(preference);
- assertThat((Shadows.shadowOf(mContext).getNextStartedActivityForResult()
- .intent.getFlags() & Intent.FLAG_ACTIVITY_CLEAR_TASK) != 0).isTrue();
+ int flags = Shadows.shadowOf(mContext).getNextStartedActivityForResult().intent.getFlags();
+ assertThat((flags & Intent.FLAG_ACTIVITY_NEW_TASK) != 0).isTrue();
+ assertThat((flags & Intent.FLAG_ACTIVITY_CLEAR_TASK) != 0).isTrue();
+ }
+
+ @Test
+ public void handlePreferenceTreeClick_embeddingActivityEnabled_launchWithoutTaskFlag() {
+ ShadowActivityEmbeddingUtils.setIsEmbeddingActivityEnabled(true);
+ mShadowPackageManager.setResolveInfosForIntent(
+ mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
+ Preference preference = new Preference(mContext);
+ preference.setKey(TEST_KEY);
+
+ mController.handlePreferenceTreeClick(preference);
+
+ int flags = Shadows.shadowOf(mContext).getNextStartedActivityForResult().intent.getFlags();
+ assertThat((flags & Intent.FLAG_ACTIVITY_NEW_TASK) != 0).isFalse();
+ assertThat((flags & Intent.FLAG_ACTIVITY_CLEAR_TASK) != 0).isFalse();
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
index c0b566a5f4b..95cacbbbc0f 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
@@ -156,6 +156,11 @@ public class PowerUsageFeatureProviderImplTest {
assertThat(mPowerFeatureProvider.isSmartBatterySupported()).isFalse();
}
+ @Test
+ public void testIsAdaptiveChargingSupported_returnFalse() {
+ assertThat(mPowerFeatureProvider.isAdaptiveChargingSupported()).isFalse();
+ }
+
@Test
public void testGetResumeChargeIntent_returnNull() {
assertThat(mPowerFeatureProvider.getResumeChargeIntent()).isNull();
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowActivityEmbeddingUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowActivityEmbeddingUtils.java
new file mode 100644
index 00000000000..ddd7c8821ae
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowActivityEmbeddingUtils.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2021 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.settings.testutils.shadow;
+
+import android.content.Context;
+
+import com.android.settings.activityembedding.ActivityEmbeddingUtils;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+/**
+ * Shadow class for {@link ActivityEmbeddingUtils} to test embedding activity features.
+ */
+@Implements(ActivityEmbeddingUtils.class)
+public class ShadowActivityEmbeddingUtils {
+ private static boolean sIsEmbeddingActivityEnabled;
+
+ @Implementation
+ public static boolean isEmbeddingActivityEnabled(Context context) {
+ return sIsEmbeddingActivityEnabled;
+ }
+
+ public static void setIsEmbeddingActivityEnabled(boolean isEmbeddingActivityEnabled) {
+ sIsEmbeddingActivityEnabled = isEmbeddingActivityEnabled;
+ }
+}