Empty merge of Android 24Q2 Release (ab/11526283) to aosp-main-future
Bug: 337098550
Merged-In: I350d5e9ebedbf30f1bfa812572d0f25fab324fef
Change-Id: I208ae746250cedcb873066cb99bd421f739ef353
diff --git a/Android.bp b/Android.bp
index be2c463..c7150c6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_android_hardware_backed_security",
default_applicable_licenses: ["system_hwservicemanager_license"],
}
@@ -94,9 +95,6 @@
"libhwservicemanager_shared_libs",
"libtokenmanager_shared_libs",
],
- vintf_fragments: [
- "hwservicemanager.xml",
- ],
init_rc: [
"hwservicemanager.rc",
],
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 052dadf..7a20e90 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -5,6 +5,14 @@
},
{
"name": "hidl_lazy_test"
+ },
+ {
+ "name": "CtsOsTestCases",
+ "options": [
+ {
+ "include-filter": "android.os.cts.HwBinderTest"
+ }
+ ]
}
],
"hwasan-presubmit": [
diff --git a/hwservicemanager.xml b/hwservicemanager.xml
index 65220d8..cd60550 100644
--- a/hwservicemanager.xml
+++ b/hwservicemanager.xml
@@ -1,5 +1,5 @@
<manifest version="1.0" type="framework">
- <hal>
+ <hal max-level="8">
<name>android.hidl.manager</name>
<transport>hwbinder</transport>
<version>1.2</version>
@@ -8,7 +8,7 @@
<instance>default</instance>
</interface>
</hal>
- <hal>
+ <hal max-level="8">
<name>android.hidl.token</name>
<transport>hwbinder</transport>
<version>1.0</version>
diff --git a/hwservicemanager_no_max.xml b/hwservicemanager_no_max.xml
new file mode 100644
index 0000000..65220d8
--- /dev/null
+++ b/hwservicemanager_no_max.xml
@@ -0,0 +1,20 @@
+<manifest version="1.0" type="framework">
+ <hal>
+ <name>android.hidl.manager</name>
+ <transport>hwbinder</transport>
+ <version>1.2</version>
+ <interface>
+ <name>IServiceManager</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal>
+ <name>android.hidl.token</name>
+ <transport>hwbinder</transport>
+ <version>1.0</version>
+ <interface>
+ <name>ITokenManager</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+</manifest>
diff --git a/service.cpp b/service.cpp
index 3766bc5..ec8cef1 100644
--- a/service.cpp
+++ b/service.cpp
@@ -36,6 +36,7 @@
#include "ServiceManager.h"
#include "TokenManager.h"
+#include "Vintf.h"
// libutils:
using android::sp;
@@ -146,7 +147,8 @@
// TODO(b/36424585): make fatal
ProcessState::self()->setCallRestriction(ProcessState::CallRestriction::ERROR_IF_NOT_ONEWAY);
- if (!android::hardware::isHidlSupported()) {
+ auto transport = android::hardware::getTransport(ServiceManager::descriptor, serviceName);
+ if (transport == android::vintf::Transport::EMPTY) {
ALOGI("HIDL is not supported on this device so hwservicemanager is not needed");
int rc = property_set("hwservicemanager.disabled", "true");
if (rc) {
@@ -166,9 +168,17 @@
ALOGE("Failed to register hwservicemanager with itself.");
}
- sp<TokenManager> tokenManager = new TokenManager();
- if (!manager->add(serviceName, tokenManager).withDefault(false)) {
- ALOGE("Failed to register ITokenManager with hwservicemanager.");
+ // Check to make sure we should be registering tokenManager first. Only if
+ // it's declared in the manifest.
+ sp<TokenManager> tokenManager;
+ if (android::vintf::Transport::EMPTY !=
+ android::hardware::getTransport(TokenManager::descriptor, serviceName)) {
+ tokenManager = new TokenManager();
+ if (!manager->add(serviceName, tokenManager).withDefault(false)) {
+ ALOGE("Failed to register ITokenManager with hwservicemanager.");
+ }
+ } else {
+ ALOGW("Not registering android.hidl.token service because it is no longer supported");
}
// Tell IPCThreadState we're the service manager