From 7801ef5b95c7428883742384de292c67487c4370 Mon Sep 17 00:00:00 2001 From: AlexeyBarabash Date: Mon, 30 Aug 2021 17:04:43 +0300 Subject: [PATCH 1/2] Fix wrong cast exception on Android 5; fixes brave/brave-browser#17735 --- .../chrome/browser/shields/BraveShieldsHandler.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/android/java/org/chromium/chrome/browser/shields/BraveShieldsHandler.java b/android/java/org/chromium/chrome/browser/shields/BraveShieldsHandler.java index 479ff1afcd9..935d2fc300d 100644 --- a/android/java/org/chromium/chrome/browser/shields/BraveShieldsHandler.java +++ b/android/java/org/chromium/chrome/browser/shields/BraveShieldsHandler.java @@ -159,8 +159,12 @@ public class BraveShieldsHandler implements BraveRewardsHelper.LargeIconReadyCal * @param context Context that is using the BraveShieldsMenu. */ public BraveShieldsHandler(Context context) { - mContext = scanForActivity(context); + Context contextCandidate = scanForActivity(context); mHardwareButtonMenuAnchor = null; + mContext = (contextCandidate != null && (contextCandidate instanceof Activity)) + ? contextCandidate + : null; + if (mContext != null) { mHardwareButtonMenuAnchor = ((Activity)mContext).findViewById(R.id.menu_anchor_stub); } From 7b21f4200a7c7f7163cad2de6997d9e78fa866be Mon Sep 17 00:00:00 2001 From: AlexeyBarabash Date: Mon, 30 Aug 2021 17:44:07 +0300 Subject: [PATCH 2/2] Additional checks for null on mContext --- .../chrome/browser/shields/BraveShieldsHandler.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/android/java/org/chromium/chrome/browser/shields/BraveShieldsHandler.java b/android/java/org/chromium/chrome/browser/shields/BraveShieldsHandler.java index 935d2fc300d..3e3f51473d4 100644 --- a/android/java/org/chromium/chrome/browser/shields/BraveShieldsHandler.java +++ b/android/java/org/chromium/chrome/browser/shields/BraveShieldsHandler.java @@ -219,6 +219,8 @@ public class BraveShieldsHandler implements BraveRewardsHelper.LargeIconReadyCal } public PopupWindow showPopupMenu(View anchorView) { + if (mContext == null) return null; + int rotation = ((Activity)mContext).getWindowManager().getDefaultDisplay().getRotation(); // This fixes the bug where the bottom of the menu starts at the top of // the keyboard, instead of overlapping the keyboard as it should. @@ -403,6 +405,8 @@ public class BraveShieldsHandler implements BraveRewardsHelper.LargeIconReadyCal } private void setUpMainLayout() { + if (mContext == null) return; + String favIconURL = mBraveRewardsNativeWorker.GetPublisherFavIconURL(mTabId); Tab currentActiveTab = mIconFetcher.getTab(); String url = currentActiveTab.getUrl().getSpec(); @@ -495,6 +499,8 @@ public class BraveShieldsHandler implements BraveRewardsHelper.LargeIconReadyCal } private void setupDetailsLayouts() { + if (mContext == null) return; + ArrayList detailsLayouts = new ArrayList<>(); detailsLayouts.add(BraveShieldsContentSettings.RESOURCE_IDENTIFIER_TRACKERS); detailsLayouts.add(BraveShieldsContentSettings.RESOURCE_IDENTIFIER_FINGERPRINTING); @@ -682,6 +688,8 @@ public class BraveShieldsHandler implements BraveRewardsHelper.LargeIconReadyCal } private void setUpMainSwitchLayout(boolean isChecked) { + if (mContext == null) return; + TextView mShieldDownText = mMainLayout.findViewById(R.id.shield_down_text); Button mReportBrokenSiteButton = mMainLayout.findViewById(R.id.btn_report_broken_site); mReportBrokenSiteButton.setOnClickListener(new View.OnClickListener() { @@ -871,7 +879,7 @@ public class BraveShieldsHandler implements BraveRewardsHelper.LargeIconReadyCal private void SetFavIcon(Bitmap bmp) { - if (bmp != null) { + if (bmp != null && mContext != null) { ((Activity)mContext).runOnUiThread( new Runnable() { @Override