Merge "Make DatePicker rendering not fail." into mnc-dev

This commit is contained in:
Deepanshu Gupta
2015-05-21 01:47:13 +00:00
committed by Android (Google) Code Review
3 changed files with 104 additions and 26 deletions

View File

@@ -16,8 +16,12 @@
package android.view; package android.view;
import com.android.layoutlib.bridge.android.BridgeContext;
import com.android.tools.layoutlib.annotations.LayoutlibDelegate; 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} * Delegate used to provide new implementation of a select few methods of {@link View}
* *
@@ -31,4 +35,13 @@ public class View_Delegate {
/*package*/ static boolean isInEditMode(View thisView) { /*package*/ static boolean isInEditMode(View thisView) {
return true; 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;
}
} }

View File

@@ -65,8 +65,11 @@ import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.IBinder; import android.os.IBinder;
import android.os.IInterface;
import android.os.Looper; import android.os.Looper;
import android.os.Parcel;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.RemoteException;
import android.os.UserHandle; import android.os.UserHandle;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
@@ -82,6 +85,7 @@ import android.view.accessibility.AccessibilityManager;
import android.view.textservice.TextServicesManager; import android.view.textservice.TextServicesManager;
import java.io.File; import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@@ -139,6 +143,7 @@ public final class BridgeContext extends Context {
private final Stack<BridgeXmlBlockParser> mParserStack = new Stack<BridgeXmlBlockParser>(); private final Stack<BridgeXmlBlockParser> mParserStack = new Stack<BridgeXmlBlockParser>();
private SharedPreferences mSharedPreferences; private SharedPreferences mSharedPreferences;
private ClassLoader mClassLoader; private ClassLoader mClassLoader;
private IBinder mBinder;
/** /**
* @param projectKey An Object identifying the project. This is used for the cache mechanism. * @param projectKey An Object identifying the project. This is used for the cache mechanism.
@@ -708,6 +713,10 @@ public final class BridgeContext extends Context {
} }
} }
} else if (defStyleRes != 0) { } else if (defStyleRes != 0) {
StyleResourceValue item = mDynamicIdToStyleMap.get(defStyleRes);
if (item != null) {
defStyleValues = item;
} else {
boolean isFrameworkRes = true; boolean isFrameworkRes = true;
Pair<ResourceType, String> value = Bridge.resolveResourceId(defStyleRes); Pair<ResourceType, String> value = Bridge.resolveResourceId(defStyleRes);
if (value == null) { if (value == null) {
@@ -718,8 +727,7 @@ public final class BridgeContext extends Context {
if (value != null) { if (value != null) {
if ((value.getFirst() == ResourceType.STYLE)) { if ((value.getFirst() == ResourceType.STYLE)) {
// look for the style in all resources: // look for the style in all resources:
StyleResourceValue item = mRenderResources.getStyle(value.getSecond(), item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes);
isFrameworkRes);
if (item != null) { if (item != null) {
if (defaultPropMap != null) { if (defaultPropMap != null) {
defaultPropMap.put("style", item.getName()); defaultPropMap.put("style", item.getName());
@@ -748,6 +756,7 @@ public final class BridgeContext extends Context {
null); null);
} }
} }
}
String appNamespace = mLayoutlibCallback.getNamespace(); String appNamespace = mLayoutlibCallback.getNamespace();
@@ -996,6 +1005,61 @@ public final class BridgeContext extends Context {
return 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 -------------------- //------------ NOT OVERRIDEN --------------------
@Override @Override

View File

@@ -174,6 +174,7 @@ public final class CreateInfo implements ICreateInfo {
"android.view.Display#getWindowManager", "android.view.Display#getWindowManager",
"android.view.LayoutInflater#rInflate", "android.view.LayoutInflater#rInflate",
"android.view.LayoutInflater#parseInclude", "android.view.LayoutInflater#parseInclude",
"android.view.View#getWindowToken",
"android.view.View#isInEditMode", "android.view.View#isInEditMode",
"android.view.ViewRootImpl#isInTouchMode", "android.view.ViewRootImpl#isInTouchMode",
"android.view.WindowManagerGlobal#getWindowManagerService", "android.view.WindowManagerGlobal#getWindowManagerService",