Commit 92c4bb87 authored by Ehimare Okoyomon's avatar Ehimare Okoyomon Committed by Commit Bot

[Android] Website Settings. Add helper methods for preferences and reset

Add method that removes unneeded preferences and another that determines
the page action to do after data reset. Use both for page info
permissions page.

Screenshot: https://screenshot.googleplex.com/gdDXORTDkSe.png
Bug: 1077766
Change-Id: I3bbb067722d8566f6648c84e4aa264e7707370e2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2312819Reviewed-by: default avatarMugdha Lakhani <nator@chromium.org>
Reviewed-by: default avatarAndy Paicu <andypaicu@chromium.org>
Reviewed-by: default avatarChristian Dullweber <dullweber@chromium.org>
Commit-Queue: Ehimare Okoyomon <eokoyomon@chromium.org>
Cr-Commit-Position: refs/heads/master@{#795853}
parent 77ad8d39
...@@ -277,6 +277,8 @@ public class ChromePageInfoControllerDelegate extends PageInfoControllerDelegate ...@@ -277,6 +277,8 @@ public class ChromePageInfoControllerDelegate extends PageInfoControllerDelegate
SingleWebsiteSettings fragment = (SingleWebsiteSettings) Fragment.instantiate( SingleWebsiteSettings fragment = (SingleWebsiteSettings) Fragment.instantiate(
mContext, SingleWebsiteSettings.class.getName(), fragmentArgs); mContext, SingleWebsiteSettings.class.getName(), fragmentArgs);
fragment.setSiteSettingsClient(new ChromeSiteSettingsClient(mContext, getBrowserContext())); fragment.setSiteSettingsClient(new ChromeSiteSettingsClient(mContext, getBrowserContext()));
fragment.setHideNonPermissionPreferences(true);
fragment.setRefreshAfterReset(true);
return fragment; return fragment;
} }
......
...@@ -264,13 +264,26 @@ public class PageInfoViewTest { ...@@ -264,13 +264,26 @@ public class PageInfoViewTest {
@Feature({"RenderTest"}) @Feature({"RenderTest"})
@Features.EnableFeatures(PageInfoFeatureList.PAGE_INFO_V2) @Features.EnableFeatures(PageInfoFeatureList.PAGE_INFO_V2)
public void testShowConnectionInfoSubpage() throws IOException { public void testShowConnectionInfoSubpage() throws IOException {
setThirdPartyCookieBlocking(true);
loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(mPath)); loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(mPath));
View dialog = (View) getPageInfoView().getParent(); View dialog = (View) getPageInfoView().getParent();
onView(withId(R.id.page_info_connection_row)).perform(click()); onView(withId(R.id.page_info_connection_row)).perform(click());
mRenderTestRule.render(dialog, "PageInfo_ConnectionInfoSubpage"); mRenderTestRule.render(dialog, "PageInfo_ConnectionInfoSubpage");
} }
/**
* Tests the permissions page of the new PageInfo UI.
*/
@Test
@MediumTest
@Feature({"RenderTest"})
@Features.EnableFeatures(PageInfoFeatureList.PAGE_INFO_V2)
public void testShowPermissionsSubpage() throws IOException {
loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(mPath));
View dialog = (View) getPageInfoView().getParent();
onView(withId(R.id.page_info_permissions_row)).perform(click());
mRenderTestRule.render(dialog, "PageInfo_PermissionsSubpage");
}
/** /**
* Tests the cookies page of the new PageInfo UI. * Tests the cookies page of the new PageInfo UI.
*/ */
......
...@@ -7,6 +7,10 @@ ...@@ -7,6 +7,10 @@
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<org.chromium.components.browser_ui.settings.TextMessagePreference
android:key="page_description"
app:iconSpaceReserved="false"
android:summary="@string/website_settings_permissions_description"/>
<org.chromium.components.browser_ui.settings.ChromeBasePreference <org.chromium.components.browser_ui.settings.ChromeBasePreference
android:key="os_permissions_warning" /> android:key="os_permissions_warning" />
<org.chromium.components.browser_ui.settings.ChromeBasePreference <org.chromium.components.browser_ui.settings.ChromeBasePreference
......
...@@ -55,9 +55,11 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -55,9 +55,11 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
// Preference keys, see single_website_preferences.xml // Preference keys, see single_website_preferences.xml
// Headings: // Headings:
public static final String PREF_PAGE_DESCRIPTION = "page_description";
public static final String PREF_SITE_HEADING = "site_heading";
public static final String PREF_SITE_TITLE = "site_title"; public static final String PREF_SITE_TITLE = "site_title";
public static final String PREF_USAGE = "site_usage"; public static final String PREF_USAGE = "site_usage";
public static final String PREF_PERMISSIONS = "site_permissions"; public static final String PREF_PERMISSIONS_HEADER = "site_permissions";
public static final String PREF_OS_PERMISSIONS_WARNING = "os_permissions_warning"; public static final String PREF_OS_PERMISSIONS_WARNING = "os_permissions_warning";
public static final String PREF_OS_PERMISSIONS_WARNING_EXTRA = "os_permissions_warning_extra"; public static final String PREF_OS_PERMISSIONS_WARNING_EXTRA = "os_permissions_warning_extra";
public static final String PREF_OS_PERMISSIONS_WARNING_DIVIDER = public static final String PREF_OS_PERMISSIONS_WARNING_DIVIDER =
...@@ -97,6 +99,20 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -97,6 +99,20 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
"vr_permission_list", // PermissionInfo.Type.VIRTUAL_REALITY "vr_permission_list", // PermissionInfo.Type.VIRTUAL_REALITY
}; };
// A list of preferences keys that will be hidden on this page if this boolean below is true
private boolean mHideNonPermissionPreferences;
private static final String[] NON_PERMISSION_PREFERENCES = {
PREF_SITE_HEADING,
PREF_SITE_TITLE,
PREF_USAGE,
PREF_PERMISSIONS_HEADER,
PREF_CLEAR_DATA,
};
// Determines if this page will refresh its permissions display after clear and reset is
// clicked.
private boolean mRefreshAfterReset;
private static final int REQUEST_CODE_NOTIFICATION_CHANNEL_SETTINGS = 1; private static final int REQUEST_CODE_NOTIFICATION_CHANNEL_SETTINGS = 1;
private final SiteDataCleaner mSiteDataCleaner = new SiteDataCleaner(); private final SiteDataCleaner mSiteDataCleaner = new SiteDataCleaner();
...@@ -173,7 +189,11 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -173,7 +189,11 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
@Override @Override
public void onActivityCreated(Bundle savedInstanceState) { public void onActivityCreated(Bundle savedInstanceState) {
getActivity().setTitle(R.string.prefs_site_settings); getActivity().setTitle(R.string.prefs_site_settings);
init();
super.onActivityCreated(savedInstanceState);
}
private void init() {
Object extraSite = getArguments().getSerializable(EXTRA_SITE); Object extraSite = getArguments().getSerializable(EXTRA_SITE);
Object extraSiteAddress = getArguments().getSerializable(EXTRA_SITE_ADDRESS); Object extraSiteAddress = getArguments().getSerializable(EXTRA_SITE_ADDRESS);
...@@ -193,8 +213,6 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -193,8 +213,6 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
// Disable animations of preference changes. // Disable animations of preference changes.
getListView().setItemAnimator(null); getListView().setItemAnimator(null);
super.onActivityCreated(savedInstanceState);
} }
@Override @Override
...@@ -215,6 +233,14 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -215,6 +233,14 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
} }
} }
public void setHideNonPermissionPreferences(boolean hide) {
mHideNonPermissionPreferences = hide;
}
public void setRefreshAfterReset(boolean refresh) {
mRefreshAfterReset = refresh;
}
/** /**
* Given an address and a list of sets of websites, returns a new site with the same origin * Given an address and a list of sets of websites, returns a new site with the same origin
* as |address| which has merged into it the permissions and storage info of the matching input * as |address| which has merged into it the permissions and storage info of the matching input
...@@ -298,6 +324,9 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -298,6 +324,9 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
* Must only be called once mSite is set. * Must only be called once mSite is set.
*/ */
private void displaySitePermissions() { private void displaySitePermissions() {
if (getPreferenceScreen() != null) {
getPreferenceScreen().removeAll();
}
SettingsUtils.addPreferencesFromResource(this, R.xml.single_website_preferences); SettingsUtils.addPreferencesFromResource(this, R.xml.single_website_preferences);
Set<String> permissionPreferenceKeys = Set<String> permissionPreferenceKeys =
...@@ -325,7 +354,16 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -325,7 +354,16 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
removePreferenceSafely(PREF_USAGE); removePreferenceSafely(PREF_USAGE);
} }
if (!hasPermissionsPreferences()) { if (!hasPermissionsPreferences()) {
removePreferenceSafely(PREF_PERMISSIONS); removePreferenceSafely(PREF_PERMISSIONS_HEADER);
}
// Remove certain preferences explicitly
if (mHideNonPermissionPreferences) {
for (String key : NON_PERMISSION_PREFERENCES) {
removePreferenceSafely(key);
}
} else {
removePreferenceSafely(PREF_PAGE_DESCRIPTION);
} }
} }
...@@ -630,7 +668,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -630,7 +668,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
mObjectUserPermissionCount--; mObjectUserPermissionCount--;
if (!hasPermissionsPreferences()) { if (!hasPermissionsPreferences()) {
removePreferenceSafely(PREF_PERMISSIONS); removePreferenceSafely(PREF_PERMISSIONS_HEADER);
} }
}); });
...@@ -947,7 +985,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -947,7 +985,8 @@ 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,7 +1061,9 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment ...@@ -1022,7 +1061,9 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
RecordHistogram.recordEnumeratedHistogram("SingleWebsitePreferences.NavigatedFromToReset", RecordHistogram.recordEnumeratedHistogram("SingleWebsitePreferences.NavigatedFromToReset",
navigationSource, SettingsNavigationSource.NUM_ENTRIES); navigationSource, SettingsNavigationSource.NUM_ENTRIES);
if (finishActivityImmediately) { if (mRefreshAfterReset) {
init();
} else if (finishActivityImmediately) {
getActivity().finish(); getActivity().finish();
} }
} }
......
...@@ -141,6 +141,9 @@ ...@@ -141,6 +141,9 @@
<message name="IDS_WEBSITE_SETTINGS_PERMISSIONS_CATEGORY" desc="The headline above all the permissions on the website details page."> <message name="IDS_WEBSITE_SETTINGS_PERMISSIONS_CATEGORY" desc="The headline above all the permissions on the website details page.">
Permissions Permissions
</message> </message>
<message name="IDS_WEBSITE_SETTINGS_PERMISSIONS_DESCRIPTION" desc="The description explaining what the website site settings page is for">
Control this site's access to your device
</message>
<message name="IDS_WEBSITE_SETTINGS_PERMISSIONS_ALLOW" desc="Summary text explaining that Chrome will allow a website to access some permission, e.g. JavaScript: allow."> <message name="IDS_WEBSITE_SETTINGS_PERMISSIONS_ALLOW" desc="Summary text explaining that Chrome will allow a website to access some permission, e.g. JavaScript: allow.">
Allow Allow
</message> </message>
......
...@@ -70,11 +70,6 @@ ...@@ -70,11 +70,6 @@
android:visibility="gone" android:visibility="gone"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="match_parent"/> android:layout_width="match_parent"/>
<org.chromium.components.page_info.PageInfoRowView
android:id="@+id/page_info_performance_row"
android:visibility="gone"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
<org.chromium.components.page_info.PageInfoRowView <org.chromium.components.page_info.PageInfoRowView
android:id="@+id/page_info_permissions_row" android:id="@+id/page_info_permissions_row"
android:visibility="gone" android:visibility="gone"
......
...@@ -94,6 +94,8 @@ public class PageInfoControllerDelegateImpl extends PageInfoControllerDelegate { ...@@ -94,6 +94,8 @@ public class PageInfoControllerDelegateImpl extends PageInfoControllerDelegate {
SingleWebsiteSettings fragment = (SingleWebsiteSettings) Fragment.instantiate( SingleWebsiteSettings fragment = (SingleWebsiteSettings) Fragment.instantiate(
mContext, SingleWebsiteSettings.class.getName(), fragmentArgs); mContext, SingleWebsiteSettings.class.getName(), fragmentArgs);
fragment.setSiteSettingsClient(new WebLayerSiteSettingsClient(getBrowserContext())); fragment.setSiteSettingsClient(new WebLayerSiteSettingsClient(getBrowserContext()));
fragment.setHideNonPermissionPreferences(true);
fragment.setRefreshAfterReset(true);
return fragment; return fragment;
} }
......
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