| /* |
| * 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 <base/format_macros.h> |
| #include <base/logging.h> |
| #include <base/strings/stringprintf.h> |
| #include <binderwrapper/binder_wrapper.h> |
| #include <nativepower/power_manager_stub.h> |
| #include <utils/String8.h> |
| |
| #include "wake_lock_manager_stub.h" |
| |
| namespace android { |
| |
| PowerManagerStub::SuspendRequest::SuspendRequest(int64_t event_time_ms, |
| int reason, |
| int flags) |
| : event_time_ms(event_time_ms), |
| reason(reason), |
| flags(flags) {} |
| |
| // static |
| std::string PowerManagerStub::ConstructWakeLockString( |
| const std::string& tag, |
| const std::string& package, |
| uid_t uid) { |
| return WakeLockManagerStub::ConstructRequestString(tag, package, uid); |
| } |
| |
| // static |
| std::string PowerManagerStub::ConstructSuspendRequestString( |
| int64_t event_time_ms, |
| int reason, |
| int flags) { |
| return base::StringPrintf("%" PRId64 ",%d,%d", event_time_ms, reason, flags); |
| } |
| |
| PowerManagerStub::PowerManagerStub() |
| : wake_lock_manager_(new WakeLockManagerStub()) {} |
| |
| PowerManagerStub::~PowerManagerStub() = default; |
| |
| int PowerManagerStub::GetNumWakeLocks() const { |
| return wake_lock_manager_->num_requests(); |
| } |
| |
| std::string PowerManagerStub::GetWakeLockString( |
| const sp<IBinder>& binder) const { |
| return wake_lock_manager_->GetRequestString(binder); |
| } |
| |
| std::string PowerManagerStub::GetSuspendRequestString(size_t index) const { |
| if (index >= suspend_requests_.size()) |
| return std::string(); |
| |
| const SuspendRequest& request = suspend_requests_[index]; |
| return ConstructSuspendRequestString(request.event_time_ms, request.reason, |
| request.flags); |
| } |
| |
| status_t PowerManagerStub::acquireWakeLock(int flags, |
| const sp<IBinder>& lock, |
| const String16& tag, |
| const String16& packageName, |
| bool isOneWay) { |
| CHECK(wake_lock_manager_->AddRequest(lock, String8(tag).string(), |
| String8(packageName).string(), |
| BinderWrapper::Get()->GetCallingUid())); |
| return OK; |
| } |
| |
| status_t PowerManagerStub::acquireWakeLockWithUid(int flags, |
| const sp<IBinder>& lock, |
| const String16& tag, |
| const String16& packageName, |
| int uid, |
| bool isOneWay) { |
| CHECK(wake_lock_manager_->AddRequest(lock, String8(tag).string(), |
| String8(packageName).string(), |
| static_cast<uid_t>(uid))); |
| return OK; |
| } |
| |
| status_t PowerManagerStub::releaseWakeLock(const sp<IBinder>& lock, |
| int flags, |
| bool isOneWay) { |
| CHECK(wake_lock_manager_->RemoveRequest(lock)); |
| return OK; |
| } |
| |
| status_t PowerManagerStub::updateWakeLockUids(const sp<IBinder>& lock, |
| int len, |
| const int* uids, |
| bool isOneWay) { |
| return OK; |
| } |
| |
| status_t PowerManagerStub::powerHint(int hintId, int data) { |
| return OK; |
| } |
| |
| status_t PowerManagerStub::goToSleep(int64_t event_time_ms, |
| int reason, |
| int flags) { |
| suspend_requests_.emplace_back(event_time_ms, reason, flags); |
| return OK; |
| } |
| |
| status_t PowerManagerStub::reboot(bool confirm, |
| const String16& reason, |
| bool wait) { |
| reboot_reasons_.push_back(String8(reason).string()); |
| return OK; |
| } |
| |
| status_t PowerManagerStub::shutdown(bool confirm, |
| const String16& reason, |
| bool wait) { |
| shutdown_reasons_.push_back(String8(reason).string()); |
| return OK; |
| } |
| |
| status_t PowerManagerStub::crash(const String16& message) { |
| return OK; |
| } |
| |
| } // namespace android |