Add handling for tiles with intent-action metadata.

If intent action is provided in the metadata for the dynamic tiles, it
will be added to the launching intent when user selects the tile.

Fixes: 31801423
Test: make RunSettingsRoboTests
Change-Id: Ic3e583a578660f4d9c40feff1418e5e354ab8f60
This commit is contained in:
Doris Ling
2016-12-05 15:12:09 -08:00
parent b305ec6762
commit a155197d65
2 changed files with 30 additions and 0 deletions

View File

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