Merge "For vibration settings page, create controllers from xml" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f3cfced1d1
@@ -14,17 +14,21 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
<PreferenceScreen
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:key="accessibility_settings_vibration_screen"
|
android:key="accessibility_settings_vibration_screen"
|
||||||
android:title="@string/accessibility_vibration_settings_title">
|
android:title="@string/accessibility_vibration_settings_title">
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:fragment="com.android.settings.accessibility.NotificationVibrationPreferenceFragment"
|
android:fragment="com.android.settings.accessibility.NotificationVibrationPreferenceFragment"
|
||||||
android:key="notification_vibration_preference_screen"
|
android:key="notification_vibration_preference_screen"
|
||||||
android:title="@string/accessibility_notification_vibration_title" />
|
android:title="@string/accessibility_notification_vibration_title"
|
||||||
|
app:controller="com.android.settings.accessibility.NotificationVibrationIntensityPreferenceController" />
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:fragment="com.android.settings.accessibility.TouchVibrationPreferenceFragment"
|
android:fragment="com.android.settings.accessibility.TouchVibrationPreferenceFragment"
|
||||||
android:key="touch_vibration_preference_screen"
|
android:key="touch_vibration_preference_screen"
|
||||||
android:title="@string/accessibility_touch_vibration_title" />
|
android:title="@string/accessibility_touch_vibration_title"
|
||||||
|
app:controller="com.android.settings.accessibility.HapticFeedbackIntensityPreferenceController" />
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
@@ -23,8 +23,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -51,28 +49,6 @@ public class VibrationSettings extends DashboardFragment {
|
|||||||
return TAG;
|
return TAG;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
|
|
||||||
return buildControllers(context, getLifecycle());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<AbstractPreferenceController> buildControllers(Context context,
|
|
||||||
Lifecycle lifecycle) {
|
|
||||||
|
|
||||||
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
|
||||||
final NotificationVibrationIntensityPreferenceController notifVibPrefController =
|
|
||||||
new NotificationVibrationIntensityPreferenceController(context);
|
|
||||||
final HapticFeedbackIntensityPreferenceController hapticPreferenceController =
|
|
||||||
new HapticFeedbackIntensityPreferenceController(context);
|
|
||||||
controllers.add(hapticPreferenceController);
|
|
||||||
controllers.add(notifVibPrefController);
|
|
||||||
if (lifecycle != null) {
|
|
||||||
lifecycle.addObserver(hapticPreferenceController);
|
|
||||||
lifecycle.addObserver(notifVibPrefController);
|
|
||||||
}
|
|
||||||
return controllers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||||
new BaseSearchIndexProvider() {
|
new BaseSearchIndexProvider() {
|
||||||
@Override
|
@Override
|
||||||
@@ -84,11 +60,5 @@ public class VibrationSettings extends DashboardFragment {
|
|||||||
indexables.add(indexable);
|
indexables.add(indexable);
|
||||||
return indexables;
|
return indexables;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<AbstractPreferenceController> createPreferenceControllers(
|
|
||||||
Context context) {
|
|
||||||
return buildControllers(context, null /* lifecycle */);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -16,16 +16,17 @@
|
|||||||
|
|
||||||
package com.android.settings.slices;
|
package com.android.settings.slices;
|
||||||
|
|
||||||
|
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_CONTROLLER;
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static com.google.common.truth.Truth.assertWithMessage;
|
import static com.google.common.truth.Truth.assertWithMessage;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.XmlResourceParser;
|
import android.os.Bundle;
|
||||||
import android.provider.SearchIndexableResource;
|
import android.provider.SearchIndexableResource;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.AttributeSet;
|
|
||||||
import android.util.Xml;
|
|
||||||
|
|
||||||
|
import com.android.settings.core.PreferenceXmlParserUtils;
|
||||||
import com.android.settings.core.TogglePreferenceController;
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
import com.android.settings.core.codeinspection.ClassScanner;
|
import com.android.settings.core.codeinspection.ClassScanner;
|
||||||
import com.android.settings.core.codeinspection.CodeInspector;
|
import com.android.settings.core.codeinspection.CodeInspector;
|
||||||
@@ -34,7 +35,6 @@ import com.android.settings.search.DatabaseIndexingUtils;
|
|||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settings.search.SearchFeatureProvider;
|
import com.android.settings.search.SearchFeatureProvider;
|
||||||
import com.android.settings.search.SearchFeatureProviderImpl;
|
import com.android.settings.search.SearchFeatureProviderImpl;
|
||||||
import com.android.settings.core.PreferenceXmlParserUtils;
|
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
@@ -42,8 +42,9 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
import org.xmlpull.v1.XmlPullParserException;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -71,7 +72,7 @@ public class SliceControllerInXmlTest {
|
|||||||
private FakeFeatureFactory mFakeFeatureFactory;
|
private FakeFeatureFactory mFakeFeatureFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() throws IOException, XmlPullParserException {
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
|
|
||||||
mSearchProvider = new SearchFeatureProviderImpl();
|
mSearchProvider = new SearchFeatureProviderImpl();
|
||||||
@@ -83,38 +84,22 @@ public class SliceControllerInXmlTest {
|
|||||||
initDeclaredControllers();
|
initDeclaredControllers();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initDeclaredControllers() {
|
private void initDeclaredControllers() throws IOException, XmlPullParserException {
|
||||||
final List<Integer> xmlResources = getIndexableXml();
|
final List<Integer> xmlResources = getIndexableXml();
|
||||||
XmlResourceParser parser;
|
|
||||||
|
|
||||||
for (int xmlResId : xmlResources) {
|
for (int xmlResId : xmlResources) {
|
||||||
try {
|
final List<Bundle> metadata = PreferenceXmlParserUtils.extractMetadata(mContext,
|
||||||
parser = mContext.getResources().getXml(xmlResId);
|
xmlResId, PreferenceXmlParserUtils.MetadataFlag.FLAG_NEED_PREF_CONTROLLER);
|
||||||
|
for (Bundle bundle : metadata) {
|
||||||
int type;
|
final String controllerClassName = bundle.getString(METADATA_CONTROLLER);
|
||||||
while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
|
if (TextUtils.isEmpty(controllerClassName)) {
|
||||||
&& type != XmlPullParser.START_TAG) {
|
|
||||||
// Parse next until start tag is found
|
|
||||||
}
|
|
||||||
|
|
||||||
final int outerDepth = parser.getDepth();
|
|
||||||
final AttributeSet attrs = Xml.asAttributeSet(parser);
|
|
||||||
String controllerClassName;
|
|
||||||
while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
|
|
||||||
&& (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
|
|
||||||
if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
controllerClassName = PreferenceXmlParserUtils.getController(mContext, attrs);
|
|
||||||
|
|
||||||
if (!TextUtils.isEmpty(controllerClassName)) {
|
|
||||||
mXmlDeclaredControllers.add(controllerClassName);
|
mXmlDeclaredControllers.add(controllerClassName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
// We definitely have some controllers in xml, so assert not-empty here as a proxy to
|
||||||
// Assume an issue with robolectric resources
|
// make sure the parser didn't fail
|
||||||
}
|
assertThat(mXmlDeclaredControllers).isNotEmpty();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user