// // Copyright (C) 2019 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 #include #include "../parser.h" #include "../service.h" #include "../service_list.h" #include "../service_parser.h" #include "include/init-test-utils/service_utils.h" namespace android { namespace init { android::base::Result GetOnDeviceServiceInterfacesMap() { ServiceList& service_list = ServiceList::GetInstance(); Parser parser; parser.AddSectionParser("service", std::make_unique(&service_list, nullptr, std::nullopt)); for (const auto& location : { "/init.rc", "/system/etc/init", "/system_ext/etc/init", "/product/etc/init", "/odm/etc/init", "/vendor/etc/init", }) { parser.ParseConfig(location); } ServiceInterfacesMap result; for (const auto& service : service_list) { // Create an entry for all services, including services that may not // have any declared interfaces. result[service->name()] = service->interfaces(); } return result; } } // namespace init } // namespace android