diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-04-14 21:49:04 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-04-14 21:49:04 +0200 |
commit | 39dac57259cff8b61db0b22cb2ad0a8adb02692e (patch) | |
tree | 52a026cc8c22793eb17fd0f5e22adce1ae08a1dd /toolkit/components/contentprefs/tests/unit/test_contentPrefs.js | |
parent | a1cce3b2b00bbd9f4983013ddd8934a7bccb9e99 (diff) | |
parent | c2d9ab62f3d097c9e0e00184cab1f546554f5eaa (diff) | |
download | UXP-39dac57259cff8b61db0b22cb2ad0a8adb02692e.tar UXP-39dac57259cff8b61db0b22cb2ad0a8adb02692e.tar.gz UXP-39dac57259cff8b61db0b22cb2ad0a8adb02692e.tar.lz UXP-39dac57259cff8b61db0b22cb2ad0a8adb02692e.tar.xz UXP-39dac57259cff8b61db0b22cb2ad0a8adb02692e.zip |
Merge branch 'redwood' into 28.9-platform
Diffstat (limited to 'toolkit/components/contentprefs/tests/unit/test_contentPrefs.js')
-rw-r--r-- | toolkit/components/contentprefs/tests/unit/test_contentPrefs.js | 463 |
1 files changed, 0 insertions, 463 deletions
diff --git a/toolkit/components/contentprefs/tests/unit/test_contentPrefs.js b/toolkit/components/contentprefs/tests/unit/test_contentPrefs.js deleted file mode 100644 index f7e99ea9d..000000000 --- a/toolkit/components/contentprefs/tests/unit/test_contentPrefs.js +++ /dev/null @@ -1,463 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -function run_test() { - // Database Creation, Schema Migration, and Backup - - // Note: in these tests we use createInstance instead of getService - // so we can instantiate the service multiple times and make it run - // its database initialization code each time. - - // Create a new database. - { - ContentPrefTest.deleteDatabase(); - - // Get the service and make sure it has a ready database connection. - let cps = Cc["@mozilla.org/content-pref/service;1"]. - createInstance(Ci.nsIContentPrefService); - do_check_true(cps.DBConnection.connectionReady); - cps.DBConnection.close(); - } - - // Open an existing database. - { - let dbFile = ContentPrefTest.deleteDatabase(); - - let cps = Cc["@mozilla.org/content-pref/service;1"]. - createInstance(Ci.nsIContentPrefService); - cps.DBConnection.close(); - do_check_true(dbFile.exists()); - - // Get the service and make sure it has a ready database connection. - cps = Cc["@mozilla.org/content-pref/service;1"]. - createInstance(Ci.nsIContentPrefService); - do_check_true(cps.DBConnection.connectionReady); - cps.DBConnection.close(); - } - - // Open an empty database. - { - let dbFile = ContentPrefTest.deleteDatabase(); - - // Create an empty database. - let dbService = Cc["@mozilla.org/storage/service;1"]. - getService(Ci.mozIStorageService); - let dbConnection = dbService.openDatabase(dbFile); - do_check_eq(dbConnection.schemaVersion, 0); - dbConnection.close(); - do_check_true(dbFile.exists()); - - // Get the service and make sure it has created the schema. - let cps = Cc["@mozilla.org/content-pref/service;1"]. - createInstance(Ci.nsIContentPrefService); - do_check_neq(cps.DBConnection.schemaVersion, 0); - cps.DBConnection.close(); - } - - // Open a corrupted database. - { - let dbFile = ContentPrefTest.deleteDatabase(); - let backupDBFile = ContentPrefTest.deleteBackupDatabase(); - - // Create a corrupted database. - let foStream = Cc["@mozilla.org/network/file-output-stream;1"]. - createInstance(Ci.nsIFileOutputStream); - foStream.init(dbFile, 0x02 | 0x08 | 0x20, 0o666, 0); - let garbageData = "garbage that makes SQLite think the file is corrupted"; - foStream.write(garbageData, garbageData.length); - foStream.close(); - - // Get the service and make sure it backs up and recreates the database. - let cps = Cc["@mozilla.org/content-pref/service;1"]. - createInstance(Ci.nsIContentPrefService); - do_check_true(backupDBFile.exists()); - do_check_true(cps.DBConnection.connectionReady); - - cps.DBConnection.close(); - } - - // Open a database with a corrupted schema. - { - let dbFile = ContentPrefTest.deleteDatabase(); - let backupDBFile = ContentPrefTest.deleteBackupDatabase(); - - // Create an empty database and set the schema version to a number - // that will trigger a schema migration that will fail. - let dbService = Cc["@mozilla.org/storage/service;1"]. - getService(Ci.mozIStorageService); - let dbConnection = dbService.openDatabase(dbFile); - dbConnection.schemaVersion = -1; - dbConnection.close(); - do_check_true(dbFile.exists()); - - // Get the service and make sure it backs up and recreates the database. - let cps = Cc["@mozilla.org/content-pref/service;1"]. - createInstance(Ci.nsIContentPrefService); - do_check_true(backupDBFile.exists()); - do_check_true(cps.DBConnection.connectionReady); - - cps.DBConnection.close(); - } - - - // Now get the content pref service for real for use by the rest of the tests. - let cps = new ContentPrefInstance(null); - - var uri = ContentPrefTest.getURI("http://www.example.com/"); - - // Make sure disk synchronization checking is turned off by default. - var statement = cps.DBConnection.createStatement("PRAGMA synchronous"); - statement.executeStep(); - do_check_eq(0, statement.getInt32(0)); - - // Nonexistent Pref - - do_check_eq(cps.getPref(uri, "test.nonexistent.getPref"), undefined); - do_check_eq(cps.setPref(uri, "test.nonexistent.setPref", 5), undefined); - do_check_false(cps.hasPref(uri, "test.nonexistent.hasPref")); - do_check_eq(cps.removePref(uri, "test.nonexistent.removePref"), undefined); - - - // Existing Pref - - cps.setPref(uri, "test.existing", 5); - - // getPref should return the pref value - do_check_eq(cps.getPref(uri, "test.existing"), 5); - - // setPref should return undefined and change the value of the pref - do_check_eq(cps.setPref(uri, "test.existing", 6), undefined); - do_check_eq(cps.getPref(uri, "test.existing"), 6); - - // hasPref should return true - do_check_true(cps.hasPref(uri, "test.existing")); - - // removePref should return undefined and remove the pref - do_check_eq(cps.removePref(uri, "test.existing"), undefined); - do_check_false(cps.hasPref(uri, "test.existing")); - - - // Round-Trip Data Integrity - - // Make sure pref values remain the same from setPref to getPref. - - cps.setPref(uri, "test.data-integrity.integer", 5); - do_check_eq(cps.getPref(uri, "test.data-integrity.integer"), 5); - - cps.setPref(uri, "test.data-integrity.float", 5.5); - do_check_eq(cps.getPref(uri, "test.data-integrity.float"), 5.5); - - cps.setPref(uri, "test.data-integrity.boolean", true); - do_check_eq(cps.getPref(uri, "test.data-integrity.boolean"), true); - - cps.setPref(uri, "test.data-integrity.string", "test"); - do_check_eq(cps.getPref(uri, "test.data-integrity.string"), "test"); - - cps.setPref(uri, "test.data-integrity.null", null); - do_check_eq(cps.getPref(uri, "test.data-integrity.null"), null); - - // XXX Test arbitrary binary data. - - // Make sure hasPref and removePref work on all data types. - - do_check_true(cps.hasPref(uri, "test.data-integrity.integer")); - do_check_true(cps.hasPref(uri, "test.data-integrity.float")); - do_check_true(cps.hasPref(uri, "test.data-integrity.boolean")); - do_check_true(cps.hasPref(uri, "test.data-integrity.string")); - do_check_true(cps.hasPref(uri, "test.data-integrity.null")); - - do_check_eq(cps.removePref(uri, "test.data-integrity.integer"), undefined); - do_check_eq(cps.removePref(uri, "test.data-integrity.float"), undefined); - do_check_eq(cps.removePref(uri, "test.data-integrity.boolean"), undefined); - do_check_eq(cps.removePref(uri, "test.data-integrity.string"), undefined); - do_check_eq(cps.removePref(uri, "test.data-integrity.null"), undefined); - - do_check_false(cps.hasPref(uri, "test.data-integrity.integer")); - do_check_false(cps.hasPref(uri, "test.data-integrity.float")); - do_check_false(cps.hasPref(uri, "test.data-integrity.boolean")); - do_check_false(cps.hasPref(uri, "test.data-integrity.string")); - do_check_false(cps.hasPref(uri, "test.data-integrity.null")); - - - // getPrefs - - cps.setPref(uri, "test.getPrefs.a", 1); - cps.setPref(uri, "test.getPrefs.b", 2); - cps.setPref(uri, "test.getPrefs.c", 3); - - var prefs = cps.getPrefs(uri); - do_check_true(prefs.hasKey("test.getPrefs.a")); - do_check_eq(prefs.get("test.getPrefs.a"), 1); - do_check_true(prefs.hasKey("test.getPrefs.b")); - do_check_eq(prefs.get("test.getPrefs.b"), 2); - do_check_true(prefs.hasKey("test.getPrefs.c")); - do_check_eq(prefs.get("test.getPrefs.c"), 3); - - - // Site-Specificity - - { - // These are all different sites, and setting a pref for one of them - // shouldn't set it for the others. - let uri1 = ContentPrefTest.getURI("http://www.domain1.com/"); - let uri2 = ContentPrefTest.getURI("http://foo.domain1.com/"); - let uri3 = ContentPrefTest.getURI("http://domain1.com/"); - let uri4 = ContentPrefTest.getURI("http://www.domain2.com/"); - - cps.setPref(uri1, "test.site-specificity.uri1", 5); - do_check_false(cps.hasPref(uri2, "test.site-specificity.uri1")); - do_check_false(cps.hasPref(uri3, "test.site-specificity.uri1")); - do_check_false(cps.hasPref(uri4, "test.site-specificity.uri1")); - - cps.setPref(uri2, "test.site-specificity.uri2", 5); - do_check_false(cps.hasPref(uri1, "test.site-specificity.uri2")); - do_check_false(cps.hasPref(uri3, "test.site-specificity.uri2")); - do_check_false(cps.hasPref(uri4, "test.site-specificity.uri2")); - - cps.setPref(uri3, "test.site-specificity.uri3", 5); - do_check_false(cps.hasPref(uri1, "test.site-specificity.uri3")); - do_check_false(cps.hasPref(uri2, "test.site-specificity.uri3")); - do_check_false(cps.hasPref(uri4, "test.site-specificity.uri3")); - - cps.setPref(uri4, "test.site-specificity.uri4", 5); - do_check_false(cps.hasPref(uri1, "test.site-specificity.uri4")); - do_check_false(cps.hasPref(uri2, "test.site-specificity.uri4")); - do_check_false(cps.hasPref(uri3, "test.site-specificity.uri4")); - } - - // Observers - - var specificObserver = { - interfaces: [Ci.nsIContentPrefObserver, Ci.nsISupports], - - QueryInterface: function ContentPrefTest_QueryInterface(iid) { - if (!this.interfaces.some( function(v) { return iid.equals(v) } )) - throw Cr.NS_ERROR_NO_INTERFACE; - return this; - }, - - numTimesSetCalled: 0, - onContentPrefSet: function specificObserver_onContentPrefSet(group, name, value) { - ++this.numTimesSetCalled; - do_check_eq(group, "www.example.com"); - do_check_eq(name, "test.observer.1"); - do_check_eq(value, "test value"); - }, - - numTimesRemovedCalled: 0, - onContentPrefRemoved: function specificObserver_onContentPrefRemoved(group, name) { - ++this.numTimesRemovedCalled; - do_check_eq(group, "www.example.com"); - do_check_eq(name, "test.observer.1"); - } - - }; - - var genericObserver = { - interfaces: [Ci.nsIContentPrefObserver, Ci.nsISupports], - - QueryInterface: function ContentPrefTest_QueryInterface(iid) { - if (!this.interfaces.some( function(v) { return iid.equals(v) } )) - throw Cr.NS_ERROR_NO_INTERFACE; - return this; - }, - - numTimesSetCalled: 0, - onContentPrefSet: function genericObserver_onContentPrefSet(group, name, value, isPrivate) { - ++this.numTimesSetCalled; - do_check_eq(group, "www.example.com"); - if (name == "test.observer.private") - do_check_true(isPrivate); - else if (name == "test.observer.normal") - do_check_false(isPrivate); - else if (name != "test.observer.1" && name != "test.observer.2") - do_throw("genericObserver.onContentPrefSet: " + - "name not in (test.observer.(1|2|normal|private))"); - do_check_eq(value, "test value"); - }, - - numTimesRemovedCalled: 0, - onContentPrefRemoved: function genericObserver_onContentPrefRemoved(group, name, isPrivate) { - ++this.numTimesRemovedCalled; - do_check_eq(group, "www.example.com"); - if (name == "test.observer.private") - do_check_true(isPrivate); - else if (name == "test.observer.normal") - do_check_false(isPrivate); - if (name != "test.observer.1" && name != "test.observer.2" && - name != "test.observer.normal" && name != "test.observer.private") { - do_throw("genericObserver.onContentPrefSet: " + - "name not in (test.observer.(1|2|normal|private))"); - } - } - - }; - - // Make sure we can add observers, observers get notified about changes, - // specific observers only get notified about changes to the specific setting, - // and generic observers get notified about changes to all settings. - cps.addObserver("test.observer.1", specificObserver); - cps.addObserver(null, genericObserver); - cps.setPref(uri, "test.observer.1", "test value"); - cps.setPref(uri, "test.observer.2", "test value"); - cps.removePref(uri, "test.observer.1"); - cps.removePref(uri, "test.observer.2"); - do_check_eq(specificObserver.numTimesSetCalled, 1); - do_check_eq(genericObserver.numTimesSetCalled, 2); - do_check_eq(specificObserver.numTimesRemovedCalled, 1); - do_check_eq(genericObserver.numTimesRemovedCalled, 2); - - // Make sure information about private context is properly - // retrieved by the observer. - cps.setPref(uri, "test.observer.private", "test value", {usePrivateBrowsing: true}); - cps.setPref(uri, "test.observer.normal", "test value", {usePrivateBrowsing: false}); - cps.removePref(uri, "test.observer.private"); - cps.removePref(uri, "test.observer.normal"); - - // Make sure we can remove observers and they don't get notified - // about changes anymore. - cps.removeObserver("test.observer.1", specificObserver); - cps.removeObserver(null, genericObserver); - cps.setPref(uri, "test.observer.1", "test value"); - cps.removePref(uri, "test.observer.1", "test value"); - do_check_eq(specificObserver.numTimesSetCalled, 1); - do_check_eq(genericObserver.numTimesSetCalled, 4); - do_check_eq(specificObserver.numTimesRemovedCalled, 1); - do_check_eq(genericObserver.numTimesRemovedCalled, 3); - - - // Get/Remove Prefs By Name - - { - var anObserver = { - interfaces: [Ci.nsIContentPrefObserver, Ci.nsISupports], - - QueryInterface: function ContentPrefTest_QueryInterface(iid) { - if (!this.interfaces.some( function(v) { return iid.equals(v) } )) - throw Cr.NS_ERROR_NO_INTERFACE; - return this; - }, - - onContentPrefSet: function anObserver_onContentPrefSet(group, name, value) { - }, - - expectedDomains: [], - numTimesRemovedCalled: 0, - onContentPrefRemoved: function anObserver_onContentPrefRemoved(group, name) { - ++this.numTimesRemovedCalled; - - // remove the domain from the list of expected domains - var index = this.expectedDomains.indexOf(group); - do_check_true(index >= 0); - this.expectedDomains.splice(index, 1); - } - }; - - let uri1 = ContentPrefTest.getURI("http://www.domain1.com/"); - let uri2 = ContentPrefTest.getURI("http://foo.domain1.com/"); - let uri3 = ContentPrefTest.getURI("http://domain1.com/"); - let uri4 = ContentPrefTest.getURI("http://www.domain2.com/"); - - cps.setPref(uri1, "test.byname.1", 1); - cps.setPref(uri1, "test.byname.2", 2); - cps.setPref(uri2, "test.byname.1", 4); - cps.setPref(uri3, "test.byname.3", 8); - cps.setPref(uri4, "test.byname.1", 16); - cps.setPref(null, "test.byname.1", 32); - cps.setPref(null, "test.byname.2", false); - - function enumerateAndCheck(testName, expectedSum, expectedDomains) { - var prefsByName = cps.getPrefsByName(testName); - var enumerator = prefsByName.enumerator; - var sum = 0; - while (enumerator.hasMoreElements()) { - var property = enumerator.getNext().QueryInterface(Components.interfaces.nsIProperty); - sum += parseInt(property.value); - - // remove the domain from the list of expected domains - var index = expectedDomains.indexOf(property.name); - do_check_true(index >= 0); - expectedDomains.splice(index, 1); - } - do_check_eq(sum, expectedSum); - // check all domains have been removed from the array - do_check_eq(expectedDomains.length, 0); - } - - enumerateAndCheck("test.byname.1", 53, - ["foo.domain1.com", null, "www.domain1.com", "www.domain2.com"]); - enumerateAndCheck("test.byname.2", 2, ["www.domain1.com", null]); - enumerateAndCheck("test.byname.3", 8, ["domain1.com"]); - - cps.addObserver("test.byname.1", anObserver); - anObserver.expectedDomains = ["foo.domain1.com", null, "www.domain1.com", "www.domain2.com"]; - - cps.removePrefsByName("test.byname.1"); - do_check_false(cps.hasPref(uri1, "test.byname.1")); - do_check_false(cps.hasPref(uri2, "test.byname.1")); - do_check_false(cps.hasPref(uri3, "test.byname.1")); - do_check_false(cps.hasPref(uri4, "test.byname.1")); - do_check_false(cps.hasPref(null, "test.byname.1")); - do_check_true(cps.hasPref(uri1, "test.byname.2")); - do_check_true(cps.hasPref(uri3, "test.byname.3")); - - do_check_eq(anObserver.numTimesRemovedCalled, 4); - do_check_eq(anObserver.expectedDomains.length, 0); - - cps.removeObserver("test.byname.1", anObserver); - - // Clean up after ourselves - cps.removePref(uri1, "test.byname.2"); - cps.removePref(uri3, "test.byname.3"); - cps.removePref(null, "test.byname.2"); - } - - - // Clear Private Data Pref Removal - - { - let uri1 = ContentPrefTest.getURI("http://www.domain1.com/"); - let uri2 = ContentPrefTest.getURI("http://www.domain2.com/"); - let uri3 = ContentPrefTest.getURI("http://www.domain3.com/"); - - let dbConnection = cps.DBConnection; - - let prefCount = dbConnection.createStatement("SELECT COUNT(*) AS count FROM prefs"); - - let groupCount = dbConnection.createStatement("SELECT COUNT(*) AS count FROM groups"); - - // Add some prefs for multiple domains. - cps.setPref(uri1, "test.removeAllGroups", 1); - cps.setPref(uri2, "test.removeAllGroups", 2); - cps.setPref(uri3, "test.removeAllGroups", 3); - - // Add a global pref. - cps.setPref(null, "test.removeAllGroups", 1); - - // Make sure there are some prefs and groups in the database. - prefCount.executeStep(); - do_check_true(prefCount.row.count > 0); - prefCount.reset(); - groupCount.executeStep(); - do_check_true(groupCount.row.count > 0); - groupCount.reset(); - - // Remove all prefs and groups from the database using the same routine - // the Clear Private Data dialog uses. - cps.removeGroupedPrefs(); - - // Make sure there are no longer any groups in the database and the only pref - // is the global one. - prefCount.executeStep(); - do_check_true(prefCount.row.count == 1); - prefCount.reset(); - groupCount.executeStep(); - do_check_true(groupCount.row.count == 0); - groupCount.reset(); - let globalPref = dbConnection.createStatement("SELECT groupID FROM prefs"); - globalPref.executeStep(); - do_check_true(globalPref.row.groupID == null); - globalPref.reset(); - } -} |