Loading core/java/com/android/internal/policy/DecorContext.java +13 −3 Original line number Diff line number Diff line Loading @@ -20,8 +20,10 @@ import android.content.AutofillOptions; import android.content.ContentCaptureOptions; import android.content.Context; import android.content.res.AssetManager; import android.content.res.Configuration; import android.content.res.Resources; import android.view.ContextThemeWrapper; import android.view.Display; import android.view.contentcapture.ContentCaptureManager; import com.android.internal.annotations.VisibleForTesting; Loading @@ -47,9 +49,17 @@ public class DecorContext extends ContextThemeWrapper { public DecorContext(Context baseContext, PhoneWindow phoneWindow) { super(null /* base */, null); setPhoneWindow(phoneWindow); final Context displayContext = baseContext.createDisplayContext( // TODO(b/149790106): Non-activity context can be passed. phoneWindow.getContext().getDisplayNoVerify()); final Display display = phoneWindow.getContext().getDisplayNoVerify(); final Context displayContext; if (display.getDisplayId() == Display.DEFAULT_DISPLAY) { // TODO(b/166174272): Creating a display context for the default display will result // in additional resource creation. displayContext = baseContext.createConfigurationContext(Configuration.EMPTY); displayContext.updateDisplay(Display.DEFAULT_DISPLAY); } else { displayContext = baseContext.createDisplayContext(display); } attachBaseContext(displayContext); } Loading core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java +10 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ import static android.view.Display.DEFAULT_DISPLAY; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import android.app.Activity; import android.app.EmptyActivity; Loading @@ -41,6 +44,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; /** * Tests {@link DecorContext}. Loading @@ -63,13 +67,18 @@ public final class DecorContextTest { @Test public void testDecorContextWithDefaultDisplay() { final Context baseContext = Mockito.spy(mContext.getApplicationContext()); Display defaultDisplay = new Display(DisplayManagerGlobal.getInstance(), DEFAULT_DISPLAY, new DisplayInfo(), DisplayAdjustments.DEFAULT_DISPLAY_ADJUSTMENTS); final Context defaultDisplayContext = mContext.createDisplayContext(defaultDisplay); final PhoneWindow window = new PhoneWindow(defaultDisplayContext); DecorContext context = new DecorContext(mContext.getApplicationContext(), window); DecorContext context = new DecorContext(baseContext, window); assertDecorContextDisplay(DEFAULT_DISPLAY, context); // TODO(b/166174272): Creating a display context for the default display will result // in additional resource creation. verify(baseContext, never()).createDisplayContext(any()); } @Test Loading Loading
core/java/com/android/internal/policy/DecorContext.java +13 −3 Original line number Diff line number Diff line Loading @@ -20,8 +20,10 @@ import android.content.AutofillOptions; import android.content.ContentCaptureOptions; import android.content.Context; import android.content.res.AssetManager; import android.content.res.Configuration; import android.content.res.Resources; import android.view.ContextThemeWrapper; import android.view.Display; import android.view.contentcapture.ContentCaptureManager; import com.android.internal.annotations.VisibleForTesting; Loading @@ -47,9 +49,17 @@ public class DecorContext extends ContextThemeWrapper { public DecorContext(Context baseContext, PhoneWindow phoneWindow) { super(null /* base */, null); setPhoneWindow(phoneWindow); final Context displayContext = baseContext.createDisplayContext( // TODO(b/149790106): Non-activity context can be passed. phoneWindow.getContext().getDisplayNoVerify()); final Display display = phoneWindow.getContext().getDisplayNoVerify(); final Context displayContext; if (display.getDisplayId() == Display.DEFAULT_DISPLAY) { // TODO(b/166174272): Creating a display context for the default display will result // in additional resource creation. displayContext = baseContext.createConfigurationContext(Configuration.EMPTY); displayContext.updateDisplay(Display.DEFAULT_DISPLAY); } else { displayContext = baseContext.createDisplayContext(display); } attachBaseContext(displayContext); } Loading
core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java +10 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ import static android.view.Display.DEFAULT_DISPLAY; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import android.app.Activity; import android.app.EmptyActivity; Loading @@ -41,6 +44,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; /** * Tests {@link DecorContext}. Loading @@ -63,13 +67,18 @@ public final class DecorContextTest { @Test public void testDecorContextWithDefaultDisplay() { final Context baseContext = Mockito.spy(mContext.getApplicationContext()); Display defaultDisplay = new Display(DisplayManagerGlobal.getInstance(), DEFAULT_DISPLAY, new DisplayInfo(), DisplayAdjustments.DEFAULT_DISPLAY_ADJUSTMENTS); final Context defaultDisplayContext = mContext.createDisplayContext(defaultDisplay); final PhoneWindow window = new PhoneWindow(defaultDisplayContext); DecorContext context = new DecorContext(mContext.getApplicationContext(), window); DecorContext context = new DecorContext(baseContext, window); assertDecorContextDisplay(DEFAULT_DISPLAY, context); // TODO(b/166174272): Creating a display context for the default display will result // in additional resource creation. verify(baseContext, never()).createDisplayContext(any()); } @Test Loading