You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by cx...@apache.org on 2018/06/19 09:41:02 UTC

[15/50] [abbrv] incubator-weex git commit: [WEEX-442][Core] Remove unless include

[WEEX-442][Core] Remove unless include


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

Branch: refs/heads/release
Commit: 1940651026839f875ac66d101ae30caaae6fc8d6
Parents: 3dcab42
Author: miomin <mi...@foxmail.com>
Authored: Fri Jun 8 11:47:46 2018 +0800
Committer: YorkShen <sh...@gmail.com>
Committed: Tue Jun 12 12:44:03 2018 +0800

----------------------------------------------------------------------
 weex_core/Source/CMakeLists.txt                 |   7 +
 .../native_render_object_utils_impl_android.cpp |   1 +
 .../Source/core/render/action/render_action.h   |   9 +-
 .../render/action/render_action_add_element.cpp |  24 +-
 .../render/action/render_action_add_element.h   |  22 +-
 .../render/action/render_action_add_event.cpp   |  11 +-
 .../render/action/render_action_add_event.h     |   9 +-
 .../render_action_appendtree_createfinish.cpp   |  11 +-
 .../render_action_appendtree_createfinish.h     |   6 +-
 .../render/action/render_action_createbody.cpp  |  19 +-
 .../render/action/render_action_createbody.h    |  17 +-
 .../action/render_action_createfinish.cpp       |   7 +-
 .../render/action/render_action_createfinish.h  |   6 +-
 .../core/render/action/render_action_layout.cpp |  15 +-
 .../core/render/action/render_action_layout.h   |  16 +-
 .../action/render_action_move_element.cpp       |  13 +-
 .../render/action/render_action_move_element.h  |   8 +-
 .../action/render_action_remove_element.cpp     |  11 +-
 .../action/render_action_remove_element.h       |   6 +-
 .../action/render_action_remove_event.cpp       |  15 +-
 .../render/action/render_action_remove_event.h  |   9 +-
 .../render/action/render_action_update_attr.cpp |   8 +-
 .../render/action/render_action_update_attr.h   |   9 +-
 .../action/render_action_update_style.cpp       |  14 +-
 .../render/action/render_action_update_style.h  |  15 +-
 .../core/render/manager/render_manager.cpp      |  23 +-
 .../Source/core/render/manager/render_manager.h |  12 +-
 .../core/render/node/factory/i_render_factory.h |   2 +-
 .../core/render/node/factory/i_render_object.h  |  13 +-
 .../render/node/factory/render_appbar_factory.h |   4 +-
 .../render/node/factory/render_cell_factory.h   |   4 +-
 .../core/render/node/factory/render_creator.cpp |  37 +-
 .../node/factory/render_indicator_factory.h     |  36 --
 .../render/node/factory/render_input_factory.h  |  36 --
 .../render/node/factory/render_list_factory.h   |   4 +-
 .../render/node/factory/render_mask_factory.h   |   4 +-
 .../node/factory/render_scroller_factory.h      |   4 +-
 .../render/node/factory/render_switch_factory.h |  36 --
 .../render/node/factory/render_text_factory.h   |   4 +-
 .../node/factory/render_textarea_factory.h      |  36 --
 .../core/render/node/factory/render_type.h      |   4 -
 .../render/node/factory/simple_render_factory.h |   4 +-
 .../Source/core/render/node/render_appbar.cpp   |  85 +++++
 .../Source/core/render/node/render_appbar.h     |  62 +---
 weex_core/Source/core/render/node/render_cell.h |   2 +-
 .../Source/core/render/node/render_indicator.h  |  30 --
 .../Source/core/render/node/render_input.h      |  30 --
 .../Source/core/render/node/render_list.cpp     | 319 +++++++++++++++++
 weex_core/Source/core/render/node/render_list.h | 319 ++---------------
 .../Source/core/render/node/render_mask.cpp     |  54 +++
 weex_core/Source/core/render/node/render_mask.h |  28 +-
 .../Source/core/render/node/render_object.cpp   | 323 ++++++++++++++++-
 .../Source/core/render/node/render_object.h     | 348 ++-----------------
 .../Source/core/render/node/render_scroller.cpp |  51 +++
 .../Source/core/render/node/render_scroller.h   |  34 +-
 .../Source/core/render/node/render_switch.h     |  30 --
 .../Source/core/render/node/render_text.cpp     |  34 ++
 weex_core/Source/core/render/node/render_text.h |  16 +-
 .../Source/core/render/node/render_textarea.h   |  30 --
 .../Source/core/render/page/render_page.cpp     | 124 ++++---
 weex_core/Source/core/render/page/render_page.h |  58 ++--
 61 files changed, 1278 insertions(+), 1250 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/weex_core/Source/CMakeLists.txt b/weex_core/Source/CMakeLists.txt
