diff options
| author | 2021-11-23 21:00:39 +0800 | |
|---|---|---|
| committer | 2021-12-01 17:44:29 +0800 | |
| commit | 1bd5713db3da6ed4aaba35ecacc98636ae651b7d (patch) | |
| tree | a8f0a15e7ed502836e369714ffb63ce859a49cdc | |
| parent | a5f83144a308b4bd0b276bf62605d87682b7adaa (diff) | |
Verify WindowContext gets custom Drawable
Before [1], WindowContext#getDrawable with custom drawable would
lead to app crashes.
This CL adds a test to prevent future regression.
[1]: 09c03ec912419f4e1fe3fbc5980843b4dbd73599
fixes: 203027987
Test: atest WindowContextTest
Change-Id: I46fc81c3e850089b8021053b38e258720023aa68
3 files changed, 55 insertions, 0 deletions
diff --git a/core/tests/coretests/res/drawable/custom_drawable.xml b/core/tests/coretests/res/drawable/custom_drawable.xml new file mode 100644 index 000000000000..ebb821fa11fb --- /dev/null +++ b/core/tests/coretests/res/drawable/custom_drawable.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2021 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<drawable xmlns:android="http://schemas.android.com/apk/res/android" + class="android.window.CustomDrawable" + android:drawable="@drawable/bitmap_drawable" + android:inset="10dp" />
\ No newline at end of file diff --git a/core/tests/coretests/src/android/window/CustomDrawable.java b/core/tests/coretests/src/android/window/CustomDrawable.java new file mode 100644 index 000000000000..c25f87782420 --- /dev/null +++ b/core/tests/coretests/src/android/window/CustomDrawable.java @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.window; + +import android.graphics.drawable.InsetDrawable; + +public class CustomDrawable extends InsetDrawable { + public CustomDrawable() { + super(null, 0); + } +} diff --git a/core/tests/coretests/src/android/window/WindowContextTest.java b/core/tests/coretests/src/android/window/WindowContextTest.java index 83280f18c889..656e756416d0 100644 --- a/core/tests/coretests/src/android/window/WindowContextTest.java +++ b/core/tests/coretests/src/android/window/WindowContextTest.java @@ -23,6 +23,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import android.app.Activity; @@ -47,6 +48,8 @@ import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; +import com.android.frameworks.coretests.R; + import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -242,6 +245,12 @@ public class WindowContextTest { mInstrumentation.runOnMainSync(() -> wm.addView(subWindow, subWindowAttrs)); } + @Test + public void testGetCustomDrawable() { + assertNotNull(mWindowContext.getResources().getDrawable(R.drawable.custom_drawable, + null /* theme */)); + } + private WindowContext createWindowContext() { return createWindowContext(TYPE_APPLICATION_OVERLAY); } |