Index: chrome/android/javatests/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferencesTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferencesTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferencesTest.java |
index 047dd81fa5db917c79b1d60339ecae0f64229a64..82d93e6522fe004ecfbc5aa825ed9a3b631dee28 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferencesTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferencesTest.java |
@@ -16,6 +16,7 @@ import org.chromium.chrome.browser.ChromeApplication; |
import org.chromium.chrome.browser.ChromeSwitches; |
import org.chromium.chrome.browser.infobar.InfoBarContainer; |
import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference; |
+import org.chromium.chrome.browser.preferences.ChromeBaseListPreference; |
import org.chromium.chrome.browser.preferences.ChromeSwitchPreference; |
import org.chromium.chrome.browser.preferences.LocationSettings; |
import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
@@ -123,6 +124,15 @@ public class SiteSettingsPreferencesTest extends ChromeActivityTestCaseBase<Chro |
return (Preferences) getInstrumentation().startActivitySync(intent); |
} |
+ private Preferences startSingleWebsitePreferences(Website site) { |
+ Bundle fragmentArgs = new Bundle(); |
+ fragmentArgs.putSerializable(SingleWebsitePreferences.EXTRA_SITE, site); |
+ Intent intent = PreferencesLauncher.createIntentForSettingsPage( |
+ getInstrumentation().getTargetContext(), SingleWebsitePreferences.class.getName()); |
+ intent.putExtra(Preferences.EXTRA_SHOW_FRAGMENT_ARGUMENTS, fragmentArgs); |
+ return (Preferences) getInstrumentation().startActivitySync(intent); |
+ } |
+ |
private void setCookiesEnabled(final Preferences preferenceActivity, final boolean enabled) { |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@Override |
@@ -254,6 +264,27 @@ public class SiteSettingsPreferencesTest extends ChromeActivityTestCaseBase<Chro |
preferenceActivity.finish(); |
} |
+ private void setEnableKeygen(final String origin, final boolean enabled) { |
+ Website website = new Website(WebsiteAddress.create(origin)); |
+ website.setKeygenInfo(new KeygenInfo(origin, origin, false)); |
+ final Preferences preferenceActivity = startSingleWebsitePreferences(website); |
+ |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ SingleWebsitePreferences websitePreferences = |
+ (SingleWebsitePreferences) preferenceActivity.getFragmentForTest(); |
+ ChromeBaseListPreference keygen = |
+ (ChromeBaseListPreference) websitePreferences.findPreference( |
+ SingleWebsitePreferences.PREF_KEYGEN_PERMISSION); |
+ websitePreferences.onPreferenceChange(keygen, enabled |
+ ? ContentSetting.ALLOW.toString() |
+ : ContentSetting.BLOCK.toString()); |
+ } |
+ }); |
+ preferenceActivity.finish(); |
+ } |
+ |
/** |
* Tests that disabling cookies turns off the third-party cookie toggle. |
* @throws Exception |
@@ -351,6 +382,46 @@ public class SiteSettingsPreferencesTest extends ChromeActivityTestCaseBase<Chro |
} |
/** |
+ * Sets Allow Keygen Enabled to be false and make sure it is set correctly. |
+ * @throws Exception |
+ */ |
+ @SmallTest |
+ @Feature({"Preferences"}) |
+ public void testKeygenBlocked() throws Exception { |
+ final String origin = "http://example.com/"; |
+ setEnableKeygen(origin, false); |
+ |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ Website site = new Website(WebsiteAddress.create(origin)); |
+ site.setKeygenInfo(new KeygenInfo(origin, origin, false)); |
+ assertEquals(site.getKeygenPermission(), ContentSetting.BLOCK); |
+ } |
+ }); |
+ } |
+ |
+ /** |
+ * Sets Allow Keygen Enabled to be true and make sure it is set correctly. |
+ * @throws Exception |
+ */ |
+ @SmallTest |
+ @Feature({"Preferences"}) |
+ public void testKeygenNotBlocked() throws Exception { |
+ final String origin = "http://example.com/"; |
+ setEnableKeygen(origin, true); |
+ |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ Website site = new Website(WebsiteAddress.create(origin)); |
+ site.setKeygenInfo(new KeygenInfo(origin, origin, false)); |
+ assertEquals(site.getKeygenPermission(), ContentSetting.ALLOW); |
+ } |
+ }); |
+ } |
+ |
+ /** |
* Sets Allow Camera Enabled to be false and make sure it is set correctly. |
* @throws Exception |
*/ |