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
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
......@@ -131,9 +130,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
PREF_CLEAR_DATA,
};
// Determines if this page will refresh its permissions display after clear and reset is
// clicked.
private boolean mRefreshAfterReset;
// The callback to be run after this site is reset.
private Runnable mWebsiteResetCallback;
private static final int REQUEST_CODE_NOTIFICATION_CHANNEL_SETTINGS = 1;
......@@ -262,8 +260,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
mHideNonPermissionPreferences = hide;
}
public void setRefreshAfterReset(boolean refresh) {
mRefreshAfterReset = refresh;
public void setWebsiteResetCallback(Runnable callback) {
mWebsiteResetCallback = callback;
}
/**
......@@ -989,8 +987,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
}
private void popBackIfNoSettings() {
if (!hasPermissionsPreferences() && !hasUsagePreferences() && getActivity() != null
&& !mRefreshAfterReset) {
if (!hasPermissionsPreferences() && !hasUsagePreferences() && getActivity() != null) {
getActivity().finish();
}
}
......@@ -1022,11 +1019,16 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
.setTitle(R.string.website_reset)
.setMessage(R.string.website_reset_confirmation)
.setPositiveButton(R.string.website_reset,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
(dialog, which) -> {
if (mHideNonPermissionPreferences) {
mSiteDataCleaner.resetPermissions(
getSiteSettingsClient().getBrowserContextHandle(), mSite);
} else {
resetSite();
}
if (mWebsiteResetCallback != null) {
mWebsiteResetCallback.run();
}
})
.setNegativeButton(R.string.cancel, null)
.show();
......@@ -1057,6 +1059,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
boolean finishActivityImmediately =
mSite.getTotalUsage() == 0 && mObjectPolicyPermissionCount == 0;
mSiteDataCleaner.resetPermissions(getSiteSettingsClient().getBrowserContextHandle(), mSite);
mSiteDataCleaner.clearData(
getSiteSettingsClient().getBrowserContextHandle(), mSite, mDataClearedCallback);
......@@ -1065,9 +1068,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
RecordHistogram.recordEnumeratedHistogram("SingleWebsitePreferences.NavigatedFromToReset",
navigationSource, SettingsNavigationSource.NUM_ENTRIES);
if (mRefreshAfterReset) {
init();
} else if (finishActivityImmediately) {
if (finishActivityImmediately) {
getActivity().finish();
}
}
......
......@@ -22,7 +22,13 @@ public class SiteDataCleaner {
WebsitePreferenceBridgeJni.get().clearCookieData(browserContextHandle, origin);
WebsitePreferenceBridgeJni.get().clearBannerData(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.
for (ContentSettingException exception : site.getContentSettingExceptions()) {
site.setContentSettingPermission(browserContextHandle,
......@@ -36,7 +42,5 @@ public class SiteDataCleaner {
for (ChosenObjectInfo info : site.getChosenObjectInfo()) {
info.revoke(browserContextHandle);
}
site.clearAllStoredData(browserContextHandle, finishCallback::run);
}
}
......@@ -53,7 +53,7 @@ public class PageInfoPermissionsController implements PageInfoSubpageController
mRowView.getContext(), SingleWebsiteSettings.class.getName(), fragmentArgs);
mSubpageFragment.setSiteSettingsClient(mDelegate.getSiteSettingsClient());
mSubpageFragment.setHideNonPermissionPreferences(true);
mSubpageFragment.setRefreshAfterReset(true);
mSubpageFragment.setWebsiteResetCallback(mMainController::exitSubpage);
AppCompatActivity host = (AppCompatActivity) mRowView.getContext();
host.getSupportFragmentManager().beginTransaction().add(mSubpageFragment, null).commitNow();
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