XFA: Test resolving variables cross-variables context Attempt to cover a portion of CFXJSE_Engine::QueryVariablesValue() by introducing variables in different contexts whose names shadow each other. We should be able to refer to each set via a specific script node associated with each context. The test unfortunately is based on trying to cover program logic rather than a specification of correct behaviour. In particular, requiring a script to be parented by a variables context (script3 in the test) is questionable. Change-Id: I098845e75442e93e26fbf7f954a0a0d18e9705ed Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/67930 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/testing/resources/javascript/xfa_specific/xfa_variables.in b/testing/resources/javascript/xfa_specific/xfa_variables.in index e812aed..429e663 100644 --- a/testing/resources/javascript/xfa_specific/xfa_variables.in +++ b/testing/resources/javascript/xfa_specific/xfa_variables.in
@@ -27,16 +27,39 @@ </pageArea> </pageSet> <event activity="docReady" ref="$host"> - <script contentType="application/x-javascript"> + <script name="my_script" contentType="application/x-javascript"> try { app.alert('We search variables context ' + (xx01.value + xx02.value)); app.alert('We search variables context ' + (xx03.value + xx04.value)); + var script1 = xfa.resolveNode('template..my_script'); + var script2 = xfa.resolveNode('template..their_script'); + var script3 = xfa.resolveNode('template..other_script'); + app.alert('We resolve off of script1 ' + (script1.xx01.value + script1.xx02.value)); + app.alert('We resolve off of script2 ' + (script2.xx01.value + script2.xx02.value)); + app.alert('We resolve off of script3 ' + (script3.xx01.value + script3.xx02.value)); + app.alert('We resolve off of script1 ' + script1.nonesuch); + app.alert('We resolve off of script2 ' + script2.nonesuch); + app.alert('We resolve off of script3 ' + script3.nonesuch); } catch (e) { app.alert('Error: ' + e); } </script> </event> </subform> + <subform layout="tb" name="their_doc"> + <variables> + <text name="xx01">78</text> + <text name="xx02">90</text> + <integer name="xx03">78</integer> + <integer name="xx04">90</integer> + <script name="other_script"> + var xx01 = "chips"; + </script> + </variables> + <script name="their_script"> + var xx01 = "clams"; + </script> + </subform> </template> endstream endobj
diff --git a/testing/resources/javascript/xfa_specific/xfa_variables_expected.txt b/testing/resources/javascript/xfa_specific/xfa_variables_expected.txt index 1931ce7..bdb521c 100644 --- a/testing/resources/javascript/xfa_specific/xfa_variables_expected.txt +++ b/testing/resources/javascript/xfa_specific/xfa_variables_expected.txt
@@ -1,2 +1,8 @@ Alert: We search variables context 123456 Alert: We search variables context 579 +Alert: We resolve off of script1 123456 +Alert: We resolve off of script2 7890 +Alert: We resolve off of script3 7890 +Alert: We resolve off of script1 undefined +Alert: We resolve off of script2 undefined +Alert: We resolve off of script3 undefined