Clean up TARE

Bug: 331617295
Flag: EXEMPT clean up
Test: m Settings
Change-Id: Ie37617a082c7036672d2901ed45146932a5d97d8
This commit is contained in:
Chaohui Wang
2024-09-04 17:00:41 +08:00
parent 637984a38d
commit d7a2aeb82d
9 changed files with 0 additions and 451 deletions

View File

@@ -2275,13 +2275,6 @@
android:value="com.android.settings.privacy.PrivacyControlsFragment" /> android:value="com.android.settings.privacy.PrivacyControlsFragment" />
</activity> </activity>
<activity android:name=".development.tare.TareHomePage"
android:label="@string/tare_settings"
android:exported="false" />
<activity android:name=".development.tare.DropdownActivity"
android:exported="false" />
<activity android:name="SetFullBackupPassword" <activity android:name="SetFullBackupPassword"
android:label="@string/local_backup_password_title" android:label="@string/local_backup_password_title"
android:exported="false" /> android:exported="false" />

View File

@@ -1,42 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2022 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="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:paddingTop="16dp"
android:paddingBottom="12dp">
<EditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textCapSentences"
android:minHeight="@dimen/min_tap_target_size"
android:maxLength="50"
android:singleLine="true" />
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="@dimen/min_tap_target_size" />
</LinearLayout>

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/factor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"
android:paddingLeft="35dp" />
<TextView
android:id="@+id/factor_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body1"
android:paddingLeft="35dp" />
</LinearLayout>

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".development.tare.DropdownActivity">
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:theme="@style/Widget.PopupWindow.Settings" />
<FrameLayout
android:id="@+id/frame_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constrainedHeight="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner"
app:layout_constraintVertical_bias="0" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,67 +0,0 @@
<?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:orientation="vertical"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".development.tare.TareHomePage">
<Switch
android:id="@+id/on_switch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:textOff="@string/tare_off"
android:textOn="@string/tare_on"
android:showText="true"
android:background="?android:attr/colorBackground" />
<TextView
android:id="@+id/alarmmanager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:clickable="true"
android:onClick="launchAlarmManagerPage"
android:text="@string/tare_alarmmanager"
android:textColor="?android:attr/textColorSecondary" />
<TextView
android:id="@+id/jobscheduler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:clickable="true"
android:text="@string/tare_jobscheduler"
android:textColor="?android:attr/textColorSecondary"
android:onClick="launchJobSchedulerPage" />
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?android:attr/listDivider" />
<Button
android:id="@+id/revert_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:onClick="revertSettings"
android:text="@string/tare_revert"
style="@style/ActionPrimaryButton" />
</LinearLayout>

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:orientation="vertical">
<ExpandableListView
android:id="@+id/factor_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

View File

