Add feature provider for bluetooth settings

Also add method to get settings uri for specific device. Use feature
provider here because it give us more flexibility.

Bug: 120803703
Test: RunSettingsRoboTests
Change-Id: I6f4840e76279c02a75b95fdecd822a72cb0b42e5
This commit is contained in:
jackqdyulei
2018-12-18 13:03:46 -08:00
parent cf6374e427
commit bdc4ea6336
8 changed files with 150 additions and 8 deletions

View File

@@ -19,9 +19,7 @@ package com.android.settings.bluetooth;
import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
import android.bluetooth.BluetoothDevice;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.util.FeatureFlagUtils;
@@ -31,6 +29,7 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.core.FeatureFlags;
import com.android.settings.dashboard.RestrictedDashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.slices.SlicePreferenceController;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
@@ -105,12 +104,10 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment
super.onAttach(context);
if (FeatureFlagUtils.isEnabled(context, FeatureFlags.SLICE_INJECTION)) {
//TODO(b/120803703): update it to get data from feature provider
use(SlicePreferenceController.class).setSliceUri(new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority("com.google.android.apps.wearables.maestro.companion")
.appendPath("setting_slice")
.build());
final BluetoothFeatureProvider featureProvider = FeatureFactory.getFactory(context)
.getBluetoothFeatureProvider(context);
use(SlicePreferenceController.class).setSliceUri(
featureProvider.getBluetoothDeviceSettingsUri(mDeviceAddress));
}
}

View File

@@ -0,0 +1,32 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.bluetooth;
import android.net.Uri;
/**
* Provider for bluetooth related feature
*/
public interface BluetoothFeatureProvider {
/**
* Get the {@link Uri} that represents extra settings for a specific bluetooth device
* @param macAddress Bluetooth mac address
* @return {@link Uri} for extra settings
*/
Uri getBluetoothDeviceSettingsUri(String macAddress);
}

View File

@@ -0,0 +1,41 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.bluetooth;
import android.content.Context;
import android.net.Uri;
import com.android.settings.R;
/**
* Impl of {@link BluetoothFeatureProvider}
*/
public class BluetoothFeatureProviderImpl implements BluetoothFeatureProvider {
private Context mContext;
public BluetoothFeatureProviderImpl(Context context) {
mContext = context;
}
@Override
public Uri getBluetoothDeviceSettingsUri(String macAddress) {
final String uriString = mContext.getString(R.string.config_bluetooth_device_settings_uri,
macAddress);
return Uri.parse(uriString);
}
}