You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by gu...@apache.org on 2017/09/26 02:20:15 UTC
[18/51] [abbrv] incubator-weex git commit: Revert "+ [android]
support the box-shadow attribute on android 4.3 or higher"
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/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
deleted file mode 100644
index 761d3b0..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java
+++ /dev/null
@@ -1,51 +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.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;
-
-@RestrictTo(Scope.LIBRARY)
-public interface Widget {
-
- public static final String TAG = "Widget";
-
- void draw(@NonNull Canvas canvas);
-
- void onDraw(@NonNull Canvas canvas);
-
- void setBackgroundAndBorder(@NonNull BorderDrawable backgroundBorder);
-
- void setLayout(int width, int height, int left, int right, int top, int bottom, Point offset);
-
- void setContentBox(int leftOffset, int topOffset, int rightOffset, int bottomOffset);
-
- @NonNull Point getLocInFlatContainer();
-
- @Nullable BorderDrawable getBackgroundAndBorder();
-
- @NonNull Rect getBorderBox();
-}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/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
deleted file mode 100644
index 42ca263..0000000
--- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java
+++ /dev/null
@@ -1,54 +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.support.annotation.NonNull;
-import android.support.annotation.RestrictTo;
-import android.support.annotation.RestrictTo.Scope;
-import com.taobao.weex.ui.flat.FlatGUIContext;
-import java.util.LinkedList;
-import java.util.List;
-
-@RestrictTo(Scope.LIBRARY)
-public class WidgetGroup extends BaseWidget {
-
- private List<Widget> mChildren = new LinkedList<>();
-
- public WidgetGroup(@NonNull FlatGUIContext context) {
- super(context);
- }
-
- public void replaceAll(@NonNull List<Widget> widgets) {
- mChildren = widgets;
- invalidate();
- }
-
- public List<Widget> getChildren() {
- return mChildren;
- }
-
- @Override
- public void onDraw(@NonNull Canvas canvas) {
- for (Widget child : mChildren) {
- child.draw(canvas);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/ui/module/WXTimerModule.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/module/WXTimerModule.java b/android/sdk/src/main/java/com/taobao/weex/ui/module/WXTimerModule.java
index ae0ed99..caa28a6 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/module/WXTimerModule.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/module/WXTimerModule.java
@@ -27,7 +27,6 @@ import static com.taobao.weex.common.WXJSBridgeMsgType.MODULE_TIMEOUT;
import android.os.Handler;
import android.os.Message;
-import android.support.annotation.FloatRange;
import android.support.annotation.IntDef;
import android.support.annotation.IntRange;
import android.support.annotation.VisibleForTesting;
@@ -64,16 +63,16 @@ public class WXTimerModule extends WXModule implements Destroyable, Handler.Call
@JSMethod(uiThread = false)
- public void setTimeout(@IntRange(from = 1) int funcId, @FloatRange(from = 0) float delay) {
+ public void setTimeout(@IntRange(from = 1) int funcId, @IntRange(from = 0) int delay) {
if(mWXSDKInstance != null) {
- postOrHoldMessage(MODULE_TIMEOUT, funcId, (int) delay, Integer.parseInt(mWXSDKInstance.getInstanceId()));
+ postOrHoldMessage(MODULE_TIMEOUT, funcId, delay, Integer.parseInt(mWXSDKInstance.getInstanceId()));
}
}
@JSMethod(uiThread = false)
- public void setInterval(@IntRange(from = 1) int funcId, @FloatRange(from = 0) float interval) {
+ public void setInterval(@IntRange(from = 1) int funcId, @IntRange(from = 0) int interval) {
if(mWXSDKInstance != null) {
- postOrHoldMessage(MODULE_INTERVAL, funcId, (int) interval, Integer.parseInt(mWXSDKInstance.getInstanceId()));
+ postOrHoldMessage(MODULE_INTERVAL, funcId, interval, Integer.parseInt(mWXSDKInstance.getInstanceId()));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/ui/view/WXBaseCircleIndicator.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXBaseCircleIndicator.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXBaseCircleIndicator.java
index 5983f2d..1fdba29 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXBaseCircleIndicator.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXBaseCircleIndicator.java
@@ -37,6 +37,7 @@ import com.taobao.weex.utils.WXViewUtils;
public class WXBaseCircleIndicator extends FrameLayout implements OnPageChangeListener, WXGestureObservable {
private final Paint mPaintPage = new Paint();
+ private final Paint mPaintStroke = new Paint();
private final Paint mPaintFill = new Paint();
private WXGesture wxGesture;
private WXCircleViewPager mCircleViewPager;
@@ -52,24 +53,38 @@ public class WXBaseCircleIndicator extends FrameLayout implements OnPageChangeLi
/**
* Fill color of unselected circle
*/
- private int pageColor = Color.LTGRAY;
+ private int pageColor;
/**
* Fill color of the selected circle
*/
- private int fillColor = Color.DKGRAY;
+ private int fillColor;
private int realCurrentItem;
+ private OnPageChangeListener mListener;
public WXBaseCircleIndicator(Context context) {
super(context);
+ getAttrs(context);
init();
}
- private void init() {
+ /**
+ * Get attribute of xml
+ */
+ private void getAttrs(Context context) {
radius = WXViewUtils.dip2px(5);
circlePadding = WXViewUtils.dip2px(5);
- pageColor = Color.LTGRAY;
- fillColor = Color.DKGRAY;
+ pageColor = Color.parseColor("#ffffff");
+ // strokeWidth= WAViewUtils.dip2px((float)1.5);
+ // strokeColor = Color.parseColor("#FFDDDDDD");
+ fillColor = Color.parseColor("#ffd545");
+ }
+
+ private void init() {
+ mPaintStroke.setAntiAlias(true);
+ mPaintStroke.setStyle(Style.STROKE);
+ // mPaintStroke.setColor(strokeColor);
+ // mPaintStroke.setStrokeWidth(strokeWidth);
mPaintFill.setStyle(Style.FILL);
mPaintFill.setAntiAlias(true);
@@ -87,9 +102,21 @@ public class WXBaseCircleIndicator extends FrameLayout implements OnPageChangeLi
*/
public WXBaseCircleIndicator(Context context, AttributeSet attrs) {
super(context, attrs);
+ getAttrs(context);
init();
}
+ public void setOnPageChangeListener(OnPageChangeListener listener) {
+ mListener = listener;
+ }
+
+ /**
+ * @return the mCircleViewPager
+ */
+ public WXCircleViewPager getCircleViewPager() {
+ return mCircleViewPager;
+ }
+
/**
* @param mCircleViewPager the mCircleViewPager to set
*/
@@ -98,27 +125,38 @@ public class WXBaseCircleIndicator extends FrameLayout implements OnPageChangeLi
if (this.mCircleViewPager != null) {
this.mCircleViewPager.addOnPageChangeListener(this);
this.realCurrentItem = mCircleViewPager.getRealCurrentItem();
- if (realCurrentItem < 0) {
- realCurrentItem = 0;
- }
}
requestLayout();
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-
+ if (mListener != null) {
+ mListener.onPageScrolled(position, positionOffset, positionOffsetPixels);
+ }
}
@Override
public void onPageSelected(int position) {
realCurrentItem = mCircleViewPager.getRealCurrentItem();
invalidate();
+ if (mListener != null) {
+ mListener.onPageSelected(position);
+ }
}
@Override
public void onPageScrollStateChanged(int state) {
+ if (mListener != null) {
+ mListener.onPageScrollStateChanged(state);
+ }
+ }
+ /**
+ * @return the radius
+ */
+ public float getRadius() {
+ return radius;
}
/**
@@ -129,6 +167,27 @@ public class WXBaseCircleIndicator extends FrameLayout implements OnPageChangeLi
}
/**
+ * @return the circlePadding
+ */
+ public float getCirclePadding() {
+ return circlePadding;
+ }
+
+ /**
+ * @param circlePadding the circlePadding to set
+ */
+ public void setCirclePadding(float circlePadding) {
+ this.circlePadding = circlePadding;
+ }
+
+ /**
+ * @return the fillColor
+ */
+ public int getFillColor() {
+ return fillColor;
+ }
+
+ /**
* @param fillColor the fillColor to set
*/
public void setFillColor(int fillColor) {
@@ -153,9 +212,36 @@ public class WXBaseCircleIndicator extends FrameLayout implements OnPageChangeLi
*/
public void setRealCurrentItem(int realCurrentItem) {
this.realCurrentItem = realCurrentItem;
- invalidate();
}
+ // /**
+ // * @return the strokeColor
+ // */
+ // public int getStrokeColor() {
+ // return strokeColor;
+ // }
+ //
+ // /**
+ // * @param strokeColor the strokeColor to set
+ // */
+ // public void setStrokeColor(int strokeColor) {
+ // this.strokeColor = strokeColor;
+ // }
+ //
+ // /**
+ // * @return the strokeWidth
+ // */
+ // public float getStrokeWidth() {
+ // return strokeWidth;
+ // }
+ //
+ // /**
+ // * @param strokeWidth the strokeWidth to set
+ // */
+ // public void setStrokeWidth(float strokeWidth) {
+ // this.strokeWidth = strokeWidth;
+ // }
+
@Override
public void registerGestureListener(WXGesture wxGesture) {
this.wxGesture = wxGesture;
@@ -172,22 +258,29 @@ public class WXBaseCircleIndicator extends FrameLayout implements OnPageChangeLi
@Override
protected void onDraw(Canvas canvas) {
+ // TODO Auto-generated method stub
super.onDraw(canvas);
- float dotWidth = (circlePadding + radius) * 2;
-
- float firstCenterX = getWidth() / 2 - (dotWidth * (getCount() - 1) / 2);
- float firstCenterY = getHeight() / 2 + getPaddingTop();
+ float firstX = getWidth() / 2 + getPaddingLeft() - getCount() / 2.0f * (radius + circlePadding);// + radius;
+ float firstY = getHeight() / 2 + getPaddingTop();// + radius;
+ //draw stroked circles
for (int i = 0; i < getCount(); i++) {
- float dx = firstCenterX + dotWidth * i;
- float dy = firstCenterY;
- if (i != realCurrentItem) {
+ float dx = firstX + circlePadding * i + radius * 2 * i;
+ float dy = firstY;
+ if (mPaintStroke.getStrokeWidth() > 0) {
+ canvas.drawCircle(dx, dy, radius, mPaintStroke);
+ }
+
+ if (mPaintPage.getAlpha() > 0) {
canvas.drawCircle(dx, dy, radius, mPaintPage);
- } else {
- canvas.drawCircle(dx, dy, radius, mPaintFill);
}
}
+
+ //Draw the filled circle
+ float dx = firstX + realCurrentItem * circlePadding + radius * 2 * realCurrentItem;
+ float dy = firstY;
+ canvas.drawCircle(dx, dy, radius, mPaintFill);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/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 28c7cef..ec39462 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
@@ -20,19 +20,16 @@ package com.taobao.weex.ui.view;
import android.content.Context;
import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.MotionEvent;
import android.widget.FrameLayout;
+
import com.taobao.weex.ui.component.WXDiv;
-import com.taobao.weex.ui.flat.widget.Widget;
import com.taobao.weex.ui.view.gesture.WXGesture;
import com.taobao.weex.ui.view.gesture.WXGestureObservable;
-import com.taobao.weex.utils.WXLogUtils;
import com.taobao.weex.utils.WXViewUtils;
+
import java.lang.ref.WeakReference;
-import java.util.List;
/**
* FrameLayout wrapper
@@ -44,8 +41,6 @@ public class WXFrameLayout extends FrameLayout implements WXGestureObservable,IR
private WeakReference<WXDiv> mWeakReference;
- private List<Widget> mWidgets;
-
public WXFrameLayout(Context context) {
super(context);
}
@@ -65,6 +60,12 @@ public class WXFrameLayout extends FrameLayout implements WXGestureObservable,IR
}
@Override
+ protected void onDraw(Canvas canvas) {
+ WXViewUtils.clipCanvasWithinBorderBox(this, canvas);
+ super.onDraw(canvas);
+ }
+
+ @Override
public void holdComponent(WXDiv component) {
mWeakReference = new WeakReference<WXDiv>(component);
}
@@ -74,42 +75,4 @@ public class WXFrameLayout extends FrameLayout implements WXGestureObservable,IR
public WXDiv getComponent() {
return null != mWeakReference ? mWeakReference.get() : null;
}
-
- public void mountFlatGUI(List<Widget> widgets){
- this.mWidgets = widgets;
- if (mWidgets != null) {
- setWillNotDraw(true);
- }
- invalidate();
- }
-
- public void unmountFlatGUI(){
- mWidgets = null;
- setWillNotDraw(false);
- invalidate();
- }
-
- @Override
- protected boolean verifyDrawable(@NonNull Drawable who) {
- return mWidgets != null || super.verifyDrawable(who);
- }
-
- @Override
- protected void dispatchDraw(Canvas canvas) {
- try {
- if (mWidgets != null) {
- canvas.save();
- canvas.translate(getPaddingLeft(), getPaddingTop());
- for (Widget widget : mWidgets) {
- widget.draw(canvas);
- }
- canvas.restore();
- } else {
- WXViewUtils.clipCanvasWithinBorderBox(this, canvas);
- super.dispatchDraw(canvas);
- }
- }catch (Throwable e){
- WXLogUtils.e("FlatGUI Crashed when dispatchDraw", WXLogUtils.getStackTrace(e));
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BorderCorner.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BorderCorner.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BorderCorner.java
index 07ff38f..a396063 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BorderCorner.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BorderCorner.java
@@ -31,15 +31,13 @@ abstract class BorderCorner {
private final float mPreBorderWidth;
private final float mPostBorderWidth;
private final RectF mBorderBox;
- protected final float mAngleBisector;
- BorderCorner(float cornerRadius, float preBorderWidth, float postBorderWidth,
- @NonNull RectF borderBox, float angleBisector) {
+ BorderCorner(float cornerRadius, float preBorderWidth, float postBorderWidth, @NonNull RectF
+ borderBox) {
mCornerRadius = cornerRadius;
mPreBorderWidth = preBorderWidth;
mPostBorderWidth = postBorderWidth;
mBorderBox = borderBox;
- mAngleBisector = angleBisector;
}
/**
@@ -63,26 +61,18 @@ abstract class BorderCorner {
return getOuterCornerRadius() > 0 && !FloatUtil.floatsEqual(0, getOuterCornerRadius());
}
- protected final float getPreBorderWidth() {
+ protected float getPreBorderWidth() {
return mPreBorderWidth;
}
- protected final float getPostBorderWidth() {
+ protected float getPostBorderWidth() {
return mPostBorderWidth;
}
- protected final float getOuterCornerRadius() {
+ protected float getOuterCornerRadius() {
return mCornerRadius;
}
- protected final float getAngleBisectorDegree(){
- return mAngleBisector;
- }
-
- protected final RectF getBorderBox() {
- return mBorderBox;
- }
-
/**
* Get the staring point of the corner.
* @return the starting point of the corner.
@@ -98,6 +88,12 @@ abstract class BorderCorner {
return lineStart;
}
+ @NonNull
+ abstract protected PointF getRoundCornerStart();
+
+ @NonNull
+ abstract protected PointF getSharpCornerVertex();
+
/**
* Get the ending point of the corner.
* @return the ending point of the corner.
@@ -114,14 +110,10 @@ abstract class BorderCorner {
}
@NonNull
- abstract protected PointF getRoundCornerStart();
-
- @NonNull
- abstract protected PointF getSharpCornerVertex();
-
- @NonNull
abstract protected PointF getRoundCornerEnd();
+ abstract protected float getAngleBisectorDegree();
+
@NonNull
abstract protected PointF getSharpCornerStart();
@@ -134,4 +126,7 @@ abstract class BorderCorner {
@NonNull
abstract protected RectF getOvalIfInnerCornerNotExist();
+ protected RectF getBorderBox() {
+ return mBorderBox;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BorderUtil.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BorderUtil.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BorderUtil.java
index b768eb5..4ce218e 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BorderUtil.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BorderUtil.java
@@ -78,4 +78,30 @@ class BorderUtil {
}
}
}
+
+ static boolean areEdgesSame(float... numbers) {
+ if (numbers != null && numbers.length > 0) {
+ float init = numbers[0];
+ for (float number : numbers) {
+ if (number != init) {
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ static boolean areEdgesSame(int... numbers) {
+ if (numbers != null && numbers.length > 0) {
+ int init = numbers[0];
+ for (int number : numbers) {
+ if (number != init) {
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BottomLeftCorner.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BottomLeftCorner.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BottomLeftCorner.java
index 3c01a76..cf24477 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BottomLeftCorner.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BottomLeftCorner.java
@@ -25,7 +25,12 @@ import android.support.annotation.NonNull;
class BottomLeftCorner extends BorderCorner {
BottomLeftCorner(float cornerRadius, float preBorderWidth, float postBorderWidth, @NonNull RectF borderBox) {
- super(cornerRadius, preBorderWidth, postBorderWidth, borderBox, 135);
+ super(cornerRadius, preBorderWidth, postBorderWidth, borderBox);
+ }
+
+ @Override
+ protected float getAngleBisectorDegree() {
+ return 135;
}
@NonNull
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BottomRightCorner.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BottomRightCorner.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BottomRightCorner.java
index 2ed50a4..de444c1 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BottomRightCorner.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/BottomRightCorner.java
@@ -25,7 +25,12 @@ import android.support.annotation.NonNull;
class BottomRightCorner extends BorderCorner {
BottomRightCorner(float cornerRadius, float preBorderWidth, float postBorderWidth, @NonNull RectF borderBox) {
- super(cornerRadius, preBorderWidth, postBorderWidth, borderBox, 45);
+ super(cornerRadius, preBorderWidth, postBorderWidth, borderBox);
+ }
+
+ @Override
+ protected float getAngleBisectorDegree() {
+ return 45;
}
@NonNull
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/ui/view/border/TopLeftCorner.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/TopLeftCorner.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/TopLeftCorner.java
index e83706f..ce63c4b 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/TopLeftCorner.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/TopLeftCorner.java
@@ -25,7 +25,12 @@ import android.support.annotation.NonNull;
class TopLeftCorner extends BorderCorner {
TopLeftCorner(float cornerRadius, float preBorderWidth, float postBorderWidth, @NonNull RectF borderBox) {
- super(cornerRadius, preBorderWidth, postBorderWidth, borderBox, 225);
+ super(cornerRadius, preBorderWidth, postBorderWidth, borderBox);
+ }
+
+ @Override
+ protected float getAngleBisectorDegree() {
+ return 225;
}
@NonNull
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/ui/view/border/TopRightCorner.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/TopRightCorner.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/TopRightCorner.java
index 0ea4377..77a513f 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/border/TopRightCorner.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/border/TopRightCorner.java
@@ -25,7 +25,12 @@ import android.support.annotation.NonNull;
class TopRightCorner extends BorderCorner {
TopRightCorner(float cornerRadius, float preBorderWidth, float postBorderWidth, @NonNull RectF borderBox) {
- super(cornerRadius, preBorderWidth, postBorderWidth, borderBox, 315);
+ super(cornerRadius, preBorderWidth, postBorderWidth, borderBox);
+ }
+
+ @Override
+ protected float getAngleBisectorDegree() {
+ return 315;
}
@NonNull
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/utils/FunctionParser.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/FunctionParser.java b/android/sdk/src/main/java/com/taobao/weex/utils/FunctionParser.java
index ba9103e..e138213 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/FunctionParser.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/FunctionParser.java
@@ -227,6 +227,12 @@ public class FunctionParser<K, V> {
return true;
}
+ private void reset() {
+ pointer = 0;
+ value = null;
+ current = null;
+ }
+
private boolean isCharacterOrDigit(char letter) {
return (ZERO <= letter && letter <= NINE) || (A_LOWER <= letter && letter <= Z_LOWER) ||
(A_UPPER <= letter && letter <= Z_UPPER);
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/utils/LogLevel.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/LogLevel.java b/android/sdk/src/main/java/com/taobao/weex/utils/LogLevel.java
index 0e10fa1..95dfd8a 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/LogLevel.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/LogLevel.java
@@ -24,8 +24,8 @@ import android.util.Log;
* Created by lixinke on 16/5/11.
*/
public enum LogLevel {
- WTF("wtf", 0, Log.ASSERT), ERROR("error", 1, Log.ERROR), WARN("warn", 2,Log.WARN), INFO("info", 3,Log.INFO),
- DEBUG("debug", 4,Log.DEBUG), VERBOSE("verbose", 5, Log.VERBOSE), ALL("debug", 6,Log.DEBUG),OFF("off",7,Log.DEBUG),;
+ ERROR("error", 0, Log.ERROR), WARN("warn", 1,Log.WARN), INFO("info", 2,Log.INFO),
+ DEBUG("debug", 3,Log.DEBUG), VERBOSE("verbose", 4, Log.VERBOSE), ALL("debug", 5,Log.DEBUG),OFF("off",6,Log.DEBUG);
String name;
int value;
int priority;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/utils/OsVersion.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/OsVersion.java b/android/sdk/src/main/java/com/taobao/weex/utils/OsVersion.java
index 7c53095..ef2f0c9 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/OsVersion.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/OsVersion.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package com.taobao.weex.utils;
+package com.taobao.weex.util;
/**
* Android OS version utilities.
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/utils/Trace.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/Trace.java b/android/sdk/src/main/java/com/taobao/weex/utils/Trace.java
index cfe307e..7506804 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/Trace.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/Trace.java
@@ -21,6 +21,8 @@ package com.taobao.weex.utils;
import android.annotation.TargetApi;
import android.os.Build;
+import com.taobao.weex.util.OsVersion;
+
/**
* Hepler class for systrace.
*
@@ -80,7 +82,7 @@ public class Trace {
/**
* Writes a trace message to indicate that a given section of code has ended.
- * This call must be preceeded by a corresponding call to {@link #beginSection(String)}
+ * This call must be preceeded by a corresponding call to {@link #beginSection()}
* on the same thread.
*/
public static void endSection() {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java b/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java
index 4f1b818..43246ea 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java
@@ -105,10 +105,6 @@ public class WXLogUtils {
d(tag,new String(msg));
}
- public static void wtf(String msg){
- wtf(WEEX_TAG, msg);
- }
-
public static void d(String tag, String msg) {
if (WXEnvironment.isApkDebugable() && !TextUtils.isEmpty(msg) && WXEnvironment.sLogLevel.compare(LogLevel.DEBUG) >= 0) {
Log.d(tag, msg);
@@ -174,10 +170,6 @@ public class WXLogUtils {
log(tag, msg,LogLevel.ERROR);
}
- public static void wtf(String tag, String msg){
- log(tag, msg, LogLevel.WTF);
- }
-
/**
* 'p' for 'Performance', use {@link #WEEX_PERF_TAG}
* @param msg
@@ -216,12 +208,6 @@ public class WXLogUtils {
}
}
- public static void wtf(String prefix, Throwable e){
- if (WXEnvironment.isApkDebugable()) {
- wtf(prefix + getStackTrace(e));
- }
- }
-
/**
* 'p' for 'Performance', use {@link #WEEX_PERF_TAG}
*/
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/main/java/com/taobao/weex/utils/WXViewUtils.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/WXViewUtils.java b/android/sdk/src/main/java/com/taobao/weex/utils/WXViewUtils.java
index 7d11d5a..fb9ab8b 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/WXViewUtils.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/WXViewUtils.java
@@ -40,8 +40,6 @@ import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.WXSDKManager;
import com.taobao.weex.common.Constants;
import com.taobao.weex.common.WXRuntimeException;
-import com.taobao.weex.ui.flat.widget.Widget;
-import com.taobao.weex.ui.flat.widget.WidgetGroup;
import com.taobao.weex.ui.view.border.BorderDrawable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -391,22 +389,6 @@ public class WXViewUtils {
}
}
- public static void clipCanvasWithinBorderBox(Widget widget, Canvas canvas) {
- BorderDrawable borderDrawable;
- if (clipCanvasDueToAndroidVersion(canvas) &&
- clipCanvasIfAnimationExist() &&
- (borderDrawable=widget.getBackgroundAndBorder())!=null ) {
- if (borderDrawable.isRounded() && clipCanvasIfBackgroundImageExist(widget, borderDrawable)) {
- Path path = borderDrawable.getContentPath(
- new RectF(0, 0, widget.getBorderBox().width(), widget.getBorderBox().height()));
- canvas.clipPath(path);
- }
- else {
- canvas.clipRect(widget.getBorderBox());
- }
- }
- }
-
/**
* According to https://developer.android.com/guide/topics/graphics/hardware-accel.html#unsupported
API 18 or higher supports clipPath to canvas based on hardware acceleration.
@@ -454,17 +436,4 @@ public class WXViewUtils {
}
return true;
}
-
- private static boolean clipCanvasIfBackgroundImageExist(@NonNull Widget widget,
- @NonNull BorderDrawable borderDrawable) {
- if (widget instanceof WidgetGroup) {
- for (Widget child : ((WidgetGroup) widget).getChildren()) {
- if (child.getBackgroundAndBorder().hasImage() &&
- Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
- return false;
- }
- }
- }
- return true;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/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 480d5a6..53b52c3 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
@@ -18,8 +18,6 @@
*/
package com.taobao.weex.ui.component;
-import static org.junit.Assert.assertEquals;
-
import com.taobao.weappplus_sdk.BuildConfig;
import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.WXSDKInstanceTest;
@@ -27,15 +25,21 @@ 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.FlatGUIContext;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mock;
import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.robolectric.RobolectricTestRunner;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import static org.junit.Assert.*;
+
/**
* Created by gulin on 16/2/24.
*/
@@ -61,7 +65,6 @@ 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 FlatGUIContext());
WXDomObject divDom = new WXDomObject();
WXDomObject spy = Mockito.spy(divDom);
@@ -77,7 +80,6 @@ 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 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/7b2150a5/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 3b6700f..0181457 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
@@ -18,11 +18,6 @@
*/
package com.taobao.weex.ui.component;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
import com.taobao.weappplus_sdk.BuildConfig;
import com.taobao.weex.WXEnvironment;
import com.taobao.weex.WXSDKInstance;
@@ -32,9 +27,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.FlatGUIContext;
-import java.util.HashMap;
-import java.util.Map;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -43,6 +36,14 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
/**
* Created by gulin on 16/2/4.
*/
@@ -59,7 +60,6 @@ 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 FlatGUIContext());
mParentDomObj = Mockito.spy(new WXDomObject());
Mockito.when(mParentDomObj.getPadding()).thenReturn(new Spacing());
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/android/sdk/src/test/java/com/taobao/weex/ui/module/WXTimerModuleTest.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/test/java/com/taobao/weex/ui/module/WXTimerModuleTest.java b/android/sdk/src/test/java/com/taobao/weex/ui/module/WXTimerModuleTest.java
index f4331b0..7fe508c 100644
--- a/android/sdk/src/test/java/com/taobao/weex/ui/module/WXTimerModuleTest.java
+++ b/android/sdk/src/test/java/com/taobao/weex/ui/module/WXTimerModuleTest.java
@@ -18,8 +18,6 @@
*/
package com.taobao.weex.ui.module;
-import static android.R.attr.end;
-import static android.R.attr.start;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Matchers.any;
@@ -63,7 +61,6 @@ public class WXTimerModuleTest {
public final static int DELAY = 50;
public final static int IMMEDIATELY = 0;
public final static int INVALID_DELAY = -50;
- public final static float FLOAT_DELAY = 20.6f;
@Rule
public PowerMockRule rule = new PowerMockRule();
@@ -87,26 +84,7 @@ public class WXTimerModuleTest {
@Test
public void testSetTimeoutDelay() throws Exception {
module.setTimeout(VALID_FUNC_ID, DELAY);
- long start, end, duration;
- start = mLooper.getScheduler().getCurrentTime();
- mLooper.runOneTask();
- end = mLooper.getScheduler().getCurrentTime();
- duration = end - start;
-
- assertThat(duration, is((long) DELAY));
- Mockito.verify(module, times(1)).handleMessage(any(Message.class));
- }
-
- @Test
- public void testSetTimeoutDelay2() throws Exception {
- module.setTimeout(VALID_FUNC_ID, FLOAT_DELAY);
- long start, end, duration;
- start = mLooper.getScheduler().getCurrentTime();
- mLooper.runOneTask();
- end = mLooper.getScheduler().getCurrentTime();
- duration = end - start;
-
- assertThat(duration, is((long) FLOAT_DELAY));
+ mLooper.idle(DELAY);
Mockito.verify(module, times(1)).handleMessage(any(Message.class));
}
@@ -186,23 +164,6 @@ public class WXTimerModuleTest {
}
@Test
- public void testSetIntervalDelay2() {
- long start, end, duration;
- module.setInterval(VALID_FUNC_ID, FLOAT_DELAY);
-
- start = mLooper.getScheduler().getCurrentTime();
- mLooper.runOneTask();
- end = mLooper.getScheduler().getCurrentTime();
- duration = end - start;
-
- assertThat(duration, is((long) FLOAT_DELAY));
-
- mLooper.runOneTask();
- mLooper.runOneTask();
- Mockito.verify(module, times(3)).handleMessage(any(Message.class));
- }
-
- @Test
public void testClearTimeout() throws Exception {
module.setTimeout(VALID_FUNC_ID, DELAY);
module.clearTimeout(VALID_FUNC_ID);
@@ -219,7 +180,7 @@ public class WXTimerModuleTest {
}
@Test
- public void testClearTimeout2(){
+ public void setClearTimeout2(){
module.setTimeout(NO_CACHING_FUNC_ID, DELAY);
module.clearTimeout(NO_CACHING_FUNC_ID);
mLooper.idle(DELAY, TimeUnit.MILLISECONDS);
@@ -227,7 +188,7 @@ public class WXTimerModuleTest {
}
@Test
- public void testClearInterval2(){
+ public void setClearInterval2(){
module.setInterval(NO_CACHING_FUNC_ID, DELAY);
module.clearInterval(NO_CACHING_FUNC_ID);
mLooper.idle(DELAY, TimeUnit.MILLISECONDS);
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/dangerfile-android.js
----------------------------------------------------------------------
diff --git a/dangerfile-android.js b/dangerfile-android.js
deleted file mode 100644
index 2e81f0a..0000000
--- a/dangerfile-android.js
+++ /dev/null
@@ -1,108 +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.
- */
-// Removed import
-import fs from "fs";
-import path from 'path';
-import GitHubApi from 'github';
-import parseDiff from 'parse-diff';
-import shell from "shelljs";
-
-const type_unknown = 0;
-const type_ios_sdk = 1;
-const type_android_sdk = 2;
-const type_ios_test = 3;
-const type_android_test = 4;
-const type_jsfm = 5;
-const type_jsfm_test = 6;
-const type_doc = 7;
-const type_ui_test = 8;
-
-const getFileType = file => {
- if (file.match(/WeexSDK\/Sources\/.+\.(m|h|mm)/)) {
- return type_ios_sdk;
- } else if (file.match(/WeexSDKTests\//)) {
- return type_ios_test;
- } else if (file.match(/android\/sdk\/src\/test\/.+\.java/)) {
- return type_android_test;
- } else if (file.match(/android\/sdk\/src\/main\/java\/.+\.java/)) {
- return type_android_sdk;
- } else if (
- file.match(/html5\/(shared|frameworks|render|runtime|services)\/.+\.js/)
- ) {
- return type_jsfm;
- } else if (file.match(/html5\/test\/.+\.js/)) {
- return type_jsfm_test;
- } else if (file.match(/doc\/\.+\.md/)) {
- return type_doc;
- } else if(file.match(/test\/scripts\/.+\.js/) || file.match(/test\/pages\/.+\.vue/)){
- return type_ui_test
- }else{
- return type_unknown
- }
-}
-
-function checkAndroidFile(file){
- var type = getFileType(file);
- return type == type_android_test || type == type_android_sdk || type == type_jsfm;
-}
-
-var hasAndroidFile = false;
-
-if (!hasAndroidFile && danger.git.created_files) {
- danger.git.created_files.some(file => {
- var f = checkAndroidFile(file);
- if(f){
- hasAndroidFile =f;
- }
- return f;
- });
-}
-if (!hasAndroidFile && danger.git.modified_files) {
- danger.git.modified_files.some(file => {
- var f = checkAndroidFile(file);
- if(f){
- hasAndroidFile =f;
- }
- return f;
- });
-}
-if (!hasAndroidFile && danger.git.deleted_files) {
- danger.git.deleted_files.some(file => {
- var f = checkAndroidFile(file);
- if(f){
- hasAndroidFile =f;
- }
- return f;
- });
-}
-
-if(hasAndroidFile){
- var runTestCmd='source ~/.bash_profile; '
- +'cd android; '
- +'./gradlew clean assembleDebug :weex_sdk:testDebugUnitTest --info -PdisableCov=true '
- +'-Dorg.gradle.daemon=true -Dorg.gradle.parallel=true -Dorg.gradle.jvmargs="-Xmx512m '
- +'-XX:+HeapDumpOnOutOfMemoryError" -Dfile.encoding=UTF-8 '
- var runSuccess = shell.exec(runTestCmd,{ async: false, timeout: 8 * 60 * 1000 }).code == 0;
- if(!runSuccess){
- fail("android platform run unit test failed!");
- }
-}else{
- message('has no android file changed,skip test!');
-}
-
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/dangerfile-ios.js
----------------------------------------------------------------------
diff --git a/dangerfile-ios.js b/dangerfile-ios.js
deleted file mode 100644
index 079e516..0000000
--- a/dangerfile-ios.js
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-// Removed import
-import fs from "fs";
-import path from 'path';
-import GitHubApi from 'github';
-import parseDiff from 'parse-diff';
-import shell from "shelljs";
-
-const type_unknown = 0;
-const type_ios_sdk = 1;
-const type_android_sdk = 2;
-const type_ios_test = 3;
-const type_android_test = 4;
-const type_jsfm = 5;
-const type_jsfm_test = 6;
-const type_doc = 7;
-const type_ui_test = 8;
-
-const getFileType = file => {
- if (file.match(/WeexSDK\/Sources\/.+\.(m|h|mm)/)) {
- return type_ios_sdk;
- } else if (file.match(/WeexSDKTests\//)) {
- return type_ios_test;
- } else if (file.match(/android\/sdk\/src\/test\/.+\.java/)) {
- return type_android_test;
- } else if (file.match(/android\/sdk\/src\/main\/java\/.+\.java/)) {
- return type_android_sdk;
- } else if (
- file.match(/html5\/(shared|frameworks|render|runtime|services)\/.+\.js/)
- ) {
- return type_jsfm;
- } else if (file.match(/html5\/test\/.+\.js/)) {
- return type_jsfm_test;
- } else if (file.match(/doc\/\.+\.md/)) {
- return type_doc;
- } else if(file.match(/test\/scripts\/.+\.js/) || file.match(/test\/pages\/.+\.vue/)){
- return type_ui_test
- }else{
- return type_unknown
- }
-}
-
-function checkIosFile(file){
- var type = getFileType(file);
- return type == type_ios_sdk || type == type_ios_test || type == type_jsfm;
-}
-
-var hasIosFile = false;
-
-if (!hasIosFile && danger.git.created_files) {
- danger.git.created_files.some(file => {
- var f = checkIosFile(file);
- if(f){
- hasIosFile =f;
- }
- return f;
- });
-}
-if (!hasIosFile && danger.git.modified_files) {
- danger.git.modified_files.some(file => {
- var f = checkIosFile(file);
- if(f){
- hasIosFile =f;
- }
- return f;
- });
-}
-if (!hasIosFile && danger.git.deleted_files) {
- danger.git.deleted_files.some(file => {
- var f = checkIosFile(file);
- if(f){
- hasIosFile =f;
- }
- return f;
- });
-}
-
-if(hasIosFile){
- var runTestCmd='source ~/.bash_profile; '
- +'xcodebuild -project ios/sdk/WeexSDK.xcodeproj test '
- +'-scheme WeexSDKTests CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO '
- +'-destination "platform=iOS Simulator,name=iPhone 6"'
- runSuccess = shell.exec(runTestCmd,{ async: false, timeout: 8 * 60 * 1000 }).code == 0;
- if(!runSuccess){
- fail("ios platform run unit test failed!");
- }
-}else{
- message('has no ios file changed,skip test!');
-}
-
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/dangerfile-jsfm.js
----------------------------------------------------------------------
diff --git a/dangerfile-jsfm.js b/dangerfile-jsfm.js
deleted file mode 100644
index 64b72f4..0000000
--- a/dangerfile-jsfm.js
+++ /dev/null
@@ -1,105 +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.
- */
-// Removed import
-import fs from "fs";
-import path from 'path';
-import GitHubApi from 'github';
-import parseDiff from 'parse-diff';
-import shell from "shelljs";
-
-const type_unknown = 0;
-const type_ios_sdk = 1;
-const type_android_sdk = 2;
-const type_ios_test = 3;
-const type_android_test = 4;
-const type_jsfm = 5;
-const type_jsfm_test = 6;
-const type_doc = 7;
-const type_ui_test = 8;
-
-const getFileType = file => {
- if (file.match(/WeexSDK\/Sources\/.+\.(m|h|mm)/)) {
- return type_ios_sdk;
- } else if (file.match(/WeexSDKTests\//)) {
- return type_ios_test;
- } else if (file.match(/android\/sdk\/src\/test\/.+\.java/)) {
- return type_android_test;
- } else if (file.match(/android\/sdk\/src\/main\/java\/.+\.java/)) {
- return type_android_sdk;
- } else if (
- file.match(/html5\/(shared|frameworks|render|runtime|services)\/.+\.js/)
- ) {
- return type_jsfm;
- } else if (file.match(/html5\/test\/.+\.js/)) {
- return type_jsfm_test;
- } else if (file.match(/doc\/\.+\.md/)) {
- return type_doc;
- } else if(file.match(/test\/scripts\/.+\.js/) || file.match(/test\/pages\/.+\.vue/)){
- return type_ui_test
- }else{
- return type_unknown
- }
-}
-
-function checkJsfmFile(file){
- var type = getFileType(file);
- return type == type_jsfm || type == type_jsfm_test;
-}
-
-var hasJsfmFile = false;
-
-if (!hasJsfmFile && danger.git.created_files) {
- danger.git.created_files.some(file => {
- var f = checkJsfmFile(file);
- if(f){
- hasJsfmFile =f;
- }
- return f;
- });
-}
-if (!hasJsfmFile && danger.git.modified_files) {
- danger.git.modified_files.some(file => {
- var f = checkJsfmFile(file);
- if(f){
- hasJsfmFile =f;
- }
- return f;
- });
-}
-if (!hasJsfmFile && danger.git.deleted_files) {
- danger.git.deleted_files.some(file => {
- var f = checkJsfmFile(file);
- if(f){
- hasJsfmFile =f;
- }
- return f;
- });
-}
-
-if(hasJsfmFile){
- var runTestCmd='source ~/.bash_profile; '
- + 'npm run build && npm run test'
- var runSuccess = shell.exec(runTestCmd,{ async: false, timeout: 8 * 60 * 1000 }).code == 0;
- if(!runSuccess){
- fail("jsfm run test failed!");
- }
-}else{
- message('has no jsfm file changed,skip test!');
-}
-
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
index 3802d0e..d43ec0e 100644
--- a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
+++ b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
@@ -48,6 +48,8 @@
591DD3321D23AD5800BE8709 /* WXErrorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 591DD3301D23AD5800BE8709 /* WXErrorView.h */; settings = {ATTRIBUTES = (Public, ); }; };
594C28921CF9E61A009793A4 /* WXAnimationModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 594C28901CF9E61A009793A4 /* WXAnimationModule.m */; };
594C28931CF9E61A009793A4 /* WXAnimationModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 594C28911CF9E61A009793A4 /* WXAnimationModule.h */; };
+ 59597F981D2A041700EE9317 /* WXDebugLoggerBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 59597F961D2A041700EE9317 /* WXDebugLoggerBridge.h */; };
+ 59597F991D2A041700EE9317 /* WXDebugLoggerBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 59597F971D2A041700EE9317 /* WXDebugLoggerBridge.m */; };
596FDD661D3F52700082CD5B /* WXAnimationModuleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 596FDD651D3F52700082CD5B /* WXAnimationModuleTests.m */; };
596FDD691D3F9EFF0082CD5B /* TestSupportUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 596FDD681D3F9EFF0082CD5B /* TestSupportUtils.m */; };
597334B11D4D9E7F00988789 /* WXSDKManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 597334B01D4D9E7F00988789 /* WXSDKManagerTests.m */; };
@@ -83,6 +85,7 @@
740451EB1E14BB26004157CB /* WXServiceFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 740451E91E14BB26004157CB /* WXServiceFactory.m */; };
7408C48E1CFB345D000BCCD0 /* WXComponent+Events.h in Headers */ = {isa = PBXBuildFile; fileRef = 7408C48C1CFB345D000BCCD0 /* WXComponent+Events.h */; };
7408C48F1CFB345D000BCCD0 /* WXComponent+Events.m in Sources */ = {isa = PBXBuildFile; fileRef = 7408C48D1CFB345D000BCCD0 /* WXComponent+Events.m */; };
+ 740938EC1D3D075700DBB801 /* SRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A27E7D81C3E360B00D7A552 /* SRWebSocket.m */; };
740938EE1D3D079100DBB801 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 740938ED1D3D079100DBB801 /* JavaScriptCore.framework */; };
740938EF1D3D083900DBB801 /* libicucore.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7469869B1C4DEAC20054A57E /* libicucore.tbd */; };
740938F31D3D0D9300DBB801 /* WXComponentTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 740938EA1D3D026600DBB801 /* WXComponentTests.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
@@ -240,6 +243,8 @@
C42E8FAB1F3C7C09001EBE9D /* WXExtendCallNativeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
C42E8FAC1F3C7C3B001EBE9D /* WXExtendCallNativeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C47B78CD1F2998EE001D3B0C /* WXExtendCallNativeManager.m */; };
C42E8FAD1F3C7C3F001EBE9D /* WXExtendCallNativeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C47B78CC1F2998EE001D3B0C /* WXExtendCallNativeManager.h */; };
+ C42E8FAE1F3C7C49001EBE9D /* WXRecyclerDragController.m in Sources */ = {isa = PBXBuildFile; fileRef = DC7764911F3C2CA300B5727E /* WXRecyclerDragController.m */; };
+ C42E8FAF1F3C7C4B001EBE9D /* WXRecyclerDragController.h in Headers */ = {isa = PBXBuildFile; fileRef = DC7764921F3C2CA300B5727E /* WXRecyclerDragController.h */; };
C43C03E81EC8ACA40044C7FF /* WXPrerenderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C43C03E41EC8ACA40044C7FF /* WXPrerenderManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
C43C03E91EC8ACA40044C7FF /* WXPrerenderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C43C03E51EC8ACA40044C7FF /* WXPrerenderManager.m */; };
C4424E5B1F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -259,6 +264,10 @@
C4E375381E5FCBD3009B2D9C /* WXComponent+BoxShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = C4E375361E5FCBD3009B2D9C /* WXComponent+BoxShadow.h */; };
C4E97D331F1EF46D00ABC314 /* WXTracingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C4E97D311F1EF46D00ABC314 /* WXTracingManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
C4E97D341F1EF46D00ABC314 /* WXTracingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C4E97D321F1EF46D00ABC314 /* WXTracingManager.m */; };
+ C4F012791E1502A6003378D0 /* SRWebSocket+Weex.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F012721E1502A6003378D0 /* SRWebSocket+Weex.h */; };
+ C4F0127A1E1502A6003378D0 /* SRWebSocket+Weex.m in Sources */ = {isa = PBXBuildFile; fileRef = C4F012731E1502A6003378D0 /* SRWebSocket+Weex.m */; };
+ C4F0127B1E1502A6003378D0 /* WXWebSocketDefaultImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F012741E1502A6003378D0 /* WXWebSocketDefaultImpl.h */; };
+ C4F0127C1E1502A6003378D0 /* WXWebSocketDefaultImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = C4F012751E1502A6003378D0 /* WXWebSocketDefaultImpl.m */; };
C4F0127D1E1502A6003378D0 /* WXWebSocketHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F012761E1502A6003378D0 /* WXWebSocketHandler.h */; };
C4F012821E1502E9003378D0 /* WXWebSocketModule.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F012801E1502E9003378D0 /* WXWebSocketModule.h */; };
C4F012831E1502E9003378D0 /* WXWebSocketModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C4F012811E1502E9003378D0 /* WXWebSocketModule.m */; };
@@ -579,6 +588,8 @@
1D3000F01D40B9AB004F3B4F /* WXClipboardModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXClipboardModule.m; sourceTree = "<group>"; };
2A1F57B51C75C6A600B58017 /* WXTextInputComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXTextInputComponent.h; sourceTree = "<group>"; };
2A1F57B61C75C6A600B58017 /* WXTextInputComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXTextInputComponent.m; sourceTree = "<group>"; };
+ 2A27E7D71C3E360B00D7A552 /* SRWebSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SRWebSocket.h; path = dependency/SRWebSocket.h; sourceTree = "<group>"; };
+ 2A27E7D81C3E360B00D7A552 /* SRWebSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SRWebSocket.m; path = dependency/SRWebSocket.m; sourceTree = "<group>"; };
2A42AF851C23B33E00818EA6 /* libWeexSDK_MTL.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libWeexSDK_MTL.a; sourceTree = BUILT_PRODUCTS_DIR; };
2A42AF871C23B33E00818EA6 /* WeexSDK_MTL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WeexSDK_MTL.h; sourceTree = "<group>"; };
2A42AF891C23B33E00818EA6 /* WeexSDK_MTL.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WeexSDK_MTL.m; sourceTree = "<group>"; };
@@ -613,6 +624,8 @@
591DD3301D23AD5800BE8709 /* WXErrorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXErrorView.h; sourceTree = "<group>"; };
594C28901CF9E61A009793A4 /* WXAnimationModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXAnimationModule.m; sourceTree = "<group>"; };
594C28911CF9E61A009793A4 /* WXAnimationModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXAnimationModule.h; sourceTree = "<group>"; };
+ 59597F961D2A041700EE9317 /* WXDebugLoggerBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXDebugLoggerBridge.h; sourceTree = "<group>"; };
+ 59597F971D2A041700EE9317 /* WXDebugLoggerBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXDebugLoggerBridge.m; sourceTree = "<group>"; };
596FDD651D3F52700082CD5B /* WXAnimationModuleTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXAnimationModuleTests.m; sourceTree = "<group>"; };
596FDD671D3F9EFF0082CD5B /* TestSupportUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestSupportUtils.h; sourceTree = "<group>"; };
596FDD681D3F9EFF0082CD5B /* TestSupportUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestSupportUtils.m; sourceTree = "<group>"; };
@@ -825,6 +838,10 @@
C4E375361E5FCBD3009B2D9C /* WXComponent+BoxShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "WXComponent+BoxShadow.h"; sourceTree = "<group>"; };
C4E97D311F1EF46D00ABC314 /* WXTracingManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXTracingManager.h; sourceTree = "<group>"; };
C4E97D321F1EF46D00ABC314 /* WXTracingManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXTracingManager.m; sourceTree = "<group>"; };
+ C4F012721E1502A6003378D0 /* SRWebSocket+Weex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SRWebSocket+Weex.h"; sourceTree = "<group>"; };
+ C4F012731E1502A6003378D0 /* SRWebSocket+Weex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "SRWebSocket+Weex.m"; sourceTree = "<group>"; };
+ C4F012741E1502A6003378D0 /* WXWebSocketDefaultImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXWebSocketDefaultImpl.h; sourceTree = "<group>"; };
+ C4F012751E1502A6003378D0 /* WXWebSocketDefaultImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXWebSocketDefaultImpl.m; sourceTree = "<group>"; };
C4F012761E1502A6003378D0 /* WXWebSocketHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXWebSocketHandler.h; sourceTree = "<group>"; };
C4F012801E1502E9003378D0 /* WXWebSocketModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXWebSocketModule.h; sourceTree = "<group>"; };
C4F012811E1502E9003378D0 /* WXWebSocketModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXWebSocketModule.m; sourceTree = "<group>"; };
@@ -912,6 +929,15 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 2A27E7D61C3E360400D7A552 /* dependency */ = {
+ isa = PBXGroup;
+ children = (
+ 2A27E7D71C3E360B00D7A552 /* SRWebSocket.h */,
+ 2A27E7D81C3E360B00D7A552 /* SRWebSocket.m */,
+ );
+ name = dependency;
+ sourceTree = "<group>";
+ };
2A42AF861C23B33E00818EA6 /* WeexSDK_MTL */ = {
isa = PBXGroup;
children = (
@@ -1140,6 +1166,7 @@
77D160FF1C02DBE70010B15B /* WeexSDK */ = {
isa = PBXGroup;
children = (
+ 2A27E7D61C3E360400D7A552 /* dependency */,
77D161171C02DCB90010B15B /* Resources */,
77D161181C02DCB90010B15B /* Sources */,
);
@@ -1194,6 +1221,8 @@
74862F801E03A24500B7A041 /* WXComponentMethod.m */,
74D2051E1E091B8000128F44 /* WXCallJSMethod.h */,
74D2051F1E091B8000128F44 /* WXCallJSMethod.m */,
+ 59597F961D2A041700EE9317 /* WXDebugLoggerBridge.h */,
+ 59597F971D2A041700EE9317 /* WXDebugLoggerBridge.m */,
59A582FA1CF5B17B0081FD3E /* WXBridgeContext.h */,
59A582FB1CF5B17B0081FD3E /* WXBridgeContext.m */,
77D1613A1C02DEA60010B15B /* WXJSCoreBridge.h */,
@@ -1447,6 +1476,10 @@
C4F012711E1502A6003378D0 /* WebSocket */ = {
isa = PBXGroup;
children = (
+ C4F012721E1502A6003378D0 /* SRWebSocket+Weex.h */,
+ C4F012731E1502A6003378D0 /* SRWebSocket+Weex.m */,
+ C4F012741E1502A6003378D0 /* WXWebSocketDefaultImpl.h */,
+ C4F012751E1502A6003378D0 /* WXWebSocketDefaultImpl.m */,
C4F012761E1502A6003378D0 /* WXWebSocketHandler.h */,
);
path = WebSocket;
@@ -1498,6 +1531,7 @@
1D3000F11D40B9AC004F3B4F /* WXClipboardModule.h in Headers */,
59A583081CF5B2FD0081FD3E /* WXNavigationDefaultImpl.h in Headers */,
775BEE4E1C16F993008D1629 /* WXDefine.h in Headers */,
+ 59597F981D2A041700EE9317 /* WXDebugLoggerBridge.h in Headers */,
77D161241C02DDD10010B15B /* WXSDKInstance.h in Headers */,
DC6836E61EBB12B200AD2D84 /* WXConfigCenterProtocol.h in Headers */,
DC7764941F3C2CA300B5727E /* WXRecyclerDragController.h in Headers */,
@@ -1541,6 +1575,7 @@
744D61141E4AF23E00B624B3 /* WXDiffUtil.h in Headers */,
74862F791E02B88D00B7A041 /* JSValue+Weex.h in Headers */,
2A1F57B71C75C6A600B58017 /* WXTextInputComponent.h in Headers */,
+ C4F012791E1502A6003378D0 /* SRWebSocket+Weex.h in Headers */,
74A4BA9A1CB3BAA100195969 /* WXThreadSafeMutableDictionary.h in Headers */,
74A4BA9E1CB3C0A100195969 /* WXHandlerFactory.h in Headers */,
741DFE021DDD7D18009B020F /* WXRoundedRect.h in Headers */,
@@ -1569,6 +1604,7 @@
77E65A0D1C155E99008B8775 /* WXDivComponent.h in Headers */,
C41E1A971DC1FD15009C7F90 /* WXDatePickerManager.h in Headers */,
333D9A271F41507A007CED39 /* WXTransition.h in Headers */,
+ C4F0127B1E1502A6003378D0 /* WXWebSocketDefaultImpl.h in Headers */,
7461F8901CFB373100F62D44 /* WXDisplayQueue.h in Headers */,
DCC77C141D770AE300CE7288 /* WXSliderNeighborComponent.h in Headers */,
747DF6821E31AEE4005C53A8 /* WXLength.h in Headers */,
@@ -1638,6 +1674,7 @@
333D9A281F41507A007CED39 /* WXTransition.h in Headers */,
DCA445A51EFA571600D0CFA8 /* WXSDKError.h in Headers */,
DCA445AD1EFA575100D0CFA8 /* WXNavigationProtocol.h in Headers */,
+ C42E8FAF1F3C7C4B001EBE9D /* WXRecyclerDragController.h in Headers */,
DCA445B01EFA576200D0CFA8 /* WXModalUIModule.h in Headers */,
DCA445A61EFA571E00D0CFA8 /* WXSDKEngine.h in Headers */,
DCA445AA1EFA573900D0CFA8 /* WXResourceRequest.h in Headers */,
@@ -1982,6 +2019,7 @@
DC9F46831D61AC8800A88239 /* WXStreamModuleTests.m in Sources */,
1C1A2BED1D91172800539AA1 /* WXConvertTests.m in Sources */,
74EF31C31DE6935600667A07 /* WXURLRewriteTests.m in Sources */,
+ 740938EC1D3D075700DBB801 /* SRWebSocket.m in Sources */,
740938F31D3D0D9300DBB801 /* WXComponentTests.m in Sources */,
596FDD661D3F52700082CD5B /* WXAnimationModuleTests.m in Sources */,
591324A31D49B7F1004E89ED /* WXTimerModuleTests.m in Sources */,
@@ -2005,6 +2043,7 @@
74B8BEFF1DC47B72004A6027 /* WXRootView.m in Sources */,
742AD7321DF98C45007DC46C /* WXResourceRequestHandlerDefaultImpl.m in Sources */,
747DF6831E31AEE4005C53A8 /* WXLength.m in Sources */,
+ C4F0127C1E1502A6003378D0 /* WXWebSocketDefaultImpl.m in Sources */,
77E65A0E1C155E99008B8775 /* WXDivComponent.m in Sources */,
2A60CE9D1C91733E00857B9F /* WXSwitchComponent.m in Sources */,
744D61111E49979000B624B3 /* WXFooterComponent.m in Sources */,
@@ -2054,6 +2093,7 @@
746319031C60AFC100EFEBD4 /* WXThreadSafeCounter.m in Sources */,
74A4BAA71CB4F98300195969 /* WXStreamModule.m in Sources */,
744D610D1E49978200B624B3 /* WXHeaderComponent.m in Sources */,
+ 59597F991D2A041700EE9317 /* WXDebugLoggerBridge.m in Sources */,
77E659F21C0C3612008B8775 /* WXModuleFactory.m in Sources */,
DCF343681E49CAEE00A2FB34 /* WXJSExceptionInfo.m in Sources */,
59CE27E91CC387DB000BE37A /* WXEmbedComponent.m in Sources */,
@@ -2112,6 +2152,7 @@
77D1614C1C02E3790010B15B /* WXConvert.m in Sources */,
749DC27C1D40827B009E1C91 /* WXMonitor.m in Sources */,
C4B834271DE69B09007AD27E /* WXPickerModule.m in Sources */,
+ C4F0127A1E1502A6003378D0 /* SRWebSocket+Weex.m in Sources */,
745B2D691E5A8E1E0092D38A /* WXMultiColumnLayout.m in Sources */,
77D161391C02DE940010B15B /* WXBridgeManager.m in Sources */,
);
@@ -2202,6 +2243,7 @@
DCA4457A1EFA55B300D0CFA8 /* WXSimulatorShortcutManager.m in Sources */,
DCA4457B1EFA55B300D0CFA8 /* WXAssert.m in Sources */,
DCA4457C1EFA55B300D0CFA8 /* WXAppConfiguration.m in Sources */,
+ C42E8FAE1F3C7C49001EBE9D /* WXRecyclerDragController.m in Sources */,
DCA4457D1EFA55B300D0CFA8 /* WXThreadSafeMutableDictionary.m in Sources */,
DCA4457E1EFA55B300D0CFA8 /* WXThreadSafeMutableArray.m in Sources */,
DCA4457F1EFA55B300D0CFA8 /* NSObject+WXSwizzle.m in Sources */,
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/ios/sdk/WeexSDK/Sources/Bridge/WXDebugLoggerBridge.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXDebugLoggerBridge.h b/ios/sdk/WeexSDK/Sources/Bridge/WXDebugLoggerBridge.h
new file mode 100644
index 0000000..c86b12e
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXDebugLoggerBridge.h
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+#import "WXBridgeProtocol.h"
+
+@interface WXDebugLoggerBridge : NSObject <WXBridgeProtocol>
+
+- (instancetype)initWithURL:(NSURL *) URL;
+
+@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/ios/sdk/WeexSDK/Sources/Bridge/WXDebugLoggerBridge.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXDebugLoggerBridge.m b/ios/sdk/WeexSDK/Sources/Bridge/WXDebugLoggerBridge.m
new file mode 100644
index 0000000..fcc4cb3
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXDebugLoggerBridge.m
@@ -0,0 +1,213 @@
+/*
+ * 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.
+ */
+
+#import "WXDebugLoggerBridge.h"
+#import "SRWebSocket.h"
+#import "WXSDKManager.h"
+#import "WXUtility.h"
+#import "WXLog.h"
+
+@interface WXDebugLoggerBridge()<SRWebSocketDelegate>
+
+@end
+
+@implementation WXDebugLoggerBridge
+{
+ BOOL _isConnect;
+ SRWebSocket *_webSocket;
+ NSMutableArray *_msgAry;
+ WXJSCallNative _nativeCallBlock;
+ NSThread *_curThread;
+}
+
+- (void)dealloc
+{
+ _nativeCallBlock = nil;
+ [self _disconnect];
+}
+
+- (instancetype)initWithURL:(NSURL *) URL
+{
+ self = [super init];
+
+ _isConnect = NO;
+ _curThread = [NSThread currentThread];
+
+ [self _connect:URL];
+
+ return self;
+}
+
+- (void)_initEnvironment
+{
+ [self callJSMethod:@"setEnvironment" args:@[[WXUtility getEnvironment]]];
+}
+
+- (void)_disconnect
+{
+ _msgAry = nil;
+ _isConnect = NO;
+ _webSocket.delegate = nil;
+ [_webSocket close];
+ _webSocket = nil;
+}
+
+- (void)_connect:(NSURL *)URL
+{
+ _msgAry = nil;
+ _msgAry = [NSMutableArray array];
+ _webSocket.delegate = nil;
+ [_webSocket close];
+
+ _webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:URL]];
+ _webSocket.delegate = self;
+
+ [_webSocket open];
+}
+
+-(void)_executionMsgAry
+{
+ if (!_isConnect) return;
+
+ NSArray *templateContainers = [NSArray arrayWithArray:_msgAry];
+ for (NSString *msg in templateContainers) {
+ [_webSocket send:msg];
+ }
+ [_msgAry removeAllObjects];
+}
+
+-(void)_evaluateNative:(NSString *)data
+{
+ NSDictionary *dict = [WXUtility objectFromJSON:data];
+ NSString *method = [dict objectForKey:@"method"];
+ NSArray *args = [dict objectForKey:@"arguments"];
+
+ if ([method isEqualToString:@"callNative"]) {
+ // call native
+ NSString *instanceId = args[0];
+ NSArray *methods = args[1];
+ NSString *callbackId = args[2];
+
+ // params parse
+ if(!methods || methods.count <= 0){
+ return;
+ }
+ //call native
+ WXLogDebug(@"Calling native... instanceId:%@, methods:%@, callbackId:%@", instanceId, [WXUtility JSONString:methods], callbackId);
+ _nativeCallBlock(instanceId, methods, callbackId);
+ } else if ([method isEqualToString:@"setLogLevel"]) {
+ NSString *levelString = [args firstObject];
+ [WXLog setLogLevelString:levelString];
+ }
+}
+
+#pragma mark - WXBridgeProtocol
+
+- (void)executeJavascript:(NSString *)script
+{
+ [self callJSMethod:@"evalFramework" args:@[script]];
+}
+
+- (void)executeJSFramework:(NSString *)frameworkScript
+{
+ [self callJSMethod:@"evalFramework" args:@[frameworkScript]];
+}
+
+- (JSValue *)callJSMethod:(NSString *)method args:(NSArray *)args
+{
+ if (![method isEqualToString:@"__logger"]) {
+ // prevent recursion
+ WXLogDebug(@"Calling JS... method:%@, args:%@", method, [WXUtility JSONString:args]);
+ }
+
+ NSMutableDictionary *dict = [NSMutableDictionary dictionary];
+ [dict setObject:method forKey:@"method"];
+ [dict setObject:args forKey:@"arguments"];
+
+ [_msgAry addObject:[WXUtility JSONString:dict]];
+ [self _executionMsgAry];
+
+ return nil;
+}
+
+- (void)registerCallNative:(WXJSCallNative)callNative
+{
+ _nativeCallBlock = callNative;
+}
+
+- (JSValue*) exception
+{
+ return nil;
+}
+
+- (void)resetEnvironment
+{
+ [self _initEnvironment];
+}
+
+- (void)garbageCollect
+{
+
+}
+
+- (void)executeBridgeThead:(dispatch_block_t)block
+{
+ if([NSThread currentThread] == _curThread){
+ block();
+ } else {
+ [self performSelector:@selector(executeBridgeThead:)
+ onThread:_curThread
+ withObject:[block copy]
+ waitUntilDone:NO];
+ }
+}
+
+#pragma mark - SRWebSocketDelegate
+
+- (void)webSocketDidOpen:(SRWebSocket *)webSocket;
+{
+ WXLogWarning(@"Websocket Connected:%@", webSocket.url);
+ _isConnect = YES;
+ [self _initEnvironment];
+ __weak typeof(self) weakSelf = self;
+ [self executeBridgeThead:^() {
+ [weakSelf _executionMsgAry];
+ }];
+}
+
+- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error;
+{
+ WXLogError(@":( Websocket Failed With Error %@", error);
+}
+
+- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message;
+{
+ __weak typeof(self) weakSelf = self;
+ [self executeBridgeThead:^() {
+ [weakSelf _evaluateNative:message];
+ }];
+}
+
+- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean
+{
+ WXLogInfo(@"Websocket closed with code: %ld, reason:%@, wasClean: %d", (long)code, reason, wasClean);
+ _isConnect = NO;
+}
+
+@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m b/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
index fb07935..dd776a9 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
@@ -46,8 +46,6 @@
@property (nonatomic, strong) JSContext *jsContext;
@property (nonatomic, strong) NSMutableArray *timers;
-@property (nonatomic, strong) NSMutableDictionary *intervaltimers;
-@property (nonatomic) long long intervalTimerId;
@property (nonatomic, strong) NSMutableDictionary *callbacks;
@end
@@ -65,9 +63,7 @@
}
_timers = [NSMutableArray new];
_callbacks = [NSMutableDictionary new];
- _intervalTimerId = 0;
- _intervaltimers = [NSMutableDictionary new];
-
+
__weak typeof(self) weakSelf = self;
NSDictionary *data = [WXUtility getEnvironment];
@@ -80,19 +76,16 @@
} afterDelay:[timeout toDouble] / 1000];
};
- _jsContext[@"setTimeoutWeex"] = ^(JSValue *appId, JSValue *ret,JSValue *arg ) {
- [weakSelf triggerTimeout:[appId toString] ret:[ret toString] arg:[arg toString]];
+ _jsContext[@"setTimeoutWeex"] = ^(JSValue *appid, JSValue *ret,JSValue *arg ) {
+ [weakSelf triggerTimeout:[appid toString] ret:[ret toString] arg:[arg toString]];
};
- _jsContext[@"setIntervalWeex"] = ^(JSValue *appId, JSValue *function,JSValue *arg) {
- return [weakSelf triggerInterval:[appId toString] function:^() {
- [function callWithArguments:@[]];
- } arg:[arg toString]];
+ _jsContext[@"setIntervalWeex"] = ^(JSValue *appid, JSValue *ret,JSValue *arg) {
+ [weakSelf triggerInterval:[appid toString] ret:[ret toString] arg:[arg toString]];
};
- _jsContext[@"clearIntervalWeex"] = ^(JSValue *appId, JSValue *ret,JSValue *arg) {
-
- [weakSelf triggerClearInterval:[appId toString] ret:[[ret toNumber] longLongValue]];
+ _jsContext[@"clearIntervalWeex"] = ^(JSValue *appid, JSValue *ret,JSValue *arg) {
+ [weakSelf triggerClearInterval:[appid toString] ret:[ret toString] arg:[arg toString]];
};
_jsContext[@"clearTimeoutWeex"] = ^(JSValue *ret) {
@@ -418,7 +411,6 @@
#pragma mark - Public
-(void)removeTimers:(NSString *)instance
{
- // remove timers
if([_callbacks objectForKey:instance]){
NSMutableArray *arr = [_callbacks objectForKey:instance];
if(arr && [arr count]>0){
@@ -429,10 +421,6 @@
}
}
}
- // remove intervaltimers
- if(_intervaltimers && [_intervaltimers objectForKey:instance]){
- [_intervaltimers removeObjectForKey:instance];
- }
}
#pragma mark - Private
@@ -463,25 +451,20 @@
- (void)callBack:(NSDictionary *)dic
{
if([dic objectForKey:@"ret"] && [_timers containsObject:[dic objectForKey:@"ret"]]) {
- [[WXSDKManager bridgeMgr] callBack:[dic objectForKey:@"appId"] funcId:[dic objectForKey:@"ret"] params:[dic objectForKey:@"arg"] keepAlive:NO];
+ [[WXSDKManager bridgeMgr] callBack:[dic objectForKey:@"appid"] funcId:[dic objectForKey:@"ret"] params:[dic objectForKey:@"arg"] keepAlive:NO];
}
-
}
-- (void)callBackInterval:(NSDictionary *)dic functon:(void(^)())block
+- (void)callBackInterval:(NSDictionary *)dic
{
- if([dic objectForKey:@"appId"] && [_intervaltimers objectForKey:[dic objectForKey:@"appId"]]){
- NSMutableArray *timers = [_intervaltimers objectForKey:[dic objectForKey:@"appId"]];
- if([timers containsObject:[dic objectForKey:@"timerId"]]){
- block();
- [self executeInterval:[dic objectForKey:@"appId"] function:block arg:[dic objectForKey:@"arg"] timerId:[[dic objectForKey:@"timerId"] longLongValue]];
- }
+ if([dic objectForKey:@"ret"] && [_timers containsObject:[dic objectForKey:@"ret"]]) {
+ [[WXSDKManager bridgeMgr] callBack:[dic objectForKey:@"appid"] funcId:[dic objectForKey:@"ret"] params:nil keepAlive:YES];
+ [self triggerInterval:[dic objectForKey:@"appid"] ret:[dic objectForKey:@"ret"] arg:[dic objectForKey:@"arg"]];
}
}
-
-- (void)triggerTimeout:(NSString *)appId ret:(NSString *)ret arg:(NSString *)arg
+- (void)triggerTimeout:(NSString *)appid ret:(NSString *)ret arg:(NSString *)arg
{
double interval = [arg doubleValue]/1000.0f;
@@ -490,60 +473,42 @@
}
if(![_timers containsObject:ret]){
[_timers addObject:ret];
- [self addInstance:appId callback:ret];
+ [self addInstance:appid callback:ret];
}
- __weak typeof(self) weakSelf = self;
dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, interval*NSEC_PER_SEC);
dispatch_after(time, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSMutableDictionary *dic = [NSMutableDictionary new];
- [dic setObject:appId forKey:@"appId"];
+ [dic setObject:appid forKey:@"appid"];
[dic setObject:ret forKey:@"ret"];
[dic setObject:arg forKey:@"arg"];
- [weakSelf performSelector:@selector(callBack:) withObject:dic ];
+ [self performSelector:@selector(callBack:) withObject:dic ];
});
}
-- (long long)triggerInterval:(NSString *)appId function:(void(^)())block arg:(NSString *)arg
+- (void)triggerInterval:(NSString *)appid ret:(NSString *)ret arg:(NSString *)arg
{
double interval = [arg doubleValue]/1000.0f;
- long long timerId = _intervalTimerId + 1;
if(WXFloatEqual(interval,0)) {
- return timerId;
+ return;
}
- if([_intervaltimers objectForKey:appId]){
- NSMutableArray *timers = [[_intervaltimers objectForKey:appId] mutableCopy];
- [timers addObject:@(timerId)];
- [_intervaltimers setObject:timers forKey:appId];
- }else {
- NSMutableArray *timers = [NSMutableArray new];
- [timers addObject:@(timerId)];
- [_intervaltimers setObject:timers forKey:appId];
+ if(![_timers containsObject:ret]){
+ [_timers addObject:ret];
+ [self addInstance:appid callback:ret];
}
- [self executeInterval:appId function:block arg:arg timerId:timerId];
- return timerId;
-}
-
--(void)executeInterval:(NSString *)appId function:(void(^)())block arg:(NSString *)arg timerId:(long long)timerId
-{
- double interval = [arg doubleValue]/1000.0f;
dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, interval*NSEC_PER_SEC);
- __weak typeof(self) weakSelf = self;
dispatch_after(time, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSMutableDictionary *dic = [NSMutableDictionary new];
- [dic setObject:appId forKey:@"appId"];
+ [dic setObject:appid forKey:@"appid"];
+ [dic setObject:ret forKey:@"ret"];
[dic setObject:arg forKey:@"arg"];
- [dic setObject:@(timerId) forKey:@"timerId"];
- [weakSelf performSelector:@selector(callBackInterval:functon:) withObject:dic withObject:block];
+ [self performSelector:@selector(callBackInterval:) withObject:dic ];
});
}
-- (void)triggerClearInterval:(NSString *)appId ret:(long long)ret
+- (void)triggerClearInterval:(NSString *)appid ret:(NSString *)ret arg:(NSString *)arg
{
- if(_intervaltimers && [_intervaltimers objectForKey:@"appId"]){
- NSMutableArray *timers = [_intervaltimers objectForKey:@"appId"];
- if(timers && [timers containsObject:@(ret)]){
- [timers removeObject:@(ret)];
- }
+ if([_timers containsObject:ret]){
+ [_timers removeObject:ret];
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/ios/sdk/WeexSDK/Sources/Component/Recycler/WXMultiColumnLayout.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/Recycler/WXMultiColumnLayout.m b/ios/sdk/WeexSDK/Sources/Component/Recycler/WXMultiColumnLayout.m
index 8622ef8..e99e88f 100644
--- a/ios/sdk/WeexSDK/Sources/Component/Recycler/WXMultiColumnLayout.m
+++ b/ios/sdk/WeexSDK/Sources/Component/Recycler/WXMultiColumnLayout.m
@@ -182,29 +182,19 @@ NSString * const kMultiColumnLayoutCell = @"WXMultiColumnLayoutCell";
}
// cells
-
- @try {
- for (NSInteger item = 0; item < [self.collectionView numberOfItemsInSection:section]; item++) {
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:section];
- CGFloat itemHeight = [self.delegate collectionView:self.collectionView layout:self heightForItemAtIndexPath:indexPath];
- UICollectionViewLayoutAttributes *itemAttributes = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
- NSUInteger column = [self _minHeightColumnForAllColumns];
- CGFloat x = insets.left + (columnWidth + columnGap) * column;
- if (column >= [self.columnsMaxHeights count]) {
- return;
- }
- CGFloat y = [self.columnsMaxHeights[column] floatValue];
- itemAttributes.frame = CGRectMake(x, y, columnWidth, itemHeight);
- cellAttributes[indexPath] = itemAttributes;
-
- self.columnsMaxHeights[column] = @(CGRectGetMaxY(itemAttributes.frame));
- }
- } @catch (NSException *exception) {
- WXLog(@"%@", exception);
- } @finally {
+ for (NSInteger item = 0; item < [self.collectionView numberOfItemsInSection:section]; item++) {
+ NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:section];
+ CGFloat itemHeight = [self.delegate collectionView:self.collectionView layout:self heightForItemAtIndexPath:indexPath];
+ UICollectionViewLayoutAttributes *itemAttributes = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
+ NSUInteger column = [self _minHeightColumnForAllColumns];
+ CGFloat x = insets.left + (columnWidth + columnGap) * column;
+ CGFloat y = [self.columnsMaxHeights[column] floatValue];
+ itemAttributes.frame = CGRectMake(x, y, columnWidth, itemHeight);
+ cellAttributes[indexPath] = itemAttributes;
+
+ self.columnsMaxHeights[column] = @(CGRectGetMaxY(itemAttributes.frame));
}
-
currentHeight = [self _maxHeightForAllColumns];
[self _columnsReachToHeight:currentHeight];
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7b2150a5/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
index 0316321..685ec07 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
+++ b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
@@ -64,7 +64,7 @@
/**
* accessibility support
*/
- NSString * _roles; //accessibility
+ UIAccessibilityTraits _role; //accessibility
NSString * _ariaLabel; //accessibilityLabel
NSString * _ariaHidden; // accessibilityElementsHidden
NSString * _accessible; // accessible