* [Core] Add callback for append tree createfinish.

Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/b2d22b9a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/b2d22b9a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/b2d22b9a

Branch: refs/heads/master
Commit: b2d22b9a436a13d48a6fb499380b65488ba86492
Parents: 9689fae
Author: miomin <691292...@qq.com>
Authored: Wed May 2 18:09:53 2018 +0800
Committer: YorkShen <shenyua...@gmail.com>
Committed: Mon May 7 15:52:09 2018 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/bridge/WXBridge.java   | 11 +++++
 .../com/taobao/weex/bridge/WXBridgeManager.java | 36 ++++++++++++---
 .../java/com/taobao/weex/common/IWXBridge.java  |  2 +
 .../GraphicActionAppendTreeCreateFinish.java    | 47 ++++++++++++++++++++
 .../taobao/weex/ui/component/WXVContainer.java  |  5 +++
 weex_core/Source/CMakeLists.txt                 |  1 +
 .../android/bridge/impl/bridge_impl_android.cpp | 25 +++++++++++
 .../android/bridge/impl/bridge_impl_android.h   |  2 +
 weex_core/Source/core/bridge/bridge.h           |  2 +
 weex_core/Source/core/css/constants_name.h      |  1 +
 .../render_action_appendtree_createfinish.cpp   | 14 ++++++
 .../render_action_appendtree_createfinish.h     | 21 +++++++++
 .../Source/core/render/node/render_object.h     |  8 ++++
 .../Source/core/render/page/render_page.cpp     | 22 +++++++--
 weex_core/Source/core/render/page/render_page.h |  4 +-
 15 files changed, 191 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java 
b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
index 0ea12f4..a0023f5 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
@@ -482,6 +482,17 @@ public class WXBridge implements IWXBridge {
   }
 
   @Override
+  public int callAppendTreeCreateFinish(String instanceId, String ref) {
+    int errorCode = IWXBridge.INSTANCE_RENDERING;
+    try {
+      errorCode = 
WXBridgeManager.getInstance().callAppendTreeCreateFinish(instanceId, ref);
+    } catch (Throwable e) {
+      WXLogUtils.e(TAG, "callAppendTreeCreateFinish throw exception:" + 
e.getMessage());
+    }
+    return errorCode;
+  }
+
+  @Override
   public int callHasTransitionPros(String instanceId, String ref, 
HashMap<String, String> styles) {
     int errorCode = IWXBridge.INSTANCE_RENDERING;
     try {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java 
b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
index c394ef4..611260e 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@ -59,6 +59,7 @@ import com.taobao.weex.ui.action.ActionReloadPage;
 import com.taobao.weex.ui.action.BasicGraphicAction;
 import com.taobao.weex.ui.action.GraphicActionAddElement;
 import com.taobao.weex.ui.action.GraphicActionAddEvent;
+import com.taobao.weex.ui.action.GraphicActionAppendTreeCreateFinish;
 import com.taobao.weex.ui.action.GraphicActionCreateBody;
 import com.taobao.weex.ui.action.GraphicActionCreateFinish;
 import com.taobao.weex.ui.action.GraphicActionLayout;
@@ -2538,7 +2539,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
     } catch (Exception e) {
       WXLogUtils.e("[WXBridgeManager] callLayout exception: ", e);
       WXExceptionUtils.commitCriticalExceptionRT(pageId,
-              WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callUpdateAttrs",
+              WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callLayout",
               WXLogUtils.getStackTrace(e), null);
     }
 
@@ -2546,6 +2547,31 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
     return IWXBridge.INSTANCE_RENDERING;
   }
 
