• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 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 
17 package com.android.server.backup;
18 
19 
20 import android.content.ContentResolver;
21 import android.os.Handler;
22 import android.provider.Settings;
23 import android.util.KeyValueListParser;
24 import android.util.KeyValueSettingObserver;
25 
26 import com.android.internal.annotations.GuardedBy;
27 import com.android.internal.annotations.VisibleForTesting;
28 
29 /**
30  * Configure backup and restore agent timeouts.
31  *
32  * <p>These timeout parameters are stored in Settings.Global to be configurable flags with P/H. They
33  * are represented as a comma-delimited key value list.
34  */
35 public class BackupAgentTimeoutParameters extends KeyValueSettingObserver {
36     @VisibleForTesting
37     public static final String SETTING = Settings.Global.BACKUP_AGENT_TIMEOUT_PARAMETERS;
38 
39     @VisibleForTesting
40     public static final String SETTING_KV_BACKUP_AGENT_TIMEOUT_MILLIS =
41             "kv_backup_agent_timeout_millis";
42 
43     @VisibleForTesting
44     public static final String SETTING_FULL_BACKUP_AGENT_TIMEOUT_MILLIS =
45             "full_backup_agent_timeout_millis";
46 
47     @VisibleForTesting
48     public static final String SETTING_SHARED_BACKUP_AGENT_TIMEOUT_MILLIS =
49             "shared_backup_agent_timeout_millis";
50 
51     @VisibleForTesting
52     public static final String SETTING_RESTORE_AGENT_TIMEOUT_MILLIS =
53             "restore_agent_timeout_millis";
54 
55     @VisibleForTesting
56     public static final String SETTING_RESTORE_AGENT_FINISHED_TIMEOUT_MILLIS =
57             "restore_agent_finished_timeout_millis";
58 
59     @VisibleForTesting
60     public static final String SETTING_QUOTA_EXCEEDED_TIMEOUT_MILLIS =
61             "quota_exceeded_timeout_millis";
62 
63     // Default values
64     @VisibleForTesting public static final long DEFAULT_KV_BACKUP_AGENT_TIMEOUT_MILLIS = 30 * 1000;
65 
66     @VisibleForTesting
67     public static final long DEFAULT_FULL_BACKUP_AGENT_TIMEOUT_MILLIS = 5 * 60 * 1000;
68 
69     @VisibleForTesting
70     public static final long DEFAULT_SHARED_BACKUP_AGENT_TIMEOUT_MILLIS = 30 * 60 * 1000;
71 
72     @VisibleForTesting public static final long DEFAULT_RESTORE_AGENT_TIMEOUT_MILLIS = 60 * 1000;
73 
74     @VisibleForTesting
75     public static final long DEFAULT_RESTORE_AGENT_FINISHED_TIMEOUT_MILLIS = 30 * 1000;
76 
77     @VisibleForTesting
78     public static final long DEFAULT_QUOTA_EXCEEDED_TIMEOUT_MILLIS = 3 * 1000;
79 
80     @GuardedBy("mLock")
81     private long mKvBackupAgentTimeoutMillis;
82 
83     @GuardedBy("mLock")
84     private long mFullBackupAgentTimeoutMillis;
85 
86     @GuardedBy("mLock")
87     private long mSharedBackupAgentTimeoutMillis;
88 
89     @GuardedBy("mLock")
90     private long mRestoreAgentTimeoutMillis;
91 
92     @GuardedBy("mLock")
93     private long mRestoreAgentFinishedTimeoutMillis;
94 
95     @GuardedBy("mLock")
96     private long mQuotaExceededTimeoutMillis;
97 
98     private final Object mLock = new Object();
99 
BackupAgentTimeoutParameters(Handler handler, ContentResolver resolver)100     public BackupAgentTimeoutParameters(Handler handler, ContentResolver resolver) {
101         super(handler, resolver, Settings.Global.getUriFor(SETTING));
102     }
103 
getSettingValue(ContentResolver resolver)104     public String getSettingValue(ContentResolver resolver) {
105         return Settings.Global.getString(resolver, SETTING);
106     }
107 
update(KeyValueListParser parser)108     public void update(KeyValueListParser parser) {
109         synchronized (mLock) {
110             mKvBackupAgentTimeoutMillis =
111                     parser.getLong(
112                             SETTING_KV_BACKUP_AGENT_TIMEOUT_MILLIS,
113                             DEFAULT_KV_BACKUP_AGENT_TIMEOUT_MILLIS);
114             mFullBackupAgentTimeoutMillis =
115                     parser.getLong(
116                             SETTING_FULL_BACKUP_AGENT_TIMEOUT_MILLIS,
117                             DEFAULT_FULL_BACKUP_AGENT_TIMEOUT_MILLIS);
118             mSharedBackupAgentTimeoutMillis =
119                     parser.getLong(
120                             SETTING_SHARED_BACKUP_AGENT_TIMEOUT_MILLIS,
121                             DEFAULT_SHARED_BACKUP_AGENT_TIMEOUT_MILLIS);
122             mRestoreAgentTimeoutMillis =
123                     parser.getLong(
124                             SETTING_RESTORE_AGENT_TIMEOUT_MILLIS,
125                             DEFAULT_RESTORE_AGENT_TIMEOUT_MILLIS);
126             mRestoreAgentFinishedTimeoutMillis =
127                     parser.getLong(
128                             SETTING_RESTORE_AGENT_FINISHED_TIMEOUT_MILLIS,
129                             DEFAULT_RESTORE_AGENT_FINISHED_TIMEOUT_MILLIS);
130             mQuotaExceededTimeoutMillis =
131                     parser.getLong(
132                             SETTING_QUOTA_EXCEEDED_TIMEOUT_MILLIS,
133                             DEFAULT_QUOTA_EXCEEDED_TIMEOUT_MILLIS);
134         }
135     }
136 
getKvBackupAgentTimeoutMillis()137     public long getKvBackupAgentTimeoutMillis() {
138         synchronized (mLock) {
139             return mKvBackupAgentTimeoutMillis;
140         }
141     }
142 
getFullBackupAgentTimeoutMillis()143     public long getFullBackupAgentTimeoutMillis() {
144         synchronized (mLock) {
145             return mFullBackupAgentTimeoutMillis;
146         }
147     }
148 
getSharedBackupAgentTimeoutMillis()149     public long getSharedBackupAgentTimeoutMillis() {
150         synchronized (mLock) {
151             return mSharedBackupAgentTimeoutMillis;
152         }
153     }
154 
getRestoreAgentTimeoutMillis()155     public long getRestoreAgentTimeoutMillis() {
156         synchronized (mLock) {
157             return mRestoreAgentTimeoutMillis;
158         }
159     }
160 
getRestoreAgentFinishedTimeoutMillis()161     public long getRestoreAgentFinishedTimeoutMillis() {
162         synchronized (mLock) {
163             return mRestoreAgentFinishedTimeoutMillis;
164         }
165     }
166 
getQuotaExceededTimeoutMillis()167     public long getQuotaExceededTimeoutMillis() {
168         synchronized (mLock) {
169             return mQuotaExceededTimeoutMillis;
170         }
171     }
172 }
173