Merge "Fix get display from display context derived context not working" into rvc-dev
This commit is contained in:
@@ -2747,6 +2747,7 @@ class ContextImpl extends Context {
|
|||||||
opPackageName = container.mOpPackageName;
|
opPackageName = container.mOpPackageName;
|
||||||
setResources(container.mResources);
|
setResources(container.mResources);
|
||||||
mDisplay = container.mDisplay;
|
mDisplay = container.mDisplay;
|
||||||
|
mIsAssociatedWithDisplay = container.mIsAssociatedWithDisplay;
|
||||||
mIsSystemOrSystemUiContext = container.mIsSystemOrSystemUiContext;
|
mIsSystemOrSystemUiContext = container.mIsSystemOrSystemUiContext;
|
||||||
} else {
|
} else {
|
||||||
mBasePackageName = packageInfo.mPackageName;
|
mBasePackageName = packageInfo.mPackageName;
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package android.content;
|
package android.content;
|
||||||
|
|
||||||
|
import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY;
|
||||||
|
import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC;
|
||||||
import static android.view.Display.DEFAULT_DISPLAY;
|
import static android.view.Display.DEFAULT_DISPLAY;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
@@ -23,8 +25,13 @@ import static com.google.common.truth.Truth.assertThat;
|
|||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import android.app.ActivityThread;
|
import android.app.ActivityThread;
|
||||||
|
import android.content.res.Configuration;
|
||||||
|
import android.graphics.PixelFormat;
|
||||||
import android.hardware.display.DisplayManager;
|
import android.hardware.display.DisplayManager;
|
||||||
|
import android.hardware.display.VirtualDisplay;
|
||||||
|
import android.media.ImageReader;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
|
import android.view.Display;
|
||||||
|
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
@@ -127,4 +134,41 @@ public class ContextTest {
|
|||||||
|
|
||||||
assertThat(systemUiContext.isUiContext()).isTrue();
|
assertThat(systemUiContext.isUiContext()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetDisplayFromDisplayContextDerivedContextOnPrimaryDisplay() {
|
||||||
|
verifyGetDisplayFromDisplayContextDerivedContext(false /* onSecondaryDisplay */);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetDisplayFromDisplayContextDerivedContextOnSecondaryDisplay() {
|
||||||
|
verifyGetDisplayFromDisplayContextDerivedContext(true /* onSecondaryDisplay */);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void verifyGetDisplayFromDisplayContextDerivedContext(
|
||||||
|
boolean onSecondaryDisplay) {
|
||||||
|
final Context appContext = ApplicationProvider.getApplicationContext();
|
||||||
|
final DisplayManager displayManager = appContext.getSystemService(DisplayManager.class);
|
||||||
|
final Display display;
|
||||||
|
if (onSecondaryDisplay) {
|
||||||
|
display = getSecondaryDisplay(displayManager);
|
||||||
|
} else {
|
||||||
|
display = displayManager.getDisplay(DEFAULT_DISPLAY);
|
||||||
|
}
|
||||||
|
final Context context = appContext.createDisplayContext(display)
|
||||||
|
.createConfigurationContext(new Configuration());
|
||||||
|
assertEquals(display, context.getDisplay());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Display getSecondaryDisplay(DisplayManager displayManager) {
|
||||||
|
final int width = 800;
|
||||||
|
final int height = 480;
|
||||||
|
final int density = 160;
|
||||||
|
ImageReader reader = ImageReader.newInstance(width, height, PixelFormat.RGBA_8888,
|
||||||
|
2 /* maxImages */);
|
||||||
|
VirtualDisplay virtualDisplay = displayManager.createVirtualDisplay(
|
||||||
|
ContextTest.class.getName(), width, height, density, reader.getSurface(),
|
||||||
|
VIRTUAL_DISPLAY_FLAG_PUBLIC | VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY);
|
||||||
|
return virtualDisplay.getDisplay();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user