Merge changes from topic "sf-tests"
* changes:
surfaceflinger: enable LayerTransactionTest in presubmit
surfaceflinger: fix traverseLayersInDisplay
surfaceflinger: add more setFinalCrop tests
surfaceflinger: add more setCrop tests
surfaceflinger: add setOverrideScalingMode tests
surfaceflinger: add more setMatrix tests
surfaceflinger: add more setLayerStack tests
surfaceflinger: add more setColor tests
surfaceflinger: add more setAlpha tests
surfaceflinger: add setTransparentRegionHint tests
surfaceflinger: add more setFlags tests
surfaceflinger: add more setRelativeLayer tests
surfaceflinger: add more setLayer tests
surfaceflinger: add more setSize tests
surfaceflinger: add more setPosition tests
surfaceflinger: run clang-format on Transaction_test.cpp
diff --git a/cmds/cmd/cmd.cpp b/cmds/cmd/cmd.cpp
index 40dbbf5..6511b44 100644
--- a/cmds/cmd/cmd.cpp
+++ b/cmds/cmd/cmd.cpp
@@ -72,6 +72,9 @@
aerr << "Open attempt after active for: " << fullPath << endl;
return -EPERM;
}
+#if DEBUG
+ ALOGD("openFile: %s, full=%s", path8.string(), fullPath.string());
+#endif
int flags = 0;
bool checkRead = false;
bool checkWrite = false;
@@ -92,6 +95,9 @@
return -EINVAL;
}
int fd = open(fullPath.string(), flags, S_IRWXU|S_IRWXG);
+#if DEBUG
+ ALOGD("openFile: fd=%d", fd);
+#endif
if (fd < 0) {
return fd;
}
@@ -104,6 +110,9 @@
int accessGranted = selinux_check_access(seLinuxContext8.string(), context.get(),
"file", "write", NULL);
if (accessGranted != 0) {
+#if DEBUG
+ ALOGD("openFile: failed selinux write check!");
+#endif
close(fd);
aerr << "System server has no access to write file context " << context.get()
<< " (from path " << fullPath.string() << ", context "
@@ -115,6 +124,9 @@
int accessGranted = selinux_check_access(seLinuxContext8.string(), context.get(),
"file", "read", NULL);
if (accessGranted != 0) {
+#if DEBUG
+ ALOGD("openFile: failed selinux read check!");
+#endif
close(fd);
aerr << "System server has no access to read file context " << context.get()
<< " (from path " << fullPath.string() << ", context "
@@ -164,6 +176,9 @@
proc->setThreadPoolMaxThreadCount(0);
proc->startThreadPool();
+#if DEBUG
+ ALOGD("cmd: starting");
+#endif
sp<IServiceManager> sm = defaultServiceManager();
fflush(stdout);
if (sm == NULL) {
diff --git a/libs/input/tests/InputPublisherAndConsumer_test.cpp b/libs/input/tests/InputPublisherAndConsumer_test.cpp
index 34c52d0..f86f876 100644
--- a/libs/input/tests/InputPublisherAndConsumer_test.cpp
+++ b/libs/input/tests/InputPublisherAndConsumer_test.cpp
@@ -254,11 +254,15 @@
ASSERT_NO_FATAL_FAILURE(PublishAndConsumeMotionEvent());
}
-TEST_F(InputPublisherAndConsumerTest, PublishMotionEvent_WhenPointerCountLessThan1_ReturnsError) {
+TEST_F(InputPublisherAndConsumerTest, PublishMotionEvent_WhenSequenceNumberIsZero_ReturnsError) {
status_t status;
- const size_t pointerCount = 0;
+ const size_t pointerCount = 1;
PointerProperties pointerProperties[pointerCount];
PointerCoords pointerCoords[pointerCount];
+ for (size_t i = 0; i < pointerCount; i++) {
+ pointerProperties[i].clear();
+ pointerCoords[i].clear();
+ }
status = mPublisher->publishMotionEvent(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
pointerCount, pointerProperties, pointerCoords);
@@ -266,7 +270,20 @@
<< "publisher publishMotionEvent should return BAD_VALUE";
}
-TEST_F(InputPublisherAndConsumerTest, PublishMotionEvent_WhenPointerCountGreaterThanMax_ReturnsError) {
+TEST_F(InputPublisherAndConsumerTest, PublishMotionEvent_WhenPointerCountLessThan1_ReturnsError) {
+ status_t status;
+ const size_t pointerCount = 0;
+ PointerProperties pointerProperties[pointerCount];
+ PointerCoords pointerCoords[pointerCount];
+
+ status = mPublisher->publishMotionEvent(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ pointerCount, pointerProperties, pointerCoords);
+ ASSERT_EQ(BAD_VALUE, status)
+ << "publisher publishMotionEvent should return BAD_VALUE";
+}
+
+TEST_F(InputPublisherAndConsumerTest,
+ PublishMotionEvent_WhenPointerCountGreaterThanMax_ReturnsError) {
status_t status;
const size_t pointerCount = MAX_POINTERS + 1;
PointerProperties pointerProperties[pointerCount];
@@ -276,7 +293,7 @@
pointerCoords[i].clear();
}
- status = mPublisher->publishMotionEvent(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ status = mPublisher->publishMotionEvent(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
pointerCount, pointerProperties, pointerCoords);
ASSERT_EQ(BAD_VALUE, status)
<< "publisher publishMotionEvent should return BAD_VALUE";
diff --git a/libs/vr/libvrsensor/Android.bp b/libs/vr/libvrsensor/Android.bp
index ec36088..fe54b4b 100644
--- a/libs/vr/libvrsensor/Android.bp
+++ b/libs/vr/libvrsensor/Android.bp
@@ -14,7 +14,6 @@
sourceFiles = [
"pose_client.cpp",
- "sensor_client.cpp",
"latency_model.cpp",
]
diff --git a/libs/vr/libvrsensor/include/private/dvr/sensor-ipc.h b/libs/vr/libvrsensor/include/private/dvr/sensor-ipc.h
deleted file mode 100644
index b2ebd95..0000000
--- a/libs/vr/libvrsensor/include/private/dvr/sensor-ipc.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef ANDROID_DVR_SENSOR_IPC_H_
-#define ANDROID_DVR_SENSOR_IPC_H_
-
-#define DVR_SENSOR_SERVICE_BASE "system/vr/sensors"
-
-#define DVR_SENSOR_SERVICE_CLIENT (DVR_SENSOR_SERVICE_BASE "/client")
-
-/*
- * Endpoint ops
- */
-enum {
- DVR_SENSOR_START = 0,
- DVR_SENSOR_STOP,
- DVR_SENSOR_POLL,
-};
-
-#endif // ANDROID_DVR_SENSOR_IPC_H_
diff --git a/libs/vr/libvrsensor/include/private/dvr/sensor_client.h b/libs/vr/libvrsensor/include/private/dvr/sensor_client.h
deleted file mode 100644
index 15a9b8f..0000000
--- a/libs/vr/libvrsensor/include/private/dvr/sensor_client.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef ANDROID_DVR_SENSOR_CLIENT_H_
-#define ANDROID_DVR_SENSOR_CLIENT_H_
-
-#include <hardware/sensors.h>
-#include <pdx/client.h>
-#include <poll.h>
-
-namespace android {
-namespace dvr {
-
-// SensorClient is a remote interface to the sensor service in sensord.
-class SensorClient : public pdx::ClientBase<SensorClient> {
- public:
- ~SensorClient();
-
- int StartSensor();
- int StopSensor();
- int Poll(sensors_event_t* events, int max_count);
-
- private:
- friend BASE;
-
- // Set up a channel associated with the sensor of the indicated type.
- // NOTE(segal): If our hardware ends up with multiple sensors of the same
- // type, we'll have to change this.
- explicit SensorClient(int sensor_type);
-
- int sensor_type_;
-
- SensorClient(const SensorClient&);
- SensorClient& operator=(const SensorClient&);
-};
-
-} // namespace dvr
-} // namespace android
-
-#endif // ANDROID_DVR_SENSOR_CLIENT_H_
diff --git a/libs/vr/libvrsensor/sensor_client.cpp b/libs/vr/libvrsensor/sensor_client.cpp
deleted file mode 100644
index 04e88cc..0000000
--- a/libs/vr/libvrsensor/sensor_client.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-#define LOG_TAG "SensorClient"
-#include <private/dvr/sensor_client.h>
-
-#include <log/log.h>
-#include <poll.h>
-
-#include <pdx/default_transport/client_channel_factory.h>
-#include <private/dvr/sensor-ipc.h>
-
-using android::pdx::Transaction;
-
-namespace android {
-namespace dvr {
-
-SensorClient::SensorClient(int sensor_type)
- : BASE(pdx::default_transport::ClientChannelFactory::Create(
- DVR_SENSOR_SERVICE_CLIENT)),
- sensor_type_(sensor_type) {}
-
-SensorClient::~SensorClient() {}
-
-int SensorClient::StartSensor() {
- Transaction trans{*this};
- auto status = trans.Send<int>(DVR_SENSOR_START, &sensor_type_,
- sizeof(sensor_type_), nullptr, 0);
- ALOGE_IF(!status, "startSensor() failed because: %s\n",
- status.GetErrorMessage().c_str());
- return ReturnStatusOrError(status);
-}
-
-int SensorClient::StopSensor() {
- Transaction trans{*this};
- auto status = trans.Send<int>(DVR_SENSOR_STOP);
- ALOGE_IF(!status, "stopSensor() failed because: %s\n",
- status.GetErrorMessage().c_str());
- return ReturnStatusOrError(status);
-}
-
-int SensorClient::Poll(sensors_event_t* events, int max_events) {
- int num_events = 0;
- struct iovec rvec[] = {
- {.iov_base = &num_events, .iov_len = sizeof(int)},
- {.iov_base = events, .iov_len = max_events * sizeof(sensors_event_t)},
- };
- Transaction trans{*this};
- auto status = trans.SendVector<int>(DVR_SENSOR_POLL, nullptr, rvec);
- ALOGE_IF(!status, "Sensor poll() failed because: %s\n",
- status.GetErrorMessage().c_str());
- return !status ? -status.error() : num_events;
-}
-
-} // namespace dvr
-} // namespace android
-
-// Entrypoints to simplify using the library when programmatically dynamicly
-// loading it.
-// Allows us to call this library without linking it, as, for instance,
-// when compiling GVR in Google3.
-// NOTE(segal): It's kind of a hack.
-
-extern "C" uint64_t dvrStartSensor(int type) {
- android::dvr::SensorClient* service =
- android::dvr::SensorClient::Create(type).release();
- service->StartSensor();
- return (uint64_t)service;
-}
-
-extern "C" void dvrStopSensor(uint64_t service) {
- android::dvr::SensorClient* iss =
- reinterpret_cast<android::dvr::SensorClient*>(service);
- iss->StopSensor();
- delete iss;
-}
-
-extern "C" int dvrPollSensor(uint64_t service, int max_count,
- sensors_event_t* events) {
- return reinterpret_cast<android::dvr::SensorClient*>(service)->Poll(
- events, max_count);
-}