You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
3.7 KiB
159 lines
3.7 KiB
{{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}} <<
|
|
{{streamlen}}
|
|
>>
|
|
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];
|
|
try {
|
|
global[prop.name] = prop.value;
|
|
} catch (e) {
|
|
app.alert("For " + prop.name + ": Setup: ERROR: " + e.toString());
|
|
}
|
|
}
|
|
}
|
|
|
|
function delete_global() {
|
|
for (var i = 0; i < props_to_test.length; ++i) {
|
|
var prop = props_to_test[i];
|
|
try {
|
|
delete global[prop.name];
|
|
} catch (e) {
|
|
app.alert("For " + prop.name + ": Delete: ERROR: " + e.toString());
|
|
}
|
|
}
|
|
}
|
|
|
|
function persist_global(should_persist) {
|
|
for (var i = 0; i < props_to_test.length; ++i) {
|
|
var prop = props_to_test[i];
|
|
try {
|
|
global.setPersistent(prop.name, should_persist);
|
|
} catch (e) {
|
|
app.alert("For " + prop.name +
|
|
": Set Persistent: ERROR: " + e.toString());
|
|
}
|
|
}
|
|
}
|
|
|
|
function dump_global(msg) {
|
|
app.alert("************ " + msg + " ************");
|
|
app.alert("Enumerable Globals:");
|
|
for (var name in global) {
|
|
try {
|
|
app.alert(" " + name + " = " + global[name] +
|
|
", own property = " + global.hasOwnProperty(name));
|
|
} catch (e) {
|
|
app.alert("For " + name + ": Dump: ERROR: " + e.toString());
|
|
}
|
|
}
|
|
app.alert("Expected Globals:");
|
|
for (var i = 0; i < props_to_test.length; ++i) {
|
|
var prop = props_to_test[i];
|
|
try {
|
|
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]);
|
|
}
|
|
} catch (e) {
|
|
app.alert("For " + prop.name +
|
|
": Dump Expected: ERROR: " + e.toString());
|
|
}
|
|
}
|
|
}
|
|
|
|
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}}
|
|
{{startxref}}
|
|
%%EOF
|