summaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
authortsepez <tsepez@chromium.org>2017-01-11 09:32:33 -0800
committerCommit bot <commit-bot@chromium.org>2017-01-11 09:32:33 -0800
commit8fa82794ffc2763e9fa1fc9d401c8e9a14d7c67f (patch)
tree724f69ba295176752df1040e4fb770f69c8dda93 /testing
parent76a44dea318041f8229d80e70ca3568a435611eb (diff)
downloadpdfium-8fa82794ffc2763e9fa1fc9d401c8e9a14d7c67f.tar.xz
Annotation deleted while retrieving it in JS
Widgets as returned from GetWidgets() can pop out of existence unexpectedly, so always return observed pointers. This extends the same pattern used elsewhere in the file to all occurrences. BUG=679642 Review-Url: https://codereview.chromium.org/2624933002
Diffstat (limited to 'testing')
-rw-r--r--testing/resources/javascript/bug_679642.in140
-rw-r--r--testing/resources/javascript/bug_679642_expected.txt3
2 files changed, 143 insertions, 0 deletions
diff --git a/testing/resources/javascript/bug_679642.in b/testing/resources/javascript/bug_679642.in
new file mode 100644
index 0000000000..2241723dd2
--- /dev/null
+++ b/testing/resources/javascript/bug_679642.in
@@ -0,0 +1,140 @@
+{{header}}
+{{object 1 0}} <<
+ /Type /Catalog
+ /Pages 2 0 R
+ /AcroForm 4 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]
+ /Annots [7 0 R 8 0 R 9 0 R]
+>>
+endobj
+% Forms
+{{object 4 0}} <<
+ /XFA [
+ (xdp:xdp) 23 0 R
+ (form) 29 0 R
+ (</xdp:xdp>) 30 0 R
+ ]
+ /Fields [
+ 5 0 R
+ ]
+>>
+endobj
+% Fields
+{{object 5 0}} <<
+ /T (MyField)
+ /Kids [
+ 6 0 R
+ ]
+ /Rect [100 100 400 400]
+>>
+endobj
+{{object 6 0}} <<
+ /Parent 5 0 R
+ /FT /Btn
+ /Kids [
+ 7 0 R
+ 8 0 R
+ 9 0 R
+ ]
+ /Rect [200 200 220 220]
+>>
+endobj
+{{object 7 0}} <<
+ /Parent 6 0 R
+ /Type /Annot
+ /Subtype /Widget
+ /Rect [220 220 240 240]
+>>
+endobj
+{{object 8 0}} <<
+ /Parent 6 0 R
+ /Type /Annot
+ /Subtype /Widget
+ /Rect [240 240 260 260]
+>>
+endobj
+{{object 9 0}} <<
+ /Parent 6 0 R
+ /Type /Annot
+ /Subtype /Widget
+ /Rect [240 240 260 260]
+>>
+endobj
+% OpenAction action
+{{object 10 0}} <<
+ /Type /Action
+ /S /JavaScript
+ /JS 11 0 R
+>>
+endobj
+% JS program to exexute
+{{object 11 0}} <<
+>>
+stream
+var theName = "MyField";
+function Mangles() {
+ app.alert('Starting ...');
+ try {
+ var f = this.getField(theName);
+ Object.defineProperty(Array.prototype, 1, {
+ get: () => {
+ return this[1];
+ },
+ set: (v) => {
+ app.alert('Firing ...');
+ this.removeField(theName);
+ gc();
+ return false;
+ },
+ enumerable: true
+ });
+ f.page;
+ } catch (e) {
+ app.alert("failed: " + e);
+ }
+}
+Mangles();
+endstream
+endobj
+{{object 23 0}} <<
+>>stream
+<?xml version="1.0" encoding="UTF-8"?>
+<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/">
+endstream
+endobj
+{{object 29 0}} <<
+>>stream
+<config></config>
+<template></template>
+endstream
+endobj
+{{object 30 0}} <<
+>>stream
+</xdp:xdp>
+endstream
+endobj
+{{xref}}
+trailer <<
+ /Root 1 0 R
+>>
+{{startxref}}
+%%EOF
diff --git a/testing/resources/javascript/bug_679642_expected.txt b/testing/resources/javascript/bug_679642_expected.txt
new file mode 100644
index 0000000000..9e99cc6883
--- /dev/null
+++ b/testing/resources/javascript/bug_679642_expected.txt
@@ -0,0 +1,3 @@
+Alert: Starting ...
+Alert: Firing ...
+Alert: failed: Field.page: Object no longer exists.