diff options
| author | 2020-06-29 01:48:06 +0000 | |
|---|---|---|
| committer | 2020-06-29 14:27:08 +0000 | |
| commit | ba4ffa4a6d83e6fbdd8839c0ffdfa41cb5c36e4b (patch) | |
| tree | 24e07cbc4e06a8021563fa7cf5e5a9a0196208eb | |
| parent | 71b8a0456ca34726803ad8ada2d37da1720bc408 (diff) | |
Revert "Revert "Enable IMS and its config context to obtain UI component""
Test: atest StrictModeTest
Bug: 157027563
Bug: 159795597
Change-Id: I2a1b3fefa0bd82eeaa507c08fc4a79fc9f4391c5
| -rw-r--r-- | core/java/android/app/ContextImpl.java | 7 | ||||
| -rw-r--r-- | core/java/android/view/ViewConfiguration.java | 5 |
2 files changed, 8 insertions, 4 deletions
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 86a3579effe1..a828aac78ded 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -1900,11 +1900,13 @@ class ContextImpl extends Context { @Override public Object getSystemService(String name) { + // We may override this API from outer context. + final boolean isUiContext = isUiContext() || getOuterContext().isUiContext(); // Check incorrect Context usage. - if (isUiComponent(name) && !isUiContext() && vmIncorrectContextUseEnabled()) { + if (isUiComponent(name) && !isUiContext && vmIncorrectContextUseEnabled()) { final String errorMessage = "Tried to access visual service " + SystemServiceRegistry.getSystemServiceClassName(name) - + " from a non-visual Context. "; + + " from a non-visual Context:" + getOuterContext(); final String message = "Visual services, such as WindowManager, WallpaperService or " + "LayoutInflater should be accessed from Activity or other visual Context. " + "Use an Activity or a Context created with " @@ -2369,6 +2371,7 @@ class ContextImpl extends Context { context.setResources(createResources(mToken, mPackageInfo, mSplitName, displayId, overrideConfiguration, getDisplayAdjustments(displayId).getCompatibilityInfo(), mResources.getLoaders())); + context.mIsUiContext = isUiContext() || getOuterContext().isUiContext(); return context; } diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java index 0d2d4d13eb38..ffeeb806ba54 100644 --- a/core/java/android/view/ViewConfiguration.java +++ b/core/java/android/view/ViewConfiguration.java @@ -500,12 +500,13 @@ public class ViewConfiguration { */ public static ViewConfiguration get(Context context) { if (!context.isUiContext() && vmIncorrectContextUseEnabled()) { - final String errorMessage = "Tried to access UI constants from a non-visual Context."; + final String errorMessage = "Tried to access UI constants from a non-visual Context:" + + context; final String message = "UI constants, such as display metrics or window metrics, " + "must be accessed from Activity or other visual Context. " + "Use an Activity or a Context created with " + "Context#createWindowContext(int, Bundle), which are adjusted to the " - + "configuration and visual bounds of an area on screen."; + + "configuration and visual bounds of an area on screen"; final Exception exception = new IllegalArgumentException(errorMessage); StrictMode.onIncorrectContextUsed(message, exception); Log.e(TAG, errorMessage + message, exception); |