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

Commit e4098519 authored by Adam Powell's avatar Adam Powell Committed by Android (Google) Code Review
Browse files

Merge "Fix bug 4355335 - android.app.cts.DialogTest.testContextMenu failing on IRJ28"

parents e98c27e5 d1f4207b
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ public class MenuDialogHelper implements DialogInterface.OnKeyListener,
    private MenuBuilder mMenu;
    private AlertDialog mDialog;
    ListMenuPresenter mPresenter;
    private MenuPresenter.Callback mPresenterCallback;
    
    public MenuDialogHelper(MenuBuilder menu) {
        mMenu = menu;
@@ -124,6 +125,10 @@ public class MenuDialogHelper implements DialogInterface.OnKeyListener,

    }

    public void setPresenterCallback(MenuPresenter.Callback cb) {
        mPresenterCallback = cb;
    }

    /**
     * Dismisses the menu's dialog.
     * 
@@ -145,10 +150,16 @@ public class MenuDialogHelper implements DialogInterface.OnKeyListener,
        if (allMenusAreClosing || menu == mMenu) {
            dismiss();
        }
        if (mPresenterCallback != null) {
            mPresenterCallback.onCloseMenu(menu, allMenusAreClosing);
        }
    }

    @Override
    public boolean onOpenSubMenu(MenuBuilder subMenu) {
        if (mPresenterCallback != null) {
            return mPresenterCallback.onOpenSubMenu(subMenu);
        }
        return false;
    }

+14 −5
Original line number Diff line number Diff line
@@ -1962,8 +1962,13 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
                mContextMenu.clearAll();
            }

            mContextMenuHelper = mContextMenu.show(originalView, originalView.getWindowToken());
            return mContextMenuHelper != null;
            final MenuDialogHelper helper = mContextMenu.show(originalView,
                    originalView.getWindowToken());
            if (helper != null) {
                helper.setPresenterCallback(mContextMenuCallback);
            }
            mContextMenuHelper = helper;
            return helper != null;
        }

        @Override
@@ -3171,7 +3176,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
     * <li> Calls back to the callback's onMenuItemSelected when an item is
     * selected.
     */
    private final class DialogMenuCallback implements MenuBuilder.Callback {
    private final class DialogMenuCallback implements MenuBuilder.Callback, MenuPresenter.Callback {
        private int mFeatureId;
        private MenuDialogHelper mSubMenuHelper;

@@ -3180,6 +3185,10 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
        }

        public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) {
            if (menu.getRootMenu() != menu) {
                onCloseSubMenu(menu);
            }

            if (allMenusAreClosing) {
                Callback callback = getCallback();
                if (callback != null && !isDestroyed()) {
@@ -3198,7 +3207,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
            }
        }

        public void onCloseSubMenu(SubMenuBuilder menu) {
        public void onCloseSubMenu(MenuBuilder menu) {
            Callback callback = getCallback();
            if (callback != null && !isDestroyed()) {
                callback.onPanelClosed(mFeatureId, menu.getRootMenu());
@@ -3214,7 +3223,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
        public void onMenuModeChange(MenuBuilder menu) {
        }

        public boolean onSubMenuSelected(SubMenuBuilder subMenu) {
        public boolean onOpenSubMenu(MenuBuilder subMenu) {
            // Set a simple callback for the submenu
            subMenu.setCallback(this);