blob: a986b71d556f94f2b510b9fbb9d81dd0e4922412 [file] [log] [blame]
Kenny Root96690bc2019-11-15 10:20:59 -08001/*
2 * Copyright (C) 2019 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
17package com.android.server.recoverysystem;
18
19import android.content.Context;
20import android.os.PowerManager;
21
22import java.io.FileWriter;
23
24public class RecoverySystemServiceTestable extends RecoverySystemService {
25 private static class MockInjector extends RecoverySystemService.Injector {
26 private final FakeSystemProperties mSystemProperties;
27 private final PowerManager mPowerManager;
28 private final FileWriter mUncryptPackageFileWriter;
29 private final UncryptSocket mUncryptSocket;
30
31 MockInjector(Context context, FakeSystemProperties systemProperties,
32 PowerManager powerManager, FileWriter uncryptPackageFileWriter,
33 UncryptSocket uncryptSocket) {
34 super(context);
35 mSystemProperties = systemProperties;
36 mPowerManager = powerManager;
37 mUncryptPackageFileWriter = uncryptPackageFileWriter;
38 mUncryptSocket = uncryptSocket;
39 }
40
41 @Override
42 public PowerManager getPowerManager() {
43 return mPowerManager;
44 }
45
46 @Override
47 public String systemPropertiesGet(String key) {
48 return mSystemProperties.get(key);
49 }
50
51 @Override
52 public void systemPropertiesSet(String key, String value) {
53 mSystemProperties.set(key, value);
54 }
55
56 @Override
57 public boolean uncryptPackageFileDelete() {
58 return true;
59 }
60
61 @Override
62 public String getUncryptPackageFileName() {
63 return "mock-file.txt";
64 }
65
66 @Override
67 public FileWriter getUncryptPackageFileWriter() {
68 return mUncryptPackageFileWriter;
69 }
70
71 @Override
72 public UncryptSocket connectService() {
73 return mUncryptSocket;
74 }
75
76 @Override
77 public void threadSleep(long millis) {
78 }
79 }
80
81 RecoverySystemServiceTestable(Context context, FakeSystemProperties systemProperties,
82 PowerManager powerManager, FileWriter uncryptPackageFileWriter,
83 UncryptSocket uncryptSocket) {
84 super(new MockInjector(context, systemProperties, powerManager, uncryptPackageFileWriter,
85 uncryptSocket));
86 }
87
88 public static class FakeSystemProperties {
89 private String mCtlStart = null;
90
91 public String get(String key) {
92 if (RecoverySystemService.INIT_SERVICE_UNCRYPT.equals(key)
93 || RecoverySystemService.INIT_SERVICE_SETUP_BCB.equals(key)
94 || RecoverySystemService.INIT_SERVICE_CLEAR_BCB.equals(key)) {
95 return null;
96 } else {
97 throw new IllegalArgumentException("unexpected test key: " + key);
98 }
99 }
100
101 public void set(String key, String value) {
102 if ("ctl.start".equals(key)) {
103 mCtlStart = value;
104 } else {
105 throw new IllegalArgumentException("unexpected test key: " + key);
106 }
107 }
108
109 public String getCtlStart() {
110 return mCtlStart;
111 }
112 }
113}