You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I just checked the cloud reader and it looks like epubReadingSystem can be entirely changed while it should be read-only, according to the EPUB3 spec.
Related issue(s) and/or pull request(s)
See also #41 I guess, as that may well be one significant reason why.
Expected Behaviour
epubReadingSystem and its properties can’t be modified or removed, properties can’t be added.
Observed behaviour
Instead, the cloud reader lets you do pretty much anything with it.
Steps to reproduce
check iframe’s navigator.epubReadingSystem
redefine prop e.g. navigator.epubReadingSystem.name = ""
check iframe’s navigator.epubReadingSystem, name is now empty
redefine object e.g. navigator.epubReadingSystem = {}
check iframe’s navigator.epubReadingSystem, it is now {}
To my knowledge, and it’s been tested with another implem, redefining should fail silently (in non-strict mode, and throw a TypeError in strict mode) and checking should return the object and properties unmodified.
Product
Readium cloud reader app
latest development build uploaded at https://readium.firebaseapp.com OR a custom integration (list public deployment URL, if any)
All browsers
All platforms
That may well apply to other products, I stopped at the cloud reader.
Additional information
The following is reported to work but issue #41 may beg to differ:
This issue is a Question
I just checked the cloud reader and it looks like
epubReadingSystem
can be entirely changed while it should be read-only, according to the EPUB3 spec.Related issue(s) and/or pull request(s)
See also #41 I guess, as that may well be one significant reason why.
Expected Behaviour
epubReadingSystem
and its properties can’t be modified or removed, properties can’t be added.Observed behaviour
Instead, the cloud reader lets you do pretty much anything with it.
Steps to reproduce
navigator.epubReadingSystem
navigator.epubReadingSystem.name = ""
navigator.epubReadingSystem
,name
is now emptynavigator.epubReadingSystem = {}
navigator.epubReadingSystem
, it is now{}
To my knowledge, and it’s been tested with another implem, redefining should fail silently (in non-strict mode, and throw a
TypeError
in strict mode) and checking should return the object and properties unmodified.Product
That may well apply to other products, I stopped at the cloud reader.
Additional information
The following is reported to work but issue #41 may beg to differ:
Object.freeze()
theepubReadingSystemObject
Object.defineProperty(navigator, "epubReadingSystem", {value: epubReadingSystemObject, writable: false})
Freeze should make the properties unwritable while defineProperty should make the object itself unwritable. That’s ES5 BTW.
But then, there could be other reasons, I just couldn’t find them with a quick search in issues.
The text was updated successfully, but these errors were encountered: