| Index: testing/resources/javascript/globals.in | 
| diff --git a/testing/resources/javascript/globals.in b/testing/resources/javascript/globals.in | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..6d2f3ca2414eb8bd3fceb1f3ff71962157eccf21 | 
| --- /dev/null | 
| +++ b/testing/resources/javascript/globals.in | 
| @@ -0,0 +1,137 @@ | 
| +{{header}} | 
| +{{object 1 0}} << | 
| +  /Type /Catalog | 
| +  /Pages 2 0 R | 
| +  /OpenAction 10 0 R | 
| +>> | 
| +endobj | 
| +{{object 2 0}} << | 
| +  /Type /Pages | 
| +  /Count 1 | 
| +  /Kids [ | 
| +    3 0 R | 
| +  ] | 
| +>> | 
| +endobj | 
| +% Page number 0. | 
| +{{object 3 0}} << | 
| +  /Type /Page | 
| +  /Parent 2 0 R | 
| +  /Resources << | 
| +    /Font <</F1 15 0 R>> | 
| +  >> | 
| +  /Contents [21 0 R] | 
| +  /MediaBox [0 0 612 792] | 
| +>> | 
| +% OpenAction action | 
| +{{object 10 0}} << | 
| +  /Type /Action | 
| +  /S /JavaScript | 
| +  /JS 11 0 R | 
| +>> | 
| +endobj | 
| +% JS program to exexute | 
| +{{object 11 0}} << | 
| +>> | 
| +stream | 
| +// The "global" object stores data in a C-like manner, and | 
| +// can theoretically persist them between sessions (though | 
| +// pdfium deliberately excludes that functionality). | 
| + | 
| +var some_object = { "colors": [ "red", "green", "blue"] }; | 
| + | 
| +var props_to_test = [ | 
| +  // Cover both bool values. | 
| +  { "name": "true_var", "value": true }, | 
| +  { "name": "false_var", "value": false }, | 
| + | 
| +  // Include both zero and a number with some fractional digits. | 
| +  { "name": "zero_var", "value": 0 }, | 
| +  { "name": "number_var", "value": -3.918 }, | 
| + | 
| +  // TODO(tsepez): unicode doesn't seem to survive. | 
| +  { "name": "string_var", "value": "This is a string" }, | 
| + | 
| +  // Try a complex object. | 
| +  { "name": "object_var", "value": some_object }, | 
| + | 
| +  // Test null and undefined. | 
| +  { "name": "null_var", "value": null }, | 
| +  { "name": "undefined_var", "value": undefined } | 
| +]; | 
| + | 
| +function setup_global() { | 
| +  for (var i = 0; i < props_to_test.length; ++i) { | 
| +    var prop = props_to_test[i]; | 
| +    global[prop.name] = prop.value; | 
| +  } | 
| +} | 
| + | 
| +function delete_global() { | 
| +  for (var i = 0; i < props_to_test.length; ++i) { | 
| +    var prop = props_to_test[i]; | 
| +    delete global[prop.name]; | 
| +  } | 
| +} | 
| + | 
| +function persist_global(should_persist) { | 
| +  for (var i = 0; i < props_to_test.length; ++i) { | 
| +    var prop = props_to_test[i]; | 
| +    global.setPersistent(prop.name, should_persist); | 
| +  } | 
| +} | 
| + | 
| +function dump_global(msg) { | 
| +  app.alert("************ " + msg + " ************"); | 
| +  app.alert("Enumerable Globals:"); | 
| +  for (var name in global) { | 
| +    app.alert("  " + name + " = " + global[name] + | 
| +              ", own property = " + global.hasOwnProperty(name)); | 
| +  } | 
| +  app.alert("Expected Globals:"); | 
| +  for (var i = 0; i < props_to_test.length; ++i) { | 
| +    var prop = props_to_test[i]; | 
| +    var actual = global[prop.name]; | 
| +    app.alert("  " + prop.name + " = " + actual); | 
| +    if (actual != null && typeof actual == "object") { | 
| +      app.alert("    " + actual.colors[0]); | 
| +      app.alert("    " + actual.colors[1]); | 
| +      app.alert("    " + actual.colors[2]); | 
| +    } | 
| +  } | 
| +} | 
| + | 
| +dump_global("Initial State"); | 
| + | 
| +// Check that they all exist. | 
| +setup_global(); | 
| +dump_global("After Setup"); | 
| + | 
| +// Test deletion. | 
| +delete_global(); | 
| +dump_global("After Deletion"); | 
| + | 
| +// setPersistent() should be a no-op for pdfium. | 
| +setup_global(); | 
| +persist_global(false); | 
| +dump_global("After Setup and Persist false"); | 
| + | 
| +// Test setting deleted variables as persistent. | 
| +delete_global(); | 
| +persist_global(true); | 
| +dump_global("After Delete and Persist"); | 
| + | 
| +// Exit with variables marked as persistent to test whatever path | 
| +// may exist to persist them (should be igonored on pdfium). | 
| +setup_global(); | 
| +persist_global(true); | 
| +dump_global("After Setup and Persist true"); | 
| + | 
| +endstream | 
| +endobj | 
| +{{xref}} | 
| +trailer << | 
| +  /Root 1 0 R | 
| +>> | 
| +{{startxref}} | 
| +%%EOF | 
|  |