http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/AnimationAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/AnimationAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/AnimationAction.java
deleted file mode 100644
index a0d689f..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/action/AnimationAction.java
+++ /dev/null
@@ -1,299 +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.action;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.ArgbEvaluator;
-import android.animation.ObjectAnimator;
-import android.animation.PropertyValuesHolder;
-import android.graphics.drawable.ColorDrawable;
-import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.view.animation.PathInterpolatorCompat;
-import android.text.TextUtils;
-import android.util.Pair;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.AccelerateDecelerateInterpolator;
-import android.view.animation.AccelerateInterpolator;
-import android.view.animation.DecelerateInterpolator;
-import android.view.animation.Interpolator;
-import android.view.animation.LinearInterpolator;
-import com.alibaba.fastjson.JSONObject;
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.WXSDKManager;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.dom.WXDomObject;
-import com.taobao.weex.ui.animation.BackgroundColorProperty;
-import com.taobao.weex.ui.animation.HeightProperty;
-import com.taobao.weex.ui.animation.WXAnimationBean;
-import com.taobao.weex.ui.animation.WXAnimationModule;
-import com.taobao.weex.ui.animation.WidthProperty;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.view.border.BorderDrawable;
-import com.taobao.weex.utils.SingleFunctionParser;
-import com.taobao.weex.utils.WXExceptionUtils;
-import com.taobao.weex.utils.WXLogUtils;
-import com.taobao.weex.utils.WXResourceUtils;
-import com.taobao.weex.utils.WXUtils;
-import com.taobao.weex.utils.WXViewUtils;
-import java.util.HashMap;
-import java.util.List;
-
-import static com.taobao.weex.common.Constants.TimeFunction.CUBIC_BEZIER;
-import static com.taobao.weex.common.Constants.TimeFunction.EASE;
-import static com.taobao.weex.common.Constants.TimeFunction.EASE_IN;
-import static com.taobao.weex.common.Constants.TimeFunction.EASE_IN_OUT;
-import static com.taobao.weex.common.Constants.TimeFunction.EASE_OUT;
-import static com.taobao.weex.common.Constants.TimeFunction.LINEAR;
-
-
-class AnimationAction implements DOMAction, RenderAction {
-
-  private final static String TAG = "AnimationAction";
-  @NonNull
-  private final String ref;
-
-  @Nullable
-  private
-  final JSONObject animation;
-
-  @Nullable
-  private
-  final String callback;
-
-  @Nullable
-  private
-  WXAnimationBean mAnimationBean;
-
-  AnimationAction(@NonNull final String ref, @Nullable JSONObject animation,
-                  @Nullable final String callBack) {
-    this.ref = ref;
-    this.animation = animation;
-    this.callback = callBack;
-  }
-
-  AnimationAction(@NonNull String ref, @NonNull WXAnimationBean animationBean) 
{
-    this(ref, animationBean, null);
-  }
-
-  AnimationAction(@NonNull String ref, @NonNull WXAnimationBean animationBean,
-                  @Nullable final String callBack) {
-    this.ref = ref;
-    this.mAnimationBean = animationBean;
-    this.callback = callBack;
-    this.animation = null;
-  }
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-    try {
-      WXDomObject domObject;
-      if (!context.isDestory() &&
-          animation != null &&
-          (domObject = context.getDomByRef(ref)) != null) {
-        WXAnimationBean animationBean =  JSONObject.toJavaObject(animation, 
WXAnimationBean.class);
-        if (animationBean != null && animationBean.styles != null) {
-          int width = (int) domObject.getLayoutWidth();
-          int height = (int) domObject.getLayoutHeight();
-          animationBean.styles.init(animationBean.styles.transformOrigin,
-                                    animationBean.styles.transform, width, 
height,
-                                    
context.getInstance().getInstanceViewPortWidth());
-          mAnimationBean = animationBean;
-          context.postRenderTask(this);
-        }
-      }
-    } catch (RuntimeException e) {
-         
WXExceptionUtils.commitCriticalExceptionRT(context.getInstance().getInstanceId(),
-                         WXErrorCode.WX_KEY_EXCEPTION_DOM_ANIMATION,
-                         "animationAction",
-                         
WXErrorCode.WX_KEY_EXCEPTION_DOM_ANIMATION.getErrorMsg() + 
WXLogUtils.getStackTrace(e),null);
-      WXLogUtils.e(TAG, WXLogUtils.getStackTrace(e));
-    }
-  }
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXSDKInstance instance;
-    if (mAnimationBean != null && (instance = context.getInstance()) != null) {
-      startAnimation(instance, context.getComponent(ref));
-    }
-  }
-
-  private void startAnimation(@NonNull WXSDKInstance instance, @Nullable 
WXComponent component) {
-    if (component != null) {
-      if (mAnimationBean != null) {
-        component.setNeedLayoutOnAnimation(mAnimationBean.needLayout);
-      }
-      if (component.getHostView() == null) {
-        WXAnimationModule.AnimationHolder holder = new 
WXAnimationModule.AnimationHolder(mAnimationBean, callback);
-        component.postAnimation(holder);
-      } else {
-        try {
-          Animator animator = createAnimator(component.getHostView(), instance
-              .getInstanceViewPortWidth());
-          if (animator != null) {
-            Animator.AnimatorListener animatorCallback = 
createAnimatorListener(instance, callback);
-            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2 && 
component
-                .isLayerTypeEnabled() ) {
-              component.getHostView().setLayerType(View.LAYER_TYPE_HARDWARE, 
null);
-            }
-            Interpolator interpolator = createTimeInterpolator();
-            if (animatorCallback != null) {
-              animator.addListener(animatorCallback);
-            }
-            if (interpolator != null) {
-              animator.setInterpolator(interpolator);
-            }
-            
component.getHostView().setCameraDistance(mAnimationBean.styles.getCameraDistance());
-            animator.setDuration(mAnimationBean.duration);
-            animator.start();
-          }
-        } catch (RuntimeException e) {
-                 
WXExceptionUtils.commitCriticalExceptionRT(instance.getInstanceId(),
-                                 WXErrorCode.WX_KEY_EXCEPTION_DOM_ANIMATION,
-                                 "animationAction",
-                                 
WXErrorCode.WX_KEY_EXCEPTION_DOM_ANIMATION.getErrorMsg() + 
WXLogUtils.getStackTrace(e),null);
-                 WXLogUtils.e(TAG, WXLogUtils.getStackTrace(e));        }
-      }
-    }
-  }
-
-  private
-  @Nullable
-  ObjectAnimator createAnimator(final View target, final int viewPortWidth) {
-    if (target == null) {
-      return null;
-    }
-    WXAnimationBean.Style style = mAnimationBean.styles;
-    if (style != null) {
-      ObjectAnimator animator;
-      List<PropertyValuesHolder> holders = style.getHolders();
-      if (!TextUtils.isEmpty(style.backgroundColor)) {
-        BorderDrawable borderDrawable;
-        if ((borderDrawable = WXViewUtils.getBorderDrawable(target)) != null) {
-          holders.add(PropertyValuesHolder.ofObject(
-              new BackgroundColorProperty(), new ArgbEvaluator(),
-              borderDrawable.getColor(),
-              WXResourceUtils.getColor(style.backgroundColor)));
-        } else if (target.getBackground() instanceof ColorDrawable) {
-          holders.add(PropertyValuesHolder.ofObject(
-              new BackgroundColorProperty(), new ArgbEvaluator(),
-              ((ColorDrawable) target.getBackground()).getColor(),
-              WXResourceUtils.getColor(style.backgroundColor)));
-        }
-      }
-
-      if (target.getLayoutParams() != null &&
-          (!TextUtils.isEmpty(style.width) || 
!TextUtils.isEmpty(style.height))) {
-        ViewGroup.LayoutParams layoutParams = target.getLayoutParams();
-        if (!TextUtils.isEmpty(style.width)) {
-          holders.add(PropertyValuesHolder.ofInt(new WidthProperty(), 
layoutParams.width,
-              (int) 
WXViewUtils.getRealPxByWidth(WXUtils.getFloat(style.width), viewPortWidth)));
-        }
-        if (!TextUtils.isEmpty(style.height)) {
-          holders.add(PropertyValuesHolder.ofInt(new HeightProperty(), 
layoutParams.height,
-              (int) 
WXViewUtils.getRealPxByWidth(WXUtils.getFloat(style.height), viewPortWidth)));
-        }
-      }
-
-      if (style.getPivot() != null) {
-        Pair<Float, Float> pair = style.getPivot();
-        target.setPivotX(pair.first);
-        target.setPivotY(pair.second);
-      }
-      animator = ObjectAnimator.ofPropertyValuesHolder(
-          target, holders.toArray(new PropertyValuesHolder[holders.size()]));
-      animator.setStartDelay(mAnimationBean.delay);
-      return animator;
-    } else {
-      return null;
-    }
-  }
-
-  private
-  @Nullable
-  Animator.AnimatorListener createAnimatorListener(final WXSDKInstance 
instance, @Nullable final String callBack) {
-    if (!TextUtils.isEmpty(callBack)) {
-      return new AnimatorListenerAdapter() {
-        @Override
-        public void onAnimationEnd(Animator animation) {
-          if (instance == null || instance.isDestroy()) {
-            WXLogUtils.e("RenderActionContextImpl-onAnimationEnd WXSDKInstance 
== null NPE or instance is destroyed");
-          } else {
-            WXSDKManager.getInstance().callback(instance.getInstanceId(),
-                                                callBack,
-                                                new HashMap<String, Object>());
-          }
-        }
-      };
-    } else {
-      return null;
-    }
-  }
-
-  private
-  @Nullable
-  Interpolator createTimeInterpolator() {
-    String interpolator = mAnimationBean.timingFunction;
-    if (!TextUtils.isEmpty(interpolator)) {
-      switch (interpolator) {
-        case EASE_IN:
-          return PathInterpolatorCompat.create(0.42f,0f, 1f,1f);
-        case EASE_OUT:
-          return PathInterpolatorCompat.create(0f,0f, 0.58f,1f);
-        case EASE_IN_OUT:
-          return PathInterpolatorCompat.create(0.42f,0f, 0.58f,1f);
-        case EASE:
-          return PathInterpolatorCompat.create(0.25f,0.1f, 0.25f,1f);
-        case LINEAR:
-          return PathInterpolatorCompat.create(0.0f,0f, 1f,1f);
-        default:
-          //Parse cubic-bezier
-          try {
-            SingleFunctionParser<Float> parser = new SingleFunctionParser<>(
-                    mAnimationBean.timingFunction,
-                    new SingleFunctionParser.FlatMapper<Float>() {
-                      @Override
-                      public Float map(String raw) {
-                        return Float.parseFloat(raw);
-                      }
-                    });
-            List<Float> params = parser.parse(CUBIC_BEZIER);
-            if (params != null && params.size() == 
WXAnimationBean.NUM_CUBIC_PARAM) {
-              return PathInterpolatorCompat.create(
-                      params.get(0), params.get(1), params.get(2), 
params.get(3));
-            } else {
-              return null;
-            }
-          } catch (RuntimeException e) {
-            return null;
-          }
-      }
-    }
-    return null;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/CreateBodyAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/CreateBodyAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/CreateBodyAction.java
deleted file mode 100644
index b72e6d1..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/action/CreateBodyAction.java
+++ /dev/null
@@ -1,144 +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.action;
-
-import android.widget.ScrollView;
-
-import com.alibaba.fastjson.JSONObject;
-import com.taobao.weex.WXEnvironment;
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.WXSDKManager;
-import com.taobao.weex.adapter.IWXUserTrackAdapter;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.common.WXRenderStrategy;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.dom.WXDomObject;
-import com.taobao.weex.tracing.Stopwatch;
-import com.taobao.weex.tracing.WXTracing;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.WXScroller;
-import com.taobao.weex.utils.WXLogUtils;
-import com.taobao.weex.utils.WXViewUtils;
-
-/**
- * Created by sospartan on 14/02/2017.
- */
-
-class CreateBodyAction extends AbstractAddElementAction {
-  private final JSONObject mData;
-  private StringBuilder mErrMsg = new StringBuilder("CreateBodyAction Error:");
-
-  CreateBodyAction(JSONObject data) {
-    mData = data;
-  }
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-    if (WXTracing.isAvailable()) {
-      if (context != null && context.getInstance() != null) {
-        WXTracing.TraceEvent execJsEndEvent = 
WXTracing.newEvent("executeBundleJS", context.getInstanceId(), -1);
-        execJsEndEvent.traceId = context.getInstance().mExecJSTraceId;
-        execJsEndEvent.ph = "E";
-        execJsEndEvent.submit();
-      }
-    }
-    addDomInternal(context, mData);
-  }
-
-  @Override
-  protected WXComponent createComponent(DOMActionContext context, WXDomObject 
domObject) {
-    return generateComponentTree(context, domObject, null);
-  }
-
-  @Override
-  protected void appendDomToTree(DOMActionContext context, WXDomObject 
domObject) {
-    long startNanos = System.nanoTime();
-    String instanceId = context.getInstanceId();
-    WXDomObject.prepareRoot(domObject,
-        WXViewUtils.getWebPxByWidth(WXViewUtils.getWeexHeight(instanceId), 
WXSDKManager.getInstanceViewPortWidth(instanceId)),
-        WXViewUtils.getWebPxByWidth(WXViewUtils.getWeexWidth(instanceId), 
WXSDKManager.getInstanceViewPortWidth(instanceId)));
-    domObject.mDomThreadNanos += (System.nanoTime() - startNanos);
-  }
-
-  @Override
-  protected WXErrorCode getErrorCode() {
-    return WXErrorCode.WX_KEY_EXCEPTION_DOM_CREATE_BODY;
-  }
-
-  @Override
-  protected String getErrorMsg() {
-       return mErrMsg.toString();
-  }
-
-  @Override
-  protected String getStatementName() {
-    return "createBody";
-  }
-
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXComponent component = context.getComponent(WXDomObject.ROOT);
-    WXSDKInstance instance = context.getInstance();
-    if (instance == null || instance.getContext() == null) {
-      WXLogUtils.e("instance is null or instance is destroy!");
-         mErrMsg.append("instance is null or instance is destroy!");
-      return;
-    }
-    try {
-      Stopwatch.tick();
-      long start = System.currentTimeMillis();
-      component.createView();
-      if (WXEnvironment.isApkDebugable()) {
-        WXLogUtils.renderPerformanceLog("createView", 
(System.currentTimeMillis() - start));
-        submitPerformance("createView", "X", instance.getInstanceId(), 
Stopwatch.tackAndTick(), start, true);
-      }
-      start = System.currentTimeMillis();
-      component.applyLayoutAndEvent(component);
-      if (WXTracing.isAvailable()) {
-        submitPerformance("applyLayoutAndEvent", "X", 
instance.getInstanceId(), Stopwatch.tackAndTick(), start, true);
-      }
-      start = System.currentTimeMillis();
-      component.bindData(component);
-
-      if (WXEnvironment.isApkDebugable()) {
-        WXLogUtils.renderPerformanceLog("bind", (System.currentTimeMillis() - 
start));
-        submitPerformance("bindData", "X", instance.getInstanceId(), 
Stopwatch.tack(), start, true);
-      }
-
-      if (component instanceof WXScroller) {
-        WXScroller scroller = (WXScroller) component;
-        if (scroller.getInnerView() instanceof ScrollView) {
-          instance.setRootScrollView((ScrollView) scroller.getInnerView());
-        }
-      }
-      instance.onRootCreated(component);
-      if (instance.getRenderStrategy() != WXRenderStrategy.APPEND_ONCE) {
-        instance.onCreateFinish();
-      }
-      component.mTraceInfo.uiQueueTime = mUIQueueTime;
-      component.onRenderFinish(WXComponent.STATE_ALL_FINISH);
-    } catch (Exception e) {
-      WXLogUtils.e("create body failed.", e);
-         mErrMsg.append("create body 
failed.").append(WXLogUtils.getStackTrace(e)).toString();
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/CreateFinishAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/CreateFinishAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/CreateFinishAction.java
deleted file mode 100644
index e581c4e..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/CreateFinishAction.java
+++ /dev/null
@@ -1,64 +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.action;
-
-import com.taobao.weex.LayoutFinishListener;
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.WXSDKManager;
-import com.taobao.weex.common.WXRenderStrategy;
-import com.taobao.weex.common.WXThread;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.tracing.Stopwatch;
-import com.taobao.weex.tracing.WXTracing;
-
-/**
- * Created by sospartan on 02/03/2017.
- */
-
-final class CreateFinishAction extends AbstractLayoutFinishAction {
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-    super.executeDom(context);
-    final WXSDKInstance instance = context.getInstance();
-    final LayoutFinishListener listener;
-    if(instance != null && (listener = instance.getLayoutFinishListener()) != 
null) {
-      
WXSDKManager.getInstance().getWXRenderManager().postOnUiThread(WXThread.secure(new
 Runnable() {
-        @Override
-        public void run() {
-          listener.onLayoutFinish(instance);
-        }
-      }),0);
-    }
-  }
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXSDKInstance instance = context.getInstance();
-    if (instance.getRenderStrategy() == WXRenderStrategy.APPEND_ONCE) {
-      instance.onCreateFinish();
-    }
-    instance.onRenderSuccess(mLayoutWidth, mLayoutHeight);
-    if (WXTracing.isAvailable()) {
-      double renderTime = 
Stopwatch.millisUntilNow(context.getInstance().mRenderStartNanos);
-      submitPerformance("renderFinish", "X", instance.getInstanceId(), 
renderTime, System.currentTimeMillis());
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/ExecutableRenderAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/ExecutableRenderAction.java
 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/ExecutableRenderAction.java
deleted file mode 100644
index 0e78088..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/ExecutableRenderAction.java
+++ /dev/null
@@ -1,48 +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.action;
-
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-
-class ExecutableRenderAction implements DOMAction, RenderAction {
-
-    private Runnable mRunnable;
-
-    ExecutableRenderAction(Runnable runnable) {
-        this.mRunnable = runnable;
-    }
-
-    @Override
-    public void executeDom(DOMActionContext context) {
-        if (context.isDestory()) {
-            return;
-        }
-        context.postRenderTask(this);
-    }
-
-    @Override
-    public void executeRender(RenderActionContext context) {
-        if (mRunnable != null) {
-            mRunnable.run();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/GetComponentRectAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/GetComponentRectAction.java
 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/GetComponentRectAction.java
deleted file mode 100644
index cf8e224..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/GetComponentRectAction.java
+++ /dev/null
@@ -1,116 +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.action;
-
-import android.graphics.Rect;
-import android.support.annotation.NonNull;
-import android.text.TextUtils;
-import android.view.View;
-
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.bridge.JSCallback;
-import com.taobao.weex.bridge.SimpleJSCallback;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.utils.WXViewUtils;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Created by sospartan on 02/03/2017.
- */
-class GetComponentRectAction implements RenderAction {
-  private final String mRef;
-  private final String mCallback;
-
-
-  GetComponentRectAction(String ref, String callback) {
-    this.mRef = ref;
-    this.mCallback = callback;
-  }
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXSDKInstance instance = context.getInstance();
-    JSCallback jsCallback = new 
SimpleJSCallback(context.getInstance().getInstanceId(), mCallback);
-    if (instance == null ||instance.isDestroy()) {
-      //do nothing
-    }else if (TextUtils.isEmpty(mRef)) {
-      Map<String, Object> options = new HashMap<>();
-      options.put("result", false);
-      options.put("errMsg", "Illegal parameter");
-      jsCallback.invoke(options);
-    } else if ("viewport".equalsIgnoreCase(mRef)) {
-      callbackViewport(context, jsCallback);
-    } else {
-      WXComponent component = context.getComponent(mRef);
-      Map<String, Object> options = new HashMap<>();
-      if (component != null) {
-        int viewPort = instance.getInstanceViewPortWidth();
-        Map<String, Float> size = new HashMap<>();
-        Rect sizes = component.getComponentSize();
-        size.put("width", getWebPxValue(sizes.width(),viewPort));
-        size.put("height", getWebPxValue(sizes.height(),viewPort));
-        size.put("bottom", getWebPxValue(sizes.bottom,viewPort));
-        size.put("left", getWebPxValue(sizes.left,viewPort));
-        size.put("right", getWebPxValue(sizes.right,viewPort));
-        size.put("top", getWebPxValue(sizes.top,viewPort));
-        options.put("size", size);
-        options.put("result", true);
-      } else {
-        options.put("errMsg", "Component does not exist");
-      }
-      jsCallback.invoke(options);
-    }
-  }
-
-  private void callbackViewport(RenderActionContext context, JSCallback 
jsCallback) {
-    WXSDKInstance instance = context.getInstance();
-    View container;
-    if ((container = instance.getContainerView()) != null) {
-      Map<String, Object> options = new HashMap<>();
-      Map<String, Float> sizes = new HashMap<>();
-      int[] location = new int[2];
-      instance.getContainerView().getLocationOnScreen(location);
-      int viewport = instance.getInstanceViewPortWidth();
-      sizes.put("left", 0f);
-      sizes.put("top", 0f);
-      sizes.put("right", getWebPxValue(container.getWidth(),viewport));
-      sizes.put("bottom", getWebPxValue(container.getHeight(),viewport));
-      sizes.put("width", getWebPxValue(container.getWidth(),viewport));
-      sizes.put("height", getWebPxValue(container.getHeight(),viewport));
-      options.put("size", sizes);
-      options.put("result", true);
-      jsCallback.invoke(options);
-    } else {
-      Map<String, Object> options = new HashMap<>();
-      options.put("result", false);
-      options.put("errMsg", "Component does not exist");
-      jsCallback.invoke(options);
-    }
-  }
-
-  @NonNull
-  private float getWebPxValue(int value,int viewport) {
-    return WXViewUtils.getWebPxByWidth(value, viewport);
-  }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/InvokeMethodAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/InvokeMethodAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/InvokeMethodAction.java
deleted file mode 100644
index 5661b92..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/InvokeMethodAction.java
+++ /dev/null
@@ -1,50 +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.action;
-
-import com.alibaba.fastjson.JSONArray;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.utils.WXLogUtils;
-
-/**
- * Created by sospartan on 02/03/2017.
- */
-final class InvokeMethodAction implements DOMAction {
-  private final String mRef;
-  private final String mMethod;
-  private final JSONArray mArgs;
-
-  InvokeMethodAction(String ref, String method, JSONArray args) {
-    this.mRef = ref;
-    this.mMethod = method;
-    this.mArgs = args;
-  }
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-    WXComponent comp = context.getCompByRef(mRef);
-    if(comp == null){
-      WXLogUtils.e("DOMAction","target component not found.");
-      return;
-    }
-    comp.invoke(mMethod,mArgs);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/ModuleInvocationAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/ModuleInvocationAction.java
 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/ModuleInvocationAction.java
deleted file mode 100644
index 327f9a3..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/ModuleInvocationAction.java
+++ /dev/null
@@ -1,76 +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.action;
-
-import android.support.annotation.NonNull;
-
-import com.alibaba.fastjson.JSONArray;
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.bridge.Invoker;
-import com.taobao.weex.bridge.NativeInvokeHelper;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.common.WXModule;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.utils.WXExceptionUtils;
-import com.taobao.weex.utils.WXLogUtils;
-
-class ModuleInvocationAction implements DOMAction, RenderAction {
-
-    private WXModule mWXModule;
-    private JSONArray mArgs;
-    private Invoker mInvoker;
-
-    ModuleInvocationAction(@NonNull WXModule wxModule, @NonNull JSONArray 
args, @NonNull Invoker invoker) {
-        this.mWXModule = wxModule;
-        this.mArgs = args;
-        this.mInvoker = invoker;
-    }
-
-    @Override
-    public void executeDom(DOMActionContext context) {
-        if (context.isDestory()) {
-            return;
-        }
-        context.postRenderTask(this);
-    }
-
-    @Override
-    public void executeRender(RenderActionContext context) {
-        WXSDKInstance instance;
-        if(context == null || (instance = context.getInstance()) == null) {
-            return;
-        }
-        NativeInvokeHelper helper = instance.getNativeInvokeHelper();
-        try {
-            helper.invoke(mWXModule,mInvoker,mArgs);
-        } catch (Exception e) {
-                 
WXExceptionUtils.commitCriticalExceptionRT(instance.getInstanceId(),
-                                 WXErrorCode.WX_KEY_EXCEPTION_DOM_MODULEINVO,
-                                 "updateAttr",
-                                 
WXErrorCode.WX_KEY_EXCEPTION_DOM_MODULEINVO.getErrorMsg() + "callModuleMethod 
>>> invoke module:"
-                                                 + 
mWXModule.getClass().getSimpleName() + " failed. " + 
WXLogUtils.getStackTrace(e),null);
-
-            WXLogUtils.e("callModuleMethod >>> invoke module:" + 
mWXModule.getClass().getSimpleName()
-                    + " failed. ", e);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/MoveElementAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/MoveElementAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/MoveElementAction.java
deleted file mode 100644
index a103858..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/MoveElementAction.java
+++ /dev/null
@@ -1,103 +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.action;
-
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.adapter.IWXUserTrackAdapter;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.dom.WXDomObject;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.WXVContainer;
-import com.taobao.weex.utils.WXExceptionUtils;
-
-/**
- * Created by sospartan on 01/03/2017.
- */
-final class MoveElementAction implements DOMAction, RenderAction {
-  private final String mRef;
-  private final String mParentRef;
-  private final int mIndex;
-
-  private int mNewIndex;
-
-  MoveElementAction(String ref, String parentRef, int index) {
-    mRef = ref;
-    mParentRef = parentRef;
-    mIndex = index;
-    mNewIndex = index;
-  }
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-    if (context.isDestory()) {
-      return;
-    }
-    WXSDKInstance instance = context.getInstance();
-    WXDomObject domObject = context.getDomByRef(mRef);
-    WXDomObject parentObject = context.getDomByRef(mParentRef);
-    if (domObject == null || domObject.parent == null
-        || parentObject == null || parentObject.hasNewLayout()) {
-      if (instance != null) {
-               
WXExceptionUtils.commitCriticalExceptionRT(instance.getInstanceId(),
-                               WXErrorCode.WX_KEY_EXCEPTION_DOM_MOVE_ELEMENT,
-                               "moveElement",
-                               
WXErrorCode.WX_KEY_EXCEPTION_DOM_MOVE_ELEMENT.getErrorMsg() +
-                                               "domObject = " + domObject
-                               + "domObject.parent= " +  domObject.parent
-                               + "parentObject = " + parentObject
-                               + "parentObject.hasNewLayout() =" + 
parentObject.hasNewLayout(),null);
-      }
-      return;
-    }
-    int index = mIndex;
-    if (domObject.parent.equals(parentObject)) {
-      if(parentObject.index(domObject) == index) {
-        return;
-      } else if(domObject.parent.index(domObject)< index){
-        index = index -1;
-      }
-    }
-
-    mNewIndex = index;
-    domObject.parent.remove(domObject);
-    parentObject.add(domObject, mNewIndex);
-
-    context.postRenderTask(this);
-  }
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXComponent component = context.getComponent(mRef);
-    WXComponent newParent = context.getComponent(mParentRef);
-    if (component == null || component.getParent() == null
-        || newParent == null || !(newParent instanceof WXVContainer)) {
-      return;
-    }
-    WXVContainer oldParent = component.getParent();
-    oldParent.remove(component,false);
-    ((WXVContainer) newParent).addChild(component, mNewIndex);
-    if(!component.isVirtualComponent()){
-      ((WXVContainer) newParent).addSubView(component.getHostView(), 
mNewIndex);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/RefreshFinishAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/RefreshFinishAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/RefreshFinishAction.java
deleted file mode 100644
index 2d87d11..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/RefreshFinishAction.java
+++ /dev/null
@@ -1,39 +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.action;
-
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.tracing.WXTracing;
-
-/**
- * Created by sospartan on 02/03/2017.
- */
-
-class RefreshFinishAction extends AbstractLayoutFinishAction {
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXSDKInstance instance = context.getInstance();
-    instance.onRefreshSuccess(mLayoutWidth, mLayoutHeight);
-    if (WXTracing.isAvailable()) {
-      submitPerformance("refreshFinish", "I", 
context.getInstance().getInstanceId(), 0, 0);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/ReloadPageAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/ReloadPageAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/ReloadPageAction.java
deleted file mode 100644
index 791a5f2..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/action/ReloadPageAction.java
+++ /dev/null
@@ -1,66 +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.action;
-
-import android.util.Log;
-
-import com.taobao.weex.WXEnvironment;
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.adapter.IWXUserTrackAdapter;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-
-/**
- * Created by sospartan on 02/03/2017.
- */
-
-final class ReloadPageAction implements DOMAction, RenderAction {
-  private final String TAG = "ReloadPageAction";
-  private String mInstanceId;
-  private boolean mReloadThis;
-
-  ReloadPageAction(String instanceId, boolean reloadThis) {
-    mInstanceId = instanceId;
-    mReloadThis = reloadThis;
-  }
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-      if (context.isDestory()) {
-        return;
-      }
-      // context.postRenderTask(this);
-
-    WXSDKInstance instance = context.getInstance();
-    if (instance != null) {
-         // instance.commitUTStab(IWXUserTrackAdapter.DOM_MODULE, 
WXErrorCode.WX_SUCCESS);
-         instance.reloadPage(mReloadThis);
-    } else {
-      Log.e(TAG, "ReloadPageAction executeDom reloadPage instance is null");
-    }
-  }
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    // context.getInstance().onReloadPage();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/RemoveElementAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/RemoveElementAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/RemoveElementAction.java
deleted file mode 100644
index 144d3ec..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/RemoveElementAction.java
+++ /dev/null
@@ -1,109 +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.action;
-
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.adapter.IWXUserTrackAdapter;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.dom.WXDomObject;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.WXVContainer;
-import com.taobao.weex.utils.WXExceptionUtils;
-
-/**
- * Created by sospartan on 27/02/2017.
- */
-final class RemoveElementAction implements DOMAction, RenderAction {
-  private final String mRef;
-
-  RemoveElementAction(String ref) {
-    mRef = ref;
-  }
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-    if (context.isDestory()) {
-      return;
-    }
-    WXSDKInstance instance = context.getInstance();
-    WXDomObject domObject = context.getDomByRef(mRef);
-    if (domObject == null) {
-      if (instance != null) {
-//        instance.commitUTStab(IWXUserTrackAdapter.DOM_MODULE, 
WXErrorCode.WX_ERR_DOM_REMOVEELEMENT);
-               
WXExceptionUtils.commitCriticalExceptionRT(instance.getInstanceId(),
-                               WXErrorCode.WX_KEY_EXCEPTION_DOM_REMOVE_ELEMENT,
-                               "removeElement",
-                               
WXErrorCode.WX_KEY_EXCEPTION_DOM_REMOVE_ELEMENT.getErrorMsg() + "domObject is 
null",null);
-      }
-      return;
-    }
-    WXDomObject parent = domObject.parent;
-    if (parent == null) {
-      if (instance != null) {
-//        instance.commitUTStab(IWXUserTrackAdapter.DOM_MODULE, 
WXErrorCode.WX_ERR_DOM_REMOVEELEMENT);
-               
WXExceptionUtils.commitCriticalExceptionRT(instance.getInstanceId(),
-                               WXErrorCode.WX_KEY_EXCEPTION_DOM_REMOVE_ELEMENT,
-                               "removeElement",
-                               
WXErrorCode.WX_KEY_EXCEPTION_DOM_REMOVE_ELEMENT.getErrorMsg() + "parent is 
null",null);
-      }
-      return;
-    }
-    domObject.traverseTree(context.getRemoveElementConsumer());
-    parent.remove(domObject);
-    context.unregisterDOMObject(mRef);
-
-    context.postRenderTask(this);
-  }
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXComponent component = context.getComponent(mRef);
-    if (component == null || component.getParent() == null) {
-      return;
-    }
-    WXVContainer parent = component.getParent();
-    clearRegistryForComponent(context, component);
-    parent.remove(component, true);
-    context.unregisterComponent(mRef);
-    WXSDKInstance instance = context.getInstance();
-    if (null != instance){
-      instance.onElementChange();
-    }
-  }
-
-  private void clearRegistryForComponent(RenderActionContext context, 
WXComponent component) {
-    WXComponent removedComponent = 
context.unregisterComponent(component.getDomObject().getRef());
-    if (removedComponent != null) {
-      removedComponent.removeAllEvent();
-      removedComponent.removeStickyStyle();
-    }
-    if (component instanceof WXVContainer) {
-      WXVContainer container = (WXVContainer) component;
-      int count = container.childCount();
-      for (int i = count - 1; i >= 0; --i) {
-        clearRegistryForComponent(context, container.getChild(i));
-      }
-    }
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/RemoveEventAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/RemoveEventAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/RemoveEventAction.java
deleted file mode 100644
index 79f55af..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/RemoveEventAction.java
+++ /dev/null
@@ -1,80 +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.action;
-
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.WXSDKManager;
-import com.taobao.weex.adapter.IWXUserTrackAdapter;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.dom.WXDomObject;
-import com.taobao.weex.dom.WXEvent;
-import com.taobao.weex.ui.IWXRenderTask;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.utils.WXExceptionUtils;
-
-/**
- * Created by sospartan on 02/03/2017.
- */
-class RemoveEventAction implements DOMAction, RenderAction {
-  private final String mRef;
-  private final String mEvent;
-
-  private WXDomObject mUpdatedDomObject;
-
-  RemoveEventAction(String ref, Object event) {
-    this.mRef = ref;
-    this.mEvent = WXEvent.getEventName(event);
-  }
-
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-    if (context.isDestory()) {
-      return;
-    }
-    WXSDKInstance instance = context.getInstance();
-    WXDomObject domObject = context.getDomByRef(mRef);
-    if (domObject == null) {
-      if (instance != null) {
-               
WXExceptionUtils.commitCriticalExceptionRT(instance.getInstanceId(),
-                               WXErrorCode.WX_KEY_EXCEPTION_DOM_REMOVE_EVENT,
-                               "updateAttr",
-                               
WXErrorCode.WX_KEY_EXCEPTION_DOM_REMOVE_EVENT.getErrorMsg() + "domObject is 
null",null);
-      }
-      return;
-    }
-    domObject.removeEvent(mEvent);
-    mUpdatedDomObject = domObject;
-    context.postRenderTask(this);
-  }
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXComponent comp = context.getComponent(mRef);
-    if(comp != null){
-      //sync dom change to component
-      comp.updateDom(mUpdatedDomObject);
-      comp.removeEvent(mEvent);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/ScrollToElementAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/ScrollToElementAction.java
 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/ScrollToElementAction.java
deleted file mode 100644
index e0cb8ea..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/ScrollToElementAction.java
+++ /dev/null
@@ -1,67 +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.action;
-
-import com.alibaba.fastjson.JSONObject;
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.WXSDKManager;
-import com.taobao.weex.adapter.IWXUserTrackAdapter;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.ui.IWXRenderTask;
-import com.taobao.weex.ui.component.Scrollable;
-import com.taobao.weex.ui.component.WXComponent;
-
-/**
- * Created by sospartan on 02/03/2017.
- */
-final class ScrollToElementAction implements DOMAction, RenderAction {
-  private final JSONObject mOptions;
-  private final String mRef;
-
-  public ScrollToElementAction(String ref, JSONObject options) {
-    this.mRef = ref;
-    this.mOptions = options;
-  }
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-    if (context.isDestory()) {
-      return;
-    }
-    context.postRenderTask(this);
-  }
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXComponent component = context.getComponent(mRef);
-    if (component == null) {
-      return;
-    }
-
-    Scrollable scroller = component.getParentScroller();
-    if (scroller == null) {
-      return;
-    }
-    scroller.scrollTo(component,mOptions);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/TraceableAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/TraceableAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/TraceableAction.java
deleted file mode 100644
index c4cc59a..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/action/TraceableAction.java
+++ /dev/null
@@ -1,83 +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.action;
-
-import com.taobao.weex.tracing.Stopwatch;
-import com.taobao.weex.tracing.WXTracing;
-
-/**
- * Created by moxun on 2017/6/30.
- */
-
-public class TraceableAction {
-  public int mTracingEventId;
-  public long mStartMillis;
-  public long mDomQueueTime;
-  public long mUIQueueTime;
-  public long mParseJsonNanos = -1;
-  protected WXTracing.TraceEvent mBeginEvent;
-
-  {
-    if (WXTracing.isAvailable()) {
-      mTracingEventId = WXTracing.nextId();
-      mStartMillis = System.currentTimeMillis();
-    }
-  }
-
-  protected WXTracing.TraceEvent submitPerformance(String fname, String ph, 
String instanceId, double duration, long ts, boolean... isSegment) {
-    if (WXTracing.isAvailable()) {
-      WXTracing.TraceEvent event = WXTracing.newEvent(fname, instanceId, 
mTracingEventId);
-      event.ts = ts;
-      event.ph = ph;
-      event.duration = duration;
-
-      if (isSegment != null && isSegment.length == 1) {
-        event.isSegment = isSegment[0];
-      }
-
-      event.submit();
-      return event;
-    }
-    return new WXTracing.TraceEvent();
-  }
-
-  public void onStartDomExecute(String instanceId, String fname, String ref, 
String type, String payload) {
-    if (WXTracing.isAvailable()) {
-      mBeginEvent = WXTracing.newEvent(fname, instanceId, -1);
-      mBeginEvent.traceId = mTracingEventId;
-      mBeginEvent.ts = mStartMillis;
-      mBeginEvent.ph = "B";
-      mBeginEvent.ref = ref;
-      mBeginEvent.name = type;
-      mBeginEvent.payload = payload;
-      mBeginEvent.parseJsonTime = Stopwatch.nanosToMillis(mParseJsonNanos);
-      mBeginEvent.tname = "JSThread";
-      mBeginEvent.submit();
-    }
-  }
-
-  public void onFinishUIExecute() {
-    if (WXTracing.isAvailable() && mBeginEvent != null) {
-      WXTracing.TraceEvent endEvent = 
WXTracing.newEvent(getClass().getSimpleName(), mBeginEvent.iid, -1);
-      endEvent.traceId = mBeginEvent.traceId;
-      endEvent.ph = "E";
-      endEvent.submit();
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateAttributeAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateAttributeAction.java
 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateAttributeAction.java
deleted file mode 100644
index 92d8513..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateAttributeAction.java
+++ /dev/null
@@ -1,83 +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.action;
-
-import com.alibaba.fastjson.JSONObject;
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.adapter.IWXUserTrackAdapter;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.dom.WXDomObject;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.utils.WXExceptionUtils;
-
-/**
- * Created by sospartan on 28/02/2017.
- */
-
-class UpdateAttributeAction extends TraceableAction implements DOMAction, 
RenderAction {
-  private final String mRef;
-  private final JSONObject mData;
-
-
-  UpdateAttributeAction(String ref, JSONObject data) {
-    mRef = ref;
-    mData = data;
-  }
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-    if (context.isDestory()) {
-      return;
-    }
-    if(mData == null){
-      return;
-    }
-
-    WXSDKInstance instance = context.getInstance();
-    final WXDomObject domObject = context.getDomByRef(mRef);
-    if (domObject == null) {
-      if (instance != null) {
-               
WXExceptionUtils.commitCriticalExceptionRT(instance.getInstanceId(),
-                               WXErrorCode.WX_KEY_EXCEPTION_DOM_UPDATE_ATTRS,
-                               "updateAttr",
-                               
WXErrorCode.WX_KEY_EXCEPTION_DOM_UPDATE_ATTRS.getErrorMsg() + "domObject is 
null",null);
-      }
-      return;
-    }
-    domObject.getAttrs().filterBindingStatement(mData);
-    domObject.updateAttr(mData);
-    if(mData.size() > 0) {
-      context.postRenderTask(this);
-    }
-  }
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXComponent comp = context.getComponent(mRef);
-    if (comp == null) {
-      return;
-    }
-
-    comp.updateProperties(mData);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateComponentDataAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateComponentDataAction.java
 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateComponentDataAction.java
deleted file mode 100644
index 347c886..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateComponentDataAction.java
+++ /dev/null
@@ -1,69 +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.action;
-
-import android.text.TextUtils;
-
-import com.alibaba.fastjson.JSONObject;
-import com.taobao.weex.bridge.SimpleJSCallback;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.list.template.CellDataManager;
-import com.taobao.weex.ui.component.list.template.WXRecyclerTemplateList;
-import com.taobao.weex.utils.WXLogUtils;
-
-
-/**
- * Created by furture on 2018/1/23.
- */
-
-public class UpdateComponentDataAction implements RenderAction {
-
-    private String virtualComponentId;
-    private JSONObject data;
-    private String callback;
-
-    public UpdateComponentDataAction(String virtualComponentId,
-                                     JSONObject data, String callback) {
-        this.virtualComponentId = virtualComponentId;
-        this.data = data;
-        this.callback = callback;
-    }
-
-    @Override
-    public void executeRender(RenderActionContext context) {
-        String ref = CellDataManager.getListRef(virtualComponentId);
-        if(TextUtils.isEmpty(ref)){
-            WXLogUtils.e("wrong virtualComponentId split error " + 
virtualComponentId);
-            return;
-        }
-        WXComponent component = context.getComponent(ref);
-        if(component instanceof  WXRecyclerTemplateList){
-            WXRecyclerTemplateList templateList = (WXRecyclerTemplateList) 
component;
-            
templateList.getCellDataManager().updateVirtualComponentData(virtualComponentId,
 data);
-            templateList.notifyUpdateList();
-            SimpleJSCallback jsCallback = new 
SimpleJSCallback(component.getInstanceId(), callback);
-            jsCallback.invoke(true);
-        }else{
-            WXLogUtils.e("recycler-list wrong virtualComponentId " + 
virtualComponentId);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateFinishAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateFinishAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateFinishAction.java
deleted file mode 100644
index d9d5648..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateFinishAction.java
+++ /dev/null
@@ -1,46 +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.action;
-
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.adapter.IWXUserTrackAdapter;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-
-/**
- * Created by sospartan on 02/03/2017.
- */
-
-final class UpdateFinishAction implements DOMAction, RenderAction {
-  @Override
-  public void executeDom(DOMActionContext context) {
-    if (context.isDestory()) {
-      return;
-    }
-    context.postRenderTask(this);
-  }
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    context.getInstance().onUpdateFinish();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateStyleAction.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateStyleAction.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateStyleAction.java
deleted file mode 100644
index a289bca..0000000
--- 
a/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateStyleAction.java
+++ /dev/null
@@ -1,118 +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.action;
-
-import android.support.v4.util.ArrayMap;
-
-import com.alibaba.fastjson.JSONObject;
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.adapter.IWXUserTrackAdapter;
-import com.taobao.weex.common.Constants;
-import com.taobao.weex.common.WXErrorCode;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.DOMActionContext;
-import com.taobao.weex.dom.RenderAction;
-import com.taobao.weex.dom.RenderActionContext;
-import com.taobao.weex.dom.WXDomObject;
-import com.taobao.weex.dom.flex.Spacing;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.utils.WXExceptionUtils;
-
-import java.util.Map;
-
-/**
- * Created by sospartan on 28/02/2017.
- */
-
-class UpdateStyleAction extends TraceableAction implements DOMAction, 
RenderAction {
-  private final String mRef;
-  private final JSONObject mData;
-  private final boolean mIsCausedByPesudo;
-
-  private Spacing mPadding;
-  private Spacing mBorder;
-
-  UpdateStyleAction(String ref, JSONObject data) {
-    this(ref, data, false);
-  }
-
-  UpdateStyleAction(String ref, JSONObject data, boolean byPesudo) {
-    this.mRef = ref;
-    this.mData = data;
-    this.mIsCausedByPesudo = byPesudo;
-  }
-
-  @Override
-  public void executeDom(DOMActionContext context) {
-    if (context.isDestory() || mData == null) {
-      return;
-    }
-    WXSDKInstance instance = context.getInstance();
-    WXDomObject domObject = context.getDomByRef(mRef);
-    if (domObject == null) {
-      if (instance != null) {
-               
WXExceptionUtils.commitCriticalExceptionRT(instance.getInstanceId(),
-                               WXErrorCode.WX_KEY_EXCEPTION_DOM_UPDATE_STYLE,
-                               "updateStyle",
-                               
WXErrorCode.WX_KEY_EXCEPTION_DOM_UPDATE_STYLE.getErrorMsg() + "domObject is 
null",null);
-      }
-      return;
-    }
-    mPadding = domObject.getPadding();
-    mBorder = domObject.getBorder();
-
-    if(mData.get(WXDomObject.TRANSFORM) != null || 
mData.get(WXDomObject.TRANSFORM_ORIGIN) != null){
-      if(domObject.getTransition() == null) {
-        Map<String, Object> animationMap = new ArrayMap<>(2);
-        animationMap.put(WXDomObject.TRANSFORM, 
mData.get(WXDomObject.TRANSFORM));
-        animationMap.put(WXDomObject.TRANSFORM_ORIGIN, 
mData.get(WXDomObject.TRANSFORM_ORIGIN));
-        context.addAnimationForElement(mRef, animationMap);
-      }
-    }
-
-
-    if (!mData.isEmpty()) {
-      domObject.updateStyle(mData, mIsCausedByPesudo);
-      domObject.applyStyle(mData);
-      if(!mData.isEmpty()) {
-        context.postRenderTask(this);
-      }
-    }
-  }
-
-  @Override
-  public void executeRender(RenderActionContext context) {
-    WXComponent component = context.getComponent(mRef);
-    if (component == null) {
-      return;
-    }
-    component.updateProperties(mData);
-
-    if (mData.containsKey(Constants.Name.PADDING) ||
-        mData.containsKey(Constants.Name.PADDING_TOP) ||
-        mData.containsKey(Constants.Name.PADDING_LEFT) ||
-        mData.containsKey(Constants.Name.PADDING_RIGHT) ||
-        mData.containsKey(Constants.Name.PADDING_BOTTOM) ||
-        mData.containsKey(Constants.Name.BORDER_WIDTH)) {
-      Spacing padding = mPadding;
-      Spacing border = mBorder;
-      component.setPadding(padding, border);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSAlign.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSAlign.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSAlign.java
deleted file mode 100755
index 48cd13e..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSAlign.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Copyright (c) 2014, Facebook, Inc. All rights reserved. <p/> This source 
code is licensed under
- * the BSD-style license found in the LICENSE file in the root directory of 
this source tree. An
- * additional grant of patent rights can be found in the PATENTS file in the 
same directory.
- */
-package com.taobao.weex.dom.flex;
-
-public enum CSSAlign {
-  AUTO,
-  FLEX_START,
-  CENTER,
-  FLEX_END,
-  STRETCH,
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSConstants.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSConstants.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSConstants.java
deleted file mode 100755
index 911e5d6..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSConstants.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Copyright (c) 2014, Facebook, Inc. All rights reserved. <p/> This source 
code is licensed under
- * the BSD-style license found in the LICENSE file in the root directory of 
this source tree. An
- * additional grant of patent rights can be found in the PATENTS file in the 
same directory.
- */
-package com.taobao.weex.dom.flex;
-
-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/flex/CSSDirection.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSDirection.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSDirection.java
deleted file mode 100755
index 863e509..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSDirection.java
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * Copyright (c) 2014, Facebook, Inc. All rights reserved. <p/> This source 
code is licensed under
- * the BSD-style license found in the LICENSE file in the root directory of 
this source tree. An
- * additional grant of patent rights can be found in the PATENTS file in the 
same directory.
- */
-package com.taobao.weex.dom.flex;
-
-public enum CSSDirection {
-  INHERIT,
-  LTR,
-  RTL,
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSFlexDirection.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSFlexDirection.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSFlexDirection.java
deleted file mode 100755
index 0452665..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSFlexDirection.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Copyright (c) 2014, Facebook, Inc. All rights reserved. <p/> This source 
code is licensed under
- * the BSD-style license found in the LICENSE file in the root directory of 
this source tree. An
- * additional grant of patent rights can be found in the PATENTS file in the 
same directory.
- */
-package com.taobao.weex.dom.flex;
-
-public enum CSSFlexDirection {
-  COLUMN,
-  COLUMN_REVERSE,
-  ROW,
-  ROW_REVERSE
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSJustify.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSJustify.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSJustify.java
deleted file mode 100755
index 6d997f5..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSJustify.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Copyright (c) 2014, Facebook, Inc. All rights reserved. <p/> This source 
code is licensed under
- * the BSD-style license found in the LICENSE file in the root directory of 
this source tree. An
- * additional grant of patent rights can be found in the PATENTS file in the 
same directory.
- */
-package com.taobao.weex.dom.flex;
-
-public enum CSSJustify {
-  FLEX_START,
-  CENTER,
-  FLEX_END,
-  SPACE_BETWEEN,
-  SPACE_AROUND,
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSLayout.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSLayout.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSLayout.java
deleted file mode 100755
index 0e055cd..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSLayout.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Copyright (c) 2014, Facebook, Inc. All rights reserved. <p/> This source 
code is licensed under
- * the BSD-style license found in the LICENSE file in the root directory of 
this source tree. An
- * additional grant of patent rights can be found in the PATENTS file in the 
same directory.
- */
-package com.taobao.weex.dom.flex;
-
-import java.util.Arrays;
-
-/**
- * Where the output of {@link LayoutEngine#layoutNode(CSSLayoutContext, 
CSSNode, float,
- * CSSDirection)} will go in the CSSNode.
- */
-public class CSSLayout {
-
-  public static final int POSITION_LEFT = 0;
-  public static final int POSITION_TOP = 1;
-  public static final int POSITION_RIGHT = 2;
-  public static final int POSITION_BOTTOM = 3;
-
-  public static final int DIMENSION_WIDTH = 0;
-  public static final int DIMENSION_HEIGHT = 1;
-
-  public float[] position = new float[4];
-  public float[] dimensions = new float[2];
-  public CSSDirection direction = CSSDirection.LTR;
-
-  /**
-   * This should always get called before calling {@link 
LayoutEngine#layoutNode(CSSLayoutContext,
-   * CSSNode, float, CSSDirection)}
-   */
-  public void resetResult() {
-    Arrays.fill(position, 0);
-    Arrays.fill(dimensions, CSSConstants.UNDEFINED);
-    direction = CSSDirection.LTR;
-  }
-
-  public void copy(CSSLayout layout) {
-    position[POSITION_LEFT] = layout.position[POSITION_LEFT];
-    position[POSITION_TOP] = layout.position[POSITION_TOP];
-    position[POSITION_RIGHT] = layout.position[POSITION_RIGHT];
-    position[POSITION_BOTTOM] = layout.position[POSITION_BOTTOM];
-    dimensions[DIMENSION_WIDTH] = layout.dimensions[DIMENSION_WIDTH];
-    dimensions[DIMENSION_HEIGHT] = layout.dimensions[DIMENSION_HEIGHT];
-    direction = layout.direction;
-  }
-
-  @Override
-  public String toString() {
-    return "layout: {" +
-           "left: " + position[POSITION_LEFT] + ", " +
-           "top: " + position[POSITION_TOP] + ", " +
-           "width: " + dimensions[DIMENSION_WIDTH] + ", " +
-           "height: " + dimensions[DIMENSION_HEIGHT] + ", " +
-           "direction: " + direction +
-           "}";
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if(this == o){
-      return true;
-    }
-    if(o instanceof CSSLayout){
-      CSSLayout cl = (CSSLayout)o;
-      return 
FloatUtil.floatsEqual(cl.position[POSITION_LEFT],this.position[POSITION_LEFT]) 
&&
-              
FloatUtil.floatsEqual(cl.position[POSITION_TOP],this.position[POSITION_TOP])  &&
-              
FloatUtil.floatsEqual(cl.position[POSITION_RIGHT],this.position[POSITION_RIGHT])
 &&
-              
FloatUtil.floatsEqual(cl.position[POSITION_BOTTOM],this.position[POSITION_BOTTOM])
 &&
-              
FloatUtil.floatsEqual(cl.dimensions[DIMENSION_HEIGHT],this.dimensions[DIMENSION_HEIGHT])
 &&
-              
FloatUtil.floatsEqual(cl.dimensions[DIMENSION_WIDTH],this.dimensions[DIMENSION_WIDTH]);
-
-    }
-    return false;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSLayoutContext.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSLayoutContext.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSLayoutContext.java
deleted file mode 100755
index 9eee51a..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/dom/flex/CSSLayoutContext.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Copyright (c) 2014, Facebook, Inc. All rights reserved. <p/> This source 
code is licensed under
- * the BSD-style license found in the LICENSE file in the root directory of 
this source tree. An
- * additional grant of patent rights can be found in the PATENTS file in the 
same directory.
- */
-package com.taobao.weex.dom.flex;
-
-/**
- * A context for holding values local to a given instance of layout 
computation.
- *
- * This is necessary for making layout thread-safe. A separate instance should
- * be used when {@link CSSNode#calculateLayout} is called concurrently on
- * different node hierarchies.
- */
-public class CSSLayoutContext {
-
-  /*package*/ final MeasureOutput measureOutput = new MeasureOutput();
-}

Reply via email to