Files
Serg aa2fcc5c1f [Android] Fix in-app review flow crash on Play Store split APK installs (#34229)
PlayCoreDialogWrapperActivity (from core-common) lives in base.apk
but deserializes a Parcelable (review.zzc) from split_chrome.apk.
The base split's ClassLoader can't see chrome split classes, causing
ClassNotFoundException. Chromium fixes this for its own activities
via BundleUtils.checkContextClassLoader(), but PlayCoreDialogWrapperActivity
extends plain Activity and is not covered.

Fix by registering an ActivityLifecycleCallbacks that sets the
Application's ClassLoader on the Intent extras Bundle before onCreate().

Also adds a QA preference to force the in-app review flow from settings
for easier testing.

Resolves: https://github.com/brave/brave-browser/issues/53179
2026-02-26 23:19:42 +00:00

74 lines
3.1 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2020 The Brave Authors. All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this file,
You can obtain one at https://mozilla.org/MPL/2.0/.
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:orderingFromXml="true">
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
android:key="link_subscription_on_staging"
android:title="Link subscription on Staging"
android:summaryOn="@string/text_on"
android:summaryOff="@string/text_off"
android:defaultValue="false" />
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
android:key="dormant_users_engagement"
android:title="Enable dormant users engagement"
android:summaryOn="@string/text_on"
android:summaryOff="@string/text_off" />
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
android:key="use_rewards_staging_server"
android:title="Use Rewards staging server"
android:summaryOn="@string/text_on"
android:summaryOff="@string/text_off" />
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
android:key="qa_maximize_initial_ads_number"
android:title="Maximize initial ads number"
android:summaryOn="@string/text_on"
android:summaryOff="@string/text_off"
android:defaultValue="true" />
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
android:key="qa_debug_ntp"
android:title="Enable debugging NTP"
android:summaryOn="@string/text_on"
android:summaryOff="@string/text_off"
android:defaultValue="false" />
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
android:key="qa_vlog_rewards"
android:title="Verbose Logs for Ad-Rewards"
android:summaryOn="@string/text_on"
android:summaryOff="@string/text_off"
android:defaultValue="false" />
<Preference
android:key="qa_command_line"
android:title="Command Line String"/>
<org.chromium.components.browser_ui.settings.ChromeBasePreference
android:key="qa_import_rewards_db"
android:title="Import Rewards Database"/>
<org.chromium.components.browser_ui.settings.ChromeBasePreference
android:key="qa_export_rewards_db"
android:title="Export Rewards Database" />
<org.chromium.components.browser_ui.settings.ChromeBasePreference
android:key="qa_consume_origin_purchase"
android:title="Consume Origin Purchase"
android:summary="Clears Origin INAPP purchase on Play Store for re-testing"/>
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
android:key="qa_force_in_app_review"
android:title="Force in-app review flow"
android:summary="Rate from settings uses in-app review instead of Play Store"
android:defaultValue="false" />
</PreferenceScreen>