Loading tools/layoutlib/bridge/src/android/view/View_Delegate.java +13 −0 Original line number Diff line number Diff line Loading @@ -16,8 +16,12 @@ package android.view; import com.android.layoutlib.bridge.android.BridgeContext; import com.android.tools.layoutlib.annotations.LayoutlibDelegate; import android.content.Context; import android.os.IBinder; /** * Delegate used to provide new implementation of a select few methods of {@link View} * Loading @@ -31,4 +35,13 @@ public class View_Delegate { /*package*/ static boolean isInEditMode(View thisView) { return true; } @LayoutlibDelegate /*package*/ static IBinder getWindowToken(View thisView) { Context baseContext = BridgeContext.getBaseContext(thisView.getContext()); if (baseContext instanceof BridgeContext) { return ((BridgeContext) baseContext).getBinder(); } return null; } } tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +90 −26 Original line number Diff line number Diff line Loading @@ -65,8 +65,11 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.IInterface; import android.os.Looper; import android.os.Parcel; import android.os.PowerManager; import android.os.RemoteException; import android.os.UserHandle; import android.util.AttributeSet; import android.util.DisplayMetrics; Loading @@ -82,6 +85,7 @@ import android.view.accessibility.AccessibilityManager; import android.view.textservice.TextServicesManager; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; Loading Loading @@ -139,6 +143,7 @@ public final class BridgeContext extends Context { private final Stack<BridgeXmlBlockParser> mParserStack = new Stack<BridgeXmlBlockParser>(); private SharedPreferences mSharedPreferences; private ClassLoader mClassLoader; private IBinder mBinder; /** * @param projectKey An Object identifying the project. This is used for the cache mechanism. Loading Loading @@ -708,6 +713,10 @@ public final class BridgeContext extends Context { } } } else if (defStyleRes != 0) { StyleResourceValue item = mDynamicIdToStyleMap.get(defStyleRes); if (item != null) { defStyleValues = item; } else { boolean isFrameworkRes = true; Pair<ResourceType, String> value = Bridge.resolveResourceId(defStyleRes); if (value == null) { Loading @@ -718,8 +727,7 @@ public final class BridgeContext extends Context { if (value != null) { if ((value.getFirst() == ResourceType.STYLE)) { // look for the style in all resources: StyleResourceValue item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes); item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes); if (item != null) { if (defaultPropMap != null) { defaultPropMap.put("style", item.getName()); Loading Loading @@ -748,6 +756,7 @@ public final class BridgeContext extends Context { null); } } } String appNamespace = mLayoutlibCallback.getNamespace(); Loading Loading @@ -996,6 +1005,61 @@ public final class BridgeContext extends Context { return context; } public IBinder getBinder() { if (mBinder == null) { // create a dummy binder. We only need it be not null. mBinder = new IBinder() { @Override public String getInterfaceDescriptor() throws RemoteException { return null; } @Override public boolean pingBinder() { return false; } @Override public boolean isBinderAlive() { return false; } @Override public IInterface queryLocalInterface(String descriptor) { return null; } @Override public void dump(FileDescriptor fd, String[] args) throws RemoteException { } @Override public void dumpAsync(FileDescriptor fd, String[] args) throws RemoteException { } @Override public boolean transact(int code, Parcel data, Parcel reply, int flags) throws RemoteException { return false; } @Override public void linkToDeath(DeathRecipient recipient, int flags) throws RemoteException { } @Override public boolean unlinkToDeath(DeathRecipient recipient, int flags) { return false; } }; } return mBinder; } //------------ NOT OVERRIDEN -------------------- @Override Loading tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java +1 −0 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ public final class CreateInfo implements ICreateInfo { "android.view.Display#getWindowManager", "android.view.LayoutInflater#rInflate", "android.view.LayoutInflater#parseInclude", "android.view.View#getWindowToken", "android.view.View#isInEditMode", "android.view.ViewRootImpl#isInTouchMode", "android.view.WindowManagerGlobal#getWindowManagerService", Loading Loading
tools/layoutlib/bridge/src/android/view/View_Delegate.java +13 −0 Original line number Diff line number Diff line Loading @@ -16,8 +16,12 @@ package android.view; import com.android.layoutlib.bridge.android.BridgeContext; import com.android.tools.layoutlib.annotations.LayoutlibDelegate; import android.content.Context; import android.os.IBinder; /** * Delegate used to provide new implementation of a select few methods of {@link View} * Loading @@ -31,4 +35,13 @@ public class View_Delegate { /*package*/ static boolean isInEditMode(View thisView) { return true; } @LayoutlibDelegate /*package*/ static IBinder getWindowToken(View thisView) { Context baseContext = BridgeContext.getBaseContext(thisView.getContext()); if (baseContext instanceof BridgeContext) { return ((BridgeContext) baseContext).getBinder(); } return null; } }
tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +90 −26 Original line number Diff line number Diff line Loading @@ -65,8 +65,11 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.IInterface; import android.os.Looper; import android.os.Parcel; import android.os.PowerManager; import android.os.RemoteException; import android.os.UserHandle; import android.util.AttributeSet; import android.util.DisplayMetrics; Loading @@ -82,6 +85,7 @@ import android.view.accessibility.AccessibilityManager; import android.view.textservice.TextServicesManager; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; Loading Loading @@ -139,6 +143,7 @@ public final class BridgeContext extends Context { private final Stack<BridgeXmlBlockParser> mParserStack = new Stack<BridgeXmlBlockParser>(); private SharedPreferences mSharedPreferences; private ClassLoader mClassLoader; private IBinder mBinder; /** * @param projectKey An Object identifying the project. This is used for the cache mechanism. Loading Loading @@ -708,6 +713,10 @@ public final class BridgeContext extends Context { } } } else if (defStyleRes != 0) { StyleResourceValue item = mDynamicIdToStyleMap.get(defStyleRes); if (item != null) { defStyleValues = item; } else { boolean isFrameworkRes = true; Pair<ResourceType, String> value = Bridge.resolveResourceId(defStyleRes); if (value == null) { Loading @@ -718,8 +727,7 @@ public final class BridgeContext extends Context { if (value != null) { if ((value.getFirst() == ResourceType.STYLE)) { // look for the style in all resources: StyleResourceValue item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes); item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes); if (item != null) { if (defaultPropMap != null) { defaultPropMap.put("style", item.getName()); Loading Loading @@ -748,6 +756,7 @@ public final class BridgeContext extends Context { null); } } } String appNamespace = mLayoutlibCallback.getNamespace(); Loading Loading @@ -996,6 +1005,61 @@ public final class BridgeContext extends Context { return context; } public IBinder getBinder() { if (mBinder == null) { // create a dummy binder. We only need it be not null. mBinder = new IBinder() { @Override public String getInterfaceDescriptor() throws RemoteException { return null; } @Override public boolean pingBinder() { return false; } @Override public boolean isBinderAlive() { return false; } @Override public IInterface queryLocalInterface(String descriptor) { return null; } @Override public void dump(FileDescriptor fd, String[] args) throws RemoteException { } @Override public void dumpAsync(FileDescriptor fd, String[] args) throws RemoteException { } @Override public boolean transact(int code, Parcel data, Parcel reply, int flags) throws RemoteException { return false; } @Override public void linkToDeath(DeathRecipient recipient, int flags) throws RemoteException { } @Override public boolean unlinkToDeath(DeathRecipient recipient, int flags) { return false; } }; } return mBinder; } //------------ NOT OVERRIDEN -------------------- @Override Loading
tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java +1 −0 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ public final class CreateInfo implements ICreateInfo { "android.view.Display#getWindowManager", "android.view.LayoutInflater#rInflate", "android.view.LayoutInflater#parseInclude", "android.view.View#getWindowToken", "android.view.View#isInEditMode", "android.view.ViewRootImpl#isInTouchMode", "android.view.WindowManagerGlobal#getWindowManagerService", Loading