Loading core/java/android/service/dreams/DreamService.java +16 −10 Original line number Diff line number Diff line Loading @@ -1383,16 +1383,22 @@ public class DreamService extends Service implements Window.Callback { DreamService.DREAM_META_DATA, DREAM_META_DATA_ROOT_TAG, com.android.internal.R.styleable.Dream)) { if (rawMetadata == null) return null; try { return new DreamMetadata( convertToComponentName( rawMetadata.getString( com.android.internal.R.styleable.Dream_settingsActivity), serviceInfo), com.android.internal.R.styleable.Dream_settingsActivity), serviceInfo), rawMetadata.getDrawable( com.android.internal.R.styleable.Dream_previewImage), rawMetadata.getBoolean(R.styleable.Dream_showClockAndComplications, DEFAULT_SHOW_COMPLICATIONS), rawMetadata.getInt(R.styleable.Dream_dreamCategory, DREAM_CATEGORY_DEFAULT) ); } catch (Exception exception) { Log.e(TAG, "Failed to create read metadata", exception); return null; } } } Loading services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -20,12 +20,17 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.content.res.TypedArray; import android.os.Looper; import android.platform.test.annotations.EnableFlags; import android.service.dreams.DreamService; Loading @@ -41,6 +46,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @SmallTest @RunWith(AndroidJUnit4.class) Loading Loading @@ -83,6 +89,18 @@ public class DreamServiceTest { assertThat(metadata.dreamCategory).isEqualTo(DreamService.DREAM_CATEGORY_DEFAULT); } @Test public void testMetadataParsing_exceptionReading() { final PackageManager packageManager = Mockito.mock(PackageManager.class); final ServiceInfo serviceInfo = Mockito.mock(ServiceInfo.class); final TypedArray rawMetadata = Mockito.mock(TypedArray.class); when(packageManager.extractPackageItemInfoAttributes(eq(serviceInfo), any(), any(), any())) .thenReturn(rawMetadata); when(rawMetadata.getString(anyInt())).thenThrow(new RuntimeException("failure")); assertThat(DreamService.getDreamMetadata(packageManager, serviceInfo)).isNull(); } private DreamService.DreamMetadata getDreamMetadata(String dreamClassName) throws PackageManager.NameNotFoundException { final Context context = InstrumentationRegistry.getInstrumentation().getTargetContext(); Loading Loading
core/java/android/service/dreams/DreamService.java +16 −10 Original line number Diff line number Diff line Loading @@ -1383,16 +1383,22 @@ public class DreamService extends Service implements Window.Callback { DreamService.DREAM_META_DATA, DREAM_META_DATA_ROOT_TAG, com.android.internal.R.styleable.Dream)) { if (rawMetadata == null) return null; try { return new DreamMetadata( convertToComponentName( rawMetadata.getString( com.android.internal.R.styleable.Dream_settingsActivity), serviceInfo), com.android.internal.R.styleable.Dream_settingsActivity), serviceInfo), rawMetadata.getDrawable( com.android.internal.R.styleable.Dream_previewImage), rawMetadata.getBoolean(R.styleable.Dream_showClockAndComplications, DEFAULT_SHOW_COMPLICATIONS), rawMetadata.getInt(R.styleable.Dream_dreamCategory, DREAM_CATEGORY_DEFAULT) ); } catch (Exception exception) { Log.e(TAG, "Failed to create read metadata", exception); return null; } } } Loading
services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -20,12 +20,17 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.content.res.TypedArray; import android.os.Looper; import android.platform.test.annotations.EnableFlags; import android.service.dreams.DreamService; Loading @@ -41,6 +46,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @SmallTest @RunWith(AndroidJUnit4.class) Loading Loading @@ -83,6 +89,18 @@ public class DreamServiceTest { assertThat(metadata.dreamCategory).isEqualTo(DreamService.DREAM_CATEGORY_DEFAULT); } @Test public void testMetadataParsing_exceptionReading() { final PackageManager packageManager = Mockito.mock(PackageManager.class); final ServiceInfo serviceInfo = Mockito.mock(ServiceInfo.class); final TypedArray rawMetadata = Mockito.mock(TypedArray.class); when(packageManager.extractPackageItemInfoAttributes(eq(serviceInfo), any(), any(), any())) .thenReturn(rawMetadata); when(rawMetadata.getString(anyInt())).thenThrow(new RuntimeException("failure")); assertThat(DreamService.getDreamMetadata(packageManager, serviceInfo)).isNull(); } private DreamService.DreamMetadata getDreamMetadata(String dreamClassName) throws PackageManager.NameNotFoundException { final Context context = InstrumentationRegistry.getInstrumentation().getTargetContext(); Loading