From 7e7b7914ef394617f3f19b9d1f99a47ed52358c9 Mon Sep 17 00:00:00 2001 From: Theresa Wellington Date: Wed, 6 Sep 2017 18:10:43 +0000 Subject: [PATCH] [Home] Fix app menu crash on JellyBean JellyBean crashes if a header is added to a ListView after the adapter has been set. Switch the order of adding the header and setting the adapter. BUG=761726 TBR=mdjones@chromium.org Change-Id: I1cfafe3b437667469d28fc9f3cc79ed0137a1faf Reviewed-on: https://chromium-review.googlesource.com/650626 Reviewed-by: Matthew Jones Commit-Queue: Theresa Cr-Original-Commit-Position: refs/heads/master@{#499674} Reviewed-on: https://chromium-review.googlesource.com/653419 Reviewed-by: Theresa Cr-Commit-Position: refs/branch-heads/3202@{#49} Cr-Branched-From: fa6a5d87adff761bc16afc5498c3f5944c1daa68-refs/heads/master@{#499098} --- .../src/org/chromium/chrome/browser/appmenu/AppMenu.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java index 0b04b733d3f1b..f47e26309c848 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java @@ -255,13 +255,16 @@ void show(Context context, final View anchorView, boolean isByPermanentButton, ViewGroup contentView = (ViewGroup) LayoutInflater.from(context).inflate(R.layout.app_menu_layout, null); mListView = (ListView) contentView.findViewById(R.id.app_menu_list); - mListView.setAdapter(mAdapter); int footerHeight = inflateFooter(footerResourceId, contentView, menuWidth, highlightedItemId); int headerHeight = inflateHeader(headerResourceId, headerOnClickListener, context, menuWidth); + // Set the adapter after the header is added to avoid crashes on JellyBean. + // See crbug.com/761726. + mListView.setAdapter(mAdapter); + int popupHeight = setMenuHeight(menuItems.size(), visibleDisplayFrame, screenHeight, sizingPadding, footerHeight, headerHeight, anchorView); int[] popupPosition = getPopupPosition(mCurrentScreenRotation, visibleDisplayFrame,