Solly Ross [Mon, 5 May 2014 18:29:29 +0000 (14:29 -0400)]
Fix for scroll offset in Util.getPosition()
Previously, Util.getPosition didn't deal with scrolling
particularly well. This fixes that by calculating the
scroll offset when dealing with getting mouse positions.
Credit to @erikgull and @emmar for the initial version of
the fix. Credit to Brian Huismanfor the initial code.
Credit for this fix goes to Jesper Dam (https://github.com/Medical-Insight/noVNC/tree/fix-ie10-keyboard).
Fix keyboard handling for IE10 (issue #352)
* Keyboard events in IE10 do not provide any useful information on the properties 'which', 'char' or 'charCode'. Instead, it seems to store the char code in the keyCode property.
Changing the type of the keyboardinput element to textarea, fixes issue 356.
* The on-screen keyboard not closing when pressing Enter is more important than not having textsuggestions etc.
Attempt to change the behavior of the enter/go-key on touch devices, we want it to be Enter.
* This code works in Firefox on Android and on Chrome and Safari on iOS.
* It does not work in Chrome on Android, the enter key is labled "Go" and closes the on screen keyboard when pressed.
samhed [Wed, 26 Mar 2014 14:24:50 +0000 (15:24 +0100)]
Added alt-values to the control-bar buttons.
* On slow servers where the button-images can be slowly loaded it can be useful to see some relevant text instead of "Submit query" on every button.
Jesper Dam [Wed, 12 Mar 2014 10:11:52 +0000 (11:11 +0100)]
Better browser OS detection.
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.
Jesper Dam [Wed, 12 Mar 2014 09:08:14 +0000 (10:08 +0100)]
Better key identifiers
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.
A facke connection to 'wss://localhost:17523' (randomly chosen) to detect
the WebSocket binary support is not the best solution.
First of all, check of prototype has the property 'binaryType'. If not,
perform a dummy connection to 'wss://.' instead of 'wss://localhost:17523'.
This patch was inspired by the discussion and implementation of Modernizr:
https://github.com/Modernizr/Modernizr/issues/370
https://github.com/Modernizr/Modernizr/blob/master/feature-detects/websockets/binary.js
Jesper Dam [Mon, 6 Jan 2014 12:59:25 +0000 (13:59 +0100)]
Fix issue #326: correct handling of shift key
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.
Solly Ross [Tue, 17 Dec 2013 23:00:57 +0000 (18:00 -0500)]
Support 'requires' Line in Test Runner
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.
Solly Ross [Tue, 17 Dec 2013 23:00:45 +0000 (18:00 -0500)]
Support Running All Tests
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').
Solly Ross [Tue, 17 Dec 2013 22:56:18 +0000 (17:56 -0500)]
Support Skipped Tests and Fix JSHint Issues
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.
Solly Ross [Wed, 4 Dec 2013 20:39:20 +0000 (15:39 -0500)]
Add support for Outputting Autogenerated Test HTML
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.
Solly Ross [Tue, 3 Dec 2013 20:33:34 +0000 (15:33 -0500)]
Support Running Mocha Tests from the Console
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
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.
Takashi Natsume [Mon, 28 Oct 2013 12:02:30 +0000 (12:02 +0000)]
Adds support for secure attribute on token cookie
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.
samhed [Wed, 9 Oct 2013 09:35:43 +0000 (11:35 +0200)]
Fix so that parentheses can be written from iOS devices.
* 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.
samhed [Fri, 30 Aug 2013 13:41:46 +0000 (15:41 +0200)]
Added a new file for the key symbols, using the well recognized names for the constants from X11:
* The list is found in /usr/include/X11/keysymdef.h
* I did only include the most common symbols for now..
* On low resolution devices the status text is now justified to the left
button group instead of centered.
* On low resolution devices the padding towards the edges of the screen of
the left and right button groups are now removed.
* Since the status_bar was merged into the control-bar the actual status_bar
element became redundant and was therefor removed.
* Improved the style of the control-bar when there is an error or a warning.
* Implemented a fix so that vnc_auto.html works as intended with the improved
screen real estate patch.
Samuel Mannehed [Tue, 25 Jun 2013 15:45:43 +0000 (17:45 +0200)]
to make double clicking on touch devices easier a double click is now triggered when two mouse clicks occur within 500 milli seconds and closer than 50 pixels together
- Update both the submodule and the swf build. The submodule now
contains the unobfuscated source for swfobject.js which should make
websockify more DFSG compliant.
- Remove Hixie support. iOS 6 now includes HyBi support which means
there is no remaining platform that needs Hixie.