diff options
author | Jerome Gaillard <jgaillard@google.com> | 2022-02-11 18:24:19 +0000 |
---|---|---|
committer | Cherrypicker Worker <android-build-cherrypicker-worker@google.com> | 2022-02-16 13:01:39 +0000 |
commit | 0d0cd11b3f8eb4aee87d5487a4b0f9cd6d154a9d (patch) | |
tree | d1a0e56a360723c4be43428d2df7db994ccfa5af | |
parent | a776fbce5390caac9a0cb67940ddc5cdcf4d6eed (diff) | |
download | layoutlib-0d0cd11b3f8eb4aee87d5487a4b0f9cd6d154a9d.tar.gz |
Use new LayoutlibCallback.getResourcePackage method
In Resources_Delegate, when looking for the resource package name, use
LayoutlibCallback.getResourcePackage instead of Context.getPackageName.
Bug: N/A
Test: layoutlib tests updated
Change-Id: Ife2c82820accac6345dbc34bdcd81b7cfa508d25
(cherry picked from commit 2d55a7614e54c7029064fa5959d899ac76400edf)
Merged-In:Ife2c82820accac6345dbc34bdcd81b7cfa508d25
5 files changed, 23 insertions, 2 deletions
diff --git a/bridge/src/android/content/res/Resources_Delegate.java b/bridge/src/android/content/res/Resources_Delegate.java index 1102eb79f9..f453aecce2 100644 --- a/bridge/src/android/content/res/Resources_Delegate.java +++ b/bridge/src/android/content/res/Resources_Delegate.java @@ -787,7 +787,7 @@ public class Resources_Delegate { private static String getPackageName(ResourceReference resourceInfo, Resources resources) { String packageName = resourceInfo.getNamespace().getPackageName(); if (packageName == null) { - packageName = getContext(resources).getPackageName(); + packageName = getLayoutlibCallback(resources).getResourcePackage(); if (packageName == null) { packageName = APP_PREFIX; } @@ -1114,7 +1114,7 @@ public class Resources_Delegate { return Bridge.getResourceId(url.type, url.name); } - if (getContext(resources).getPackageName().equals(url.namespace)) { + if (getLayoutlibCallback(resources).getResourcePackage().equals(url.namespace)) { return getLayoutlibCallback(resources).getOrGenerateResourceId( new ResourceReference(ResourceNamespace.RES_AUTO, url.type, url.name)); } diff --git a/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/LayoutLibTestCallback.java b/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/LayoutLibTestCallback.java index 9faa0a64ae..4b9813a9b6 100644 --- a/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/LayoutLibTestCallback.java +++ b/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/LayoutLibTestCallback.java @@ -188,6 +188,11 @@ public class LayoutLibTestCallback extends LayoutlibCallback { } @Override + public String getResourcePackage() { + return PACKAGE_NAME; + } + + @Override public Class<?> findClass(String name) throws ClassNotFoundException { return mModuleClassLoader.loadClass(name); } diff --git a/remote/client/src/com/android/layoutlib/bridge/remote/client/adapters/RemoteLayoutlibCallbackAdapter.java b/remote/client/src/com/android/layoutlib/bridge/remote/client/adapters/RemoteLayoutlibCallbackAdapter.java index 01efd1224d..06fa6b26bf 100644 --- a/remote/client/src/com/android/layoutlib/bridge/remote/client/adapters/RemoteLayoutlibCallbackAdapter.java +++ b/remote/client/src/com/android/layoutlib/bridge/remote/client/adapters/RemoteLayoutlibCallbackAdapter.java @@ -102,6 +102,11 @@ public class RemoteLayoutlibCallbackAdapter implements RemoteLayoutlibCallback { return mDelegate.getFlag(key); } + @Override + public String getResourcePackage() throws RemoteException { + return mDelegate.getResourcePackage(); + } + @Nullable @Override public Path findClassPath(String name) { diff --git a/remote/common/src/com/android/layout/remote/api/RemoteLayoutlibCallback.java b/remote/common/src/com/android/layout/remote/api/RemoteLayoutlibCallback.java index d68934ae65..ccf1feeb4e 100644 --- a/remote/common/src/com/android/layout/remote/api/RemoteLayoutlibCallback.java +++ b/remote/common/src/com/android/layout/remote/api/RemoteLayoutlibCallback.java @@ -52,6 +52,8 @@ public interface RemoteLayoutlibCallback extends Remote { <T> T getFlag(Key<T> key) throws RemoteException; + String getResourcePackage() throws RemoteException; + Path findClassPath(String name) throws RemoteException; RemoteXmlPullParser createXmlParserForPsiFile(String fileName) throws RemoteException; diff --git a/remote/server/src/com/android/layoutlib/bridge/remote/server/adapters/RemoteLayoutlibCallbackAdapter.java b/remote/server/src/com/android/layoutlib/bridge/remote/server/adapters/RemoteLayoutlibCallbackAdapter.java index 719de4dcd3..cba8a472ef 100644 --- a/remote/server/src/com/android/layoutlib/bridge/remote/server/adapters/RemoteLayoutlibCallbackAdapter.java +++ b/remote/server/src/com/android/layoutlib/bridge/remote/server/adapters/RemoteLayoutlibCallbackAdapter.java @@ -218,6 +218,15 @@ public class RemoteLayoutlibCallbackAdapter extends LayoutlibCallback { } @Override + public String getResourcePackage() { + try { + return mDelegate.getResourcePackage(); + } catch (RemoteException e) { + throw new RuntimeException(e); + } + } + + @Override public Class<?> findClass(String name) throws ClassNotFoundException { return mPathClassLoader.loadClass(name); } |