Merge "Update text for Languages & Input." into oc-dr1-dev

am: 73e03e6ca2

Change-Id: I339b129e599c11136add30af66514d783ee94554
This commit is contained in:
Doris Ling
2017-06-09 01:13:36 +00:00
committed by android-build-merger
4 changed files with 66 additions and 29 deletions

View File

@@ -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">

View File

@@ -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"

View File

@@ -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);

View File

@@ -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);