Apparently Firefox on Linux changed the value of navigator.appVersion,
causing our OS detection (used to determine how to interpret different
modifier keys) to fail.
Use navigator.platform instead, which should be more stable.
http://stackoverflow.com/a/19883965/33213
Previously we identified keys in keyboard events by the 'key' property
if it was set, and 'keyCode' otherwise.
This turns out to be problematic as Firefox no longer leaves 'key'
undefined (so we fall back to using 'keyCode'), but instead sets 'key'
to 'MozPrintableKey' for all printable keys.
This meant that when (printable) keys are released, we can't match it
against the corresponding keydown event, and instead just send a keyup
event for the last keydown received.
Now, if both 'key' and 'keyCode' are set, use the concatenation of both.
Otherwise prefer 'keyCode', as that is at least unique for every key.
This should let us release the right keys on keyup events.
When shortcut modifiers (modifier keys such as CTRL, which do not participate in
composing character input) are pressed, we try to suppress the keypress
event, as browsers do not reliably generate it. This means that
subsequent key events are decoded only based on the keydown event.
Due to a type error (comparing a string to a number), shift was
mistakenly treated as a shortcut modifier, preventing text input which
relied on shift, such as _ and %, from being generated.
If the files passed to the '-t' option are all '.js' files (or
the 'run all tests' option is used) and the '-i' option is not
passed, all tests will be search for the string
'require local modules: '. Only the first instance of this string
will be used. Following the colon should be a list of either local
modules (i.e. files in the '../include/' folder relative to the
test runner's directory, without the '.js' extension) or paths
to other Javascript files. The list of modules and/or files should
be comma-separated. These files will then be included in the generated
HTML file for the appropriate tests as if the '-i' option had been used.
Now, if the '-t' option is passed but no tests are listed,
all tests in the same directory as the launcher will be run.
A file is considered a test if it matches the RegEx
/^test\.(\w|\.|-)+\.js$/ (for those who cannot read PCRE,
that's roughly 'test.*.js').
The test runner now will not break when Mocha skips tests,
and will properly report them. Additionally, several JSHint
warnings were fixed, and a `--debug` option was added to see
output from the provider.
This allows the keyboard handler to check modifier key state much more frequently
Since some browsers never send keyup events for modifier keys, we have to
synchronize modifier state whenever we get a mouse or keyboard event
Add a node.js-based tool (utils/parse.js) to read keysymdef.h and produce a JavaScript file
mapping Unicode code points to keysyms.
Also add the generated table (include/keysymdef.js).
This commit introduces two flags, '-g' and '-o' to
the `run_from_console.js`. Both flags do not run
the tests. Instead, deal with the autogenerated
HTML. The former outputs the paths to the autogenerated
HTML temp files, and then pauses the program until Ctrl-C
is pressed (or SIGINT is sent). The latter outputs the
generated HTML for each files to STDIN with the names
of the tests to which they belong.
Previously, the only way to run the Mocha tests
(in 'test.*.js') is to write a web page to wrap
them (or use a provided one), and then load that
file in a browser.
This commit introduces a series of files to allow
you to run the Mocha tests from the command line
instead.
Normally, Mocha tests can be run from
the command line anyway. However, since this
project was designed to work in web browsers
and not node, the code doesn't contain the
proper `require` calls, nor does it contain the
proper `module.exports` declarations. Additionally,
some of the code is dependent on having a browser
environment.
To overcome these issues, a headless browser environment
is used. The command file introduced in the commit,
`run_from_console.js`, can use one of two environments:
ZombieJS, a pure-javascript headless browser simulator, or
SpookyJS/CasperJS/PhantomJS, an actually WebKit-based
environment.
Because the environment-dependent code is separated
out in to different files ('run_from_console.zombie.js'
and 'run_from_console.casper.js'), the program can be
safely used if only one of the supported environments
is installed.
Additionally, the command will automatically generate
HTML and inject the required tests if there is no
pre-existing HTML file (although you can still use
pre-existing HTML files if you want to).
The required NPM modules for the base program are:
- commander
- ansi
- mocha (must be installed locally for the HTML files to use)
- chai (must be installed locally for the HTML files to use)
- temp
For Zombie, you need:
- zombie
- q
For Casper, you need:
- casperjs (must be installed locally in order to work properly)
- phantomjs
- phantom
- spooky
The command itself can be invoked as
$ node run_from_console.js -t html_files
or
$ node run_from_console.js -t js_test_files -i js_required_files
In both cases, the 'files' options should be a comma-separated list of
files. The first case runs pre-existing HTML files. The second case
generates HTML files to run the specified Mocha tests, and injects
the requirements specified as well.
Additionally, there are extra arguments that apply to both forms:
'-a' can be used to print all test results, not just the failures,
'-c' may be used to force color to be enabled (when outputting to
a pipe, such as when `less -R` is in use), and '-e' is used to
set the environment. Use the '-h' or '--help' options to see
a detailed description of all options, and their long-form versions.
This patch adds support for the secure attribute on token
cookies (sent by nova-novncproxy). If the https is used
to transfer the cookie, the secure attribute is set thus
restricting server requestes to secure conections only.
This should prevent man-in-the-middle attacks.
- Make the ProjectsCompanies-using-noVNC the canonical source for
companies/project using noVNC and only give a brief summary here.
- Drop the personal Amazon donate/thanks link. Keep the charities and
ask for a tweet if so.
* changed the type of the input field (which is used for bringing up the
on-screen keyboards on touch devices) from email to text
* when typing in an input field of type email the user is not allowed to
write parentheses on iOS devices, the keys are disabled.
* tested on iOS 6, iOS 7 and Android 4.3.