Disable wifi display activity if device can't support it.
Change-Id: I19ab9d0d480b66e56b87cef7c49d4391a3608111 Fix: 36069170 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -67,6 +67,7 @@ import com.android.settings.dashboard.SearchResultsSummary;
|
|||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.DynamicIndexableContentMonitor;
|
import com.android.settings.search.DynamicIndexableContentMonitor;
|
||||||
import com.android.settings.search2.SearchFeatureProvider;
|
import com.android.settings.search2.SearchFeatureProvider;
|
||||||
|
import com.android.settings.wfd.WifiDisplaySettings;
|
||||||
import com.android.settings.widget.SwitchBar;
|
import com.android.settings.widget.SwitchBar;
|
||||||
import com.android.settingslib.drawer.DashboardCategory;
|
import com.android.settingslib.drawer.DashboardCategory;
|
||||||
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
||||||
@@ -947,6 +948,10 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this)
|
FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this)
|
||||||
.hasDeviceOwner(), isAdmin);
|
.hasDeviceOwner(), isAdmin);
|
||||||
|
|
||||||
|
setTileEnabled(new ComponentName(packageName,
|
||||||
|
Settings.WifiDisplaySettingsActivity.class.getName()),
|
||||||
|
WifiDisplaySettings.isAvailable(this), isAdmin);
|
||||||
|
|
||||||
if (UserHandle.MU_ENABLED && !isAdmin) {
|
if (UserHandle.MU_ENABLED && !isAdmin) {
|
||||||
|
|
||||||
// When on restricted users, disable all extra categories (but only the settings ones).
|
// When on restricted users, disable all extra categories (but only the settings ones).
|
||||||
|
@@ -125,9 +125,9 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
|
|||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
|
|
||||||
final Context context = getActivity();
|
final Context context = getActivity();
|
||||||
mRouter = (MediaRouter)context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
|
mRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
|
||||||
mDisplayManager = (DisplayManager)context.getSystemService(Context.DISPLAY_SERVICE);
|
mDisplayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
|
||||||
mWifiP2pManager = (WifiP2pManager)context.getSystemService(Context.WIFI_P2P_SERVICE);
|
mWifiP2pManager = (WifiP2pManager) context.getSystemService(Context.WIFI_P2P_SERVICE);
|
||||||
mWifiP2pChannel = mWifiP2pManager.initialize(context, Looper.getMainLooper(), null);
|
mWifiP2pChannel = mWifiP2pManager.initialize(context, Looper.getMainLooper(), null);
|
||||||
|
|
||||||
addPreferencesFromResource(R.xml.wifi_display_settings);
|
addPreferencesFromResource(R.xml.wifi_display_settings);
|
||||||
@@ -211,6 +211,11 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
|
|||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isAvailable(Context context) {
|
||||||
|
return context.getSystemService(Context.DISPLAY_SERVICE) != null
|
||||||
|
&& context.getSystemService(Context.WIFI_P2P_SERVICE) != null;
|
||||||
|
}
|
||||||
|
|
||||||
private void scheduleUpdate(int changes) {
|
private void scheduleUpdate(int changes) {
|
||||||
if (mStarted) {
|
if (mStarted) {
|
||||||
if (mPendingChanges == 0) {
|
if (mPendingChanges == 0) {
|
||||||
@@ -237,7 +242,7 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
|
|||||||
mWifiDisplayCertificationOn = Settings.Global.getInt(getContentResolver(),
|
mWifiDisplayCertificationOn = Settings.Global.getInt(getContentResolver(),
|
||||||
Settings.Global.WIFI_DISPLAY_CERTIFICATION_ON, 0) != 0;
|
Settings.Global.WIFI_DISPLAY_CERTIFICATION_ON, 0) != 0;
|
||||||
mWpsConfig = Settings.Global.getInt(getContentResolver(),
|
mWpsConfig = Settings.Global.getInt(getContentResolver(),
|
||||||
Settings.Global.WIFI_DISPLAY_WPS_CONFIG, WpsInfo.INVALID);
|
Settings.Global.WIFI_DISPLAY_WPS_CONFIG, WpsInfo.INVALID);
|
||||||
|
|
||||||
// The wifi display enabled setting may have changed.
|
// The wifi display enabled setting may have changed.
|
||||||
invalidateOptions = true;
|
invalidateOptions = true;
|
||||||
@@ -402,12 +407,12 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
|
|||||||
});
|
});
|
||||||
mWpsConfig = Settings.Global.getInt(getActivity().getContentResolver(),
|
mWpsConfig = Settings.Global.getInt(getActivity().getContentResolver(),
|
||||||
Settings.Global.WIFI_DISPLAY_WPS_CONFIG, WpsInfo.INVALID);
|
Settings.Global.WIFI_DISPLAY_WPS_CONFIG, WpsInfo.INVALID);
|
||||||
String[] wpsEntries = { "Default", "PBC", "KEYPAD", "DISPLAY" };
|
String[] wpsEntries = {"Default", "PBC", "KEYPAD", "DISPLAY"};
|
||||||
String[] wpsValues = {
|
String[] wpsValues = {
|
||||||
"" + WpsInfo.INVALID,
|
"" + WpsInfo.INVALID,
|
||||||
"" + WpsInfo.PBC,
|
"" + WpsInfo.PBC,
|
||||||
"" + WpsInfo.KEYPAD,
|
"" + WpsInfo.KEYPAD,
|
||||||
"" + WpsInfo.DISPLAY };
|
"" + WpsInfo.DISPLAY};
|
||||||
lp.setKey("wps");
|
lp.setKey("wps");
|
||||||
lp.setTitle(R.string.wifi_display_wps_config);
|
lp.setTitle(R.string.wifi_display_wps_config);
|
||||||
lp.setEntries(wpsEntries);
|
lp.setEntries(wpsEntries);
|
||||||
@@ -430,8 +435,8 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
String[] lcEntries = { "Auto", "1", "6", "11" };
|
String[] lcEntries = {"Auto", "1", "6", "11"};
|
||||||
String[] lcValues = { "0", "1", "6", "11" };
|
String[] lcValues = {"0", "1", "6", "11"};
|
||||||
lp.setKey("listening_channel");
|
lp.setKey("listening_channel");
|
||||||
lp.setTitle(R.string.wifi_display_listen_channel);
|
lp.setTitle(R.string.wifi_display_listen_channel);
|
||||||
lp.setEntries(lcEntries);
|
lp.setEntries(lcEntries);
|
||||||
@@ -454,8 +459,8 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
String[] ocEntries = { "Auto", "1", "6", "11", "36" };
|
String[] ocEntries = {"Auto", "1", "6", "11", "36"};
|
||||||
String[] ocValues = { "0", "1", "6", "11", "36" };
|
String[] ocValues = {"0", "1", "6", "11", "36"};
|
||||||
lp.setKey("operating_channel");
|
lp.setKey("operating_channel");
|
||||||
lp.setTitle(R.string.wifi_display_operating_channel);
|
lp.setTitle(R.string.wifi_display_operating_channel);
|
||||||
lp.setEntries(ocEntries);
|
lp.setEntries(ocEntries);
|
||||||
@@ -512,14 +517,14 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
|
|||||||
public void onSuccess() {
|
public void onSuccess() {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Slog.d(TAG, "Successfully " + (enable ? "entered" : "exited")
|
Slog.d(TAG, "Successfully " + (enable ? "entered" : "exited")
|
||||||
+" listen mode.");
|
+ " listen mode.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(int reason) {
|
public void onFailure(int reason) {
|
||||||
Slog.e(TAG, "Failed to " + (enable ? "entered" : "exited")
|
Slog.e(TAG, "Failed to " + (enable ? "entered" : "exited")
|
||||||
+" listen mode with reason " + reason + ".");
|
+ " listen mode with reason " + reason + ".");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -530,18 +535,18 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
|
|||||||
}
|
}
|
||||||
mWifiP2pManager.setWifiP2pChannels(mWifiP2pChannel,
|
mWifiP2pManager.setWifiP2pChannels(mWifiP2pChannel,
|
||||||
lc, oc, new ActionListener() {
|
lc, oc, new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess() {
|
public void onSuccess() {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Slog.d(TAG, "Successfully set wifi p2p channels.");
|
Slog.d(TAG, "Successfully set wifi p2p channels.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(int reason) {
|
public void onFailure(int reason) {
|
||||||
Slog.e(TAG, "Failed to set wifi p2p channels with reason " + reason + ".");
|
Slog.e(TAG, "Failed to set wifi p2p channels with reason " + reason + ".");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void toggleRoute(MediaRouter.RouteInfo route) {
|
private void toggleRoute(MediaRouter.RouteInfo route) {
|
||||||
@@ -561,7 +566,7 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
|
|||||||
|
|
||||||
private void showWifiDisplayOptionsDialog(final WifiDisplay display) {
|
private void showWifiDisplayOptionsDialog(final WifiDisplay display) {
|
||||||
View view = getActivity().getLayoutInflater().inflate(R.layout.wifi_display_options, null);
|
View view = getActivity().getLayoutInflater().inflate(R.layout.wifi_display_options, null);
|
||||||
final EditText nameEditText = (EditText)view.findViewById(R.id.name);
|
final EditText nameEditText = (EditText) view.findViewById(R.id.name);
|
||||||
nameEditText.setText(display.getFriendlyDisplayName());
|
nameEditText.setText(display.getFriendlyDisplayName());
|
||||||
|
|
||||||
DialogInterface.OnClickListener done = new DialogInterface.OnClickListener() {
|
DialogInterface.OnClickListener done = new DialogInterface.OnClickListener() {
|
||||||
@@ -707,7 +712,7 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
|
|||||||
TypedValue value = new TypedValue();
|
TypedValue value = new TypedValue();
|
||||||
getContext().getTheme().resolveAttribute(android.R.attr.disabledAlpha,
|
getContext().getTheme().resolveAttribute(android.R.attr.disabledAlpha,
|
||||||
value, true);
|
value, true);
|
||||||
deviceDetails.setImageAlpha((int)(value.getFloat() * 255));
|
deviceDetails.setImageAlpha((int) (value.getFloat() * 255));
|
||||||
deviceDetails.setEnabled(true); // always allow button to be pressed
|
deviceDetails.setEnabled(true); // always allow button to be pressed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,7 +18,9 @@ package com.android.settings.wfd;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.hardware.display.DisplayManager;
|
||||||
import android.media.MediaRouter;
|
import android.media.MediaRouter;
|
||||||
|
import android.net.wifi.p2p.WifiP2pManager;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsRobolectricTestRunner;
|
import com.android.settings.SettingsRobolectricTestRunner;
|
||||||
@@ -32,6 +34,7 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
@@ -82,4 +85,22 @@ public class WifiDisplaySettingsTest {
|
|||||||
verify(mActivity).getString(R.string.wifi_display_status_connected);
|
verify(mActivity).getString(R.string.wifi_display_status_connected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isAvailable_noService_shouldReturnFalse() {
|
||||||
|
assertThat(WifiDisplaySettings.isAvailable(mActivity))
|
||||||
|
.isFalse();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isAvailable_hasService_shouldReturnTrue() {
|
||||||
|
when(mActivity.getSystemService(Context.DISPLAY_SERVICE))
|
||||||
|
.thenReturn(mock(DisplayManager.class));
|
||||||
|
when(mActivity.getSystemService(Context.WIFI_P2P_SERVICE))
|
||||||
|
.thenReturn(mock(WifiP2pManager.class));
|
||||||
|
|
||||||
|
assertThat(WifiDisplaySettings.isAvailable(mActivity))
|
||||||
|
.isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user