Snap for 7798846 from f83531e0b3 to sc-v2-release
Change-Id: If6c36e62f98d51390ed14b39145940d99cbe6bac
This commit is contained in:
@@ -1679,6 +1679,10 @@
|
||||
android:value="com.android.settings.accessibility.AccessibilitySettingsForSetupWizard" />
|
||||
</activity-alias>
|
||||
|
||||
<activity
|
||||
android:name=".accessibility.AccessibilityScreenSizeForSetupWizardActivity"
|
||||
android:exported="false"/>
|
||||
|
||||
<activity
|
||||
android:name="Settings$AccessibilityDaltonizerSettingsActivity"
|
||||
android:exported="true"
|
||||
@@ -3675,6 +3679,11 @@
|
||||
</intent-filter>
|
||||
</provider>
|
||||
|
||||
<provider
|
||||
android:name=".activityembedding.ActivityEmbeddingProvider"
|
||||
android:authorities="com.android.settings.activityembedding"
|
||||
android:exported="true"/>
|
||||
|
||||
<activity
|
||||
android:name=".wifi.dpp.WifiDppConfiguratorActivity"
|
||||
android:exported="true">
|
||||
|
||||
Binary file not shown.
31
res/layout/accessibility_screen_size_setup_wizard.xml
Normal file
31
res/layout/accessibility_screen_size_setup_wizard.xml
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:icon="@drawable/ic_accessibility_visibility"
|
||||
app:sucHeaderText="@string/title_font_size"
|
||||
app:sudDescriptionText="@string/short_summary_font_size">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/content_frame"
|
||||
android:layout_marginTop="@dimen/preview_size_top_margin"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
86
res/layout/suw_font_size_fragment.xml
Normal file
86
res/layout/suw_font_size_fragment.xml
Normal file
@@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
<androidx.core.widget.NestedScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fillViewport="true">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<include layout="@layout/suw_preview_seek_bar_view_pager"/>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
|
||||
|
||||
<com.android.settings.widget.DotsPageIndicator
|
||||
android:id="@+id/page_indicator"
|
||||
style="@style/PreviewPagerPageIndicator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:padding="3dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/current_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:padding="6dp"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.TextView"
|
||||
android:elevation="2dp"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingTop="8dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/smaller"
|
||||
android:src="@drawable/ic_font_size_16dp"
|
||||
android:contentDescription="@string/font_size_make_smaller_desc"
|
||||
style="@style/screen_size_imageview_style"/>
|
||||
|
||||
<com.android.settings.widget.LabeledSeekBar
|
||||
android:id="@+id/seek_bar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_weight="1"
|
||||
style="@android:style/Widget.Material.SeekBar.Discrete"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/larger"
|
||||
android:src="@drawable/ic_font_size_24dp"
|
||||
android:contentDescription="@string/font_size_make_larger_desc"
|
||||
style="@style/screen_size_imageview_style"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/font_size_summary"
|
||||
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
42
res/layout/suw_preview_seek_bar_view_pager.xml
Normal file
42
res/layout/suw_preview_seek_bar_view_pager.xml
Normal file
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:paddingStart="@dimen/preview_pager_padding"
|
||||
android:paddingEnd="@dimen/preview_pager_padding"
|
||||
android:background="@drawable/preview_seek_bar_outline" >
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/preview_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="200dp"
|
||||
android:layout_weight="1"
|
||||
android:background="?android:attr/colorBackground"
|
||||
android:contentDescription="@string/preview_pager_content_description" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="36dp"
|
||||
android:paddingStart="32dp"
|
||||
android:gravity="start|center"
|
||||
android:text="@string/screen_zoom_preview_title"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title"
|
||||
android:importantForAccessibility="no" />
|
||||
</LinearLayout>
|
||||
|
||||
85
res/layout/suw_screen_zoom_fragment.xml
Normal file
85
res/layout/suw_screen_zoom_fragment.xml
Normal file
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
<androidx.core.widget.NestedScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fillViewport="true">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<include layout="@layout/suw_preview_seek_bar_view_pager"/>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
|
||||
|
||||
<com.android.settings.widget.DotsPageIndicator
|
||||
android:id="@+id/page_indicator"
|
||||
style="@style/PreviewPagerPageIndicator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:padding="3dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/current_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:padding="6dp"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.TextView"
|
||||
android:elevation="2dp"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/smaller"
|
||||
android:src="@drawable/ic_remove_24dp"
|
||||
android:contentDescription="@string/screen_zoom_make_smaller_desc"
|
||||
style="@style/screen_size_imageview_style"/>
|
||||
|
||||
<com.android.settings.widget.LabeledSeekBar
|
||||
android:id="@+id/seek_bar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_weight="1"
|
||||
style="@android:style/Widget.Material.SeekBar.Discrete"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/larger"
|
||||
android:src="@drawable/ic_add_24dp"
|
||||
android:contentDescription="@string/screen_zoom_make_larger_desc"
|
||||
style="@style/screen_size_imageview_style"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/screen_zoom_summary"
|
||||
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
19
res/values-sw300dp-land-v31/dimens.xml
Normal file
19
res/values-sw300dp-land-v31/dimens.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
<resources>
|
||||
<!-- Top margin for preview view pager -->
|
||||
<dimen name="preview_size_top_margin">0dp</dimen>
|
||||
</resources>
|
||||
@@ -434,6 +434,9 @@
|
||||
<!-- Choose SIM Activity dimens -->
|
||||
<dimen name="subtitle_bottom_padding">24dp</dimen>
|
||||
|
||||
<!-- Top margin for preview view pager -->
|
||||
<dimen name="preview_size_top_margin">-12dp</dimen>
|
||||
|
||||
<!-- Battery usage chart view component -->
|
||||
<dimen name="chartview_text_padding">6dp</dimen>
|
||||
<dimen name="chartview_divider_width">1dp</dimen>
|
||||
|
||||
@@ -21,4 +21,9 @@
|
||||
<integer name="job_anomaly_detection">102</integer>
|
||||
<integer name="device_index_update">103</integer>
|
||||
<integer name="sim_notification_send">104</integer>
|
||||
|
||||
<!-- Define the font/display size fragment id in the
|
||||
accessibility_settings_for_setup_wizard.xml. -->
|
||||
<integer name="suw_font_size_fragment_no">0</integer>
|
||||
<integer name="suw_display_size_fragment_no">1</integer>
|
||||
</resources>
|
||||
|
||||
@@ -6283,6 +6283,8 @@
|
||||
|
||||
<!-- Summary for battery manager when it is on -->
|
||||
<string name="battery_manager_summary">Detecting when apps drain battery</string>
|
||||
<!-- Summary for battery manager when it is on. [CHAR LIMIT=NONE] -->
|
||||
<string name="battery_manager_summary_unsupported">Detecting when apps drain battery</string>
|
||||
|
||||
<!-- Summary for battery manager when it is off -->
|
||||
<string name="battery_manager_off">Off</string>
|
||||
|
||||
@@ -237,6 +237,16 @@
|
||||
<item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Small</item>
|
||||
</style>
|
||||
|
||||
<style name="screen_size_imageview_style">
|
||||
<item name="android:layout_width">48dp</item>
|
||||
<item name="android:layout_height">48dp</item>
|
||||
<item name="android:background">?android:attr/selectableItemBackgroundBorderless</item>
|
||||
<item name="android:tint">?android:attr/textColorPrimary</item>
|
||||
<item name="android:tintMode">src_in</item>
|
||||
<item name="android:scaleType">center</item>
|
||||
<item name="android:focusable">true</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance" parent="android:TextAppearance.DeviceDefault"/>
|
||||
|
||||
<style name="TextAppearance.info_label">
|
||||
|
||||
@@ -234,6 +234,7 @@
|
||||
<item name="android:listPreferredItemPaddingEnd">16dp</item>
|
||||
<item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item>
|
||||
<item name="android:switchStyle">@style/Switch.SettingsLib</item>
|
||||
<item name="preferenceFragmentCompatStyle">@style/SetupWizardPreferenceFragmentStyle</item>
|
||||
</style>
|
||||
|
||||
<!-- This theme was applied to Settings pages which are running under SUW with DynamicColor. -->
|
||||
@@ -243,6 +244,7 @@
|
||||
<item name="android:listPreferredItemPaddingEnd">16dp</item>
|
||||
<item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item>
|
||||
<item name="android:switchStyle">@style/Switch.SettingsLib</item>
|
||||
<item name="preferenceFragmentCompatStyle">@style/SetupWizardPreferenceFragmentStyle</item>
|
||||
</style>
|
||||
|
||||
<!-- DayNight themes -->
|
||||
|
||||
@@ -21,18 +21,28 @@
|
||||
android:title="@string/vision_settings_title">
|
||||
|
||||
<Preference
|
||||
android:fragment="com.android.settings.display.FontSizePreferenceFragmentForSetupWizard"
|
||||
android:key="font_size_preference"
|
||||
android:icon="@drawable/ic_font_size"
|
||||
android:summary="@string/short_summary_font_size"
|
||||
android:title="@string/title_font_size"/>
|
||||
android:title="@string/title_font_size">
|
||||
<intent
|
||||
android:targetPackage="com.android.settings"
|
||||
android:targetClass="com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity">
|
||||
<extra android:name="vision_fragment_no" android:value="@integer/suw_font_size_fragment_no"/>
|
||||
</intent>
|
||||
</Preference>
|
||||
|
||||
<com.android.settings.display.ScreenZoomPreference
|
||||
android:fragment="com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard"
|
||||
android:key="force_density_preference"
|
||||
android:icon="@drawable/ic_screen_zoom"
|
||||
android:summary="@string/screen_zoom_short_summary"
|
||||
android:title="@string/screen_zoom_title"/>
|
||||
android:title="@string/screen_zoom_title">
|
||||
<intent
|
||||
android:targetPackage="com.android.settings"
|
||||
android:targetClass="com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity">
|
||||
<extra android:name="vision_fragment_no" android:value="@integer/suw_display_size_fragment_no"/>
|
||||
</intent>
|
||||
</com.android.settings.display.ScreenZoomPreference>
|
||||
|
||||
<Preference
|
||||
android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment"
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
/*
|
||||
* 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.app.settings.SettingsEnums;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.InstrumentedActivity;
|
||||
import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
|
||||
import com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard;
|
||||
|
||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
||||
import com.google.android.setupcompat.template.FooterButton;
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
import com.google.android.setupdesign.util.ThemeHelper;
|
||||
|
||||
/** Settings font/display size activity for SUW. */
|
||||
public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedActivity {
|
||||
private static final String TAG = "ScreenSizeForSetup";
|
||||
|
||||
// A parameter decides which fragment ({@link FontSizePreferenceFragmentForSetupWizard} or
|
||||
// {@link ScreenZoomPreferenceFragmentForSetupWizard}) will be visioned.
|
||||
static final String VISION_FRAGMENT_NO = "vision_fragment_no";
|
||||
|
||||
private int mFragmentNo;
|
||||
private int mFontSizeFragmentNo;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mFontSizeFragmentNo = getResources().getInteger(R.integer.suw_font_size_fragment_no);
|
||||
final int appliedTheme = ThemeHelper.trySetDynamicColor(this)
|
||||
? R.style.SudDynamicColorThemeGlifV3_DayNight : R.style.SudThemeGlifV3_DayNight;
|
||||
setTheme(appliedTheme);
|
||||
setContentView(R.layout.accessibility_screen_size_setup_wizard);
|
||||
mFragmentNo = getIntent().getExtras().getInt(VISION_FRAGMENT_NO);
|
||||
Log.d(TAG, "onCreate: fragment no: " + mFragmentNo);
|
||||
generateHeader(mFragmentNo);
|
||||
scrollToBottom();
|
||||
initFooterButton();
|
||||
if (savedInstanceState == null) {
|
||||
final PreferenceFragmentCompat fragment =
|
||||
(mFragmentNo == mFontSizeFragmentNo)
|
||||
? new FontSizePreferenceFragmentForSetupWizard()
|
||||
: new ScreenZoomPreferenceFragmentForSetupWizard();
|
||||
getSupportFragmentManager()
|
||||
.beginTransaction()
|
||||
.replace(R.id.content_frame, fragment)
|
||||
.commit();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return mFragmentNo == mFontSizeFragmentNo ? SettingsEnums.SUW_ACCESSIBILITY_FONT_SIZE
|
||||
: SettingsEnums.SUW_ACCESSIBILITY_DISPLAY_SIZE;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void generateHeader(int fragmentNo) {
|
||||
((TextView) findViewById(R.id.suc_layout_title)).setText(
|
||||
fragmentNo == mFontSizeFragmentNo ? R.string.title_font_size
|
||||
: R.string.screen_zoom_title);
|
||||
((TextView) findViewById(R.id.sud_layout_subtitle)).setText(
|
||||
fragmentNo == mFontSizeFragmentNo ? R.string.short_summary_font_size
|
||||
: R.string.screen_zoom_short_summary);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void initFooterButton() {
|
||||
final GlifLayout layout = findViewById(R.id.setup_wizard_layout);
|
||||
final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
|
||||
final View.OnClickListener nextButtonListener =
|
||||
v -> {
|
||||
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);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -109,6 +109,10 @@ public class PreviewPagerAdapter extends PagerAdapter {
|
||||
return (view == object);
|
||||
}
|
||||
|
||||
FrameLayout[] getPreviewFrames() {
|
||||
return mPreviewFrames;
|
||||
}
|
||||
|
||||
boolean isAnimating() {
|
||||
return mAnimationCounter > 0;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -350,7 +350,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
private void addAllPreferences() {
|
||||
final List<BatteryDiffEntry> 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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -166,6 +166,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAdaptiveChargingSupported() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Intent getResumeChargeIntent() {
|
||||
return null;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -46,7 +45,8 @@ public class AccessibilitySettingsForSetupWizardActivityTest {
|
||||
public void createSetupAccessibilityActivity_shouldBeSUWTheme() {
|
||||
final Intent intent = new Intent();
|
||||
AccessibilitySettingsForSetupWizardActivity activity =
|
||||
Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class, intent).get();
|
||||
Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
|
||||
intent).get();
|
||||
|
||||
assertThat(activity.getThemeResId()).isEqualTo(R.style.GlifV3Theme_Light);
|
||||
}
|
||||
@@ -56,16 +56,17 @@ public class AccessibilitySettingsForSetupWizardActivityTest {
|
||||
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();
|
||||
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();
|
||||
|
||||
final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
|
||||
assertThat(launchIntent).isNotNull();
|
||||
assertThat(launchIntent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
|
||||
FontSizePreferenceFragmentForSetupWizard.class.getName());
|
||||
assertThat(launchIntent.getIntExtra(VISION_FRAGMENT_NO, -1)).isEqualTo(
|
||||
activity.getResources().getInteger(R.integer.suw_font_size_fragment_no));
|
||||
assertThat(activity.isFinishing()).isTrue();
|
||||
}
|
||||
|
||||
@@ -73,9 +74,9 @@ public class AccessibilitySettingsForSetupWizardActivityTest {
|
||||
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();
|
||||
new Intent(Intent.ACTION_MAIN)
|
||||
.putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
|
||||
.putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
|
||||
|
||||
activity.tryLaunchFontSizeSettings();
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user