On Nov 12, 2009, at 3:37 PM, Marius Gundersen wrote:

> 
> 
> On Fri, Nov 13, 2009 at 8:16 AM, Brady Eidson <beid...@apple.com> wrote:
> I should've responded to this more directly:
> 
> On Nov 12, 2009, at 12:00 PM, Justin Lebar wrote:
> 
> > I think the use case I proposed is much better served by something
> > like history.truncate(numBefore, numAfter), which would remove all but
> > the numBefore entries before the current entry and the numAfter
> > entries after the current entry.  We'd subject this to the same-origin
> > policy, of course, and stop removing entries in a direction as soon as
> > we encountered an entry from another origin.
> 
> The History object is - quite purposefully - very limited in scope and 
> abilities.  Today, it gives the ability to navigate back and forward a number 
> of steps.  Period.
> 
> The pushState() API adds a very limited way of adding new items 
> programatically.  clearState() also adds the ability for a script to remove 
> entries, but only ones that it added.  Period.
> 
> Same-origin policy be damned, I really don't like the idea of a script being 
> able to remove items that it didn't add.
> 
> As I said in my previous reply, I think it might be useful to give a more 
> fine-grained version of "clearState()", but that could always be added later 
> if there's demand.  And I still think it should be limited to affecting the 
> string of the Document object's entries.
> 
> I don't think the history.truncate function proposed would be able to affect 
> other Document object's entries. So for example, if the current history looks 
> like this:
> 
> A1 A2 B1 *B2* B3 B4 C1 C2
> 
> Then you can only call history.truncate(1, 2). If you call it with a higher 
> number in either parameter, then you will get a same origin exception. If the 
> numbers are smaller though, it would still work. For example, calling 
> history.truncate(0,1) would leave the following in your history:
> 
> A1 A2 B1 *B2* B4 C1 C2
> 
> I think this is the usecase clearState is designed for, but it's just not 
> implemented in a very good way. This would not add a lot of extra work, and 
> wouldn't complicate it for the user. truncate could also be called with no 
> parameters, in which case it would clear the entire Document object's 
> history, similarly to clearState.

You're confusing the "same origin" policy with this API's inherent "Document 
object" policy.

Document objects A, B, and C could all be from the same origin.  I'm asserting 
that even with that qualification, Document B should not be able to remove 
entries for Document A and Document C.

~Brady

> Marius Gundersen

Reply via email to