From 4b2417a9964ce281805c332a29e770bb8d435f08 Mon Sep 17 00:00:00 2001 From: John Richardson Date: Wed, 1 Jun 2016 10:55:10 +0100 Subject: [PATCH] Tidy up WA UiAutomator bass classes Minor code maintenance for base classes BaseUiAutomation and UxPerfUiAutomation. Changes include: - Prefer static calls for UiDevice methods where possible - Rename inconsistently named variables - Avoid long wrapped lines where possible - Remove unused imports - Fix whitespace around operators --- .../common/android/BaseUiAutomation$1.class | Bin 1311 -> 1311 bytes .../BaseUiAutomation$FindByCriteria.class | Bin 1278 -> 1278 bytes .../BaseUiAutomation$ScreenOrientation.class | Bin 1296 -> 1296 bytes wlauto/common/android/BaseUiAutomation.class | Bin 12186 -> 12208 bytes .../common/android/UxPerfUiAutomation$1.class | Bin 917 -> 917 bytes .../UxPerfUiAutomation$Direction.class | Bin 1345 -> 1345 bytes ...UxPerfUiAutomation$GestureTestParams.class | Bin 1522 -> 1522 bytes .../UxPerfUiAutomation$GestureType.class | Bin 1287 -> 1287 bytes .../UxPerfUiAutomation$PinchType.class | Bin 1249 -> 1249 bytes .../android/UxPerfUiAutomation$Timer.class | Bin 983 -> 983 bytes .../common/android/UxPerfUiAutomation.class | Bin 12488 -> 12537 bytes .../arm/wlauto/uiauto/BaseUiAutomation.java | 138 ++++++++++-------- .../arm/wlauto/uiauto/UxPerfUiAutomation.java | 37 ++--- .../skype/com.arm.wlauto.uiauto.skype.jar | Bin 13403 -> 13396 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 2 +- 15 files changed, 99 insertions(+), 78 deletions(-) diff --git a/wlauto/common/android/BaseUiAutomation$1.class b/wlauto/common/android/BaseUiAutomation$1.class index 14a9cc7b6b73bf8cd5c9d7fbba23622cff875075..d1fe18f2f1601f32c735af1010d8e8563d6183ab 100644 GIT binary patch delta 17 YcmbQwHJ@w4Jr>pw1~W$S$&XoV05bChLI3~& delta 17 YcmbQwHJ@w4Jr-6s1~W#U$&XoV05U!WDF6Tf diff --git a/wlauto/common/android/BaseUiAutomation$FindByCriteria.class b/wlauto/common/android/BaseUiAutomation$FindByCriteria.class index 6727b7d5f41ad4f909e77e777412ba5ef6981eb0..529319f0bce1e72a76b9316769b2080ae815acfc 100644 GIT binary patch delta 31 icmeyz`HyqMYi35n$#0nTfuszJ9gvJ>X#kRUSd;*^;tC!B delta 31 icmeyz`HyqMYi36M$#0nTfuszJ9gvJ>X#kRUSd;*^atamz diff --git a/wlauto/common/android/BaseUiAutomation$ScreenOrientation.class b/wlauto/common/android/BaseUiAutomation$ScreenOrientation.class index a9410115e666b76804c0ba23ef9cd5a4fe2373ff..6a9ddc1e53f740dc2ac198a358c5c967582bd5ed 100644 GIT binary patch delta 31 icmbQhHGylxUuH(l$^V%3futUb9gxgrX#kS%Sd;*u$O(P` delta 31 icmbQhHGylxUuH)2$^V%3futUb9gxgrX#kS%Sd;*uSP6Cj diff --git a/wlauto/common/android/BaseUiAutomation.class b/wlauto/common/android/BaseUiAutomation.class index 5e89288eb2f2c4d3cfc58c0c9f2975c7402df1e1..c8476f4968a0d23c17d00e3208f6ed5048998400 100644 GIT binary patch delta 3937 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 u5;~CQ>0D>}0!enGJq)CWjNFa#}QFtgA zQ7QrlTcCgg2#83*kT3)s>)5JQ>!P)*tFG0NR>f&qwJQD2een?j6#p=5WuJY|Irq2s zIeVXd&pT4IqbTs&cc-2PkS$MHsKS>Xe1)&w?9hMV7N7p>!7cbk4}NP=`_9A#OCZ7r zaTyY32&Z}RC55<6iO{WK!4}gJk64DZ(=%;DycRm)OG6^rN|Y(lx(&ow=q&B^lnz>p zHKd~{owORK$4TlYo%N&7k}lHKlz81HSdu8+Oi3~%*^m@VQl-0vEa_n(Q_?i8r`FOf z$&gGvnq^2YQ+gZX*Ij)q^w(6{?`ul7R{CktU%Na&i-B6?Xfa5O!5Zm^L0TK4#ZWDB z_2@7y^1?^G0%%W%TQWjM8giW}qby96&W4QEUDs=IgBD{fOqQ{F?u>CBERpdRYGs0^ zOw?kM7B?C)*_3<>GwCUx3-t6UhD_D%G%coEGQ$aq+@v9e7ODxMQ#Y&ErEB-ja*HWN zrpz;?*pQzXQX;U&S5}r)k6u(gJIT|t*9-kYM2z>TMVPNVsTm3Z4JxZkGdLC&2OY3 z)rtzso^MOJ+-ggOEU>W*%Wd2(3vF2>iv`B=s_KQM71f4R+EOJ;Y*{MRs>GWWUn8}G za6e7ia+@r(v09cJvckrCS*Z?sSN5wD#1&VTR##P&`j=OfmY3D~r_-66D#~c#sMP5< zZnv=myKK2bRta*{b4CwU7unmtS^^x!7F*WHDnstHRn>XI=S1B zdRy+1_3GWok(u|}a-VF_%%5s;KNkTGZOV2}$|kgVq|g)<{i`$~HkawK>MuP!u!AbazKM($urQ zQSN@s^Zv@{az{)K+!zEKL(vDh$i^_WwacyU>tJG(lCG68H&7dc4j7BB7>5*$S8KXf zyC<>tMvlj+$oLX(0n5h}Bw{N3n66gG&yzy+=lB`!+3;YF8j_IV8AB^J3(|VEFrmiV zsTuuewjWTK6?O&#)rSdjfg+C2Lllb99i_-X8G2zpa!^j6DrkQJ^0AQoMVNsln1!X7 ziyF>a#*r1M#Y)_R+i@2y%%RQE^m7mHr;oIVwOGeiYkS!zj`kRq!$q5Gv5#8#V47Zu z{WyRK$AQOj5C+{S!V?_!(3v?ngeTDsTlso8Av5{UeOJwibEd3DGy;gj8k)V64zF_@ z$>cmBFJwLsM_SD1;V3m1-$=t#*p9GEsEi@0iK@Qa@G0v_zL)dvBY6YK8?Qn>_JhdG z35VQ2X?S1@$%^EyBtJ;GMm(U$+2=sEluti#_FMrlr%Y_pX7|XKE>bf7?;)9 zislV@#4^)Do5H*aBQ45VmU<|~H|7K)X-uDjq~K5}`J(VF6I>gQ!gJKLBhRD01y#dj z*Kz3?M17T#U2vLNe}>2UX&(J&m?zINPfjympLg(`g409zo_N8*3x3rK8qpehTWWT} zi-f*J=*#GgR}ha^34M{!Uta_I;?E`1QBilw9-_p~uOHYYq`Cyem@h)Req-3v3i zbU(rqh9}gwA6Gfpoz;Z#LnC||7I2b0ChNzP578q^iv$eXU^^{39dVo9F2_gb|?25oix#z)`-`b zFkxgLW%O6FO=21P4PIwWPQwEX;F|$%;4I8$T;F1P*0Hj@P0gga9(aeEheo3q<+oT= zT36+Ff1D7sSIueG#Tc~gVVj+gj=j=;Uly-6JKuWz2gTqE?$1|@!PnfSZ@53-G6vsa zs0a$gh56z}y+mN2m^db$A2SA-j6nfEv%wh5=SMgggL+;T+QdLz=y^x7jqVc3TYMD! z5`%%#9)l$oBcvlnNgO7LPwh;f=8lIU3F`Coj1ISxufLM1JOpzm2dht3MtW`%+>*@e zdy-X}|LyxM;bl`_1c1J3M`o8m{5sc#-H4$-^9nnL-+cnb`!9TS@%xp?RD}5X3#ku$ z(idH%ACjd%(qsVoNRH#?fFLg9X5WyTeR+a(?WHlEBc1-0O>S9<3Y+G+dFr!A!}My>C)F_6h~2pPi+7{{oON3KjnzD&YY$!CgA#X_0J z-$*l1Cxy8j95SGBBEj|P3wnqEmbFN$$^HP*qj-U!}< z)p>uSdZ+g=?`(9CIZURx7$QX~-k;o2U%XtG6b{~?o%u`r!$y~IektddaejHLAmoNz x%f;u;)u;o~olD%MEZ)n>n&n+c&LVOalT)Qm`jdTa?Yi&<^TCDxs7-y6{s#@x`iB4j diff --git a/wlauto/common/android/UxPerfUiAutomation$1.class b/wlauto/common/android/UxPerfUiAutomation$1.class index c4d86f3f1515600b56fd7aeb5fce3568c1b38e45..851dd2b71edd1538021492f6c5652cedbb6113c4 100644 GIT binary patch delta 13 UcmbQrK9zk#0yE=_$%)J+03aI#U;qFB delta 13 UcmbQrK9zk#0yE?D$%)J+03a3wUjP6A diff --git a/wlauto/common/android/UxPerfUiAutomation$Direction.class b/wlauto/common/android/UxPerfUiAutomation$Direction.class index ab20de28b07d8d7434fcc8d12a9aea406fff0d98..d1b37fd720d1c1b1fc79f11ee40013eec120b571 100644 GIT binary patch delta 31 icmX@eb&zWV2MeRlWKI@+AZf{B2P7+4mH|n5RwV#`#RqZ# delta 31 icmX@eb&zWV2MeRoWKI@+AZf{B2P7+4mH|n5RwV#|6$gp{ diff --git a/wlauto/common/android/UxPerfUiAutomation$GestureTestParams.class b/wlauto/common/android/UxPerfUiAutomation$GestureTestParams.class index 9815c0c0739d38e393ebc4a1a124746a32204cd5..be4b4ccf4c511f7c05f7a086b91295aa4467c8c9 100644 GIT binary patch delta 67 zcmeyw{fT?SJr+p|1{Ow322MsR20lh>22n;E1}R2c26;xi$=_MZBpraVjzC!_1_4HA SpsWi})|Ekl(QR@YYYqUm@(Z8< delta 67 zcmeyw{fT?SJr+rG1{OvO22Msx20lhB22n<91}R1x26;x?$=_MZB<+E+4nSE)1_4GV SpsX`c)`dZV(RFegYYqUlG7FLb diff --git a/wlauto/common/android/UxPerfUiAutomation$GestureType.class b/wlauto/common/android/UxPerfUiAutomation$GestureType.class index 86797e913f645e4f29a3e8acf5766ddb273fa9f4..47ddd88d0484417fa65ca17c40d81bb965ce4c11 100644 GIT binary patch delta 31 icmZqYYUkSUg_%)z@>gbkAgRh?2P9Ki8i3?e79{|j@(E7> delta 31 icmZqYYUkSUg_+TK@>gbkAgRh?2P9Ki8i3?e79{|lLJ4O8 diff --git a/wlauto/common/android/UxPerfUiAutomation$PinchType.class b/wlauto/common/android/UxPerfUiAutomation$PinchType.class index 3919fa4c7ddace0b6b58039440701e52b509b3f0..59fbdf8d70202af5403f6bc683e6804d1c63ccf4 100644 GIT binary patch delta 31 jcmaFJ`H*wNIc7$^$>*8%f#iQ?J0NMt(f}m)vnT-owf+i5 delta 31 jcmaFJ`H*wNIc7$a$>*8%f#iQ?J0NMt(f}m)vnT-ow@wOP diff --git a/wlauto/common/android/UxPerfUiAutomation$Timer.class b/wlauto/common/android/UxPerfUiAutomation$Timer.class index 2af5921ffd4fba5cc737cd3dbd8cd93f0872614b..6bd020d121568337d156482c2b7560c85b2852d3 100644 GIT binary patch delta 75 zcmcc4ew}@T9}}+u0}F#811EzK10RF&)Rx<{62J^}DnS3~{fGleU5eA#dUzltd b?I#;D+b}u)RvQL(2HVN=nS3}MfGkG_5eBEpUzltd bT_+nd+c0_pNzuv8%<7E3K$h_2eaw;oL9!3$ diff --git a/wlauto/common/android/UxPerfUiAutomation.class b/wlauto/common/android/UxPerfUiAutomation.class index 9acbb5437b863aa1fe83bea32b203c08910edf7c..270d7ab29ded2f12510bc52db49f28b66b4ccf42 100644 GIT binary patch literal 12537 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 H6)OK96ifp! literal 12488 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 timeout) { - throw new TimeoutException("Timed out waiting for Logcat text \"%s\"".format(searchText)); + throw new TimeoutException(String.format("Timed out waiting for Logcat text \"%s\"", + searchText)); } } public UiObject getUiObjectByResourceId(String resourceId, String className) throws Exception { UiObject object = new UiObject(new UiSelector().resourceId(resourceId) .className(className)); - if (!object.waitForExists(waitTimeout)) { + if (!object.waitForExists(timeout)) { throw new UiObjectNotFoundException(String.format("Could not find \"%s\" \"%s\"", resourceId, className)); - }; + } return object; } public UiObject getUiObjectByDescription(String description, String className) throws Exception { UiObject object = new UiObject(new UiSelector().descriptionContains(description) .className(className)); - if (!object.waitForExists(waitTimeout)) { + if (!object.waitForExists(timeout)) { throw new UiObjectNotFoundException(String.format("Could not find \"%s\" \"%s\"", description, className)); - }; + } return object; } public UiObject getUiObjectByText(String text, String className) throws Exception { UiObject object = new UiObject(new UiSelector().textContains(text) - .className(className)); - if (!object.waitForExists(waitTimeout)) { + .className(className)); + if (!object.waitForExists(timeout)) { throw new UiObjectNotFoundException(String.format("Could not find \"%s\" \"%s\"", text, className)); - }; + } return object; } public void pressEnter() { - getUiDevice().getInstance().pressEnter(); + UiDevice.getInstance().pressEnter(); } public void pressBack() { - getUiDevice().getInstance().pressBack(); + UiDevice.getInstance().pressBack(); } - public int getDisplayHeight () { - return getUiDevice().getInstance().getDisplayHeight(); + public int getDisplayHeight() { + return UiDevice.getInstance().getDisplayHeight(); } - public int getDisplayWidth () { - return getUiDevice().getInstance().getDisplayWidth(); + public int getDisplayWidth() { + return UiDevice.getInstance().getDisplayWidth(); } - public int getDisplayCentreWidth () { + public int getDisplayCentreWidth() { return getDisplayWidth() / 2; } - public int getDisplayCentreHeight () { + public int getDisplayCentreHeight() { return getDisplayHeight() / 2; } - public void tapDisplayCentre () { + public void tapDisplayCentre() { tapDisplay(getDisplayCentreWidth(), getDisplayCentreHeight()); } - public void tapDisplay (int x, int y) { - getUiDevice().getInstance().click(x, y); + public void tapDisplay(int x, int y) { + UiDevice.getInstance().click(x, y); } - public void uiDeviceSwipeUp (int steps) { - getUiDevice().getInstance().swipe( + public void uiDeviceSwipeUp(int steps) { + UiDevice.getInstance().swipe( getDisplayCentreWidth(), (getDisplayCentreHeight() / 2), getDisplayCentreWidth(), @@ -193,8 +196,8 @@ public class BaseUiAutomation extends UiAutomatorTestCase { steps); } - public void uiDeviceSwipeDown (int steps) { - getUiDevice().getInstance().swipe( + public void uiDeviceSwipeDown(int steps) { + UiDevice.getInstance().swipe( getDisplayCentreWidth(), (getDisplayCentreHeight() + (getDisplayCentreHeight() / 2)), getDisplayCentreWidth(), @@ -202,8 +205,8 @@ public class BaseUiAutomation extends UiAutomatorTestCase { steps); } - public void uiDeviceSwipeLeft (int steps) { - getUiDevice().getInstance().swipe( + public void uiDeviceSwipeLeft(int steps) { + UiDevice.getInstance().swipe( (getDisplayCentreWidth() + (getDisplayCentreWidth() / 2)), getDisplayCentreHeight(), (getDisplayCentreWidth() / 2), @@ -211,8 +214,8 @@ public class BaseUiAutomation extends UiAutomatorTestCase { steps); } - public void uiDeviceSwipeRight (int steps) { - getUiDevice().getInstance().swipe( + public void uiDeviceSwipeRight(int steps) { + UiDevice.getInstance().swipe( (getDisplayCentreWidth() / 2), getDisplayCentreHeight(), (getDisplayCentreWidth() + (getDisplayCentreWidth() / 2)), @@ -224,16 +227,20 @@ public class BaseUiAutomation extends UiAutomatorTestCase { final int FINGER_TOUCH_HALF_WIDTH = 20; // Make value between 1 and 100 - percent = (percent < 0) ? 1 : (percent > 100) ? 100 : percent; - float percentage = percent / 100f; + int nPercent = (percent < 0) ? 1 : (percent > 100) ? 100 : percent; + float percentage = nPercent / 100f; Rect rect = view.getVisibleBounds(); - if (rect.width() <= FINGER_TOUCH_HALF_WIDTH * 2) + + if (rect.width() <= FINGER_TOUCH_HALF_WIDTH * 2) { throw new IllegalStateException("Object width is too small for operation"); + } // Start at the top-center and bottom-center of the control - Point startPoint1 = new Point(rect.centerX(), rect.centerY() + (int) ((rect.height() / 2) * percentage)); - Point startPoint2 = new Point(rect.centerX(), rect.centerY() - (int) ((rect.height() / 2) * percentage)); + Point startPoint1 = new Point(rect.centerX(), rect.centerY() + + (int) ((rect.height() / 2) * percentage)); + Point startPoint2 = new Point(rect.centerX(), rect.centerY() + - (int) ((rect.height() / 2) * percentage)); // End at the same point at the center of the control Point endPoint1 = new Point(rect.centerX(), rect.centerY() + FINGER_TOUCH_HALF_WIDTH); @@ -246,20 +253,24 @@ public class BaseUiAutomation extends UiAutomatorTestCase { final int FINGER_TOUCH_HALF_WIDTH = 20; // Make value between 1 and 100 - percent = (percent < 0) ? 1 : (percent > 100) ? 100 : percent; - float percentage = percent / 100f; + int nPercent = (percent < 0) ? 1 : (percent > 100) ? 100 : percent; + float percentage = nPercent / 100f; Rect rect = view.getVisibleBounds(); - if (rect.width() <= FINGER_TOUCH_HALF_WIDTH * 2) + + if (rect.width() <= FINGER_TOUCH_HALF_WIDTH * 2) { throw new IllegalStateException("Object width is too small for operation"); + } // Start from the same point at the center of the control Point startPoint1 = new Point(rect.centerX(), rect.centerY() + FINGER_TOUCH_HALF_WIDTH); Point startPoint2 = new Point(rect.centerX(), rect.centerY() - FINGER_TOUCH_HALF_WIDTH); // End at the top-center and bottom-center of the control - Point endPoint1 = new Point(rect.centerX(), rect.centerY() + (int) ((rect.height() / 2) * percentage)); - Point endPoint2 = new Point(rect.centerX(), rect.centerY() - (int) ((rect.height() / 2) * percentage)); + Point endPoint1 = new Point(rect.centerX(), rect.centerY() + + (int) ((rect.height() / 2) * percentage)); + Point endPoint2 = new Point(rect.centerX(), rect.centerY() + - (int) ((rect.height() / 2) * percentage)); view.performTwoPointerGesture(startPoint1, startPoint2, endPoint1, endPoint2, steps); } @@ -286,7 +297,7 @@ public class BaseUiAutomation extends UiAutomatorTestCase { public void uiDevicePerformLongClick(UiObject view, int steps) throws Exception { Rect rect = view.getBounds(); - getUiDevice().getInstance().swipe(rect.centerX(), rect.centerY(), + UiDevice.getInstance().swipe(rect.centerX(), rect.centerY(), rect.centerX(), rect.centerY(), steps); } @@ -299,11 +310,13 @@ public class BaseUiAutomation extends UiAutomatorTestCase { } public void repeatClickUiObject(UiObject view, int repeatCount, int intervalInMillis) throws Exception { - int repeatInterval = intervalInMillis > CLICK_REPEAT_INTERVAL_MINIMUM ? intervalInMillis : CLICK_REPEAT_INTERVAL_DEFAULT; + int repeatInterval = intervalInMillis > CLICK_REPEAT_INTERVAL_MINIMUM + ? intervalInMillis : CLICK_REPEAT_INTERVAL_DEFAULT; if (repeatCount < 1 || !view.isClickable()) { return; } - while (repeatCount-- > 0) { + + for (int i = 0; i < repeatCount; ++i) { view.click(); SystemClock.sleep(repeatInterval); // in order to register as separate click } @@ -323,18 +336,23 @@ public class BaseUiAutomation extends UiAutomatorTestCase { public UiObject clickUiObject(FindByCriteria criteria, String matching, String clazz, boolean wait) throws Exception { UiObject view; + switch (criteria) { case BY_ID: - view = clazz == null ? getUiObjectByResourceId(matching) : getUiObjectByResourceId(matching, clazz); + view = (clazz == null) + ? getUiObjectByResourceId(matching) : getUiObjectByResourceId(matching, clazz); break; case BY_DESC: - view = clazz == null ? getUiObjectByDescription(matching) : getUiObjectByDescription(matching, clazz); + view = (clazz == null) + ? getUiObjectByDescription(matching) : getUiObjectByDescription(matching, clazz); break; case BY_TEXT: default: - view = clazz == null ? getUiObjectByText(matching) : getUiObjectByText(matching, clazz); + view = (clazz == null) + ? getUiObjectByText(matching) : getUiObjectByText(matching, clazz); break; } + if (wait) { view.clickAndWaitForNewWindow(); } else { @@ -345,26 +363,28 @@ public class BaseUiAutomation extends UiAutomatorTestCase { public UiObject getUiObjectByText(String text) throws Exception { UiObject object = new UiObject(new UiSelector().textContains(text)); - if (!object.waitForExists(waitTimeout)) { + + if (!object.waitForExists(timeout)) { throw new UiObjectNotFoundException("Could not find view with text: " + text); - }; + } return object; } public UiObject getUiObjectByDescription(String desc) throws Exception { UiObject object = new UiObject(new UiSelector().descriptionContains(desc)); - if (!object.waitForExists(waitTimeout)) { + + if (!object.waitForExists(timeout)) { throw new UiObjectNotFoundException("Could not find view with description: " + desc); - }; + } return object; } public UiObject getUiObjectByResourceId(String id) throws Exception { UiObject object = new UiObject(new UiSelector().resourceId(id)); - if (!object.waitForExists(waitTimeout)) { + + if (!object.waitForExists(timeout)) { throw new UiObjectNotFoundException("Could not find view with resource ID: " + id); - }; + } return object; } - } diff --git a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java index 9c763a0e..ddbd9da9 100644 --- a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java +++ b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java @@ -16,18 +16,13 @@ package com.arm.wlauto.uiauto; import android.os.Build; -import android.os.SystemClock; import android.os.Bundle; import android.util.Pair; import com.android.uiautomator.core.UiObject; -import com.android.uiautomator.core.UiObjectNotFoundException; -import com.android.uiautomator.core.UiScrollable; import com.android.uiautomator.core.UiSelector; -import com.arm.wlauto.uiauto.BaseUiAutomation; - import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; @@ -45,7 +40,6 @@ import java.util.Map.Entry; public class UxPerfUiAutomation extends BaseUiAutomation { private Logger logger = Logger.getLogger(UxPerfUiAutomation.class.getName()); - public long timeout = TimeUnit.SECONDS.toMillis(4); public enum Direction { UP, DOWN, LEFT, RIGHT, NULL }; public enum GestureType { UIDEVICE_SWIPE, UIOBJECT_SWIPE, PINCH }; @@ -56,7 +50,7 @@ public class UxPerfUiAutomation extends BaseUiAutomation { private long endTime = 0; private long duration = 0; - public void start(){ + public void start() { this.startTime = System.currentTimeMillis(); } @@ -152,8 +146,7 @@ public class UxPerfUiAutomation extends BaseUiAutomation { return executeCommand(command, false); } - public Pair executeCommand(List command, boolean readOutput) - { + public Pair executeCommand(List command, boolean readOutput) { StringBuilder stringBuilder = new StringBuilder(); ProcessBuilder processBuilder = new ProcessBuilder(); BufferedReader bufferedReader = null; @@ -210,17 +203,25 @@ public class UxPerfUiAutomation extends BaseUiAutomation { } process.waitFor(); if (process.exitValue() != 0) { - throw new Exception("Error while taking dumpsys, exitCode=" + - process.exitValue()); + throw new Exception("Error while taking dumpsys, exitCode=" + + process.exitValue()); } } catch (Exception exception) { logger.log(Level.SEVERE, "Unable to take a dumpsys", exception); } finally { if (fileWriter != null) { - try { fileWriter.close(); } catch (Exception e) { e.printStackTrace(); } + try { + fileWriter.close(); + } catch (Exception e) { + e.printStackTrace(); + } } if (bufferedReader != null) { - try { bufferedReader.close(); } catch (Exception e) { e.printStackTrace(); } + try { + bufferedReader.close(); + } catch (Exception e) { + e.printStackTrace(); + } } } } @@ -276,7 +277,7 @@ public class UxPerfUiAutomation extends BaseUiAutomation { } public Timer uiObjectPinchTest(UiObject view, PinchType direction, int steps, - int percent) throws Exception { + int percent) throws Exception { Timer results = new Timer(); results.start(); if (direction.equals(PinchType.IN)) { @@ -362,8 +363,8 @@ public class UxPerfUiAutomation extends BaseUiAutomation { public void stopDumpsysSurfaceFlinger(Bundle parameters, String filename) throws Exception { if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) { - File out_file = new File(parameters.getString("output_dir"), filename); - exitDumpsysSurfaceFlinger(parameters.getString("package"), out_file); + File outFile = new File(parameters.getString("output_dir"), filename); + exitDumpsysSurfaceFlinger(parameters.getString("package"), outFile); } } @@ -375,8 +376,8 @@ public class UxPerfUiAutomation extends BaseUiAutomation { public void stopDumpsysGfxInfo(Bundle parameters, String filename) throws Exception { if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) { - File out_file = new File(parameters.getString("output_dir"), filename); - exitDumpsysGfxInfo(parameters.getString("package"), out_file); + File outFile = new File(parameters.getString("output_dir"), filename); + exitDumpsysGfxInfo(parameters.getString("package"), outFile); } } } diff --git a/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar b/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar index 12316cb375aa698d2657049ab64af7664e19e044..bbe53e5abdbe19065559892eb3bf672b61a1d4b4 100644 GIT binary patch delta 13183 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

t`h`(^UD(1z67?6VsV=g5Z0G(mxqJdQQ?3 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

-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