Reviewers: MarkM,
Description:
Previously, if the mitigation options were absent (null or undefined
value), the parseFunctionBody option would be taken as true, but if
an options record were provided without the parseFunctionBody property,
it would be taken as false.
Resolved this inconsistency in the direction of parseFunctionBody
defaulting to false.
Please review this at
https://codereview.appspot.com/257910043/
Affected files (+18, -24 lines):
M src/com/google/caja/ses/startSES.js
Index: src/com/google/caja/ses/startSES.js
diff --git a/src/com/google/caja/ses/startSES.js
b/src/com/google/caja/ses/startSES.js
index
4bbcca8332ca64ab17ad3f9cf42aef3033d99881..1c35690d74b4768706875879626b555afd965404
100644
--- a/src/com/google/caja/ses/startSES.js
+++ b/src/com/google/caja/ses/startSES.js
@@ -305,33 +305,27 @@ ses.startSES = function(global,
* options and their effects.
*/
function resolveOptions(opt_mitigateOpts) {
+ if (opt_mitigateOpts === undefined || opt_mitigateOpts === null) {
+ opt_mitigateOpts = {};
+ }
+
function resolve(opt, defaultOption) {
- return (opt_mitigateOpts && opt in opt_mitigateOpts) ?
- opt_mitigateOpts[opt] : defaultOption;
+ return opt in opt_mitigateOpts ? opt_mitigateOpts[opt] :
defaultOption;
}
+
var options = {};
- if (opt_mitigateOpts === undefined || opt_mitigateOpts === null) {
- options.maskReferenceError = true;
- options.parseFunctionBody = true;
- options.sourceUrl = void 0;
-
- options.rewriteTopLevelVars = true;
- options.rewriteTopLevelFuncs = true;
- options.rewriteFunctionCalls = true;
- options.rewriteTypeOf = false;
- options.forceParseAndRender = false;
- } else {
- options.maskReferenceError = resolve('maskReferenceError', true);
- options.parseFunctionBody = resolve('parseFunctionBody', false);
- options.sourceUrl = resolve('sourceUrl', void 0);
-
- options.rewriteTopLevelVars = resolve('rewriteTopLevelVars', true);
- options.rewriteTopLevelFuncs = resolve('rewriteTopLevelFuncs', true);
- options.rewriteFunctionCalls = resolve('rewriteFunctionCalls', true);
- options.rewriteTypeOf = resolve('rewriteTypeOf',
- !options.maskReferenceError);
- options.forceParseAndRender = resolve('forceParseAndRender', false);
- }
+
+ options.maskReferenceError = resolve('maskReferenceError', true);
+ options.parseFunctionBody = resolve('parseFunctionBody', false);
+ options.sourceUrl = resolve('sourceUrl', void 0);
+
+ options.rewriteTopLevelVars = resolve('rewriteTopLevelVars', true);
+ options.rewriteTopLevelFuncs = resolve('rewriteTopLevelFuncs', true);
+ options.rewriteFunctionCalls = resolve('rewriteFunctionCalls', true);
+ options.rewriteTypeOf = resolve('rewriteTypeOf',
+ !options.maskReferenceError);
+ options.forceParseAndRender = resolve('forceParseAndRender', false);
+
return options;
}
ses.resolveOptions = resolveOptions;