Loading src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +7 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,8 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { private static final String TAG = "DashboardFeatureImpl"; private static final String DASHBOARD_TILE_PREF_KEY_PREFIX = "dashboard_tile_pref_"; private static final String META_DATA_KEY_INTENT_ACTION = "com.android.settings.intent.action"; protected final Context mContext; Loading Loading @@ -133,13 +135,18 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { } final Bundle metadata = tile.metaData; String clsName = null; String action = null; if (metadata != null) { clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS); action = metadata.getString(META_DATA_KEY_INTENT_ACTION); } if (!TextUtils.isEmpty(clsName)) { pref.setFragment(clsName); } else if (tile.intent != null) { final Intent intent = new Intent(tile.intent); if (action != null) { intent.setAction(action); } pref.setOnPreferenceClickListener(preference -> { ProfileSelectDialog.updateUserHandlesIfNeeded(mContext, tile); if (tile.userHandle == null) { Loading tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -41,7 +41,9 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowActivity; import org.robolectric.shadows.ShadowApplication; import java.util.ArrayList; Loading @@ -51,6 +53,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) Loading Loading @@ -171,6 +174,26 @@ public class DashboardFeatureProviderImplTest { assertThat(preference.getOrder()).isEqualTo(-tile.priority + baseOrder); } @Test public void bindPreference_withIntentActionMetatdata_shouldSetLaunchAction() { Activity activity = Robolectric.buildActivity(Activity.class).get(); final ShadowApplication application = ShadowApplication.getInstance(); final Preference preference = new Preference(application.getApplicationContext()); final Tile tile = new Tile(); tile.key = "key"; tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); tile.metaData = new Bundle(); tile.metaData.putString("com.android.settings.intent.action", "TestAction"); tile.userHandle = null; mImpl.bindPreferenceToTile(activity, preference, tile, "123", Preference.DEFAULT_ORDER); preference.performClick(); ShadowActivity shadowActivity = shadowOf(activity); assertThat(shadowActivity.getNextStartedActivityForResult().intent.getAction()) .isEqualTo("TestAction"); } @Test public void getPreferences_notEnabled_shouldReturnNull() { final DashboardFeatureProviderImpl mSpy = spy(mImpl); Loading Loading
src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +7 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,8 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { private static final String TAG = "DashboardFeatureImpl"; private static final String DASHBOARD_TILE_PREF_KEY_PREFIX = "dashboard_tile_pref_"; private static final String META_DATA_KEY_INTENT_ACTION = "com.android.settings.intent.action"; protected final Context mContext; Loading Loading @@ -133,13 +135,18 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { } final Bundle metadata = tile.metaData; String clsName = null; String action = null; if (metadata != null) { clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS); action = metadata.getString(META_DATA_KEY_INTENT_ACTION); } if (!TextUtils.isEmpty(clsName)) { pref.setFragment(clsName); } else if (tile.intent != null) { final Intent intent = new Intent(tile.intent); if (action != null) { intent.setAction(action); } pref.setOnPreferenceClickListener(preference -> { ProfileSelectDialog.updateUserHandlesIfNeeded(mContext, tile); if (tile.userHandle == null) { Loading
tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -41,7 +41,9 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowActivity; import org.robolectric.shadows.ShadowApplication; import java.util.ArrayList; Loading @@ -51,6 +53,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) Loading Loading @@ -171,6 +174,26 @@ public class DashboardFeatureProviderImplTest { assertThat(preference.getOrder()).isEqualTo(-tile.priority + baseOrder); } @Test public void bindPreference_withIntentActionMetatdata_shouldSetLaunchAction() { Activity activity = Robolectric.buildActivity(Activity.class).get(); final ShadowApplication application = ShadowApplication.getInstance(); final Preference preference = new Preference(application.getApplicationContext()); final Tile tile = new Tile(); tile.key = "key"; tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); tile.metaData = new Bundle(); tile.metaData.putString("com.android.settings.intent.action", "TestAction"); tile.userHandle = null; mImpl.bindPreferenceToTile(activity, preference, tile, "123", Preference.DEFAULT_ORDER); preference.performClick(); ShadowActivity shadowActivity = shadowOf(activity); assertThat(shadowActivity.getNextStartedActivityForResult().intent.getAction()) .isEqualTo("TestAction"); } @Test public void getPreferences_notEnabled_shouldReturnNull() { final DashboardFeatureProviderImpl mSpy = spy(mImpl); Loading