+  public int callAppendTreeCreateFinish(String instanceId, String ref) {
+    if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
+      mLodBuilder.append("[WXBridgeManager] callAppendTreeCreateFinish >>>> 
instanceId:").append(instanceId)
+              .append(", ref:").append(ref);
+      WXLogUtils.d(mLodBuilder.substring(0));
+      mLodBuilder.setLength(0);
+    }
+
+    if (mDestroyedInstanceId != null && 
mDestroyedInstanceId.contains(instanceId)) {
+      return IWXBridge.DESTROY_INSTANCE;
+    }
+
+    try {
+      GraphicActionAppendTreeCreateFinish action = new 
GraphicActionAppendTreeCreateFinish(instanceId, ref);
+      
WXSDKManager.getInstance().getWXRenderManager().postGraphicAction(instanceId, 
action);
+    } catch (Exception e) {
+      WXLogUtils.e("[WXBridgeManager] callAppendTreeCreateFinish exception: ", 
e);
+      WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+              WXErrorCode.WX_KEY_EXCEPTION_INVOKE, 
"callAppendTreeCreateFinish",
+              WXLogUtils.getStackTrace(e), null);
+    }
+
+    return IWXBridge.INSTANCE_RENDERING;
+  }
+
   public int callCreateFinish(String instanceId) {
     if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
       mLodBuilder.append("[WXBridgeManager] callCreateFinish >>>> 
instanceId:").append(instanceId);
@@ -2561,14 +2587,14 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
       long start = System.currentTimeMillis();
       WXSDKInstance instance = 
WXSDKManager.getInstance().getSDKInstance(instanceId);
       if (instance != null) {
-          instance.firstScreenCreateInstanceTime(start);
-          GraphicActionCreateFinish action = new 
GraphicActionCreateFinish(instanceId);
-          
WXSDKManager.getInstance().getWXRenderManager().postGraphicAction(instanceId, 
action);
+        instance.firstScreenCreateInstanceTime(start);
+        GraphicActionCreateFinish action = new 
GraphicActionCreateFinish(instanceId);
+        
WXSDKManager.getInstance().getWXRenderManager().postGraphicAction(instanceId, 
action);
       }
     } catch (Exception e) {
       WXLogUtils.e("[WXBridgeManager] callCreateFinish exception: ", e);
       WXExceptionUtils.commitCriticalExceptionRT(instanceId,
-              WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callUpdateFinish",
+              WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callCreateFinish",
               WXLogUtils.getStackTrace(e), null);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/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 6f9fa9e..05e2907 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
@@ -149,6 +149,8 @@ public interface IWXBridge extends IWXObject {
 
   int callCreateFinish(String instanceId);
 
+  int callAppendTreeCreateFinish(String instanceId, String ref);
+
   int callHasTransitionPros(String instanceId, String ref, HashMap<String, 
String> styles);
 
   void bindMeasurementToWXCore(String instanceId, String ref, 
ContentBoxMeasurement contentBoxMeasurement);

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAppendTreeCreateFinish.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAppendTreeCreateFinish.java
 
b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAppendTreeCreateFinish.java
new file mode 100644
index 0000000..eb9d189
--- /dev/null
+++ 
b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAppendTreeCreateFinish.java
@@ -0,0 +1,47 @@
+/**
+ * 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.ui.action;
+
+import com.taobao.weex.WXSDKInstance;
+import com.taobao.weex.WXSDKManager;
+import com.taobao.weex.common.WXRenderStrategy;
+import com.taobao.weex.ui.component.WXComponent;
+import com.taobao.weex.ui.component.WXVContainer;
+
+/**
+ * Created by listen on 18/01/09.
+ */
+public class GraphicActionAppendTreeCreateFinish extends BasicGraphicAction {
+
+  WXComponent component;
+
+  public GraphicActionAppendTreeCreateFinish(String instanceId, String ref) {
+    super(instanceId, ref);
+
+    component = 
WXSDKManager.getInstance().getWXRenderManager().getWXComponent(instanceId, ref);
+    if (null != component && component instanceof WXVContainer) {
+      ((WXVContainer)component).appendTreeCreateFinish();
+    }
+  }
+
+  @Override
+  public void executeAction() {
+
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
index 45aa7ea..5d18cd5 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
@@ -22,6 +22,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.support.annotation.Nullable;
 import android.support.v4.view.ViewCompat;
+import android.util.Log;
 import android.util.Pair;
 import android.view.Menu;
 import android.view.View;
@@ -607,4 +608,8 @@ public abstract class WXVContainer<T extends ViewGroup> 
extends WXComponent<T> {
       super(context);
     }
   }
+
+  public void appendTreeCreateFinish() {
+    
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/weex_core/Source/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/weex_core/Source/CMakeLists.txt b/weex_core/Source/CMakeLists.txt
index 36e7004..5c7d379 100644
--- a/weex_core/Source/CMakeLists.txt
+++ b/weex_core/Source/CMakeLists.txt
@@ -52,6 +52,7 @@ add_library(weexjsc SHARED
     ./core/render/action/render_action_move_element.cpp
     ./core/render/action/render_action_createbody.cpp
     ./core/render/action/render_action_createfinish.cpp
+    ./core/render/action/render_action_appendtree_createfinish.cpp
     ./core/render/action/render_action_layout.cpp
     ./core/render/action/render_action_update_attr.cpp
     ./core/render/action/render_action_update_style.cpp

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp 
b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
index f713d3c..9e0dc9b 100644
--- a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
@@ -53,6 +53,7 @@ static jmethodID jCallHasTransitionProsMethodId;
 static jmethodID jCallUpdateAttrsMethodId;
 static jmethodID jCallLayoutMethodId;
 static jmethodID jCallCreateFinishMethodId;
+static jmethodID jCallAppendTreeCreateFinishMethodId;
 
 static jmethodID jPostMessage;
 static jmethodID jDispatchMeaasge;
@@ -849,6 +850,30 @@ namespace WeexCore {
     return flag;
   }
 
+  int Bridge_Impl_Android::callAppendTreeCreateFinish(const char *pageId, 
const char *ref) {
+    JNIEnv *env = getJNIEnv();
+    jstring jPageId = env->NewStringUTF(pageId);
+    jstring jRef = env->NewStringUTF(ref);
+
+    if (jCallAppendTreeCreateFinishMethodId == NULL)
+      jCallAppendTreeCreateFinishMethodId = env->GetMethodID(jBridgeClazz,
+                                             "callAppendTreeCreateFinish",
+                                             
"(Ljava/lang/String;Ljava/lang/String;)I");
+
+    int flag = 0;
+    flag = env->CallIntMethod(jThis, jCallAppendTreeCreateFinishMethodId, 
jPageId, jRef);
+
+    if (flag == -1) {
+      LOGE("instance destroy JFM must stop callAppendTreeCreateFinish");
+    }
+
+    if (jPageId != nullptr)
+      env->DeleteLocalRef(jPageId);
+    if (jRef != nullptr)
+      env->DeleteLocalRef(jRef);
+    return flag;
+  }
+
   int Bridge_Impl_Android::callHasTransitionPros(const char* pageId, const 
char* ref, std::vector<std::pair<std::string, std::string>> *style) {
     JNIEnv *env = getJNIEnv();
     jstring jPageId = env->NewStringUTF(pageId);

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/weex_core/Source/android/bridge/impl/bridge_impl_android.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/bridge_impl_android.h 
b/weex_core/Source/android/bridge/impl/bridge_impl_android.h
index c086b5b..3f73370 100644
--- a/weex_core/Source/android/bridge/impl/bridge_impl_android.h
+++ b/weex_core/Source/android/bridge/impl/bridge_impl_android.h
@@ -122,6 +122,8 @@ namespace WeexCore {
 
     int callCreateFinish(const char* pageId);
 
+    int callAppendTreeCreateFinish(const char* pageId, const char* ref);
+
     int callHasTransitionPros(const char* pageId, const char* ref,
                               std::vector<std::pair<std::string, std::string>> 
*style);
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/weex_core/Source/core/bridge/bridge.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/bridge/bridge.h 
b/weex_core/Source/core/bridge/bridge.h
index cf9ec81..9261445 100644
--- a/weex_core/Source/core/bridge/bridge.h
+++ b/weex_core/Source/core/bridge/bridge.h
@@ -94,6 +94,8 @@ namespace WeexCore {
     virtual int callRemoveElement(const char* pageId, const char* ref) = 0;
 
     virtual int callMoveElement(const char* pageId, const char* ref, const 
char* parentRef, int index) = 0;
+
+    virtual int callAppendTreeCreateFinish(const char* pageId, const char* 
ref) = 0;
   };
 } //end WeexCore
 #endif //Bridge_h

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/weex_core/Source/core/css/constants_name.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/css/constants_name.h 
b/weex_core/Source/core/css/constants_name.h
index 58ecbcd..29bcb15 100644
--- a/weex_core/Source/core/css/constants_name.h
+++ b/weex_core/Source/core/css/constants_name.h
@@ -76,6 +76,7 @@ namespace WeexCore {
 
   constexpr char COLOR[] = "color";
   constexpr char BACKGROUND_COLOR[] = "backgroundColor";
+  constexpr char APPEND[] = "append";
 }
 
 #endif //WEEXV8_CONSTANTSNAME_H

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp
----------------------------------------------------------------------
diff --git 
a/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp 
b/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp
new file mode 100644
index 0000000..9dbaeee
--- /dev/null
+++ 
b/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp
@@ -0,0 +1,14 @@
+#include "render_action_appendtree_createfinish.h"
+#include "../../../android/bridge/impl/bridge_impl_android.h"
+
+namespace WeexCore {
+
+  RenderActionAppendTreeCreateFinish::RenderActionAppendTreeCreateFinish(const 
std::string &pageId, const std::string &ref) {
+    this->mPageId = pageId;
+    this->mRef = ref;
+  }
+
+  void RenderActionAppendTreeCreateFinish::ExecuteAction() {
+    
Bridge_Impl_Android::getInstance()->callAppendTreeCreateFinish(mPageId.c_str(), 
mRef.c_str());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h
----------------------------------------------------------------------
diff --git 
a/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h 
b/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h
new file mode 100644
index 0000000..e83352a
--- /dev/null
+++ 
b/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h
@@ -0,0 +1,21 @@
+#ifndef WEEX_CORE_RENDER_ACTION_APPENDTREE_CREATEFINISH_H
+#define WEEX_CORE_RENDER_ACTION_APPENDTREE_CREATEFINISH_H
+
+#include "render_action.h"
+
+namespace WeexCore {
+
+  class RenderActionAppendTreeCreateFinish : public render_action {
+
+  public:
+    RenderActionAppendTreeCreateFinish(const std::string &pageId, const 
std::string &ref);
+
+    void ExecuteAction();
+
+  public:
+    std::string mPageId;
+    std::string mRef;
+  };
+}
+
+#endif //WEEX_CORE_RENDER_ACTION_APPENDTREE_CREATEFINISH_H

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/weex_core/Source/core/render/node/render_object.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_object.h 
b/weex_core/Source/core/render/node/render_object.h
index fe12b20..6aa676b 100644
--- a/weex_core/Source/core/render/node/render_object.h
+++ b/weex_core/Source/core/render/node/render_object.h
@@ -399,6 +399,14 @@ namespace WeexCore {
       return mIsRootRender;
     }
 
+    inline bool IsAppendTree(){
+      std::string append = GetAttr(APPEND);
+      if(append == "tree"){
+        return true;
+      }
+      return false;
+    }
+
   private:
     RenderObject *mParentRender;
     StylesMap *mStyles;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/weex_core/Source/core/render/page/render_page.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/page/render_page.cpp 
b/weex_core/Source/core/render/page/render_page.cpp
index d10b4dc..5139481 100644
--- a/weex_core/Source/core/render/page/render_page.cpp
+++ b/weex_core/Source/core/render/page/render_page.cpp
@@ -25,6 +25,7 @@
 #include <core/render/action/render_action_update_attr.h>
 #include <core/render/action/render_action_layout.h>
 #include <core/render/action/render_action_createfinish.h>
+#include <core/render/action/render_action_appendtree_createfinish.h>
 #include <core/layout/layout.h>
 #include <android/base/string/string_utils.h>
 #include <core/moniter/render_performance.h>
@@ -180,7 +181,7 @@ namespace WeexCore {
 
     PushRenderToRegisterMap(child);
     BuildRenderTreeTime(getCurrentTime() - startTime);
-    SendAddElementAction(child, parent, insertPosition);
+    SendAddElementAction(child, parent, insertPosition, false);
 
     Batch();
     return true;
@@ -496,13 +497,17 @@ namespace WeexCore {
     for(auto it = render->ChildListIterBegin(); it != 
render->ChildListIterEnd(); it++) {
       RenderObject* child = static_cast<RenderObject*>(*it);
       if (child != nullptr) {
-        SendAddElementAction(child, render, i);
+        SendAddElementAction(child, render, i, true);
       }
       ++i;
     }
+
+    if (i > 0 && render->IsAppendTree()) {
+      SendAppendTreeCreateFinish(render->Ref());
+    }
   }
 
-  void RenderPage::SendAddElementAction(RenderObject *child, RenderObject 
*parent, int index) {
+  void RenderPage::SendAddElementAction(RenderObject *child, RenderObject 
*parent, int index, bool is_recursion) {
     if (child == nullptr || parent == nullptr)
       return;
 
@@ -513,10 +518,14 @@ namespace WeexCore {
     for(auto it = child->ChildListIterBegin(); it != 
child->ChildListIterEnd(); it++) {
       RenderObject* grandson = static_cast<RenderObject*>(*it);
       if (grandson != nullptr) {
-        SendAddElementAction(grandson, child, i);
+        SendAddElementAction(grandson, child, i, true);
       }
       ++i;
     }
+
+    if (!is_recursion && i > 0 && child->IsAppendTree()) {
+      SendAppendTreeCreateFinish(child->Ref());
+    }
   }
 
   void RenderPage::SendRemoveElementAction(const std::string &ref) {
@@ -557,6 +566,11 @@ namespace WeexCore {
     PostRenderAction(action);
   }
 
+  void RenderPage::SendAppendTreeCreateFinish(const std::string &ref) {
+    render_action *action = new RenderActionAppendTreeCreateFinish(PageId(), 
ref);
+    PostRenderAction(action);
+  }
+
   void RenderPage::JniCallTime(const long long &time) {
     if (mWXCorePerformance != nullptr)
       mWXCorePerformance->jniCallTime += time;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b2d22b9a/weex_core/Source/core/render/page/render_page.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/page/render_page.h 
b/weex_core/Source/core/render/page/render_page.h
index b53a9cf..c3e1d3f 100644
--- a/weex_core/Source/core/render/page/render_page.h
+++ b/weex_core/Source/core/render/page/render_page.h
@@ -47,7 +47,7 @@ namespace WeexCore {
 
     void SendCreateBodyAction(RenderObject *render);
 
-    void SendAddElementAction(RenderObject *child, RenderObject *parent, int 
index);
+    void SendAddElementAction(RenderObject *child, RenderObject *parent, int 
index, bool is_recursion);
 
     void SendRemoveElementAction(const std::string &ref);
 
@@ -66,6 +66,8 @@ namespace WeexCore {
 
     void SendCreateFinishAction();
 
+    void SendAppendTreeCreateFinish(const std::string &ref);
+
     void PostRenderAction(render_action *action);
 
   public:

Reply via email to