Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e0582e5 authored by Chet Haase's avatar Chet Haase Committed by Android Git Automerger
Browse files

am 0d5a9fde: am 6e4ee9d5: Merge "Make onClickHandler in KeyguardHostView a...

am 0d5a9fde: am 6e4ee9d5: Merge "Make onClickHandler in KeyguardHostView a weak reference" into klp-dev

* commit '0d5a9fde':
  Make onClickHandler in KeyguardHostView a weak reference
parents a48f2419 0d5a9fde
Loading
Loading
Loading
Loading
+32 −14
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import android.view.WindowManager;
import android.widget.RemoteViews.OnClickHandler;

import java.io.File;
import java.lang.ref.WeakReference;
import java.util.List;

public class KeyguardHostView extends KeyguardViewBase {
@@ -124,6 +125,8 @@ public class KeyguardHostView extends KeyguardViewBase {

    private final Rect mInsets = new Rect();

    private MyOnClickHandler mOnClickHandler = new MyOnClickHandler(this);

    /*package*/ interface UserSwitcherCallback {
        void hideSecurityView(int duration);
        void showSecurityView();
@@ -812,13 +815,28 @@ public class KeyguardHostView extends KeyguardViewBase {
        }
    }

    private OnClickHandler mOnClickHandler = new OnClickHandler() {
    private static class MyOnClickHandler extends OnClickHandler {

        // weak reference to the hostView to avoid keeping a live reference
        // due to Binder GC linkages to AppWidgetHost. By the same token,
        // this click handler should not keep references to any large
        // objects.
        WeakReference<KeyguardHostView> mThis;

        MyOnClickHandler(KeyguardHostView hostView) {
            mThis = new WeakReference<KeyguardHostView>(hostView);
        }

        @Override
        public boolean onClickHandler(final View view,
                final android.app.PendingIntent pendingIntent,
                final Intent fillInIntent) {
            KeyguardHostView hostView = mThis.get();
            if (hostView == null) {
                return false;
            }
            if (pendingIntent.isActivity()) {
                setOnDismissAction(new OnDismissAction() {
                hostView.setOnDismissAction(new OnDismissAction() {
                    public boolean onDismiss() {
                        try {
                            // TODO: Unregister this handler if PendingIntent.FLAG_ONE_SHOT?
@@ -840,10 +858,10 @@ public class KeyguardHostView extends KeyguardViewBase {
                    }
                });

                if (mViewStateManager.isChallengeShowing()) {
                    mViewStateManager.showBouncer(true);
                if (hostView.mViewStateManager.isChallengeShowing()) {
                    hostView.mViewStateManager.showBouncer(true);
                } else {
                    mCallback.dismiss(false);
                    hostView.mCallback.dismiss(false);
                }
                return true;
            } else {