http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/bridge/WXJSObject.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXJSObject.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXJSObject.java index 6101d06..4c92a70 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXJSObject.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXJSObject.java @@ -26,7 +26,6 @@ public class WXJSObject { public static final int NUMBER = 1; public static final int String = 2; public static final int JSON = 3; - public static final int WSON = 4; public Object data; public int type;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/bridge/WXJsFunctions.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXJsFunctions.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXJsFunctions.java new file mode 100644 index 0000000..53108ef --- /dev/null +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXJsFunctions.java @@ -0,0 +1,110 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.taobao.weex.bridge; + +import com.taobao.weex.common.IWXJsFunctions; + +/** + * Created by darin on 27/03/2018. + */ + +public class WXJsFunctions implements IWXJsFunctions { + @Override + public native void initWxBridge(Object bridge, String className); + + @Override + public native void jsHandleSetJSVersion(String jsVersion); + + @Override + public native void jsHandleReportException(String instanceId, String func, String exceptionString); + + @Override + public native void jsHandleCallNative(String instanceId, byte[] tasks, String callback); + + @Override + public native void jsHandleCallNativeModule(String instanceId, String module, String method, byte[] arguments, byte[] options); + + + @Override + public native void jsHandleCallNativeComponent(String instanceId, String componentRef, String method, byte[] arguments, byte[] options); + + + @Override + public native void jsHandleCallAddElement(String instanceId, String ref, String dom, String index); + + + @Override + public native void jsHandleSetTimeout(String callbackId, String time); + + + @Override + public native void jsHandleCallNativeLog(byte[] str_array); + + + @Override + public native void jsFunctionCallCreateBody(String pageId, String domStr); + + + @Override + public native void jsFunctionCallUpdateFinish(String instanceId, byte[] tasks, String callback); + + + @Override + public native void jsFunctionCallCreateFinish(String pageId); + + + @Override + public native void jsFunctionCallRefreshFinish(String instanceId, byte[] tasks, String callback); + + + @Override + public native void jsFunctionCallUpdateAttrs(String pageId, String ref, String data); + + + @Override + public native void jsFunctionCallUpdateStyle(String pageId, String ref, String data); + + + @Override + public native void jsFunctionCallRemoveElement(String pageId, String ref); + + + @Override + public native void jsFunctionCallMoveElement(String pageId, String ref, String parentRef, String index_str); + + + @Override + public native void jsFunctionCallAddEvent(String pageId, String ref, String event); + + + @Override + public native void jsFunctionCallRemoveEvent(String pageId, String ref, String event); + + + @Override + public native void jsHandleSetInterval(String instanceId, String callbackId, String time); + + + @Override + public native void jsHandleClearInterval(String instanceId, String callbackId); + + + @Override + public native void jsHandleCallGCanvasLinkNative(String contextId, int type, String val); +} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java index 6bc4af4..20f8b55 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java @@ -6,9 +6,9 @@ * to you 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 @@ -31,10 +31,8 @@ import com.taobao.weex.common.Destroyable; import com.taobao.weex.common.WXErrorCode; import com.taobao.weex.common.WXException; import com.taobao.weex.common.WXModule; -import com.taobao.weex.dom.DOMAction; -import com.taobao.weex.dom.WXDomModule; -import com.taobao.weex.dom.action.Actions; import com.taobao.weex.ui.config.ConfigModuleFactory; +import com.taobao.weex.ui.module.WXDomModule; import com.taobao.weex.ui.module.WXTimerModule; import com.taobao.weex.utils.WXExceptionUtils; import com.taobao.weex.utils.WXLogUtils; @@ -82,7 +80,7 @@ public class WXModuleManager { return false; } - if (TextUtils.equals(moduleName, WXDomModule.WXDOM)) { + if (TextUtils.equals(moduleName,WXDomModule.WXDOM)) { WXLogUtils.e("Cannot registered module with name 'dom'."); return false; } @@ -121,6 +119,7 @@ public class WXModuleManager { } }); return true; + } static boolean registerNativeModule(String moduleName, ModuleFactory factory) throws WXException { @@ -180,14 +179,14 @@ public class WXModuleManager { return null; } } catch (Exception e) { - WXExceptionUtils.commitCriticalExceptionRT(instanceId, - WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_CONTENT_FAILED, - "callModuleMethod", - WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_CONTENT_FAILED.getErrorMsg() - + "callModuleMethod >>> invoke module:" + moduleStr + ", method:" + methodStr + " failed. " - + WXLogUtils.getStackTrace(e), - null); - WXLogUtils.e("callModuleMethod >>> invoke module:" + moduleStr + ", method:" + methodStr + " failed. ", e); + WXExceptionUtils.commitCriticalExceptionRT(instanceId, + WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_CONTENT_FAILED, + "callModuleMethod", + WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_CONTENT_FAILED.getErrorMsg() + + "callModuleMethod >>> invoke module:" + moduleStr + ", method:" + methodStr + " failed. " + + WXLogUtils.getStackTrace(e), + null); + WXLogUtils.e("callModuleMethod >>> invoke module:" + moduleStr + ", method:" + methodStr + " failed. ", e); return null; } finally { if (wxModule instanceof WXDomModule || wxModule instanceof WXTimerModule) { @@ -203,8 +202,8 @@ public class WXModuleManager { } // we are in preRender mode if(invoker.isRunOnUIThread()) {/*ASYNC CALL*/ - DOMAction moduleInvocationAction = Actions.getModuleInvocationAction(wxModule,args,invoker); - WXSDKManager.getInstance().getWXDomManager().postAction(instance.getInstanceId(), moduleInvocationAction,false); +// DOMAction moduleInvocationAction = Actions.getModuleInvocationAction(wxModule,args,invoker); +// WXSDKManager.getInstance().getWXDomManager().postAction(instance.getInstanceId(), moduleInvocationAction,false); return null; } else {/*SYNC CALL*/ return instance.getNativeInvokeHelper().invoke(wxModule,invoker,args); @@ -485,5 +484,4 @@ public class WXModuleManager { } } } - } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/bridge/WXValidateProcessor.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXValidateProcessor.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXValidateProcessor.java index d657fae..86be2b1 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXValidateProcessor.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXValidateProcessor.java @@ -21,7 +21,7 @@ package com.taobao.weex.bridge; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.dom.WXDomObject; +import com.taobao.weex.ui.component.WXComponent; /** * Created by fengjunjie @@ -34,7 +34,7 @@ public interface WXValidateProcessor { WXComponentValidateResult onComponentValidate(WXSDKInstance wxsdkInstance, String componentName, - WXDomObject parentDomObject); + WXComponent parentComponent); boolean needValidate(String bundleUrl); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/common/Constants.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java index e35fc65..5777bd2 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java @@ -121,12 +121,12 @@ public class Constants { String LOADMOREOFFSET = "loadmoreoffset"; String RECYCLE_IMAGE = "recycleImage"; String LAYOUT = "layout"; - String COLUMN_WIDTH= "columnWidth"; - String COLUMN_COUNT= "columnCount"; - String COLUMN_GAP= "columnGap"; + String COLUMN_WIDTH = "columnWidth"; + String COLUMN_COUNT = "columnCount"; + String COLUMN_GAP = "columnGap"; + String SHOW_SCROLLBAR = "showScrollbar"; String LEFT_GAP= "leftGap"; String RIGHT_GAP= "rightGap"; - String SHOW_SCROLLBAR= "showScrollbar"; String OVERFLOW = "overflow"; String TYPE = "type"; String PLACEHOLDER = "placeholder"; @@ -191,7 +191,7 @@ public class Constants { String DIRECTION = "direction"; String RTL = "rtl"; - + String STICKY_OFFSET = "stickyOffset"; String HAS_FIXED_SIZE = "hasFixedSize"; String KEEP_POSITION_LAYOUT_DELAY = "keepPositionLayoutDelay"; @@ -207,10 +207,6 @@ public class Constants { String INCLUDE_FONT_PADDING = "includeFontPadding"; String ENABLE_COPY = "enableCopy"; - String THUMB_TINT_COLOR = "thumbTintColor"; - String ON_THUMB_TINT_COLOR = "onThumbTintColor"; - String TINT_COLOR = "tintColor"; - String ON_TINT_COLOR = "onTintColor"; interface Recycler{ String LIST_DATA = "listData"; @@ -229,7 +225,6 @@ public class Constants { String FLAT = "flat"; String RIPPLE_ENABLED = "rippleEnabled"; - String SHOULD_STOP_PROPAGATION_INIT_RESULT = "shouldStopPropagationInitResult"; String SHOULD_STOP_PROPAGATION_INTERVAL = "shouldStopPropagationInterval"; @@ -245,8 +240,8 @@ public class Constants { int AUTO = -1; int COLUMN_GAP_NORMAL = 32; int COLUMN_COUNT_NORMAL = 1; - String MULTI_COLUMN= "multi-column"; - String GRID= "grid"; + String MULTI_COLUMN = "multi-column"; + String GRID = "grid"; String STICKY = "sticky"; String FIXED = "fixed"; String LEFT = "left"; @@ -322,7 +317,7 @@ public class Constants { String ON_TRANSITION_END = "transitionEnd"; - interface SLOT_LIFECYCLE{ + interface SLOT_LIFECYCLE { String CREATE = "create"; String ATTACH = "attach"; String DETACH = "detach"; @@ -357,7 +352,7 @@ public class Constants { String SAVE_PATH = "v8"; } - public interface TimeFunction{ + public interface TimeFunction { String LINEAR = "linear"; String EASE_IN_OUT = "ease-in-out"; String EASE_IN = "ease-in"; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java index 0933ce3..6f9fa9e 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java @@ -18,11 +18,13 @@ */ package com.taobao.weex.common; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.taobao.weex.bridge.WXJSObject; import com.taobao.weex.bridge.WXParams; +import com.taobao.weex.dom.CSSShorthand; +import com.taobao.weex.layout.ContentBoxMeasurement; + +import java.util.HashMap; +import java.util.HashSet; /** * Bridge interface, native bridge and debug bridge both need to implement this interface @@ -60,8 +62,16 @@ public interface IWXBridge extends IWXObject { */ byte[] execJSWithResult(String instanceId, String namespace, String function, WXJSObject[] args); + int execJSService(String javascript); -/** + /** + * take the heap snapshot and serialize the heap to a local file. + * + * @param filename + */ + void takeHeapSnapshot(String filename); + + /** * createInstance * @param instanceId * @param namespace @@ -80,59 +90,97 @@ public interface IWXBridge extends IWXObject { * @return */ int destoryInstance(String instanceId, String namespace, String function, WXJSObject[] args); - int execJSService(String javascript); - - /** + + /** * execJSOnInstance * @param instanceId * @param script * @param type * @return */ - String execJSOnInstance(String instanceId, String script, int type); /** - * take the heap snapshot and serialize the heap to a local file. - * - * @param filename - */ - void takeHeapSnapshot(String filename); - - /** * js call native - */ - int callNative(String instanceId, JSONArray tasks, String callback); + int callNative(String instanceId, byte[] tasks, String callback); - int callAddElement(String instanceId, String ref, JSONObject dom, String index, String callback); + int callNative(String instanceId, String tasks, String callback); void reportJSException(String instanceId, String func, String exception); - Object callNativeModule(String instanceId, String module, String method, byte [] arguments, byte [] options); + Object callNativeModule(String instanceId, String module, String method, byte[] arguments, byte[] options); - void callNativeComponent(String instanceId, String componentRef, String method, byte [] arguments, byte [] options); + void callNativeComponent(String instanceId, String ref, String method, byte[] arguments, byte[] options); - int callCreateBody(String instanceId, String tasks, String callback); + int callUpdateFinish(String instanceId, byte[] tasks, String callback); - int callUpdateFinish(String instanceId, byte [] tasks, String callback); + int callRefreshFinish(String instanceId, byte[] tasks, String callback); - int callCreateFinish(String instanceId, byte [] tasks, String callback); + void reportServerCrash(String instanceId, String crashFile); - int callRefreshFinish(String instanceId, byte [] tasks, String callback); - int callUpdateAttrs(String instanceId, String ref, byte [] tasks, String callback); + public int callCreateBody(String instanceId, String componentType, String ref, + HashMap<String, String> styles, HashMap<String, String> attributes, HashSet<String> events, + float[] margins, float[] paddings, float[] borders); - int callUpdateStyle(String instanceId, String ref, byte [] tasks, String callback); + public int callAddElement(String instanceId, String componentType, String ref, int index, String parentRef, + HashMap<String, String> styles, HashMap<String, String> attributes, HashSet<String> events, + float[] margins, float[] paddings, float[] borders); - int callRemoveElement(String instanceId, String ref, String callback); + int callRemoveElement(String instanceId, String ref); - int callMoveElement(String instanceId, String ref, String parentref, String index, String callback); + int callMoveElement(String instanceId, String ref, String parentref, int index); - int callAddEvent(String instanceId, String ref, String event, String callback); + int callAddEvent(String instanceId, String ref, String event); - int callRemoveEvent(String instanceId, String ref, String event, String callback); + int callRemoveEvent(String instanceId, String ref, String event); - void reportServerCrash(String instanceId, String crashFile); + public int callUpdateStyle(String instanceId, String ref, + HashMap<String, Object> styles, + HashMap<String, String> paddings, + HashMap<String, String> margins, + HashMap<String, String> borders); + + int callUpdateAttrs(String instanceId, String ref, + HashMap<String, String> attrs); + + int callLayout(String instanceId, String ref, int top, int bottom, int left, int right, int height, int width, int index); + + int callCreateFinish(String instanceId); + + int callHasTransitionPros(String instanceId, String ref, HashMap<String, String> styles); + + void bindMeasurementToWXCore(String instanceId, String ref, ContentBoxMeasurement contentBoxMeasurement); + + void setRenderContainerWrapContent(boolean wrap, String instanceId); + + int printFirstScreenRenderTime(String instanceId); + + int printRenderFinishTime(String instanceId); + + void setDefaultHeightAndWidthIntoRootDom(String instanceId, float defaultWidth, float defaultHeight, boolean isWidthWrapContent, boolean isHeightWrapContent); + + void onInstanceClose(String instanceId); + + void forceLayout(String instanceId); + + boolean notifyLayout(String instanceId); + + void setStyleWidth(String instanceId, String ref, float value); + + void setStyleHeight(String instanceId, String ref, float value); + + void setMargin(String instanceId, String ref, CSSShorthand.EDGE edge, float value); + + void setPadding(String instanceId, String ref, CSSShorthand.EDGE edge, float value); + + void setPosition(String instanceId, String ref, CSSShorthand.EDGE edge, float value); + + void markDirty(String instanceId, String ref, boolean dirty); + + void registerCoreEnv(String key, String value); + + void setViewPortWidth(String instanceId, float value); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/common/IWXDebugProxy.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXDebugProxy.java b/android/sdk/src/main/java/com/taobao/weex/common/IWXDebugProxy.java index bcd6acf..0345378 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/IWXDebugProxy.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXDebugProxy.java @@ -26,7 +26,7 @@ public interface IWXDebugProxy { String ACTION_INSTANCE_RELOAD = "INSTANCE_RELOAD"; - void start(); + void start(IWXJsFunctions jsFunctions); void stop(boolean reload); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/common/IWXJsFunctions.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXJsFunctions.java b/android/sdk/src/main/java/com/taobao/weex/common/IWXJsFunctions.java new file mode 100644 index 0000000..fbe592b --- /dev/null +++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXJsFunctions.java @@ -0,0 +1,72 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.taobao.weex.common; + +/** + * Created by darin on 27/03/2018. + */ + +public interface IWXJsFunctions { + + void initWxBridge(Object bridge, String className); + + void jsHandleSetJSVersion(String jsVersion); + + void jsHandleReportException(String instanceId, String func, String exceptionString); + + void jsHandleCallNative(String instanceId, byte[] tasks, String callback); + + void jsHandleCallNativeModule(String instanceId, String module, String method, byte[] + arguments, byte[] options); + + void jsHandleCallNativeComponent(String instanceId, String componentRef, String method, + byte[] arguments, byte[] options); + + void jsHandleCallAddElement(String instanceId, String ref, String dom, String index); + + void jsHandleSetTimeout(String callbackId, String time); + + void jsHandleCallNativeLog(byte[] str_array); + + void jsFunctionCallCreateBody(String pageId, String domStr); + + void jsFunctionCallUpdateFinish(String instanceId, byte[] tasks, String callback); + + void jsFunctionCallCreateFinish(String pageId); + + void jsFunctionCallRefreshFinish(String instanceId, byte[] tasks, String callback); + + void jsFunctionCallUpdateAttrs(String pageId, String ref, String data); + + void jsFunctionCallUpdateStyle(String pageId, String ref, String data); + + void jsFunctionCallRemoveElement(String pageId, String ref); + + void jsFunctionCallMoveElement(String pageId, String ref, String parentRef, String index_str); + + void jsFunctionCallAddEvent(String pageId, String ref, String event); + + void jsFunctionCallRemoveEvent(String pageId, String ref, String event); + + void jsHandleSetInterval(String instanceId, String callbackId, String time); + + void jsHandleClearInterval(String instanceId, String callbackId); + + void jsHandleCallGCanvasLinkNative(String contextId, int type, String val); +} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/common/IWXTask.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXTask.java b/android/sdk/src/main/java/com/taobao/weex/common/IWXTask.java deleted file mode 100644 index 1ea659d..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/common/IWXTask.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.common; - -public interface IWXTask { - -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/common/WXErrorCode.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/WXErrorCode.java b/android/sdk/src/main/java/com/taobao/weex/common/WXErrorCode.java index 2bd2d16..0f77ec9 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/WXErrorCode.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/WXErrorCode.java @@ -6,9 +6,9 @@ * to you 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 @@ -22,9 +22,9 @@ package com.taobao.weex.common; public enum WXErrorCode { - /* - * environment - **/ + /* + * environment + **/ /** * Failure for load so library */ @@ -213,7 +213,7 @@ public enum WXErrorCode { */ WX_RENDER_ERR_JS_CREATE_INSTANCE("-9600", "WX_RENDER_ERR_JS_CREATE_INSTANCE",ErrorType.RENDER_ERROR,ErrorGroup.JS), WX_RENDER_ERR_JS_RUNTIME("-9601", "WX_RENDER_ERR for js error",ErrorType.RENDER_ERROR, - ErrorGroup.JS), + ErrorGroup.JS), /** @@ -244,7 +244,7 @@ public enum WXErrorCode { * once this case occured,network requist response header and statuscode need track into errmsg. */ WX_DEGRAD_ERR_BUNDLE_CONTENTTYPE_ERROR("-1004", "degradeToH5|wx_user_intercept_error |Content-Type is not application/javascript, " + - "Weex render template must be javascript, please check your request!",ErrorType.DEGRAD_ERROR,ErrorGroup.NET), + "Weex render template must be javascript, please check your request!",ErrorType.DEGRAD_ERROR,ErrorGroup.NET), /** * degrade for other reason. such as white screen which block error for some unknown reason. @@ -278,7 +278,7 @@ public enum WXErrorCode { } public void appendErrMsg(String err) { - appendMsg=err; + appendMsg=err; } public String getErrorCode() { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/common/WXJSExceptionInfo.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/WXJSExceptionInfo.java b/android/sdk/src/main/java/com/taobao/weex/common/WXJSExceptionInfo.java index 6fd207e..59a47ae 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/WXJSExceptionInfo.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/WXJSExceptionInfo.java @@ -6,9 +6,9 @@ * to you 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 @@ -132,13 +132,13 @@ public class WXJSExceptionInfo { public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("WeexSDKVersion:").append(mWeexVersion) - .append(" JSFrameworkVersion:").append(mJsFrameworkVersion) - .append(" instanceId:").append(mInstanceId) - .append(" bundleUrl:").append(mBundleUrl) - .append(" errCode:").append(mErrCode.getErrorCode()) - .append(" function:").append(mFunction) - .append(" exception:").append(mException) - .append(" extParams:").append(mExtParams); + .append(" JSFrameworkVersion:").append(mJsFrameworkVersion) + .append(" instanceId:").append(mInstanceId) + .append(" bundleUrl:").append(mBundleUrl) + .append(" errCode:").append(mErrCode.getErrorCode()) + .append(" function:").append(mFunction) + .append(" exception:").append(mException) + .append(" extParams:").append(mExtParams); return buffer.toString(); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java b/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java index 77e43e9..e09ec1d 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java @@ -6,9 +6,9 @@ * to you 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 @@ -19,7 +19,6 @@ package com.taobao.weex.common; import android.support.annotation.RestrictTo; -import android.support.annotation.RestrictTo.Scope; import com.taobao.weex.WXEnvironment; import com.taobao.weex.utils.WXViewUtils; @@ -31,7 +30,7 @@ import java.util.Map; public class WXPerformance { - @RestrictTo(Scope.LIBRARY) + @RestrictTo(RestrictTo.Scope.LIBRARY) public enum Dimension { JSLibVersion, WXSDKVersion, @@ -126,7 +125,7 @@ public class WXPerformance { public static final String DEFAULT = "default"; - @RestrictTo(Scope.LIBRARY_GROUP) + @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) public static final String CACHE_TYPE = "cacheType"; public static final int VIEW_LIMIT_HEIGHT = WXViewUtils.getScreenHeight() / 2; @@ -145,10 +144,10 @@ public class WXPerformance { @Deprecated public String templateUrl; - @RestrictTo(Scope.LIBRARY_GROUP) + @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) public String cacheType = "unknown"; - @RestrictTo(Scope.LIBRARY) + @RestrictTo(RestrictTo.Scope.LIBRARY) public long renderTimeOrigin; public long fsRenderTime; @@ -161,7 +160,7 @@ public class WXPerformance { * Time used for * {@link com.taobao.weex.bridge.WXBridgeManager#createInstance(String, String, Map, String)} */ - @RestrictTo(Scope.LIBRARY) + @RestrictTo(RestrictTo.Scope.LIBRARY) public long callCreateInstanceTime; @@ -326,7 +325,7 @@ public class WXPerformance { public String errMsg; private StringBuilder mErrMsgBuilder; - public String args = ""; + public String args=""; public String connectionType; public String requestType; @@ -340,19 +339,45 @@ public class WXPerformance { /** * TODO These dimensions will be moved to elsewhere */ - @RestrictTo(Scope.LIBRARY) + @RestrictTo(RestrictTo.Scope.LIBRARY) @Deprecated public String wxDims[] = new String[5]; /** * TODO These dimensions will be moved to elsewhere */ - @RestrictTo(Scope.LIBRARY) + @RestrictTo(RestrictTo.Scope.LIBRARY) @Deprecated public long measureTimes[] = new long[5]; - public WXPerformance() { - mErrMsgBuilder = new StringBuilder(); + + /** + * RenderAction + */ + public int mCallCreateBodySumTime = 0; + public int mCallAddElementSumTime = 0; + + public int mCallLayoutSumTime = 0; + public int mCallLayoutUpdateDemissionSumTime = 0; + public int mCallLayoutApplyLayoutAndEventSumTime = 0; + public int mCallLayoutBindDataSumTime = 0; + + public int mActionTotalSumTime = 0; + public int mActionLayoutCount = 0; + public int mActionLayoutSumTime = 0; + + public int mActionAddElementCount = 0; + public int mActionAddElementSumTime = 0; + + public int mActionCreateBodyCount = 0; + public int mActionCreateBodySumTime = 0; + + public int mActionOtherCount = 0; + public int mActionOtherSumTime = 0; + + + public WXPerformance(){ + mErrMsgBuilder=new StringBuilder(); } public static void init() { @@ -467,44 +492,44 @@ public class WXPerformance { public String toString() { if (WXEnvironment.isApkDebugable()) { return "bizType:" + bizType + ",pageName:" + pageName + ",templateLoadTime" + templateLoadTime - + ",localReadTime:" + localReadTime + ",JSLibInitTime:" + JSLibInitTime - + ",JSLibSize:" + JSLibSize + ",templateUrl" + templateUrl - + ",JSTemplateSize:" + JSTemplateSize + ",communicateTime:" + communicateTime - + ",screenRenderTime:" + screenRenderTime - + ",firstScreenJSFExecuteTime:" + firstScreenJSFExecuteTime - + ",componentCount:" + componentCount - + ",syncTaskTime:" + syncTaskTime - + ",pureNetworkTime:" + pureNetworkTime - + ",networkTime:" + networkTime - + ",actualNetworkTime:" + actualNetworkTime - + ",packageSpendTime:" + packageSpendTime - + ",connectionType:" + connectionType - + ",requestType:" + requestType - + ",initInvokeTime:" + WXEnvironment.sSDKInitInvokeTime + ",initExecuteTime:" + WXEnvironment.sSDKInitExecuteTime - + ",SDKInitTime:" + WXEnvironment.sSDKInitTime - + ",totalTime:" + totalTime + ",JSLibVersion:" + JSLibVersion + ",WXSDKVersion:" + WXSDKVersion - + ",errCode:" + errCode + ",renderFailedDetail:" + renderFailedDetail - + ",arg:" + args - + ",errMsg:" + getErrMsg(); + + ",localReadTime:" + localReadTime + ",JSLibInitTime:" + JSLibInitTime + + ",JSLibSize:" + JSLibSize + ",templateUrl" + templateUrl + + ",JSTemplateSize:" + JSTemplateSize + ",communicateTime:" + communicateTime + + ",screenRenderTime:" + screenRenderTime + + ",firstScreenJSFExecuteTime:" + firstScreenJSFExecuteTime + + ",componentCount:" + componentCount + + ",syncTaskTime:" + syncTaskTime + + ",pureNetworkTime:" + pureNetworkTime + + ",networkTime:" + networkTime + + ",actualNetworkTime:" + actualNetworkTime + + ",packageSpendTime:" + packageSpendTime + + ",connectionType:" + connectionType + + ",requestType:" + requestType + + ",initInvokeTime:" + WXEnvironment.sSDKInitInvokeTime + ",initExecuteTime:" + WXEnvironment.sSDKInitExecuteTime + + ",SDKInitTime:" + WXEnvironment.sSDKInitTime + + ",totalTime:" + totalTime + ",JSLibVersion:" + JSLibVersion + ",WXSDKVersion:" + WXSDKVersion + + ",errCode:" + errCode + ",renderFailedDetail:" + renderFailedDetail + + ",arg:" + args + + ",errMsg:" + getErrMsg(); } return super.toString(); } public String getPerfData() { return "networkTime:" + networkTime - + " actualNetworkTime:" + actualNetworkTime - + " connectionType:" + connectionType - + " requestType:" + requestType - + " firstScreenRenderTime:" + screenRenderTime - + " firstScreenJSFExecuteTime:" + firstScreenJSFExecuteTime - + " componentCount:" + componentCount - + " JSTemplateSize:" + JSTemplateSize - + " SDKInitTime:" + WXEnvironment.sSDKInitTime - + " totalTime:" + totalTime - + " JSLibVersion:" + JSLibVersion - + " WXSDKVersion:" + WXSDKVersion - + " pageName:" + pageName - + " useScroller:" + useScroller; + + " actualNetworkTime:" + actualNetworkTime + + " connectionType:" + connectionType + + " requestType:" + requestType + + " firstScreenRenderTime:" + screenRenderTime + + " firstScreenJSFExecuteTime:" + firstScreenJSFExecuteTime + + " componentCount:" + componentCount + + " JSTemplateSize:" + JSTemplateSize + + " SDKInitTime:" + WXEnvironment.sSDKInitTime + + " totalTime:" + totalTime + + " JSLibVersion:" + JSLibVersion + + " WXSDKVersion:" + WXSDKVersion + + " pageName:" + pageName + + " useScroller:" + useScroller; } @@ -516,7 +541,6 @@ public class WXPerformance { mErrMsgBuilder.append(msg); } - public void beforeInstanceRender(String instanceId) { renderTimeOrigin = System.currentTimeMillis(); } @@ -524,4 +548,11 @@ public class WXPerformance { public void afterInstanceDestroy(String instanceId) { } -} \ No newline at end of file + public int renderSumTime() { + return mActionAddElementSumTime + mActionCreateBodySumTime + mActionLayoutSumTime + mActionOtherSumTime; + } + + public int renderSumCount() { + return mActionAddElementCount + mActionCreateBodyCount + mActionLayoutCount + mActionOtherCount; + } +} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/ApplyStyleConsumer.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/ApplyStyleConsumer.java b/android/sdk/src/main/java/com/taobao/weex/dom/ApplyStyleConsumer.java deleted file mode 100644 index 6bb55a5..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/ApplyStyleConsumer.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import java.util.Map; - -/** - * Created by sospartan on 22/02/2017. - */ -class ApplyStyleConsumer implements WXDomObject.Consumer { - static ApplyStyleConsumer sInstance; - - public static ApplyStyleConsumer getInstance() { - if (sInstance == null) { - sInstance = new ApplyStyleConsumer(); - } - return sInstance; - } - - private ApplyStyleConsumer() { - } - - ; - - @Override - public void accept(WXDomObject dom) { - WXStyle style = dom.getStyles(); - - /** merge default styles **/ - Map<String, String> defaults = dom.getDefaultStyle(); - if (defaults != null) { - for (Map.Entry<String, String> entry : defaults.entrySet()) { - if (!style.containsKey(entry.getKey())) { - style.put(entry.getKey(), entry.getValue()); - } - } - } - - if (dom.getStyles().size() > 0) { - dom.applyStyleToNode(); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/BasicEditTextDomObject.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/BasicEditTextDomObject.java b/android/sdk/src/main/java/com/taobao/weex/dom/BasicEditTextDomObject.java deleted file mode 100644 index 93b5070..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/BasicEditTextDomObject.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import android.text.TextPaint; -import com.taobao.weex.common.Constants; -import com.taobao.weex.dom.flex.CSSConstants; -import com.taobao.weex.dom.flex.CSSNode; -import com.taobao.weex.dom.flex.MeasureOutput; -import com.taobao.weex.ui.component.WXText; -import com.taobao.weex.utils.TypefaceUtil; -import com.taobao.weex.utils.WXViewUtils; - -import static com.taobao.weex.dom.WXStyle.UNSET; - -/** - * Created by sospartan on 7/12/16. - */ -public class BasicEditTextDomObject extends WXDomObject { - - private TextPaint mPaint = new TextPaint(); - - // private int mFontSize = UNSET; - private int mLineHeight = UNSET; -// private String mFontFamily = null; - - public BasicEditTextDomObject() { - super(); - mPaint.setTextSize(WXViewUtils.getRealPxByWidth(WXText.sDEFAULT_SIZE,getViewPortWidth())); - setMeasureFunction(new MeasureFunction() { - @Override - public void measure(CSSNode node, float width, MeasureOutput measureOutput) { - if (CSSConstants.isUndefined(width)) { - width = node.cssstyle.maxWidth; - } - measureOutput.height = getMeasureHeight(); - measureOutput.width = width; - } - }); - } - - @Override - public void layoutBefore() { - super.layoutBefore(); - updateStyleAndAttrs(); - } - - protected final float getMeasuredLineHeight() { - return mLineHeight != UNSET && mLineHeight > 0 ? mLineHeight : mPaint.getFontMetrics(null); - } - - protected float getMeasureHeight() { - return getMeasuredLineHeight(); - } - - protected void updateStyleAndAttrs() { - if (getStyles().size() > 0) { - int fontSize = UNSET, fontStyle = UNSET, fontWeight = UNSET; - String fontFamily = null; - if (getStyles().containsKey(Constants.Name.FONT_SIZE)) { - fontSize = WXStyle.getFontSize(getStyles(),getViewPortWidth()); - } - - if (getStyles().containsKey(Constants.Name.FONT_FAMILY)) { - fontFamily = WXStyle.getFontFamily(getStyles()); - } - - if (getStyles().containsKey(Constants.Name.FONT_STYLE)) { - fontStyle = WXStyle.getFontStyle(getStyles()); - } - - if (getStyles().containsKey(Constants.Name.FONT_WEIGHT)) { - fontWeight = WXStyle.getFontWeight(getStyles()); - } - - int lineHeight = WXStyle.getLineHeight(getStyles(),getViewPortWidth()); - if (lineHeight != UNSET) - mLineHeight = lineHeight; - - if (fontSize != UNSET) - mPaint.setTextSize(fontSize); - - if (fontFamily != null) { - TypefaceUtil.applyFontStyle(mPaint, fontStyle, fontWeight, fontFamily); - } - - this.dirty(); - } - } - -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/CSSAlignConvert.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/CSSAlignConvert.java b/android/sdk/src/main/java/com/taobao/weex/dom/CSSAlignConvert.java deleted file mode 100644 index 9053d6d..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/CSSAlignConvert.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import android.text.TextUtils; - -import com.taobao.weex.dom.flex.CSSAlign; - -final class CSSAlignConvert { - - public static CSSAlign convert2AlignItems(String s) { - CSSAlign align = CSSAlign.STRETCH; - if (TextUtils.isEmpty(s)) { - align = CSSAlign.STRETCH; - } else if (s.equals("stretch")) { - align = CSSAlign.STRETCH; - } else if (s.equals("flex-end")) { - align = CSSAlign.FLEX_END; - } else if (s.equals("auto")) { - align = CSSAlign.AUTO; - } else if (s.equals("center")) { - align = CSSAlign.CENTER; - } - - return align; - } - - public static CSSAlign convert2AlignSelf(String s) { - CSSAlign align = CSSAlign.AUTO; - if (TextUtils.isEmpty(s)) { - align = CSSAlign.AUTO; - } else if (s.equals("flex-start")) { - align = CSSAlign.FLEX_START; - } else if (s.equals("flex-end")) { - align = CSSAlign.FLEX_END; - } else if (s.equals("stretch")) { - align = CSSAlign.STRETCH; - } else if (s.equals("center")) { - align = CSSAlign.CENTER; - } - - return align; - } -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/CSSConstants.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/CSSConstants.java b/android/sdk/src/main/java/com/taobao/weex/dom/CSSConstants.java new file mode 100755 index 0000000..221d046 --- /dev/null +++ b/android/sdk/src/main/java/com/taobao/weex/dom/CSSConstants.java @@ -0,0 +1,28 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.taobao.weex.dom; + +public class CSSConstants { + + public static final float UNDEFINED = Float.NaN; + + public static boolean isUndefined(float value) { + return Float.compare(value, UNDEFINED) == 0; + } +} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/CSSFlexDirectionConvert.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/CSSFlexDirectionConvert.java b/android/sdk/src/main/java/com/taobao/weex/dom/CSSFlexDirectionConvert.java deleted file mode 100644 index 2e30981..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/CSSFlexDirectionConvert.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import android.text.TextUtils; - -import com.taobao.weex.dom.flex.CSSFlexDirection; - -class CSSFlexDirectionConvert { - - public static CSSFlexDirection convert(String s) { - CSSFlexDirection cssFlexDirection = CSSFlexDirection.ROW; - if (TextUtils.isEmpty(s)) { - cssFlexDirection = CSSFlexDirection.ROW; - } else if (s.equals("column")) { - cssFlexDirection = CSSFlexDirection.COLUMN; - } else if (s.equals("column-reverse")) { - cssFlexDirection = CSSFlexDirection.COLUMN_REVERSE; - } else if (s.equals("row")) { - cssFlexDirection = CSSFlexDirection.ROW; - } else if (s.equals("row-reverse")) { - cssFlexDirection = CSSFlexDirection.ROW_REVERSE; - } - return cssFlexDirection; - } -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/CSSJustifyConvert.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/CSSJustifyConvert.java b/android/sdk/src/main/java/com/taobao/weex/dom/CSSJustifyConvert.java deleted file mode 100644 index 69fff9c..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/CSSJustifyConvert.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import android.text.TextUtils; - -import com.taobao.weex.dom.flex.CSSJustify; - -class CSSJustifyConvert { - - public static CSSJustify convert(String s) { - CSSJustify cssJustify = CSSJustify.FLEX_START; - if (TextUtils.isEmpty(s) || s.equals("flex-start")) { - cssJustify = CSSJustify.FLEX_START; - } else if (s.equals("flex-end")) { - cssJustify = CSSJustify.FLEX_END; - } else if (s.equals("center")) { - cssJustify = CSSJustify.CENTER; - } else if (s.equals("space-between")) { - cssJustify = CSSJustify.SPACE_BETWEEN; - } else if (s.equals("space-around")) { - cssJustify = CSSJustify.SPACE_AROUND; - } - return cssJustify; - } -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/CSSPositionTypeConvert.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/CSSPositionTypeConvert.java b/android/sdk/src/main/java/com/taobao/weex/dom/CSSPositionTypeConvert.java deleted file mode 100644 index 673b8be..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/CSSPositionTypeConvert.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import android.text.TextUtils; - -import com.taobao.weex.dom.flex.CSSPositionType; - -class CSSPositionTypeConvert { - - public static CSSPositionType convert(String s) { - CSSPositionType position = CSSPositionType.RELATIVE; - if (TextUtils.isEmpty(s) || s.equals("relative") || s.equals("sticky")) { - position = CSSPositionType.RELATIVE; - } else if (s.equals("absolute") || s.equals("fixed")) { - position = CSSPositionType.ABSOLUTE; - } - return position; - } -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/CSSShorthand.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/CSSShorthand.java b/android/sdk/src/main/java/com/taobao/weex/dom/CSSShorthand.java new file mode 100644 index 0000000..1af2de5 --- /dev/null +++ b/android/sdk/src/main/java/com/taobao/weex/dom/CSSShorthand.java @@ -0,0 +1,112 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.taobao.weex.dom; + +import android.support.annotation.NonNull; +import android.support.annotation.RestrictTo; +import com.taobao.weex.dom.CSSShorthand.CSSProperty; +import java.util.Arrays; + +public class CSSShorthand<T extends Enum<? extends CSSProperty>> implements Cloneable { + + interface CSSProperty{ + } + + public static enum EDGE implements CSSProperty{ + TOP, BOTTOM, LEFT, RIGHT, ALL; + } + + public static enum CORNER implements CSSProperty{ + BORDER_TOP_LEFT, BORDER_TOP_RIGHT, + BORDER_BOTTOM_RIGHT, BORDER_BOTTOM_LEFT, ALL; + } + + public static enum TYPE { + MARGIN, PADDING, BORDER; + } + + private float[] values; + + public CSSShorthand(float []values){ + replace(values); + } + + public CSSShorthand() { + this(false); + } + + CSSShorthand(boolean fillWithNaN) { + values = new float[Math.max(EDGE.values().length,CORNER.values().length)]; + if (fillWithNaN) { + Arrays.fill(values, Float.NaN); + } + } + + @RestrictTo(RestrictTo.Scope.LIBRARY) + public void set(@NonNull EDGE edge, float value){ + setInternal(edge, value); + } + + @RestrictTo(RestrictTo.Scope.LIBRARY) + public void set(@NonNull CORNER edge, float value) { + setInternal(edge, value); + } + + /** + * {@link EDGE#ALL} is not supported, 0 will be returned. + * @throws IndexOutOfBoundsException + * @param edge + * @return + */ + public float get(@NonNull EDGE edge){ + return getInternal(edge); + } + + /** + * {@link CORNER#ALL} is not supported, 0 will be returned. + * @throws IndexOutOfBoundsException + * @param edge + * @return + */ + public float get(@NonNull CORNER edge) { + return getInternal(edge); + } + + @RestrictTo(RestrictTo.Scope.LIBRARY) + public final void replace(float []values){ + this.values = values; + } + + @Override + public CSSShorthand clone() throws CloneNotSupportedException { + return (CSSShorthand) super.clone(); + } + + private void setInternal(@NonNull Enum<? extends CSSProperty> edge, float value){ + if (edge == EDGE.ALL || edge == CORNER.ALL) { + Arrays.fill(values, value); + } else { + values[edge.ordinal()] = value; + } + } + + private float getInternal(@NonNull Enum<? extends CSSProperty> edge){ + return (edge == EDGE.ALL || edge == CORNER.ALL) ? 0 : values[edge.ordinal()]; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/CSSWrapConvert.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/CSSWrapConvert.java b/android/sdk/src/main/java/com/taobao/weex/dom/CSSWrapConvert.java deleted file mode 100644 index 9440a45..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/CSSWrapConvert.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import android.text.TextUtils; - -import com.taobao.weex.dom.flex.CSSWrap; - -class CSSWrapConvert { - - public static CSSWrap convert(String s) { - CSSWrap cssWrap = CSSWrap.NOWRAP; - if (TextUtils.isEmpty(s)) { - return cssWrap; - } else if (s.equals("wrap")) { - return CSSWrap.WRAP; - } - return cssWrap; - } -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/DOMAction.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/DOMAction.java b/android/sdk/src/main/java/com/taobao/weex/dom/DOMAction.java deleted file mode 100644 index 9011ade..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/DOMAction.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - - -import com.taobao.weex.dom.action.Action; - -/** - * Created by sospartan on 23/02/2017. - */ - -public interface DOMAction extends Action{ - void executeDom(DOMActionContext context); -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/DOMActionContext.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/DOMActionContext.java b/android/sdk/src/main/java/com/taobao/weex/dom/DOMActionContext.java deleted file mode 100644 index 7668d3d..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/DOMActionContext.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.ui.component.WXComponent; - -import java.util.Map; - -/** - * DOM operation context, use as compatible helper temporary. - * Created by sospartan on 14/02/2017. - */ - -public interface DOMActionContext { - String getInstanceId(); - - /** - * For compatible, remove soon. - **/ - WXDomObject.Consumer getAddDOMConsumer(); - - WXDomObject.Consumer getApplyStyleConsumer(); - - @Deprecated - void addDomInfo(String ref, WXComponent component); - - void addAnimationForElement(String ref, Map<String, Object> animMap); - - /** - * Post a Render task - * - * @param statement - */ - void postRenderTask(RenderAction statement); - - void registerDOMObject(String ref, WXDomObject ojb); - - void unregisterDOMObject(String ref); - - void registerComponent(String ref, WXComponent comp); - - WXComponent getCompByRef(String ref); - - boolean isDestory(); - - void markDirty(); - - WXSDKInstance getInstance(); - - WXDomObject getDomByRef(String ref); - - @Deprecated - WXDomObject.Consumer getRemoveElementConsumer(); -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/DOMActionContextImpl.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/DOMActionContextImpl.java b/android/sdk/src/main/java/com/taobao/weex/dom/DOMActionContextImpl.java deleted file mode 100644 index a8f7615..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/DOMActionContextImpl.java +++ /dev/null @@ -1,461 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import android.text.TextUtils; -import android.util.Pair; - -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.WXSDKManager; -import com.taobao.weex.dom.action.Actions; -import com.taobao.weex.dom.flex.CSSLayoutContext; -import com.taobao.weex.tracing.Stopwatch; -import com.taobao.weex.tracing.WXTracing; -import com.taobao.weex.ui.IWXRenderTask; -import com.taobao.weex.ui.WXRenderManager; -import com.taobao.weex.ui.animation.WXAnimationBean; -import com.taobao.weex.ui.component.WXComponent; -import com.taobao.weex.ui.component.WXVContainer; -import com.taobao.weex.utils.WXLogUtils; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -/** - * <p> - * This class is responsible for creating command object of DOM operation and - * invoking command of corresponding object. - * </p> - * <p> - * In the command design pattern, - * this class acts as the <strong>invoker </strong>in the command pattern - * despite that it is also responsible for creating <strong>Command</strong> object. - * And,{@link IWXRenderTask} works as the <strong>Command</strong> - * {@link WXDomManager} works as the <strong>Client</strong> - * {@link WXRenderManager} works as the <strong>Receiver</strong>. - * </p> - * <p> - * There exists one to one correspondence between DOMActionContextImpl and WXInstance, - * and {@link WXDomManager} is responsible for manage the relation of correspondence. - * </p> - */ -class DOMActionContextImpl implements DOMActionContext { - /** package **/ final ConcurrentHashMap<String, WXDomObject> mRegistry; - private WXDomObject.Consumer mAddDOMConsumer; - private WXDomObject.Consumer mUnregisterDomConsumer; - private String mInstanceId; - private WXRenderManager mWXRenderManager; - private ArrayList<IWXRenderTask> mNormalTasks; - private Set <Pair<String, Map<String, Object>>> animations; - private CSSLayoutContext mLayoutContext; - private volatile boolean mDirty; - private boolean mDestroy; - private Map<String, AddDomInfo> mAddDom = new HashMap<>(); - - /** - * Create an instance of {@link DOMActionContextImpl}, - * One {@link WXSDKInstance} corresponding to one and only one {@link DOMActionContextImpl}. - * And all the instance of {@link WXDomManager} share the same {@link WXRenderManager}. - * @param instanceId the id of the {@link WXSDKInstance}. - * One {@link WXSDKInstance} corresponding to one {@link DOMActionContextImpl}, - * and vice versa. - * @param renderManager This acts as the Receiver of the command pattern - */ - public DOMActionContextImpl(String instanceId, WXRenderManager renderManager) { - mDestroy = false; - mInstanceId = instanceId; - mLayoutContext = new CSSLayoutContext(); - mRegistry = new ConcurrentHashMap<>(); - mNormalTasks = new ArrayList<>(); - animations = new LinkedHashSet<>(); - mWXRenderManager = renderManager; - mAddDOMConsumer = new AddDOMConsumer(mRegistry); - mUnregisterDomConsumer = new RemoveElementConsumer(mRegistry); - } - - @Override - public String getInstanceId() { - return mInstanceId; - } - - @Override - public WXDomObject.Consumer getAddDOMConsumer(){ - return mAddDOMConsumer; - } - - @Override - public WXDomObject.Consumer getRemoveElementConsumer() { - return mUnregisterDomConsumer; - } - - @Override - public WXDomObject.Consumer getApplyStyleConsumer() { - return ApplyStyleConsumer.getInstance(); - } - - @Override - public void addDomInfo(String ref, WXComponent component) { - AddDomInfo addDomInfo = new AddDomInfo(); - addDomInfo.component = component; - mAddDom.put(ref, addDomInfo); - } - - /** - * Destroy current instance, which occurred when {@link WXSDKInstance#destroy()} is called. - */ - public void destroy() { - mDestroy = true; - mRegistry.clear(); - mAddDOMConsumer = null; - mNormalTasks.clear(); - mAddDom.clear(); - mLayoutContext = null; - mWXRenderManager = null; - animations.clear(); - } - - /** - * Rebuild the component tree. - * The purpose of this method is moving fixed components to the root component. - * This method will be called when {@link #batch()} is executed. - * @param root root dom - */ - void rebuildingFixedDomTree(WXDomObject root) { - if (root != null && root.getFixedStyleRefs() != null) { - int size = root.getFixedStyleRefs().size(); - for (int i = 0; i < size; i++) { - String fixedRef = root.getFixedStyleRefs().get(i); - WXDomObject wxDomObject = mRegistry.get(fixedRef); - if (wxDomObject!=null && wxDomObject.parent != null) { - wxDomObject.parent.remove(wxDomObject); - root.add(wxDomObject, -1); - } - } - } - - } - - /** - * Batch the execution of command objects and execute all the command objects created other - * places, e.g. call {@link IWXRenderTask#execute()}. - * First, it will rebuild the dom tree and do pre layout staff. - * Then call {@link com.taobao.weex.dom.flex.CSSNode#calculateLayout(CSSLayoutContext)} to - * start calculate layout. - * Next, call {@link ApplyUpdateConsumer} to get changed dom and creating - * corresponding command object. - * Finally, walk through the queue, e.g. call {@link IWXRenderTask#execute()} for every task - * in the queue. - */ - void batch() { - - if (!mDirty || mDestroy) { - return; - } - long start = System.currentTimeMillis(); - long startNanos = System.nanoTime(); - WXDomObject rootDom = mRegistry.get(WXDomObject.ROOT); - layout(rootDom); - - if (WXTracing.isAvailable()) { - WXTracing.TraceEvent batchEvent = WXTracing.newEvent("domBatch", mInstanceId, -1); - batchEvent.duration = Stopwatch.millisUntilNow(startNanos); - batchEvent.ts = start; - batchEvent.ph = "X"; - WXTracing.submit(batchEvent); - } - if(WXEnvironment.isApkDebugable()){ - WXLogUtils.d("mInstanceId " + mInstanceId + " batch used " + (System.currentTimeMillis() - start)); - } - } - - void layout(WXDomObject rootDom) { - if (rootDom == null) { - return; - } - long start0 = System.currentTimeMillis(); - rebuildingFixedDomTree(rootDom); - - rootDom.traverseTree( new WXDomObject.Consumer() { - @Override - public void accept(WXDomObject dom) { - if (!dom.hasUpdate() || mDestroy) { - return; - } - dom.layoutBefore(); - } - }); - long start = System.currentTimeMillis(); - - rootDom.calculateLayout(mLayoutContext); - - WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(mInstanceId); - if (instance != null) { - instance.cssLayoutTime(System.currentTimeMillis() - start); - } - - start = System.currentTimeMillis(); - rootDom.traverseTree( new WXDomObject.Consumer() { - @Override - public void accept(WXDomObject dom) { - if (!dom.hasUpdate() || mDestroy) { - return; - } - dom.layoutAfter(); - } - }, new ApplyUpdateConsumer()); - - - if (instance != null) { - instance.applyUpdateTime(System.currentTimeMillis() - start); - } - - start = System.currentTimeMillis(); - updateDomObj(); - if (instance != null) { - instance.updateDomObjTime(System.currentTimeMillis() - start); - } - parseAnimation(); - - boolean isPreRenderMode = instance != null && instance.isPreRenderMode(); - if(!isPreRenderMode) { - consumeRenderTasks(); - } - mAddDom.clear(); - animations.clear(); - mDirty = false; - if (instance != null) { - instance.batchTime(System.currentTimeMillis() - start0); - } - } - - void consumeRenderTasks() { - int count = mNormalTasks.size(); - for (int i = 0; i < count && !mDestroy; ++i) { - mWXRenderManager.runOnThread(mInstanceId, mNormalTasks.get(i)); - } - mNormalTasks.clear(); - } - - private class ApplyUpdateConsumer implements WXDomObject.Consumer{ - - @Override - public void accept(WXDomObject dom) { - if (dom.hasUpdate()) { - dom.markUpdateSeen(); - if (!dom.isYoung()) { - final WXDomObject copy = dom.clone(); - if (copy == null) { - return; - } - mNormalTasks.add(new IWXRenderTask() { - - @Override - public void execute() { - mWXRenderManager.setLayout(mInstanceId, copy.getRef(), copy); - if(copy.getExtra() != null) { - mWXRenderManager.setExtra(mInstanceId, copy.getRef(), copy.getExtra()); - } - } - - @Override - public String toString() { - return "setLayout & setExtra"; - } - }); - } - } - } - } - - private void parseAnimation() { - for (final Pair<String, Map<String, Object>> pair : animations) { - if (!TextUtils.isEmpty(pair.first)) { - final WXAnimationBean animationBean = createAnimationBean(pair.first, pair.second); - if (animationBean != null) { - postRenderTask(Actions.getAnimationAction(pair.first, animationBean)); - } - } - } - } - - /** - * Update all components' dom info stored in {@link #mAddDom} - */ - private void updateDomObj() { - long start = System.currentTimeMillis(); - Iterator<Map.Entry<String, AddDomInfo>> iterator = mAddDom.entrySet().iterator(); - Map.Entry<String, AddDomInfo> entry; - AddDomInfo value; - while (iterator.hasNext()) { - entry = iterator.next(); - value = entry.getValue(); - updateDomObj(value.component); - } - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.d("updateDomObj", "time:" + (System.currentTimeMillis() - start)); - } - } - - /** - * Update the specified component's dom and mark it as old. - * @param component the component to be updated - */ - private void updateDomObj(WXComponent component) { - if (component == null) { - return; - } - WXDomObject domObject = mRegistry.get(component.getRef()); - if (domObject == null) { - return; - } - domObject.old(); - component.updateDom(domObject); - if (component instanceof WXVContainer) { - WXVContainer container = (WXVContainer) component; - int count = container.childCount(); - for (int i = 0; i < count; ++i) { - updateDomObj(container.getChild(i)); - } - } - } - - @Override - public void addAnimationForElement(String ref, Map<String, Object> animMap) { - animations.add(new Pair<>(ref,animMap)); - mDirty = true; - } - - @Override - public void postRenderTask(RenderAction action) { - mNormalTasks.add(new RenderActionTask(action, mWXRenderManager.getRenderContext(mInstanceId))); - mDirty = true; - } - - @Override - public void registerDOMObject(String ref, WXDomObject obj) { - mRegistry.put(ref,obj); - } - - @Override - public void unregisterDOMObject(String ref) { - mRegistry.remove(ref); - } - - @Override - public void registerComponent(String ref, WXComponent comp) { - mWXRenderManager.registerComponent(mInstanceId,ref,comp); - } - - @Override - public WXComponent getCompByRef(String ref) { - return mWXRenderManager.getWXComponent(mInstanceId,ref); - } - - @Override - public boolean isDestory() { - return false; - } - - @Override - public void markDirty() { - if(!mDestroy){ - if(!mDirty){ - mDirty = true; - } - } - } - - @Override - public WXSDKInstance getInstance() { - return mWXRenderManager.getWXSDKInstance(mInstanceId); - } - - @Override - public WXDomObject getDomByRef(String ref) { - return mRegistry.get(ref); - } - - private WXAnimationBean createAnimationBean(String ref,Map<String, Object> style){ - if (style != null) { - try { - Object transform = style.get(WXDomObject.TRANSFORM); - if (transform instanceof String && !TextUtils.isEmpty((String) transform)) { - String transformOrigin = (String) style.get(WXDomObject.TRANSFORM_ORIGIN); - WXAnimationBean animationBean = new WXAnimationBean(); - WXDomObject domObject = mRegistry.get(ref); - int width = (int) domObject.getLayoutWidth(); - int height = (int) domObject.getLayoutHeight(); - animationBean.styles = new WXAnimationBean.Style(); - animationBean.styles.init(transformOrigin, (String) transform, width, height,WXSDKManager.getInstanceViewPortWidth(mInstanceId)); - return animationBean; - } - }catch (RuntimeException e){ - WXLogUtils.e("", e); - return null; - } - } - return null; - } - - private static class RemoveElementConsumer implements WXDomObject.Consumer { - final ConcurrentHashMap<String, WXDomObject> mRegistry; - - RemoveElementConsumer(ConcurrentHashMap<String, WXDomObject> r) { - mRegistry = r; - } - - - @Override - public void accept(WXDomObject dom) { - mRegistry.remove(dom.getRef()); - } - } - - - private static class AddDOMConsumer implements WXDomObject.Consumer { - final ConcurrentHashMap<String, WXDomObject> mRegistry; - AddDOMConsumer(ConcurrentHashMap<String, WXDomObject> r){ - mRegistry = r; - } - - @Override - public void accept(WXDomObject dom) { - //register dom - dom.young(); - mRegistry.put(dom.getRef(), dom); - - //find fixed node - WXDomObject rootDom = mRegistry.get(WXDomObject.ROOT); - if (rootDom != null && dom.isFixed()) { - rootDom.add2FixedDomList(dom.getRef()); - } - } - } - - static class AddDomInfo { - - public WXComponent component; - } -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/DomContext.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/DomContext.java b/android/sdk/src/main/java/com/taobao/weex/dom/DomContext.java deleted file mode 100644 index ad65eeb..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/DomContext.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import android.content.Context; - -/** - * Created by sospartan on 31/10/2016. - */ - -public interface DomContext { - Context getUIContext(); - String getInstanceId(); -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/ImmutableDomObject.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/ImmutableDomObject.java b/android/sdk/src/main/java/com/taobao/weex/dom/ImmutableDomObject.java deleted file mode 100644 index c19ca59..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/ImmutableDomObject.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import android.support.annotation.NonNull; -import com.taobao.weex.dom.flex.Spacing; - -/** - * Created by sospartan on 25/10/2016. - */ - -public interface ImmutableDomObject { - String getRef(); - @NonNull Spacing getMargin(); - float getLayoutWidth(); - float getLayoutHeight(); - - /** - * Use {@link #getCSSLayoutLeft()} ()} instead - */ - @Deprecated - float getLayoutX(); - - /** - * Use {@link #getCSSLayoutTop()} instead - */ - @Deprecated - float getLayoutY(); - - public float getCSSLayoutTop(); - - public float getCSSLayoutBottom(); - - public float getCSSLayoutLeft(); - - public float getCSSLayoutRight(); - boolean isFixed(); - @NonNull WXStyle getStyles(); - @NonNull WXEvent getEvents(); - @NonNull WXAttr getAttrs(); - @NonNull Spacing getPadding(); - @NonNull Spacing getBorder(); - Object getExtra(); - String getType(); - - public final ImmutableDomObject DESTROYED = WXDomObject.DESTROYED; -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/RenderAction.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/RenderAction.java b/android/sdk/src/main/java/com/taobao/weex/dom/RenderAction.java deleted file mode 100644 index cb461c0..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/RenderAction.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import com.taobao.weex.dom.action.Action; - -/** - * Created by sospartan on 23/02/2017. - */ - -public interface RenderAction extends Action{ - void executeRender(RenderActionContext context); -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/RenderActionContext.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/RenderActionContext.java b/android/sdk/src/main/java/com/taobao/weex/dom/RenderActionContext.java deleted file mode 100644 index 884cfeb..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/RenderActionContext.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.ui.component.WXComponent; - -/** - * Created by sospartan on 23/02/2017. - */ - -public interface RenderActionContext { - WXSDKInstance getInstance(); - WXComponent getComponent(String ref); - WXComponent unregisterComponent(String ref); -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/RenderActionTask.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/RenderActionTask.java b/android/sdk/src/main/java/com/taobao/weex/dom/RenderActionTask.java deleted file mode 100644 index bac1574..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/dom/RenderActionTask.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.taobao.weex.dom; - -import android.os.SystemClock; - -import com.taobao.weex.dom.action.AbstractAddElementAction; -import com.taobao.weex.dom.action.TraceableAction; -import com.taobao.weex.tracing.Stopwatch; -import com.taobao.weex.tracing.WXTracing; -import com.taobao.weex.ui.IWXRenderTask; - -/** - * Created by sospartan on 23/02/2017. - */ - -class RenderActionTask implements IWXRenderTask { - private final RenderAction mRenderTask; - private final RenderActionContext mContext; - private final long mStartMillis = SystemClock.uptimeMillis(); - - public RenderActionTask(RenderAction action, RenderActionContext context){ - mRenderTask = action; - mContext = context; - } - - @Override - public void execute() { - if (WXTracing.isAvailable() && mRenderTask instanceof TraceableAction) { - ((TraceableAction) mRenderTask).mUIQueueTime = SystemClock.uptimeMillis() - mStartMillis; - } - long start = System.currentTimeMillis(); - long uiNanos = System.nanoTime(); - mRenderTask.executeRender(mContext); - - if (WXTracing.isAvailable()) { - uiNanos = System.nanoTime() - uiNanos; - if (mRenderTask instanceof TraceableAction) { - if (!(mRenderTask instanceof AbstractAddElementAction)) { - WXTracing.TraceEvent uiExecuteEvent = WXTracing.newEvent("UIExecute", mContext.getInstance().getInstanceId(), ((TraceableAction) mRenderTask).mTracingEventId); - uiExecuteEvent.duration = Stopwatch.nanosToMillis(uiNanos); - uiExecuteEvent.ts = start; - uiExecuteEvent.submit(); - } - ((TraceableAction) mRenderTask).onFinishUIExecute(); - } - } - } -}
