s/channels/availableChannels/
The same TV channel can belong to multiple TV tuners.
s/channel/ownerChannel/ in the TVProgram dictionary.
Support availableTuners and onavailabletunerschange.
s/getPrograms/getAvailablePrograms/
Make getAvailablePrograms() return Promise.
Support onavailableprogramschange.
setChannel(...) should be able to specify the target tuner.
Need to expose which tuner the currently-displayed channel belongs to.
Polished the user case.
Make the getter of availableTuners and availableChannels asynchronous.
Make getAvailableChannels(...) eat tunerId (optional).
Let change events carry more info reflecting the changed results.
Extend TVTunerManager.currentChannel to an array.
Let change events carry more info reflecting the changed results.
Polished the user case.
Polished the statement of scan().
Simplify the event handlers.
Need to expose the triple to identify the TV program.
s/scan()/scanChannel() and polished.