Continuing work on the project, I separated the Data Store to have two different instances on both DataSink.jsm and GrapUI.jsm. This means that Data Sink is now completely separated from the UI part of the project. This also means that the add-on now perfectly clears any memory used by DataSink.jsm, which was not happening earlier due to the shared scope of DataStore.jsm and the still active GraphUI.jsm.
I also started work on the User Interface of the Timeline, for that I created some mockups for feedback from the community and devtools team. I have started work on making those mockups live and will continue on the UI part for a couple of weeks. The first step towards making the mockup live was to obtain a way of knowing the registered producer and their features. This was solved by changing the way UI sent the initiation to the Data Sink.
Earlier, the UI will just send the
init message to the Data Sink as soon as the button was pressed. This made the whole Data Sink to UI relation a one to one. Now, the UI first pings to the Data Sink, in reply to which, Data Sink sends the list of all the registered producers and their features to the UI from which ping arrived. On the same time, Data Sink stores the unique id provided by the UI though the ping in its
registeredUI list. This way, now more than one UI can register to the Data Sink and the Data Sink will start all the producers on the first ping, and will stop everything on the last destroy message.
Now I have started building the xul for the UI and the related js, dtd, properties files. Hopefully, I will have something working by the next weekly report.