Commit 086c526d authored by Ehimare Okoyomon's avatar Ehimare Okoyomon Committed by Commit Bot

[Android] Add a callback to reset permissions in site settings.

Bug: 1077766
Change-Id: I99780cdf421768f5da4630e95b53cf6c53c1257f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2411940
Commit-Queue: Ehimare Okoyomon <eokoyomon@chromium.org>
Reviewed-by: default avatarChristian Dullweber <dullweber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#809904}
parent 56d7fcca
...@@ -8,7 +8,6 @@ import static org.chromium.components.browser_ui.site_settings.WebsitePreference ...@@ -8,7 +8,6 @@ import static org.chromium.components.browser_ui.site_settings.WebsitePreference
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
...@@ -131,9 +130,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -131,9 +130,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
PREF_CLEAR_DATA, PREF_CLEAR_DATA,
}; };
// Determines if this page will refresh its permissions display after clear and reset is // The callback to be run after this site is reset.
// clicked. private Runnable mWebsiteResetCallback;
private boolean mRefreshAfterReset;
private static final int REQUEST_CODE_NOTIFICATION_CHANNEL_SETTINGS = 1; private static final int REQUEST_CODE_NOTIFICATION_CHANNEL_SETTINGS = 1;
...@@ -262,8 +260,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -262,8 +260,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
mHideNonPermissionPreferences = hide; mHideNonPermissionPreferences = hide;
} }
public void setRefreshAfterReset(boolean refresh) { public void setWebsiteResetCallback(Runnable callback) {
mRefreshAfterReset = refresh; mWebsiteResetCallback = callback;
} }
/** /**
...@@ -989,8 +987,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -989,8 +987,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
} }
private void popBackIfNoSettings() { private void popBackIfNoSettings() {
if (!hasPermissionsPreferences() && !hasUsagePreferences() && getActivity() != null if (!hasPermissionsPreferences() && !hasUsagePreferences() && getActivity() != null) {
&& !mRefreshAfterReset) {
getActivity().finish(); getActivity().finish();
} }
} }
...@@ -1022,11 +1019,16 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -1022,11 +1019,16 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
.setTitle(R.string.website_reset) .setTitle(R.string.website_reset)
.setMessage(R.string.website_reset_confirmation) .setMessage(R.string.website_reset_confirmation)
.setPositiveButton(R.string.website_reset, .setPositiveButton(R.string.website_reset,
new DialogInterface.OnClickListener() { (dialog, which) -> {
@Override if (mHideNonPermissionPreferences) {
public void onClick(DialogInterface dialog, int which) { mSiteDataCleaner.resetPermissions(
getSiteSettingsClient().getBrowserContextHandle(), mSite);
} else {
resetSite(); resetSite();
} }
if (mWebsiteResetCallback != null) {
mWebsiteResetCallback.run();
}
}) })
.setNegativeButton(R.string.cancel, null) .setNegativeButton(R.string.cancel, null)
.show(); .show();
...@@ -1057,6 +1059,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -1057,6 +1059,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
boolean finishActivityImmediately = boolean finishActivityImmediately =
mSite.getTotalUsage() == 0 && mObjectPolicyPermissionCount == 0; mSite.getTotalUsage() == 0 && mObjectPolicyPermissionCount == 0;
mSiteDataCleaner.resetPermissions(getSiteSettingsClient().getBrowserContextHandle(), mSite);
mSiteDataCleaner.clearData( mSiteDataCleaner.clearData(
getSiteSettingsClient().getBrowserContextHandle(), mSite, mDataClearedCallback); getSiteSettingsClient().getBrowserContextHandle(), mSite, mDataClearedCallback);
...@@ -1065,9 +1068,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -1065,9 +1068,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
RecordHistogram.recordEnumeratedHistogram("SingleWebsitePreferences.NavigatedFromToReset", RecordHistogram.recordEnumeratedHistogram("SingleWebsitePreferences.NavigatedFromToReset",
navigationSource, SettingsNavigationSource.NUM_ENTRIES); navigationSource, SettingsNavigationSource.NUM_ENTRIES);
if (mRefreshAfterReset) { if (finishActivityImmediately) {
init();
} else if (finishActivityImmediately) {
getActivity().finish(); getActivity().finish();
} }
} }
......
...@@ -22,7 +22,13 @@ public class SiteDataCleaner { ...@@ -22,7 +22,13 @@ public class SiteDataCleaner {
WebsitePreferenceBridgeJni.get().clearCookieData(browserContextHandle, origin); WebsitePreferenceBridgeJni.get().clearCookieData(browserContextHandle, origin);
WebsitePreferenceBridgeJni.get().clearBannerData(browserContextHandle, origin); WebsitePreferenceBridgeJni.get().clearBannerData(browserContextHandle, origin);
WebsitePreferenceBridgeJni.get().clearMediaLicenses(browserContextHandle, origin); WebsitePreferenceBridgeJni.get().clearMediaLicenses(browserContextHandle, origin);
site.clearAllStoredData(browserContextHandle, finishCallback::run);
}
/**
* Resets the permissions of the specified site.
*/
public void resetPermissions(BrowserContextHandle browserContextHandle, Website site) {
// Clear the permissions. // Clear the permissions.
for (ContentSettingException exception : site.getContentSettingExceptions()) { for (ContentSettingException exception : site.getContentSettingExceptions()) {
site.setContentSettingPermission(browserContextHandle, site.setContentSettingPermission(browserContextHandle,
...@@ -36,7 +42,5 @@ public class SiteDataCleaner { ...@@ -36,7 +42,5 @@ public class SiteDataCleaner {
for (ChosenObjectInfo info : site.getChosenObjectInfo()) { for (ChosenObjectInfo info : site.getChosenObjectInfo()) {
info.revoke(browserContextHandle); info.revoke(browserContextHandle);
} }
site.clearAllStoredData(browserContextHandle, finishCallback::run);
} }
} }
...@@ -53,7 +53,7 @@ public class PageInfoPermissionsController implements PageInfoSubpageController ...@@ -53,7 +53,7 @@ public class PageInfoPermissionsController implements PageInfoSubpageController
mRowView.getContext(), SingleWebsiteSettings.class.getName(), fragmentArgs); mRowView.getContext(), SingleWebsiteSettings.class.getName(), fragmentArgs);
mSubpageFragment.setSiteSettingsClient(mDelegate.getSiteSettingsClient()); mSubpageFragment.setSiteSettingsClient(mDelegate.getSiteSettingsClient());
mSubpageFragment.setHideNonPermissionPreferences(true); mSubpageFragment.setHideNonPermissionPreferences(true);
mSubpageFragment.setRefreshAfterReset(true); mSubpageFragment.setWebsiteResetCallback(mMainController::exitSubpage);
AppCompatActivity host = (AppCompatActivity) mRowView.getContext(); AppCompatActivity host = (AppCompatActivity) mRowView.getContext();
host.getSupportFragmentManager().beginTransaction().add(mSubpageFragment, null).commitNow(); host.getSupportFragmentManager().beginTransaction().add(mSubpageFragment, null).commitNow();
return mSubpageFragment.requireView(); return mSubpageFragment.requireView();
......
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