From 87665388466812897e888680c0b2a1d7db1b9cbd Mon Sep 17 00:00:00 2001 From: Deepanshu Gupta Date: Mon, 31 Mar 2014 18:59:45 -0700 Subject: [PATCH] Fix visitFieldInsn in layoutlib_create. [DO NOT MERGE] The bug caused some classes to be missed when computing the dependencies of the existing classes. This change includes the new mock_android.jar compiled from the mock sources again. Change-Id: I7285ff67e016ce5d73a8550501f49acc73cfadfa (cherry-picked from 6136af326e64037184a7a2a3ae60c399f04d631f) --- .../tools/layoutlib/create/AsmAnalyzer.java | 4 +-- .../layoutlib/create/AsmAnalyzerTest.java | 8 +++--- .../create/tests/data/mock_android.jar | Bin 9096 -> 9423 bytes .../mock_android/util/EmptyArray.java | 24 ++++++++++++++++++ .../mock_android/widget/LinearLayout.java | 4 ++- 5 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 tools/layoutlib/create/tests/mock_data/mock_android/util/EmptyArray.java diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java index 1572a4034432a..e96d7367dafad 100644 --- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java +++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java @@ -595,8 +595,8 @@ public class AsmAnalyzer { // field instruction @Override public void visitFieldInsn(int opcode, String owner, String name, String desc) { - // name is the field's name. - considerName(name); + // owner is the class that declares the field. + considerName(owner); // desc is the field's descriptor (see Type). considerDesc(desc); } diff --git a/tools/layoutlib/create/tests/com/android/tools/layoutlib/create/AsmAnalyzerTest.java b/tools/layoutlib/create/tests/com/android/tools/layoutlib/create/AsmAnalyzerTest.java index 005fc9dadab41..7770dec2aa8b2 100644 --- a/tools/layoutlib/create/tests/com/android/tools/layoutlib/create/AsmAnalyzerTest.java +++ b/tools/layoutlib/create/tests/com/android/tools/layoutlib/create/AsmAnalyzerTest.java @@ -76,6 +76,7 @@ public class AsmAnalyzerTest { "mock_android.dummy.InnerTest$MyStaticInnerClass", "mock_android.dummy.InnerTest$NotStaticInner1", "mock_android.dummy.InnerTest$NotStaticInner2", + "mock_android.util.EmptyArray", "mock_android.view.View", "mock_android.view.ViewGroup", "mock_android.view.ViewGroup$LayoutParams", @@ -192,15 +193,16 @@ public class AsmAnalyzerTest { TreeMap in_deps = new TreeMap(); TreeMap out_deps = new TreeMap(); - ClassReader cr = mAa.findClass("mock_android.widget.TableLayout", zipClasses, keep); + ClassReader cr = mAa.findClass("mock_android.widget.LinearLayout", zipClasses, keep); DependencyVisitor visitor = mAa.getVisitor(zipClasses, keep, new_keep, in_deps, out_deps); // get first level dependencies cr.accept(visitor, 0 /* flags */); assertArrayEquals(new String[] { + "mock_android.util.EmptyArray", "mock_android.view.ViewGroup", - "mock_android.widget.TableLayout$LayoutParams", + "mock_android.widget.LinearLayout$LayoutParams", }, out_deps.keySet().toArray()); @@ -230,7 +232,7 @@ public class AsmAnalyzerTest { assertArrayEquals(new String[] { }, out_deps.keySet().toArray()); assertArrayEquals(new String[] { - "mock_android.widget.TableLayout", + "mock_android.widget.LinearLayout", }, keep.keySet().toArray()); } } diff --git a/tools/layoutlib/create/tests/data/mock_android.jar b/tools/layoutlib/create/tests/data/mock_android.jar index 60d8efb1bb997982776ffa3a8b9a6824de644b60..1cac0bb02a9db53d470f0c8571076fdc17c8f0e8 100644 GIT binary patch delta 2487 zcmZvdc_5VA8^>qHXbgifV;jtj!9|RH&s27aVN6^?GWInJ*# zy0WLPvZSjhDTzeI<*JbT4(?BGzxVv{p7%M==Q-zmpYuNFn02>}5Y3hcE(+lT+rg4D zi!(y|;Jdi*a22M*!`-bW=x>~$Bq^Ugdq!VmRv>sh-Q%~$p1z#E`{RXM{c0gFo5_UZ z=_~}XDIF8=bC9Wrr2pH+{QTvm_!UURNi1=D%8XlMXIE!%?hCq}K}}fV9IsWv>qghg z8tg<2yDaBTLU6C%Z8s{M6%-Uz){vhZnN+PXb0^6O`W(uH7xSr8QVa)jZx2x<*m0+S zaimnLm+gIE6}ci1zsGoMT51WO7R+(kBq`aUnJ>aBzwlgIxMA##CDMYpgH|2i;^-x%lCCQW_3aba{X*4xPeG9Lp*uM2 zIcb_Lg3ljE5Pb6$0)Zq$A&?D`xZ>1KL9L;yG66I!9*97qfhPo!+Gw7bHEZoB_y}xu zytW^au@Z!EcM_|$l6`jI1zjXZ{C-KHn2bTqOTrO*CagAQ`dl@qZ3%d(!5o2`cLM^57s zd>I|H%%KRG?pQizYUWvcpdl&hdWrK~-iT1P-J4oYtareeHhMoXw9QfI%e@m zqcW~*EUg`<6jdz8c$Q;RG+tP?T~nVxu1l;NQK_7@r=Sm)tQ@LD4LdvDPb(Cd#x9wr zZ`1hON!)fB#&Ac__X(=YL?fws^UhE1-5B<=-rky^joSY^$COibK!31kzLMYhN#N)R zZ!^0zK;fGKRC+@4;6RoBT`)5UzADd5MGTmw+#fSV!zQik+b5d2-eZWnu4f@cM4ee} z->NBk=Um#+(jqm{LG2n-gj_Z2wv)Gs2+DHr8NjvuCu(V1*cY|aXbcar$(mHaLzmdH z^RDsBF9pl<%QMIk*gbV}i`U+A2jSvQHr?-)+kL8J^ZV88#!lZ zc#N}T=fck0k8yKh)8fsl9J;+(I!ra4cdb^&$(j3v6DDp?puf6*6pVT7(I1^maGUC_ z`IBHM+muDReMaTYbZ~y>q^Cl?Zm*xptgF+5k)3_Lr`U=oidPC-TEEmDaxR;7!_^0L zM(S*_H|%=bE$eylX_W8Vu}Q7-O~H>?Gsa6Zsw{)4yPBMy@xh=w))AT(7Z%J_N|v7J zNa@}bl%AhJaK%)ldo`m#A)|j3vs$WbT|ze*Ybfg9y21S=fZru7m~`-XnxGRO|JlLm zP5Qj|y=fVX^Yqw=%?zEErp)TA482fxjdMISTby|oAwv1gv*h?%AwEzHB@pg^czpDs z&(0k$hoLfFFHAD34Cdm6Z?;6&{VEf3>|Rd~bf?5IXe;_IW|>9dvgU!*+!Hx6 z?)alR)4!aW7bseMz`S&Y35D+E_P)0g9U$Nt-( zK(s>vyTUe3yEaX3^s4Ysm?&i9f~;Y}K1hSN0uH!^HxlF?egA*&3E&%k+gb&u z5TszmP=J9X0yr2JAQMn)_Vb{98n$YGLckNbw4*FAm;ug%;)OuSVBC$T91tNIuW>Y@ z6f6U=%4HH2WVxK)Vih7ATqBhS0@2=pz#b9_I_i>Xwi^rQ0)-Z^d?gT21t;4KEb@bZ z8jvi2_yL+y;`4TZLm-+c2t;nvEG!fV5rC_*7$qq6FXw76TCFQLEdg-t>!519zbe?m~Cdf_OziXML{Ynr451 z0dmAZ8y(y3C delta 2160 zcmZWq2{>En8crg_UXq9{B(c{JYOk%SC}WGXt`<|;*lQT()>=zq>(n+Q_gscD6dgqk z+EghW#C~n1Ek$d2=-5iFwOkkX1kWwcJ^yo_^PTs9&wKv!eeeIBS625dg{d}Na5RJ$ z9JY6D$xLBa_(mdl4OFF5?d+RLBGKg7OqZRC?T8f~S%p>pRWtWE!kwm|i6J3kX~1jD z^sCq5{oyN!?V?mx8&&a#r@P)0Jvq^={2R+SNMDd=A<0+0HGU2um%F8LUW!}J$`;M{ z#rVf1^@sV$Ip$W@O`$zfqN<6q#MpQ$6?>`XDXcj&9@&*JYEDmF^NU#i*S1A?tb&d* zQzI_>UPi+~`d_r6_Peol@v3S+WQ><4Oj7n&b^C8+SD|W*KJS%f6+hvh<&riU)*T?| ztbH)B{p)(W@MgdFr(4fdXROfdJd5t(U&XEKODk}OgMY`alX&Q21%;2MIvLzRjW3uM~%E5pVBbw(KJJPSG$C@@S2K9ag43n zye$IVvdSuwWqN3N)WvRt%RQ25Tl_+mtwapg)}8rV1gtx7agja-FUwz0(P@l+XP4z$ ztYvT^eQ$9KHZf5iO0}rU8SuiEL)+HxsAZ+I2cKdhU=-e0BB#)SB(YD>i z5pOk5PqFFLz6XqHxTX7nL(7b(iVM+{HaZbywzQ2IVskZo@FM$vcADZZa=P2*J?KzA^}usbNXdFn-*|)z8`9TJ`l5gxmrAf zzxtAVoN}AZMbS83>&mAAnEFvqFW}iW%lO_T8#nn2(x(V9&DLD;_TK7Ud^z&VtC}## zPrlBb=N5PTHiEjj?7x{muRTAO)cK(Dc4yA0a<-aE5d!^&Fe17}+($~g^2H&r$=l&x=;3}=y_q#9%Vot!*}|MN!9 z#QTb??jF&DuCgJ7qrk~6j`F6GLF#t{UpeUg&^YVR zck>23wttWB4Ef^Y0Ig^H+1cCkmBaW9XKh-_bHMe{fp_(NXJ%5TS`R8y#mMYu!II!e z4VAFS%BuXcy#>}z3dnx*w0_DI|AMc=mJJ`#BQYwz(D>?;Or0D0`vRPTxP_ZtGX)Fc z^M3^acCq?&d$u(v!*7a{+I<5C0dcW2s=iH+r+$CHdl9a9En6w2LdkhVK|Ll@nH`Ut zv`hltl1)N>jSif6nN6G7on04bI;&?A%xm<*%1yTR+dl?w84S)Bl{J4Wo*d8`SX^Oj zkg!B|M*UGtQw#F4+p`XO6;kk6z-(($Q^`OcP{q+*)ev)R#f_X8{Secun|U4Ca)Rey!*eE1{4xQ91ODb?eij<6DI3a{wd>iJ+o{>Qvs{tSAU`C zyXU#xSoX_SqNj<@PanHn;_^zW21(0vTsF&V^G)Kx?*u8s_mQZ0R3=R4EM*)gu&4f6= zl>hZa;ESvwj?)1Lc3iucK$}N^(wZmi4uOmV6x@a5E{T(Zo#g`TaX7G1${b-!AT|X* z#8mLoc#c*u*?1WX>Ii|g)IFuujyNQ?AtZqNc)=rqGQ1S*65k=NCm;;0<55RAKS2tn zFK~>D0WO4Nz8{D;2!gmQ@Q{GSb6W1n-Hbi;LRV3MfR+Gkz40avVZN}v^pl_TRh95(D9B0?bN4R{hxaU3w9po|vL!=HBh zHr3{9&N+{rG`9As$124Erh**6kVbLVarlmt1y(vmrbvQh)f4qRtU66z3RWZq&R~FW m30aQJ(Py&drJ%Mzx`H^cE{{TU^Khg@!SRM00?C)*-2E4dK1>Gy diff --git a/tools/layoutlib/create/tests/mock_data/mock_android/util/EmptyArray.java b/tools/layoutlib/create/tests/mock_data/mock_android/util/EmptyArray.java new file mode 100644 index 0000000000000..aaeebf641cc24 --- /dev/null +++ b/tools/layoutlib/create/tests/mock_data/mock_android/util/EmptyArray.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php + * + * 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 mock_android.util; + +import java.lang.JavaClass; + +public class EmptyArray { + + public static final Object[] OBJECT = new Object[0]; +} diff --git a/tools/layoutlib/create/tests/mock_data/mock_android/widget/LinearLayout.java b/tools/layoutlib/create/tests/mock_data/mock_android/widget/LinearLayout.java index 3870a63d97822..af56c4bfe3da8 100644 --- a/tools/layoutlib/create/tests/mock_data/mock_android/widget/LinearLayout.java +++ b/tools/layoutlib/create/tests/mock_data/mock_android/widget/LinearLayout.java @@ -16,11 +16,13 @@ package mock_android.widget; +import mock_android.util.EmptyArray; import mock_android.view.ViewGroup; public class LinearLayout extends ViewGroup { - public class LayoutParams extends mock_android.view.ViewGroup.LayoutParams { + Object[] mObjects = EmptyArray.OBJECT; + public class LayoutParams extends MarginLayoutParams { }