| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 | 
							- /* 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/. */
 
- "use strict";
 
- const { Hotkey } = require("sdk/hotkeys");
 
- const { keyDown } = require("sdk/dom/events/keys");
 
- const { Loader } = require('sdk/test/loader');
 
- const timer = require("sdk/timers");
 
- const winUtils = require("sdk/deprecated/window-utils");
 
- exports["test hotkey: function key"] = function(assert, done) {
 
-   var element = winUtils.activeBrowserWindow.document.documentElement;
 
-   var showHotKey = Hotkey({
 
-     combo: "f1",
 
-     onPress: function() {
 
-       assert.pass("first callback is called");
 
-       assert.equal(this, showHotKey,
 
-         'Context `this` in `onPress` should be the hotkey object');
 
-       keyDown(element, "f2");
 
-       showHotKey.destroy();
 
-     }
 
-   });
 
-   var hideHotKey = Hotkey({
 
-     combo: "f2",
 
-     onPress: function() {
 
-       assert.pass("second callback is called");
 
-       hideHotKey.destroy();
 
-       done();
 
-     }
 
-   });
 
-   keyDown(element, "f1");
 
- };
 
- exports["test hotkey: accel alt shift"] = function(assert, done) {
 
-   var element = winUtils.activeBrowserWindow.document.documentElement;
 
-   var showHotKey = Hotkey({
 
-     combo: "accel-shift-6",
 
-     onPress: function() {
 
-       assert.pass("first callback is called");
 
-       keyDown(element, "accel-alt-shift-6");
 
-       showHotKey.destroy();
 
-     }
 
-   });
 
-   var hideHotKey = Hotkey({
 
-     combo: "accel-alt-shift-6",
 
-     onPress: function() {
 
-       assert.pass("second callback is called");
 
-       hideHotKey.destroy();
 
-       done();
 
-     }
 
-   });
 
-   keyDown(element, "accel-shift-6");
 
- };
 
- exports["test hotkey meta & control"] = function(assert, done) {
 
-   var element = winUtils.activeBrowserWindow.document.documentElement;
 
-   var showHotKey = Hotkey({
 
-     combo: "meta-3",
 
-     onPress: function() {
 
-       assert.pass("first callback is called");
 
-       keyDown(element, "alt-control-shift-b");
 
-       showHotKey.destroy();
 
-     }
 
-   });
 
-   var hideHotKey = Hotkey({
 
-     combo: "Ctrl-Alt-Shift-B",
 
-     onPress: function() {
 
-       assert.pass("second callback is called");
 
-       hideHotKey.destroy();
 
-       done();
 
-     }
 
-   });
 
-   keyDown(element, "meta-3");
 
- };
 
- exports["test hotkey: control-1 / meta--"] = function(assert, done) {
 
-   var element = winUtils.activeBrowserWindow.document.documentElement;
 
-   var showHotKey = Hotkey({
 
-     combo: "control-1",
 
-     onPress: function() {
 
-       assert.pass("first callback is called");
 
-       keyDown(element, "meta--");
 
-       showHotKey.destroy();
 
-     }
 
-   });
 
-   var hideHotKey = Hotkey({
 
-     combo: "meta--",
 
-     onPress: function() {
 
-       assert.pass("second callback is called");
 
-       hideHotKey.destroy();
 
-       done();
 
-     }
 
-   });
 
-   keyDown(element, "control-1");
 
- };
 
- exports["test invalid combos"] = function(assert) {
 
-   assert.throws(function() {
 
-     Hotkey({
 
-       combo: "d",
 
-       onPress: function() {}
 
-     });
 
-   }, "throws if no modifier is present");
 
-   assert.throws(function() {
 
-     Hotkey({
 
-       combo: "alt",
 
-       onPress: function() {}
 
-     });
 
-   }, "throws if no key is present");
 
-   assert.throws(function() {
 
-     Hotkey({
 
-       combo: "alt p b",
 
-       onPress: function() {}
 
-     });
 
-   }, "throws if more then one key is present");
 
- };
 
- exports["test no exception on unmodified keypress"] = function(assert) {
 
-   var element = winUtils.activeBrowserWindow.document.documentElement;
 
-   var someHotkey = Hotkey({
 
-     combo: "control-alt-1",
 
-     onPress: function() {
 
-     }
 
-   });
 
-   keyDown(element, "a");
 
-   assert.pass("No exception throw, unmodified keypress passed");
 
- };
 
- exports["test hotkey: automatic destroy"] = function(assert, done) {
 
-   // Hacky way to be able to create unloadable modules via makeSandboxedLoader.
 
-   let loader = Loader(module);
 
-   
 
-   var called = false;
 
-   var element = loader.require("sdk/deprecated/window-utils").activeBrowserWindow.document.documentElement;
 
-   var hotkey = loader.require("sdk/hotkeys").Hotkey({
 
-     combo: "accel-shift-x",
 
-     onPress: function() {
 
-       called = true;
 
-     }
 
-   });
 
-   
 
-   // Unload the module so that previous hotkey is automatically destroyed
 
-   loader.unload();
 
-   
 
-   // Ensure that the hotkey is really destroyed
 
-   keyDown(element, "accel-shift-x");
 
-   
 
-   timer.setTimeout(function () {
 
-     assert.ok(!called, "Hotkey is destroyed and not called.");
 
-     done();
 
-   }, 0);
 
- };
 
- require("test").run(exports);
 
 
  |