diff --git a/gpii/node_modules/alsa/alsa_bridge.js b/gpii/node_modules/alsa/alsa_bridge.js index a80f5ac..cea1387 100644 --- a/gpii/node_modules/alsa/alsa_bridge.js +++ b/gpii/node_modules/alsa/alsa_bridge.js @@ -16,7 +16,7 @@ "use strict"; -var fluid = require("universal"); +var fluid = require("gpii-universal"); var gpii = fluid.registerNamespace("gpii"); var alsa = require("./nodealsa/build/Release/nodealsa.node"); diff --git a/gpii/node_modules/alsa/nodealsa/nodealsa_tests.js b/gpii/node_modules/alsa/nodealsa/nodealsa_tests.js index bd6c02c..1d74142 100644 --- a/gpii/node_modules/alsa/nodealsa/nodealsa_tests.js +++ b/gpii/node_modules/alsa/nodealsa/nodealsa_tests.js @@ -16,7 +16,7 @@ "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), jqUnit = fluid.require("node-jqunit"), alsa = require("./build/Release/nodealsa.node"); diff --git a/gpii/node_modules/alsa/test/alsaSettingsHandlerTests.js b/gpii/node_modules/alsa/test/alsaSettingsHandlerTests.js index 0f93256..d940fec 100644 --- a/gpii/node_modules/alsa/test/alsaSettingsHandlerTests.js +++ b/gpii/node_modules/alsa/test/alsaSettingsHandlerTests.js @@ -16,7 +16,7 @@ "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), jqUnit = fluid.require("node-jqunit"); require("alsa"); diff --git a/gpii/node_modules/gsettingsBridge/gsettings_bridge.js b/gpii/node_modules/gsettingsBridge/gsettings_bridge.js index 8ce8681..711677c 100644 --- a/gpii/node_modules/gsettingsBridge/gsettings_bridge.js +++ b/gpii/node_modules/gsettingsBridge/gsettings_bridge.js @@ -16,7 +16,7 @@ "use strict"; -var fluid = require("universal"); +var fluid = require("gpii-universal"); var gpii = fluid.registerNamespace("gpii"); var nodeGSettings = require("./nodegsettings/build/Release/nodegsettings.node"); diff --git a/gpii/node_modules/gsettingsBridge/tests/gsettingsTests.js b/gpii/node_modules/gsettingsBridge/tests/gsettingsTests.js index d052953..5928882 100644 --- a/gpii/node_modules/gsettingsBridge/tests/gsettingsTests.js +++ b/gpii/node_modules/gsettingsBridge/tests/gsettingsTests.js @@ -16,7 +16,7 @@ "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), gpii = fluid.registerNamespace("gpii"), jqUnit = fluid.require("node-jqunit"); diff --git a/gpii/node_modules/orca/orcaSettingsHandler.js b/gpii/node_modules/orca/orcaSettingsHandler.js index d52337c..683d850 100644 --- a/gpii/node_modules/orca/orcaSettingsHandler.js +++ b/gpii/node_modules/orca/orcaSettingsHandler.js @@ -18,7 +18,7 @@ "use strict"; -var fluid = require("universal"); +var fluid = require("gpii-universal"); var gpii = fluid.registerNamespace("gpii"); var fs = require("fs"); var spawn = require("child_process").spawn; diff --git a/gpii/node_modules/orca/test/orcaSettingsHandlerTests.js b/gpii/node_modules/orca/test/orcaSettingsHandlerTests.js index fef1f70..838b97e 100644 --- a/gpii/node_modules/orca/test/orcaSettingsHandlerTests.js +++ b/gpii/node_modules/orca/test/orcaSettingsHandlerTests.js @@ -17,7 +17,7 @@ "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), jqUnit = fluid.require("node-jqunit"); require("orca"); diff --git a/gpii/node_modules/packagekit/index.js b/gpii/node_modules/packagekit/index.js index e497b7d..dddf29e 100644 --- a/gpii/node_modules/packagekit/index.js +++ b/gpii/node_modules/packagekit/index.js @@ -16,7 +16,7 @@ "use strict"; -var fluid = require("universal"); +var fluid = require("gpii-universal"); require("./packageKitDeviceReporter.js"); diff --git a/gpii/node_modules/packagekit/nodepackagekit/nodepackagekit_test.js b/gpii/node_modules/packagekit/nodepackagekit/nodepackagekit_test.js index df58763..3115834 100644 --- a/gpii/node_modules/packagekit/nodepackagekit/nodepackagekit_test.js +++ b/gpii/node_modules/packagekit/nodepackagekit/nodepackagekit_test.js @@ -14,7 +14,7 @@ https://github.com/gpii/universal/LICENSE.txt "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), jqUnit = fluid.require("node-jqunit"), gpii = fluid.registerNamespace("gpii"), packagekit = require("./build/Release/nodepackagekit.node"); diff --git a/gpii/node_modules/packagekit/packageKitDeviceReporter.js b/gpii/node_modules/packagekit/packageKitDeviceReporter.js index 3f75954..eda347e 100644 --- a/gpii/node_modules/packagekit/packageKitDeviceReporter.js +++ b/gpii/node_modules/packagekit/packageKitDeviceReporter.js @@ -16,7 +16,7 @@ "use strict"; -var fluid = require("universal"); +var fluid = require("gpii-universal"); var gpii = fluid.registerNamespace("gpii"); var packageKit = require("./nodepackagekit/build/Release/nodepackagekit.node"); diff --git a/gpii/node_modules/packagekit/test/all-tests.js b/gpii/node_modules/packagekit/test/all-tests.js index f5e88b9..d5e54cc 100644 --- a/gpii/node_modules/packagekit/test/all-tests.js +++ b/gpii/node_modules/packagekit/test/all-tests.js @@ -11,7 +11,7 @@ */ "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), kettle = fluid.require("kettle"); kettle.loadTestingSupport(); diff --git a/gpii/node_modules/packagekit/test/packageKitDeviceReporterTests.js b/gpii/node_modules/packagekit/test/packageKitDeviceReporterTests.js index 079057e..8bb845d 100644 --- a/gpii/node_modules/packagekit/test/packageKitDeviceReporterTests.js +++ b/gpii/node_modules/packagekit/test/packageKitDeviceReporterTests.js @@ -15,7 +15,7 @@ */ "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), gpii = fluid.registerNamespace("gpii"), jqUnit = fluid.require("node-jqunit"); diff --git a/gpii/node_modules/packagekit/test/packageKitModuleTests.js b/gpii/node_modules/packagekit/test/packageKitModuleTests.js index 5d95122..373ffe9 100644 --- a/gpii/node_modules/packagekit/test/packageKitModuleTests.js +++ b/gpii/node_modules/packagekit/test/packageKitModuleTests.js @@ -15,7 +15,7 @@ */ "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), jqUnit = fluid.require("node-jqunit"); require("packagekit"); diff --git a/gpii/node_modules/xrandr/nodexrandr/nodexrandr.cc b/gpii/node_modules/xrandr/nodexrandr/nodexrandr.cc index 124d48a..b9f4d85 100644 --- a/gpii/node_modules/xrandr/nodexrandr/nodexrandr.cc +++ b/gpii/node_modules/xrandr/nodexrandr/nodexrandr.cc @@ -206,15 +206,14 @@ NAN_METHOD(getDisplays) { } v8::Local available_resolutions = Nan::New(); - char *resolution; for (int j=0; jnmode; j++) { XRRModeInfo *mode = find_mode_by_xid(output_info->modes[j], res); - asprintf(&resolution, "%dx%d", mode->width, mode->height); - available_resolutions->Set(j, Nan::Encode(resolution, - strlen(resolution), - Nan::UTF8)); - free(resolution); - resolution = NULL; + v8::Local aResolution = Nan::New(); + aResolution->Set(Nan::New("width").ToLocalChecked(), + Nan::New(mode->width)); + aResolution->Set(Nan::New("height").ToLocalChecked(), + Nan::New(mode->height)); + available_resolutions->Set(j, aResolution); } output->Set(Nan::New("available_resolutions").ToLocalChecked(), available_resolutions); diff --git a/gpii/node_modules/xrandr/nodexrandr/nodexrandr_tests.js b/gpii/node_modules/xrandr/nodexrandr/nodexrandr_tests.js index 56358be..3ecbb9f 100644 --- a/gpii/node_modules/xrandr/nodexrandr/nodexrandr_tests.js +++ b/gpii/node_modules/xrandr/nodexrandr/nodexrandr_tests.js @@ -16,22 +16,10 @@ "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), jqUnit = fluid.require("node-jqunit"), xrandr = require("./build/Release/nodexrandr.node"); -var convert = fluid.registerNamespace("gpii.tests.xrandr.convert"); -convert.toString = function (size) { - return size.width + "x" + size.height; -}; -convert.toSize = function (sizeString) { - var wPos = sizeString.indexOf("x"); - return { - width: parseInt(sizeString.substring(0, wPos), 10), - height: parseInt(sizeString.substring(wPos + 1), 10) - }; -}; - jqUnit.module("GPII Xrandr Module"); jqUnit.test("Running tests for Xrandr Bridge", function () { @@ -57,13 +45,13 @@ jqUnit.test("Running tests for Xrandr Bridge", function () { jqUnit.assertFalse("Checking 'setScreenResolution' with impossible size", xrandr.setScreenResolution(-1, -1)); - // Convert the current resolution to a string, and see if there is a - // different available resolution to test setScreenResolution(). + // See if there is a different available resolution to test + // setScreenResolution(). // - var resolution0 = convert.toString(display.resolution); + var resolution0 = display.resolution; var newResolution = fluid.find(display.available_resolutions, function (aResolution) { if (resolution0 !== aResolution) { - return (convert.toSize(aResolution)); + return aResolution; } }, null); if (newResolution !== null) { diff --git a/gpii/node_modules/xrandr/package.json b/gpii/node_modules/xrandr/package.json index db36442..31531cc 100644 --- a/gpii/node_modules/xrandr/package.json +++ b/gpii/node_modules/xrandr/package.json @@ -3,6 +3,9 @@ "description": "The xrandrBridge is a Node.js implementation of Xrandr.", "version": "0.1.0", "author": "Javier Hernández", + "contributors": [{ + "name": "Joseph Scheuhammer" + }], "bugs": "http://wiki.gpii.net/index.php/Main_Page", "homepage": "http://gpii.net/", "dependencies": {}, diff --git a/gpii/node_modules/xrandr/test/xrandrSettingsHandlerTests.js b/gpii/node_modules/xrandr/test/xrandrSettingsHandlerTests.js index 936929b..80f7cfa 100644 --- a/gpii/node_modules/xrandr/test/xrandrSettingsHandlerTests.js +++ b/gpii/node_modules/xrandr/test/xrandrSettingsHandlerTests.js @@ -2,6 +2,7 @@ * GPII Xrandr Settings Handler Tests * * Copyright 2013 Emergya + * Copyright 2016 OCAD University * * Licensed under the New BSD license. You may not use this file except in * compliance with this License. @@ -16,43 +17,122 @@ "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), jqUnit = fluid.require("node-jqunit"); require("xrandr"); +var gpii = fluid.registerNamespace("gpii"); var xrandr = fluid.registerNamespace("gpii.xrandr"); +var xrandrTests = fluid.registerNamespace("gpii.xrandr.tests"); -jqUnit.module("GPII Xrandr Module"); +// Mock settings payload +xrandrTests.payload = { + "org.freedesktop.xrandr": [{ + settings: { + "screen-resolution": {"width": 800, "height": 600} + } + }] +}; -jqUnit.test("Running tests for Xrandr Bridge", function () { - // Check if all required methods are available through the - // Xrandr Settings Handler. - // - var methods = ["getScreenResolution", "setScreenResolution", "get", "set"]; - for (var method in methods) { - jqUnit.assertTrue("Checking availability of method '" + method + "'", - (methods[method] in xrandr)); +xrandrTests.getImplTestData = { + "screen-resolution": { + get: "gpii.xrandr.tests.getScreenResolution", } +}; - var payload = { +gpii.xrandr.tests.getScreenResolution = function () { + var anXRandR = xrandr(); + return anXRandR.getScreenResolution(); +}; + +var XRandR = xrandr(); +jqUnit.module("GPII XRandR Module"); + +jqUnit.test("XRandR Bridge: Get connected display", function () { + var connectedDisplay = XRandR.getConnectedDisplay(); + jqUnit.assertNotNull("Getting connected display", connectedDisplay); + jqUnit.assertEquals("Connected display", "connected", connectedDisplay.status); +}); + +jqUnit.test("XRandR Bridge: Get screen resolution", function () { + var screenResolution = XRandR.getScreenResolution(); + jqUnit.assertNotNull("Getting current screen resolution", screenResolution); + jqUnit.assertNotEquals("Current screen width", 0, screenResolution.width); + jqUnit.assertNotEquals("Current screen height", 0, screenResolution.height); +}); + +jqUnit.test("XRandR Bridge: Available screen resolutions", function () { + var availableReesolutions = XRandR.getAvailableResolutions(); + jqUnit.assertNotNull("Available resoiultions array", availableReesolutions); + jqUnit.assertNotEquals("Number of availableReesolutions", + 0, availableReesolutions.length); +}); + +jqUnit.test("XRandR Bridge: All screen resolutions", function () { + var current = XRandR.getScreenResolution(); + var available = XRandR.getAvailableResolutions(); + var all = XRandR.getAllScreenResolutions(); + jqUnit.assertDeepEq("All screen resolutions contains current resolution", + current, all["screen-resolution"]); + jqUnit.assertDeepEq("All screen resolutions contains available resolution", + available, all["available-resolutions"]); +}); + +jqUnit.test("XRandR Bridge: Set screen resolution", function () { + var currentRez = XRandR.getScreenResolution(); + var availableRez = XRandR.getAvailableResolutions(); + var newRez = fluid.copy(currentRez); + if (availableRez.length > 1) { + newRez = availableRez[1]; + } + XRandR.setScreenResolution(newRez); + var sctualRez = XRandR.getScreenResolution(); + jqUnit.assertDeepEq("Set to new resolution", newRez, sctualRez); + + XRandR.setScreenResolution(currentRez); + var sctualRez = XRandR.getScreenResolution(); + jqUnit.assertDeepEq("Reset to original resolution", currentRez, sctualRez); +}); + +jqUnit.test("XRandR Bridge: getImpl()", function () { + // Call without passing a settingsRequest. The current screen resolution + // is expected. + var actualSettings = XRandR.getImpl(); + var expectedSettings = XRandR.getAllScreenResolutions(); + jqUnit.assertDeepEq("Return value of getImpl() with no input", + expectedSettings["screen-resolution"], + actualSettings["screen-resolution"]); + + // Call with a test settingsRequest. + var actualSettings = XRandR.getImpl(xrandrTests.getImplTestData); + jqUnit.assertDeepEq("Return value of getImpl() with an input", + expectedSettings["screen-resolution"], + actualSettings["screen-resolution"]); +}); + +jqUnit.test("XRandR Bridge: get() with mock settings payload", function () { + var actual = XRandR.get(xrandrTests.payload); + var screenResolution = {}; + fluid.set(screenResolution, "screen-resolution", XRandR.getScreenResolution()); + var expected = { "org.freedesktop.xrandr": [{ - settings: { - "screen-resolution": {"width": 800, "height": 600} - } + "settings": screenResolution }] }; + jqUnit.assertDeepEq("Return value of get", expected, actual); +}); - var returnPayload = xrandr.set(payload); - +jqUnit.test("XRandR Bridge: set() with mock settings payload", function () { + var returnPayload = XRandR.set(xrandrTests.payload); jqUnit.assertDeepEq("The resolution is being setted well", returnPayload["org.freedesktop.xrandr"][0].settings["screen-resolution"].newValue, - payload["org.freedesktop.xrandr"][0].settings["screen-resolution"]); + xrandrTests.payload["org.freedesktop.xrandr"][0].settings["screen-resolution"]); - var newPayload = fluid.copy(payload); + var newPayload = fluid.copy(xrandrTests.payload); newPayload["org.freedesktop.xrandr"][0].settings["screen-resolution"] = returnPayload["org.freedesktop.xrandr"][0].settings["screen-resolution"].oldValue; - var lastPayload = xrandr.set(newPayload); + var lastPayload = XRandR.set(newPayload); jqUnit.assertDeepEq("The resolution is being restored well", returnPayload["org.freedesktop.xrandr"][0].settings["screen-resolution"].oldValue, diff --git a/gpii/node_modules/xrandr/xrandr_bridge.js b/gpii/node_modules/xrandr/xrandr_bridge.js index b54442f..a3440fd 100644 --- a/gpii/node_modules/xrandr/xrandr_bridge.js +++ b/gpii/node_modules/xrandr/xrandr_bridge.js @@ -2,6 +2,7 @@ * GPII Node.js Xrandr Bridge * * Copyright 2013 Emergya + * Copyright 2017 Inclusive Design Reserach Centre, OCAD University * * Licensed under the New BSD license. You may not use this file except in * compliance with this License. @@ -17,43 +18,90 @@ "use strict"; -var fluid = require("universal"); +var fluid = require("gpii-universal"); var gpii = fluid.registerNamespace("gpii"); -var xrandr = require("./nodexrandr/build/Release/nodexrandr.node"); +var nodeXrandr = require("./nodexrandr/build/Release/nodexrandr.node"); fluid.registerNamespace("gpii.xrandr"); -fluid.defaults("gpii.xrandr.getScreenResolution", { - gradeNames: "fluid.function", - argumentMap: { - } -}); - -fluid.defaults("gpii.xrandr.setScreenResolution", { - gradeNames: "fluid.function", - argumentMap: { - value: 0 +fluid.defaults("gpii.xrandr", { + gradeNames: ["fluid.component"], + invokers: { + getConnectedDisplay: { + funcName: "gpii.xrandr.getConnectedDisplay", + args: [] + }, + getScreenResolution: { + funcName: "gpii.xrandr.getScreenResolution", + args: [] + }, + getAvailableResolutions: { + funcName: "gpii.xrandr.getAvailableResolutions", + args: ["{that}"] + }, + getAllScreenResolutions: { + funcName: "gpii.xrandr.getAllScreenResolutions", + args: [] + }, + setScreenResolution: { + funcName: "gpii.xrandr.setScreenResolution", + args: ["{that}", "{arguments}.0"] + // { width, height } + }, + getImpl: { + funcName: "gpii.xrandr.getImpl", + args: ["{arguments}.0"] + // settingsRequest payload + }, + get: { + funcName: "gpii.xrandr.get", + args: ["{arguments}.0"] + // array of settings + }, + set: { + funcName: "gpii.xrandr.set", + args: ["{arguments}.0"] + // array of settings + } } }); -gpii.xrandr.getScreenResolution = function () { - var displayInfo = xrandr.getDisplays(); - var connectedDisplay = fluid.find_if(displayInfo, function (display) { +gpii.xrandr.getConnectedDisplay = function () { + var displayInfo = nodeXrandr.getDisplays(); + return fluid.find_if(displayInfo, function (display) { return display.status === "connected"; }, displayInfo[0]); +}; +gpii.xrandr.getScreenResolution = function () { + var connectedDisplay = gpii.xrandr.getConnectedDisplay(); return { width: connectedDisplay.resolution.width, height: connectedDisplay.resolution.height }; }; -gpii.xrandr.setScreenResolution = function (value) { - var current = gpii.xrandr.getScreenResolution(); - if (JSON.stringify(value) === JSON.stringify(current)) { +gpii.xrandr.getAvailableResolutions = function (that) { + var connectedDisplay = that.getConnectedDisplay(); + return connectedDisplay.available_resolutions; +}; + +gpii.xrandr.getAllScreenResolutions = function () { + var xrandr = gpii.xrandr(); + var currentResolution = xrandr.getScreenResolution(); + var available = xrandr.getAvailableResolutions(); + return { + "screen-resolution" : currentResolution, + "available-resolutions": available + }; +}; + +gpii.xrandr.setScreenResolution = function (that, size) { + var current = that.getScreenResolution(); + if (fluid.model.diff(size, current)) { return true; } else { - return xrandr.setScreenResolution(value.width, value.height); + return nodeXrandr.setScreenResolution(size.width, size.height); } }; @@ -83,7 +131,6 @@ gpii.xrandr.get = function (settingsarray) { for (var appId in app) { for (var j = 0; j < app[appId].length; j++) { var settings = gpii.xrandr.getImpl(app[appId][j].settings); - var noOptions = { settings: settings }; app[appId][j] = noOptions; } @@ -99,11 +146,12 @@ gpii.xrandr.set = function (settingsarray) { for (var settingKey in settings) { var value = settings[settingKey]; + var xrandr = gpii.xrandr(); var oldValue; if (settingKey === "screen-resolution") { - oldValue = gpii.xrandr.getScreenResolution(); - gpii.xrandr.setScreenResolution(value); + oldValue = xrandr.getScreenResolution(); + xrandr.setScreenResolution(value); } else { var err = "Invalid key: " + settingKey; fluid.fail(err); diff --git a/index.js b/index.js index cb2ad0b..4aa225b 100644 --- a/index.js +++ b/index.js @@ -17,7 +17,7 @@ "use strict"; -var fluid = require("universal"); +var fluid = require("gpii-universal"); fluid.module.register("gpii-linux", __dirname, require); diff --git a/package.json b/package.json index ce76527..941136c 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "bugs": "http://issues.gpii.net/browse/GPII", "homepage": "http://gpii.net/", "dependencies": { - "universal": "GPII/universal#1a3434d970cb484956eb18310683bdfe473123d6" + "gpii-universal": "0.3.0-dev.20180221T093422Z.50833c1" }, "devDependencies": { "grunt": "1.0.1", @@ -15,7 +15,7 @@ "grunt-shell": "1.3.0", "nan": "2.4.0" }, - "license" : "BSD-3-Clause", + "license": "BSD-3-Clause", "keywords": [ "gpii", "accessibility", diff --git a/tests/AcceptanceTests.js b/tests/AcceptanceTests.js index d1ca5f8..19baac2 100644 --- a/tests/AcceptanceTests.js +++ b/tests/AcceptanceTests.js @@ -16,7 +16,7 @@ Seventh Framework Programme (FP7/2007-2013) under grant agreement no. 289016. "use strict"; -var fluid = require("universal"), +var fluid = require("gpii-universal"), gpii = fluid.registerNamespace("gpii"); gpii.loadTestingSupport(); @@ -25,7 +25,7 @@ fluid.registerNamespace("gpii.acceptanceTesting.linux"); require("../index.js"); -var baseDir = fluid.module.resolvePath("%universal/tests/"); -var linuxFiles = fluid.require("%universal/tests/platform/index-linux.js"); +var baseDir = fluid.module.resolvePath("%gpii-universal/tests/"); +var linuxFiles = fluid.require("%gpii-universal/tests/platform/index-linux.js"); gpii.test.runSuitesWithFiltering(linuxFiles, baseDir, ["gpii.test.acceptance.testCaseHolder"]);