Loading include/input/InputDevice.h +7 −0 Original line number Diff line number Diff line Loading @@ -165,6 +165,13 @@ extern std::string getInputDeviceConfigurationFilePathByDeviceIdentifier( extern std::string getInputDeviceConfigurationFilePathByName( const std::string& name, InputDeviceConfigurationFileType type); enum ReservedInputDeviceId : int32_t { // Device id of a special "virtual" keyboard that is always present. VIRTUAL_KEYBOARD_ID = -1, // Device id of the "built-in" keyboard if there is one. BUILT_IN_KEYBOARD_ID = 0, }; } // namespace android #endif // _LIBINPUT_INPUT_DEVICE_H libs/binder/include/binder/IInterface.h +2 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ public: virtual const String16& getInterfaceDescriptor() const; protected: typedef INTERFACE BaseInterface; virtual IBinder* onAsBinder(); }; Loading @@ -66,6 +67,7 @@ public: explicit BpInterface(const sp<IBinder>& remote); protected: typedef INTERFACE BaseInterface; virtual IBinder* onAsBinder(); }; Loading libs/binder/include/binder/SafeInterface.h +6 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,12 @@ public: return callParcel("writeParcelableVector", [&]() { return parcel->writeParcelableVector(v); }); } status_t read(const Parcel& parcel, float* f) const { return callParcel("readFloat", [&]() { return parcel.readFloat(f); }); } status_t write(Parcel* parcel, float f) const { return callParcel("writeFloat", [&]() { return parcel->writeFloat(f); }); } // Templates to handle integral types. We use a struct template to require that the called // function exactly matches the signedness and size of the argument (e.g., the argument isn't Loading libs/binder/tests/binderSafeInterfaceTest.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -229,6 +229,7 @@ public: IncrementUint32, IncrementInt64, IncrementUint64, IncrementFloat, IncrementTwo, Last, }; Loading Loading @@ -259,6 +260,7 @@ public: virtual status_t increment(uint32_t a, uint32_t* aPlusOne) const = 0; virtual status_t increment(int64_t a, int64_t* aPlusOne) const = 0; virtual status_t increment(uint64_t a, uint64_t* aPlusOne) const = 0; virtual status_t increment(float a, float* aPlusOne) const = 0; // This tests that input/output parameter interleaving works correctly virtual status_t increment(int32_t a, int32_t* aPlusOne, int32_t b, Loading Loading @@ -353,6 +355,11 @@ public: using Signature = status_t (ISafeInterfaceTest::*)(uint64_t, uint64_t*) const; return callRemote<Signature>(Tag::IncrementUint64, a, aPlusOne); } status_t increment(float a, float* aPlusOne) const override { ALOG(LOG_INFO, getLogTag(), "%s", __PRETTY_FUNCTION__); using Signature = status_t (ISafeInterfaceTest::*)(float, float*) const; return callRemote<Signature>(Tag::IncrementFloat, a, aPlusOne); } status_t increment(int32_t a, int32_t* aPlusOne, int32_t b, int32_t* bPlusOne) const override { ALOG(LOG_INFO, getLogTag(), "%s", __PRETTY_FUNCTION__); using Signature = Loading Loading @@ -474,6 +481,11 @@ public: *aPlusOne = a + 1; return NO_ERROR; } status_t increment(float a, float* aPlusOne) const override { ALOG(LOG_INFO, getLogTag(), "%s", __PRETTY_FUNCTION__); *aPlusOne = a + 1.0f; return NO_ERROR; } status_t increment(int32_t a, int32_t* aPlusOne, int32_t b, int32_t* bPlusOne) const override { ALOG(LOG_INFO, getLogTag(), "%s", __PRETTY_FUNCTION__); *aPlusOne = a + 1; Loading Loading @@ -555,6 +567,10 @@ public: using Signature = status_t (ISafeInterfaceTest::*)(uint64_t, uint64_t*) const; return callLocal<Signature>(data, reply, &ISafeInterfaceTest::increment); } case ISafeInterfaceTest::Tag::IncrementFloat: { using Signature = status_t (ISafeInterfaceTest::*)(float, float*) const; return callLocal<Signature>(data, reply, &ISafeInterfaceTest::increment); } case ISafeInterfaceTest::Tag::IncrementTwo: { using Signature = status_t (ISafeInterfaceTest::*)(int32_t, int32_t*, int32_t, int32_t*) const; Loading Loading @@ -804,6 +820,14 @@ TEST_F(SafeInterfaceTest, TestIncrementUint64) { ASSERT_EQ(a + 1, aPlusOne); } TEST_F(SafeInterfaceTest, TestIncrementFloat) { const float a = 1.0f; float aPlusOne = 0.0f; status_t result = mSafeInterfaceTest->increment(a, &aPlusOne); ASSERT_EQ(NO_ERROR, result); ASSERT_EQ(a + 1.0f, aPlusOne); } TEST_F(SafeInterfaceTest, TestIncrementTwo) { const int32_t a = 1; int32_t aPlusOne = 0; Loading libs/graphicsenv/GraphicsEnv.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,20 @@ void GraphicsEnv::setDriverPath(const std::string path) { mDriverPath = path; } void GraphicsEnv::setGpuStats(const std::string driverPackageName, const std::string driverVersionName, const uint64_t driverVersionCode, const std::string appPackageName) { ALOGV("setGpuStats: drvPkgName[%s], drvVerName[%s], drvVerCode[%lld], appPkgName[%s]", driverPackageName.c_str(), driverVersionName.c_str(), (long long)driverVersionCode, appPackageName.c_str()); mGpuStats = { .driverPackageName = driverPackageName, .driverVersionName = driverVersionName, .driverVersionCode = driverVersionCode, .appPackageName = appPackageName, }; } void* GraphicsEnv::loadLibrary(std::string name) { const android_dlextinfo dlextinfo = { .flags = ANDROID_DLEXT_USE_NAMESPACE, Loading Loading
include/input/InputDevice.h +7 −0 Original line number Diff line number Diff line Loading @@ -165,6 +165,13 @@ extern std::string getInputDeviceConfigurationFilePathByDeviceIdentifier( extern std::string getInputDeviceConfigurationFilePathByName( const std::string& name, InputDeviceConfigurationFileType type); enum ReservedInputDeviceId : int32_t { // Device id of a special "virtual" keyboard that is always present. VIRTUAL_KEYBOARD_ID = -1, // Device id of the "built-in" keyboard if there is one. BUILT_IN_KEYBOARD_ID = 0, }; } // namespace android #endif // _LIBINPUT_INPUT_DEVICE_H
libs/binder/include/binder/IInterface.h +2 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ public: virtual const String16& getInterfaceDescriptor() const; protected: typedef INTERFACE BaseInterface; virtual IBinder* onAsBinder(); }; Loading @@ -66,6 +67,7 @@ public: explicit BpInterface(const sp<IBinder>& remote); protected: typedef INTERFACE BaseInterface; virtual IBinder* onAsBinder(); }; Loading
libs/binder/include/binder/SafeInterface.h +6 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,12 @@ public: return callParcel("writeParcelableVector", [&]() { return parcel->writeParcelableVector(v); }); } status_t read(const Parcel& parcel, float* f) const { return callParcel("readFloat", [&]() { return parcel.readFloat(f); }); } status_t write(Parcel* parcel, float f) const { return callParcel("writeFloat", [&]() { return parcel->writeFloat(f); }); } // Templates to handle integral types. We use a struct template to require that the called // function exactly matches the signedness and size of the argument (e.g., the argument isn't Loading
libs/binder/tests/binderSafeInterfaceTest.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -229,6 +229,7 @@ public: IncrementUint32, IncrementInt64, IncrementUint64, IncrementFloat, IncrementTwo, Last, }; Loading Loading @@ -259,6 +260,7 @@ public: virtual status_t increment(uint32_t a, uint32_t* aPlusOne) const = 0; virtual status_t increment(int64_t a, int64_t* aPlusOne) const = 0; virtual status_t increment(uint64_t a, uint64_t* aPlusOne) const = 0; virtual status_t increment(float a, float* aPlusOne) const = 0; // This tests that input/output parameter interleaving works correctly virtual status_t increment(int32_t a, int32_t* aPlusOne, int32_t b, Loading Loading @@ -353,6 +355,11 @@ public: using Signature = status_t (ISafeInterfaceTest::*)(uint64_t, uint64_t*) const; return callRemote<Signature>(Tag::IncrementUint64, a, aPlusOne); } status_t increment(float a, float* aPlusOne) const override { ALOG(LOG_INFO, getLogTag(), "%s", __PRETTY_FUNCTION__); using Signature = status_t (ISafeInterfaceTest::*)(float, float*) const; return callRemote<Signature>(Tag::IncrementFloat, a, aPlusOne); } status_t increment(int32_t a, int32_t* aPlusOne, int32_t b, int32_t* bPlusOne) const override { ALOG(LOG_INFO, getLogTag(), "%s", __PRETTY_FUNCTION__); using Signature = Loading Loading @@ -474,6 +481,11 @@ public: *aPlusOne = a + 1; return NO_ERROR; } status_t increment(float a, float* aPlusOne) const override { ALOG(LOG_INFO, getLogTag(), "%s", __PRETTY_FUNCTION__); *aPlusOne = a + 1.0f; return NO_ERROR; } status_t increment(int32_t a, int32_t* aPlusOne, int32_t b, int32_t* bPlusOne) const override { ALOG(LOG_INFO, getLogTag(), "%s", __PRETTY_FUNCTION__); *aPlusOne = a + 1; Loading Loading @@ -555,6 +567,10 @@ public: using Signature = status_t (ISafeInterfaceTest::*)(uint64_t, uint64_t*) const; return callLocal<Signature>(data, reply, &ISafeInterfaceTest::increment); } case ISafeInterfaceTest::Tag::IncrementFloat: { using Signature = status_t (ISafeInterfaceTest::*)(float, float*) const; return callLocal<Signature>(data, reply, &ISafeInterfaceTest::increment); } case ISafeInterfaceTest::Tag::IncrementTwo: { using Signature = status_t (ISafeInterfaceTest::*)(int32_t, int32_t*, int32_t, int32_t*) const; Loading Loading @@ -804,6 +820,14 @@ TEST_F(SafeInterfaceTest, TestIncrementUint64) { ASSERT_EQ(a + 1, aPlusOne); } TEST_F(SafeInterfaceTest, TestIncrementFloat) { const float a = 1.0f; float aPlusOne = 0.0f; status_t result = mSafeInterfaceTest->increment(a, &aPlusOne); ASSERT_EQ(NO_ERROR, result); ASSERT_EQ(a + 1.0f, aPlusOne); } TEST_F(SafeInterfaceTest, TestIncrementTwo) { const int32_t a = 1; int32_t aPlusOne = 0; Loading
libs/graphicsenv/GraphicsEnv.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,20 @@ void GraphicsEnv::setDriverPath(const std::string path) { mDriverPath = path; } void GraphicsEnv::setGpuStats(const std::string driverPackageName, const std::string driverVersionName, const uint64_t driverVersionCode, const std::string appPackageName) { ALOGV("setGpuStats: drvPkgName[%s], drvVerName[%s], drvVerCode[%lld], appPkgName[%s]", driverPackageName.c_str(), driverVersionName.c_str(), (long long)driverVersionCode, appPackageName.c_str()); mGpuStats = { .driverPackageName = driverPackageName, .driverVersionName = driverVersionName, .driverVersionCode = driverVersionCode, .appPackageName = appPackageName, }; } void* GraphicsEnv::loadLibrary(std::string name) { const android_dlextinfo dlextinfo = { .flags = ANDROID_DLEXT_USE_NAMESPACE, Loading