Skip to content

[cr151] Fix crash with 2 persistent snackbar messages #57727

Description

@samartnik

Description

Crash stack:

Exception org.chromium.base.JniAndroid$UncaughtExceptionException:
  at org.chromium.base.JniAndroid$UncaughtExceptionException.<init> (JniAndroid.java:55)
  at org.chromium.base.JniAndroid.handleException (JniAndroid.java:96)
  at android.os.MessageQueue.nativePollOnce
  at android.os.MessageQueue.nextLegacy (MessageQueue.java:940)
  at android.os.MessageQueue.next (MessageQueue.java:1052)
  at android.os.Looper.loopOnce (Looper.java:221)
  at android.os.Looper.loop (Looper.java:363)
  at android.app.ActivityThread.main (ActivityThread.java:10060)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:632)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:975)
Caused by java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
  at android.view.ViewGroup.addViewInner (ViewGroup.java:5539)
  at android.view.ViewGroup.addView (ViewGroup.java:5358)
  at android.view.ViewGroup.addView (ViewGroup.java:5298)
  at android.view.ViewGroup.addView (ViewGroup.java:5270)
  at org.chromium.chrome.browser.ui.messages.snackbar.BraveSnackbarView.applyActionBelowMessage (BraveSnackbarView.java:238)
  at org.chromium.chrome.browser.ui.messages.snackbar.BraveSnackbarView.update (BraveSnackbarView.java:167)
  at org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.updateView (SnackbarManager.java:519)
  at org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.dismissSnackbars (SnackbarManager.java:348)
  at org.chromium.chrome.browser.ntp.BraveRecentTabsSnackbarHelper.setProfileImageFromBitmap (BraveRecentTabsSnackbarHelper.java:390)
  at org.chromium.chrome.browser.ntp.BraveRecentTabsSnackbarHelper.lambda$fetchFaviconAndSetProfileImage$3 (BraveRecentTabsSnackbarHelper.java:361)

Steps to reproduce

  1. Make sure that it is new install where NTP SI snackbar hasn't been dismissed
  2. Enable 2 command line flags: --enable-features=BraveFreshNtpAfterIdleExperiment:variant/B --rewards=debug=true
  3. In New Tab Page settings set Opening screen to New Tab
  4. Open any website
  5. Move app to background and then get back (repeat steps 4-5 until NTP on return contains SI) here crash will happen

Actual result

Crash

Expected result

No crash

Reproduces how often

Easily reproduced

Brave version

1.95.x

Device

  • Brand/model: n/a
  • Android version: n/a

Channel information

  • release (stable)
  • beta
  • nightly

Reproducibility

  • with Brave Shields disabled
  • with Brave Rewards disabled
  • in the latest version of Chrome

Miscellaneous information

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions