Sorry to self-reply.  I just want to make four targetted points:

-As is, the language specifying clearState() has gapping holes that prevent us 
from agreeing on what it is we're implementing.

-I personally think the intention of clearState() is useful and not a bad idea, 
and that a more fine grained "truncate" is something that can easily be added 
later with enough demand.

-I personally think expanding the API to allow a script to remove history 
entries its Document object didn't create is a bad idea, and would object to 
expanding this power beyond the Document object to "same origin" based control.

-I think that if we can't reach a consensus fairly soon, we should dump 
clearState() and revisit it later.  The API is certainly very useful with just 
pushState() and replaceState().

~Brady

On Nov 12, 2009, at 4:54 PM, Brady Eidson wrote:

> 
> On Nov 12, 2009, at 4:39 PM, Jonas Sicking wrote:
> 
>> On Thu, Nov 12, 2009 at 1:08 PM, Brady Eidson <beid...@apple.com> wrote:
>>> I think clearState() is a good idea but is just spec'ed poorly.
>>> 
>>> Imagine the use case of the checkout procedure at an online merchant.
>>> 
>>> There's normally steps like "enter your address," "choose your shipping 
>>> method," "enter your CC info," and finally "place your order."  It'd be 
>>> pretty neat if they used this new API to make it so the user could use the 
>>> built-in back/forward buttons to switch between the various steps to update 
>>> the information.
>>> 
>>> But once the user has finished the "place your order" step and is presented 
>>> with an order confirmation, all of the previous steps are irrelevant.  The 
>>> site would be prudent to clear them all out so the user is under the 
>>> impression they can go back and continue to play with the details of their 
>>> order.  In this case, clearState() fits the bill greatly!
>>> 
>>> It is true that what is really being performed is "truncate this part of 
>>> history."  But we wouldn't to give scripts the ability to control parts of 
>>> session history they don't own.  And the only way we know which session 
>>> history entries are owned by a Document is when this new API is used, where 
>>> the same Document object is shared between history entries.
>>> 
>>> One might argue that we should give finer grained control - letting a 
>>> Document remove some of the history entries it owns but not others.  I 
>>> might be able to think of a use-case for that, but I don't see it being 
>>> tremendously important.  It could always be added later if there's demand 
>>> for it.
>>> 
>>> I think we just need to get the language in shape so the spec is 
>>> interpreted the same by everyone and is implementable.
>> 
>> As a user of a site, I'm not really sure that that's what I would like
>> to have happen. I can see wanting to be able to go back to those pages
>> to for example see what information I filled out. In general I'm
>> always annoyed as a user when I can't go back to pages that I've left
>> (it's why I pushed the back-button in the first place).
> 
> An AJAX heavy site already violates your user preconceptions about 
> back/forward.  One of the whole points of this API is to allow such AJAX 
> heavy sites to play *better* with back/forward.
>> 
>> And in any event I don't think clearState provides enough fine grained
>> control to be able to satisfy this use case. I would imagine that in
>> many cases a call to clearState would nuke not just the
>> checkout-wizard, but likely also navigation the happened before that.
> 
> Remember this API extends the lifetime of a single Document object.  If the 
> checkout-wizard is its own document, then its invocation of "clearState()" 
> could not nuke any more history than it owned.  
> 
>> In order to satisfy this use case I'd imagine you'd need the ability
>> to remove a precise range of session history entries.
> 
> I disagree, see above.
> 
>> And be able to do so in a way that doesn't get messed up if the user created
>> additional session history entries by clicking links such as <a
>> href="#sizeinfo">Check size information here before buying</a>.
> 
> This already plays well with the "A Document object is the only thing that 
> gets to manage its own state entries" model.  If you clicked this link 
> sometime during the middle of your checkout process, then completed the 
> checkout and clearState() was called, your fragment entry would be removed 
> along with the others for the document.
> 
> I know you're arguing "as a user, I don't want my back history messed with."  
> But the whole point of this API is to give scripts the ability to mess with a 
> very limited, very controlled subset of the back/forward history.  Having 
> that as a goal but then neutering the scripts ability to take advantage seem 
> somewhat contrary here.
> 
> ~Brady
>> 
>> / Jonas
> 

Reply via email to