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

Commit 28a84689 authored by Alan Viverette's avatar Alan Viverette
Browse files

Avoid NPE when ActionMenuPresenter is intialized with null MenuBuilder

Also adds annotations to accurately reflect nullability.

Bug: 26318920
Change-Id: Ia3b170dd301edfc0088a11ee5764c24bab2f10aa
parent f43f627f
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -134,7 +136,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter
    }

    @Override
    public void initForMenu(Context context, MenuBuilder menu) {
    public void initForMenu(@NonNull Context context, @Nullable MenuBuilder menu) {
        super.initForMenu(context, menu);

        final Resources res = context.getResources();
@@ -629,8 +631,16 @@ public class ActionMenuPresenter extends BaseMenuPresenter
    }

    public boolean flagActionItems() {
        final ArrayList<MenuItemImpl> visibleItems = mMenu.getVisibleItems();
        final int itemsSize = visibleItems.size();
        final ArrayList<MenuItemImpl> visibleItems;
        final int itemsSize;
        if (mMenu != null) {
            visibleItems = mMenu.getVisibleItems();
            itemsSize = visibleItems.size();
        } else {
            visibleItems = null;
            itemsSize = 0;
        }

        int maxActions = mMaxItems;
        int widthLimit = mActionItemWidthLimit;
        final int querySpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
@@ -786,7 +796,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter
        if (isVisible) {
            // Not a submenu, but treat it like one.
            super.onSubMenuSelected(null);
        } else {
        } else if (mMenu != null) {
            mMenu.close(false /* closeAllMenus */);
        }
    }
@@ -938,7 +948,9 @@ public class ActionMenuPresenter extends BaseMenuPresenter

        @Override
        protected void onDismiss() {
            if (mMenu != null) {
                mMenu.close();
            }
            mOverflowPopup = null;

            super.onDismiss();
@@ -999,7 +1011,9 @@ public class ActionMenuPresenter extends BaseMenuPresenter
        }

        public void run() {
            if (mMenu != null) {
                mMenu.changeMenuMode();
            }
            final View menuView = (View) mMenuView;
            if (menuView != null && menuView.getWindowToken() != null && mPopup.tryShow()) {
                mOverflowPopup = mPopup;
+1 −1
Original line number Diff line number Diff line
@@ -622,7 +622,7 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo
    }

    /** @hide */
    public void initialize(MenuBuilder menu) {
    public void initialize(@Nullable MenuBuilder menu) {
        mMenu = menu;
    }

+1 −1
Original line number Diff line number Diff line
@@ -2070,7 +2070,7 @@ public class Toolbar extends ViewGroup {
        MenuItemImpl mCurrentExpandedItem;

        @Override
        public void initForMenu(Context context, MenuBuilder menu) {
        public void initForMenu(@NonNull Context context, @Nullable MenuBuilder menu) {
            // Clear the expanded action view when menus change.
            if (mMenu != null && mCurrentExpandedItem != null) {
                mMenu.collapseItemActionView(mCurrentExpandedItem);
+3 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.internal.view.menu;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
@@ -58,7 +60,7 @@ public abstract class BaseMenuPresenter implements MenuPresenter {
    }

    @Override
    public void initForMenu(Context context, MenuBuilder menu) {
    public void initForMenu(@NonNull Context context, @Nullable MenuBuilder menu) {
        mContext = context;
        mInflater = LayoutInflater.from(mContext);
        mMenu = menu;
+3 −1
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@ package com.android.internal.view.menu;

import com.android.internal.view.menu.MenuView.ItemView;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.os.Bundle;
import android.os.Parcelable;
@@ -49,7 +51,7 @@ public class IconMenuPresenter extends BaseMenuPresenter {
    }

    @Override
    public void initForMenu(Context context, MenuBuilder menu) {
    public void initForMenu(@NonNull Context context, @Nullable MenuBuilder menu) {
        super.initForMenu(context, menu);
        mMaxItems = -1;
    }
Loading