forked from kaiostech/gonk-misc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfakePackageManagerNative.cpp
More file actions
97 lines (80 loc) · 3.61 KB
/
fakePackageManagerNative.cpp
File metadata and controls
97 lines (80 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/* (c) 2020 KAI OS TECHNOLOGIES (HONG KONG) LIMITED All rights reserved. This
* file or any portion thereof may not be reproduced or used in any manner
* whatsoever without the express written permission of KAI OS TECHNOLOGIES
* (HONG KONG) LIMITED. KaiOS is the trademark of KAI OS TECHNOLOGIES (HONG
* KONG) LIMITED or its affiliate company and may be registered in some
* jurisdictions. All other trademarks are the property of their respective
* owners.
*/
#include <binder/BinderService.h>
#include <binder/IPCThreadState.h>
#include <binder/ProcessState.h>
#include <binder/IServiceManager.h>
#include <android/content/pm/BnPackageManagerNative.h>
namespace android {
using binder::Status;
using content::pm::BnPackageManagerNative;
// There is a case that ~AudioTrack() may update media metrics to
// MediaAnalyticsService, and it will be blocked for 5 seconds while trying to
// get the binder of "package_native" service, which doesn't exists because
// PackageManagerService.java has been removed from KaiOS. So add
// FakePackageManagerNative to prevent this problem.
class FakePackageManagerNative :
public BinderService<FakePackageManagerNative>,
public BnPackageManagerNative {
public:
FakePackageManagerNative();
virtual ~FakePackageManagerNative();
static const char *getServiceName() { return "package_native"; }
virtual Status getNamesForUids(const std::vector<int32_t>& uids, std::vector<std::string>* _aidl_return);
virtual Status getInstallerForPackage(const String16& packageName, std::string* _aidl_return);
virtual Status getVersionCodeForPackage(const String16& packageName, int64_t* _aidl_return);
virtual Status isAudioPlaybackCaptureAllowed(const std::vector<std::string>& packageNames, std::vector<bool>* _aidl_return);
virtual Status getLocationFlags(const std::string& packageName, int32_t* _aidl_return);
virtual Status getTargetSdkVersionForPackage(const String16& packageName, int32_t* _aidl_return);
virtual Status getModuleMetadataPackageName(std::string* _aidl_return);
};
FakePackageManagerNative::FakePackageManagerNative() {
}
FakePackageManagerNative::~FakePackageManagerNative() {
}
Status FakePackageManagerNative::getNamesForUids(const std::vector<int32_t>& uids, std::vector<std::string>* _aidl_return) {
_aidl_return->assign(uids.size(), std::string());
return Status::ok();
}
Status FakePackageManagerNative::getInstallerForPackage(const String16& packageName, std::string* _aidl_return) {
(void)packageName;
_aidl_return->clear();
return Status::ok();
}
Status FakePackageManagerNative::getVersionCodeForPackage(const String16& packageName, int64_t* _aidl_return) {
(void)packageName;
*_aidl_return = 0;
return Status::ok();
}
Status FakePackageManagerNative::isAudioPlaybackCaptureAllowed(const std::vector<std::string>& packageNames, std::vector<bool>* _aidl_return) {
_aidl_return->assign(packageNames.size(), false);
return Status::ok();
}
Status FakePackageManagerNative::getLocationFlags(const std::string& packageName, int32_t* _aidl_return) {
(void)packageName;
*_aidl_return = 0;
return Status::ok();
}
Status FakePackageManagerNative::getTargetSdkVersionForPackage(const String16& packageName, int32_t* _aidl_return) {
(void)packageName;
*_aidl_return = 0;
return Status::ok();
}
Status FakePackageManagerNative::getModuleMetadataPackageName(std::string* _aidl_return) {
_aidl_return->clear();
return Status::ok();
}
}; // namespace android
int main(int argc, char **argv)
{
(void)argc;
(void)argv;
android::FakePackageManagerNative::publishAndJoinThreadPool();
return 0;
}