DescriptionThe scanner runs as a guest test and examines every object reachable by
property and prototype traversal and invoking functions (based on
hardcoded definitions of possible argument lists). It checks for:
* Objects which are unfrozen and not specifically expected to be.
* Objects which are from the host frame, including exceptions.
* Domado taming constructors.
* toString methods which do not return strings.
Supporting changes:
* browser-test-case.js exposes an interface to the guest to modify URL
parameters.
* jsunitFail is available to the guests and passes along a reason.
* New directAccess facilities to eval in other frames.
* A special case to extend the BrowserTestCase timeout for lack of
progress, because the scanner does not quickly make progress as
measured by number of not-yet-finished test cases.
Possible future work which is NOT in this revision:
* There is a test that toString methods are always non-enumerable,
which has been disabled because there are many failures which ought to
be fixed separately.
* Meeting Domado taming constructors is an error, but this is a
'blacklist' strategy. Replace it with a 'whitelist' strategy which
somehow is not excessively noisy about the myriad functions available.
This is what innocuous() in Domado was introduced to support. (Or,
use a blacklist based on inertCtor marking taming ctors as dangerous,
which would be better than the current string-matching strategy.)
* More coverage of mis-invoking methods.
@r5411
Patch Set 1 #
Total comments: 32
Patch Set 2 : Add reference graph scanner for finding mutability and host object leak bugs. #MessagesTotal messages: 4
|