Commit 2353bba4 authored by Christian Dullweber's avatar Christian Dullweber Committed by Chromium LUCI CQ

Avoid restoring PageInfo subpage fragments

The PageInfo dialog is closed when the activity is restored e.g. due to
screen size changes. Subpage fragments should be removed since they are
not needed anymore.

Bug: 1157410
Change-Id: I1468f5d259e7ba9a1c33b842a4f1fa9d24bdb289
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2584804Reviewed-by: default avatarEhimare Okoyomon <eokoyomon@chromium.org>
Commit-Queue: Christian Dullweber <dullweber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#836640}
parent f88f743f
......@@ -244,6 +244,13 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
}
private void init() {
// Remove this Preference if it gets restored without a valid SiteSettingsClient. This
// can happen e.g. when it is included in PageInfo.
if (getSiteSettingsClient() == null) {
getParentFragmentManager().beginTransaction().remove(this).commit();
return;
}
Object extraSite = getArguments().getSerializable(EXTRA_SITE);
Object extraSiteAddress = getArguments().getSerializable(EXTRA_SITE_ADDRESS);
......
......@@ -73,6 +73,7 @@ public class PageInfoCookiesController
public View createViewForSubpage(ViewGroup parent) {
assert mSubPage == null;
mSubPage = new PageInfoCookiesPreference();
mSubPage.setSiteSettingsClient(mDelegate.getSiteSettingsClient());
mDelegate.getFragmentManager().beginTransaction().add(mSubPage, null).commitNow();
PageInfoCookiesPreference.PageInfoCookiesViewParams params =
......
......@@ -9,12 +9,12 @@ import android.text.format.Formatter;
import androidx.appcompat.app.AlertDialog;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import org.chromium.base.Callback;
import org.chromium.components.browser_ui.settings.ChromeImageViewPreference;
import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
import org.chromium.components.browser_ui.settings.SettingsUtils;
import org.chromium.components.browser_ui.site_settings.SiteSettingsPreferenceFragment;
import org.chromium.components.content_settings.CookieControlsStatus;
import org.chromium.ui.text.NoUnderlineClickableSpan;
import org.chromium.ui.text.SpanApplier;
......@@ -22,7 +22,7 @@ import org.chromium.ui.text.SpanApplier;
/**
* View showing a toggle and a description for third-party cookie blocking for a site.
*/
public class PageInfoCookiesPreference extends PreferenceFragmentCompat {
public class PageInfoCookiesPreference extends SiteSettingsPreferenceFragment {
private static final String COOKIE_SUMMARY_PREFERENCE = "cookie_summary";
private static final String COOKIE_SWITCH_PREFERENCE = "cookie_switch";
private static final String COOKIE_IN_USE_PREFERENCE = "cookie_in_use";
......@@ -47,6 +47,11 @@ public class PageInfoCookiesPreference extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
// Remove this Preference if it is restored without SiteSettingsClient.
if (getSiteSettingsClient() == null) {
getParentFragmentManager().beginTransaction().remove(this).commit();
return;
}
SettingsUtils.addPreferencesFromResource(this, R.xml.page_info_cookie_preference);
mCookieSwitch = findPreference(COOKIE_SWITCH_PREFERENCE);
mCookieInUse = findPreference(COOKIE_IN_USE_PREFERENCE);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment