1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2016 The Android Open Source Project 3*795d594fSAndroid Build Coastguard Worker * 4*795d594fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*795d594fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*795d594fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*795d594fSAndroid Build Coastguard Worker * 8*795d594fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*795d594fSAndroid Build Coastguard Worker * 10*795d594fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*795d594fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*795d594fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*795d594fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*795d594fSAndroid Build Coastguard Worker * limitations under the License. 15*795d594fSAndroid Build Coastguard Worker */ 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker package art; 18*795d594fSAndroid Build Coastguard Worker 19*795d594fSAndroid Build Coastguard Worker import java.util.Base64; 20*795d594fSAndroid Build Coastguard Worker 21*795d594fSAndroid Build Coastguard Worker public class Test1997 { 22*795d594fSAndroid Build Coastguard Worker 23*795d594fSAndroid Build Coastguard Worker public static class SuperTransform { 24*795d594fSAndroid Build Coastguard Worker // We will be shadowing this function. sayHi()25*795d594fSAndroid Build Coastguard Worker public static void sayHi() { 26*795d594fSAndroid Build Coastguard Worker System.out.println("Hello!"); 27*795d594fSAndroid Build Coastguard Worker } 28*795d594fSAndroid Build Coastguard Worker } 29*795d594fSAndroid Build Coastguard Worker 30*795d594fSAndroid Build Coastguard Worker // The class we will be transforming. 31*795d594fSAndroid Build Coastguard Worker public static class Transform extends SuperTransform { sayHiTwice()32*795d594fSAndroid Build Coastguard Worker public static void sayHiTwice() { 33*795d594fSAndroid Build Coastguard Worker Transform.sayHi(); 34*795d594fSAndroid Build Coastguard Worker Transform.sayHi(); 35*795d594fSAndroid Build Coastguard Worker } 36*795d594fSAndroid Build Coastguard Worker } 37*795d594fSAndroid Build Coastguard Worker 38*795d594fSAndroid Build Coastguard Worker // public static class Transform extends SuperTransform { 39*795d594fSAndroid Build Coastguard Worker // public static void sayHiTwice() { 40*795d594fSAndroid Build Coastguard Worker // Transform.sayHi(); 41*795d594fSAndroid Build Coastguard Worker // Transform.sayHi(); 42*795d594fSAndroid Build Coastguard Worker // } 43*795d594fSAndroid Build Coastguard Worker // public static void sayHi() { 44*795d594fSAndroid Build Coastguard Worker // System.out.println("Hello World!"); 45*795d594fSAndroid Build Coastguard Worker // } 46*795d594fSAndroid Build Coastguard Worker // } 47*795d594fSAndroid Build Coastguard Worker private static final byte[] DEX_BYTES = Base64.getDecoder().decode( 48*795d594fSAndroid Build Coastguard Worker "ZGV4CjAzNQA9wdy7Lgbrv+sD+wixborREr0maZCK5yqABAAAcAAAAHhWNBIAAAAAAAAAALwDAAAW" 49*795d594fSAndroid Build Coastguard Worker + "AAAAcAAAAAkAAADIAAAAAgAAAOwAAAABAAAABAEAAAUAAAAMAQAAAQAAADQBAAAsAwAAVAEAAMIB" 50*795d594fSAndroid Build Coastguard Worker + "AADKAQAA2AEAAPcBAAARAgAAIQIAAEUCAABlAgAAfAIAAJACAACkAgAAswIAAL4CAADBAgAAxQIA" 51*795d594fSAndroid Build Coastguard Worker + "ANICAADYAgAA3QIAAOYCAADtAgAA+QIAAAADAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAA" 52*795d594fSAndroid Build Coastguard Worker + "CQAAAAwAAAAMAAAACAAAAAAAAAANAAAACAAAALwBAAAHAAUAEAAAAAAAAAAAAAAAAQAAAAAAAAAB" 53*795d594fSAndroid Build Coastguard Worker + "AAAAEgAAAAEAAAATAAAABQABABEAAAABAAAAAQAAAAAAAAAAAAAACgAAAKwDAACHAwAAAAAAAAEA" 54*795d594fSAndroid Build Coastguard Worker + "AQABAAAAqgEAAAQAAABwEAAAAAAOAAIAAAACAAAArgEAAAgAAABiAAAAGgEBAG4gBAAQAA4AAAAA" 55*795d594fSAndroid Build Coastguard Worker + "AAAAAACzAQAABwAAAHEAAgAAAHEAAgAAAA4ADwAOABUADngAEQAOPDwAAAAAAQAAAAYABjxpbml0" 56*795d594fSAndroid Build Coastguard Worker + "PgAMSGVsbG8gV29ybGQhAB1MYXJ0L1Rlc3QxOTk3JFN1cGVyVHJhbnNmb3JtOwAYTGFydC9UZXN0" 57*795d594fSAndroid Build Coastguard Worker + "MTk5NyRUcmFuc2Zvcm07AA5MYXJ0L1Rlc3QxOTk3OwAiTGRhbHZpay9hbm5vdGF0aW9uL0VuY2xv" 58*795d594fSAndroid Build Coastguard Worker + "c2luZ0NsYXNzOwAeTGRhbHZpay9hbm5vdGF0aW9uL0lubmVyQ2xhc3M7ABVMamF2YS9pby9Qcmlu" 59*795d594fSAndroid Build Coastguard Worker + "dFN0cmVhbTsAEkxqYXZhL2xhbmcvU3RyaW5nOwASTGphdmEvbGFuZy9TeXN0ZW07AA1UZXN0MTk5" 60*795d594fSAndroid Build Coastguard Worker + "Ny5qYXZhAAlUcmFuc2Zvcm0AAVYAAlZMAAthY2Nlc3NGbGFncwAEbmFtZQADb3V0AAdwcmludGxu" 61*795d594fSAndroid Build Coastguard Worker + "AAVzYXlIaQAKc2F5SGlUd2ljZQAFdmFsdWUAdn5+RDh7ImNvbXBpbGF0aW9uLW1vZGUiOiJkZWJ1" 62*795d594fSAndroid Build Coastguard Worker + "ZyIsIm1pbi1hcGkiOjEsInNoYS0xIjoiNjBkYTRkNjdiMzgxYzQyNDY3NzU3YzQ5ZmI2ZTU1NzU2" 63*795d594fSAndroid Build Coastguard Worker + "ZDg4YTJmMyIsInZlcnNpb24iOiIxLjcuMTItZGV2In0AAgMBFBgCAgQCDgQJDxcLAAADAAGBgATU" 64*795d594fSAndroid Build Coastguard Worker + "AgEJ7AIBCYwDAAAAAAAAAAIAAAB4AwAAfgMAAKADAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAEAAAAA" 65*795d594fSAndroid Build Coastguard Worker + "AAAAAQAAABYAAABwAAAAAgAAAAkAAADIAAAAAwAAAAIAAADsAAAABAAAAAEAAAAEAQAABQAAAAUA" 66*795d594fSAndroid Build Coastguard Worker + "AAAMAQAABgAAAAEAAAA0AQAAASAAAAMAAABUAQAAAyAAAAMAAACqAQAAARAAAAEAAAC8AQAAAiAA" 67*795d594fSAndroid Build Coastguard Worker + "ABYAAADCAQAABCAAAAIAAAB4AwAAACAAAAEAAACHAwAAAxAAAAIAAACcAwAABiAAAAEAAACsAwAA" 68*795d594fSAndroid Build Coastguard Worker + "ABAAAAEAAAC8AwAA"); 69*795d594fSAndroid Build Coastguard Worker run()70*795d594fSAndroid Build Coastguard Worker public static void run() throws Exception { 71*795d594fSAndroid Build Coastguard Worker Redefinition.setTestConfiguration(Redefinition.Config.COMMON_REDEFINE); 72*795d594fSAndroid Build Coastguard Worker doTest(); 73*795d594fSAndroid Build Coastguard Worker } 74*795d594fSAndroid Build Coastguard Worker doTest()75*795d594fSAndroid Build Coastguard Worker public static void doTest() throws Exception { 76*795d594fSAndroid Build Coastguard Worker Transform.sayHiTwice(); 77*795d594fSAndroid Build Coastguard Worker Transform.sayHi(); 78*795d594fSAndroid Build Coastguard Worker Redefinition.doCommonStructuralClassRedefinition(Transform.class, DEX_BYTES); 79*795d594fSAndroid Build Coastguard Worker Transform.sayHiTwice(); 80*795d594fSAndroid Build Coastguard Worker Transform.sayHi(); 81*795d594fSAndroid Build Coastguard Worker } 82*795d594fSAndroid Build Coastguard Worker } 83