* [android] Remove useless method and TODOs, rename class.

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

Branch: refs/heads/0.16-dev
Commit: 60b6aad7ddda3d83f37c4d366dea00e6493d75b8
Parents: 58546e6
Author: YorkShen <shenyua...@gmail.com>
Authored: Fri Sep 8 12:11:28 2017 +0800
Committer: YorkShen <shenyua...@gmail.com>
Committed: Wed Sep 13 16:54:08 2017 +0800

----------------------------------------------------------------------
 .../adapter/PicassoBasedDrawableLoader.java     | 112 ----------------
 .../java/com/alibaba/weex/WXApplication.java    |   2 -
 .../java/com/taobao/weex/WXSDKInstance.java     |   7 +-
 .../taobao/weex/adapter/DrawableStrategy.java   |   5 -
 .../com/taobao/weex/common/WXImageStrategy.java |   8 +-
 .../taobao/weex/ui/component/WXComponent.java   |   7 +-
 .../com/taobao/weex/ui/flat/FlatGUIContext.java | 130 ++++++++++++++++++
 .../taobao/weex/ui/flat/FlatGUIIContext.java    | 132 -------------------
 .../taobao/weex/ui/flat/WidgetContainer.java    |   2 +-
 .../weex/ui/flat/widget/AndroidViewWidget.java  |   4 +-
 .../taobao/weex/ui/flat/widget/BaseWidget.java  |  45 +------
 .../taobao/weex/ui/flat/widget/ImageWidget.java | 102 --------------
 .../taobao/weex/ui/flat/widget/TextWidget.java  |   4 +-
 .../com/taobao/weex/ui/flat/widget/Widget.java  |  17 ---
 .../taobao/weex/ui/flat/widget/WidgetGroup.java |   4 +-
 .../com/taobao/weex/ui/view/WXFrameLayout.java  |   2 -
 .../com/taobao/weex/ui/component/WXDivTest.java |   6 +-
 .../taobao/weex/ui/component/WXTextTest.java    |   4 +-
 18 files changed, 155 insertions(+), 438 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java
----------------------------------------------------------------------
diff --git 
a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java
 
