summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/WindowManagerImpl.java4
-rw-r--r--core/java/com/android/internal/policy/DecorContext.java52
-rw-r--r--core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java32
3 files changed, 32 insertions, 56 deletions
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index 561ee604aa7f..316a5f2c88d2 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -36,7 +36,6 @@ import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
-import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.IResultReceiver;
import java.util.List;
@@ -70,8 +69,7 @@ import java.util.List;
public final class WindowManagerImpl implements WindowManager {
@UnsupportedAppUsage
private final WindowManagerGlobal mGlobal = WindowManagerGlobal.getInstance();
- @VisibleForTesting
- public final Context mContext;
+ private final Context mContext;
private final Window mParentWindow;
private IBinder mDefaultToken;
diff --git a/core/java/com/android/internal/policy/DecorContext.java b/core/java/com/android/internal/policy/DecorContext.java
index f00776897f2c..99b4b5fb7707 100644
--- a/core/java/com/android/internal/policy/DecorContext.java
+++ b/core/java/com/android/internal/policy/DecorContext.java
@@ -41,17 +41,17 @@ import java.lang.ref.WeakReference;
public class DecorContext extends ContextThemeWrapper {
private PhoneWindow mPhoneWindow;
private WindowManager mWindowManager;
- private Resources mResources;
+ private Resources mActivityResources;
private ContentCaptureManager mContentCaptureManager;
- private WeakReference<Context> mContext;
+ private WeakReference<Context> mActivityContext;
// TODO(b/149928768): Non-activity context can be passed.
@VisibleForTesting
- public DecorContext(Context baseContext, Context context) {
- super(baseContext.createDisplayContext(context.getDisplayNoVerify()), null);
- mContext = new WeakReference<>(context);
- mResources = context.getResources();
+ public DecorContext(Context context, Context activityContext) {
+ super(context.createDisplayContext(activityContext.getDisplayNoVerify()), null);
+ mActivityContext = new WeakReference<>(activityContext);
+ mActivityResources = activityContext.getResources();
}
void setPhoneWindow(PhoneWindow phoneWindow) {
@@ -61,56 +61,58 @@ public class DecorContext extends ContextThemeWrapper {
@Override
public Object getSystemService(String name) {
- final Context context = mContext.get();
if (Context.WINDOW_SERVICE.equals(name)) {
- if (context != null && mWindowManager == null) {
- WindowManagerImpl wm = (WindowManagerImpl) context.getSystemService(name);
+ if (mWindowManager == null) {
+ WindowManagerImpl wm =
+ (WindowManagerImpl) super.getSystemService(Context.WINDOW_SERVICE);
mWindowManager = wm.createLocalWindowManager(mPhoneWindow);
}
return mWindowManager;
}
if (Context.CONTENT_CAPTURE_MANAGER_SERVICE.equals(name)) {
- if (context != null && mContentCaptureManager == null) {
- mContentCaptureManager = (ContentCaptureManager) context.getSystemService(name);
+ if (mContentCaptureManager == null) {
+ Context activityContext = mActivityContext.get();
+ if (activityContext != null) {
+ mContentCaptureManager = (ContentCaptureManager) activityContext
+ .getSystemService(name);
+ }
}
return mContentCaptureManager;
}
- // LayoutInflater and WallpaperManagerService should also be obtained from context
- // instead of application context.
- return (context != null) ? context.getSystemService(name) : super.getSystemService(name);
+ return super.getSystemService(name);
}
@Override
public Resources getResources() {
- Context context = mContext.get();
+ Context activityContext = mActivityContext.get();
// Attempt to update the local cached Resources from the activity context. If the activity
// is no longer around, return the old cached values.
- if (context != null) {
- mResources = context.getResources();
+ if (activityContext != null) {
+ mActivityResources = activityContext.getResources();
}
- return mResources;
+ return mActivityResources;
}
@Override
public AssetManager getAssets() {
- return mResources.getAssets();
+ return mActivityResources.getAssets();
}
@Override
public AutofillOptions getAutofillOptions() {
- Context context = mContext.get();
- if (context != null) {
- return context.getAutofillOptions();
+ Context activityContext = mActivityContext.get();
+ if (activityContext != null) {
+ return activityContext.getAutofillOptions();
}
return null;
}
@Override
public ContentCaptureOptions getContentCaptureOptions() {
- Context context = mContext.get();
- if (context != null) {
- return context.getContentCaptureOptions();
+ Context activityContext = mActivityContext.get();
+ if (activityContext != null) {
+ return activityContext.getContentCaptureOptions();
}
return null;
}
diff --git a/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java b/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java
index d019704fb684..3e40466e4b64 100644
--- a/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java
+++ b/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java
@@ -20,24 +20,19 @@ import static android.view.Display.DEFAULT_DISPLAY;
import static org.junit.Assert.assertEquals;
-import android.app.Activity;
-import android.app.EmptyActivity;
import android.content.Context;
import android.hardware.display.DisplayManagerGlobal;
import android.platform.test.annotations.Presubmit;
import android.view.Display;
import android.view.DisplayAdjustments;
import android.view.DisplayInfo;
-import android.view.WindowManager;
-import android.view.WindowManagerImpl;
-import androidx.test.core.app.ApplicationProvider;
+import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
-import androidx.test.rule.ActivityTestRule;
import androidx.test.runner.AndroidJUnit4;
+
import org.junit.Before;
-import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -51,13 +46,9 @@ public final class DecorContextTest {
private Context mContext;
private static final int EXTERNAL_DISPLAY = DEFAULT_DISPLAY + 1;
- @Rule
- public ActivityTestRule<EmptyActivity> mActivityRule =
- new ActivityTestRule<>(EmptyActivity.class);
-
@Before
- public void setUp() {
- mContext = ApplicationProvider.getApplicationContext();
+ public void setUp() throws Exception {
+ mContext = InstrumentationRegistry.getContext();
}
@Test
@@ -85,19 +76,4 @@ public final class DecorContextTest {
Display associatedDisplay = decorContext.getDisplay();
assertEquals(expectedDisplayId, associatedDisplay.getDisplayId());
}
-
- @Test
- public void testGetWindowManagerFromVisualDecorContext() throws Throwable {
- mActivityRule.runOnUiThread(() -> {
- Activity activity = mActivityRule.getActivity();
- final DecorContext decorContext = new DecorContext(mContext.getApplicationContext(),
- activity);
- WindowManagerImpl actualWm = (WindowManagerImpl)
- decorContext.getSystemService(WindowManager.class);
- WindowManagerImpl expectedWm = (WindowManagerImpl)
- activity.getSystemService(WindowManager.class);
- // Verify that window manager is from activity not application context.
- assertEquals(expectedWm.mContext, actualWm.mContext);
- });
- }
}