mirror of
https://github.com/revanced/jadb.git
synced 2025-04-30 06:34:39 +02:00
commit
a38d528b3f
@ -186,7 +186,7 @@ public class JadbDevice {
|
|||||||
public void push(InputStream source, long lastModified, int mode, RemoteFile remote) throws IOException, JadbException {
|
public void push(InputStream source, long lastModified, int mode, RemoteFile remote) throws IOException, JadbException {
|
||||||
try (Transport transport = getTransport()) {
|
try (Transport transport = getTransport()) {
|
||||||
SyncTransport sync = transport.startSync();
|
SyncTransport sync = transport.startSync();
|
||||||
sync.send("SEND", remote.getPath() + "," + Integer.toString(mode));
|
sync.send("SEND", remote.getPath() + "," + mode);
|
||||||
|
|
||||||
sync.sendStream(source);
|
sync.sendStream(source);
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ public class RemoteFile {
|
|||||||
|
|
||||||
public String getName() { throw new UnsupportedOperationException(); }
|
public String getName() { throw new UnsupportedOperationException(); }
|
||||||
public int getSize() { throw new UnsupportedOperationException(); }
|
public int getSize() { throw new UnsupportedOperationException(); }
|
||||||
public long getLastModified() { throw new UnsupportedOperationException(); }
|
public int getLastModified() { throw new UnsupportedOperationException(); }
|
||||||
public boolean isDirectory() { throw new UnsupportedOperationException(); }
|
public boolean isDirectory() { throw new UnsupportedOperationException(); }
|
||||||
|
|
||||||
public String getPath() { return path;}
|
public String getPath() { return path;}
|
||||||
|
@ -8,9 +8,9 @@ class RemoteFileRecord extends RemoteFile {
|
|||||||
|
|
||||||
private final int mode;
|
private final int mode;
|
||||||
private final int size;
|
private final int size;
|
||||||
private final long lastModified;
|
private final int lastModified;
|
||||||
|
|
||||||
public RemoteFileRecord(String name, int mode, int size, long lastModified) {
|
public RemoteFileRecord(String name, int mode, int size, int lastModified) {
|
||||||
super(name);
|
super(name);
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
this.size = size;
|
this.size = size;
|
||||||
@ -23,7 +23,7 @@ class RemoteFileRecord extends RemoteFile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getLastModified() {
|
public int getLastModified() {
|
||||||
return lastModified;
|
return lastModified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ public class SyncTransport {
|
|||||||
output.writeBytes("DENT");
|
output.writeBytes("DENT");
|
||||||
output.writeInt(Integer.reverseBytes(0666 | (file.isDirectory() ? (1 << 14) : 0)));
|
output.writeInt(Integer.reverseBytes(0666 | (file.isDirectory() ? (1 << 14) : 0)));
|
||||||
output.writeInt(Integer.reverseBytes(file.getSize()));
|
output.writeInt(Integer.reverseBytes(file.getSize()));
|
||||||
output.writeInt(Integer.reverseBytes(Long.valueOf(file.getLastModified()).intValue()));
|
output.writeInt(Integer.reverseBytes(file.getLastModified()));
|
||||||
byte[] pathChars = file.getPath().getBytes(StandardCharsets.UTF_8);
|
byte[] pathChars = file.getPath().getBytes(StandardCharsets.UTF_8);
|
||||||
output.writeInt(Integer.reverseBytes(pathChars.length));
|
output.writeInt(Integer.reverseBytes(pathChars.length));
|
||||||
output.write(pathChars);
|
output.write(pathChars);
|
||||||
|
@ -178,13 +178,19 @@ class AdbProtocolHandler implements Runnable {
|
|||||||
try {
|
try {
|
||||||
String id = readString(input, 4);
|
String id = readString(input, 4);
|
||||||
int length = readInt(input);
|
int length = readInt(input);
|
||||||
if ("SEND".equals(id)) {
|
switch (id) {
|
||||||
|
case "SEND":
|
||||||
syncSend(output, input, length);
|
syncSend(output, input, length);
|
||||||
} else if ("RECV".equals(id)) {
|
break;
|
||||||
|
case "RECV":
|
||||||
syncRecv(output, input, length);
|
syncRecv(output, input, length);
|
||||||
} else if ("LIST".equals(id)) {
|
break;
|
||||||
|
case "LIST":
|
||||||
syncList(output, input, length);
|
syncList(output, input, length);
|
||||||
} else throw new JadbException("Unknown sync id " + id);
|
break;
|
||||||
|
default:
|
||||||
|
throw new JadbException("Unknown sync id " + id);
|
||||||
|
}
|
||||||
} catch (JadbException e) { // sync response with a different type of fail message
|
} catch (JadbException e) { // sync response with a different type of fail message
|
||||||
SyncTransport sync = getSyncTransport(output, input);
|
SyncTransport sync = getSyncTransport(output, input);
|
||||||
sync.send("FAIL", e.getMessage());
|
sync.send("FAIL", e.getMessage());
|
||||||
|
@ -269,12 +269,12 @@ public class FakeAdbServer implements AdbResponder {
|
|||||||
return remotePath.equals(this.remotePath);
|
return remotePath.equals(this.remotePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ListExpectation withFile(String path, int size, long modifyTime) {
|
public ListExpectation withFile(String path, int size, int modifyTime) {
|
||||||
files.add(new MockFileEntry(path, size, modifyTime, false));
|
files.add(new MockFileEntry(path, size, modifyTime, false));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ListExpectation withDir(String path, long modifyTime) {
|
public ListExpectation withDir(String path, int modifyTime) {
|
||||||
files.add(new MockFileEntry(path, -1, modifyTime, true));
|
files.add(new MockFileEntry(path, -1, modifyTime, true));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -286,10 +286,10 @@ public class FakeAdbServer implements AdbResponder {
|
|||||||
private static class MockFileEntry extends RemoteFile {
|
private static class MockFileEntry extends RemoteFile {
|
||||||
|
|
||||||
private final int size;
|
private final int size;
|
||||||
private final long modifyTime;
|
private final int modifyTime;
|
||||||
private final boolean dir;
|
private final boolean dir;
|
||||||
|
|
||||||
MockFileEntry(String path, int size, long modifyTime, boolean dir) {
|
MockFileEntry(String path, int size, int modifyTime, boolean dir) {
|
||||||
super(path);
|
super(path);
|
||||||
this.size = size;
|
this.size = size;
|
||||||
this.modifyTime = modifyTime;
|
this.modifyTime = modifyTime;
|
||||||
@ -300,7 +300,7 @@ public class FakeAdbServer implements AdbResponder {
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getLastModified() {
|
public int getLastModified() {
|
||||||
return modifyTime;
|
return modifyTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,21 +130,21 @@ public class MockedTestCases {
|
|||||||
public void testFileList() throws Exception {
|
public void testFileList() throws Exception {
|
||||||
server.add("serial-123");
|
server.add("serial-123");
|
||||||
server.expectList("serial-123", "/sdcard/Documents")
|
server.expectList("serial-123", "/sdcard/Documents")
|
||||||
.withDir("school", 123456789L)
|
.withDir("school", 123456789)
|
||||||
.withDir("finances", 7070707L)
|
.withDir("finances", 7070707)
|
||||||
.withDir("\u904A\u6232", 528491L)
|
.withDir("\u904A\u6232", 528491)
|
||||||
.withFile("user_manual.pdf", 3000, 648649L)
|
.withFile("user_manual.pdf", 3000, 648649)
|
||||||
.withFile("effective java vol. 7.epub", 0xCAFE, 0xBABEL)
|
.withFile("effective java vol. 7.epub", 0xCAFE, 0xBABE)
|
||||||
.withFile("\uB9AC\uADF8 \uC624\uBE0C \uB808\uC804\uB4DC", 240, 9001L);
|
.withFile("\uB9AC\uADF8 \uC624\uBE0C \uB808\uC804\uB4DC", 240, 9001);
|
||||||
JadbDevice device = connection.getDevices().get(0);
|
JadbDevice device = connection.getDevices().get(0);
|
||||||
List<RemoteFile> files = device.list("/sdcard/Documents");
|
List<RemoteFile> files = device.list("/sdcard/Documents");
|
||||||
Assert.assertEquals(6, files.size());
|
Assert.assertEquals(6, files.size());
|
||||||
assertHasDir("school", 123456789L, files);
|
assertHasDir("school", 123456789, files);
|
||||||
assertHasDir("finances", 7070707L, files);
|
assertHasDir("finances", 7070707, files);
|
||||||
assertHasDir("\u904A\u6232", 528491L, files);
|
assertHasDir("\u904A\u6232", 528491, files);
|
||||||
assertHasFile("user_manual.pdf", 3000, 648649L, files);
|
assertHasFile("user_manual.pdf", 3000, 648649, files);
|
||||||
assertHasFile("effective java vol. 7.epub", 0xCAFE, 0xBABEL, files);
|
assertHasFile("effective java vol. 7.epub", 0xCAFE, 0xBABE, files);
|
||||||
assertHasFile("\uB9AC\uADF8 \uC624\uBE0C \uB808\uC804\uB4DC", 240, 9001L, files);
|
assertHasFile("\uB9AC\uADF8 \uC624\uBE0C \uB808\uC804\uB4DC", 240, 9001, files);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static long parseDate(String date) throws ParseException {
|
private static long parseDate(String date) throws ParseException {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user