Code Monkey home page Code Monkey logo

js2at's People

Contributors

aleventhal avatar kenlimmj avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

js2at's Issues

Support multiple ATs

Right now, only one AT is supported by the native messaging host.

Each AT probably should have its own port.
To do this, we could make each AT a TCP server, and they could add a file to a directory when they want to a connect. The native messaging host could discover these files and read the port number from there.

Convert to Python 3

According to this announcement, Python 2 will no longer be supported.
We should convert our scripts and installation docs to be based on Python 3.

Include info on tab with each outgoing message

Each message should provide a pageId or something similar that the AT can also discover using an accessibility API, so that it can tie it's various documents explored through a11y apis to the same js2at-providing document.

Ask user for permission

Users should be asked for permission when a web page attempts to connect to js2at.

  • User should be given specifics for what the js2at api wants to do and why. This information could be bundled in localized schema description files with the same root name.
  • Multiple requests should be put together in one
  • Web page does not need to be informed that the user said no, but it would simply not get any requests.
  • The observerAdded command would not be sent to AT until user said yes.
  • Open question: should the question even be asked if there is no AT attempting to listen? Probably not.
  • Chrome should remember the permissions on a per-page basis.

Support Firefox

The extension currently will not run in Firefox, and need to be ported.

Documentation

  • Docs for AT developers
  • Docs for infrastructure -- what does it do?
  • Docs for page authors

Improve error handling and messaging

Need to support a number of types of errors:

Error messages sent to AT:

  • Unsupported request type
  • Unsupported property
  • Exception handling request
  • Cancelled from timeout

Error messages sent to AT and content

  • Request or response does not validate

Support schema validation

Support option to load schemas and validate messages.
Another option indicates what to do with errors: reject or just log

Initial unit tests

The following modules could benefit from unit tests:

  • Native messaging host
  • Extension
  • Polyfill

Remove unsafe-eval from manifest.json

The following line is currently required in order for the JSON validator to function:
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",

Options:

Remove Python dependency

Having a dependency on Python is not ideal on Windows where Python is not shipped by default.

We could try py2exe, or just rewrite in C++ or another language that compiles to a small executable.

ChromeVox compatibility

Since we can't use the native messaging messaging api to communicate with ChromeVox, we should just open an ordinary port.

Ideally, ChromeVox would be able to bundle js2at functionality without requiring the additional extension. However, this would require js2at to be more mature and ready to be bundled with Chrome.

So for now, let's just open up the additional port.

Build system

  • Import libraries used, e.g. ajv and zmx
  • Copy internal schemas to extension folder, which would allow all the schemas to be under one schema folder

Clearly delineate system-generated messages

It should be clear what messages are system-generated, such as 'observerAdded'.
We could add a field, like "systemGenerated": true
Currently I actually prefer a prefix, like $
type = '$systemGenerated' -- this will help delineate these inside of message handling code.

Web API review

Get web API reviewed sooner rather than later.
We don't want people to say we're not like other web APIs, or bring up other concerns late.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.