index d0ef00c..6cb9c18 100644
--- a/weex_core/Source/CMakeLists.txt
+++ b/weex_core/Source/CMakeLists.txt
@@ -19,8 +19,15 @@ set(COMMON_SRCS
 
   ./core/render/manager/render_manager.cpp
   ./core/render/page/render_page.cpp
+
   ./core/render/node/render_object.cpp
   ./core/render/node/factory/render_creator.cpp
+  ./core/render/node/render_appbar.cpp
+  ./core/render/node/render_list.cpp
+  ./core/render/node/render_mask.cpp
+  ./core/render/node/render_scroller.cpp
+  ./core/render/node/render_text.cpp
+
   ./core/render/action/render_action_add_event.cpp
   ./core/render/action/render_action_remove_event.cpp
   ./core/render/action/render_action_add_element.cpp

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp b/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp
index dbf28a8..9fc1a39 100644
--- a/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp
@@ -29,6 +29,7 @@
 #include <android/log.h>
 #include <core/render/node/render_list.h>
 #include <android/base/log_utils.h>
+#include <core/config/core_environment.h>
 
 
 using namespace WeexCore;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action.h b/weex_core/Source/core/render/action/render_action.h
index 4cee828..e5e3cbc 100644
--- a/weex_core/Source/core/render/action/render_action.h
+++ b/weex_core/Source/core/render/action/render_action.h
@@ -19,16 +19,9 @@
 #ifndef WEEXV8_RENDERACTION_H
 #define WEEXV8_RENDERACTION_H
 
-#include <core/layout/layout.h>
-#include <core/render/node/render_object.h>
-#include <core/render/manager/render_manager.h>
-#include <core/render/page/render_page.h>
-#include <string>
-#include <base/TimeUtils.h>
-
 namespace WeexCore {
 
-  class render_action {
+  class RenderAction {
   public:
     virtual void ExecuteAction() = 0;
   };

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_add_element.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_add_element.cpp b/weex_core/Source/core/render/action/render_action_add_element.cpp
index 8a69fe5..66dcbfb 100644
--- a/weex_core/Source/core/render/action/render_action_add_element.cpp
+++ b/weex_core/Source/core/render/action/render_action_add_element.cpp
@@ -16,13 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include <core/manager/weex_core_manager.h>
-#include "render_action_add_element.h"
+
+#include "core/render/node/render_object.h"
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_add_element.h"
 
 namespace WeexCore {
 
-  RenderActionAddElement::RenderActionAddElement(const std::string &pageId, const RenderObject *render,
-                                                 const RenderObject *parent, int index, bool willLayout) {
+  RenderActionAddElement::RenderActionAddElement(const std::string &pageId,
+                                                 const RenderObject *render,
+                                                 const RenderObject *parent, int index,
+                                                 bool willLayout) {
     this->mAttributes = render->Attributes();
     this->mStyles = render->Styles();
     this->mEvents = render->Events();
@@ -38,8 +42,14 @@ namespace WeexCore {
   }
 
   void RenderActionAddElement::ExecuteAction() {
-      WeexCoreManager::getInstance()->getPlatformBridge()->callAddElement(mPageId.c_str(), mComponentType.c_str(), mRef.c_str(),
-                                                                          mIndex, mParentRef.c_str(), mStyles, mAttributes,
-                                                                          mEvents, mMargins, mPaddings, mBorders, mWillLayout);
+    WeexCoreManager::getInstance()->getPlatformBridge()->callAddElement(mPageId.c_str(),
+                                                                        mComponentType.c_str(),
+                                                                        mRef.c_str(),
+                                                                        mIndex, mParentRef.c_str(),
+                                                                        mStyles,
+                                                                        mAttributes,
+                                                                        mEvents, mMargins,
+                                                                        mPaddings, mBorders,
+                                                                        mWillLayout);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_add_element.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_add_element.h b/weex_core/Source/core/render/action/render_action_add_element.h
index 07968fc..2b9f553 100644
--- a/weex_core/Source/core/render/action/render_action_add_element.h
+++ b/weex_core/Source/core/render/action/render_action_add_element.h
@@ -19,22 +19,30 @@
 #ifndef WEEX_PROJECT_ADDELEMENTACTION_H
 #define WEEX_PROJECT_ADDELEMENTACTION_H
 
-#include "render_action.h"
+#include <string>
+#include <map>
+#include <set>
+
+#include "core/render/action/render_action.h"
+#include "core/layout/style.h"
 
 namespace WeexCore {
 
-  class RenderActionAddElement : public render_action {
+  class RenderObject;
+
+  class RenderActionAddElement : public RenderAction {
 
   public:
-    explicit RenderActionAddElement(const std::string &pageId, const RenderObject *render, const RenderObject *parent,
-                           int index, bool willLayout= true);
+    explicit RenderActionAddElement(const std::string &pageId, const RenderObject *render,
+                                    const RenderObject *parent,
+                                    int index, bool willLayout = true);
 
     void ExecuteAction();
 
   public:
-    StylesMap *mStyles;
-    AttributesMap *mAttributes;
-    EventsSet *mEvents;
+    std::map<std::string, std::string> *mStyles;
+    std::map<std::string, std::string> *mAttributes;
+    std::set<std::string> *mEvents;
     WXCoreMargin mMargins;
     WXCorePadding mPaddings;
     WXCoreBorderWidth mBorders;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_add_event.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_add_event.cpp b/weex_core/Source/core/render/action/render_action_add_event.cpp
index 0d210d0..8005daa 100644
--- a/weex_core/Source/core/render/action/render_action_add_event.cpp
+++ b/weex_core/Source/core/render/action/render_action_add_event.cpp
@@ -16,19 +16,22 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include <core/manager/weex_core_manager.h>
-#include "render_action_add_event.h"
+
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_add_event.h"
 
 namespace WeexCore {
 
-  RenderActionAddEvent::RenderActionAddEvent(const std::string &pageId, const std::string &ref, const std::string &event) {
+  RenderActionAddEvent::RenderActionAddEvent(const std::string &pageId, const std::string &ref,
+                                             const std::string &event) {
     this->mPageId = pageId;
     this->mRef = ref;
     this->mEvent = event;
   }
 
   void RenderActionAddEvent::ExecuteAction() {
-      WeexCoreManager::getInstance()->getPlatformBridge()->callAddEvent(mPageId.c_str(), mRef.c_str(), mEvent.c_str());
+    WeexCoreManager::getInstance()->getPlatformBridge()->callAddEvent(mPageId.c_str(), mRef.c_str(),
+                                                                      mEvent.c_str());
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_add_event.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_add_event.h b/weex_core/Source/core/render/action/render_action_add_event.h
index 0de206b..88ad40f 100644
--- a/weex_core/Source/core/render/action/render_action_add_event.h
+++ b/weex_core/Source/core/render/action/render_action_add_event.h
@@ -19,14 +19,17 @@
 #ifndef WEEX_PROJECT_ADDEVENTACTION_H
 #define WEEX_PROJECT_ADDEVENTACTION_H
 
-#include "render_action.h"
+#include <string>
+
+#include "core/render/action/render_action.h"
 
 namespace WeexCore {
 
-  class RenderActionAddEvent : public render_action {
+  class RenderActionAddEvent : public RenderAction {
 
   public:
-    explicit RenderActionAddEvent(const std::string &pageId, const std::string &ref, const std::string &event);
+    explicit RenderActionAddEvent(const std::string &pageId, const std::string &ref,
+                                  const std::string &event);
 
     void ExecuteAction();
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/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
index e7b3999..045f0b6 100644
--- a/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp
+++ b/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp
@@ -16,17 +16,20 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include "render_action_appendtree_createfinish.h"
-#include <core/manager/weex_core_manager.h>
+
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_appendtree_createfinish.h"
 
 namespace WeexCore {
 
-  RenderActionAppendTreeCreateFinish::RenderActionAppendTreeCreateFinish(const std::string &pageId, const std::string &ref) {
+  RenderActionAppendTreeCreateFinish::RenderActionAppendTreeCreateFinish(const std::string &pageId,
+                                                                         const std::string &ref) {
     this->mPageId = pageId;
     this->mRef = ref;
   }
 
   void RenderActionAppendTreeCreateFinish::ExecuteAction() {
-    WeexCoreManager::getInstance()->getPlatformBridge()->callAppendTreeCreateFinish(mPageId.c_str(), mRef.c_str());
+    WeexCoreManager::getInstance()->getPlatformBridge()->callAppendTreeCreateFinish(mPageId.c_str(),
+                                                                                    mRef.c_str());
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/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
index cdc968c..04cae26 100644
--- a/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h
+++ b/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h
@@ -19,11 +19,13 @@
 #ifndef WEEX_CORE_RENDER_ACTION_APPENDTREE_CREATEFINISH_H
 #define WEEX_CORE_RENDER_ACTION_APPENDTREE_CREATEFINISH_H
 
-#include "render_action.h"
+#include <string>
+
+#include "core/render/action/render_action.h"
 
 namespace WeexCore {
 
-  class RenderActionAppendTreeCreateFinish : public render_action {
+  class RenderActionAppendTreeCreateFinish : public RenderAction {
 
   public:
     explicit RenderActionAppendTreeCreateFinish(const std::string &pageId, const std::string &ref);

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_createbody.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_createbody.cpp b/weex_core/Source/core/render/action/render_action_createbody.cpp
index 289cb31..2efd6f0 100644
--- a/weex_core/Source/core/render/action/render_action_createbody.cpp
+++ b/weex_core/Source/core/render/action/render_action_createbody.cpp
@@ -16,12 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include <core/manager/weex_core_manager.h>
-#include "render_action_createbody.h"
+
+#include "core/render/node/render_object.h"
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_createbody.h"
 
 namespace WeexCore {
 
-  RenderActionCreateBody::RenderActionCreateBody(const std::string &pageId, const RenderObject *render) {
+  RenderActionCreateBody::RenderActionCreateBody(const std::string &pageId,
+                                                 const RenderObject *render) {
     this->mAttributes = render->Attributes();
     this->mStyles = render->Styles();
     this->mEvents = render->Events();
@@ -34,8 +37,12 @@ namespace WeexCore {
   }
 
   void RenderActionCreateBody::ExecuteAction() {
-      WeexCoreManager::getInstance()->getPlatformBridge()->callCreateBody(mPageId.c_str(), mComponentType.c_str(), mRef.c_str(),
-                                                                          mStyles, mAttributes, mEvents,
-                                                                          mMargins, mPaddings, mBorders);
+    WeexCoreManager::getInstance()->getPlatformBridge()->callCreateBody(mPageId.c_str(),
+                                                                        mComponentType.c_str(),
+                                                                        mRef.c_str(),
+                                                                        mStyles, mAttributes,
+                                                                        mEvents,
+                                                                        mMargins, mPaddings,
+                                                                        mBorders);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_createbody.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_createbody.h b/weex_core/Source/core/render/action/render_action_createbody.h
index 90b9827..623b5a0 100644
--- a/weex_core/Source/core/render/action/render_action_createbody.h
+++ b/weex_core/Source/core/render/action/render_action_createbody.h
@@ -19,10 +19,17 @@
 #ifndef WEEX_PROJECT_CREATEBODYACTION_H
 #define WEEX_PROJECT_CREATEBODYACTION_H
 
-#include "render_action.h"
+#include <string>
+#include <map>
+#include <set>
+
+#include "core/render/action/render_action.h"
 
 namespace WeexCore {
-  class RenderActionCreateBody : public render_action {
+
+  class RenderObject;
+
+  class RenderActionCreateBody : public RenderAction {
 
   public:
     explicit RenderActionCreateBody(const std::string &pageId, const RenderObject *render);
@@ -30,9 +37,9 @@ namespace WeexCore {
     void ExecuteAction();
 
   public:
-    StylesMap *mStyles;
-    AttributesMap *mAttributes;
-    EventsSet *mEvents;
+    std::map<std::string, std::string> *mStyles;
+    std::map<std::string, std::string> *mAttributes;
+    std::set<std::string> *mEvents;
     WXCoreMargin mMargins;
     WXCorePadding mPaddings;
     WXCoreBorderWidth mBorders;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_createfinish.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_createfinish.cpp b/weex_core/Source/core/render/action/render_action_createfinish.cpp
index 9c2b9fe..13559c1 100644
--- a/weex_core/Source/core/render/action/render_action_createfinish.cpp
+++ b/weex_core/Source/core/render/action/render_action_createfinish.cpp
@@ -16,8 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include <core/manager/weex_core_manager.h>
-#include "render_action_createfinish.h"
+
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_createfinish.h"
 
 namespace WeexCore {
 
@@ -26,6 +27,6 @@ namespace WeexCore {
   }
 
   void RenderActionCreateFinish::ExecuteAction() {
-      WeexCoreManager::getInstance()->getPlatformBridge()->callCreateFinish(mPageId.c_str());
+    WeexCoreManager::getInstance()->getPlatformBridge()->callCreateFinish(mPageId.c_str());
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_createfinish.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_createfinish.h b/weex_core/Source/core/render/action/render_action_createfinish.h
index 0b3407e..9beb99a 100644
--- a/weex_core/Source/core/render/action/render_action_createfinish.h
+++ b/weex_core/Source/core/render/action/render_action_createfinish.h
@@ -19,11 +19,13 @@
 #ifndef WEEX_PROJECT_CREATEFINISHACTION_H
 #define WEEX_PROJECT_CREATEFINISHACTION_H
 
-#include "render_action.h"
+#include <string>
+
+#include "core/render/action/render_action.h"
 
 namespace WeexCore {
 
-  class RenderActionCreateFinish : public render_action {
+  class RenderActionCreateFinish : public RenderAction {
 
   public:
     explicit RenderActionCreateFinish(const std::string &pageId);

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_layout.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_layout.cpp b/weex_core/Source/core/render/action/render_action_layout.cpp
index 67b34b9..366c6ba 100644
--- a/weex_core/Source/core/render/action/render_action_layout.cpp
+++ b/weex_core/Source/core/render/action/render_action_layout.cpp
@@ -16,12 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include <core/manager/weex_core_manager.h>
-#include "render_action_layout.h"
+
+#include "core/render/node/render_object.h"
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_layout.h"
 
 namespace WeexCore {
 
-  RenderActionLayout::RenderActionLayout(const std::string &pageId, const RenderObject *render,int index) {
+  RenderActionLayout::RenderActionLayout(const std::string &pageId, const RenderObject *render,
+                                         int index) {
     this->mPageId = pageId;
     this->mRef = render->Ref();
     this->index = index;
@@ -29,9 +32,9 @@ namespace WeexCore {
   }
 
   void RenderActionLayout::ExecuteAction() {
-      WeexCoreManager::getInstance()->getPlatformBridge()->callLayout(mPageId.c_str(), mRef.c_str(),
-                                                                      mTop, mBottom, mLeft, mRight,
-                                                                      mHeight, mWidth, index);
+    WeexCoreManager::getInstance()->getPlatformBridge()->callLayout(mPageId.c_str(), mRef.c_str(),
+                                                                    mTop, mBottom, mLeft, mRight,
+                                                                    mHeight, mWidth, index);
   }
 
   void RenderActionLayout::GetLayoutInfo(const WXCoreLayoutNode *node) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_layout.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_layout.h b/weex_core/Source/core/render/action/render_action_layout.h
index 868e476..18eeb5b 100644
--- a/weex_core/Source/core/render/action/render_action_layout.h
+++ b/weex_core/Source/core/render/action/render_action_layout.h
@@ -19,21 +19,29 @@
 #ifndef WEEX_PROJECT_RELAYOUTRENDERACTION_H
 #define WEEX_PROJECT_RELAYOUTRENDERACTION_H
 
-#include "render_action.h"
+#include <string>
+#include <set>
+
+#include "core/render/action/render_action.h"
 
 namespace WeexCore {
 
-  class RenderActionLayout : public render_action {
+  class RenderObject;
+
+  class WXCoreLayoutNode;
+
+  class RenderActionLayout : public RenderAction {
 
   public:
-    explicit RenderActionLayout(const std::string &pageId, const RenderObject *render, const int index);
+    explicit RenderActionLayout(const std::string &pageId, const RenderObject *render,
+                                const int index);
 
     void ExecuteAction();
 
     void GetLayoutInfo(const WXCoreLayoutNode *node);
 
   public:
-    EventsSet *mEvents;
+    std::set<std::string> *mEvents;
     std::string mPageId;
     std::string mRef;
     float mWidth;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_move_element.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_move_element.cpp b/weex_core/Source/core/render/action/render_action_move_element.cpp
index 5c80218..ca2b88e 100644
--- a/weex_core/Source/core/render/action/render_action_move_element.cpp
+++ b/weex_core/Source/core/render/action/render_action_move_element.cpp
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include <core/manager/weex_core_manager.h>
-#include "render_action_move_element.h"
+
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_move_element.h"
 
 namespace WeexCore {
 
-  RenderActionMoveElement::RenderActionMoveElement(const std::string &pageId, const std::string &ref,
+  RenderActionMoveElement::RenderActionMoveElement(const std::string &pageId,
+                                                   const std::string &ref,
                                                    const std::string &parentRef, int index) {
     this->mPageId = pageId;
     this->mRef = ref;
@@ -30,6 +32,9 @@ namespace WeexCore {
   }
 
   void RenderActionMoveElement::ExecuteAction() {
-    WeexCoreManager::getInstance()->getPlatformBridge()->callMoveElement(mPageId.c_str(), mRef.c_str(), mParentRef.c_str(), mIndex);
+    WeexCoreManager::getInstance()->getPlatformBridge()->callMoveElement(mPageId.c_str(),
+                                                                         mRef.c_str(),
+                                                                         mParentRef.c_str(),
+                                                                         mIndex);
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_move_element.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_move_element.h b/weex_core/Source/core/render/action/render_action_move_element.h
index 56db80b..cc0fced 100644
--- a/weex_core/Source/core/render/action/render_action_move_element.h
+++ b/weex_core/Source/core/render/action/render_action_move_element.h
@@ -19,15 +19,17 @@
 #ifndef WEEX_PROJECT_RENDERACTIONMOVEELEMENT_H
 #define WEEX_PROJECT_RENDERACTIONMOVEELEMENT_H
 
-#include "render_action.h"
+#include <string>
+
+#include "core/render/action/render_action.h"
 
 namespace WeexCore {
 
-  class RenderActionMoveElement : public render_action {
+  class RenderActionMoveElement : public RenderAction {
 
   public:
     explicit RenderActionMoveElement(const std::string &pageId, const std::string &ref,
-                            const std::string &parentRef, int index);
+                                     const std::string &parentRef, int index);
 
     void ExecuteAction();
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_remove_element.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_remove_element.cpp b/weex_core/Source/core/render/action/render_action_remove_element.cpp
index 3557438..ba17af5 100644
--- a/weex_core/Source/core/render/action/render_action_remove_element.cpp
+++ b/weex_core/Source/core/render/action/render_action_remove_element.cpp
@@ -16,17 +16,20 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include <core/manager/weex_core_manager.h>
-#include "render_action_remove_element.h"
+
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_remove_element.h"
 
 namespace WeexCore {
 
-  RenderActionRemoveElement::RenderActionRemoveElement(const std::string &pageId, const std::string &ref) {
+  RenderActionRemoveElement::RenderActionRemoveElement(const std::string &pageId,
+                                                       const std::string &ref) {
     this->mPageId = pageId;
     this->mRef = ref;
   }
 
   void RenderActionRemoveElement::ExecuteAction() {
-      WeexCoreManager::getInstance()->getPlatformBridge()->callRemoveElement(mPageId.c_str(), mRef.c_str());
+    WeexCoreManager::getInstance()->getPlatformBridge()->callRemoveElement(mPageId.c_str(),
+                                                                           mRef.c_str());
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_remove_element.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_remove_element.h b/weex_core/Source/core/render/action/render_action_remove_element.h
index d4342f1..b8d50b3 100644
--- a/weex_core/Source/core/render/action/render_action_remove_element.h
+++ b/weex_core/Source/core/render/action/render_action_remove_element.h
@@ -19,11 +19,13 @@
 #ifndef WEEX_PROJECT_RENDERACTIONREMOVEELEMENT_H
 #define WEEX_PROJECT_RENDERACTIONREMOVEELEMENT_H
 
-#include "render_action.h"
+#include <string>
+
+#include "core/render/action/render_action.h"
 
 namespace WeexCore {
 
-  class RenderActionRemoveElement : public render_action {
+  class RenderActionRemoveElement : public RenderAction {
   public:
     explicit RenderActionRemoveElement(const std::string &pageId, const std::string &ref);
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_remove_event.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_remove_event.cpp b/weex_core/Source/core/render/action/render_action_remove_event.cpp
index 5588112..06e21d4 100644
--- a/weex_core/Source/core/render/action/render_action_remove_event.cpp
+++ b/weex_core/Source/core/render/action/render_action_remove_event.cpp
@@ -16,20 +16,23 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include "render_action_remove_event.h"
-#include <core/manager/weex_core_manager.h>
+
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_remove_event.h"
 
 namespace WeexCore {
 
-  RenderActionRemoveEvent::RenderActionRemoveEvent(const std::string &pageId, const std::string &ref, const std::string &event) {
+  RenderActionRemoveEvent::RenderActionRemoveEvent(const std::string &pageId,
+                                                   const std::string &ref,
+                                                   const std::string &event) {
     this->mPageId = pageId;
     this->mRef = ref;
     this->mEvent = event;
   }
 
   void RenderActionRemoveEvent::ExecuteAction() {
-      WeexCoreManager::getInstance()->getPlatformBridge()->callRemoveEvent(mPageId.c_str(), mRef.c_str(), mEvent.c_str());
-    //Bridge_Impl_Android::getInstance()->callRemoveEvent(mPageId.c_str(), mRef.c_str(), mEvent.c_str());
+    WeexCoreManager::getInstance()->getPlatformBridge()->callRemoveEvent(mPageId.c_str(),
+                                                                         mRef.c_str(),
+                                                                         mEvent.c_str());
   }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_remove_event.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_remove_event.h b/weex_core/Source/core/render/action/render_action_remove_event.h
index 47ffe78..a772a6a 100644
--- a/weex_core/Source/core/render/action/render_action_remove_event.h
+++ b/weex_core/Source/core/render/action/render_action_remove_event.h
@@ -19,14 +19,17 @@
 #ifndef WEEX_PROJECT_REMOVEEVENTACTION_H
 #define WEEX_PROJECT_REMOVEEVENTACTION_H
 
-#include "render_action.h"
+#include <string>
+
+#include "core/render/action/render_action.h"
 
 namespace WeexCore {
 
-  class RenderActionRemoveEvent : public render_action {
+  class RenderActionRemoveEvent : public RenderAction {
 
   public:
-    explicit RenderActionRemoveEvent(const std::string &pageId, const std::string &ref, const std::string &event);
+    explicit RenderActionRemoveEvent(const std::string &pageId, const std::string &ref,
+                                     const std::string &event);
 
     void ExecuteAction();
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_update_attr.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_update_attr.cpp b/weex_core/Source/core/render/action/render_action_update_attr.cpp
index c662c1d..7aa6d3f 100644
--- a/weex_core/Source/core/render/action/render_action_update_attr.cpp
+++ b/weex_core/Source/core/render/action/render_action_update_attr.cpp
@@ -16,8 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include <core/manager/weex_core_manager.h>
-#include "render_action_update_attr.h"
+
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_update_attr.h"
 
 namespace WeexCore {
 
@@ -29,6 +30,7 @@ namespace WeexCore {
   }
 
   void RenderActionUpdateAttr::ExecuteAction() {
-      WeexCoreManager::getInstance()->getPlatformBridge()->callUpdateAttr(mPageId.c_str(), mRef.c_str(), mAttrs);
+    WeexCoreManager::getInstance()->getPlatformBridge()->callUpdateAttr(mPageId.c_str(),
+                                                                        mRef.c_str(), mAttrs);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_update_attr.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_update_attr.h b/weex_core/Source/core/render/action/render_action_update_attr.h
index c9eeec1..3e74c01 100644
--- a/weex_core/Source/core/render/action/render_action_update_attr.h
+++ b/weex_core/Source/core/render/action/render_action_update_attr.h
@@ -19,15 +19,18 @@
 #ifndef WEEX_PROJECT_UPDATEATTRACTION_H
 #define WEEX_PROJECT_UPDATEATTRACTION_H
 
-#include "render_action.h"
+#include <string>
+#include <vector>
+
+#include "core/render/action/render_action.h"
 
 namespace WeexCore {
 
-  class RenderActionUpdateAttr : public render_action {
+  class RenderActionUpdateAttr : public RenderAction {
 
   public:
     explicit RenderActionUpdateAttr(const std::string &pageId, const std::string &ref,
-                           std::vector<std::pair<std::string, std::string>> *mAttrs);
+                                    std::vector<std::pair<std::string, std::string>> *mAttrs);
 
     void ExecuteAction();
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_update_style.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_update_style.cpp b/weex_core/Source/core/render/action/render_action_update_style.cpp
index e694db5..9b2f6a2 100644
--- a/weex_core/Source/core/render/action/render_action_update_style.cpp
+++ b/weex_core/Source/core/render/action/render_action_update_style.cpp
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include <core/manager/weex_core_manager.h>
-#include "render_action_update_style.h"
+
+#include "core/manager/weex_core_manager.h"
+#include "core/render/action/render_action_update_style.h"
 
 namespace WeexCore {
 
-  RenderActionUpdateStyle::RenderActionUpdateStyle(const std::string &pageId, const std::string &ref,
+  RenderActionUpdateStyle::RenderActionUpdateStyle(const std::string &pageId,
+                                                   const std::string &ref,
                                                    std::vector<std::pair<std::string, std::string>> *style,
                                                    std::vector<std::pair<std::string, std::string>> *margin,
                                                    std::vector<std::pair<std::string, std::string>> *padding,
@@ -35,7 +37,9 @@ namespace WeexCore {
   }
 
   void RenderActionUpdateStyle::ExecuteAction() {
-      WeexCoreManager::getInstance()->getPlatformBridge()->callUpdateStyle(mPageId.c_str(), mRef.c_str(), mStyle, mMargin,
-                                                                           mPadding, mBorder);
+    WeexCoreManager::getInstance()->getPlatformBridge()->callUpdateStyle(mPageId.c_str(),
+                                                                         mRef.c_str(), mStyle,
+                                                                         mMargin,
+                                                                         mPadding, mBorder);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_update_style.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_update_style.h b/weex_core/Source/core/render/action/render_action_update_style.h
index e9d9f53..e2d6aa4 100644
--- a/weex_core/Source/core/render/action/render_action_update_style.h
+++ b/weex_core/Source/core/render/action/render_action_update_style.h
@@ -19,19 +19,22 @@
 #ifndef WEEX_PROJECT_UPDATESTYLEACTION_H
 #define WEEX_PROJECT_UPDATESTYLEACTION_H
 
-#include "render_action.h"
+#include <string>
+#include <vector>
+
+#include "core/render/action/render_action.h"
 
 namespace WeexCore {
 
-  class RenderActionUpdateStyle : public render_action {
+  class RenderActionUpdateStyle : public RenderAction {
 
   public:
 
     explicit RenderActionUpdateStyle(const std::string &pageId, const std::string &ref,
-                            std::vector<std::pair<std::string, std::string>> *style,
-                            std::vector<std::pair<std::string, std::string>> *margin,
-                            std::vector<std::pair<std::string, std::string>> *padding,
-                            std::vector<std::pair<std::string, std::string>> *border);
+                                     std::vector<std::pair<std::string, std::string>> *style,
+                                     std::vector<std::pair<std::string, std::string>> *margin,
+                                     std::vector<std::pair<std::string, std::string>> *padding,
+                                     std::vector<std::pair<std::string, std::string>> *border);
 
     void ExecuteAction();
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/manager/render_manager.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/manager/render_manager.cpp b/weex_core/Source/core/render/manager/render_manager.cpp
index d271b14..c25987d 100644
--- a/weex_core/Source/core/render/manager/render_manager.cpp
+++ b/weex_core/Source/core/render/manager/render_manager.cpp
@@ -16,17 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include <core/render/manager/render_manager.h>
-#include <core/render/page/render_page.h>
-#include <core/render/node/render_object.h>
-#include <base/TimeUtils.h>
-#include <core/parser/dom_wson.h>
+#include "core/render/manager/render_manager.h"
+#include "core/render/page/render_page.h"
+#include "core/render/node/render_object.h"
+#include "base/TimeUtils.h"
+#include "core/parser/dom_wson.h"
+#include "core/layout/measure_func_adapter.h"
 
 namespace WeexCore {
 
   RenderManager *RenderManager::m_pInstance = nullptr;
 
-  bool RenderManager::CreatePage(std::string pageId, const  char* data) {
+  bool RenderManager::CreatePage(std::string pageId, const char *data) {
 
 #if RENDER_LOG
     wson_parser parser(data);
@@ -45,7 +46,7 @@ namespace WeexCore {
   }
 
   bool RenderManager::AddRenderObject(const std::string &pageId, const std::string &parentRef,
-                                      int index, const char* data) {
+                                      int index, const char *data) {
 
     RenderPage *page = GetPage(pageId);
     if (page == nullptr)
@@ -99,7 +100,7 @@ namespace WeexCore {
   }
 
   bool RenderManager::UpdateAttr(const std::string &pageId, const std::string &ref,
-                                 const char* data) {
+                                 const char *data) {
     RenderPage *page = this->GetPage(pageId);
     if (page == nullptr)
       return false;
@@ -111,7 +112,7 @@ namespace WeexCore {
 #endif
 
     long long startTime = getCurrentTime();
-    std::vector<std::pair<std::string, std::string>> *attrs = Wson2Pairs(data);
+    std::vector <std::pair<std::string, std::string>> *attrs = Wson2Pairs(data);
     page->ParseJsonTime(getCurrentTime() - startTime);
 
     page->updateDirty(true);
@@ -119,7 +120,7 @@ namespace WeexCore {
   }
 
   bool RenderManager::UpdateStyle(const std::string &pageId, const std::string &ref,
-                                  const char* data) {
+                                  const char *data) {
     RenderPage *page = this->GetPage(pageId);
     if (page == nullptr)
       return false;
@@ -131,7 +132,7 @@ namespace WeexCore {
 #endif
 
     long long startTime = getCurrentTime();
-    std::vector<std::pair<std::string, std::string>> *styles = Wson2Pairs(data);
+    std::vector <std::pair<std::string, std::string>> *styles = Wson2Pairs(data);
     page->ParseJsonTime(getCurrentTime() - startTime);
 
     page->updateDirty(true);

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/manager/render_manager.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/manager/render_manager.h b/weex_core/Source/core/render/manager/render_manager.h
index 446001b..3ff9463 100644
--- a/weex_core/Source/core/render/manager/render_manager.h
+++ b/weex_core/Source/core/render/manager/render_manager.h
@@ -21,8 +21,6 @@
 
 #include <map>
 #include <string>
-#include <stdbool.h>
-#include <core/layout/measure_func_adapter.h>
 
 namespace WeexCore {
 
@@ -52,20 +50,20 @@ namespace WeexCore {
     void Batch(const std::string &pageId);
 
     // create root node
-    bool CreatePage(std::string pageId, const char* data);
+    bool CreatePage(std::string pageId, const char *data);
 
     /** use auto constructor is bad idea, it cann't transfer binary, use char* is better */
     bool AddRenderObject(const std::string &pageId, const std::string &parentRef, int index,
-                         const char* data);
+                         const char *data);
 
     bool RemoveRenderObject(const std::string &pageId, const std::string &ref);
 
     bool MoveRenderObject(const std::string &pageId, const std::string &ref,
-                     const std::string &parentRef, int index);
+                          const std::string &parentRef, int index);
 
-    bool UpdateAttr(const std::string &pageId, const std::string &ref, const char* data);
+    bool UpdateAttr(const std::string &pageId, const std::string &ref, const char *data);
 
-    bool UpdateStyle(const std::string &pageId, const std::string &ref, const char* data);
+    bool UpdateStyle(const std::string &pageId, const std::string &ref, const char *data);
 
     bool AddEvent(const std::string &pageId, const std::string &ref, const std::string &event);
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/i_render_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/i_render_factory.h b/weex_core/Source/core/render/node/factory/i_render_factory.h
index ea8cda6..f0e4451 100644
--- a/weex_core/Source/core/render/node/factory/i_render_factory.h
+++ b/weex_core/Source/core/render/node/factory/i_render_factory.h
@@ -19,7 +19,7 @@
 #ifndef WEEX_PROJECT_IRENDERFACTORY_H
 #define WEEX_PROJECT_IRENDERFACTORY_H
 
-#include "i_render_object.h"
+#include "core/render/node/factory/i_render_object.h"
 
 namespace WeexCore {
   class IRenderFactory {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/i_render_object.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/i_render_object.h b/weex_core/Source/core/render/node/factory/i_render_object.h
index 6d13569..da2df7f 100644
--- a/weex_core/Source/core/render/node/factory/i_render_object.h
+++ b/weex_core/Source/core/render/node/factory/i_render_object.h
@@ -20,7 +20,8 @@
 #define WEEX_PROJECT_IRENDEROBJECT_H
 
 #include <string>
-#include <core/layout/layout.h>
+
+#include "core/layout/layout.h"
 
 namespace WeexCore {
 
@@ -50,11 +51,11 @@ namespace WeexCore {
       return mType;
     }
 
-    void copyFrom(IRenderObject* src){
-        WXCoreLayoutNode::copyFrom(src);
-        SetRef(src->Ref());
-        SetPageId(src->PageId());
-        SetType(src->Type());
+    inline void copyFrom(IRenderObject *src) {
+      WXCoreLayoutNode::copyFrom(src);
+      SetRef(src->Ref());
+      SetPageId(src->PageId());
+      SetType(src->Type());
     }
 
   private:

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_appbar_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_appbar_factory.h b/weex_core/Source/core/render/node/factory/render_appbar_factory.h
index ab88c69..f8308d2 100644
--- a/weex_core/Source/core/render/node/factory/render_appbar_factory.h
+++ b/weex_core/Source/core/render/node/factory/render_appbar_factory.h
@@ -19,8 +19,8 @@
 #ifndef WEEX_PROJECT_RENDERAPPBARFACTORY_H
 #define WEEX_PROJECT_RENDERAPPBARFACTORY_H
 
-#include <core/render/node/render_appbar.h>
-#include "i_render_factory.h"
+#include "core/render/node/render_appbar.h"
+#include "core/render/node/factory/i_render_factory.h"
 
 namespace WeexCore {
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_cell_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_cell_factory.h b/weex_core/Source/core/render/node/factory/render_cell_factory.h
index 516df0b..7873cd3 100644
--- a/weex_core/Source/core/render/node/factory/render_cell_factory.h
+++ b/weex_core/Source/core/render/node/factory/render_cell_factory.h
@@ -19,8 +19,8 @@
 #ifndef WEEX_PROJECT_RENDERCELLFACTORY_H
 #define WEEX_PROJECT_RENDERCELLFACTORY_H
 
-#include <core/render/node/render_cell.h>
-#include "i_render_factory.h"
+#include "core/render/node/render_cell.h"
+#include "core/render/node/factory/i_render_factory.h"
 
 namespace WeexCore {
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_creator.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_creator.cpp b/weex_core/Source/core/render/node/factory/render_creator.cpp
index 7318d40..5c3acfb 100644
--- a/weex_core/Source/core/render/node/factory/render_creator.cpp
+++ b/weex_core/Source/core/render/node/factory/render_creator.cpp
@@ -16,21 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#include "render_creator.h"
-#include "i_render_object.h"
-#include "i_render_factory.h"
-#include "render_text_factory.h"
-#include "simple_render_factory.h"
-#include "render_cell_factory.h"
-#include "render_type.h"
-#include "render_indicator_factory.h"
-#include "render_input_factory.h"
-#include "render_list_factory.h"
-#include "render_mask_factory.h"
-#include "render_scroller_factory.h"
-#include "render_switch_factory.h"
-#include "render_textarea_factory.h"
-#include "render_appbar_factory.h"
+#include "core/render/node/factory/render_creator.h"
+#include "core/render/node/factory/i_render_object.h"
+#include "core/render/node/factory/i_render_factory.h"
+#include "core/render/node/factory/render_text_factory.h"
+#include "core/render/node/factory/simple_render_factory.h"
+#include "core/render/node/factory/render_list_factory.h"
+#include "core/render/node/factory/render_mask_factory.h"
+#include "core/render/node/factory/render_scroller_factory.h"
+#include "core/render/node/factory/render_appbar_factory.h"
+#include "core/render/node/factory/render_type.h"
 
 namespace WeexCore {
 
@@ -40,24 +35,12 @@ namespace WeexCore {
     IRenderFactory *factory;
     if (type == kRenderText) {
       factory = new RenderTextFactory();
-    } else if (type == kRenderCell
-               || type == kRenderHeader
-               || type == kRenderCellSlot) {
-      factory = new RenderCellFactory();
-    } else if (type == kRenderIndicator) {
-      factory = new RenderIndicatorFactory();
-    } else if (type == kRenderInput) {
-      factory = new RenderInputFactory();
     } else if (type == kRenderList || type == kRenderWaterfall || type == kRenderRecycleList) {
       factory = new RenderListFactory();
     } else if (type == kRenderMask) {
       factory = new RenderMaskFactory();
     } else if (type == kRenderScroller) {
       factory = new RenderScrollerFactory();
-    } else if (type == kRenderSwitch) {
-      factory = new RenderSwitchFactory();
-    } else if (type == kRenderTextArea) {
-      factory = new RenderTextAreaFactory();
     } else if (type == kRenderAppBar) {
       factory = new RenderAppBarFactory();
     } else {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_indicator_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_indicator_factory.h b/weex_core/Source/core/render/node/factory/render_indicator_factory.h
deleted file mode 100644
index 7688acf..0000000
--- a/weex_core/Source/core/render/node/factory/render_indicator_factory.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-#ifndef WEEX_PROJECT_RENDERINDICATORFACTORY_H
-#define WEEX_PROJECT_RENDERINDICATORFACTORY_H
-
-#include <core/render/node/render_indicator.h>
-#include "i_render_factory.h"
-
-namespace WeexCore {
-
-  class RenderIndicatorFactory : public IRenderFactory {
-  public:
-    IRenderObject *CreateRender() {
-      return new RenderIndicator();
-    }
-  };
-
-}
-
-#endif //WEEX_PROJECT_RENDERINDICATORFACTORY_H

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_input_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_input_factory.h b/weex_core/Source/core/render/node/factory/render_input_factory.h
deleted file mode 100644
index 7e4fe6e..0000000
--- a/weex_core/Source/core/render/node/factory/render_input_factory.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-#ifndef WEEX_PROJECT_RENDERINPUTFACTORY_H
-#define WEEX_PROJECT_RENDERINPUTFACTORY_H
-
-#include <core/render/node/render_input.h>
-#include "i_render_factory.h"
-
-namespace WeexCore {
-
-  class RenderInputFactory : public IRenderFactory {
-  public:
-    IRenderObject *CreateRender() {
-      return new RenderInput();
-    }
-  };
-
-}
-
-#endif //WEEX_PROJECT_RENDERINPUTFACTORY_H

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_list_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_list_factory.h b/weex_core/Source/core/render/node/factory/render_list_factory.h
index a1d0254..3964e6a 100644
--- a/weex_core/Source/core/render/node/factory/render_list_factory.h
+++ b/weex_core/Source/core/render/node/factory/render_list_factory.h
@@ -19,8 +19,8 @@
 #ifndef WEEX_PROJECT_RENDERLISTFACTORY_H
 #define WEEX_PROJECT_RENDERLISTFACTORY_H
 
-#include <core/render/node/render_list.h>
-#include "i_render_factory.h"
+#include "core/render/node/render_list.h"
+#include "core/render/node/factory/i_render_factory.h"
 
 namespace WeexCore {
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_mask_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_mask_factory.h b/weex_core/Source/core/render/node/factory/render_mask_factory.h
index c250b86..92a210e 100644
--- a/weex_core/Source/core/render/node/factory/render_mask_factory.h
+++ b/weex_core/Source/core/render/node/factory/render_mask_factory.h
@@ -19,8 +19,8 @@
 #ifndef WEEX_PROJECT_RENDERMASKFACTORY_H
 #define WEEX_PROJECT_RENDERMASKFACTORY_H
 
-#include <core/render/node/render_mask.h>
-#include "i_render_factory.h"
+#include "core/render/node/render_mask.h"
+#include "core/render/node/factory/i_render_factory.h"
 
 namespace WeexCore {
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_scroller_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_scroller_factory.h b/weex_core/Source/core/render/node/factory/render_scroller_factory.h
index 0f0f46a..7795bed 100644
--- a/weex_core/Source/core/render/node/factory/render_scroller_factory.h
+++ b/weex_core/Source/core/render/node/factory/render_scroller_factory.h
@@ -19,8 +19,8 @@
 #ifndef WEEX_PROJECT_RENDERSCROLLERFACTORY_H
 #define WEEX_PROJECT_RENDERSCROLLERFACTORY_H
 
-#include <core/render/node/render_scroller.h>
-#include "i_render_factory.h"
+#include "core/render/node/render_scroller.h"
+#include "core/render/node/factory/i_render_factory.h"
 
 namespace WeexCore {
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_switch_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_switch_factory.h b/weex_core/Source/core/render/node/factory/render_switch_factory.h
deleted file mode 100644
index 558c87d..0000000
--- a/weex_core/Source/core/render/node/factory/render_switch_factory.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-#ifndef WEEX_PROJECT_RENDERSWITCHFACTORY_H
-#define WEEX_PROJECT_RENDERSWITCHFACTORY_H
-
-#include <core/render/node/render_switch.h>
-#include "i_render_factory.h"
-
-namespace WeexCore {
-
-  class RenderSwitchFactory : public IRenderFactory {
-  public:
-    IRenderObject *CreateRender() {
-      return new RenderSwitch();
-    }
-  };
-
-}
-
-#endif //WEEX_PROJECT_RENDERSWITCHFACTORY_H

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_text_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_text_factory.h b/weex_core/Source/core/render/node/factory/render_text_factory.h
index edf8ab9..025de76 100644
--- a/weex_core/Source/core/render/node/factory/render_text_factory.h
+++ b/weex_core/Source/core/render/node/factory/render_text_factory.h
@@ -19,8 +19,8 @@
 #ifndef WEEX_PROJECT_RENDERTEXTFACTORY_H
 #define WEEX_PROJECT_RENDERTEXTFACTORY_H
 
-#include <core/render/node/render_text.h>
-#include "i_render_factory.h"
+#include "core/render/node/render_text.h"
+#include "core/render/node/factory/i_render_factory.h"
 
 namespace WeexCore {
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_textarea_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_textarea_factory.h b/weex_core/Source/core/render/node/factory/render_textarea_factory.h
deleted file mode 100644
index 4d42975..0000000
--- a/weex_core/Source/core/render/node/factory/render_textarea_factory.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-#ifndef WEEX_PROJECT_RENDERTEXTAREAFACTORY_H
-#define WEEX_PROJECT_RENDERTEXTAREAFACTORY_H
-
-#include <core/render/node/render_textarea.h>
-#include "i_render_factory.h"
-
-namespace WeexCore {
-
-  class RenderTextAreaFactory : public IRenderFactory {
-  public:
-    IRenderObject *CreateRender() {
-      return new RenderTextArea();
-    }
-  };
-
-}
-
-#endif //WEEX_PROJECT_RENDERTEXTAREAFACTORY_H

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_type.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/render_type.h b/weex_core/Source/core/render/node/factory/render_type.h
index aab8245..46c98ae 100644
--- a/weex_core/Source/core/render/node/factory/render_type.h
+++ b/weex_core/Source/core/render/node/factory/render_type.h
@@ -24,16 +24,12 @@
 namespace WeexCore {
   constexpr char kRenderCell[] = "cell";
   constexpr char kRenderCellSlot[] = "cell-slot";
-  constexpr char kRenderIndicator[] = "indicator";
-  constexpr char kRenderInput[] = "input";
   constexpr char kRenderList[] = "list";
   constexpr char kHList[] = "hlist";
   constexpr char kRenderRecycleList[] = "recycle-list";
   constexpr char kRenderMask[] = "mask";
   constexpr char kRenderScroller[] = "scroller";
-  constexpr char kRenderSwitch[] = "switch";
   constexpr char kRenderText[] = "text";
-  constexpr char kRenderTextArea[] = "textarea";
   constexpr char kRenderHeader[] = "header";
   constexpr char kRenderFooter[] = "footer";
   constexpr char kRenderWaterfall[] = "waterfall";

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/simple_render_factory.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/factory/simple_render_factory.h b/weex_core/Source/core/render/node/factory/simple_render_factory.h
index 3adef52..ee1ffca 100644
--- a/weex_core/Source/core/render/node/factory/simple_render_factory.h
+++ b/weex_core/Source/core/render/node/factory/simple_render_factory.h
@@ -19,8 +19,8 @@
 #ifndef WEEX_PROJECT_RENDERCOMMONFACTORY_H
 #define WEEX_PROJECT_RENDERCOMMONFACTORY_H
 
-#include <core/render/node/render_object.h>
-#include "i_render_factory.h"
+#include "core/render/node/render_object.h"
+#include "core/render/node/factory/i_render_factory.h"
 
 namespace WeexCore {
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_appbar.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_appbar.cpp b/weex_core/Source/core/render/node/render_appbar.cpp
new file mode 100644
index 0000000..9a6a766
--- /dev/null
+++ b/weex_core/Source/core/render/node/render_appbar.cpp
@@ -0,0 +1,85 @@
+/**
+ * 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.
+ */
+#include "core/config/core_environment.h"
+#include "base/ViewUtils.h"
+#include "core/css/constants_name.h"
+#include "core/render/node/render_appbar.h"
+
+namespace WeexCore {
+
+  std::map<std::string, std::string> *RenderAppBar::GetDefaultStyle() {
+    defaultNavWidth = getFloat(
+        WXCoreEnvironment::getInstance()->GetOption("defaultNavWidth").c_str());
+
+    defaultOverflowWidth = getFloat(
+        WXCoreEnvironment::getInstance()->GetOption("defaultOverflowWidth").c_str());
+
+    std::string appbar_color = WXCoreEnvironment::getInstance()->GetOption("appbar_color");
+    std::string appbar_background_color = WXCoreEnvironment::getInstance()->GetOption(
+        "appbar_background_color");
+
+    std::map<std::string, std::string> *style = new std::map<std::string, std::string>();
+    style->insert(std::pair<std::string, std::string>(PADDING_LEFT, "0"));
+    style->insert(std::pair<std::string, std::string>(PADDING_RIGHT, "0"));
+
+    if (!appbar_color.empty() && appbar_color != "" && !StyleExist(COLOR))
+      style->insert(std::pair<std::string, std::string>(COLOR, appbar_color));
+    if (!appbar_background_color.empty() && appbar_background_color != "" &&
+        !StyleExist(BACKGROUND_COLOR))
+      style->insert(std::pair<std::string, std::string>(BACKGROUND_COLOR, appbar_background_color));
+    return style;
+  }
+
+  bool RenderAppBar::StyleExist(const std::string &key) {
+    std::string value = GetStyle(key);
+    return !value.empty() && value != "";
+  }
+
+  StyleType RenderAppBar::ApplyStyle(const std::string &key, const std::string &value,
+                                     const bool updating) {
+    if (key == PADDING) {
+      UpdateStyleInternal(key,
+                          value,
+                          0,
+                          [=](float foo) {
+                            setPadding(kPaddingLeft, foo + defaultNavWidth),
+                                setPadding(kPaddingRight, foo + defaultOverflowWidth),
+                                setPadding(kPaddingTop, foo),
+                                setPadding(kPaddingBottom, foo);
+                          });
+      return kTypePadding;
+    } else if (key == PADDING_LEFT) {
+      UpdateStyleInternal(key,
+                          value,
+                          0,
+                          [=](float foo) { setPadding(kPaddingLeft, foo + defaultNavWidth); });
+      return kTypePadding;
+    } else if (key == PADDING_RIGHT) {
+      UpdateStyleInternal(key,
+                          value,
+                          0,
+                          [=](float foo) {
+                            setPadding(kPaddingRight, foo + defaultOverflowWidth);
+                          });
+      return kTypePadding;
+    } else {
+      return RenderObject::ApplyStyle(key, value, updating);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_appbar.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_appbar.h b/weex_core/Source/core/render/node/render_appbar.h
index d0c85d3..7259bbb 100644
--- a/weex_core/Source/core/render/node/render_appbar.h
+++ b/weex_core/Source/core/render/node/render_appbar.h
@@ -19,72 +19,28 @@
 #ifndef WEEX_PROJECT_RENDERAPPBAR_H
 #define WEEX_PROJECT_RENDERAPPBAR_H
 
-#include <core/render/node/render_object.h>
 #include <string>
-//#include <android/base/string/string_utils.h>
+
+#include "core/render/node/render_object.h"
 
 namespace WeexCore {
   class RenderAppBar : public RenderObject {
 
   private:
-    float defaultNavWidth;
-    float defaultOverflowWidth;
 
-    std::map<std::string, std::string> *GetDefaultStyle() {
-      defaultNavWidth = getFloat(WXCoreEnvironment::getInstance()->GetOption("defaultNavWidth").c_str());
+    std::map<std::string, std::string> *GetDefaultStyle();
 
-      defaultOverflowWidth = getFloat(WXCoreEnvironment::getInstance()->GetOption("defaultOverflowWidth").c_str());
+    bool StyleExist(const std::string &key);
 
-      std::string appbar_color = WXCoreEnvironment::getInstance()->GetOption("appbar_color");
-      std::string appbar_background_color = WXCoreEnvironment::getInstance()->GetOption(
-          "appbar_background_color");
-
-      std::map<std::string, std::string> *style = new std::map<std::string, std::string>();
-      style->insert(std::pair<std::string, std::string>(PADDING_LEFT, "0"));
-      style->insert(std::pair<std::string, std::string>(PADDING_RIGHT, "0"));
+  public:
 
-      if (!appbar_color.empty() && appbar_color != "" && !StyleExist(COLOR))
-        style->insert(std::pair<std::string, std::string>(COLOR, appbar_color));
-      if (!appbar_background_color.empty() && appbar_background_color != "" && !StyleExist(BACKGROUND_COLOR))
-        style->insert(std::pair<std::string, std::string>(BACKGROUND_COLOR, appbar_background_color));
-      return style;
-    }
+    StyleType ApplyStyle(const std::string &key, const std::string &value, const bool updating);
 
-    inline bool StyleExist(const std::string &key) {
-      std::string value = GetStyle(key);
-      return !value.empty() && value != "";
-    }
+  private:
 
-  public:
+    float defaultNavWidth;
+    float defaultOverflowWidth;
 
-    StyleType ApplyStyle(const std::string &key, const std::string &value, const bool updating) {
-      if (key == PADDING) {
-        UpdateStyle(key,
-                    value,
-                    0,
-                    [=](float foo) {
-                      setPadding(kPaddingLeft, foo + defaultNavWidth),
-                          setPadding(kPaddingRight, foo + defaultOverflowWidth),
-                          setPadding(kPaddingTop, foo),
-                          setPadding(kPaddingBottom, foo);
-                    });
-        return kTypePadding;
-      } else if (key == PADDING_LEFT) {
-        UpdateStyle(key,
-                    value,
-                    0,
-                    [=](float foo) { setPadding(kPaddingLeft, foo + defaultNavWidth); });
-        return kTypePadding;
-      } else if (key == PADDING_RIGHT) {
-        UpdateStyle(key,
-                    value,
-                    0,
-                    [=](float foo) { setPadding(kPaddingRight, foo + defaultOverflowWidth); });
-        return kTypePadding;
-      } else {
-        return RenderObject::ApplyStyle(key, value, updating);
-      }
-    }
   };
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_cell.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_cell.h b/weex_core/Source/core/render/node/render_cell.h
index d7e9adc..9a2ced6 100644
--- a/weex_core/Source/core/render/node/render_cell.h
+++ b/weex_core/Source/core/render/node/render_cell.h
@@ -19,7 +19,7 @@
 #ifndef WEEX_PROJECT_RENDERCELL_H
 #define WEEX_PROJECT_RENDERCELL_H
 
-#include <core/render/node/render_object.h>
+#include "core/render/node/render_object.h"
 
 namespace WeexCore {
   class RenderCell : public RenderObject {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_indicator.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_indicator.h b/weex_core/Source/core/render/node/render_indicator.h
deleted file mode 100644
index 9c3bd00..0000000
--- a/weex_core/Source/core/render/node/render_indicator.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-#ifndef WEEX_PROJECT_RENDERINDICATOR_H
-#define WEEX_PROJECT_RENDERINDICATOR_H
-
-#include <core/render/node/render_object.h>
-
-namespace WeexCore {
-  class RenderIndicator : public RenderObject {
-
-  };
-}
-
-#endif //WEEX_PROJECT_RENDERINDICATOR_H

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_input.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_input.h b/weex_core/Source/core/render/node/render_input.h
deleted file mode 100644
index ce4a007..0000000
--- a/weex_core/Source/core/render/node/render_input.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-#ifndef WEEX_PROJECT_BASICRENDEREDITTEXT_H
-#define WEEX_PROJECT_BASICRENDEREDITTEXT_H
-
-#include <core/render/node/render_object.h>
-
-namespace WeexCore {
-  class RenderInput : public RenderObject {
-
-  };
-}
-
-#endif //WEEX_PROJECT_BASICRENDEREDITTEXT_H

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_list.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_list.cpp b/weex_core/Source/core/render/node/render_list.cpp
new file mode 100644
index 0000000..8c5042c
--- /dev/null
+++ b/weex_core/Source/core/render/node/render_list.cpp
@@ -0,0 +1,319 @@
+/**
+ * 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.
+ */
+#include <cmath>
+
+#include "core/render/node/render_list.h"
+#include "core/css/constants_name.h"
+#include "base/ViewUtils.h"
+#include "core/render/node/factory/render_type.h"
+#include "core/render/node/render_object.h"
+#include "core/render/page/render_page.h"
+
+namespace WeexCore {
+
+  RenderList::~RenderList() {
+    if (cellSlotsCopys.size() > 0) {
+      for (auto it = cellSlotsCopys.begin(); it != cellSlotsCopys.end(); ++it) {
+        RenderObject *child = *it;
+        if (child) {
+          delete child;
+          child = nullptr;
+        }
+      }
+      cellSlotsCopys.clear();
+    }
+
+    if (cellSlots.size() > 0) {
+      for (auto it = cellSlots.begin(); it != cellSlots.end(); ++it) {
+        RenderObject *child = *it;
+        if (child) {
+          delete child;
+          child = nullptr;
+        }
+      }
+      cellSlots.clear();
+    }
+  }
+
+  void RenderList::addCellSlotCopyTrack(RenderObject *cellSlot) {
+    cellSlot->setParent(this, cellSlot);
+    cellSlotsCopys.push_back(cellSlot);
+  }
+
+  std::map<std::string, std::string> *RenderList::GetDefaultStyle() {
+    std::map<std::string, std::string> *style = new std::map<std::string, std::string>();
+
+    bool isVertical = true;
+    RenderObject *parent = (RenderObject *) getParent();
+
+    if (parent != nullptr && !parent->Type().empty()) {
+      if (parent->Type() == kHList) {
+        isVertical = false;
+      } else if (getOrientation() == HORIZONTAL_VALUE) {
+        isVertical = false;
+      }
+    }
+
+    std::string prop = isVertical ? HEIGHT : WIDTH;
+
+    if (prop == HEIGHT && isnan(getStyleHeight()) && !mIsSetFlex) {
+      mIsSetFlex = true;
+      style->insert(std::pair<std::string, std::string>(FLEX, "1"));
+    } else if (prop == WIDTH && isnan(getStyleWidth()) && !mIsSetFlex) {
+      mIsSetFlex = true;
+      style->insert(std::pair<std::string, std::string>(FLEX, "1"));
+    }
+
+    return style;
+  }
+
+  void RenderList::setFlex(const float flex) {
+    mIsSetFlex = true;
+    WXCoreLayoutNode::setFlex(flex);
+  }
+
+  std::map<std::string, std::string> *RenderList::GetDefaultAttr() {
+    if (!mIsPreCalculateCellWidth) {
+      preCalculateCellWidth();
+    }
+    return nullptr;
+  }
+
+  void RenderList::preCalculateCellWidth() {
+    std::map<std::string, std::string> *attrs = new std::map<std::string, std::string>();
+    if (Attributes() != nullptr) {
+      mColumnCount = getColumnCount();
+      mColumnWidth = getColumnWidth();
+      mColumnGap = getColumnGap();
+
+      mLeftGap = getLeftGap();
+      mRightGap = getRightGap();
+
+      mAvailableWidth =
+          getStyleWidth() - getWebPxByWidth(getPaddingLeft(), GetRenderPage()->ViewPortWidth()) -
+          getWebPxByWidth(getPaddingRight(), GetRenderPage()->ViewPortWidth());
+
+      if (AUTO_VALUE == mColumnCount && AUTO_VALUE == mColumnWidth) {
+        mColumnCount = COLUMN_COUNT_NORMAL;
+        mColumnWidth = (mAvailableWidth - ((mColumnCount - 1) * mColumnGap)) / mColumnCount;
+        mColumnWidth = mColumnWidth > 0 ? mColumnWidth : 0;
+      } else if (AUTO_VALUE == mColumnWidth && AUTO_VALUE != mColumnCount) {
+        mColumnWidth =
+            (mAvailableWidth - mLeftGap - mRightGap - ((mColumnCount - 1) * mColumnGap)) /
+            mColumnCount;
+        mColumnWidth = mColumnWidth > 0 ? mColumnWidth : 0;
+      } else if (AUTO_VALUE != mColumnWidth && AUTO_VALUE == mColumnCount) {
+        mColumnCount = (int) round(
+            (mAvailableWidth + mColumnGap) / (mColumnWidth + mColumnGap) - 0.5f);
+        mColumnCount = mColumnCount > 0 ? mColumnCount : 1;
+        if (mColumnCount <= 0) {
+          mColumnCount = COLUMN_COUNT_NORMAL;
+        }
+        mColumnWidth =
+            ((mAvailableWidth + mColumnGap - mLeftGap - mRightGap) / mColumnCount) - mColumnGap;
+
+      } else if (AUTO_VALUE != mColumnWidth && AUTO_VALUE != mColumnCount) {
+        int columnCount = (int) round(
+            (mAvailableWidth + mColumnGap - mLeftGap - mRightGap) / (mColumnWidth + mColumnGap) -
+            0.5f);
+        mColumnCount = columnCount > mColumnCount ? mColumnCount : columnCount;
+        if (mColumnCount <= 0) {
+          mColumnCount = COLUMN_COUNT_NORMAL;
+        }
+        mColumnWidth =
+            ((mAvailableWidth + mColumnGap - mLeftGap - mRightGap) / mColumnCount) - mColumnGap;
+      }
+
+      std::string spanOffsets = calcSpanOffset();
+
+      mIsPreCalculateCellWidth = true;
+      if (getColumnCount() > 0 || getColumnWidth() > 0 || mColumnCount > COLUMN_COUNT_NORMAL) {
+        attrs->insert(std::pair<std::string, std::string>(COLUMN_COUNT, to_string(mColumnCount)));
+        attrs->insert(std::pair<std::string, std::string>(COLUMN_GAP, to_string(mColumnGap)));
+        attrs->insert(std::pair<std::string, std::string>(COLUMN_WIDTH, to_string(mColumnWidth)));
+      }
+      if (spanOffsets.length() > 0) {
+        attrs->insert(std::pair<std::string, std::string>(SPAN_OFFSETS, to_string(spanOffsets)));
+      }
+
+      for (auto iter = attrs->cbegin(); iter != attrs->cend(); iter++) {
+        RenderObject::UpdateAttr(iter->first, iter->second);
+      }
+    }
+
+    RenderPage *page = GetRenderPage();
+
+    if (page != nullptr)
+      page->SendUpdateAttrAction(this, attrs);
+
+    if (attrs != nullptr) {
+      attrs->clear();
+      delete attrs;
+      attrs = nullptr;
+    }
+  }
+
+  std::string RenderList::calcSpanOffset() {
+    std::string spanOffsets;
+    if (mLeftGap > 0 || mRightGap > 0) {
+      spanOffsets.append("[");
+      for (int i = 0; i < mColumnCount; i++) {
+        float spanOffset = mLeftGap + i * ((mColumnWidth + mColumnGap) -
+                                           (mAvailableWidth + mColumnGap) / mColumnCount);
+        spanOffsets.append(to_string(spanOffset));
+        if (i != mColumnCount - 1) {
+          spanOffsets.append(",");
+        }
+      }
+      spanOffsets.append("]");
+    }
+    return spanOffsets;
+  }
+
+  float RenderList::getStyleWidth() {
+    float width = getWebPxByWidth(getLayoutWidth(), GetRenderPage()->ViewPortWidth());
+    if (isnan(width) || width <= 0) {
+      if (getParent() != nullptr) {
+        width = getWebPxByWidth(getParent()->getLayoutWidth(), GetRenderPage()->ViewPortWidth());
+      }
+      if (isnan(width) || width <= 0) {
+        width = getWebPxByWidth(RenderObject::getStyleWidth(), GetRenderPage()->ViewPortWidth());
+      }
+    }
+    if (isnan(width) || width <= 0) {
+      width = GetViewPortWidth();
+    }
+    return width;
+  }
+
+  int RenderList::AddRenderObject(int index, RenderObject *child) {
+    if (Type() == kRenderRecycleList
+        && (child->Type() == kRenderCellSlot || child->Type() == kRenderCell ||
+            child->Type() == kRenderHeader)) {
+      child->setParent(this, child);
+      cellSlots.insert(cellSlots.end(), child);
+      index = -1;
+    } else {
+      index = RenderObject::AddRenderObject(index, child);
+    }
+
+    if (!mIsPreCalculateCellWidth) {
+      preCalculateCellWidth();
+    }
+
+    if (mColumnWidth != 0 && !isnan(mColumnWidth)) {
+      AddRenderObjectWidth(child, false);
+    }
+    return index;
+  }
+
+  void RenderList::AddRenderObjectWidth(RenderObject *child, const bool updating) {
+    if (Type() == kRenderWaterfall || Type() == kRenderRecycleList) {
+      if (child->Type() == kRenderHeader || child->Type() == kRenderFooter) {
+        child->ApplyStyle(WIDTH, to_string(mAvailableWidth), updating);
+      } else if (child->IsSticky()) {
+        child->ApplyStyle(WIDTH, to_string(mAvailableWidth), updating);
+      } else if (child->Type() == kRenderCell || child->Type() == kRenderCellSlot) {
+        child->ApplyStyle(WIDTH, to_string(mColumnWidth), updating);
+      }
+    }
+  }
+
+  void RenderList::UpdateAttr(std::string key, std::string value) {
+    RenderObject::UpdateAttr(key, value);
+
+    if (!GetAttr(COLUMN_COUNT).empty() || !GetAttr(COLUMN_GAP).empty() ||
+        !GetAttr(COLUMN_WIDTH).empty()) {
+      preCalculateCellWidth();
+
+      if (mColumnWidth == 0 && isnan(mColumnWidth)) {
+        return;
+      }
+
+      int count = getChildCount();
+      for (Index i = 0; i < count; i++) {
+        RenderObject *child = GetChild(i);
+        AddRenderObjectWidth(this, true);
+      }
+    }
+  }
+
+  float RenderList::getColumnCount() {
+    std::string columnCount = GetAttr(COLUMN_COUNT);
+
+    if (columnCount.empty() || columnCount == AUTO) {
+      return AUTO_VALUE;
+    }
+
+    float columnCountValue = getFloat(columnCount.c_str());
+    return (columnCountValue > 0 && !isnan(columnCountValue)) ? columnCountValue : AUTO_VALUE;
+  }
+
+  float RenderList::getColumnGap() {
+    std::string columnGap = GetAttr(COLUMN_GAP);
+
+    if (columnGap.empty() || columnGap == NORMAL) {
+      return COLUMN_GAP_NORMAL;
+    }
+
+    float columnGapValue = getFloat(columnGap.c_str());
+    return (columnGapValue > 0 && !isnan(columnGapValue)) ? columnGapValue : AUTO_VALUE;
+  }
+
+  float RenderList::getColumnWidth() {
+    std::string columnWidth = GetAttr(COLUMN_WIDTH);
+
+    if (columnWidth.empty() || columnWidth == AUTO) {
+      return AUTO_VALUE;
+    }
+
+    float columnWidthValue = getFloat(columnWidth.c_str());
+    return (columnWidthValue > 0 && !isnan(columnWidthValue)) ? columnWidthValue : 0;
+  }
+
+  float RenderList::getLeftGap() {
+    std::string leftGap = GetAttr(LEFT_GAP);
+
+    if (leftGap.empty() || leftGap == AUTO) {
+      return 0;
+    }
+
+    float leftGapValue = getFloat(leftGap.c_str());
+    return (leftGapValue > 0 && !isnan(leftGapValue)) ? leftGapValue : 0;
+  }
+
+  float RenderList::getRightGap() {
+    std::string rightGap = GetAttr(RIGHT_GAP);
+
+    if (rightGap.empty() || rightGap == AUTO) {
+      return 0;
+    }
+
+    float rightGapValue = getFloat(rightGap.c_str());
+    return (rightGapValue > 0 && !isnan(rightGapValue)) ? rightGapValue : 0;
+  }
+
+  int RenderList::getOrientation() {
+    std::string direction = GetAttr(SCROLL_DIRECTION);
+    if (HORIZONTAL == direction) {
+      return HORIZONTAL_VALUE;
+    }
+    return VERTICAL_VALUE;
+  }
+}