diff -r 000000000000 -r 6474c204b198 dom/permission/tests/unit/test_bug808734.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/permission/tests/unit/test_bug808734.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,62 @@ +const Cu = Components.utils; +const READWRITE = "readwrite"; +const UNKNOWN = "foobar"; + +var gData = [ +// test normal expansion +{ + permission: "contacts", + access: READWRITE, + expected: ["contacts-read", "contacts-create", + "contacts-write"] +}, +// test additional expansion and access not having read+create+write +{ + permission: "settings", + access: READWRITE, + expected: ["settings-read", "settings-write", + "indexedDB-chrome-settings-read", + "indexedDB-chrome-settings-write"] +}, +// test substitute +{ + permission: "storage", + expected: ["indexedDB-unlimited", + "default-persistent-storage"] +}, +// test unknown access +{ + permission: "contacts", + access: UNKNOWN, + expected: [] +}, +// test unknown permission +{ + permission: UNKNOWN, + access: READWRITE, + expected: [] +} +]; + +// check if 2 arrays contain the same elements +function do_check_set_eq(a1, a2) { + do_check_eq(a1.length, a2.length) + + Array.sort(a1); + Array.sort(a2); + + for (let i = 0; i < a1.length; ++i) { + do_check_eq(a1[i], a2[i]) + } +} + +function run_test() { + var scope = {}; + Cu.import("resource://gre/modules/PermissionsTable.jsm", scope); + + for (var i = 0; i < gData.length; i++) { + var perms = scope.expandPermissions(gData[i].permission, + gData[i].access); + do_check_set_eq(perms, gData[i].expected); + } +}