diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-07-13 01:45:39 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-07-13 01:45:39 +0000 |
commit | 2fe7eddf185ecb63223eeadc58804f9bf6cbd426 (patch) | |
tree | decb5aebbbc156c6c0463120dc139560238ab03f | |
parent | 583dd3a83a7a969dd765b41c494468145bd1b4d9 (diff) | |
parent | ac62491449997e8144142a2059933460d669c12d (diff) | |
download | native-android-platform-13.0.0_r2.tar.gz |
Merge cherrypicks of [19135348] into tm-release.android-vts-13.0_r1android-platform-13.0.0_r2android-platform-13.0.0_r1android-cts-13.0_r1android-13.0.0_r8android-13.0.0_r7android-13.0.0_r6android-13.0.0_r5android-13.0.0_r4android-13.0.0_r31android-13.0.0_r3android-13.0.0_r2android-13.0.0_r12android13-s3-releaseandroid13-s2-releaseandroid13-s1-releaseandroid13-release
Change-Id: I01d9207b01534712c350b7338c892dc2d6a42508
-rw-r--r-- | services/powermanager/WorkSource.cpp | 12 | ||||
-rw-r--r-- | services/powermanager/tests/Android.bp | 1 | ||||
-rw-r--r-- | services/powermanager/tests/WorkSourceTest.cpp | 46 |
3 files changed, 57 insertions, 2 deletions
diff --git a/services/powermanager/WorkSource.cpp b/services/powermanager/WorkSource.cpp index 1006a0666f..64a5499084 100644 --- a/services/powermanager/WorkSource.cpp +++ b/services/powermanager/WorkSource.cpp @@ -28,9 +28,16 @@ status_t WorkSource::readFromParcel(const android::Parcel *parcel) { return BAD_VALUE; } int32_t num; + int32_t workChainCount; status_t ret = parcel->readInt32(&num) ?: parcel->readInt32Vector(&mUids) - ?: parcel->readString16Vector(&mNames); + ?: parcel->readString16Vector(&mNames) + ?: parcel->readInt32(&workChainCount); + + if (ret == OK && workChainCount > 0) { + // We don't yet support WorkChains in native WorkSources. + return BAD_VALUE; + } return ret; } @@ -43,7 +50,8 @@ status_t WorkSource::writeToParcel(android::Parcel *parcel) const { return parcel->writeInt32(mUids.size()) ?: parcel->writeInt32Vector(mUids) - ?: parcel->writeString16Vector(mNames); + ?: parcel->writeString16Vector(mNames) + ?: parcel->writeInt32(-1); } } // namespace android::os diff --git a/services/powermanager/tests/Android.bp b/services/powermanager/tests/Android.bp index 2d1558a33f..962784cbae 100644 --- a/services/powermanager/tests/Android.bp +++ b/services/powermanager/tests/Android.bp @@ -31,6 +31,7 @@ cc_test { "PowerHalWrapperAidlTest.cpp", "PowerHalWrapperHidlV1_0Test.cpp", "PowerHalWrapperHidlV1_1Test.cpp", + "WorkSourceTest.cpp", ], cflags: [ "-Wall", diff --git a/services/powermanager/tests/WorkSourceTest.cpp b/services/powermanager/tests/WorkSourceTest.cpp new file mode 100644 index 0000000000..bb9164ac57 --- /dev/null +++ b/services/powermanager/tests/WorkSourceTest.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <optional> +#define LOG_TAG "PowerHalLoaderTest" + +#include <android-base/logging.h> +#include <android/WorkSource.h> +#include <binder/Parcel.h> +#include <gtest/gtest.h> + +#include <future> + +using namespace android; +using namespace testing; + +TEST(WorkSourceTest, Parcel) { + std::vector<int32_t> uids = {1, 2}; + using Names = std::vector<std::optional<String16>>; + std::optional<Names> names = std::make_optional<Names>({std::make_optional(String16("name"))}); + os::WorkSource ws{uids, names}; + + Parcel p; + ws.writeToParcel(&p); + p.setDataPosition(0); + + os::WorkSource otherWs; + otherWs.readFromParcel(&p); + + EXPECT_EQ(ws, otherWs); + EXPECT_EQ(uids, otherWs.getUids()); + EXPECT_EQ(names, otherWs.getNames()); +} |