@@ -13017,271 +13017,6 @@
<!-- Strings for Dialog connect button --> <!-- Strings for Dialog connect button -->
<string name="bluetooth_connect_access_dialog_positive">Connect</string> <string name="bluetooth_connect_access_dialog_positive">Connect</string>
<!-- Title for the button to edit The Android Resource Economy settings. "TARE" is the name of
the feature that contains the AlarmManager and JobScheduler policies which are both android
APIs. AlarmManager and JobScheduler are the names of Android system services and cannot be
translated. "TARE" is not translatable. [CHAR LIMIT=NONE] -->
<string name="tare_title" translatable="false">TARE</string>
<!-- TARE settings title in developer options; "TARE" is the name of the feature and cannot be
translated. [CHAR LIMIT=40] -->
<string name="tare_settings">TARE Settings</string>
<!-- Summary for the TARE feature being on (ie. enabled) [CHAR LIMIT=NONE] -->
<string name="tare_on">On</string>
<!-- Summary for the TARE feature being off (ie. disabled) [CHAR LIMIT=NONE] -->
<string name="tare_off">Off</string>
<!-- Allows user to revert the TARE settings to their default values [CHAR LIMIT=40] -->
<string name="tare_revert">Revert to Default Settings</string>
<!-- Allows user to view AlarmManager policy factors. Alarm in this context is referring to the
possible alarm cases in the AlarmManager policy. AlarmManager is the name of an Android system
service and cannot be translated. [CHAR LIMIT=40]-->
<string name="tare_alarmmanager" translatable="false">AlarmManager</string>
<!-- Allows user to view JobScheduler policy factors. JobScheduler is the name of an Android
system service and cannot be translated.[CHAR LIMIT=40]-->
<string name="tare_jobscheduler" translatable="false">JobScheduler</string>
<!-- Toast notifying the developer that settings were reverted to their default values in
TARE [CHAR LIMIT=40]-->
<string name="tare_settings_reverted_toast">Settings reverted to default.</string>
<!-- Title for the TARE policy factor that determines the maximum credits an app can have in one
battery life cycle. Satiated means battery is fully charged; If this is not easily translatable,
translate "maximum balance when device is fully charged" instead. Balance is the same meaning as
having money in a bank account. Balance in our feature is the amount of Android Resource Credits
an app can have. Android Resource Credits are a form of payment used by apps to be able to
perform tasks. [CHAR LIMIT=80]-->
<string name="tare_max_satiated_balance">Maximum Satiated Balance</string>
<!-- Title for the TARE policy factors that affect how many credits an app may have. Balance
in this context is the same as "bank balance" or "account balance" (ie. how much "money" may be
in a bank account). [CHAR LIMIT=55]-->
<string name="tare_balances">Balances</string>
<!-- Title for the TARE section to modify consumption limits. "Consumption" refers to the idea
using resources that are not replenished. [CHAR LIMIT=55]-->
<string name="tare_consumption_limits">Consumption Limits</string>
<!-- Title for the TARE policy factor that determines the initial maximum amount of credits that
can be consumed by all the apps [CHAR LIMIT=80]-->
<string name="tare_initial_consumption_limit">Initial Consumption Limit</string>
<!-- Title for the TARE policy factor that determines the minimum consumption limit the system
can have [CHAR LIMIT=80]-->
<string name="tare_min_consumption_limit">Minimum Consumption Limit</string>
<!-- Title for the TARE policy factor that determines the maximum consumption limit the system
can have [CHAR LIMIT=80]-->
<string name="tare_max_consumption_limit">Maximum Consumption Limit</string>
<!-- Titles for the consumption limits factors. [CHAR LIMIT=40]-->
<string-array name="tare_consumption_limit_subfactors" translatable="false">
<item>@string/tare_initial_consumption_limit</item>
<item>@string/tare_min_consumption_limit</item>
<item>@string/tare_max_consumption_limit</item>
</string-array>
<!-- Title for the various modifiers that alter the cost of TARE tasks based on battery status
(charging, power save mode, etc.) [CHAR LIMIT=40]-->
<string name="tare_modifiers">Modifiers</string>
<!-- Title for the various TARE policy's actions' cost to produce. "Cost to produce" refers to
how many credits it costs the system to perform (produce) the action. [CHAR LIMIT=40]-->
<string name="tare_actions_ctp">Actions (Cost to Produce)</string>
<!-- Title for the various TARE policy's actions' starting prices [CHAR LIMIT=40]-->
<string name="tare_actions_base_price">Actions (Base Price)</string>
<!-- Title for the rewards apps can obtain for each instance of an event that implies the user
finds the app behavior useful. [CHAR LIMIT=40]-->
<string name="tare_rewards_instantaneous">Rewards per single event</string>
<!-- Title for the rewards apps can obtain for the total duration (in seconds) of an event that
implies the user finds the app behavior useful. [CHAR LIMIT=40]-->
<string name="tare_rewards_ongoing">Rewards per second of event duration</string>
<!-- Title for the max rewards apps can obtain within a 24 hour period for different actions
that benefit the user. [CHAR LIMIT=40]-->
<string name="tare_rewards_max">Maximum Rewards Per Day</string>
<!-- Title for the Allow While Idle Exact Wakeup Alarm set via
AlarmManager.setExactAndAllowWhileIdle() [CHAR LIMIT=50]-->
<string name="tare_wakeup_exact_idle" translatable="false">
Allow While Idle Exact Wakeup Alarm</string>
<!-- Title for the Allow While Idle Inexact Wakeup Alarm set via
AlarmManager.setAndAllowWhileIdle() [CHAR LIMIT=50]-->
<string name="tare_wakeup_inexact_idle" translatable="false">
Allow While Idle Inexact Wakeup Alarm</string>
<!-- Title for the Exact Wakeup Alarm set via AlarmManager.setExact() [CHAR LIMIT=50]-->
<string name="tare_wakeup_exact" translatable="false">Exact Wakeup Alarm</string>
<!-- Title for the Inexact Wakeup Alarm set via AlarmManager.set() [CHAR LIMIT=50]-->
<string name="tare_wakeup_inexact" translatable="false">Inexact Wakeup Alarm</string>
<!-- Title for the Allow While Idle Exact NonWakeup Alarm set via
AlarmManager.setExactAndAllowWhileIdle() [CHAR LIMIT=50]-->
<string name="tare_nonwakeup_exact_idle" translatable="false">
Allow While Idle Exact NonWakeup Alarm</string>
<!-- Title for the Exact NonWakeup Alarm set via AlarmManager.setExact() [CHAR LIMIT=50]-->
<string name="tare_nonwakeup_exact" translatable="false">Exact NonWakeup Alarm</string>
<!-- Title for the Allow While Idle Inexact NonWakeup Alarm set via
AlarmManager.setAndAllowWhileIdle() [CHAR LIMIT=50]-->
<string name="tare_nonwakeup_inexact_idle" translatable="false">
Allow While Idle Inexact NonWakeup Alarm</string>
<!-- Title for the Inexact NonWakeup Alarm set via AlarmManager.set() [CHAR LIMIT=50]-->
<string name="tare_nonwakeup_inexact" translatable="false">Inexact NonWakeup Alarm</string>
<!-- Title for the AlarmClock alarm set via AlarmManager.setAlarmClock() [CHAR LIMIT=50]-->
<string name="tare_alarm_clock" translatable="false">AlarmClock</string>
<!-- The action of installing an application onto the device [CHAR LIMIT=50]-->
<string name="tare_app_install">App Install</string>
<!-- Top activity means an app is in the TOP android process state and is thus visible to the
user[CHAR LIMIT=50]-->
<string name="tare_top_activity">Top Activity</string>
<!-- An event type denoting that a notification was viewed by the user, as defined in
UsageEvents.java [CHAR LIMIT=50]-->
<string name="tare_notification_seen">Notification Seen</string>
<!-- An event type denoting that a notification was viewed by the user within 15 minutes
[CHAR LIMIT=50]-->
<string name="tare_notification_seen_15_min">Notification Seen Within 15 Minutes</string>
<!-- An event type denoting that a notification was interacted with in some way by the user
[CHAR LIMIT=50]-->
<string name="tare_notification_interaction">Notification Interaction</string>
<!-- An event type denoting that an app's widget was interacted with in some way by the user
[CHAR LIMIT=50]-->
<string name="tare_widget_interaction">Widget Interaction</string>
<!-- An event type denoting that an app was interacted with in some way by the user
[CHAR LIMIT=50]-->
<string name="tare_other_interaction">Other User Interaction</string>
<!-- Title for the initiation of a max priority job by an app as defined in the JobScheduler
API [CHAR LIMIT=50]-->
<string name="tare_job_max_start">Job Max Start</string>
<!-- Title of an event where a job with max priority is running, but it does not necessarily
mean the max priority job is running at that moment. In this context, running is a synonym for
“ongoing execution of a job with max priority”. [CHAR LIMIT=50]-->
<string name="tare_job_max_running">Job Max Running</string>
<!-- Title for the initiation of a high priority job by an app as defined in the JobScheduler
API [CHAR LIMIT=50]-->
<string name="tare_job_high_start">Job High Start</string>
<!-- Title of an event where a job with high priority is running, but it does not necessarily
mean the high priority job is running at that moment. In this context, running is a synonym for
“ongoing execution of a job with high priority”. [CHAR LIMIT=50]-->
<string name="tare_job_high_running">Job High Running</string>
<!-- Title for the initiation of a default priority job by an app as defined in the JobScheduler
API [CHAR LIMIT=50]-->
<string name="tare_job_default_start">Job Default Start</string>
<!-- Title of an event where a job with default priority is running, but it does not necessarily
mean the default job is running at that moment. In this context, running is a synonym for
“ongoing execution of a job with default priority”. [CHAR LIMIT=50]-->
<string name="tare_job_default_running">Job Default Running</string>
<!-- Title for the initiation of a low priority job by an app as defined in the JobScheduler
API [CHAR LIMIT=50]-->
<string name="tare_job_low_start">Job Low Start</string>
<!-- Title of an event where a job with low priority is running, but it does not necessarily
mean the low priority job is running at that moment. In this context, running is a synonym for
“ongoing execution of a job with low priority”. [CHAR LIMIT=50]-->
<string name="tare_job_low_running">Job Low Running</string>
<!-- Title for the initiation of a minimum priority job by an app as defined in the JobScheduler
API [CHAR LIMIT=50]-->
<string name="tare_job_min_start">Job Min Start</string>
<!-- Title of an event where a job with minimum priority is running, but it does not necessarily
mean the job is running at that moment. In this context, running is a synonym for
“ongoing execution of a job with minimum priority”. [CHAR LIMIT=50]-->
<string name="tare_job_min_running">Job Min Running</string>
<!-- Title for the penalty an app receives for letting a job use the maximum execution time and
time out [CHAR LIMIT=50]-->
<string name="tare_job_timeout_penalty">Job Timeout Penalty</string>
<!-- Title for the TARE factor that determines the minimum credits an app should have when the
device is fully charged. "Satiated" in this context means that the battery is fully charged.
Balance is the same meaning as having money in a bank account.
Exempted apps are those apps exempted from most power saving features. [CHAR LIMIT=80]-->
<string name="tare_min_balance_exempted">Minimum Satiated Balance (Exempted)</string>
<!-- Title for the TARE factor that determines the minimum credits an app should have when the
device is fully charged. "Satiated" in this context means that the battery is fully charged.
Balance is the same meaning as having money in a bank account.
A headless system app is a preinstalled app that does not have any activities/UI that the
user can interact with. [CHAR LIMIT=80]-->
<string name="tare_min_balance_headless_app">Minimum Satiated Balance (Headless System App)</string>
<!-- Title for the TARE factor that determines the minimum credits an app should have when the
device is fully charged. "Satiated" in this context means that the battery is fully charged.
Balance is the same meaning as having money in a bank account.
Remaining apps are those apps that don't fit into predefined categories. [CHAR LIMIT=80]-->
<string name="tare_min_balance_other_app">Minimum Satiated Balance (Remaining Apps)</string>
<!-- Title for the TARE factor that app updaters (for example, an app store) additional
credits. "Satiated" in this context means that the battery is fully charged.
Balance is the same meaning as having money in a bank account. [CHAR LIMIT=80]-->
<string name="tare_min_balance_addition_app_updater">Minimum Satiated Balance Addition (App Updaters)</string>
<!-- Titles for the minimum satiated credit balances for different types of apps
(per battery cycle). Satiated means battery is fully charged. [CHAR LIMIT=40]-->
<string-array name="tare_app_balance_subfactors" translatable="false">
<item>@string/tare_max_satiated_balance</item>
<item>@string/tare_min_balance_exempted</item>
<item>@string/tare_min_balance_headless_app</item>
<item>@string/tare_min_balance_other_app</item>
</string-array>
<!-- Titles for the minimum satiated credit balances for different types of apps
(per battery cycle). Satiated means battery is fully charged. [CHAR LIMIT=40]-->
<string-array name="tare_job_scheduler_app_balance_subfactors" translatable="false">
<item>@string/tare_max_satiated_balance</item>
<item>@string/tare_min_balance_exempted</item>
<item>@string/tare_min_balance_headless_app</item>
<item>@string/tare_min_balance_other_app</item>
<item>@string/tare_min_balance_addition_app_updater</item>
</string-array>
<!-- Various modifier subfactors that alter the cost of TARE tasks depending on what battery
state the device is in [CHAR LIMIT=50]-->
<string-array name="tare_modifiers_subfactors">
<item>Charging</item>
<!-- Doze refers to the Android Doze feature -->
<item>Doze</item>
<item>Power Save Mode</item>
<!-- An app's process state is the internal level of an app's process inside the system -->
<item>Process State</item>
</string-array>
<!-- Various AlarmManager alarms with different costs to produce and price paid by apps
if they want to produce these alarms. Alarm in this context refers to the possible alarm cases
in AlarmManager. [CHAR LIMIT=50]-->
<string-array name="tare_alarm_manager_actions" translatable="false">
<item>@string/tare_wakeup_exact_idle</item>
<item>@string/tare_wakeup_inexact_idle</item>
<item>@string/tare_wakeup_exact</item>
<item>@string/tare_wakeup_inexact</item>
<item>@string/tare_nonwakeup_exact_idle</item>
<item>@string/tare_nonwakeup_exact</item>
<item>@string/tare_nonwakeup_inexact_idle</item>
<item>@string/tare_nonwakeup_inexact</item>
<item>@string/tare_alarm_clock</item>
</string-array>
<!-- Titles for the different rewards apps could obtain for actions that benefit the user;
each has instant, ongoing, and max credit rewards apps could gain [CHAR LIMIT=50]-->
<string-array name="tare_rewards_subfactors" translatable="false">
<item>@string/tare_top_activity</item>
<item>@string/tare_notification_seen</item>
<!-- TODO: add back once supported <item>@string/tare_notification_seen_15_min</item> -->
<item>@string/tare_notification_interaction</item>
<item>@string/tare_widget_interaction</item>
<item>@string/tare_other_interaction</item>
</string-array>
<!-- Titles for the different rewards apps could obtain for actions that benefit the user;
each has instant, ongoing, and max credit rewards apps could gain [CHAR LIMIT=50]-->
<string-array name="tare_job_scheduler_rewards_subfactors" translatable="false">
<item>@string/tare_top_activity</item>
<item>@string/tare_notification_seen</item>
<item>@string/tare_notification_interaction</item>
<item>@string/tare_widget_interaction</item>
<item>@string/tare_other_interaction</item>
<item>@string/tare_app_install</item>
</string-array>
<!-- Various JobScheduler tasks with different costs to produce and willingness to pay by apps
if they want to carry out these different tasks [CHAR LIMIT=50]-->
<string-array name="tare_job_scheduler_actions" translatable="false">
<item>@string/tare_job_max_start</item>
<item>@string/tare_job_max_running</item>
<item>@string/tare_job_high_start</item>
<item>@string/tare_job_high_running</item>
<item>@string/tare_job_default_start</item>
<item>@string/tare_job_default_running</item>
<item>@string/tare_job_low_start</item>
<item>@string/tare_job_low_running</item>
<item>@string/tare_job_min_start</item>
<item>@string/tare_job_min_running</item>
<item>@string/tare_job_timeout_penalty</item>
</string-array>
<!-- Array used to populate dropdown menu with the different policies in the TARE
settings [CHAR LIMIT=40]-->
<string-array name="tare_policies" translatable="false">
<item>@string/tare_alarmmanager</item>
<item>@string/tare_jobscheduler</item>
</string-array>
<!-- TARE dialog button to proceed with a value change [CHAR LIMIT=none] -->
<string name="tare_dialog_confirm_button_title">Confirm</string>
<!-- Array used to populate dropdown menu to select the units of the factor value. Not
translatable since they're base units. [CHAR LIMIT=40]-->
<string-array name="tare_units" translatable="false">
<item>ARC</item>
<item>Cake</item>
</string-array>
<!-- Button to preview the selected screensaver in settings [CHAR LIMIT=40] --> <!-- Button to preview the selected screensaver in settings [CHAR LIMIT=40] -->
<string name="dream_preview_button_title">Preview</string> <string name="dream_preview_button_title">Preview</string>
<!-- The title of the category to show for the screensaver selector in settings [CHAR LIMIT=none] --> <!-- The title of the category to show for the screensaver selector in settings [CHAR LIMIT=none] -->

View File

@@ -727,11 +727,6 @@
android:title="@string/inactive_apps_title" android:title="@string/inactive_apps_title"
android:fragment="com.android.settings.fuelgauge.InactiveApps" /> android:fragment="com.android.settings.fuelgauge.InactiveApps" />
<Preference
android:key="tare"
android:title="@string/tare_title" >
</Preference>
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:key="force_allow_on_external" android:key="force_allow_on_external"
android:title="@string/force_allow_on_external" android:title="@string/force_allow_on_external"

View File

@@ -1,3 +0,0 @@
# Bug component: 330055
include platform/frameworks/base:/apex/jobscheduler/service/java/com/android/server/tare/OWNERS