New issue
Advanced search Search tips

Issue 838994 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: May 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 2
Type: Bug

Blocking:
issue 62400



Sign in to add a comment

PDF XFA: Date field is not interactive and drawn incorrectly

Project Member Reported by hnakashima@chromium.org, May 2 2018

Issue description

On an XFA enabled build:

1. Open https://www.canada.ca/content/dam/ircc/migration/ircc/english/pdf/kits/forms/imm5257e.pdf
2. Scroll down to page 2 and find "PASSPORT" "4. * Expiry date"
Expected: There is a border around the field. Clicking on it gives it focus and shows an arrow to open the MonthCalendar.
Actual: Only a part of the border is visible. Clicking on it does not do anything.
 
838994.png
10.0 KB View Download
Labels: -Pri-1 Pri-2
That's a regression. Culprit is:

commit 5e332f1275dd6f4b6d487d313f4db8497df339ab
Author: Dan Sinclair <dsinclair@chromium.org>
Date:   Mon Jan 29 19:52:07 2018 +0000

    Cleanup the FFWidget determination code.
    
    This CL converts the UIType to an XFA_FFWidgetType instead of reusing
    the XFA_Element type. The creation code is cleaned up to make it clearer
    what's happening.
    
    Change-Id: I5d3e4967d5c8b8a50dbb25e574b0d31fe0cf407a
    Reviewed-on: https://pdfium-review.googlesource.com/24390
    Reviewed-by: Ryan Harrison <rharrison@chromium.org>
    Commit-Queue: dsinclair <dsinclair@chromium.org>

Since it's been too long, I'll look into how to fix forward.
The problem is larger than I thought.

I rendered imm5257e.pdf with pdfium_test before and after, with a couple of strategic prints.

Diffing the outputs show that is that some Nodes that were Lines and one node that was a Rectangle are being considered TextEdits after this change.

Look at after.out and see how there are some occurrences of:
"""
pNode->GetFFWidgetType() child->GetElementType() 300
10
"""

300 is XFA_Element::Line, and it used to be interpreted as such in FFNotify::OnCreateContentLayoutItem(), creating a CXFA_FFLine.
Now it's converted (in all but two cases) to 10, which is XFA_FFWidgetType::kTextEdit. In the remaining two cases, it's converted correctly to 12, which is XFA_FFWidgetType::kLine.

This also happens in one instance with XFA_Element::Rectangle, which is 227, being converted to 10 (XFA_FFWidgetType::kTextEdit).

The effect this has is that some lines don't appear, and instead TextEdits are created - I don't know where.

See the rendering differences before and after attached.

I couldn't actually find where the original DateTimeEdit went. My guess is that it's underneath one of these false TextEdits, since I couldn't find discrepancies related to DateTimeEdits.
before.out
28.4 KB Download
after.out
32.2 KB Download
diff.0.png
70.6 KB View Download
diff.1.png
72.8 KB View Download
diff.2.png
72.3 KB View Download
diff.3.png
71.7 KB View Download
diff.4.png
48.6 KB View Download
good.imm5257e.pdf.0.png
89.6 KB View Download
bad.imm5257e.pdf.0.png
89.5 KB View Download
good.imm5257e.pdf.1.png
91.4 KB View Download
bad.imm5257e.pdf.1.png
90.8 KB View Download
good.imm5257e.pdf.2.png
90.2 KB View Download
bad.imm5257e.pdf.2.png
90.2 KB View Download
good.imm5257e.pdf.3.png
87.3 KB View Download
bad.imm5257e.pdf.3.png
87.3 KB View Download
good.imm5257e.pdf.4.png
58.7 KB View Download
bad.imm5257e.pdf.4.png
58.6 KB View Download
Project Member

Comment 6 by bugdroid1@chromium.org, May 7 2018

The following revision refers to this bug:
  https://pdfium.googlesource.com/pdfium/+/c732e9aa64a82c06c0ad369088d0481dd2636b86

commit c732e9aa64a82c06c0ad369088d0481dd2636b86
Author: Henrique Nakashima <hnakashima@chromium.org>
Date: Mon May 07 22:44:26 2018

Restore logic of CreateChildUIAndValueNodesIfNeeded().

CreateUIChild() was changed and renamed to
CreateChildUIAndValueNodesIfNeeded() in:
https://pdfium-review.googlesource.com/c/pdfium/+/24390

This caused some bugs but it's too far back for a rollback.

This cl restores the logic of CreateUIChild() keeping the new
signature.

Bug:  chromium:838994 
Change-Id: I44ce741fdb90f8b0fd11379b5e881e376c307f0c
Reviewed-on: https://pdfium-review.googlesource.com/32090
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>

[add] https://crrev.com/c732e9aa64a82c06c0ad369088d0481dd2636b86/testing/resources/pixel/xfa_specific/xfa_rectangle_node.in
[modify] https://crrev.com/c732e9aa64a82c06c0ad369088d0481dd2636b86/xfa/fxfa/parser/cxfa_node.cpp
[add] https://crrev.com/c732e9aa64a82c06c0ad369088d0481dd2636b86/testing/resources/pixel/xfa_specific/xfa_rectangle_node_expected.pdf.0.png

Project Member

Comment 7 by bugdroid1@chromium.org, May 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d0a8df71b3c196e7a8bcb72b639fdcb4f03e88b1

commit d0a8df71b3c196e7a8bcb72b639fdcb4f03e88b1
Author: pdfium-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com <pdfium-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Date: Tue May 08 06:05:07 2018

Roll src/third_party/pdfium/ cb391259a..e5c0fa97c (12 commits)

https://pdfium.googlesource.com/pdfium.git/+log/cb391259aefd..e5c0fa97c2da

$ git log cb391259a..e5c0fa97c --date=short --no-merges --format='%ad %ae %s'
2018-05-08 thestig Make one more CPDF_PageObjectHolder member protected.
2018-05-07 thestig Make more CPDF_PageObjectHolder members protected.
2018-05-07 thestig Make CPDF_PageObjectHolder::m_iTransparency protected.
2018-05-07 thestig Add some getters for CPDF_PageObjectHolder.
2018-05-07 hnakashima Restore logic of CreateChildUIAndValueNodesIfNeeded().
2018-05-07 tsepez Move codepage tables from cpdf_document.cpp to fx_codepage.cpp
2018-05-07 tsepez Use unowned ptr for CPDF_Page::m_pView.
2018-05-07 thestig Move some CPDF_TextPage methods into an anonymous namespace.
2018-05-07 thestig Initialize CPDF_RenderStatus members in the header.
2018-05-07 thestig Initialize CPDF_TextPage members in the header.
2018-05-07 tsepez Ensure that XFA Pages always have a corresponding PDF page
2018-05-07 tsepez Add test for mutltiple copies of same PDF page.

Created with:
  roll-dep src/third_party/pdfium
BUG= chromium:838994 


The AutoRoll server is located here: https://pdfium-roll.skia.org

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.


TBR=dsinclair@chromium.org

Change-Id: I383e6d0de113818b5481784c690c62aa213fb394
Reviewed-on: https://chromium-review.googlesource.com/1049111
Reviewed-by: pdfium-chromium-autoroll <pdfium-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: pdfium-chromium-autoroll <pdfium-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#556706}
[modify] https://crrev.com/d0a8df71b3c196e7a8bcb72b639fdcb4f03e88b1/DEPS

Status: Fixed (was: Assigned)

Sign in to add a comment