Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Unified Diff: testing/resources/javascript/globals.in

Issue 943783002: Add test for PDF's JS "global". (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | testing/resources/javascript/globals_expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « no previous file | testing/resources/javascript/globals_expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698