michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: michael@0: var prefObserver = { michael@0: setCalledNum: 0, michael@0: onContentPrefSet: function(aGroup, aName, aValue) { michael@0: this.setCalledNum++; michael@0: }, michael@0: removedCalledNum: 0, michael@0: onContentPrefRemoved: function(aGroup, aName) { michael@0: this.removedCalledNum++; michael@0: } michael@0: }; michael@0: michael@0: function run_test() { michael@0: let loadContext = { get usePrivateBrowsing() { return gInPrivateBrowsing; } }; michael@0: michael@0: var cps = new ContentPrefInstance(loadContext); michael@0: cps.removeGroupedPrefs(); michael@0: michael@0: var uri = ContentPrefTest.getURI("http://www.example.com/"); michael@0: var group = cps.grouper.group(uri); michael@0: michael@0: // first, set a pref in normal mode michael@0: cps.setPref(uri, "value", "foo"); michael@0: cps.setPref(null, "value-global", "foo-global"); michael@0: michael@0: var num; michael@0: cps.addObserver("value", prefObserver); michael@0: cps.addObserver("value-global", prefObserver); michael@0: michael@0: enterPBMode(); michael@0: michael@0: // test setPref michael@0: num = prefObserver.setCalledNum; michael@0: cps.setPref(uri, "value", "foo-private-browsing"); michael@0: do_check_eq(cps.hasPref(uri, "value"), true); michael@0: do_check_eq(cps.getPref(uri, "value"), "foo-private-browsing"); michael@0: do_check_eq(prefObserver.setCalledNum, num + 1); michael@0: michael@0: num = prefObserver.setCalledNum; michael@0: cps.setPref(null, "value-global", "foo-private-browsing-global"); michael@0: do_check_eq(cps.hasPref(null, "value-global"), true); michael@0: do_check_eq(cps.getPref(null, "value-global"), "foo-private-browsing-global"); michael@0: do_check_eq(prefObserver.setCalledNum, num + 1); michael@0: michael@0: // test removePref michael@0: num = prefObserver.removedCalledNum; michael@0: cps.removePref(uri, "value"); michael@0: do_check_eq(cps.hasPref(uri, "value"), true); michael@0: // fallback to non private mode value michael@0: do_check_eq(cps.getPref(uri, "value"), "foo"); michael@0: do_check_eq(prefObserver.removedCalledNum, num + 1); michael@0: michael@0: num = prefObserver.removedCalledNum; michael@0: cps.removePref(null, "value-global"); michael@0: do_check_eq(cps.hasPref(null, "value-global"), true); michael@0: // fallback to non private mode value michael@0: do_check_eq(cps.getPref(null, "value-global"), "foo-global") ; michael@0: do_check_eq(prefObserver.removedCalledNum, num + 1); michael@0: michael@0: // test removeGroupedPrefs michael@0: cps.setPref(uri, "value", "foo-private-browsing"); michael@0: cps.removeGroupedPrefs(); michael@0: do_check_eq(cps.hasPref(uri, "value"), false); michael@0: do_check_eq(cps.getPref(uri, "value"), undefined); michael@0: michael@0: cps.setPref(null, "value-global", "foo-private-browsing-global"); michael@0: cps.removeGroupedPrefs(); michael@0: do_check_eq(cps.hasPref(null, "value-global"), true); michael@0: do_check_eq(cps.getPref(null, "value-global"), "foo-private-browsing-global"); michael@0: michael@0: // test removePrefsByName michael@0: num = prefObserver.removedCalledNum; michael@0: cps.setPref(uri, "value", "foo-private-browsing"); michael@0: cps.removePrefsByName("value"); michael@0: do_check_eq(cps.hasPref(uri, "value"), false); michael@0: do_check_eq(cps.getPref(uri, "value"), undefined); michael@0: do_check_true(prefObserver.removedCalledNum > num); michael@0: michael@0: num = prefObserver.removedCalledNum; michael@0: cps.setPref(null, "value-global", "foo-private-browsing"); michael@0: cps.removePrefsByName("value-global"); michael@0: do_check_eq(cps.hasPref(null, "value-global"), false); michael@0: do_check_eq(cps.getPref(null, "value-global"), undefined); michael@0: do_check_true(prefObserver.removedCalledNum > num); michael@0: michael@0: // test getPrefs michael@0: cps.setPref(uri, "value", "foo-private-browsing"); michael@0: do_check_eq(cps.getPrefs(uri).getProperty("value"), "foo-private-browsing"); michael@0: michael@0: cps.setPref(null, "value-global", "foo-private-browsing-global"); michael@0: do_check_eq(cps.getPrefs(null).getProperty("value-global"), "foo-private-browsing-global"); michael@0: michael@0: // test getPrefsByName michael@0: do_check_eq(cps.getPrefsByName("value").getProperty(group), "foo-private-browsing"); michael@0: do_check_eq(cps.getPrefsByName("value-global").getProperty(null), "foo-private-browsing-global"); michael@0: michael@0: cps.removeObserver("value", prefObserver); michael@0: cps.removeObserver("value-global", prefObserver); michael@0: }