/* * Copyright (C) 2015 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 #include namespace android { StubBinderWrapper::StubBinderWrapper() : calling_uid_(-1), calling_pid_(-1) {} StubBinderWrapper::~StubBinderWrapper() = default; void StubBinderWrapper::SetBinderForService(const std::string& service_name, const sp& binder) { services_to_return_[service_name] = binder; } sp StubBinderWrapper::GetRegisteredService( const std::string& service_name) const { const auto it = registered_services_.find(service_name); return it != registered_services_.end() ? it->second : sp(); } void StubBinderWrapper::NotifyAboutBinderDeath(const sp& binder) { const auto it = death_callbacks_.find(binder); if (it != death_callbacks_.end()) it->second.Run(); } sp StubBinderWrapper::GetService(const std::string& service_name) { const auto it = services_to_return_.find(service_name); return it != services_to_return_.end() ? it->second : sp(); } bool StubBinderWrapper::RegisterService(const std::string& service_name, const sp& binder) { registered_services_[service_name] = binder; return true; } sp StubBinderWrapper::CreateLocalBinder() { sp binder(new BBinder()); local_binders_.push_back(binder); return binder; } bool StubBinderWrapper::RegisterForDeathNotifications( const sp& binder, const ::base::Closure& callback) { death_callbacks_[binder] = callback; return true; } bool StubBinderWrapper::UnregisterForDeathNotifications( const sp& binder) { death_callbacks_.erase(binder); return true; } uid_t StubBinderWrapper::GetCallingUid() { return calling_uid_; } pid_t StubBinderWrapper::GetCallingPid() { return calling_pid_; } } // namespace android