b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java
deleted file mode 100644
index 0d03934..0000000
--- 
a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java
+++ /dev/null
@@ -1,112 +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.alibaba.weex.commons.adapter;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.ColorFilter;
-import android.graphics.PixelFormat;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.view.Gravity;
-
-import com.squareup.picasso.Picasso;
-import com.squareup.picasso.Target;
-import com.taobao.weex.WXSDKManager;
-import com.taobao.weex.adapter.DrawableStrategy;
-import com.taobao.weex.adapter.IDrawableLoader;
-
-
-public class PicassoBasedDrawableLoader implements IDrawableLoader {
-
-  private Context mContext;
-
-  public PicassoBasedDrawableLoader(Context context) {
-    mContext = context;
-  }
-
-  @Override
-  public void setDrawable(final String url,
-      final DrawableTarget drawableTarget,
-      final DrawableStrategy drawableStrategy) {
-    WXSDKManager.getInstance().postOnUiThread(new Runnable() {
-      @Override
-      public void run() {
-        String temp = url;
-        if (url.startsWith("//")) {
-          temp = "http:" + url;
-        }
-
-        /** This is a hack for picasso, as Picasso hold weakReference to 
Target.
-         * 
http://stackoverflow.com/questions/24180805/onbitmaploaded-of-target-object-not-called-on-first-load
-         */
-        class PlaceHolderDrawableTarget extends Drawable implements Target {
-
-          @Override
-          public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
-            BitmapDrawable bitmapDrawable = new 
BitmapDrawable(mContext.getResources(), bitmap);
-            bitmapDrawable.setGravity(Gravity.FILL);
-            if(drawableTarget instanceof StaticTarget) {
-              ((StaticTarget) drawableTarget).setDrawable(bitmapDrawable, 
true);
-            }
-          }
-
-          @Override
-          public void onBitmapFailed(Drawable errorDrawable) {
-
-          }
-
-          @Override
-          public void onPrepareLoad(Drawable placeHolderDrawable) {
-            if(drawableTarget instanceof StaticTarget) {
-              ((StaticTarget) drawableTarget).setDrawable(this, true);
-            }
-          }
-
-          @Override
-          public void draw(Canvas canvas) {
-
-          }
-
-          @Override
-          public void setAlpha(int alpha) {
-
-          }
-
-          @Override
-          public void setColorFilter(ColorFilter colorFilter) {
-
-          }
-
-          @Override
-          public int getOpacity() {
-            return PixelFormat.UNKNOWN;
-          }
-        }
-        Picasso.
-            with(mContext).
-            load(temp).
-            into(new PlaceHolderDrawableTarget());
-      }
-    }, 0);
-
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java
----------------------------------------------------------------------
diff --git 
a/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java 
b/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java
index 5844341..561d292 100644
--- a/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java
+++ b/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java
@@ -25,7 +25,6 @@ import android.os.Bundle;
 import com.alibaba.weex.commons.adapter.DefaultWebSocketAdapterFactory;
 import com.alibaba.weex.commons.adapter.ImageAdapter;
 import com.alibaba.weex.commons.adapter.JSExceptionAdapter;
-import com.alibaba.weex.commons.adapter.PicassoBasedDrawableLoader;
 import com.alibaba.weex.extend.PlayDebugAdapter;
 import com.alibaba.weex.extend.adapter.InterceptWXHttpAdapter;
 import com.alibaba.weex.extend.component.RichText;
@@ -71,7 +70,6 @@ public class WXApplication extends Application {
                                .setWebSocketAdapterFactory(new 
DefaultWebSocketAdapterFactory())
                                .setJSExceptionAdapter(new JSExceptionAdapter())
                                .setHttpAdapter(new InterceptWXHttpAdapter())
-                               .setDrawableLoader(new 
PicassoBasedDrawableLoader(this))
                                .build()
                           );
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java 
b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
index a3ae67e..93191a8 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -70,7 +70,7 @@ import com.taobao.weex.ui.component.NestedContainer;
 import com.taobao.weex.ui.component.WXBasicComponentType;
 import com.taobao.weex.ui.component.WXComponent;
 import com.taobao.weex.ui.component.WXComponentFactory;
-import com.taobao.weex.ui.flat.FlatGUIIContext;
+import com.taobao.weex.ui.flat.FlatGUIContext;
 import com.taobao.weex.ui.view.WXScrollView;
 import com.taobao.weex.ui.view.WXScrollView.WXScrollViewListener;
 import com.taobao.weex.utils.Trace;
@@ -79,7 +79,6 @@ import com.taobao.weex.utils.WXJsonUtils;
 import com.taobao.weex.utils.WXLogUtils;
 import com.taobao.weex.utils.WXReflectionUtils;
 import com.taobao.weex.utils.WXViewUtils;
-import com.taobao.weex.WXSDKEngine;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -123,7 +122,7 @@ public class WXSDKInstance implements 
IWXActivityStateListener,DomContext, View.
   private static volatile int mViewPortWidth = 750;
   private int mInstanceViewPortWidth = 750;
   private final  @NonNull
-  FlatGUIIContext mUIImp =new FlatGUIIContext();
+  FlatGUIContext mUIImp =new FlatGUIContext();
 
   public long mRenderStartNanos;
   public int mExecJSTraceId = WXTracing.nextId();
@@ -205,7 +204,7 @@ public class WXSDKInstance implements 
IWXActivityStateListener,DomContext, View.
   }
 
   public @NonNull
