| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 1 | /* | 
|  | 2 | * Copyright (C) 2017 The Android Open Source Project | 
|  | 3 | * | 
|  | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | 5 | * you may not use this file except in compliance with the License. | 
|  | 6 | * You may obtain a copy of the License at | 
|  | 7 | * | 
|  | 8 | *      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | 9 | * | 
|  | 10 | * Unless required by applicable law or agreed to in writing, software | 
|  | 11 | * distributed under the License is distributed on an "AS IS" BASIS, | 
|  | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | 13 | * See the License for the specific language governing permissions and | 
|  | 14 | * limitations under the License. | 
|  | 15 | */ | 
|  | 16 |  | 
| Steven Moreland | c7a871e | 2020-11-10 21:56:57 +0000 | [diff] [blame] | 17 | #pragma once | 
| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 18 |  | 
| Jiyong Park | 47f876b | 2018-04-17 13:56:46 +0900 | [diff] [blame] | 19 | #ifndef __ANDROID_VNDK__ | 
|  | 20 |  | 
| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 21 | #include <binder/IActivityManager.h> | 
| Chong Zhang | a7215d2 | 2020-11-10 12:11:15 -0800 | [diff] [blame] | 22 | #include <android/app/ProcessStateEnum.h> | 
| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 23 |  | 
|  | 24 | #include <utils/threads.h> | 
|  | 25 |  | 
|  | 26 | // --------------------------------------------------------------------------- | 
|  | 27 | namespace android { | 
|  | 28 |  | 
| Chong Zhang | a7215d2 | 2020-11-10 12:11:15 -0800 | [diff] [blame] | 29 | #define DECLARE_PROCESS_STATE(name) \ | 
|  | 30 | PROCESS_STATE_##name = (int32_t) app::ProcessStateEnum::name | 
|  | 31 |  | 
| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 32 | class ActivityManager | 
|  | 33 | { | 
|  | 34 | public: | 
|  | 35 |  | 
|  | 36 | enum { | 
| Eric Laurent | 0559589 | 2018-10-18 14:56:24 -0700 | [diff] [blame] | 37 | // Flag for registerUidObserver: report uid state changed | 
|  | 38 | UID_OBSERVER_PROCSTATE = 1<<0, | 
| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 39 | // Flag for registerUidObserver: report uid gone | 
|  | 40 | UID_OBSERVER_GONE = 1<<1, | 
|  | 41 | // Flag for registerUidObserver: report uid has become idle | 
|  | 42 | UID_OBSERVER_IDLE = 1<<2, | 
|  | 43 | // Flag for registerUidObserver: report uid has become active | 
|  | 44 | UID_OBSERVER_ACTIVE = 1<<3 | 
|  | 45 | }; | 
|  | 46 |  | 
| Chong Zhang | a7215d2 | 2020-11-10 12:11:15 -0800 | [diff] [blame] | 47 | // PROCESS_STATE_* must come from frameworks/base/core/java/android/app/ProcessStateEnum.aidl. | 
|  | 48 | // This is to make sure that Java side uses the same values as native. | 
| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 49 | enum { | 
| Chong Zhang | a7215d2 | 2020-11-10 12:11:15 -0800 | [diff] [blame] | 50 | DECLARE_PROCESS_STATE(UNKNOWN), | 
|  | 51 | DECLARE_PROCESS_STATE(PERSISTENT), | 
|  | 52 | DECLARE_PROCESS_STATE(PERSISTENT_UI), | 
|  | 53 | DECLARE_PROCESS_STATE(TOP), | 
|  | 54 | DECLARE_PROCESS_STATE(BOUND_TOP), | 
|  | 55 | DECLARE_PROCESS_STATE(FOREGROUND_SERVICE), | 
|  | 56 | DECLARE_PROCESS_STATE(BOUND_FOREGROUND_SERVICE), | 
|  | 57 | DECLARE_PROCESS_STATE(IMPORTANT_FOREGROUND), | 
|  | 58 | DECLARE_PROCESS_STATE(IMPORTANT_BACKGROUND), | 
|  | 59 | DECLARE_PROCESS_STATE(TRANSIENT_BACKGROUND), | 
|  | 60 | DECLARE_PROCESS_STATE(BACKUP), | 
|  | 61 | DECLARE_PROCESS_STATE(SERVICE), | 
|  | 62 | DECLARE_PROCESS_STATE(RECEIVER), | 
|  | 63 | DECLARE_PROCESS_STATE(TOP_SLEEPING), | 
|  | 64 | DECLARE_PROCESS_STATE(HEAVY_WEIGHT), | 
|  | 65 | DECLARE_PROCESS_STATE(HOME), | 
|  | 66 | DECLARE_PROCESS_STATE(LAST_ACTIVITY), | 
|  | 67 | DECLARE_PROCESS_STATE(CACHED_ACTIVITY), | 
|  | 68 | DECLARE_PROCESS_STATE(CACHED_ACTIVITY_CLIENT), | 
|  | 69 | DECLARE_PROCESS_STATE(CACHED_RECENT), | 
|  | 70 | DECLARE_PROCESS_STATE(CACHED_EMPTY), | 
|  | 71 | DECLARE_PROCESS_STATE(NONEXISTENT), | 
| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 72 | }; | 
|  | 73 |  | 
|  | 74 | ActivityManager(); | 
|  | 75 |  | 
|  | 76 | int openContentUri(const String16& stringUri); | 
| Chong Zhang | 1576534 | 2020-11-17 14:44:20 -0800 | [diff] [blame] | 77 | status_t registerUidObserver(const sp<IUidObserver>& observer, | 
| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 78 | const int32_t event, | 
|  | 79 | const int32_t cutpoint, | 
|  | 80 | const String16& callingPackage); | 
| Chong Zhang | 1576534 | 2020-11-17 14:44:20 -0800 | [diff] [blame] | 81 | status_t unregisterUidObserver(const sp<IUidObserver>& observer); | 
| Svet Ganov | fa85180 | 2018-03-27 17:17:46 -0700 | [diff] [blame] | 82 | bool isUidActive(const uid_t uid, const String16& callingPackage); | 
| Eric Laurent | 0559589 | 2018-10-18 14:56:24 -0700 | [diff] [blame] | 83 | int getUidProcessState(const uid_t uid, const String16& callingPackage); | 
| Chong Zhang | b632bd5 | 2020-11-02 11:01:48 -0800 | [diff] [blame] | 84 | status_t checkPermission(const String16& permission, const pid_t pid, const uid_t uid, int32_t* outResult); | 
| Rick Yiu | 68e261a | 2020-08-28 05:10:55 +0000 | [diff] [blame] | 85 |  | 
| Chong Zhang | b632bd5 | 2020-11-02 11:01:48 -0800 | [diff] [blame] | 86 | status_t linkToDeath(const sp<IBinder::DeathRecipient>& recipient); | 
| Eino-Ville Talvala | ae8b20d | 2018-03-20 11:05:23 -0700 | [diff] [blame] | 87 | status_t unlinkToDeath(const sp<IBinder::DeathRecipient>& recipient); | 
|  | 88 |  | 
| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 89 | private: | 
|  | 90 | Mutex mLock; | 
|  | 91 | sp<IActivityManager> mService; | 
|  | 92 | sp<IActivityManager> getService(); | 
|  | 93 | }; | 
|  | 94 |  | 
|  | 95 |  | 
| Steven Moreland | 6511af5 | 2019-09-26 16:05:45 -0700 | [diff] [blame] | 96 | } // namespace android | 
| Ganesh Mahendran | 4d85b8c | 2017-11-02 14:43:38 +0000 | [diff] [blame] | 97 | // --------------------------------------------------------------------------- | 
| Jiyong Park | 47f876b | 2018-04-17 13:56:46 +0900 | [diff] [blame] | 98 | #else // __ANDROID_VNDK__ | 
|  | 99 | #error "This header is not visible to vendors" | 
|  | 100 | #endif // __ANDROID_VNDK__ |