1241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi/* 2241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * Copyright (C) 2016 The Android Open Source Project 3241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * 4241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * Licensed under the Apache License, Version 2.0 (the "License"); 5241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * you may not use this file except in compliance with the License. 6241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * You may obtain a copy of the License at 7241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * 8241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * http://www.apache.org/licenses/LICENSE-2.0 9241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * 10241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * Unless required by applicable law or agreed to in writing, software 11241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * distributed under the License is distributed on an "AS IS" BASIS, 12241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * See the License for the specific language governing permissions and 14241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * limitations under the License 15241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi */ 16241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi 17241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggipackage com.android.systemui.keyguard; 18241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi 19241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggiimport com.android.internal.policy.IKeyguardDismissCallback; 20fabc743bcf6e6623e530545c4b31285ea642f087Jorim Jaggiimport com.android.systemui.Dependency; 21fabc743bcf6e6623e530545c4b31285ea642f087Jorim Jaggiimport com.android.systemui.UiOffloadThread; 22fabc743bcf6e6623e530545c4b31285ea642f087Jorim Jaggiimport com.android.systemui.recents.Recents; 23fabc743bcf6e6623e530545c4b31285ea642f087Jorim Jaggiimport com.android.systemui.recents.misc.SystemServicesProxy; 24241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi 25241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggiimport java.util.ArrayList; 26241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi 27241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi/** 28241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi * Registry holding the current set of {@link IKeyguardDismissCallback}s. 29241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi */ 30241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggipublic class DismissCallbackRegistry { 31241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi 32241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi private final ArrayList<DismissCallbackWrapper> mDismissCallbacks = new ArrayList<>(); 33fabc743bcf6e6623e530545c4b31285ea642f087Jorim Jaggi private final UiOffloadThread mUiOffloadThread = Dependency.get(UiOffloadThread.class); 34241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi 35241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi public void addCallback(IKeyguardDismissCallback callback) { 36241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi mDismissCallbacks.add(new DismissCallbackWrapper(callback)); 37241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi } 38241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi 39241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi public void notifyDismissCancelled() { 40241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi for (int i = mDismissCallbacks.size() - 1; i >= 0; i--) { 41fabc743bcf6e6623e530545c4b31285ea642f087Jorim Jaggi DismissCallbackWrapper callback = mDismissCallbacks.get(i); 42fabc743bcf6e6623e530545c4b31285ea642f087Jorim Jaggi mUiOffloadThread.submit(callback::notifyDismissCancelled); 43241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi } 44241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi mDismissCallbacks.clear(); 45241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi } 46241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi 47241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi public void notifyDismissSucceeded() { 48241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi for (int i = mDismissCallbacks.size() - 1; i >= 0; i--) { 49fabc743bcf6e6623e530545c4b31285ea642f087Jorim Jaggi DismissCallbackWrapper callback = mDismissCallbacks.get(i); 50fabc743bcf6e6623e530545c4b31285ea642f087Jorim Jaggi mUiOffloadThread.submit(callback::notifyDismissSucceeded); 51241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi } 52241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi mDismissCallbacks.clear(); 53241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi } 54241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi} 55