-  FlatGUIIContext getFlatUIContext(){
+  FlatGUIContext getFlatUIContext(){
     return mUIImp;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/adapter/DrawableStrategy.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/adapter/DrawableStrategy.java 
b/android/sdk/src/main/java/com/taobao/weex/adapter/DrawableStrategy.java
index 6c01aa8..c6daa5a 100644
--- a/android/sdk/src/main/java/com/taobao/weex/adapter/DrawableStrategy.java
+++ b/android/sdk/src/main/java/com/taobao/weex/adapter/DrawableStrategy.java
@@ -20,13 +20,8 @@
 package com.taobao.weex.adapter;
 
 
-import com.taobao.weex.common.WXImageStrategy;
-import com.taobao.weex.dom.WXImageQuality;
-
 public class DrawableStrategy {
 
   public int width;
   public int height;
-  public WXImageStrategy imageStrategy;
-  public WXImageQuality imageQuality;
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/common/WXImageStrategy.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/common/WXImageStrategy.java 
b/android/sdk/src/main/java/com/taobao/weex/common/WXImageStrategy.java
index de2572e..994c99b 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/WXImageStrategy.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/WXImageStrategy.java
@@ -19,7 +19,7 @@
 package com.taobao.weex.common;
 
 import android.widget.ImageView;
-import com.taobao.weex.adapter.IDrawableLoader.DrawableTarget;
+
 import java.util.Map;
 
 public class WXImageStrategy {
@@ -58,12 +58,6 @@ public class WXImageStrategy {
 
   ImageListener imageListener;
 
-  WidgetListener widgetListener;
-
-  public interface WidgetListener{
-    public void onImageFinish(String url,DrawableTarget drawableTarget,boolean 
 result,Map extra);
-  }
-
   public interface ImageListener{
     public void onImageFinish(String url,ImageView imageView,boolean  
result,Map extra);
   }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index c2313b2..3d9749d 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -70,7 +70,7 @@ import 
com.taobao.weex.ui.component.pesudo.OnActivePseudoListner;
 import com.taobao.weex.ui.component.pesudo.PesudoStatus;
 import com.taobao.weex.ui.component.pesudo.TouchActivePseudoListener;
 import com.taobao.weex.ui.flat.FlatComponent;
-import com.taobao.weex.ui.flat.FlatGUIIContext;
+import com.taobao.weex.ui.flat.FlatGUIContext;
 import com.taobao.weex.ui.flat.WidgetContainer;
 import com.taobao.weex.ui.flat.widget.AndroidViewWidget;
 import com.taobao.weex.ui.flat.widget.Widget;
@@ -473,14 +473,13 @@ public abstract class  WXComponent<T extends View> 
implements IWXObject, IWXActi
 
   private void setComponentLayoutParams(int realWidth, int realHeight, int 
realLeft, int realTop,
       int realRight, int realBottom, Point rawOffset) {
-    FlatGUIIContext UIImp = getInstance().getFlatUIContext();
+    FlatGUIContext UIImp = getInstance().getFlatUIContext();
     WidgetContainer ancestor;
     Widget widget;
     if ((ancestor = UIImp.getFlatComponentAncestor(this)) != null) {
       if (this instanceof FlatComponent && !((FlatComponent) 
this).promoteToView(true)) {
         widget = ((FlatComponent) this).getOrCreateFlatWidget();
       } else {
-        //TODO Be careful with nested hierarchy, such as widget, view, widget 
hierarchy.
         widget = UIImp.getAndroidViewWidget(this);
       }
       setWidgetParams(widget, UIImp, rawOffset, realWidth, realHeight, 
realLeft, realRight, realTop,
@@ -500,7 +499,7 @@ public abstract class  WXComponent<T extends View> 
implements IWXObject, IWXActi
     }
   }
 
-  private void setWidgetParams(Widget widget, FlatGUIIContext UIImp, Point 
rawoffset,
+  private void setWidgetParams(Widget widget, FlatGUIContext UIImp, Point 
rawoffset,
       int width, int height, int left, int right, int top, int bottom) {
     Point childOffset = new Point();
     if (mParent != null) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIContext.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIContext.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIContext.java
new file mode 100644
index 0000000..e208f4c
--- /dev/null
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIContext.java
@@ -0,0 +1,130 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.taobao.weex.ui.flat;
+
+
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.annotation.RestrictTo;
+import android.support.annotation.RestrictTo.Scope;
+import android.support.v4.util.ArrayMap;
+import android.text.TextUtils;
+import android.view.View;
+import com.taobao.weex.common.Constants.Name;
+import com.taobao.weex.dom.ImmutableDomObject;
+import com.taobao.weex.dom.WXAttr;
+import com.taobao.weex.dom.WXDomObject;
+import com.taobao.weex.dom.WXStyle;
+import com.taobao.weex.ui.component.WXComponent;
+import com.taobao.weex.ui.flat.widget.AndroidViewWidget;
+import com.taobao.weex.ui.flat.widget.Widget;
+import java.util.Map;
+
+//TODO when Weex instance is destroyed, there is a work of garbage collection.
+//TODO The constructor of FlatGUIContext should have a flag decide whether to 
enable flagGUI.
+
+@RestrictTo(Scope.LIBRARY)
+public class FlatGUIContext {
+
+  private Map<WXComponent, WidgetContainer> mWidgetRegistry = new ArrayMap<>();
+  private Map<WXComponent, AndroidViewWidget> mViewWidgetRegistry = new 
ArrayMap<>();
+  private Map<Widget, WXComponent> widgetToComponent = new ArrayMap<>();
+
+  public boolean isFlatUIEnabled(WXComponent component) {
+    return component.isFlatUIEnabled();
+  }
+
+  public void register(@NonNull WXComponent descendant, @NonNull 
WidgetContainer ancestor) {
+    if (!(ancestor instanceof FlatComponent) ||
+        ((FlatComponent) ancestor).promoteToView(true)) {
+      mWidgetRegistry.put(descendant, ancestor);
+    }
+  }
+
+  public void register(@NonNull WXComponent component, @NonNull 
AndroidViewWidget viewWidget){
+    mViewWidgetRegistry.put(component, viewWidget);
+  }
+
+  public void register(@NonNull Widget widget, @NonNull WXComponent component){
+    widgetToComponent.put(widget, component);
+  }
+
+  public
+  @Nullable
+  WidgetContainer getFlatComponentAncestor(@NonNull WXComponent flatWidget) {
+    return mWidgetRegistry.get(flatWidget);
+  }
+
+  public
+  @Nullable
+  AndroidViewWidget getAndroidViewWidget(@NonNull WXComponent component) {
+    return mViewWidgetRegistry.get(component);
+  }
+
+  public boolean promoteToView(@NonNull WXComponent component, boolean 
checkAncestor,
+      @NonNull Class<? extends WXComponent<?>> expectedClass) {
+    return !isFlatUIEnabled(component) ||
+        !expectedClass.equals(component.getClass()) ||
+        TextUtils.equals(component.getRef(), WXDomObject.ROOT) ||
+        (checkAncestor && getFlatComponentAncestor(component) == null) ||
+        checkComponent(component);
+  }
+
+  public
+  @Nullable
+  View getWidgetContainerView(Widget widget) {
+    WXComponent component, ancestor;
+    View ret = null;
+    if ((component = getComponent(widget)) != null) {
+      if ((ancestor = getFlatComponentAncestor(component)) != null) {
+        ret = ancestor.getHostView();
+      }
+    }
+    return ret;
+  }
+
+  private @Nullable WXComponent getComponent(@NonNull Widget widget){
+    return widgetToComponent.get(widget);
+  }
+
+  private boolean checkComponent(@NonNull WXComponent component) {
+    boolean ret = false;
+    ImmutableDomObject domObject = component.getDomObject();
+    if (domObject != null) {
+      WXStyle style = domObject.getStyles();
+      WXAttr attr = domObject.getAttrs();
+      //TODO disabled && pro_fixed_size, attr or style
+      if (style.containsKey(Name.OPACITY) ||
+          style.containsKey(Name.TRANSFORM) ||
+          attr.containsKey(Name.ELEVATION) ||
+          attr.containsKey(Name.ARIA_HIDDEN) ||
+          attr.containsKey(Name.ARIA_LABEL) ||
+          attr.containsKey(WXComponent.PROP_FIXED_SIZE) ||
+          style.containsKey(Name.VISIBILITY) ||
+          attr.containsKey(Name.DISABLED) ||
+          style.isFixed() ||
+          style.isSticky() ||
+          !style.getPesudoStyles().isEmpty() ||
+          domObject.getEvents().size() > 0) {
+        ret = true;
+      }
+    }
+    return ret;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIIContext.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIIContext.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIIContext.java
deleted file mode 100644
index dde4118..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIIContext.java
+++ /dev/null
@@ -1,132 +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.ui.flat;
-
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RestrictTo;
-import android.support.annotation.RestrictTo.Scope;
-import android.support.v4.util.ArrayMap;
-import android.text.TextUtils;
-import android.view.View;
-import com.taobao.weex.common.Constants.Name;
-import com.taobao.weex.dom.ImmutableDomObject;
-import com.taobao.weex.dom.WXAttr;
-import com.taobao.weex.dom.WXDomObject;
-import com.taobao.weex.dom.WXStyle;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.flat.widget.AndroidViewWidget;
-import com.taobao.weex.ui.flat.widget.Widget;
-import java.util.Map;
-
-//TODO when Weex instance is destroyed, there is a work of garbage collection.
-//TODO !!!!The index of weex playground show empty cell sometimes.
-//TODO The constructor of FlatGUIContext should have a flag decide whether to 
enable flagGUI.
-
-@RestrictTo(Scope.LIBRARY)
-public class FlatGUIIContext {
-
-  private boolean mFlatUIEnabled = true;
-  private Map<WXComponent, WidgetContainer> mWidgetRegistry = new ArrayMap<>();
-  private Map<WXComponent, AndroidViewWidget> mViewWidgetRegistry = new 
ArrayMap<>();
-  private Map<Widget, WXComponent> widgetToComponent = new ArrayMap<>();
-
-  public boolean isFlatUIEnabled(WXComponent component) {
-    return mFlatUIEnabled && component.isFlatUIEnabled();
-  }
-
-  public void register(@NonNull WXComponent descendant, @NonNull 
WidgetContainer ancestor) {
-    if (!(ancestor instanceof FlatComponent) ||
-        ((FlatComponent) ancestor).promoteToView(true)) {
-      mWidgetRegistry.put(descendant, ancestor);
-    }
-  }
-
-  public void register(@NonNull WXComponent component, @NonNull 
AndroidViewWidget viewWidget){
-    mViewWidgetRegistry.put(component, viewWidget);
-  }
-
-  public void register(@NonNull Widget widget, @NonNull WXComponent component){
-    widgetToComponent.put(widget, component);
-  }
-
-  public
-  @Nullable
-  WidgetContainer getFlatComponentAncestor(@NonNull WXComponent flatWidget) {
-    return mWidgetRegistry.get(flatWidget);
-  }
-
-  public
-  @Nullable
-  AndroidViewWidget getAndroidViewWidget(@NonNull WXComponent component) {
-    return mViewWidgetRegistry.get(component);
-  }
-
-  public boolean promoteToView(@NonNull WXComponent component, boolean 
checkAncestor,
-      @NonNull Class<? extends WXComponent<?>> expectedClass) {
-    return !isFlatUIEnabled(component) ||
-        !expectedClass.equals(component.getClass()) ||
-        TextUtils.equals(component.getRef(), WXDomObject.ROOT) ||
-        (checkAncestor && getFlatComponentAncestor(component) == null) ||
-        checkComponent(component);
-  }
-
-  public
-  @Nullable
-  View getWidgetContainerView(Widget widget) {
-    WXComponent component, ancestor;
-    View ret = null;
-    if ((component = getComponent(widget)) != null) {
-      if ((ancestor = getFlatComponentAncestor(component)) != null) {
-        ret = ancestor.getHostView();
-      }
-    }
-    return ret;
-  }
-
-  private @Nullable WXComponent getComponent(@NonNull Widget widget){
-    return widgetToComponent.get(widget);
-  }
-
-  private boolean checkComponent(@NonNull WXComponent component) {
-    boolean ret = false;
-    ImmutableDomObject domObject = component.getDomObject();
-    if (domObject != null) {
-      WXStyle style = domObject.getStyles();
-      WXAttr attr = domObject.getAttrs();
-      //disabled && pro_fixed_size, attr or style
-      if (style.containsKey(Name.OPACITY) ||
-          style.containsKey(Name.TRANSFORM) ||
-          attr.containsKey(Name.ELEVATION) ||
-          attr.containsKey(Name.ARIA_HIDDEN) ||
-          attr.containsKey(Name.ARIA_LABEL) ||
-          attr.containsKey(WXComponent.PROP_FIXED_SIZE) ||
-          style.containsKey(Name.VISIBILITY) ||
-          attr.containsKey(Name.DISABLED) ||
-          style.isFixed() ||
-          style.isSticky() ||
-          !style.getPesudoStyles().isEmpty() ||
-          domObject.getEvents().size() > 0) {
-        ret = true;
-      }
-    }
-    return ret;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/WidgetContainer.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/flat/WidgetContainer.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/flat/WidgetContainer.java
index 68e68a4..f68aaeb 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/WidgetContainer.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/WidgetContainer.java
@@ -56,7 +56,7 @@ public abstract class WidgetContainer<T extends ViewGroup> 
extends WXVContainer<
       if (ret.first != null) {
         WXComponent child = ret.first;
         Widget flatChild;
-        FlatGUIIContext uiImp = getInstance().getFlatUIContext();
+        FlatGUIContext uiImp = getInstance().getFlatUIContext();
         WidgetContainer parent = uiImp.getFlatComponentAncestor(this);
         if (parent == null || uiImp.getAndroidViewWidget(this) != null) {
           parent = this;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/AndroidViewWidget.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/AndroidViewWidget.java
 
b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/AndroidViewWidget.java
index 8f1b873..b7968af 100644
--- 
a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/AndroidViewWidget.java
+++ 
b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/AndroidViewWidget.java
@@ -25,13 +25,13 @@ import android.support.annotation.Nullable;
 import android.support.annotation.RestrictTo;
 import android.support.annotation.RestrictTo.Scope;
 import android.view.View;
-import com.taobao.weex.ui.flat.FlatGUIIContext;
+import com.taobao.weex.ui.flat.FlatGUIContext;
 
 @RestrictTo(Scope.LIBRARY)
 public class AndroidViewWidget extends BaseWidget {
 
   private @Nullable View mView;
-  public AndroidViewWidget(@NonNull FlatGUIIContext context) {
+  public AndroidViewWidget(@NonNull FlatGUIContext context) {
     super(context);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/BaseWidget.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/BaseWidget.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/BaseWidget.java
index aba912f..6e226be 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/BaseWidget.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/BaseWidget.java
@@ -24,11 +24,10 @@ import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.support.annotation.RestrictTo;
 import android.support.annotation.RestrictTo.Scope;
 import android.view.View;
-import com.taobao.weex.ui.flat.FlatGUIIContext;
+import com.taobao.weex.ui.flat.FlatGUIContext;
 import com.taobao.weex.ui.view.border.BorderDrawable;
 
 @RestrictTo(Scope.LIBRARY)
@@ -40,9 +39,10 @@ abstract class BaseWidget implements Widget {
   private int leftOffset, topOffset, rightOffset, bottomOffset;
   private Rect borderBox = new Rect();
   private Point offsetOfContainer = new Point();
-  private final @NonNull FlatGUIIContext context;
+  private final @NonNull
+  FlatGUIContext context;
 
-  BaseWidget(@NonNull FlatGUIIContext context){
+  BaseWidget(@NonNull FlatGUIContext context){
     this.context = context;
   }
 
@@ -77,48 +77,16 @@ abstract class BaseWidget implements Widget {
     invalidate();
   }
 
-  @Override
-  public
-  @NonNull
-  Rect getBorderBox() {
-    return borderBox;
-  }
-
   @NonNull
   @Override
   public Point getLocInFlatContainer() {
     return offsetOfContainer;
   }
 
-  @Nullable
-  @Override
-  public BorderDrawable getBackgroundAndBorder() {
-    return backgroundBorder;
-  }
-
-  @Override
-  public int getLeftOffset() {
-    return leftOffset;
-  }
-
-  @Override
-  public int getTopOffset() {
-    return topOffset;
-  }
-
-  @Override
-  public int getRightOffset() {
-    return rightOffset;
-  }
-
-  @Override
-  public int getBottomOffset() {
-    return bottomOffset;
-  }
-
   @Override
   public final void draw(@NonNull Canvas canvas) {
     canvas.save();
+    //TODO clip according to path, not borderBox
     canvas.clipRect(borderBox);
     canvas.translate(borderBox.left, borderBox.top);
     if (backgroundBorder != null) {
@@ -130,8 +98,7 @@ abstract class BaseWidget implements Widget {
     canvas.restore();
   }
 
-  @Override
-  public void invalidate() {
+  protected void invalidate() {
     Rect dirtyRegion = new Rect(borderBox);
     dirtyRegion.offset(offsetOfContainer.x, offsetOfContainer.y);
     View widgetContainer;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/ImageWidget.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/ImageWidget.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/ImageWidget.java
deleted file mode 100644
index db370db..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/ImageWidget.java
+++ /dev/null
@@ -1,102 +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.ui.flat.widget;
-
-
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RestrictTo;
-import android.support.annotation.RestrictTo.Scope;
-import android.widget.ImageView.ScaleType;
-import com.taobao.weex.adapter.IDrawableLoader.AnimatedTarget;
-import com.taobao.weex.adapter.IDrawableLoader.StaticTarget;
-import com.taobao.weex.ui.component.WXImage;
-import com.taobao.weex.ui.flat.FlatGUIIContext;
-import com.taobao.weex.utils.ImageDrawable;
-import java.util.Arrays;
-
-@RestrictTo(Scope.LIBRARY)
-public class ImageWidget extends BaseWidget implements StaticTarget, 
AnimatedTarget {
-
-  //TODO WXImage.src.readyToRender
-  //TODO blur
-  private Drawable mImageDrawable;
-  private ScaleType mScaleType = WXImage.DEFAULT_SCALE_TYPE;
-  private float[] borderRadius;
-
-  public ImageWidget(@NonNull FlatGUIIContext context) {
-    super(context);
-  }
-
-  @Override
-  public void onDraw(@NonNull Canvas canvas) {
-    if (mImageDrawable != null) {
-      mImageDrawable.draw(canvas);
-    }
-  }
-
-  @Override
-  public void setAnimatedDrawable(@Nullable Drawable drawable) {
-    mImageDrawable = drawable;
-    initDrawable();
-  }
-
-  @Override
-  public void setDrawable(@Nullable Drawable drawable, boolean resetBounds) {
-    setDrawable(drawable);
-  }
-
-  public void setDrawable(@Nullable Drawable imageDrawable) {
-    //As there is a translate operation in BaseWidget,
-    //width and height of the widget instead of borderBox should be passed to 
ImageDrawable.
-    mImageDrawable = ImageDrawable
-        .createImageDrawable(imageDrawable, mScaleType, null,
-            getBorderBox().width() - getLeftOffset() - getRightOffset(),
-            getBorderBox().height() - getTopOffset() - getBottomOffset(), 
false);
-    if (mImageDrawable instanceof ImageDrawable) {
-      if (!Arrays.equals(((ImageDrawable) mImageDrawable).getCornerRadii(), 
borderRadius)) {
-        ((ImageDrawable) mImageDrawable).setCornerRadii(borderRadius);
-      }
-    }
-    initDrawable();
-  }
-
-  public void setScaleType(ScaleType scaleType) {
-    this.mScaleType = scaleType;
-    setDrawable(mImageDrawable);
-  }
-
-  public void setBorderRadius(float[] borderRadius) {
-    this.borderRadius = borderRadius;
-  }
-
-  public @Nullable Drawable getDrawable(){
-    return mImageDrawable;
-  }
-
-  private void initDrawable(){
-    if(mImageDrawable!=null) {
-      mImageDrawable.setBounds(0, 0, getBorderBox().width(), 
getBorderBox().height());
-      setCallback(mImageDrawable);
-      invalidate();
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/TextWidget.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/TextWidget.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/TextWidget.java
index afabc7b..2a69b46 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/TextWidget.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/TextWidget.java
@@ -24,14 +24,14 @@ import android.support.annotation.NonNull;
 import android.support.annotation.RestrictTo;
 import android.support.annotation.RestrictTo.Scope;
 import android.text.Layout;
-import com.taobao.weex.ui.flat.FlatGUIIContext;
+import com.taobao.weex.ui.flat.FlatGUIContext;
 
 @RestrictTo(Scope.LIBRARY)
 public class TextWidget extends BaseWidget {
 
   private Layout mLayout;
 
-  public TextWidget(@NonNull FlatGUIIContext context) {
+  public TextWidget(@NonNull FlatGUIContext context) {
     super(context);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java
index 0b4e724..7de3990 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java
@@ -21,9 +21,7 @@ package com.taobao.weex.ui.flat.widget;
 
 import android.graphics.Canvas;
 import android.graphics.Point;
-import android.graphics.Rect;
 import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.support.annotation.RestrictTo;
 import android.support.annotation.RestrictTo.Scope;
 import com.taobao.weex.ui.view.border.BorderDrawable;
@@ -43,21 +41,6 @@ public interface Widget {
 
   void setContentBox(int leftOffset, int topOffset, int rightOffset, int 
bottomOffset);
 
-  @NonNull Rect getBorderBox();
-
-  @Nullable
-  BorderDrawable getBackgroundAndBorder();
-
   @NonNull Point getLocInFlatContainer();
 
-  int getLeftOffset();
-
-  int getTopOffset();
-
-  int getRightOffset();
-
-  int getBottomOffset();
-
-  void invalidate();
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java
index 433e133..de8ed56 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java
@@ -23,7 +23,7 @@ import android.graphics.Canvas;
 import android.support.annotation.NonNull;
 import android.support.annotation.RestrictTo;
 import android.support.annotation.RestrictTo.Scope;
-import com.taobao.weex.ui.flat.FlatGUIIContext;
+import com.taobao.weex.ui.flat.FlatGUIContext;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -32,7 +32,7 @@ public class WidgetGroup extends BaseWidget {
 
   private List<Widget> mChildren = new LinkedList<>();
 
-  public WidgetGroup(@NonNull FlatGUIIContext context) {
+  public WidgetGroup(@NonNull FlatGUIContext context) {
     super(context);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
index db9a8ec..4156de8 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
@@ -37,7 +37,6 @@ import java.util.List;
  * FrameLayout wrapper
  *
  */
-//TODO Read the code of View.draw, and override the correct method.
 public class WXFrameLayout extends FrameLayout implements 
WXGestureObservable,IRenderStatus<WXDiv>,IRenderResult<WXDiv> {
 
   private WXGesture wxGesture;
@@ -98,7 +97,6 @@ public class WXFrameLayout extends FrameLayout implements 
WXGestureObservable,IR
   protected void dispatchDraw(Canvas canvas) {
     if (mWidgets != null) {
       canvas.save();
-      //TODO need clip here
       canvas.translate(getPaddingLeft(), getPaddingTop());
       for (Widget widget : mWidgets) {
         widget.draw(canvas);

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/test/java/com/taobao/weex/ui/component/WXDivTest.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/test/java/com/taobao/weex/ui/component/WXDivTest.java 
b/android/sdk/src/test/java/com/taobao/weex/ui/component/WXDivTest.java
index 3aa9674..480d5a6 100644
--- a/android/sdk/src/test/java/com/taobao/weex/ui/component/WXDivTest.java
+++ b/android/sdk/src/test/java/com/taobao/weex/ui/component/WXDivTest.java
@@ -27,7 +27,7 @@ import com.taobao.weex.dom.TestDomObject;
 import com.taobao.weex.dom.WXDomObject;
 import com.taobao.weex.dom.WXEvent;
 import com.taobao.weex.dom.flex.Spacing;
-import com.taobao.weex.ui.flat.FlatGUIIContext;
+import com.taobao.weex.ui.flat.FlatGUIContext;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -61,7 +61,7 @@ public class WXDivTest {
     public void setUp() throws Exception {
         WXSDKInstance instance = Mockito.mock(WXSDKInstance.class);
         
Mockito.when(instance.getContext()).thenReturn(RuntimeEnvironment.application);
-        Mockito.when(instance.getFlatUIContext()).thenReturn(new 
FlatGUIIContext());
+        Mockito.when(instance.getFlatUIContext()).thenReturn(new 
FlatGUIContext());
 
         WXDomObject divDom = new WXDomObject();
         WXDomObject spy = Mockito.spy(divDom);
@@ -77,7 +77,7 @@ public class WXDivTest {
     public void testAddChild(){
         WXSDKInstance instance = Mockito.mock(WXSDKInstance.class);
         
Mockito.when(instance.getContext()).thenReturn(RuntimeEnvironment.application);
-        Mockito.when(instance.getFlatUIContext()).thenReturn(new 
FlatGUIIContext());
+        Mockito.when(instance.getFlatUIContext()).thenReturn(new 
FlatGUIContext());
 
         WXDomObject testDom = Mockito.mock(WXDomObject.class);
         Mockito.when(testDom.getPadding()).thenReturn(new Spacing());

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/test/java/com/taobao/weex/ui/component/WXTextTest.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/test/java/com/taobao/weex/ui/component/WXTextTest.java 
b/android/sdk/src/test/java/com/taobao/weex/ui/component/WXTextTest.java
index a12095e..3b6700f 100644
--- a/android/sdk/src/test/java/com/taobao/weex/ui/component/WXTextTest.java
+++ b/android/sdk/src/test/java/com/taobao/weex/ui/component/WXTextTest.java
@@ -32,7 +32,7 @@ import com.taobao.weex.dom.WXDomObject;
 import com.taobao.weex.dom.WXTextDomObject;
 import com.taobao.weex.dom.flex.Spacing;
 import com.taobao.weex.ui.SimpleComponentHolder;
-import com.taobao.weex.ui.flat.FlatGUIIContext;
+import com.taobao.weex.ui.flat.FlatGUIContext;
 import java.util.HashMap;
 import java.util.Map;
 import org.junit.Before;
@@ -59,7 +59,7 @@ public class WXTextTest {
         WXEnvironment.sApplication = RuntimeEnvironment.application;
         WXSDKInstance instance = Mockito.mock(WXSDKInstance.class);
         
Mockito.when(instance.getContext()).thenReturn(RuntimeEnvironment.application);
-        Mockito.when(instance.getFlatUIContext()).thenReturn(new 
FlatGUIIContext());
+        Mockito.when(instance.getFlatUIContext()).thenReturn(new 
FlatGUIContext());
 
         mParentDomObj = Mockito.spy(new WXDomObject());
         Mockito.when(mParentDomObj.getPadding()).thenReturn(new Spacing());


Reply via email to