Closed Bug 1307694 Opened 8 years ago Closed 8 years ago

Flash objects in Firefox 49 are not positioned according to the salign attribute

Categories

(Core Graveyard :: Plug-ins, defect, P2)

49 Branch
defect

Tracking

(firefox49 wontfix, firefox-esr45 unaffected, firefox50+ fixed, firefox51+ fixed, firefox52+ fixed)

VERIFIED FIXED
mozilla52
Tracking Status
firefox49 --- wontfix
firefox-esr45 --- unaffected
firefox50 + fixed
firefox51 + fixed
firefox52 + fixed

People

(Reporter: v.ocean, Assigned: qdot, NeedInfo)

References

Details

(Keywords: regression, site-compat, Whiteboard: [parity-chrome][parity-ie][parity-edge])

Attachments

(3 files, 1 obsolete file)

Attached image ibobr-firefox49.png (deleted) —
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0
Build ID: 20160922113459

Steps to reproduce:

After opening our website http://www.ibobr.cz/url-otazka/?type=full&determine=317458148063897458921127145799&code=42746374636183879445 in Firefox 49 the flash object is not properly positioned The same situation is with many of our flash objects.


Actual results:

It seems that the flash salign attribute is ignored and the flash object is centered in the area (the center of the object is in the center of the area). See file "ibobr-firefox49.png"


Expected results:

According to the salign attribute, the flash object should be aligned to the left top corner (the top left corner of the object should be in the top left corner of the area). We know that the flash object is bigger than the area, but it should not be the problem - but in Firefox 48 or later as well as in current version of Coogle Chrome the alignment works properly. See file "ibobr-chrome53.png"
[Tracking Requested - why for this release]: breaks website layout


Regression window:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=b6174c5855f49d9ea91c588165f4728363ff5866&tochange=1361e4b73c4b3d01e421669c0a8cad6e25c45bf4

Regressed by:
1361e4b73c4b	Kyle Machulis — Bug 1287588 - Fix parameter ordering in embed tags; r=bsmedberg
Blocks: 1287588
Status: UNCONFIRMED → NEW
Ever confirmed: true
Flags: needinfo?(kyle)
Keywords: regression
Whiteboard: [parity-chrome][parity-ie][parity-edge]
Tracking 52+ for this layout issue.
I'm going to be really ashamed if my suggestion at https://bugzilla.mozilla.org/show_bug.cgi?id=1287588#c6 somehow caused this.
Assignee: nobody → kyle
Priority: -- → P2
Not sure what's up here, as the test case we had in bug 1287588 still works? Big difference is this flash file is being passed in via swfobject instead of using a static embed tag. Maybe that's causing some sort of weirdness or code path execution that I missed?

Will research more and figure it out.
Flags: needinfo?(kyle)
Have you had a chance to investigate more, Kyle?
Flags: needinfo?(kyle)
Yeah, I've been poking at it, still trying to get a solid repro that's not the website in Comment 0. I backed up to 48, and sure enough, things work there. The argument reversal in bug 1287588 /should/ make everything happen in the same order in 48 and 49, but this bug says otherwise, so I'm trying to trace down where that's happening.
Flags: needinfo?(kyle)
Ok, so our problem is that we're doing this reversal too late in the call chain. We wanted to make sure we only reversed the work that was done by bug 1262470, which changed the order of attributes coming out of the HTML parser. However, this is reversing the order of ALL plugin attributes, regardless of if they came from the HTML parser or were generated on the fly by javascript. That's why this only breaks in SWFObject instances.

This is where things get complicated. At the point we have the attribute reversal right now, we don't know who our plugin instance owner is. So we need to find a place where we can both detect that our owner is a dynamically created node, AND that our plugin instance will be flash, and do the reversal there. Working my way through the call stack now to figure out where that would be done.
Ok, this ended up being way easier than planned, just took more code reading. Turns out there was already a manual reversing of parameters from the HTML parser when building the parameter array in nsObjectLoadingContent. Bug 1287588 was then reversing THAT reversal, except for both parser and dynamically generated nodes. Removing the old and new code seems to make both things work fine.
Attachment #8800893 - Flags: review?(benjamin)
Helps if I attach the right patch.
Attachment #8800893 - Attachment is obsolete: true
Attachment #8800893 - Flags: review?(benjamin)
Attachment #8800895 - Flags: review?(benjamin)
Comment on attachment 8800895 [details] [diff] [review]
Patch 1 (v2) - Remove attribute reversal for plugins

Do we need another test for this specific behavior?
Attachment #8800895 - Flags: review?(benjamin) → review+
Ugh, yeah, we probably should have more tests even though we're trying to spin this down, since that's gonna take a while. I'll try to get some written early this week and land everything together.
Attachment #8801976 - Flags: review?(benjamin)
Attachment #8801976 - Flags: review?(benjamin) → review+
Pushed by kmachulis@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/63c6abc7afed
Remove reversal of attributes for plugins; r=bsmedberg
https://hg.mozilla.org/integration/mozilla-inbound/rev/6f18ae4d64f7
Mochitests for plugin parameter ordering; r=bsmedberg
Comment on attachment 8800895 [details] [diff] [review]
Patch 1 (v2) - Remove attribute reversal for plugins

Approval Request Comment
[Feature/regressing bug #]: Bug 1287588
[User impact if declined]: Some websites using swfobject to display flash will display incorrectly
[Describe test coverage new/current, TreeHerder]: mochitest included
[Risks and why]: This patch is all code removal, and should restore how things used to be in <= FF48. Hopefully little to no risk involved.
[String/UUID change made/needed]: None
Attachment #8800895 - Flags: approval-mozilla-beta?
Attachment #8800895 - Flags: approval-mozilla-aurora?
Attachment #8801976 - Flags: approval-mozilla-beta?
Attachment #8801976 - Flags: approval-mozilla-aurora?
https://hg.mozilla.org/mozilla-central/rev/63c6abc7afed
https://hg.mozilla.org/mozilla-central/rev/6f18ae4d64f7
Status: NEW → RESOLVED
Closed: 8 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla52
Posted the site compatibility doc: https://www.fxsitecompat.com/en-CA/docs/2016/flash-objects-are-not-positioned-properly-according-to-salign-attribute/
Keywords: site-compat
Hello Vaclav, could you please verify this issue is fixed as expected on a latest Nightly build? Thanks!
Flags: needinfo?(v.ocean)
Comment on attachment 8800895 [details] [diff] [review]
Patch 1 (v2) - Remove attribute reversal for plugins

This is mostly a patch backout to revert things back to the good state (48), Aurora51+, Beta50+
Attachment #8800895 - Flags: approval-mozilla-beta?
Attachment #8800895 - Flags: approval-mozilla-beta+
Attachment #8800895 - Flags: approval-mozilla-aurora?
Attachment #8800895 - Flags: approval-mozilla-aurora+
Comment on attachment 8801976 [details] [diff] [review]
Patch 2 (v1) - Mochitest for static/dynamic embed parameter ordering

Test only changes don't need relman review.
Attachment #8801976 - Flags: approval-mozilla-beta?
Attachment #8801976 - Flags: approval-mozilla-aurora?
Depends on: 1313965
Hello Ritu,
I am sorry that I have not checked my secondary email for ages :(
Anyway, I have just verified the issue and it works very well. Thank you for your work!
(In reply to Vaclav Vodicka from comment #23)
> Hello Ritu,
> I am sorry that I have not checked my secondary email for ages :(
> Anyway, I have just verified the issue and it works very well. Thank you for
> your work!

Great! Thanks.
Status: RESOLVED → VERIFIED
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: