Merge "Add post resolve property values" into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a8d21a0fac
@@ -69,23 +69,6 @@ public class BridgeRenderSession extends RenderSession {
|
|||||||
return mSession.getSystemViewInfos();
|
return mSession.getSystemViewInfos();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, String> getDefaultProperties(Object viewObject) {
|
|
||||||
return mSession.getDefaultProperties(viewObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Result getProperty(Object objectView, String propertyName) {
|
|
||||||
// pass
|
|
||||||
return super.getProperty(objectView, propertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Result setProperty(Object objectView, String propertyName, String propertyValue) {
|
|
||||||
// pass
|
|
||||||
return super.setProperty(objectView, propertyName, propertyValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result render(long timeout, boolean forceMeasure) {
|
public Result render(long timeout, boolean forceMeasure) {
|
||||||
try {
|
try {
|
||||||
@@ -213,6 +196,10 @@ public class BridgeRenderSession extends RenderSession {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RenderSessionImpl getSessionImpl() {
|
||||||
|
return mSession;
|
||||||
|
}
|
||||||
|
|
||||||
/*package*/ BridgeRenderSession(RenderSessionImpl scene, Result lastResult) {
|
/*package*/ BridgeRenderSession(RenderSessionImpl scene, Result lastResult) {
|
||||||
mSession = scene;
|
mSession = scene;
|
||||||
if (scene != null) {
|
if (scene != null) {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import com.android.ide.common.rendering.api.ResourceValue;
|
|||||||
import com.android.ide.common.rendering.api.StyleResourceValue;
|
import com.android.ide.common.rendering.api.StyleResourceValue;
|
||||||
import com.android.layoutlib.bridge.Bridge;
|
import com.android.layoutlib.bridge.Bridge;
|
||||||
import com.android.layoutlib.bridge.BridgeConstants;
|
import com.android.layoutlib.bridge.BridgeConstants;
|
||||||
|
import com.android.layoutlib.bridge.android.PropertiesMap.Property;
|
||||||
import com.android.layoutlib.bridge.android.view.WindowManagerImpl;
|
import com.android.layoutlib.bridge.android.view.WindowManagerImpl;
|
||||||
import com.android.layoutlib.bridge.impl.ParserFactory;
|
import com.android.layoutlib.bridge.impl.ParserFactory;
|
||||||
import com.android.layoutlib.bridge.impl.Stack;
|
import com.android.layoutlib.bridge.impl.Stack;
|
||||||
@@ -275,7 +276,7 @@ public final class BridgeContext extends Context {
|
|||||||
return mRenderResources;
|
return mRenderResources;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, String> getDefaultPropMap(Object key) {
|
public PropertiesMap getDefaultPropMap(Object key) {
|
||||||
return mDefaultPropMaps.get(key);
|
return mDefaultPropMaps.get(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -731,16 +732,10 @@ public final class BridgeContext extends Context {
|
|||||||
Bridge.getLog().error(LayoutLog.TAG_RESOURCES_RESOLVE,
|
Bridge.getLog().error(LayoutLog.TAG_RESOURCES_RESOLVE,
|
||||||
"Failed to find the style corresponding to the id " + defStyleAttr, null);
|
"Failed to find the style corresponding to the id " + defStyleAttr, null);
|
||||||
} else {
|
} else {
|
||||||
if (defaultPropMap != null) {
|
String defStyleName = defStyleAttribute.getFirst();
|
||||||
String defStyleName = defStyleAttribute.getFirst();
|
|
||||||
if (defStyleAttribute.getSecond()) {
|
|
||||||
defStyleName = "android:" + defStyleName;
|
|
||||||
}
|
|
||||||
defaultPropMap.put("style", defStyleName);
|
|
||||||
}
|
|
||||||
|
|
||||||
// look for the style in the current theme, and its parent:
|
// look for the style in the current theme, and its parent:
|
||||||
ResourceValue item = mRenderResources.findItemInTheme(defStyleAttribute.getFirst(),
|
ResourceValue item = mRenderResources.findItemInTheme(defStyleName,
|
||||||
defStyleAttribute.getSecond());
|
defStyleAttribute.getSecond());
|
||||||
|
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
@@ -750,6 +745,12 @@ public final class BridgeContext extends Context {
|
|||||||
if (item instanceof StyleResourceValue) {
|
if (item instanceof StyleResourceValue) {
|
||||||
defStyleValues = (StyleResourceValue) item;
|
defStyleValues = (StyleResourceValue) item;
|
||||||
}
|
}
|
||||||
|
if (defaultPropMap != null) {
|
||||||
|
if (defStyleAttribute.getSecond()) {
|
||||||
|
defStyleName = "android:" + defStyleName;
|
||||||
|
}
|
||||||
|
defaultPropMap.put("style", new Property(defStyleName, item.getValue()));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Bridge.getLog().error(LayoutLog.TAG_RESOURCES_RESOLVE_THEME_ATTR,
|
Bridge.getLog().error(LayoutLog.TAG_RESOURCES_RESOLVE_THEME_ATTR,
|
||||||
String.format(
|
String.format(
|
||||||
@@ -776,7 +777,8 @@ public final class BridgeContext extends Context {
|
|||||||
item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes);
|
item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes);
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
if (defaultPropMap != null) {
|
if (defaultPropMap != null) {
|
||||||
defaultPropMap.put("style", item.getName());
|
String name = item.getName();
|
||||||
|
defaultPropMap.put("style", new Property(name, name));
|
||||||
}
|
}
|
||||||
|
|
||||||
defStyleValues = item;
|
defStyleValues = item;
|
||||||
@@ -855,13 +857,14 @@ public final class BridgeContext extends Context {
|
|||||||
// if we found a value, we make sure this doesn't reference another value.
|
// if we found a value, we make sure this doesn't reference another value.
|
||||||
// So we resolve it.
|
// So we resolve it.
|
||||||
if (resValue != null) {
|
if (resValue != null) {
|
||||||
// put the first default value, before the resolution.
|
String preResolve = resValue.getValue();
|
||||||
if (defaultPropMap != null) {
|
|
||||||
defaultPropMap.put(attrName, resValue.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
resValue = mRenderResources.resolveResValue(resValue);
|
resValue = mRenderResources.resolveResValue(resValue);
|
||||||
|
|
||||||
|
if (defaultPropMap != null) {
|
||||||
|
defaultPropMap.put(attrName,
|
||||||
|
new Property(preResolve, resValue.getValue()));
|
||||||
|
}
|
||||||
|
|
||||||
// If the value is a reference to another theme attribute that doesn't
|
// If the value is a reference to another theme attribute that doesn't
|
||||||
// exist, we should log a warning and omit it.
|
// exist, we should log a warning and omit it.
|
||||||
String val = resValue.getValue();
|
String val = resValue.getValue();
|
||||||
@@ -949,10 +952,11 @@ public final class BridgeContext extends Context {
|
|||||||
|
|
||||||
if (resValue != null) {
|
if (resValue != null) {
|
||||||
// Add it to defaultPropMap before resolving
|
// Add it to defaultPropMap before resolving
|
||||||
defaultPropMap.put(attrName, resValue.getValue());
|
String preResolve = resValue.getValue();
|
||||||
// resolve it to make sure there are no references left.
|
// resolve it to make sure there are no references left.
|
||||||
ta.bridgeSetValue(i, attrName, attribute.getSecond(),
|
resValue = mRenderResources.resolveResValue(resValue);
|
||||||
mRenderResources.resolveResValue(resValue));
|
ta.bridgeSetValue(i, attrName, attribute.getSecond(), resValue);
|
||||||
|
defaultPropMap.put(attrName, new Property(preResolve, resValue.getValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1915,11 +1919,4 @@ public final class BridgeContext extends Context {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* An alias used for the value in {@code {@link #mDefaultPropMaps}}
|
|
||||||
*/
|
|
||||||
private static class PropertiesMap extends HashMap<String, String> {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2016 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 com.android.layoutlib.bridge.android;
|
||||||
|
|
||||||
|
import com.android.layoutlib.bridge.android.PropertiesMap.Property;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An alias used for the value in {@link BridgeContext#mDefaultPropMaps}
|
||||||
|
*/
|
||||||
|
public class PropertiesMap extends HashMap<String, Property> {
|
||||||
|
|
||||||
|
public static class Property {
|
||||||
|
public final String resource;
|
||||||
|
public final String value;
|
||||||
|
|
||||||
|
public Property(String resource, String value) {
|
||||||
|
this.resource = resource;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -286,7 +286,7 @@ public abstract class RenderAction<T extends RenderParams> extends FrameworkReso
|
|||||||
return mParams;
|
return mParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected BridgeContext getContext() {
|
public BridgeContext getContext() {
|
||||||
return mContext;
|
return mContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1415,10 +1415,6 @@ public class RenderSessionImpl extends RenderAction<SessionParams> {
|
|||||||
return mSystemViewInfoList;
|
return mSystemViewInfoList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, String> getDefaultProperties(Object viewObject) {
|
|
||||||
return getContext().getDefaultPropMap(viewObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setScene(RenderSession session) {
|
public void setScene(RenderSession session) {
|
||||||
mScene = session;
|
mScene = session;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user