diff options
author | Oleg Kibirev <olegk@google.com> | 2023-12-07 00:46:49 +0000 |
---|---|---|
committer | Oleg Kibirev <olegk@google.com> | 2023-12-08 19:45:50 +0000 |
commit | e6920c7ede6abcf134750582b732cba13c11993b (patch) | |
tree | 782335eb43a1eadf8d04d3c6bc2f467fb04edaf2 /Settings/src/com/android/tv/settings/system/CreateRestrictedProfileFragment.java | |
parent | dc52b5a3021574014c0fd0b9058751e454856abe (diff) | |
download | TvSettings-e6920c7ede6abcf134750582b732cba13c11993b.tar.gz |
Provide Watson TV Settings intents to create or enter restricted profile
This allows setupwraith to trigger these operations for regulatory compliance.
Bug: 312260906
To test:
adb shell am start -a com.android.tv.settings.action.CREATE_RESTRICTED_PROFILE
adb shell am start -a com.android.tv.settings.action.ENTER_RESTRICTED_PROFILE
Programmatic callers can use startActivityForResult and check for RESULT_OK to ensure user completed requested operation.
Change-Id: If96a078be35295fe09168393d1782592e0ebce70
Diffstat (limited to 'Settings/src/com/android/tv/settings/system/CreateRestrictedProfileFragment.java')
-rw-r--r-- | Settings/src/com/android/tv/settings/system/CreateRestrictedProfileFragment.java | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/Settings/src/com/android/tv/settings/system/CreateRestrictedProfileFragment.java b/Settings/src/com/android/tv/settings/system/CreateRestrictedProfileFragment.java new file mode 100644 index 000000000..595366727 --- /dev/null +++ b/Settings/src/com/android/tv/settings/system/CreateRestrictedProfileFragment.java @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2023 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.tv.settings.system; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.os.UserManager; + +import androidx.annotation.Keep; +import androidx.preference.Preference; + +import com.android.tv.settings.R; +import com.android.tv.settings.users.RestrictedProfileModel; + +/** + * A subset of security settings to create a restricted profile. + */ +@Keep +public class CreateRestrictedProfileFragment extends BaseSecurityFragment { + private static final String KEY_RESTRICTED_PROFILE_ALREADY_CREATED = + "restricted_profile_already_created"; + + private Preference mRestrictedProfileCreatePref; + private Preference mRestrictedProfileAlreadyCreatedPref; + + public static CreateRestrictedProfileFragment newInstance() { + return new CreateRestrictedProfileFragment(); + } + + /** + * Called by other Fragments to decide whether to show or hide profile-related views. + */ + public static boolean isRestrictedProfileInEffect(Context context) { + return new RestrictedProfileModel(context).isCurrentUser(); + } + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + setPreferencesFromResource(R.xml.create_restricted_profile, null); + mRestrictedProfileCreatePref = findPreference(KEY_RESTRICTED_PROFILE_CREATE); + mRestrictedProfileAlreadyCreatedPref = findPreference( + KEY_RESTRICTED_PROFILE_ALREADY_CREATED); + refresh(); + } + + @Override + protected void refresh() { + mRestrictedProfileCreatePref.setEnabled( + UserManager.supportsMultipleUsers() && !isRestrictedProfileCreationInProgress()); + if (mRestrictedProfile.getUser() != null) { + mRestrictedProfileAlreadyCreatedPref.setVisible(true); + mRestrictedProfileCreatePref.setVisible(false); + } else { + mRestrictedProfileAlreadyCreatedPref.setVisible(false); + mRestrictedProfileCreatePref.setVisible(true); + } + } + + @Override + public boolean onPreferenceTreeClick(Preference preference) { + final String key = preference.getKey(); + if (KEY_RESTRICTED_PROFILE_SKIP.equals(key)) { + requireActivity().setResult(Activity.RESULT_CANCELED); + requireActivity().finish(); + return true; + } + return super.onPreferenceTreeClick(preference); + } + + @Override + protected boolean shouldExitAfterUpdatingApps() { + return true; + } +} |