Refactor WifiSlice to CustomSliceManager

Modify the WifiSliceCode to follow the pattern for
Slices that do not match existing UI components.

Test: robotests
Bug: 80263568
Change-Id: Id69e019608777282f4b64ff945e8c30c97aaf577
This commit is contained in:
Matthew Fritze
2018-07-20 09:41:40 -07:00
committed by Matt Fritze
parent 3df19f92b0
commit 7f0a30226a
13 changed files with 125 additions and 90 deletions

View File

@@ -16,6 +16,7 @@ package com.android.settings.slices;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
@@ -24,7 +25,8 @@ import android.util.Log;
import com.android.settings.bluetooth.BluetoothSliceBuilder;
import com.android.settings.location.LocationSliceBuilder;
import com.android.settings.notification.ZenModeSliceBuilder;
import com.android.settings.wifi.WifiSliceBuilder;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.WifiSlice;
import java.net.URISyntaxException;
@@ -50,23 +52,28 @@ public class SliceDeepLinkSpringBoard extends Activity {
if (ACTION_VIEW_SLICE.equals(intent.getAction())) {
// This shouldn't matter since the slice is shown instead of the device
// index caring about the launch uri.
final Uri slice = Uri.parse(intent.getStringExtra(EXTRA_SLICE));
final Intent launchIntent;
final Uri sliceUri = Uri.parse(intent.getStringExtra(EXTRA_SLICE));
Intent launchIntent;
// TODO (b/80263568) Avoid duplicating this list of Slice Uris.
if (WifiSliceBuilder.WIFI_URI.equals(slice)) {
launchIntent = WifiSliceBuilder.getIntent(this /* context */);
} else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(slice)) {
final CustomSliceManager customSliceManager = FeatureFactory.getFactory(this)
.getSlicesFeatureProvider().getCustomSliceManager(this);
if (customSliceManager.isValidUri(sliceUri)) {
final CustomSliceable sliceable =
customSliceManager.getSliceableFromUri(sliceUri);
launchIntent = sliceable.getIntent();
} else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) {
launchIntent = ZenModeSliceBuilder.getIntent(this /* context */);
} else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(slice)) {
} else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) {
launchIntent = BluetoothSliceBuilder.getIntent(this /* context */);
} else if (LocationSliceBuilder.LOCATION_URI.equals(slice)) {
} else if (LocationSliceBuilder.LOCATION_URI.equals(sliceUri)) {
launchIntent = LocationSliceBuilder.getIntent(this /* context */);
} else {
final SlicesDatabaseAccessor slicesDatabaseAccessor =
new SlicesDatabaseAccessor(this /* context */);
// Sadly have to block here because we don't know where to go.
final SliceData sliceData = slicesDatabaseAccessor.getSliceDataFromUri(slice);
final SliceData sliceData =
slicesDatabaseAccessor.getSliceDataFromUri(sliceUri);
launchIntent = SliceBuilderUtils.getContentIntent(this, sliceData);
}