diff options
author | tsepez <tsepez@chromium.org> | 2017-01-11 09:32:33 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2017-01-11 09:32:33 -0800 |
commit | 8fa82794ffc2763e9fa1fc9d401c8e9a14d7c67f (patch) | |
tree | 724f69ba295176752df1040e4fb770f69c8dda93 /testing | |
parent | 76a44dea318041f8229d80e70ca3568a435611eb (diff) | |
download | pdfium-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.in | 140 | ||||
-rw-r--r-- | testing/resources/javascript/bug_679642_expected.txt | 3 |
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. |