• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.permissioncontroller.permission.ui.handheld;
18 
19 import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
20 import static com.android.permissioncontroller.permission.ui.handheld.UtilsKt.pressBack;
21 
22 import android.os.Bundle;
23 import android.view.MenuItem;
24 
25 import androidx.lifecycle.ViewModelProvider;
26 
27 import com.android.permission.flags.Flags;
28 import com.android.permissioncontroller.permission.data.PermGroupsPackagesUiInfoLiveData;
29 import com.android.permissioncontroller.permission.ui.model.ManageCustomPermissionsViewModel;
30 import com.android.permissioncontroller.permission.ui.model.ManageCustomPermissionsViewModelFactory;
31 
32 import java.util.HashMap;
33 
34 /**
35  * Fragment that allows the user to manage custom permissions.
36  */
37 public class ManageCustomPermissionsFragment extends ManagePermissionsFragment {
38 
39     private ManageCustomPermissionsViewModel mViewModel;
40 
41     /**
42      * Create a bundle with the arguments needed by this fragment
43      *
44      * @param sessionId The current session ID
45      * @return A bundle with all of the args placed
46      */
createArgs(long sessionId)47     public static Bundle createArgs(long sessionId) {
48         Bundle arguments = new Bundle();
49         arguments.putLong(EXTRA_SESSION_ID, sessionId);
50         return arguments;
51     }
52 
getPermGroupsLiveData()53     private PermGroupsPackagesUiInfoLiveData getPermGroupsLiveData() {
54         if (Flags.declutteredPermissionManagerEnabled()) {
55             return mViewModel.getAdditionaPermGroupsUiInfo();
56         } else {
57             return mViewModel.getUiDataLiveData();
58         }
59     }
60 
61     @Override
onCreate(Bundle icicle)62     public void onCreate(Bundle icicle) {
63         super.onCreate(icicle);
64 
65         ManageCustomPermissionsViewModelFactory factory =
66                 new ManageCustomPermissionsViewModelFactory(getActivity().getApplication());
67         mViewModel = new ViewModelProvider(this, factory)
68                 .get(ManageCustomPermissionsViewModel.class);
69         mPermissionGroups = getPermGroupsLiveData().getValue();
70 
71         getPermGroupsLiveData().observe(this, permissionGroups -> {
72             if (permissionGroups == null) {
73                 mPermissionGroups = new HashMap<>();
74             } else {
75                 mPermissionGroups = permissionGroups;
76             }
77             updatePermissionsUi();
78         });
79     }
80 
81     @Override
showPermissionApps(String permissionGroupName)82     public void showPermissionApps(String permissionGroupName) {
83         mViewModel.showPermissionApps(this, PermissionAppsFragment.createArgs(
84                 permissionGroupName, getArguments().getLong(EXTRA_SESSION_ID)));
85     }
86 
87     @Override
onStart()88     public void onStart() {
89         super.onStart();
90 
91         getActivity().setTitle(com.android.permissioncontroller.R.string.additional_permissions);
92     }
93 
94     @Override
onOptionsItemSelected(MenuItem item)95     public boolean onOptionsItemSelected(MenuItem item) {
96         switch (item.getItemId()) {
97             case android.R.id.home:
98                 pressBack(this);
99                 return true;
100         }
101         return super.onOptionsItemSelected(item);
102     }
103 }
104