< prev index next >
tests/system/src/test/java/test/com/sun/glass/ui/monocle/LensUInput.java
Print this page
rev 9491 : 8145203: Refactor systemTests for clear separation of tests
Reviewed-by: kcr
*** 21,32 ****
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
! package com.sun.glass.ui.monocle;
import javafx.animation.AnimationTimer;
import javafx.application.Platform;
import java.io.File;
import java.io.IOException;
--- 21,34 ----
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
! package test.com.sun.glass.ui.monocle;
+ import com.sun.glass.ui.monocle.LinuxInputShim;
+ import com.sun.glass.ui.monocle.LinuxSystemShim;
import javafx.animation.AnimationTimer;
import javafx.application.Platform;
import java.io.File;
import java.io.IOException;
*** 35,46 ****
import java.util.BitSet;
import java.util.concurrent.CountDownLatch;
public class LensUInput extends NativeUInput {
- private LinuxSystem system = LinuxSystem.getLinuxSystem();
-
private long fd = -1;
private long devFD = -1;
private String deviceName;
private short bustype, product, vendor, version;
private String devNode;
--- 37,46 ----
*** 57,75 ****
public void setup() {
if (isSetup) {
return;
}
try {
! system.loadLibrary();
! system.setenv("LENS_TEST_INPUT", INPUT_PATH, true);
File pipe = new File(INPUT_PATH);
if (pipe.exists()) {
pipe.delete();
}
pipe.deleteOnExit();
! if (system.mkfifo(pipe.getPath(), LinuxSystem.S_IRWXU) != 0) {
! throw new IOException(system.getErrorMessage());
}
isSetup = true;
} catch (IOException e) {
e.printStackTrace();
}
--- 57,75 ----
public void setup() {
if (isSetup) {
return;
}
try {
! LinuxSystemShim.loadLibrary();
! LinuxSystemShim.setenv("LENS_TEST_INPUT", INPUT_PATH, true);
File pipe = new File(INPUT_PATH);
if (pipe.exists()) {
pipe.delete();
}
pipe.deleteOnExit();
! if (LinuxSystemShim.mkfifo(pipe.getPath(), LinuxSystemShim.S_IRWXU) != 0) {
! throw new IOException(LinuxSystemShim.getErrorMessage());
}
isSetup = true;
} catch (IOException e) {
e.printStackTrace();
}
*** 107,119 ****
}
private void writeBytes(int length) throws IOException {
int offset = 0;
while (offset < length) {
! int bytesWritten = (int) system.write(fd, byteBuffer, offset, length);
if (bytesWritten < 0) {
! throw new IOException(system.getErrorMessage());
} else {
offset += bytesWritten;
}
}
}
--- 107,119 ----
}
private void writeBytes(int length) throws IOException {
int offset = 0;
while (offset < length) {
! int bytesWritten = (int) LinuxSystemShim.write(fd, byteBuffer, offset, length);
if (bytesWritten < 0) {
! throw new IOException(LinuxSystemShim.getErrorMessage());
} else {
offset += bytesWritten;
}
}
}
*** 148,159 ****
devNode = DEVNODE_PREFIX + (++devNodeSuffix);
File devNodeFile = new File(devNode);
if (devNodeFile.exists()) {
devNodeFile.delete();
}
! if (system.mkfifo(devNode, LinuxSystem.S_IRWXU) != 0) {
! throw new IOException(system.getErrorMessage());
}
writeInt(1); // attach device
writeShort(bustype);
writeShort(product);
writeShort(vendor);
--- 148,159 ----
devNode = DEVNODE_PREFIX + (++devNodeSuffix);
File devNodeFile = new File(devNode);
if (devNodeFile.exists()) {
devNodeFile.delete();
}
! if (LinuxSystemShim.mkfifo(devNode, LinuxSystemShim.S_IRWXU) != 0) {
! throw new IOException(LinuxSystemShim.getErrorMessage());
}
writeInt(1); // attach device
writeShort(bustype);
writeShort(product);
writeShort(vendor);
*** 161,198 ****
writeString(deviceName);
writeString(devNode);
writeString("Test Input Device");
BitSet evBits = capabilities.get("ev");
if (evBits != null) {
! for (int i = 0; i < LinuxInput.EV_MAX; i++) {
if (evBits.get(i)) {
writeInt(i);
}
}
}
writeInt(-1);
BitSet keyBits = capabilities.get("key");
if (keyBits != null) {
! for (int i = 0; i < LinuxInput.KEY_MAX; i++) {
if (keyBits.get(i)) {
writeInt(i);
}
}
}
writeInt(-1);
BitSet relBits = capabilities.get("rel");
if (relBits != null) {
! for (int i = 0; i < LinuxInput.REL_MAX; i++) {
if (relBits.get(i)) {
writeInt(i);
}
}
}
writeInt(-1);
BitSet absBits = capabilities.get("abs");
if (absBits != null) {
! for (int i = 0; i < LinuxInput.ABS_MAX; i++) {
if (absBits.get(i)) {
writeInt(i);
int[] caps = absCaps.get(i);
if (caps == null) {
caps = new int[6];
--- 161,198 ----
writeString(deviceName);
writeString(devNode);
writeString("Test Input Device");
BitSet evBits = capabilities.get("ev");
if (evBits != null) {
! for (int i = 0; i < LinuxInputShim.EV_MAX; i++) {
if (evBits.get(i)) {
writeInt(i);
}
}
}
writeInt(-1);
BitSet keyBits = capabilities.get("key");
if (keyBits != null) {
! for (int i = 0; i < LinuxInputShim.KEY_MAX; i++) {
if (keyBits.get(i)) {
writeInt(i);
}
}
}
writeInt(-1);
BitSet relBits = capabilities.get("rel");
if (relBits != null) {
! for (int i = 0; i < LinuxInputShim.REL_MAX; i++) {
if (relBits.get(i)) {
writeInt(i);
}
}
}
writeInt(-1);
BitSet absBits = capabilities.get("abs");
if (absBits != null) {
! for (int i = 0; i < LinuxInputShim.ABS_MAX; i++) {
if (absBits.get(i)) {
writeInt(i);
int[] caps = absCaps.get(i);
if (caps == null) {
caps = new int[6];
*** 213,280 ****
}
@Override
protected void destroyDevice() throws IOException {
if (devFD != -1l) {
! system.close(devFD);
devFD = -1;
}
new File(devNode).delete();
writeInt(2); // detach device
writeString(devNode);
}
private long openPipe(String path) throws IOException {
long timeOut = System.currentTimeMillis() + 10000l;
while (System.currentTimeMillis() < timeOut) {
! long pipeFD = system.open(path,
! LinuxSystem.O_WRONLY | LinuxSystem.O_NONBLOCK);
if (pipeFD < 0l) {
! if (system.errno() == LinuxSystem.ENXIO) { // no reader on pipe
try {
Thread.sleep(100l);
} catch (InterruptedException e) { }
} else {
break;
}
} else {
return pipeFD;
}
}
! throw new IOException(system.getErrorMessage());
}
@Override
protected void openConnection() throws IOException {
fd = openPipe(INPUT_PATH);
}
@Override
protected void closeConnection() {
if (fd >= 0l) {
! system.close(fd);
fd = -1l;
}
}
@Override
public void write(ByteBuffer buffer) throws IOException {
int offset = 0;
while (offset < buffer.limit()) {
! int bytesWritten = (int) system.write(devFD, buffer, offset, buffer.limit());
if (bytesWritten < 0) {
! if (system.errno() == LinuxSystem.EAGAIN) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
! throw new IOException(system.getErrorMessage());
}
} else {
offset += bytesWritten;
}
}
! system.ioctl(devFD, LinuxSystem.I_FLUSH, LinuxSystem.FLUSHRW);
}
}
--- 213,280 ----
}
@Override
protected void destroyDevice() throws IOException {
if (devFD != -1l) {
! LinuxSystemShim.close(devFD);
devFD = -1;
}
new File(devNode).delete();
writeInt(2); // detach device
writeString(devNode);
}
private long openPipe(String path) throws IOException {
long timeOut = System.currentTimeMillis() + 10000l;
while (System.currentTimeMillis() < timeOut) {
! long pipeFD = LinuxSystemShim.open(path,
! LinuxSystemShim.O_WRONLY | LinuxSystemShim.O_NONBLOCK);
if (pipeFD < 0l) {
! if (LinuxSystemShim.errno() == LinuxSystemShim.ENXIO) { // no reader on pipe
try {
Thread.sleep(100l);
} catch (InterruptedException e) { }
} else {
break;
}
} else {
return pipeFD;
}
}
! throw new IOException(LinuxSystemShim.getErrorMessage());
}
@Override
protected void openConnection() throws IOException {
fd = openPipe(INPUT_PATH);
}
@Override
protected void closeConnection() {
if (fd >= 0l) {
! LinuxSystemShim.close(fd);
fd = -1l;
}
}
@Override
public void write(ByteBuffer buffer) throws IOException {
int offset = 0;
while (offset < buffer.limit()) {
! int bytesWritten = (int) LinuxSystemShim.write(devFD, buffer, offset, buffer.limit());
if (bytesWritten < 0) {
! if (LinuxSystemShim.errno() == LinuxSystemShim.EAGAIN) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
! throw new IOException(LinuxSystemShim.getErrorMessage());
}
} else {
offset += bytesWritten;
}
}
! LinuxSystemShim.ioctl(devFD, LinuxSystemShim.I_FLUSH, LinuxSystemShim.FLUSHRW);
}
}
< prev index next >