Interactive Console, 'HeadsUpDisplay'
NOTE: the "HeadsUpDisplay" moniker is going away soon for L10N reasons among others.
The Console should fully-replace the existing Error Console window.
HG Repo: 
- Replace Error Console
- Provide rich logging experience for web developers
- Provide interactive JS editing environment
- Provide simple object inspection (either via console or separate UI)
- chrome manipulation
- provide enough information to actually recreate the webpage from the logs
- e.g., displaying images in expanded boxes
- overly pretty display. it's text!
Fx4b5 includes filtering and object inspection
Development is ongoing, led by ddahl.
Timeline / Milestones
milestone 0.1 [done]
- Testing, jsm and component scaffolding: bug 545266 bug 546708 [done]
- create proper, threadsafe hud-service
- possibly modify/reuse existing console service to serve our purposes [done]
milestone 0.2 [done]
- console reattachment on reload, new window creation [done]
- console panel (preliminary XUL widget) [done]
- add global console object / API [in progress]
milestone 0.3 [done]
- LogMessage class: abstract all console message types into a LogMessage object [done]
- HTTP traffic observation and logging [done]
- DOM Mutation event logging [done]
- eval JS from command-line (sandbox) [done]
- "Terminal-like" UI for each "JS context" - "JS Workspaces" [done]
- JS command line history [needs work]
milestone 0.4 [done] [Landed on Trunk]
- Exception Listener to surface all exceptions, css warnings, etc... [done]
- Attach console input to console UI: the "JSTerm" object should be able to be used as either an input for the console or a JS Workspace (modularization) [done]
- break bigger files down to stand-alone "support" jsms for easier maintainability and review (with isolated tests) [done]
- Commands need to be bound in the correct scope for all filters and other UI buttons, etc. [done]
- Firefox menu Item to launch the HUD. [done]
- Add a "clear' button to the console [done]
- Timestamping should be millisecond resolution [done]
- Filtering mechanism via the filtering toolbar needs to cleanly turn on and off the various activity observers or LogMessages. (basic On/Off filters for Network, CSSParser, console api, exceptions and global consoleMessages) [done]
- UI polish: make the HeadsUpDisplay smoothly resize it's height. The splitter is open or closed - no in between. [done]
- Filter output on string [done]
- Remove JS Workspace [done]
Top Features List
TOP 5 Features [IN FLUX] - (all else is secondary)
- 1. Logging of tab-specific activity
- 2. Deeper inspection of logged data: clickable/inspectable objects
- 3. Interactivity in console: command line commands: find, inspect, pprint, etc... / console input expands/shrinks based on user input
- 4. Console->Inspector, Inspector->console communication
- 5. Console Snippet Editor: keep code snippets around for later editing and execution. (robcee will give a smalltalk demo that will inform this idea at the summit)
Top Blockers for release P1
- Network traffic logging seems is missing image traffic [in progress] [need platform help] see bug 568034 [Needs Platform Help]
- Identification of JS Exception and CSS Parser error originating contentWindow [need platform help] bug 567165 [Needs Platform Help]
- Network activity does not yet identify child iframe network requests as originating from a "watched" loadGroup. bug 568643
- Always on C++ XPCOM Console Service that can be observed by this console, firebug or any other developer tools. bug 568629 bug 578353 [in discussion]
- Rename Heads Up Display menu to "Web Console" && rename all identifiers and files from 'HUD*' to "WebConsole*" bug 574628 [in progress]
- JS Workspaces polish: key bindings, history, tab completion bug 568652, bug 568649 [done]
- Copy output to clipboard support bug 574036 [done]
- JS Object property inspector bug 573102 [done]
- console helper commands: find, inspect, pprint bug 575789 [in progress]
- UI polish: make the Console input widget blend in better for both Console and JS Workspace. [in progress]
- add links to view source in console
- Firefox UI front-end planning/brainstorm/mockups bug 559481 bug 559482 [met with UX]
- Popup menus to expose additional functionality
- create popup menu for workspaces, eg file, edit, evaluate
- create popup menu for console content area
- edit (copy / paste) [done], save (import(?), apply(?) for later)
- Firefox UI front-end implementation (XBL interface creation) [needs discussion]
- console command line "injection API": make extensibility API
- new JSD api integeration, basic debugger - gdb style?? Perhaps not?
- (dependant on JS module work to create this new api)
- GeckoApplication "Mixins": allow any Gecko application (beginning with Firefox) to insert UI and JS Context hooks
- Fennec Integration / remote logging/ debugging
- remote logging interface pushes log entries to remote http server
- Functionality to revisit:
- Storage and removal of DOM Mutation Listeners [in progress] bug 568658
- JS Workspace implementation
- Global console and global message interleaving needs to cleanly turn on and off.
- Make sure the preference observer that toggles the HUD on and off works properly.
- Jetpack Integration: Logging console in a new window
- JS Workspace for Jetpack dev/build tasks
- Refactor HeadsUpDisplay.jsm to not be Firefox-specific
- Create event for Reflow
JS Workspace notes'
- We should steal every delicious piece of Jesse's js shell - utility functions (print(obj), blink(domEl), load(scriptURL)), tab completion - all of it.
- We should also steal convenience things like "$ = document.querySelector" and "$$ = document.getElementByID", but post-beta.
- Wrappers, but I think this will be a mute point, as mrbkap is close to landing a patch to make contentWindow property attachment "easy" and "fun"
- Security reviews early and often?
JSD2 API: bug 560314 - although we are not sure how much debugger integration we will have on round 1.
- now that the testing scaffolding is up, I plan on testing every method written, and am trying to write all of this code with testing on the "front burner"
- Project Lead: robc
- Participants: ddahl, jviereck
Chris Blizzard mentioned the "timing" interface Google is working on with the WC3: http://dev.w3.org/2006/webapi/WebTiming/
It appears as though the timing interface is implemented in Chromium nightlies, it is cool.