mirror of
https://github.com/revanced/jadb.git
synced 2025-02-14 02:56:48 +01:00
Filtering out 0x0d, 0x0a sequences from shell commands. Makes screenshotting work again. :-)
This commit is contained in:
parent
41872e3bb9
commit
c9a0a59ace
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
Generated by tests
|
Generated by tests
|
||||||
/foobar.md
|
/foobar.md
|
||||||
/xyz
|
/xyz
|
||||||
|
screenshot.png
|
||||||
|
|
||||||
#################
|
#################
|
||||||
## Eclipse
|
## Eclipse
|
||||||
|
21
src/se/vidstige/jadb/AdbFilterOutputStream.java
Normal file
21
src/se/vidstige/jadb/AdbFilterOutputStream.java
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package se.vidstige.jadb;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
public class AdbFilterOutputStream extends LookBackFilteringOutputStream {
|
||||||
|
public AdbFilterOutputStream(OutputStream inner) {
|
||||||
|
super(inner, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(int c) throws IOException {
|
||||||
|
if (!lookback().isEmpty()) {
|
||||||
|
Byte last = lookback().getFirst();
|
||||||
|
if (last != null && last == 0x0d && c == 0x0a) {
|
||||||
|
unwrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.write(c);
|
||||||
|
}
|
||||||
|
}
|
@ -60,7 +60,7 @@ public class JadbDevice {
|
|||||||
}
|
}
|
||||||
send(transport, "shell:" + shellLine.toString());
|
send(transport, "shell:" + shellLine.toString());
|
||||||
if (stdout != null) {
|
if (stdout != null) {
|
||||||
transport.readResponseTo(stdout);
|
transport.readResponseTo(new AdbFilterOutputStream(stdout));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
44
test/se/vidstige/jadb/test/AdbOutputStreamFixture.java
Normal file
44
test/se/vidstige/jadb/test/AdbOutputStreamFixture.java
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package se.vidstige.jadb.test;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
import se.vidstige.jadb.AdbFilterOutputStream;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
public class AdbOutputStreamFixture {
|
||||||
|
|
||||||
|
private byte[] passthrough(byte[] input) throws IOException {
|
||||||
|
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
||||||
|
OutputStream sut = new AdbFilterOutputStream(output);
|
||||||
|
sut.write(input);
|
||||||
|
sut.flush();
|
||||||
|
return output.toByteArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSimple() throws Exception {
|
||||||
|
byte[] actual = passthrough(new byte[]{ 1, 2, 3});
|
||||||
|
Assert.assertArrayEquals(new byte[]{ 1, 2, 3}, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEmpty() throws Exception {
|
||||||
|
byte[] actual = passthrough(new byte[]{});
|
||||||
|
Assert.assertArrayEquals(new byte[]{}, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSimpleRemoval() throws Exception {
|
||||||
|
byte[] actual = passthrough(new byte[]{0x0d, 0x0a});
|
||||||
|
Assert.assertArrayEquals(new byte[]{0x0a}, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDoubleRemoval() throws Exception {
|
||||||
|
byte[] actual = passthrough(new byte[]{0x0d, 0x0a, 0x0d, 0x0a});
|
||||||
|
Assert.assertArrayEquals(new byte[]{0x0a, 0x0a}, actual);
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ import se.vidstige.jadb.JadbException;
|
|||||||
import se.vidstige.jadb.RemoteFile;
|
import se.vidstige.jadb.RemoteFile;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class RealDeviceTestCases {
|
public class RealDeviceTestCases {
|
||||||
@ -77,4 +78,12 @@ public class RealDeviceTestCases {
|
|||||||
any.executeShell(System.out, "ls /");
|
any.executeShell(System.out, "ls /");
|
||||||
any.executeShell(System.out, "ls", "-la", "/");
|
any.executeShell(System.out, "ls", "-la", "/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testScreenshot() throws Exception {
|
||||||
|
JadbConnection jadb = new JadbConnection();
|
||||||
|
JadbDevice any = jadb.getAnyDevice();
|
||||||
|
FileOutputStream outputStream = new FileOutputStream(new File("screenshot.png"));
|
||||||
|
any.executeShell(outputStream, "screencap", "-p");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user