blob: ecc8c0074e181eeaeaf1b15b1bf906d22ac29b5f [file] [log] [blame]
/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.keyguard;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewRootImpl;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.NotificationPanelViewController;
import com.android.systemui.statusbar.phone.StatusBar;
/**
* Interface to control Keyguard View. It should be implemented by KeyguardViewManagers, which
* should, in turn, be injected into {@link KeyguardViewMediator}.
*/
public interface KeyguardViewController {
/**
* Shows Keyguard.
* @param options
*/
void show(Bundle options);
/**
* Hides Keyguard with the fade-out animation as configured by the parameters provided.
*
* @param startTime
* @param fadeoutDuration
*/
void hide(long startTime, long fadeoutDuration);
/**
* Resets the state of Keyguard View.
* @param hideBouncerWhenShowing
*/
void reset(boolean hideBouncerWhenShowing);
/**
* Called when the device started going to sleep.
*/
default void onStartedGoingToSleep() {};
/**
* Called when the device has finished going to sleep.
*/
default void onFinishedGoingToSleep() {};
/**
* Called when the device started waking up.
*/
default void onStartedWakingUp() {};
/**
* Called when the device started turning on.
*/
default void onScreenTurningOn() {};
/**
* Called when the device has finished turning on.
*/
default void onScreenTurnedOn() {};
/**
* Sets whether the Keyguard needs input.
* @param needsInput
*/
void setNeedsInput(boolean needsInput);
/**
* Called when cancel button in bouncer is pressed.
*/
void onCancelClicked();
/**
* Sets whether the keyguard is occluded by another window.
*
* @param occluded
* @param animate
*/
void setOccluded(boolean occluded, boolean animate);
/**
* @return Whether the keyguard is showing
*/
boolean isShowing();
/**
* Dismisses the keyguard by going to the next screen or making it gone.
*/
void dismissAndCollapse();
/**
* Notifies that Keyguard is just about to go away.
*/
void keyguardGoingAway();
/**
* Sets the system state depending on whether the keyguard is going away or not.
*/
void setKeyguardGoingAwayState(boolean isKeyguardGoingAway);
/**
* @return Whether window animation for unlock should be disabled.
*/
boolean shouldDisableWindowAnimationsForUnlock();
/**
* @return Whether the keyguard is going to notification shade.
*/
boolean isGoingToNotificationShade();
/**
* @return Whether subtle animation should be used for unlocking the device.
*/
boolean isUnlockWithWallpaper();
/**
* @return Whether subtle animation should be used for unlocking the device.
*/
boolean shouldSubtleWindowAnimationsForUnlock();
/**
* Starts the animation before we dismiss Keyguard, i.e. an disappearing animation on the
* security view of the bouncer.
*
* @param finishRunnable the runnable to be run after the animation finished, or {@code null} if
* no action should be run
*/
void startPreHideAnimation(Runnable finishRunnable);
/**
* Blocks the current touch gesture from affecting the expansion amount of the notification
* panel. This is used after a completed unlock gesture to ignore further dragging before an
* ACTION_UP.
*/
void blockPanelExpansionFromCurrentTouch();
/**
* @return the ViewRootImpl of the View where the Keyguard is mounted.
*/
ViewRootImpl getViewRootImpl();
/**
* Notifies that the user has authenticated by other means than using the bouncer, for example,
* fingerprint.
*/
void notifyKeyguardAuthenticated(boolean strongAuth);
/**
* Shows the Bouncer.
*
*/
void showBouncer(boolean scrimmed);
/**
* Returns {@code true} when the bouncer is currently showing
*/
boolean isBouncerShowing();
/**
* When bouncer is fully visible or it is showing but animation didn't finish yet.
*/
boolean bouncerIsOrWillBeShowing();
// TODO: Deprecate registerStatusBar in KeyguardViewController interface. It is currently
// only used for testing purposes in StatusBarKeyguardViewManager, and it prevents us from
// achieving complete abstraction away from where the Keyguard View is mounted.
/**
* Registers the StatusBar to which this Keyguard View is mounted.
* @param statusBar
* @param container
* @param notificationPanelViewController
* @param biometricUnlockController
* @param notificationContainer
* @param bypassController
*/
void registerStatusBar(StatusBar statusBar,
ViewGroup container,
NotificationPanelViewController notificationPanelViewController,
BiometricUnlockController biometricUnlockController,
View notificationContainer,
KeyguardBypassController bypassController);
}