UserManagerCompat.java revision a52ecb0390c85afb385371bb844bb496c59ddf87
13306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*
23306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Copyright (C) 2014 The Android Open Source Project
33306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong *
43306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Licensed under the Apache License, Version 2.0 (the "License");
53306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * you may not use this file except in compliance with the License.
63306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * You may obtain a copy of the License at
73306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong *
83306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong *      http://www.apache.org/licenses/LICENSE-2.0
93306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong *
103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Unless required by applicable law or agreed to in writing, software
113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * distributed under the License is distributed on an "AS IS" BASIS,
123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * See the License for the specific language governing permissions and
143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * limitations under the License.
153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong */
163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong
173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongpackage com.android.launcher3.compat;
183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong
193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongimport android.content.Context;
203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongimport android.os.UserHandle;
213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong
223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongimport com.android.launcher3.Utilities;
233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong
243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongimport java.util.List;
253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong
263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongpublic abstract class UserManagerCompat {
273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    protected UserManagerCompat() {
283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    }
293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong
303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    private static final Object sInstanceLock = new Object();
313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    private static UserManagerCompat sInstance;
323306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong
333306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    public static UserManagerCompat getInstance(Context context) {
343306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong        synchronized (sInstanceLock) {
353306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong            if (sInstance == null) {
363306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong                if (Utilities.ATLEAST_NOUGAT_MR1) {
373306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong                    sInstance = new UserManagerCompatVNMr1(context.getApplicationContext());
383306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong                } else if (Utilities.ATLEAST_NOUGAT) {
393306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong                    sInstance = new UserManagerCompatVN(context.getApplicationContext());
403306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong                } else if (Utilities.ATLEAST_MARSHMALLOW) {
413306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong                    sInstance = new UserManagerCompatVM(context.getApplicationContext());
423306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong                } else {
433306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong                    sInstance = new UserManagerCompatVL(context.getApplicationContext());
443306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong                }
453306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong            }
463306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong            return sInstance;
473306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong        }
483306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    }
493306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong
503306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    /**
513306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong     * Creates a cache for users.
523306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong     */
533306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    public abstract void enableAndResetCache();
543306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong
553306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    public abstract List<UserHandle> getUserProfiles();
563306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    public abstract long getSerialNumberForUser(UserHandle user);
573306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    public abstract UserHandle getUserForSerialNumber(long serialNumber);
583306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    public abstract CharSequence getBadgedLabelForUser(CharSequence label, UserHandle user);
593306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    public abstract long getUserCreationTime(UserHandle user);
603306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    public abstract boolean isQuietModeEnabled(UserHandle user);
613306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    public abstract boolean isUserUnlocked(UserHandle user);
623306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong
633306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong    public abstract boolean isDemoUser();
643306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong}
653306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong