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