From ca5efc19419bc237fe2dc6cac6048bcfa4b3a2ce Mon Sep 17 00:00:00 2001 From: Andrey Sidorov Date: Fri, 1 Jun 2012 11:57:20 +1000 Subject: [PATCH] KillKlient and ForceScreenSaver requests --- lib/x11/corereqs.js | 15 ++++++++++++ test/core-ForceScreenSaver.js | 43 +++++++++++++++++++++++++++++++++++ test/core-KillKlient.js | 41 +++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 test/core-ForceScreenSaver.js create mode 100644 test/core-KillKlient.js diff --git a/lib/x11/corereqs.js b/lib/x11/corereqs.js index 5309261..d09107e 100644 --- a/lib/x11/corereqs.js +++ b/lib/x11/corereqs.js @@ -608,6 +608,7 @@ module.exports = { } ], + // todo: move up to keep reque GetGeometry: [ function(drawable){ return ['CxSL', [14, 2, drawable]] @@ -624,5 +625,19 @@ module.exports = { ext.borderWith = res[5]; return ext; } + ], + + KillKlient: [ + function(resource) { + return [ 'CxSL', [113, 2, resource] ]; + } + ], + + ForceScreenSaver: [ + function(activate) { + return [ 'CCS', [115, activate?1:0, 1] ]; + } ] + + } diff --git a/test/core-ForceScreenSaver.js b/test/core-ForceScreenSaver.js new file mode 100644 index 0000000..44c79e5 --- /dev/null +++ b/test/core-ForceScreenSaver.js @@ -0,0 +1,43 @@ +var x11 = require('../lib/x11'); +var should = require('should'); +var assert = require('assert'); + +describe('ForceScreenSaver request', function() { + + var display; + var X; + beforeEach(function(done) { + var client = x11.createClient(function(dpy) { + display=dpy; + X = display.client; + done(); + }); + client.on('error', done); + }); + + afterEach(function(done) { + X.terminate(); + X.on('end', done); + X = null; + display = null; + }); + + it('should exist as client member', function(done) { + should.exist(X.ForceScreenSaver); + assert.equal(typeof X.ForceScreenSaver, 'function'); + done(); + }); + + it('should be callable with true parameter', function(done) { + X.ForceScreenSaver(true); + // any way to check if it is running? + done(); + }); + + it('should be callable with false parameter', function(done) { + X.ForceScreenSaver(false); + // any way to check if it is NOT running? + done(); + }); + +}); diff --git a/test/core-KillKlient.js b/test/core-KillKlient.js new file mode 100644 index 0000000..a75d3ee --- /dev/null +++ b/test/core-KillKlient.js @@ -0,0 +1,41 @@ +var x11 = require('../lib/x11'); +var should = require('should'); +var assert = require('assert'); + +describe('KillKlient request', function() { + + var display; + var X; + beforeEach(function(done) { + var client = x11.createClient(function(dpy) { + display=dpy; + X = display.client; + done(); + }); + client.on('error', done); + }); + + afterEach(function(done) { + X.terminate(); + X.on('end', done); + X = null; + display = null; + }); + + it('should exist as client member', function(done) { + should.exist(X.KillKlient); + assert.equal(typeof X.KillKlient, 'function'); + done(); + }); + + it('should terminate other client connection', function(done) { + x11.createClient(function(dpy) { + var otherclient = dpy.client; + var wnd = otherclient.AllocID(); + otherclient.CreateWindow(wnd, dpy.screen[0].root, 0, 0, 1, 1); + otherclient.on('end', done); + X.KillKlient(wnd); + }); + }); + +});