Add entry point to launch media output slice

Add media output panel type to launch media output slice.

Bug: 121083246
Test: make -j RunSettingsRoboTests
Change-Id: Ibf706146430e309fef6cbf0e1e86c2d5b78b50d5
This commit is contained in:
hughchen
2018-12-19 19:17:32 +08:00
parent e56df8877a
commit 2177813531
13 changed files with 288 additions and 16 deletions

View File

@@ -18,6 +18,7 @@ package com.android.settings.slices;
import android.content.Context;
import android.net.Uri;
import android.text.TextUtils;
import android.util.ArrayMap;
import androidx.annotation.VisibleForTesting;
@@ -33,6 +34,7 @@ import com.android.settings.homepage.contextualcards.slices.BluetoothDevicesSlic
import com.android.settings.homepage.contextualcards.slices.LowStorageSlice;
import com.android.settings.homepage.contextualcards.slices.NotificationChannelSlice;
import com.android.settings.location.LocationSlice;
import com.android.settings.media.MediaOutputSlice;
import com.android.settings.wifi.slice.ContextualWifiSlice;
import com.android.settings.wifi.slice.WifiSlice;
@@ -65,20 +67,25 @@ public class CustomSliceManager {
* the only thing that should be needed to create the object.
*/
public CustomSliceable getSliceableFromUri(Uri uri) {
if (mSliceableCache.containsKey(uri)) {
return mSliceableCache.get(uri);
final Uri newUri = removeParameterFromUri(uri);
if (mSliceableCache.containsKey(newUri)) {
return mSliceableCache.get(newUri);
}
final Class clazz = mUriMap.get(uri);
final Class clazz = mUriMap.get(newUri);
if (clazz == null) {
throw new IllegalArgumentException("No Slice found for uri: " + uri);
}
final CustomSliceable sliceable = CustomSliceable.createInstance(mContext, clazz);
mSliceableCache.put(uri, sliceable);
mSliceableCache.put(newUri, sliceable);
return sliceable;
}
private Uri removeParameterFromUri(Uri uri) {
return uri != null ? uri.buildUpon().clearQuery().build() : null;
}
/**
* Return a {@link CustomSliceable} associated to the Action.
* <p>
@@ -94,7 +101,7 @@ public class CustomSliceManager {
* {@link CustomSliceManager}.
*/
public boolean isValidUri(Uri uri) {
return mUriMap.containsKey(uri);
return mUriMap.containsKey(removeParameterFromUri(uri));
}
/**
@@ -120,5 +127,6 @@ public class CustomSliceManager {
NotificationChannelSlice.class);
mUriMap.put(CustomSliceRegistry.STORAGE_SLICE_URI, StorageSlice.class);
mUriMap.put(CustomSliceRegistry.WIFI_SLICE_URI, WifiSlice.class);
mUriMap.put(CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI, MediaOutputSlice.class);
}
}