1. 08 Sep, 2010 3 commits
    • Joel Martin's avatar
      License header cleanup. · 5f409eee
      Joel Martin authored
      5f409eee
    • Joel Martin's avatar
      web-socket-js: 9e7663771 build and remove source. · 2a6018df
      Joel Martin authored
      web-socket-js now has all the functionality and fixes needed for noVNC
      so remove the include/as3crypto_patched directory and the
      include/web-socket-js/flash-src directory (i.e. the sources for
      web-socket-js). This cleans up almost 3K from the include/ directory.
      
      Update to web-socket-js build based on upstream (gimite/web-socket-js)
      9e766377188.
      2a6018df
    • Joel Martin's avatar
      JSLint. · d595e656
      Joel Martin authored
      d595e656
  2. 22 Jul, 2010 2 commits
    • Joel Martin's avatar
      JSLint. RFB obj to rfb.js; vnc.js the 'loader'. · a7a89626
      Joel Martin authored
      Move the whole RFB object to rfb.js. vnc.js is now just the loader
      file. This allows an integrating project to easily replace vnc.js with
      an alternate loader mechanism (or just do it directly in the html
      file). Thanks for the idea primalmotion (http://github.com/primalmotion).
      
      Also, JSLint the various files.
      a7a89626
    • Joel Martin's avatar
      API changes. Client cursor and settings menu. · da6dd893
      Joel Martin authored
      The following API changes may affect integrators:
      
          - Settings have been moved out of the RFB.connect() call. Each
            setting now has it's own setter function: setEncrypt, setBase64,
            setTrueColor, setCursor.
      
          - Encrypt and cursor settings now default to on.
      
          - CSS changes:
              - VNC_status_bar for input buttons switched to a element class.
      
              - VNC_buttons split into VNC_buttons_right and
                VNC_buttons_left
      
              - New id styles for VNC_settings_menu and VNC_setting
      
      Note: the encrypt, true_color and cursor, logging setting can all be
        set on load using query string variables (in addition to host, port
        and password).
      
      Client cursor (cursor pseudo-encoding) support has been polished and
      activated.
      
      The RFB settings are now presented as radio button list items in
      a drop-down "Settings" menu when using the default controls.
      
      Also, in the settings menu is the ability to select between alternate
      style-sheets.
      
      Cookie and stylesheet selection support added to util.js.
      da6dd893
  3. 20 Jul, 2010 2 commits
    • Joel Martin's avatar
      Fail if initial server connection fails. · f55b6b41
      Joel Martin authored
      f55b6b41
    • Joel Martin's avatar
      Add Cursor pseudo-encoding support (disabled for now). · 2c2b492c
      Joel Martin authored
      To change the appearance of the cursor, we use the CSS cursor style
      and set the url to a data URI scheme. The image data sent via the
      cursor pseudo-encoding has to be encoded to a CUR format file before
      being used in the data URI.
      
      During Canvas initialization we try and set a simple cursor to see if
      the browser has support. Opera is missing support for data URI scheme
      in cursor URLs.
      
      Disabled for now until we have a better way of specifying settings
      overall (too many settings for control bar now).
      2c2b492c
  4. 16 Jul, 2010 1 commit
    • Joel Martin's avatar
      State machine refactoring. · f00b1e37
      Joel Martin authored
      Add new states 'loaded', 'connect' and 'fatal':
      - Loaded state is first page state. Pass WebSockets mode message using
        this state.
      - Connect indicates that the user has issued a "connect" but we
        haven't gotten an WebSockets onopen yet.
      - Fatal is a condition that indicates inability to continue on: right
        now, lack of WebSockets/Flash or non-working canvas.
      
      Move much of the actual state transition code into updateState.
      
      Handle 'password' state better in default_controls.js; instead of
      disconnecting, prompt for password to send.
      
      Add comments to updateState indicating possible states.
      f00b1e37
  5. 14 Jul, 2010 1 commit
  6. 13 Jul, 2010 1 commit
  7. 06 Jul, 2010 1 commit
    • Joel Martin's avatar
      Refactor console logging code. · 81e5adaf
      Joel Martin authored
      Util.Debug, Util.Info, Util.Warn, Util.Error routines instead of
      direct calls to console.*. Add "logging=XXX" query variable that sets
      the logging level (default is "warn").
      
      Logging values:
          debug: code debug logging (many calls in performance path are also
                 commented for performance reasons).
          info: informative messages including timing information.
          warn: significant events
          error: something has gone wrong
      81e5adaf
  8. 05 Jul, 2010 1 commit
  9. 01 Jul, 2010 2 commits
  10. 26 Jun, 2010 1 commit
  11. 23 Jun, 2010 1 commit
    • Joel Martin's avatar
      Various cross-browser fixes. · d93d3e09
      Joel Martin authored
      Now working under Arora 0.5.
      
      But not Konqueror 4.2.2 (WebSockets never connects).
      
      IE support with excanvas still pending.
      d93d3e09
  12. 21 Jun, 2010 1 commit
  13. 18 Jun, 2010 1 commit
  14. 16 Jun, 2010 1 commit
  15. 15 Jun, 2010 3 commits
  16. 14 Jun, 2010 3 commits
  17. 13 Jun, 2010 2 commits
  18. 10 Jun, 2010 3 commits
  19. 09 Jun, 2010 3 commits
  20. 08 Jun, 2010 1 commit
  21. 04 Jun, 2010 1 commit
  22. 02 Jun, 2010 1 commit
    • Joel Martin's avatar
      Direct example. Move all DOM code default_controls.js. · 91308399
      Joel Martin authored
      Move DOM manipulation into include/default_controls.js and update
      vnc.html to use it.
      
      Add an example vnc_auto.html which automatically connects using
      parameters from the query string and doesn't use default_controls.js.
      
      Reorder functions in vnc.js to put external interface functions at the
      top of the RFB namespace.
      91308399
  23. 01 Jun, 2010 1 commit
    • Joel Martin's avatar
      Add colour map support (non-true-color). · d41c33e4
      Joel Martin authored
      In colourMap mode there are 256 colours in a colour palette sent from
      the server via the SetColourMapEntries message. This reduces the
      bandwidth by about 1/4. However, appearance can be somewhat less than
      ideal (pinks instead of gray, etc).
      
      It also increases client side rendering performance especially on
      firefox. Rendering a full 800x600 update takes about 950ms in
      firefox on my system compared to about 1400ms. Round-trip time for
      a full frame buffer update is even better on firefox (due to
      performance of the flash WebSocket emulator). Reduced from about
      1800ms to 1100ms on firefox (for 800x600 full update).
      d41c33e4
  24. 28 May, 2010 2 commits
    • Joel Martin's avatar
      Test non-base64 (straight UTF-8) encoding. · 507b473a
      Joel Martin authored
      Also add a wsencoding test client/server program to test send a set of
      values between client and server and vice-versa to test encodings.
      
      Not turned on by default.
      
      Add support for encode/decode of UTF-8 in the proxy. This leverages
      the browser for decoding the WebSocket stream directly instead of
      doing base64 decode in the browser itself.
      
      Unfortunately, in Chrome this has negligible impact (round-trip time
      is increased slightly likely due to extra python processing).
      
      In firefox, due to the use of the flash WebSocket emulator the
      performance is even worse. This is because it's really annoying to get
      the flash WebSocket emulator to properly decode a UTF-8 bytestream.
      The problem is that the readUTFBytes and readMultiByte methods of an
      ActionScript ByteArray don't treat 0x00 correctly. They return
      a string that ends at the first 0x00, but the index into the ByteArray
      has been advanced by however much you requested.
      
      This is very silly for two reasons: ActionScript (and Javascript)
      strings can contain 0x00 (they are not null terminated) and second,
      UTF-8 can legitimately contain 0x00 values. Since UTF-8 is not
      constant width there isn't a great way to determine if those methods
      in fact did encounter a 0x00 or they just read the number of bytes
      requested.
      
      Doing manual decoding using readUTFByte one character at a time slows
      things down quite a bit. And to top it all off, those methods don't
      support the alternate UTF-8 encoding for 0x00 ("\xc0\x80"). They also
      just treat that encoding as the end of string too.
      
      So to get around this, for now I'm encoding zero as 256 ("\xc4\x80")
      and then doing mod 256 in Javascript. Still doesn't result in much
      benefit in firefox.
      
      But, it's an interesting approach that could use some more exploration
      so I'm leaving in the code in both places.
      507b473a
    • Joel Martin's avatar
      Round-trip timing for first full FBU. · c3996e24
      Joel Martin authored
      c3996e24
  25. 26 May, 2010 1 commit
    • Joel Martin's avatar
      Change license to LGPL-3 and add some implementation notes. · af6b17ce
      Joel Martin authored
      The purpose of the code is to be incorporated into other web projects
      (whether those are free or not). AGPL prevents combination with other
      HTML and javascript that is under a weaker (or proprietary) license.
      Better would be a lesser AGPL, but there is not GNU standard for that.
      So LGPL-3 meets most of my requirements. If somebody modifies the
      actual client code and conveys it, then they must release the changes
      under LGPL-3 also.
      
      Add some implementation notes in docs/notes.
      af6b17ce