Merge "Update text for Languages & Input." into oc-dr1-dev
am: 73e03e6ca2
Change-Id: I339b129e599c11136add30af66514d783ee94554
This commit is contained in:
@@ -543,7 +543,7 @@
|
|||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity android:name=".Settings$LanguageAndInputSettingsActivity"
|
<activity android:name=".Settings$LanguageAndInputSettingsActivity"
|
||||||
android:label="@string/language_keyboard_settings_title"
|
android:label="@string/language_input_gesture_title"
|
||||||
android:icon="@drawable/ic_settings_language"
|
android:icon="@drawable/ic_settings_language"
|
||||||
android:taskAffinity="com.android.settings"
|
android:taskAffinity="com.android.settings"
|
||||||
android:parentActivityName="Settings$SystemDashboardActivity">
|
android:parentActivityName="Settings$SystemDashboardActivity">
|
||||||
@@ -619,7 +619,7 @@
|
|||||||
|
|
||||||
<!-- Keep compatibility with old shortcuts. -->
|
<!-- Keep compatibility with old shortcuts. -->
|
||||||
<activity-alias android:name="LanguageSettings"
|
<activity-alias android:name="LanguageSettings"
|
||||||
android:label="@string/language_keyboard_settings_title"
|
android:label="@string/language_input_gesture_title"
|
||||||
android:clearTaskOnLaunch="true"
|
android:clearTaskOnLaunch="true"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:targetActivity="Settings$LanguageAndInputSettingsActivity">
|
android:targetActivity="Settings$LanguageAndInputSettingsActivity">
|
||||||
|
@@ -18,7 +18,7 @@
|
|||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
|
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
|
||||||
android:title="@string/language_keyboard_settings_title" >
|
android:title="@string/language_input_gesture_title" >
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="phone_language"
|
android:key="phone_language"
|
||||||
|
@@ -38,6 +38,7 @@ import com.android.settings.applications.defaultapps.DefaultAutofillPreferenceCo
|
|||||||
import com.android.settings.core.PreferenceController;
|
import com.android.settings.core.PreferenceController;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
|
import com.android.settings.gestures.AssistGestureFeatureProvider;
|
||||||
import com.android.settings.gestures.AssistGesturePreferenceController;
|
import com.android.settings.gestures.AssistGesturePreferenceController;
|
||||||
import com.android.settings.gestures.CameraLiftTriggerPreferenceController;
|
import com.android.settings.gestures.CameraLiftTriggerPreferenceController;
|
||||||
import com.android.settings.gestures.DoubleTapPowerPreferenceController;
|
import com.android.settings.gestures.DoubleTapPowerPreferenceController;
|
||||||
@@ -49,6 +50,7 @@ import com.android.settings.inputmethod.GameControllerPreferenceController;
|
|||||||
import com.android.settings.inputmethod.PhysicalKeyboardPreferenceController;
|
import com.android.settings.inputmethod.PhysicalKeyboardPreferenceController;
|
||||||
import com.android.settings.inputmethod.SpellCheckerPreferenceController;
|
import com.android.settings.inputmethod.SpellCheckerPreferenceController;
|
||||||
import com.android.settings.inputmethod.VirtualKeyboardPreferenceController;
|
import com.android.settings.inputmethod.VirtualKeyboardPreferenceController;
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
@@ -98,7 +100,7 @@ public class LanguageAndInputSettings extends DashboardFragment {
|
|||||||
if (activity == null) {
|
if (activity == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
activity.setTitle(R.string.language_keyboard_settings_title);
|
activity.setTitle(R.string.language_input_gesture_title);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -160,23 +162,32 @@ public class LanguageAndInputSettings extends DashboardFragment {
|
|||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final SummaryLoader mSummaryLoader;
|
private final SummaryLoader mSummaryLoader;
|
||||||
|
private final AssistGestureFeatureProvider mFeatureProvider;
|
||||||
|
|
||||||
public SummaryProvider(Context context, SummaryLoader summaryLoader) {
|
public SummaryProvider(Context context, SummaryLoader summaryLoader) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mSummaryLoader = summaryLoader;
|
mSummaryLoader = summaryLoader;
|
||||||
|
mFeatureProvider = FeatureFactory.getFactory(context).getAssistGestureFeatureProvider();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setListening(boolean listening) {
|
public void setListening(boolean listening) {
|
||||||
if (listening) {
|
if (listening) {
|
||||||
|
if (mFeatureProvider.isSupported(mContext)) {
|
||||||
|
final int assistGestureEnabled = Settings.Secure.getInt(
|
||||||
|
mContext.getContentResolver(), Settings.Secure.ASSIST_GESTURE_ENABLED, 1);
|
||||||
|
mSummaryLoader.setSummary(this, mContext.getString(assistGestureEnabled == 0
|
||||||
|
? R.string.language_input_gesture_summary_off
|
||||||
|
: R.string.language_input_gesture_summary_on_with_assist));
|
||||||
|
} else {
|
||||||
final String flattenComponent = Settings.Secure.getString(
|
final String flattenComponent = Settings.Secure.getString(
|
||||||
mContext.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
|
mContext.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
|
||||||
if (!TextUtils.isEmpty(flattenComponent)) {
|
if (!TextUtils.isEmpty(flattenComponent)) {
|
||||||
final PackageManager packageManage = mContext.getPackageManager();
|
final PackageManager packageManage = mContext.getPackageManager();
|
||||||
final String pkg = ComponentName.unflattenFromString(flattenComponent)
|
final String pkg = ComponentName.unflattenFromString(flattenComponent)
|
||||||
.getPackageName();
|
.getPackageName();
|
||||||
final InputMethodManager imm = (InputMethodManager) mContext.getSystemService(
|
final InputMethodManager imm = (InputMethodManager)
|
||||||
Context.INPUT_METHOD_SERVICE);
|
mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
final List<InputMethodInfo> imis = imm.getInputMethodList();
|
final List<InputMethodInfo> imis = imm.getInputMethodList();
|
||||||
for (InputMethodInfo imi : imis) {
|
for (InputMethodInfo imi : imis) {
|
||||||
if (TextUtils.equals(imi.getPackageName(), pkg)) {
|
if (TextUtils.equals(imi.getPackageName(), pkg)) {
|
||||||
@@ -189,6 +200,7 @@ public class LanguageAndInputSettings extends DashboardFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
|
public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
|
||||||
= (activity, summaryLoader) -> new SummaryProvider(activity, summaryLoader);
|
= (activity, summaryLoader) -> new SummaryProvider(activity, summaryLoader);
|
||||||
|
@@ -37,7 +37,6 @@ import com.android.settings.core.PreferenceController;
|
|||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.XmlTestUtils;
|
import com.android.settings.testutils.XmlTestUtils;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
|
||||||
import com.android.settings.testutils.shadow.ShadowSecureSettings;
|
import com.android.settings.testutils.shadow.ShadowSecureSettings;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
@@ -68,7 +67,7 @@ import static org.mockito.Mockito.when;
|
|||||||
public class LanguageAndInputSettingsTest {
|
public class LanguageAndInputSettingsTest {
|
||||||
|
|
||||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||||
private Context mContext;
|
private Activity mActivity;
|
||||||
@Mock
|
@Mock
|
||||||
private PackageManager mPackageManager;
|
private PackageManager mPackageManager;
|
||||||
@Mock
|
@Mock
|
||||||
@@ -86,17 +85,18 @@ public class LanguageAndInputSettingsTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
FakeFeatureFactory.setupForTest(mContext);
|
FakeFeatureFactory.setupForTest(mActivity);
|
||||||
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mock(UserManager.class));
|
when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mock(UserManager.class));
|
||||||
when(mContext.getSystemService(Context.INPUT_SERVICE)).thenReturn(mock(InputManager.class));
|
when(mActivity.getSystemService(Context.INPUT_SERVICE))
|
||||||
when(mContext.getSystemService(Context.INPUT_SERVICE)).thenReturn(mIm);
|
.thenReturn(mock(InputManager.class));
|
||||||
when(mContext.getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE))
|
when(mActivity.getSystemService(Context.INPUT_SERVICE)).thenReturn(mIm);
|
||||||
|
when(mActivity.getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE))
|
||||||
.thenReturn(mock(TextServicesManager.class));
|
.thenReturn(mock(TextServicesManager.class));
|
||||||
when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE)).thenReturn(mDpm);
|
when(mActivity.getSystemService(Context.DEVICE_POLICY_SERVICE)).thenReturn(mDpm);
|
||||||
when(mContext.getSystemService(Context.INPUT_METHOD_SERVICE)).thenReturn(mImm);
|
when(mActivity.getSystemService(Context.INPUT_METHOD_SERVICE)).thenReturn(mImm);
|
||||||
when((Object) mContext.getSystemService(AutofillManager.class))
|
when((Object) mActivity.getSystemService(AutofillManager.class))
|
||||||
.thenReturn(mAutofillManager);
|
.thenReturn(mAutofillManager);
|
||||||
mFragment = new TestFragment(mContext);
|
mFragment = new TestFragment(mActivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -106,7 +106,8 @@ public class LanguageAndInputSettingsTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetPreferenceControllers_shouldRegisterLifecycleObservers() {
|
public void testGetPreferenceControllers_shouldRegisterLifecycleObservers() {
|
||||||
final List<PreferenceController> controllers = mFragment.getPreferenceControllers(mContext);
|
final List<PreferenceController> controllers =
|
||||||
|
mFragment.getPreferenceControllers(mActivity);
|
||||||
int lifecycleObserverCount = 0;
|
int lifecycleObserverCount = 0;
|
||||||
for (PreferenceController controller : controllers) {
|
for (PreferenceController controller : controllers) {
|
||||||
if (controller instanceof LifecycleObserver) {
|
if (controller instanceof LifecycleObserver) {
|
||||||
@@ -120,7 +121,8 @@ public class LanguageAndInputSettingsTest {
|
|||||||
@Test
|
@Test
|
||||||
|
|
||||||
public void testGetPreferenceControllers_shouldAllBeCreated() {
|
public void testGetPreferenceControllers_shouldAllBeCreated() {
|
||||||
final List<PreferenceController> controllers = mFragment.getPreferenceControllers(mContext);
|
final List<PreferenceController> controllers =
|
||||||
|
mFragment.getPreferenceControllers(mActivity);
|
||||||
|
|
||||||
assertThat(controllers.isEmpty()).isFalse();
|
assertThat(controllers.isEmpty()).isFalse();
|
||||||
}
|
}
|
||||||
@@ -152,6 +154,29 @@ public class LanguageAndInputSettingsTest {
|
|||||||
verify(loader).setSummary(provider, null);
|
verify(loader).setSummary(provider, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Config(shadows = {
|
||||||
|
ShadowSecureSettings.class,
|
||||||
|
})
|
||||||
|
public void testSummary_assistSupported_shouldSetToAssistGestureStatus() {
|
||||||
|
final FakeFeatureFactory featureFactory =
|
||||||
|
(FakeFeatureFactory) FakeFeatureFactory.getFactory(mActivity);
|
||||||
|
when(featureFactory.assistGestureFeatureProvider.isSupported(any(Context.class)))
|
||||||
|
.thenReturn(true);
|
||||||
|
|
||||||
|
final SummaryLoader loader = mock(SummaryLoader.class);
|
||||||
|
SummaryLoader.SummaryProvider provider = mFragment.SUMMARY_PROVIDER_FACTORY
|
||||||
|
.createSummaryProvider(mActivity, loader);
|
||||||
|
|
||||||
|
ShadowSecureSettings.putInt(null, Settings.Secure.ASSIST_GESTURE_ENABLED, 0);
|
||||||
|
provider.setListening(true);
|
||||||
|
verify(mActivity).getString(R.string.language_input_gesture_summary_off);
|
||||||
|
|
||||||
|
ShadowSecureSettings.putInt(null, Settings.Secure.ASSIST_GESTURE_ENABLED, 1);
|
||||||
|
provider.setListening(true);
|
||||||
|
verify(mActivity).getString(R.string.language_input_gesture_summary_on_with_assist);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNonIndexableKeys_existInXmlLayout() {
|
public void testNonIndexableKeys_existInXmlLayout() {
|
||||||
final Context context = spy(RuntimeEnvironment.application);
|
final Context context = spy(RuntimeEnvironment.application);
|
||||||
|
Reference in New Issue
Block a user