*/
[
- CheckSecurity
+ CheckSecurity=Frame,
+ WillBeGarbageCollected,
] interface Location {
- [SetterCallWith=ActiveWindow&FirstWindow, DoNotCheckSecurityOnSetter, Unforgeable] attribute DOMString href;
+ // |assign|, |replace|, and *writing* |href| do not require a security
+ // check, as they *change* the page, and thus these do not change any
+ // property of an *existing* document at a different origin.
+ // However, *reading* |href|, or accessing any component, is a security
+ // problem, since that allows tracking navigation.
+ [SetterCallWith=(ActiveWindow,FirstWindow), DoNotCheckSecurity=Setter, Unforgeable] attribute DOMString href;
- [CallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity, Unforgeable, ReadOnly, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void assign([Default=Undefined] optional DOMString url);
- [CallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity, Unforgeable, ReadOnly, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void replace([Default=Undefined] optional DOMString url);
- [CallWith=ActiveWindow, Unforgeable, ReadOnly] void reload();
+ [CallWith=(ActiveWindow,FirstWindow), DoNotCheckSecurity, Unforgeable] void assign(DOMString url);
+ [CallWith=(ActiveWindow,FirstWindow), DoNotCheckSecurity, Unforgeable] void replace(DOMString url);
+ [CallWith=ActiveWindow, Unforgeable] void reload();
// URI decomposition attributes
- [SetterCallWith=ActiveWindow&FirstWindow, SetterRaisesException] attribute DOMString protocol;
- [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString host;
- [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString hostname;
- [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString port;
- [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString pathname;
- [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString search;
- [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString hash;
+ [SetterCallWith=(ActiveWindow,FirstWindow), RaisesException=Setter] attribute DOMString protocol;
+ [SetterCallWith=(ActiveWindow,FirstWindow)] attribute DOMString host;
+ [SetterCallWith=(ActiveWindow,FirstWindow)] attribute DOMString hostname;
+ [SetterCallWith=(ActiveWindow,FirstWindow)] attribute DOMString port;
+ [SetterCallWith=(ActiveWindow,FirstWindow)] attribute DOMString pathname;
+ [SetterCallWith=(ActiveWindow,FirstWindow)] attribute DOMString search;
+ [SetterCallWith=(ActiveWindow,FirstWindow)] attribute DOMString hash;
readonly attribute DOMString origin;
readonly attribute DOMStringList ancestorOrigins;
- [NotEnumerable, Unforgeable, ReadOnly, ImplementedAs=href] DOMString toString();
- [NotEnumerable, Custom, Unforgeable, ReadOnly] any valueOf();
+ [NotEnumerable, Unforgeable, ImplementedAs=href] DOMString toString();
+ [NotEnumerable, Custom, Unforgeable] any valueOf();
};