diff --git a/res/values/themes_suw.xml b/res/values/themes_suw.xml
index a0585fd9115..6fd9b75d332 100644
--- a/res/values/themes_suw.xml
+++ b/res/values/themes_suw.xml
@@ -234,6 +234,7 @@
- 16dp
- @style/PreferenceTheme.SettingsLib
- @style/Switch.SettingsLib
+ - @style/SetupWizardPreferenceFragmentStyle
@@ -243,6 +244,7 @@
- 16dp
- @style/PreferenceTheme.SettingsLib
- @style/Switch.SettingsLib
+ - @style/SetupWizardPreferenceFragmentStyle
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/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/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);
+ }
+}