Android Open Source - andro_auto_framework Custom Visitor From Project Back to project page andro_auto_framework .
License The source code is released under:
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCT...
If you think the Android project andro_auto_framework listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package org.imaginea.botbot;
/ * w w w . j a v a 2 s . c o m * /
import org.objectweb.asm.AnnotationVisitor;
import org.objectweb.asm.Attribute;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.FieldVisitor;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import static org.objectweb.asm.Opcodes.*;
import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
import static org.objectweb.asm.Opcodes.IRETURN;
import static org.objectweb.asm.Opcodes.ASM4;
public class CustomVisitor extends ClassVisitor {
private boolean extendsActivity = false;
public boolean isMethodPresent=false;
public CustomVisitor() {
super (ASM4);
}
public CustomVisitor(ClassWriter cw) {
super (ASM4, cw);
}
public void visit(int version, int access, String name, String signature,
String superName, String[] interfaces) {
extendsActivity = false;
if (superName.contentEquals("android/app/Activity" )) {
//System.out.println(name + " extends " + superName + " {");
extendsActivity = true;
}
cv.visit(version, access, name, signature, superName, interfaces);
}
public MethodVisitor visitMethod(int access, String name, String desc,
String signature, String[] exceptions) {
if (extendsActivity) {
//System.out
// .println(" " + "name is:" + name + " desc is: " + desc);
if (name.equals("onKeyDown" )
&& desc.equals("(ILandroid/view/KeyEvent;)Z" )) {
isMethodPresent = true;
}
//System.out.println("method not present");
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
public void visitEnd() {
if (extendsActivity && !isMethodPresent) {
System.out.println("Adding method" );
MethodVisitor mv = cv.visitMethod(ACC_PUBLIC, "onKeyDown" ,
"(ILandroid/view/KeyEvent;)Z" , null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ILOAD, 1);
mv.visitVarInsn(ALOAD, 2);
mv.visitMethodInsn(INVOKESPECIAL, "android/app/Activity" , "onKeyDown" , "(ILandroid/view/KeyEvent;)Z" );
mv.visitInsn(IRETURN);
mv.visitMaxs(3, 3);
mv.visitEnd();
}
cv.visitEnd();
}
}
Java Source Code List com.imaginea.botbot.server.converter.RecordEntriesConverter.java com.imaginea.botbot.server.converter.RecordEntryConverter.java com.imaginea.botbot.server.converter.RecordSessionConverter.java com.imaginea.botbot.server.converter.RecordSessionsConverter.java com.imaginea.botbot.server.converter.UriResolver.java com.imaginea.botbot.server.jpa.RecordEntry.java com.imaginea.botbot.server.jpa.RecordSession.java com.imaginea.botbot.server.service.PersistenceService.java com.imaginea.botbot.server.service.RecordEntriesResource.java com.imaginea.botbot.server.service.RecordEntryResource.java com.imaginea.botbot.server.service.RecordSessionResource.java com.imaginea.botbot.server.service.RecordSessionsResource.java com.imaginea.botbot.server.servlet.DownloadCsv.java com.zutubi.android.junitreport.JUnitReportListener.java com.zutubi.android.junitreport.JUnitReportTestRunner.java com.zutubi.android.junitreport.TestKeeper.java com.zutubi.android.junitreport.TestngReportListener.java org.imaginea.botbot.CommandTransmitter.java org.imaginea.botbot.Command.java org.imaginea.botbot.Convertor.java org.imaginea.botbot.CustomVisitor.java org.imaginea.botbot.ListenerAdder.java org.imaginea.botbot.OnClickListenerTest.java org.imaginea.botbot.OnItemClickListenerTest.java org.imaginea.botbot.OnItemSelectedListenerTest.java org.imaginea.botbot.OnTouchListenerTest.java org.imaginea.botbot.Recorder.java org.imaginea.botbot.ServerProperties.java org.imaginea.botbot.TextListner.java org.imaginea.botbot.ViewClasses.java org.imaginea.botbot.api.DefaultProperties.java org.imaginea.botbot.api.IdentifyByType.java org.imaginea.botbot.api.TestCSVReader.java org.imaginea.botbot.api.UsefulFunctions.java org.imaginea.botbot.common.AndroFrameworkExecutorDataDriven.java org.imaginea.botbot.common.AndroFrameworkExecutor.java org.imaginea.botbot.common.BaseClass.java org.imaginea.botbot.common.BotBotTestRunner.java org.imaginea.botbot.common.CommandExecutor.java org.imaginea.botbot.common.Command.java org.imaginea.botbot.common.DataDrivenTestCase.java org.imaginea.botbot.common.Prefrences.java org.imaginea.botbot.common.RobotiumBaseClass.java org.imaginea.botbot.common.TestCaseGenerator.java org.imaginea.botbot.filereader.BaseReader.java org.imaginea.botbot.filereader.FileTypeReader.java org.imaginea.botbot.filereader.PropertiesReader.java org.imaginea.botbot.keywords.BaseKeywordDefinitions.java org.imaginea.botbot.keywords.DynamicExecution.java org.imaginea.botbot.keywords.IKeywords.java org.imaginea.botbot.keywords.KeywordCaller.java org.imaginea.botbot.keywords.NativeDriverKeywordDefinitions.java org.imaginea.botbot.keywords.RobotiumKeywordDefinition.java org.imaginea.botbot.utility.DataDrivenDataGenerator.java org.imaginea.botbot.utility.WebViewHandler.java