Only use DecorContext with main activity windows.

Bug: 26251921
Change-Id: Icd41eddd4f39b95a136ee366673fabbef9d4def0
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 2d8bfd4..fafe3d1 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -274,6 +274,8 @@
 
     private int mDecorCaptionShade = DECOR_CAPTION_SHADE_AUTO;
 
+    private boolean mUseDecorContext = false;
+
     static class WindowManagerHolder {
         static final IWindowManager sWindowManager = IWindowManager.Stub.asInterface(
                 ServiceManager.getService("window"));
@@ -286,8 +288,14 @@
         mLayoutInflater = LayoutInflater.from(context);
     }
 
+    /**
+     * Constructor for main window of an activity.
+     */
     public PhoneWindow(Context context, Window preservedWindow) {
         this(context);
+        // Only main activity windows use decor context, all the other windows depend on whatever
+        // context that was given to them.
+        mUseDecorContext = true;
         if (preservedWindow != null) {
             mDecor = (DecorView) preservedWindow.getDecorView();
             mElevation = preservedWindow.getElevation();
@@ -2259,15 +2267,19 @@
         // System process doesn't have application context and in that case we need to directly use
         // the context we have. Otherwise we want the application context, so we don't cling to the
         // activity.
-        Context applicationContext = getContext().getApplicationContext();
         Context context;
-        if (applicationContext == null) {
-            context = getContext();
-        } else {
-            context = new DecorContext(applicationContext);
-            if (mTheme != -1) {
-                context.setTheme(mTheme);
+        if (mUseDecorContext) {
+            Context applicationContext = getContext().getApplicationContext();
+            if (applicationContext == null) {
+                context = getContext();
+            } else {
+                context = new DecorContext(applicationContext);
+                if (mTheme != -1) {
+                    context.setTheme(mTheme);
+                }
             }
+        } else {
+            context = getContext();
         }
         return new DecorView(context, featureId, this);
     }