Commit efc4691f authored by Marcin Wiacek's avatar Marcin Wiacek Committed by Commit Bot

Cleanup inside SiteSettingsCategory, Website & java/preferences/website

Next cleanup after
https://chromium-review.googlesource.com/c/chromium/src/+/1091753

* Using int const instead of String inside SiteSettingsCategory.java
* Creating dynamically ContentSettingException array
  inside Website.java
* Sharing preference keys from SiteSettingsPreferences.java
  with category keys in the SiteSettingsCategory.java
* Other minor cleanups inside Android preferences/website directory

Change-Id: I2e4a97e0f54f6e91aa47a931905e869988ad1858
Reviewed-on: https://chromium-review.googlesource.com/1097408Reviewed-by: default avatarBernhard Bauer <bauerb@chromium.org>
Commit-Queue: Marcin Wiącek <marcin@mwiacek.com>
Cr-Commit-Position: refs/heads/master@{#569206}
parent dff08861
......@@ -291,7 +291,7 @@ public class WebApkUma {
WebsitePermissionsFetcher fetcher = new WebsitePermissionsFetcher(
new UnimportantStorageSizeCalculator(availableSpaceInByte, cacheSizeInByte));
fetcher.fetchPreferencesForCategory(
SiteSettingsCategory.fromString(SiteSettingsCategory.CATEGORY_USE_STORAGE));
SiteSettingsCategory.createFromType(SiteSettingsCategory.Type.USE_STORAGE));
}
private static void logSpaceUsageUMAOnDataAvailable(
......
......@@ -282,7 +282,7 @@ public class NotificationPlatformBridge {
// Notification preferences for all origins.
fragmentArguments = new Bundle();
fragmentArguments.putString(SingleCategoryPreferences.EXTRA_CATEGORY,
SiteSettingsCategory.CATEGORY_NOTIFICATIONS);
SiteSettingsCategory.preferenceKey(SiteSettingsCategory.Type.NOTIFICATIONS));
fragmentArguments.putString(SingleCategoryPreferences.EXTRA_TITLE,
applicationContext.getResources().getString(
R.string.push_notifications_permission_title));
......
......@@ -54,7 +54,7 @@ public class NotificationsPreferences extends PreferenceFragment {
mFromWebsitesPref = findPreference(PREF_FROM_WEBSITES);
mFromWebsitesPref.getExtras().putString(SingleCategoryPreferences.EXTRA_CATEGORY,
SiteSettingsCategory.CATEGORY_NOTIFICATIONS);
SiteSettingsCategory.preferenceKey(SiteSettingsCategory.Type.NOTIFICATIONS));
}
@Override
......
......@@ -58,7 +58,7 @@ public class ChosenObjectPreferences
listView.setDivider(null);
int contentSettingsType = getArguments().getInt(EXTRA_CATEGORY);
mCategory = SiteSettingsCategory.fromContentSettingsType(contentSettingsType);
mCategory = SiteSettingsCategory.createFromContentSettingsType(contentSettingsType);
mObjectInfos =
(ArrayList<ChosenObjectInfo>) getArguments().getSerializable(EXTRA_OBJECT_INFOS);
checkObjectConsistency();
......
......@@ -4,14 +4,37 @@
package org.chromium.chrome.browser.preferences.website;
import android.support.annotation.IntDef;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import java.io.Serializable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Exception information for a given origin.
*/
public class ContentSettingException implements Serializable {
@IntDef({Type.ADS, Type.AUTOPLAY, Type.BACKGROUND_SYNC, Type.COOKIE, Type.JAVASCRIPT,
Type.POPUP, Type.SOUND})
@Retention(RetentionPolicy.SOURCE)
public @interface Type {
// Values used to address array index in Website. Should be enumerated from 0
// and can't have gaps.
int ADS = 0;
int AUTOPLAY = 1;
int BACKGROUND_SYNC = 2;
int COOKIE = 3;
int JAVASCRIPT = 4;
int POPUP = 5;
int SOUND = 6;
/**
* Number of handled exceptions used for calculating array sizes.
*/
int NUM_EXCEPTIONS = 7;
}
private final int mContentSettingType;
private final String mPattern;
private final ContentSetting mContentSetting;
......
......@@ -10,7 +10,6 @@ import android.content.Intent;
import android.content.res.Resources;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ContentSettingsType;
import org.chromium.chrome.browser.preferences.LocationSettings;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.components.location.LocationUtils;
......@@ -20,9 +19,8 @@ import org.chromium.components.location.LocationUtils;
*/
public class LocationCategory extends SiteSettingsCategory {
public LocationCategory() {
super(SiteSettingsCategory.CATEGORY_DEVICE_LOCATION,
android.Manifest.permission.ACCESS_COARSE_LOCATION,
ContentSettingsType.CONTENT_SETTINGS_TYPE_GEOLOCATION);
super(SiteSettingsCategory.Type.DEVICE_LOCATION,
android.Manifest.permission.ACCESS_COARSE_LOCATION);
}
@Override
......
......@@ -194,7 +194,7 @@ public class ManageSpaceActivity extends AppCompatActivity implements View.OnCli
private void refreshStorageNumbers() {
WebsitePermissionsFetcher fetcher = new WebsitePermissionsFetcher(new SizeCalculator());
fetcher.fetchPreferencesForCategory(
SiteSettingsCategory.fromString(SiteSettingsCategory.CATEGORY_USE_STORAGE));
SiteSettingsCategory.createFromType(SiteSettingsCategory.Type.USE_STORAGE));
}
/** Data will be cleared once we fetch all site size and important status info. */
......@@ -238,7 +238,7 @@ public class ManageSpaceActivity extends AppCompatActivity implements View.OnCli
this, SingleCategoryPreferences.class.getName());
Bundle initialArguments = new Bundle();
initialArguments.putString(SingleCategoryPreferences.EXTRA_CATEGORY,
SiteSettingsCategory.CATEGORY_USE_STORAGE);
SiteSettingsCategory.preferenceKey(SiteSettingsCategory.Type.USE_STORAGE));
initialArguments.putString(SingleCategoryPreferences.EXTRA_TITLE,
getString(R.string.website_settings_storage));
intent.putExtra(Preferences.EXTRA_SHOW_FRAGMENT_ARGUMENTS, initialArguments);
......@@ -309,7 +309,7 @@ public class ManageSpaceActivity extends AppCompatActivity implements View.OnCli
public void clearData() {
WebsitePermissionsFetcher fetcher = new WebsitePermissionsFetcher(this, true);
fetcher.fetchPreferencesForCategory(
SiteSettingsCategory.fromString(SiteSettingsCategory.CATEGORY_USE_STORAGE));
SiteSettingsCategory.createFromType(SiteSettingsCategory.Type.USE_STORAGE));
}
@Override
......
......@@ -20,18 +20,18 @@ public class PermissionInfo implements Serializable {
public @interface Type {
// Values used in Website and other places to address permission
// array index. Should be enumerated from 0 and can't have gaps.
static final int CAMERA = 0;
static final int CLIPBOARD = 1;
static final int GEOLOCATION = 2;
static final int MICROPHONE = 3;
static final int MIDI = 4;
static final int NOTIFICATION = 5;
static final int PROTECTED_MEDIA_IDENTIFIER = 6;
static final int SENSORS = 7;
int CAMERA = 0;
int CLIPBOARD = 1;
int GEOLOCATION = 2;
int MICROPHONE = 3;
int MIDI = 4;
int NOTIFICATION = 5;
int PROTECTED_MEDIA_IDENTIFIER = 6;
int SENSORS = 7;
/**
* Number of handled permissions used for example inside for loops.
*/
static final int NUM_PERMISSIONS = 8;
int NUM_PERMISSIONS = 8;
}
private final boolean mIsIncognito;
......
......@@ -128,7 +128,7 @@ class WebsitePreference extends Preference implements FaviconImageCallback {
return super.compareTo(preference);
}
WebsitePreference other = (WebsitePreference) preference;
if (mCategory.showStorageSites()) {
if (mCategory.showSites(SiteSettingsCategory.Type.USE_STORAGE)) {
return mSite.compareByStorageTo(other.mSite);
}
......@@ -141,7 +141,7 @@ class WebsitePreference extends Preference implements FaviconImageCallback {
TextView usageText = (TextView) view.findViewById(R.id.usage_text);
usageText.setVisibility(View.GONE);
if (mCategory.showStorageSites()) {
if (mCategory.showSites(SiteSettingsCategory.Type.USE_STORAGE)) {
long totalUsage = mSite.getTotalUsage();
if (totalUsage > 0) {
usageText.setText(Formatter.formatShortFileSize(getContext(), totalUsage));
......
......@@ -60,65 +60,64 @@ public abstract class WebsitePreferenceBridge {
return list;
}
@CalledByNative
private static void insertCameraInfoIntoList(
private static void insertInfoIntoList(@PermissionInfo.Type int type,
ArrayList<PermissionInfo> list, String origin, String embedder) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getOrigin().equals(origin)
&& list.get(i).getEmbedder().equals(embedder)) {
return;
if (type == PermissionInfo.Type.CAMERA || type == PermissionInfo.Type.MICROPHONE) {
for (PermissionInfo info : list) {
if (info.getOrigin().equals(origin) && info.getEmbedder().equals(embedder)) {
return;
}
}
}
list.add(new PermissionInfo(PermissionInfo.Type.CAMERA, origin, embedder, false));
list.add(new PermissionInfo(type, origin, embedder, false));
}
@CalledByNative
private static void insertCameraInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.CAMERA, list, origin, embedder);
}
@CalledByNative
private static void insertClipboardInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
list.add(new PermissionInfo(PermissionInfo.Type.CLIPBOARD, origin, embedder, false));
insertInfoIntoList(PermissionInfo.Type.CLIPBOARD, list, origin, embedder);
}
@CalledByNative
private static void insertGeolocationInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
list.add(new PermissionInfo(PermissionInfo.Type.GEOLOCATION, origin, embedder, false));
insertInfoIntoList(PermissionInfo.Type.GEOLOCATION, list, origin, embedder);
}
@CalledByNative
private static void insertMicrophoneInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getOrigin().equals(origin)
&& list.get(i).getEmbedder().equals(embedder)) {
return;
}
}
list.add(new PermissionInfo(PermissionInfo.Type.MICROPHONE, origin, embedder, false));
insertInfoIntoList(PermissionInfo.Type.MICROPHONE, list, origin, embedder);
}
@CalledByNative
private static void insertMidiInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
list.add(new PermissionInfo(PermissionInfo.Type.MIDI, origin, embedder, false));
insertInfoIntoList(PermissionInfo.Type.MIDI, list, origin, embedder);
}
@CalledByNative
private static void insertNotificationIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
list.add(new PermissionInfo(PermissionInfo.Type.NOTIFICATION, origin, embedder, false));
insertInfoIntoList(PermissionInfo.Type.NOTIFICATION, list, origin, embedder);
}
@CalledByNative
private static void insertProtectedMediaIdentifierInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
list.add(new PermissionInfo(
PermissionInfo.Type.PROTECTED_MEDIA_IDENTIFIER, origin, embedder, false));
insertInfoIntoList(PermissionInfo.Type.PROTECTED_MEDIA_IDENTIFIER, list, origin, embedder);
}
@CalledByNative
private static void insertSensorsInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
list.add(new PermissionInfo(PermissionInfo.Type.SENSORS, origin, embedder, false));
insertInfoIntoList(PermissionInfo.Type.SENSORS, list, origin, embedder);
}
@CalledByNative
......
......@@ -26,6 +26,7 @@ import org.chromium.chrome.browser.ContentSettingsType;
import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge;
import org.chromium.chrome.browser.preferences.website.ContentSettingsResources;
import org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences;
import org.chromium.chrome.browser.preferences.website.SiteSettingsCategory;
import org.chromium.chrome.browser.test.ChromeBrowserTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.content.browser.test.util.Criteria;
......@@ -122,7 +123,8 @@ public class NotificationsPreferencesTest {
});
SingleCategoryPreferences fragment = (SingleCategoryPreferences) getTopFragment();
Assert.assertTrue(fragment.getCategoryForTest().showNotificationsSites());
Assert.assertTrue(
fragment.getCategoryForTest().showSites(SiteSettingsCategory.Type.NOTIFICATIONS));
}
/** Gets the fragment of the top Activity. Assumes the top Activity is a Preferences. */
......
......@@ -66,7 +66,7 @@ public class SiteSettingsPreferencesTest {
private void setAllowLocation(final boolean enabled) {
LocationSettingsTestUtil.setSystemLocationSettingEnabled(true);
final Preferences preferenceActivity =
startSiteSettingsCategory(SiteSettingsPreferences.LOCATION_KEY);
startSiteSettingsCategory(SiteSettingsCategory.Type.DEVICE_LOCATION);
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
......@@ -151,9 +151,10 @@ public class SiteSettingsPreferencesTest {
return (Preferences) InstrumentationRegistry.getInstrumentation().startActivitySync(intent);
}
private Preferences startSiteSettingsCategory(String category) {
private Preferences startSiteSettingsCategory(@SiteSettingsCategory.Type int type) {
Bundle fragmentArgs = new Bundle();
fragmentArgs.putString(SingleCategoryPreferences.EXTRA_CATEGORY, category);
fragmentArgs.putString(
SingleCategoryPreferences.EXTRA_CATEGORY, SiteSettingsCategory.preferenceKey(type));
Intent intent = PreferencesLauncher.createIntentForSettingsPage(
InstrumentationRegistry.getTargetContext(),
SingleCategoryPreferences.class.getName());
......@@ -218,8 +219,9 @@ public class SiteSettingsPreferencesTest {
});
}
private void setGlobalToggleForCategory(final String category, final boolean enabled) {
final Preferences preferenceActivity = startSiteSettingsCategory(category);
private void setGlobalToggleForCategory(
final @SiteSettingsCategory.Type int type, final boolean enabled) {
final Preferences preferenceActivity = startSiteSettingsCategory(type);
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
......@@ -235,7 +237,7 @@ public class SiteSettingsPreferencesTest {
}
private void setEnablePopups(final boolean enabled) {
setGlobalToggleForCategory(SiteSettingsCategory.CATEGORY_POPUPS, enabled);
setGlobalToggleForCategory(SiteSettingsCategory.Type.POPUPS, enabled);
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
......@@ -247,7 +249,7 @@ public class SiteSettingsPreferencesTest {
}
private void setEnableCamera(final boolean enabled) {
setGlobalToggleForCategory(SiteSettingsCategory.CATEGORY_CAMERA, enabled);
setGlobalToggleForCategory(SiteSettingsCategory.Type.CAMERA, enabled);
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
......@@ -269,7 +271,7 @@ public class SiteSettingsPreferencesTest {
@Feature({"Preferences"})
public void testThirdPartyCookieToggleGetsDisabled() throws Exception {
Preferences preferenceActivity =
startSiteSettingsCategory(SiteSettingsPreferences.COOKIES_KEY);
startSiteSettingsCategory(SiteSettingsCategory.Type.COOKIES);
setCookiesEnabled(preferenceActivity, true);
setThirdPartyCookiesEnabled(preferenceActivity, false);
setThirdPartyCookiesEnabled(preferenceActivity, true);
......@@ -285,7 +287,7 @@ public class SiteSettingsPreferencesTest {
@Feature({"Preferences"})
public void testCookiesNotBlocked() throws Exception {
Preferences preferenceActivity =
startSiteSettingsCategory(SiteSettingsPreferences.COOKIES_KEY);
startSiteSettingsCategory(SiteSettingsCategory.Type.COOKIES);
setCookiesEnabled(preferenceActivity, true);
preferenceActivity.finish();
......@@ -312,7 +314,7 @@ public class SiteSettingsPreferencesTest {
@Feature({"Preferences"})
public void testCookiesBlocked() throws Exception {
Preferences preferenceActivity =
startSiteSettingsCategory(SiteSettingsPreferences.COOKIES_KEY);
startSiteSettingsCategory(SiteSettingsCategory.Type.COOKIES);
setCookiesEnabled(preferenceActivity, false);
preferenceActivity.finish();
......@@ -391,16 +393,22 @@ public class SiteSettingsPreferencesTest {
SiteSettingsPreferences siteSettings = (SiteSettingsPreferences)
preferenceActivity.getFragmentForTest();
SiteSettingsPreference allSites = (SiteSettingsPreference)
siteSettings.findPreference(SiteSettingsPreferences.ALL_SITES_KEY);
SiteSettingsPreference allSites =
(SiteSettingsPreference) siteSettings.findPreference(
SiteSettingsCategory.preferenceKey(
SiteSettingsCategory.Type.ALL_SITES));
Assert.assertEquals(null, allSites);
SiteSettingsPreference autoplay = (SiteSettingsPreference)
siteSettings.findPreference(SiteSettingsPreferences.AUTOPLAY_KEY);
SiteSettingsPreference autoplay =
(SiteSettingsPreference) siteSettings.findPreference(
SiteSettingsCategory.preferenceKey(
SiteSettingsCategory.Type.AUTOPLAY));
Assert.assertFalse(autoplay == null);
SiteSettingsPreference protectedContent = (SiteSettingsPreference)
siteSettings.findPreference(SiteSettingsPreferences.PROTECTED_CONTENT_KEY);
SiteSettingsPreference protectedContent =
(SiteSettingsPreference) siteSettings.findPreference(
SiteSettingsCategory.preferenceKey(
SiteSettingsCategory.Type.PROTECTED_MEDIA));
Assert.assertFalse(protectedContent == null);
preferenceActivity.finish();
......@@ -464,7 +472,7 @@ public class SiteSettingsPreferencesTest {
@CommandLineFlags.Add({ContentSwitches.USE_FAKE_DEVICE_FOR_MEDIA_STREAM,
"disable-features=" + ChromeFeatureList.MODAL_PERMISSION_PROMPTS})
public void testMicBlocked() throws Exception {
setGlobalToggleForCategory(SiteSettingsCategory.CATEGORY_MICROPHONE, false);
setGlobalToggleForCategory(SiteSettingsCategory.Type.MICROPHONE, false);
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
......@@ -540,7 +548,7 @@ public class SiteSettingsPreferencesTest {
* @param enabled true to test enabling background sync, false to test disabling the feature.
*/
private void doTestBackgroundSyncPermission(final boolean enabled) {
setGlobalToggleForCategory(SiteSettingsCategory.CATEGORY_BACKGROUND_SYNC, enabled);
setGlobalToggleForCategory(SiteSettingsCategory.Type.BACKGROUND_SYNC, enabled);
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
......@@ -570,7 +578,7 @@ public class SiteSettingsPreferencesTest {
* @param enabled true to test enabling the USB chooser, false to test disabling the feature.
*/
private void doTestUsbGuardPermission(final boolean enabled) {
setGlobalToggleForCategory(SiteSettingsCategory.CATEGORY_USB, enabled);
setGlobalToggleForCategory(SiteSettingsCategory.Type.USB, enabled);
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
......
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