From 6f9baea47757fef4745de434e09bd552fddc1f03 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. Change-Id: I7285ff67e016ce5d73a8550501f49acc73cfadfa (cherry-picked from 4a0f93bd32b8dd9b3c351680ad82e461d5111f38) --- .../tools/layoutlib/create/AsmAnalyzer.java | 4 ++-- .../tools/layoutlib/create/DependencyFinder.java | 3 ++- .../tools/layoutlib/create/AsmAnalyzerTest.java | 8 ++++--- tools/layoutlib/create/tests/data/mock_android.jar | Bin 14872 -> 10198 bytes .../mock_data/mock_android/util/EmptyArray.java | 24 +++++++++++++++++++++ .../mock_android/widget/LinearLayout.java | 4 +++- 6 files changed, 36 insertions(+), 7 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 9a31705d0a3a..3e75c9ebc477 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 @@ -632,8 +632,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/src/com/android/tools/layoutlib/create/DependencyFinder.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/DependencyFinder.java index c988c7099cb8..2016c0e3b990 100644 --- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/DependencyFinder.java +++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/DependencyFinder.java @@ -527,7 +527,8 @@ public class DependencyFinder { // field instruction @Override public void visitFieldInsn(int opcode, String owner, String name, String desc) { - // name is the field's 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 7ec0d389be87..78e2c4899c1b 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 @@ -83,6 +83,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", @@ -217,15 +218,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()); @@ -255,7 +257,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 8dd04812a866a6ed1677c039695686857275776e..c6ca3c47afee27d403b5ff001d117a378081baa4 100644 GIT binary patch literal 10198 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 literal 14872 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 DL~eN_ 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 000000000000..aaeebf641cc2 --- /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 3870a63d9782..af56c4bfe3da 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 { } -- 2.11.0