- From: James Graham <jgraham@opera.com>
- Date: Thu, 05 Jul 2012 17:08:36 +0200
- To: public-webapps@w3.org
On 07/05/2012 12:38 AM, Ryosuke Niwa wrote: > Hi all, > > Sukolsak has been implementing the Undo Manager API in WebKit but the fact > undoManager.transact() takes a pure JS object with callback functions is > making it very challenging. The problem is that this object needs to be > kept alive by either JS reference or DOM but doesn't have a backing C++ > object. Also, as far as we've looked, there are no other specification > that uses the same mechanism. I am given to understand that this kind of construct is not a big problem for Opera. > Since I want to make the API consistent with the rest of the platform and > the implementation maintainable in WebKit, I propose the following changes: > > - Re-introduce DOMTransaction interface so that scripts can instantiate > new DOMTransaction(). > - Introduce AutomaticDOMTransaction that inherits from DOMTransaction > and has a constructor that takes two arguments: a function and an optional > label > > After this change, authors can write: > scope.undoManager.transact(new AutomaticDOMTransaction{function () { > scope.appendChild("foo"); > }, 'append "foo"')); > > instead of: > > scope.undoManager.transact({executeAutomatic: function () { > scope.appendChild("foo"); > }, label: 'append "foo"'}); > > And > > document.undoManager.transact(new DOMTransaction({function () { > // Draw a line on canvas > }, function () { > // Undraw a line > }, function () { this.execute(); }, > 'Draw a line' > })); > > instead of: > > document.undoManager.transact({ execute: function () { > // Draw a line on canvas > }, undo: function () { > // Undraw a line > }, redo: function () { this.execute(); }, > label: 'Draw a line' > }); > I think this proposed API looks particularly verbose and ugly. I thought we wanted to make new APIs more author friendly and less like refugees from Java-land. Changing the design here seems fine as long as it is not to something that is worse for authors; priority of constituencies suggests that we favour authors over implementers. I think this proposed design is worse. Perhaps an event based approach is not, but I would need to see the detailed proposal.
Received on Thursday, 5 July 2012 15:09:12 UTC