• 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 package com.android.settings.network;
17 
18 import android.app.settings.SettingsEnums;
19 import android.content.Context;
20 import android.content.Intent;
21 
22 import androidx.annotation.NonNull;
23 import androidx.annotation.Nullable;
24 
25 import com.android.settings.R;
26 import com.android.settings.SettingsDumpService;
27 import com.android.settings.core.OnActivityResultListener;
28 import com.android.settings.dashboard.DashboardFragment;
29 import com.android.settings.search.BaseSearchIndexProvider;
30 import com.android.settingslib.core.AbstractPreferenceController;
31 import com.android.settingslib.core.lifecycle.Lifecycle;
32 import com.android.settingslib.search.SearchIndexable;
33 
34 import java.util.ArrayList;
35 import java.util.List;
36 
37 @SearchIndexable
38 public class NetworkDashboardFragment extends DashboardFragment implements
39         OnActivityResultListener {
40 
41     private static final String TAG = "NetworkDashboardFrag";
42 
43     @Override
getMetricsCategory()44     public int getMetricsCategory() {
45         return SettingsEnums.SETTINGS_NETWORK_CATEGORY;
46     }
47 
48     @Override
getLogTag()49     protected String getLogTag() {
50         return TAG;
51     }
52 
53     @Override
getPreferenceScreenResId()54     protected int getPreferenceScreenResId() {
55         return R.xml.network_provider_internet;
56     }
57 
58     @Override
onAttach(Context context)59     public void onAttach(Context context) {
60         super.onAttach(context);
61 
62         if (!isCatalystEnabled()) {
63             use(AirplaneModePreferenceController.class).setFragment(this);
64         }
65         use(NetworkProviderCallsSmsController.class).init(this);
66     }
67 
68     @Override
getHelpResource()69     public int getHelpResource() {
70         return R.string.help_url_network_dashboard;
71     }
72 
73     @Override
createPreferenceControllers(Context context)74     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
75         return buildPreferenceControllers(context, getSettingsLifecycle());
76     }
77 
buildPreferenceControllers(Context context, @Nullable Lifecycle lifecycle)78     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
79             @Nullable Lifecycle lifecycle) {
80         final VpnPreferenceController vpnPreferenceController =
81                 new VpnPreferenceController(context);
82         final PrivateDnsPreferenceController privateDnsPreferenceController =
83                 new PrivateDnsPreferenceController(context);
84 
85         if (lifecycle != null) {
86             lifecycle.addObserver(vpnPreferenceController);
87             lifecycle.addObserver(privateDnsPreferenceController);
88         }
89 
90         final List<AbstractPreferenceController> controllers = new ArrayList<>();
91 
92         controllers.add(vpnPreferenceController);
93         controllers.add(privateDnsPreferenceController);
94 
95         // Start SettingsDumpService after the MobileNetworkRepository is created.
96         Intent intent = new Intent(context, SettingsDumpService.class);
97         intent.putExtra(SettingsDumpService.EXTRA_KEY_SHOW_NETWORK_DUMP, true);
98         context.startService(intent);
99         return controllers;
100     }
101 
onActivityResult(int requestCode, int resultCode, Intent data)102     public void onActivityResult(int requestCode, int resultCode, Intent data) {
103         super.onActivityResult(requestCode, resultCode, data);
104 
105         switch (requestCode) {
106             case AirplaneModePreferenceController.REQUEST_CODE_EXIT_ECM:
107                 if (!isCatalystEnabled()) {
108                     use(AirplaneModePreferenceController.class)
109                             .onActivityResult(requestCode, resultCode, data);
110                 }
111                 break;
112         }
113     }
114 
115     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
116             new BaseSearchIndexProvider(R.xml.network_provider_internet) {
117                 @Override
118                 public List<AbstractPreferenceController> createPreferenceControllers(Context
119                         context) {
120                     return buildPreferenceControllers(context, null /* lifecycle */);
121                 }
122             };
123 
124     @Override
getPreferenceScreenBindingKey(@onNull Context context)125     public @Nullable String getPreferenceScreenBindingKey(@NonNull Context context) {
126         return NetworkDashboardScreen.KEY;
127     }
128 }
129