Show None default app in stylus preference if no Notes holder.
This also fixes the role holder not updating when the default role holder has changed. Test: StylusDevicesControllerTest Bug: 254834764 Change-Id: Iec7ed7698f18279da9a04918dcdf3e20e73609d1
This commit is contained in:
@@ -10778,6 +10778,9 @@
|
|||||||
<!-- Subtext of system default app for current setting [CHAR LIMIT=NONE] -->
|
<!-- Subtext of system default app for current setting [CHAR LIMIT=NONE] -->
|
||||||
<string name="system_default_app_subtext">System default</string>
|
<string name="system_default_app_subtext">System default</string>
|
||||||
|
|
||||||
|
<!-- Summary of a default app when there is no app set [CHAR LIMIT=60] -->
|
||||||
|
<string name="default_app_none">None</string>
|
||||||
|
|
||||||
<!-- Developer settings: text for the bug report handler selection toast shown if an invalid bug report handler was chosen. [CHAR LIMIT=NONE] -->
|
<!-- Developer settings: text for the bug report handler selection toast shown if an invalid bug report handler was chosen. [CHAR LIMIT=NONE] -->
|
||||||
<string name="select_invalid_bug_report_handler_toast_text">This choice is no longer valid. Try again.</string>
|
<string name="select_invalid_bug_report_handler_toast_text">This choice is no longer valid. Try again.</string>
|
||||||
|
|
||||||
|
@@ -85,16 +85,24 @@ public class StylusDevicesController extends AbstractPreferenceController implem
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private Preference createDefaultNotesPreference() {
|
private Preference createOrUpdateDefaultNotesPreference(@Nullable Preference preference) {
|
||||||
RoleManager rm = mContext.getSystemService(RoleManager.class);
|
RoleManager rm = mContext.getSystemService(RoleManager.class);
|
||||||
if (rm == null) {
|
if (rm == null || !rm.isRoleAvailable(RoleManager.ROLE_NOTES)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Preference pref = preference == null ? new Preference(mContext) : preference;
|
||||||
|
pref.setKey(KEY_DEFAULT_NOTES);
|
||||||
|
pref.setTitle(mContext.getString(R.string.stylus_default_notes_app));
|
||||||
|
pref.setIcon(R.drawable.ic_article);
|
||||||
|
pref.setOnPreferenceClickListener(this);
|
||||||
|
pref.setEnabled(true);
|
||||||
|
|
||||||
List<String> roleHolders = rm.getRoleHoldersAsUser(RoleManager.ROLE_NOTES,
|
List<String> roleHolders = rm.getRoleHoldersAsUser(RoleManager.ROLE_NOTES,
|
||||||
mContext.getUser());
|
mContext.getUser());
|
||||||
if (roleHolders.isEmpty()) {
|
if (roleHolders.isEmpty()) {
|
||||||
return null;
|
pref.setSummary(R.string.default_app_none);
|
||||||
|
return pref;
|
||||||
}
|
}
|
||||||
|
|
||||||
String packageName = roleHolders.get(0);
|
String packageName = roleHolders.get(0);
|
||||||
@@ -107,13 +115,6 @@ public class StylusDevicesController extends AbstractPreferenceController implem
|
|||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
Log.e(TAG, "Notes role package not found.");
|
Log.e(TAG, "Notes role package not found.");
|
||||||
}
|
}
|
||||||
|
|
||||||
Preference pref = new Preference(mContext);
|
|
||||||
pref.setKey(KEY_DEFAULT_NOTES);
|
|
||||||
pref.setTitle(mContext.getString(R.string.stylus_default_notes_app));
|
|
||||||
pref.setIcon(R.drawable.ic_article);
|
|
||||||
pref.setOnPreferenceClickListener(this);
|
|
||||||
pref.setEnabled(true);
|
|
||||||
pref.setSummary(appName);
|
pref.setSummary(appName);
|
||||||
return pref;
|
return pref;
|
||||||
}
|
}
|
||||||
@@ -187,13 +188,11 @@ public class StylusDevicesController extends AbstractPreferenceController implem
|
|||||||
private void refresh() {
|
private void refresh() {
|
||||||
if (!isAvailable()) return;
|
if (!isAvailable()) return;
|
||||||
|
|
||||||
Preference notesPref = mPreferencesContainer.findPreference(KEY_DEFAULT_NOTES);
|
Preference currNotesPref = mPreferencesContainer.findPreference(KEY_DEFAULT_NOTES);
|
||||||
if (notesPref == null) {
|
Preference notesPref = createOrUpdateDefaultNotesPreference(currNotesPref);
|
||||||
notesPref = createDefaultNotesPreference();
|
if (currNotesPref == null && notesPref != null) {
|
||||||
if (notesPref != null) {
|
|
||||||
mPreferencesContainer.addPreference(notesPref);
|
mPreferencesContainer.addPreference(notesPref);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Preference handwritingPref = mPreferencesContainer.findPreference(KEY_HANDWRITING);
|
Preference handwritingPref = mPreferencesContainer.findPreference(KEY_HANDWRITING);
|
||||||
// TODO(b/255732419): add proper InputMethodInfo conditional to show or hide
|
// TODO(b/255732419): add proper InputMethodInfo conditional to show or hide
|
||||||
|
@@ -101,6 +101,7 @@ public class StylusDevicesControllerTest {
|
|||||||
|
|
||||||
when(mRm.getRoleHoldersAsUser(eq(RoleManager.ROLE_NOTES), any(UserHandle.class)))
|
when(mRm.getRoleHoldersAsUser(eq(RoleManager.ROLE_NOTES), any(UserHandle.class)))
|
||||||
.thenReturn(Collections.singletonList(NOTES_PACKAGE_NAME));
|
.thenReturn(Collections.singletonList(NOTES_PACKAGE_NAME));
|
||||||
|
when(mRm.isRoleAvailable(RoleManager.ROLE_NOTES)).thenReturn(true);
|
||||||
when(mContext.getPackageManager()).thenReturn(mPm);
|
when(mContext.getPackageManager()).thenReturn(mPm);
|
||||||
when(mPm.getApplicationInfo(eq(NOTES_PACKAGE_NAME),
|
when(mPm.getApplicationInfo(eq(NOTES_PACKAGE_NAME),
|
||||||
any(PackageManager.ApplicationInfoFlags.class))).thenReturn(new ApplicationInfo());
|
any(PackageManager.ApplicationInfoFlags.class))).thenReturn(new ApplicationInfo());
|
||||||
@@ -235,16 +236,26 @@ public class StylusDevicesControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void defaultNotesPreference_noRoleHolder_hidesNotesRoleApp() {
|
public void defaultNotesPreference_roleHolderChanges_updatesPreference() {
|
||||||
|
showScreen(mController);
|
||||||
|
Preference defaultNotesPref = mPreferenceContainer.getPreference(0);
|
||||||
when(mRm.getRoleHoldersAsUser(eq(RoleManager.ROLE_NOTES), any(UserHandle.class)))
|
when(mRm.getRoleHoldersAsUser(eq(RoleManager.ROLE_NOTES), any(UserHandle.class)))
|
||||||
.thenReturn(Collections.emptyList());
|
.thenReturn(Collections.emptyList());
|
||||||
showScreen(mController);
|
showScreen(mController);
|
||||||
|
|
||||||
for (int i = 0; i < mPreferenceContainer.getPreferenceCount(); i++) {
|
assertThat(defaultNotesPref.getSummary().toString()).isEqualTo(
|
||||||
Preference pref = mPreferenceContainer.getPreference(i);
|
mContext.getString(R.string.default_app_none));
|
||||||
assertThat(pref.getTitle().toString()).isNotEqualTo(
|
|
||||||
mContext.getString(R.string.stylus_default_notes_app));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void defaultNotesPreference_noRoleHolder_showNoneInSummary() {
|
||||||
|
when(mRm.getRoleHoldersAsUser(eq(RoleManager.ROLE_NOTES), any(UserHandle.class)))
|
||||||
|
.thenReturn(Collections.emptyList());
|
||||||
|
showScreen(mController);
|
||||||
|
|
||||||
|
Preference defaultNotesPref = mPreferenceContainer.getPreference(0);
|
||||||
|
assertThat(defaultNotesPref.getSummary().toString()).isEqualTo(
|
||||||
|
mContext.getString(R.string.default_app_none));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user