| Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferences.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferences.java
|
| index bd323584be1f52316b5f7b227c228c04b794584e..74ea7f49f38c5073eb48be83133eb9a469d1396b 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferences.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferences.java
|
| @@ -32,7 +32,10 @@ import org.chromium.chrome.browser.preferences.LocationSettings;
|
| import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate;
|
| import org.chromium.chrome.browser.preferences.ManagedPreferencesUtils;
|
| import org.chromium.chrome.browser.preferences.PrefServiceBridge;
|
| +import org.chromium.chrome.browser.preferences.ProtectedContentResetCredentialConfirmDialogFragment;
|
| import org.chromium.chrome.browser.widget.TintedDrawable;
|
| +import org.chromium.content.browser.MediaDrmCredentialManager;
|
| +import org.chromium.content.browser.MediaDrmCredentialManager.MediaDrmCredentialManagerCallback;
|
| import org.chromium.ui.text.SpanApplier;
|
| import org.chromium.ui.text.SpanApplier.SpanInfo;
|
|
|
| @@ -50,7 +53,8 @@ import java.util.Set;
|
| */
|
| public class WebsitePreferences extends PreferenceFragment
|
| implements OnPreferenceChangeListener, OnPreferenceClickListener,
|
| - AddExceptionPreference.SiteAddedCallback {
|
| + AddExceptionPreference.SiteAddedCallback,
|
| + ProtectedContentResetCredentialConfirmDialogFragment.Listener {
|
| // The key to use to pass which category this preference should display,
|
| // e.g. Location/Popups/All sites (if blank).
|
| public static final String EXTRA_CATEGORY = "category";
|
| @@ -81,6 +85,7 @@ public class WebsitePreferences extends PreferenceFragment
|
| // Keys for individual preferences.
|
| public static final String READ_WRITE_TOGGLE_KEY = "read_write_toggle";
|
| public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
|
| + public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
|
| private static final String ADD_EXCEPTION_KEY = "add_exception";
|
| // Keys for Allowed/Blocked preference groups/headers.
|
| private static final String ALLOWED_GROUP = "allowed_group";
|
| @@ -218,6 +223,8 @@ public class WebsitePreferences extends PreferenceFragment
|
| return website.site().getPopupPermission() == ContentSetting.BLOCK;
|
| } else if (mFilter.showPushNotificationsSites(mCategoryFilter)) {
|
| return website.site().getPushNotificationPermission() == ContentSetting.BLOCK;
|
| + } else if (mFilter.showProtectedMediaSites(mCategoryFilter)) {
|
| + return website.site().getProtectedMediaIdentifierPermission() == ContentSetting.BLOCK;
|
| }
|
|
|
| return false;
|
| @@ -299,7 +306,6 @@ public class WebsitePreferences extends PreferenceFragment
|
| MenuItem searchItem = menu.findItem(R.id.search);
|
| mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
|
| mSearchView.setImeOptions(EditorInfo.IME_FLAG_NO_FULLSCREEN);
|
| -
|
| SearchView.OnQueryTextListener queryTextListener =
|
| new SearchView.OnQueryTextListener() {
|
| @Override
|
| @@ -317,6 +323,20 @@ public class WebsitePreferences extends PreferenceFragment
|
| }
|
| };
|
| mSearchView.setOnQueryTextListener(queryTextListener);
|
| +
|
| + if (mFilter.showProtectedMediaSites(mCategoryFilter)) {
|
| + // Add a menu item to reset protected media identifier device credentials.
|
| + MenuItem resetMenu =
|
| + menu.add(Menu.NONE, Menu.NONE, Menu.FIRST, R.string.reset_device_credentials);
|
| + resetMenu.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
| + @Override
|
| + public boolean onMenuItemClick(MenuItem menuItem) {
|
| + new ProtectedContentResetCredentialConfirmDialogFragment(
|
| + WebsitePreferences.this).show(getFragmentManager(), null);
|
| + return true;
|
| + }
|
| + });
|
| + }
|
| }
|
|
|
| @Override
|
| @@ -345,7 +365,6 @@ public class WebsitePreferences extends PreferenceFragment
|
| }
|
|
|
| // OnPreferenceChangeListener:
|
| -
|
| @Override
|
| public boolean onPreferenceChange(Preference preference, Object newValue) {
|
| if (READ_WRITE_TOGGLE_KEY.equals(preference.getKey())) {
|
| @@ -370,6 +389,9 @@ public class WebsitePreferences extends PreferenceFragment
|
| PrefServiceBridge.getInstance().setAllowPopupsEnabled((boolean) newValue);
|
| } else if (mFilter.showPushNotificationsSites(mCategoryFilter)) {
|
| PrefServiceBridge.getInstance().setPushNotificationsEnabled((boolean) newValue);
|
| + } else if (mFilter.showProtectedMediaSites(mCategoryFilter)) {
|
| + PrefServiceBridge.getInstance().setProtectedMediaIdentifierEnabled(
|
| + (boolean) newValue);
|
| }
|
|
|
| // Categories that support adding exceptions also manage the 'Add site' preference.
|
| @@ -409,7 +431,6 @@ public class WebsitePreferences extends PreferenceFragment
|
| }
|
|
|
| // OnPreferenceClickListener:
|
| -
|
| @Override
|
| public boolean onPreferenceClick(Preference preference) {
|
| if (ALLOWED_GROUP.equals(preference.getKey())) {
|
| @@ -428,6 +449,7 @@ public class WebsitePreferences extends PreferenceFragment
|
| getInfoForOrigins();
|
| }
|
|
|
| + // AddExceptionPreference.SiteAddedCallback:
|
| @Override
|
| public void onAddSite(String hostname) {
|
| PrefServiceBridge.getInstance().nativeSetContentSettingForPattern(
|
| @@ -506,10 +528,9 @@ public class WebsitePreferences extends PreferenceFragment
|
| ChromeSwitchPreference globalToggle = (ChromeSwitchPreference)
|
| getPreferenceScreen().findPreference(READ_WRITE_TOGGLE_KEY);
|
|
|
| + // Configure/hide the third-party cookie toggle, as needed.
|
| Preference thirdPartyCookies = getPreferenceScreen().findPreference(
|
| THIRD_PARTY_COOKIES_TOGGLE_KEY);
|
| -
|
| - // Configure/hide the third-party cookie toggle, as needed.
|
| if (mFilter.showCookiesSites(mCategoryFilter)) {
|
| thirdPartyCookies.setOnPreferenceChangeListener(this);
|
| updateThirdPartyCookiesCheckBox();
|
| @@ -517,6 +538,12 @@ public class WebsitePreferences extends PreferenceFragment
|
| getPreferenceScreen().removePreference(thirdPartyCookies);
|
| }
|
|
|
| + // Show/hide the link that explains protected media settings, as needed.
|
| + if (!mFilter.showProtectedMediaSites(mCategoryFilter)) {
|
| + getPreferenceScreen().removePreference(
|
| + getPreferenceScreen().findPreference(EXPLAIN_PROTECTED_MEDIA_KEY));
|
| + }
|
| +
|
| if (mFilter.showAllSites(mCategoryFilter)
|
| || mFilter.showStorageSites(mCategoryFilter)) {
|
| getPreferenceScreen().removePreference(globalToggle);
|
| @@ -600,6 +627,9 @@ public class WebsitePreferences extends PreferenceFragment
|
| } else if (mFilter.showPushNotificationsSites(mCategoryFilter)) {
|
| globalToggle.setChecked(
|
| PrefServiceBridge.getInstance().isPushNotificationsEnabled());
|
| + } else if (mFilter.showProtectedMediaSites(mCategoryFilter)) {
|
| + globalToggle.setChecked(
|
| + PrefServiceBridge.getInstance().isProtectedMediaIdentifierEnabled());
|
| }
|
| }
|
| }
|
| @@ -624,4 +654,17 @@ public class WebsitePreferences extends PreferenceFragment
|
| ManagedPreferencesUtils.showManagedByAdministratorToast(getActivity());
|
| }
|
| }
|
| +
|
| + // ProtectedContentResetCredentialConfirmDialogFragment.Listener:
|
| + @Override
|
| + public void resetDeviceCredential() {
|
| + MediaDrmCredentialManager.resetCredentials(new MediaDrmCredentialManagerCallback() {
|
| + @Override
|
| + public void onCredentialResetFinished(boolean succeeded) {
|
| + if (succeeded) return;
|
| + String message = getString(R.string.protected_content_reset_failed);
|
| + Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
|
| + }
|
| + });
|
| + }
|
| }
|
|
|