{{header}}
{{include ../../xfa_catalog_1_0.fragment}}
{{include ../../xfa_object_2_0.fragment}}
{{include ../../xfa_preamble_3_0.fragment}}
{{include ../../xfa_config_4_0.fragment}}
{{object 5 0}} <<
  {{streamlen}}
>>
stream
<template>
  <subform layout="tb" name="my_doc">
    <pageSet id="page" relation="orderedOccurrence">
      <occur initial="1" max="1" min="1"/>
      <pageArea id="Page1" name="Page1">
        <occur max="1" min="1"/>
        <contentArea h="100mm" w="200mm" x="0.25in" y="0.25in"/>
      </pageArea>
      <pageArea id="Page2" name="Page2">
        <occur max="1" min="1"/>
        <contentArea h="100mm" w="200mm" x="0.25in" y="0.25in"/>
      </pageArea>
    </pageSet>
    <event activity="docReady" ref="$host">
      <script contentType="application/x-javascript">
        {{include ../property_test_helpers.js}}
        try {
          if (typeof test_counter == "undefined") {
            test_counter = 1;
            testRWProperty(xfa.event, "cancelAction", false, true);
            testRWProperty(xfa.event, "change", "", "new foo");
            testRIProperty(xfa.event, "commitKey", 0);
            testRIProperty(xfa.event, "fullText", "");
            testRIProperty(xfa.event, "keyDown", false);
            testRIProperty(xfa.event, "modifier", false);
            testRIProperty(xfa.event, "newContentType", "");
            testRIProperty(xfa.event, "newText", "new foo");  // From above.
            testRIProperty(xfa.event, "prevContentType", "");
            testRIProperty(xfa.event, "prevText", "");
            testRIProperty(xfa.event, "reenter", "");
            testRIProperty(xfa.event, "selEnd", 0);
            testRIProperty(xfa.event, "selStart", 0);
            testRIProperty(xfa.event, "shift", false);
            testRIProperty(xfa.event, "soapFaultCode", "");
            testRIProperty(xfa.event, "soapFaultString", "");
            testRIProperty(xfa.event, "target", undefined);
            xfa.event.emit();  // Signal into ourselves.
          } else if (test_counter == 1) {
            test_counter = 2;
            app.alert("Triggered by emit()");
            xfa.event.emit();  // Signal into ourselves again.
          } else if (test_counter == 2) {
            app.alert("Triggered by emit() again");
          } else {
            app.alert("Something weird happened");
          }
          xfa.event.reset();
        } catch (e) {
           app.alert("truly unexpected " + e);
        }
      </script>
    </event>
  </subform>
</template>
endstream
endobj
{{include ../../xfa_locale_6_0.fragment}}
{{include ../../xfa_postamble_7_0.fragment}}
{{include ../../xfa_pages_8_0.fragment}}
{{xref}}
{{trailer}}
{{startxref}}
%%EOF
