Loading src/com/android/settings/slices/CustomSliceManager.java +4 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.content.Context; import android.net.Uri; import android.util.ArrayMap; import com.android.settings.wifi.WifiSlice; import java.util.Map; /** Loading @@ -36,7 +38,7 @@ public class CustomSliceManager { private final Context mContext; public CustomSliceManager(Context context) { mContext = context; mContext = context.getApplicationContext(); mUriMap = new ArrayMap<>(); addSlices(); } Loading Loading @@ -84,5 +86,6 @@ public class CustomSliceManager { } private void addSlices() { mUriMap.put(WifiSlice.WIFI_URI, WifiSlice.class); } } No newline at end of file src/com/android/settings/slices/CustomSliceable.java +25 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.slices; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; Loading Loading @@ -56,33 +57,53 @@ public interface CustomSliceable { /** * @return an complete instance of the {@link Slice}. */ Slice getSlice(Context context); Slice getSlice(); /** * @return a {@link android.content.ContentResolver#SCHEME_CONTENT content} {@link Uri} which * backs the {@link Slice} returned by {@link #getSlice(Context)}. * backs the {@link Slice} returned by {@link #getSlice()}. */ Uri getUri(); /** * Handles the actions sent by the {@link Intent intents} bound to the {@link Slice} returned by * {@link #getSlice(Context)}. * {@link #getSlice()}. * * @param intent which has the action taken on a {@link Slice}. */ void onNotifyChange(Intent intent); /** * @return an {@link Intent} to the source of the Slice data. */ Intent getIntent(); /** * Settings Slices which can represent components that are updatable by the framework should * listen to changes matched to the {@link IntentFilter} returned here. * * @return an {@link IntentFilter} for updates related to the {@link Slice} returned by * {@link #getSlice(Context)}. * {@link #getSlice()}. */ default IntentFilter getIntentFilter() { return null; } /** * Standardize the intents returned to indicate actions by the Slice. * <p> * The {@link PendingIntent} is linked to {@link SliceBroadcastReceiver} where the Intent * Action is found by {@code getUri().toString()}. * * @return a {@link PendingIntent} linked to {@link SliceBroadcastReceiver}. */ default PendingIntent getBroadcastIntent(Context context) { final Intent intent = new Intent(getUri().toString()); intent.setClass(context, SliceBroadcastReceiver.class); return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent, PendingIntent.FLAG_CANCEL_CURRENT); } /** * Build an instance of a {@link CustomSliceable} which has a {@link Context}-only constructor. */ Loading src/com/android/settings/slices/SettingsSliceProvider.java +5 −10 Original line number Diff line number Diff line Loading @@ -39,7 +39,8 @@ import com.android.settings.location.LocationSliceBuilder; import com.android.settings.mobilenetwork.Enhanced4gLteSliceHelper; import com.android.settings.notification.ZenModeSliceBuilder; import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.WifiSliceBuilder; import com.android.settings.core.BasePreferenceController; import com.android.settings.wifi.WifiSlice; import com.android.settings.wifi.calling.WifiCallingSliceHelper; import com.android.settingslib.SliceBroadcastRelay; import com.android.settingslib.utils.ThreadUtils; Loading Loading @@ -166,11 +167,7 @@ public class SettingsSliceProvider extends SliceProvider { return; } if (WifiSliceBuilder.WIFI_URI.equals(sliceUri)) { registerIntentToUri(WifiSliceBuilder.INTENT_FILTER, sliceUri); mRegisteredUris.add(sliceUri); return; } else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { registerIntentToUri(ZenModeSliceBuilder.INTENT_FILTER, sliceUri); return; } else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) { Loading Loading @@ -217,7 +214,7 @@ public class SettingsSliceProvider extends SliceProvider { if (mCustomSliceManager.isValidUri(sliceUri)) { final CustomSliceable sliceable = mCustomSliceManager.getSliceableFromUri( sliceUri); return sliceable.getSlice(getContext()); return sliceable.getSlice(); } if (WifiCallingSliceHelper.WIFI_CALLING_URI.equals(sliceUri)) { Loading @@ -225,8 +222,6 @@ public class SettingsSliceProvider extends SliceProvider { .getSlicesFeatureProvider() .getNewWifiCallingSliceHelper(getContext()) .createWifiCallingSlice(sliceUri); } else if (WifiSliceBuilder.WIFI_URI.equals(sliceUri)) { return WifiSliceBuilder.getSlice(getContext()); } else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { return ZenModeSliceBuilder.getSlice(getContext()); } else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) { Loading Loading @@ -402,7 +397,7 @@ public class SettingsSliceProvider extends SliceProvider { private List<Uri> getSpecialCasePlatformUris() { return Arrays.asList( WifiSliceBuilder.WIFI_URI, WifiSlice.WIFI_URI, BluetoothSliceBuilder.BLUETOOTH_URI, LocationSliceBuilder.LOCATION_URI ); Loading src/com/android/settings/slices/SliceBroadcastReceiver.java +0 −5 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import static com.android.settings.slices.SettingsSliceProvider.ACTION_SLIDER_CH import static com.android.settings.slices.SettingsSliceProvider.ACTION_TOGGLE_CHANGED; import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_KEY; import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_PLATFORM_DEFINED; import static com.android.settings.wifi.WifiSliceBuilder.ACTION_WIFI_SLICE_CHANGED; import static com.android.settings.wifi.calling.WifiCallingSliceHelper.ACTION_WIFI_CALLING_CHANGED; import static com.android.settings.wifi.calling.WifiCallingSliceHelper .ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED; Loading Loading @@ -54,7 +53,6 @@ import com.android.settings.core.TogglePreferenceController; import com.android.settings.flashlight.FlashlightSliceBuilder; import com.android.settings.notification.ZenModeSliceBuilder; import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.WifiSliceBuilder; /** * Responds to actions performed on slices and notifies slices of updates in state changes. Loading Loading @@ -91,9 +89,6 @@ public class SliceBroadcastReceiver extends BroadcastReceiver { case ACTION_BLUETOOTH_SLICE_CHANGED: BluetoothSliceBuilder.handleUriChange(context, intent); break; case ACTION_WIFI_SLICE_CHANGED: WifiSliceBuilder.handleUriChange(context, intent); break; case ACTION_WIFI_CALLING_CHANGED: FeatureFactory.getFactory(context) .getSlicesFeatureProvider() Loading src/com/android/settings/slices/SliceDeepLinkSpringBoard.java +16 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); } Loading Loading
src/com/android/settings/slices/CustomSliceManager.java +4 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.content.Context; import android.net.Uri; import android.util.ArrayMap; import com.android.settings.wifi.WifiSlice; import java.util.Map; /** Loading @@ -36,7 +38,7 @@ public class CustomSliceManager { private final Context mContext; public CustomSliceManager(Context context) { mContext = context; mContext = context.getApplicationContext(); mUriMap = new ArrayMap<>(); addSlices(); } Loading Loading @@ -84,5 +86,6 @@ public class CustomSliceManager { } private void addSlices() { mUriMap.put(WifiSlice.WIFI_URI, WifiSlice.class); } } No newline at end of file
src/com/android/settings/slices/CustomSliceable.java +25 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.slices; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; Loading Loading @@ -56,33 +57,53 @@ public interface CustomSliceable { /** * @return an complete instance of the {@link Slice}. */ Slice getSlice(Context context); Slice getSlice(); /** * @return a {@link android.content.ContentResolver#SCHEME_CONTENT content} {@link Uri} which * backs the {@link Slice} returned by {@link #getSlice(Context)}. * backs the {@link Slice} returned by {@link #getSlice()}. */ Uri getUri(); /** * Handles the actions sent by the {@link Intent intents} bound to the {@link Slice} returned by * {@link #getSlice(Context)}. * {@link #getSlice()}. * * @param intent which has the action taken on a {@link Slice}. */ void onNotifyChange(Intent intent); /** * @return an {@link Intent} to the source of the Slice data. */ Intent getIntent(); /** * Settings Slices which can represent components that are updatable by the framework should * listen to changes matched to the {@link IntentFilter} returned here. * * @return an {@link IntentFilter} for updates related to the {@link Slice} returned by * {@link #getSlice(Context)}. * {@link #getSlice()}. */ default IntentFilter getIntentFilter() { return null; } /** * Standardize the intents returned to indicate actions by the Slice. * <p> * The {@link PendingIntent} is linked to {@link SliceBroadcastReceiver} where the Intent * Action is found by {@code getUri().toString()}. * * @return a {@link PendingIntent} linked to {@link SliceBroadcastReceiver}. */ default PendingIntent getBroadcastIntent(Context context) { final Intent intent = new Intent(getUri().toString()); intent.setClass(context, SliceBroadcastReceiver.class); return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent, PendingIntent.FLAG_CANCEL_CURRENT); } /** * Build an instance of a {@link CustomSliceable} which has a {@link Context}-only constructor. */ Loading
src/com/android/settings/slices/SettingsSliceProvider.java +5 −10 Original line number Diff line number Diff line Loading @@ -39,7 +39,8 @@ import com.android.settings.location.LocationSliceBuilder; import com.android.settings.mobilenetwork.Enhanced4gLteSliceHelper; import com.android.settings.notification.ZenModeSliceBuilder; import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.WifiSliceBuilder; import com.android.settings.core.BasePreferenceController; import com.android.settings.wifi.WifiSlice; import com.android.settings.wifi.calling.WifiCallingSliceHelper; import com.android.settingslib.SliceBroadcastRelay; import com.android.settingslib.utils.ThreadUtils; Loading Loading @@ -166,11 +167,7 @@ public class SettingsSliceProvider extends SliceProvider { return; } if (WifiSliceBuilder.WIFI_URI.equals(sliceUri)) { registerIntentToUri(WifiSliceBuilder.INTENT_FILTER, sliceUri); mRegisteredUris.add(sliceUri); return; } else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { registerIntentToUri(ZenModeSliceBuilder.INTENT_FILTER, sliceUri); return; } else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) { Loading Loading @@ -217,7 +214,7 @@ public class SettingsSliceProvider extends SliceProvider { if (mCustomSliceManager.isValidUri(sliceUri)) { final CustomSliceable sliceable = mCustomSliceManager.getSliceableFromUri( sliceUri); return sliceable.getSlice(getContext()); return sliceable.getSlice(); } if (WifiCallingSliceHelper.WIFI_CALLING_URI.equals(sliceUri)) { Loading @@ -225,8 +222,6 @@ public class SettingsSliceProvider extends SliceProvider { .getSlicesFeatureProvider() .getNewWifiCallingSliceHelper(getContext()) .createWifiCallingSlice(sliceUri); } else if (WifiSliceBuilder.WIFI_URI.equals(sliceUri)) { return WifiSliceBuilder.getSlice(getContext()); } else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { return ZenModeSliceBuilder.getSlice(getContext()); } else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) { Loading Loading @@ -402,7 +397,7 @@ public class SettingsSliceProvider extends SliceProvider { private List<Uri> getSpecialCasePlatformUris() { return Arrays.asList( WifiSliceBuilder.WIFI_URI, WifiSlice.WIFI_URI, BluetoothSliceBuilder.BLUETOOTH_URI, LocationSliceBuilder.LOCATION_URI ); Loading
src/com/android/settings/slices/SliceBroadcastReceiver.java +0 −5 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import static com.android.settings.slices.SettingsSliceProvider.ACTION_SLIDER_CH import static com.android.settings.slices.SettingsSliceProvider.ACTION_TOGGLE_CHANGED; import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_KEY; import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_PLATFORM_DEFINED; import static com.android.settings.wifi.WifiSliceBuilder.ACTION_WIFI_SLICE_CHANGED; import static com.android.settings.wifi.calling.WifiCallingSliceHelper.ACTION_WIFI_CALLING_CHANGED; import static com.android.settings.wifi.calling.WifiCallingSliceHelper .ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED; Loading Loading @@ -54,7 +53,6 @@ import com.android.settings.core.TogglePreferenceController; import com.android.settings.flashlight.FlashlightSliceBuilder; import com.android.settings.notification.ZenModeSliceBuilder; import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.WifiSliceBuilder; /** * Responds to actions performed on slices and notifies slices of updates in state changes. Loading Loading @@ -91,9 +89,6 @@ public class SliceBroadcastReceiver extends BroadcastReceiver { case ACTION_BLUETOOTH_SLICE_CHANGED: BluetoothSliceBuilder.handleUriChange(context, intent); break; case ACTION_WIFI_SLICE_CHANGED: WifiSliceBuilder.handleUriChange(context, intent); break; case ACTION_WIFI_CALLING_CHANGED: FeatureFactory.getFactory(context) .getSlicesFeatureProvider() Loading
src/com/android/settings/slices/SliceDeepLinkSpringBoard.java +16 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); } Loading