Igalia / wolvic

A fast and secure browser for standalone virtual-reality and augmented-reality headsets.
https://wolvic.org
Mozilla Public License 2.0
796 stars 100 forks source link

Crash when clicking on installed web app #1297

Closed javifernandez closed 6 months ago

javifernandez commented 6 months ago

Configuration

Wolvic version: 1.6.0 Wolvic build ID: 308

Hardware: Quest2

Steps to Reproduce

  1. Ensure no webapp is installed (eg, fresh install or remove app data)
  2. Load the www.igalia.com url
  3. Cick on the "Save web-app" icon in the navigation bar
  4. Click on the "Install " button of the dialog
  5. Click on the "Open Library" Tray icon
  6. Go to the Web Apps tab of the dialog

Current Behavior

The app crash immediately

Expected Behavior

The list of installed web-apps should be shown

Possible Solution

Context

Error Logs and Stack Traces

2024-03-11 15:39:56.729 28557-28557 AndroidRuntime com.igalia.wolvic.metastore D Shutting down VM 2024-03-11 15:39:56.730 28557-28557 AndroidRuntime com.igalia.wolvic.metastore E FATAL EXCEPTION: main Process: com.igalia.wolvic.metastore, PID: 28557 java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to mozilla.components.concept.engine.manifest.WebAppManifest$Icon at com.igalia.wolvic.ui.views.TabView$$ExternalSyntheticLambda1.apply(SourceFile:127) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:203) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1390) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:475) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:236) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:517) at com.igalia.wolvic.ui.adapters.WebApp.getIconResources(SourceFile:26) at com.igalia.wolvic.ui.adapters.WebAppsAdapter.onBindViewHolder(SourceFile:35) at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(SourceFile:1) at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(SourceFile:151) at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(SourceFile:72) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(SourceFile:145) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(SourceFile:6) at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(SourceFile:54) at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(SourceFile:1) at androidx.recyclerview.widget.LinearLayoutManager.fill(SourceFile:49) at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(SourceFile:770) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(SourceFile:81) at androidx.recyclerview.widget.RecyclerView.dispatchLayout(SourceFile:72) at androidx.recyclerview.widget.RecyclerView.onLayout(SourceFile:6) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at com.igalia.wolvic.ui.views.library.LibraryView.onLayout(SourceFile:1) at com.igalia.wolvic.ui.views.library.WebAppsView.onLayout(SourceFile:1) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) 2024-03-11 15:39:56.730 28557-28557 GeckoCrashHandler com.igalia.wolvic.metastore E >>> REPORTING UNCAUGHT EXCEPTION FROM THREAD 2 ("main") java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to mozilla.components.concept.engine.manifest.WebAppManifest$Icon at com.igalia.wolvic.ui.views.TabView$$ExternalSyntheticLambda1.apply(SourceFile:127) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:203) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1390) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:475) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:236) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:517) at com.igalia.wolvic.ui.adapters.WebApp.getIconResources(SourceFile:26) at com.igalia.wolvic.ui.adapters.WebAppsAdapter.onBindViewHolder(SourceFile:35) at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(SourceFile:1) at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(SourceFile:151) at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(SourceFile:72) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(SourceFile:145) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(SourceFile:6) at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(SourceFile:54) at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(SourceFile:1) at androidx.recyclerview.widget.LinearLayoutManager.fill(SourceFile:49) at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(SourceFile:770) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(SourceFile:81) at androidx.recyclerview.widget.RecyclerView.dispatchLayout(SourceFile:72) at androidx.recyclerview.widget.RecyclerView.onLayout(SourceFile:6) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at com.igalia.wolvic.ui.views.library.LibraryView.onLayout(SourceFile:1) at com.igalia.wolvic.ui.views.library.WebAppsView.onLayout(SourceFile:1) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at android.view.View.layout(View.java:23203) at android.view.ViewGroup.layout(ViewGroup.java:6412) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
svillar commented 6 months ago

Hmm I've just followed the steps you mentioned and I got no crash.

javifernandez commented 6 months ago

Hmm I've just followed the steps you mentioned and I got no crash.

You can see the new Web App installed there ?

svillar commented 6 months ago

Yes, I even added several.

BTW I've realized that I'm trying with main not with 1.6. So if that's reproducible in 1.6, it's definitely fixed in main

javifernandez commented 6 months ago

Confirmed that the crash is not reproducible in main.

javifernandez commented 6 months ago

Confirmed that the crash is not reproducible in main.

Umm, correction ... it still crashes in quest2 when building a release apk from the main branch.