Closed Bug 563235 Opened 14 years ago Closed 14 years ago

nsIDocument's IID and nsIDOMWindowUtils_1_9_2 were changed on a release branch

Categories

(Core :: DOM: Core & HTML, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED
Tracking Status
blocking1.9.2 --- .7+
status1.9.2 --- .7-fixed
fennec 1.1+ ---

People

(Reporter: smaug, Assigned: Felipe)

References

Details

Attachments

(1 file, 2 obsolete files)

...and it broke various binary extensions
blocking1.9.2: --- → ?
Assignee: nobody → felipc
It doesn't look to me like this landed on GECKO1924_20100413_RELBRANCH, correct? If that's the case then we'll need it fixed on mozilla-1.9.2 default...but it won't hold up the build. Of course, I could be mistaken as to where it has landed.
The problematic revision on 1.9.2 is this one:
http://hg.mozilla.org/releases/mozilla-1.9.2/rev/5af70883c1de

This IID change affects the following branches and tags in mozilla-1.9.2:

$ hg branches | cut -d" " -f1 | while read TAG; do if hg cat -r$TAG content/base/public/nsIDocument.h | grep -A1 "define NS_IDOCUMENT_IID" | grep "0x3e162" > /dev/null; then echo $TAG; fi; done
default
COMM1925_20100427_RELBRANCH
COMM1925_20100422_RELBRANCH
GECKO1925pre_20100414_RELBRANCH

$ hg tags | cut -d" " -f1 | while read TAG; do if hg cat -r$TAG content/base/public/nsIDocument.h | grep -A1 "define NS_IDOCUMENT_IID" | grep "0x3e162" > /dev/null; then echo $TAG; fi; done
tip
THUNDERBIRD_3_1_b2_RELEASE
THUNDERBIRD_3_1_b2_BUILD2
THUNDERBIRD_3_1_b2_BUILD1
CALENDAR_1_0b2_RELEASE
CALENDAR_1_0b2_BUILD1
FENNEC_1_1b1_RELEASE
FENNEC_1_1b1_BUILD2
FENNEC_1_1b1_BUILD1
Thanks for checking on that. I also pulled a copy of the branch and spot checked. Looks like GECKO1924_20100413_RELBRANCH is ok. This should block 1.9.2.5+ though.
(In reply to comment #2)
> It doesn't look to me like this landed on GECKO1924_20100413_RELBRANCH,
> correct? If that's the case then we'll need it fixed on mozilla-1.9.2
> default...but it won't hold up the build. Of course, I could be mistaken as to
> where it has landed.

Yeah, AFAIR that is correct. We waited for tagging 1.9.2.4 before landing some changes needed for fennec. Thanks dbaron for double checking.


nsIDocument_1_9_2 already exists, so the fix is straightforward. I have a question though: does the ordering of functions on the .h implementation matter for binary compatibility? I'm asking this because bug 489127 added the function NodesFromRectHelper in the middle of nsDocument.h (to keep it nearby related functions). I don't know if I should keep it there or move it to the end of the public implemented functions.
Finkle: you'll want to make sure you get this change on Fennec 1.1 as well, I suspect!
blocking1.9.2: ? → .5+
tracking-fennec: --- → 1.1+
Standard8: just so you're aware!
(In reply to comment #5)
> nsIDocument_1_9_2 already exists, so the fix is straightforward.

No, no, no!

If nsIDocument_1_9_2 already exists and we have shipped it with a release then reusing that one leads to exactly the same potential problems (with perhaps less likelihood of encountering them). Once we've shipped an interface you have to create another one if you're changing it. You could go sequential and add _1 or add a _5 to indicate when it was added (which might help if someone else wants to change it in the same 1.9.2.5 cycle).

Bug 489127 also changed the shipped nsIDOMWindowUtils_1_9_2 interface -- we need to back that change out and create an additional interface there, too.
Summary: Bug 489127 changed nsIDocument's IID on a release branch → Bug 489127 changed nsIDocument's IID and nsIDOMWindowUtils_1_9_2 on a release branch
(In reply to comment #8)
> (In reply to comment #5)
> > nsIDocument_1_9_2 already exists, so the fix is straightforward.
> 
> No, no, no!
> 
> If nsIDocument_1_9_2 already exists and we have shipped it with a release then
> reusing that one leads to exactly the same potential problems (with perhaps
> less likelihood of encountering them). Once we've shipped an interface you have
> to create another one if you're changing it. You could go sequential and add _1
> or add a _5 to indicate when it was added (which might help if someone else
> wants to change it in the same 1.9.2.5 cycle).
> 
> Bug 489127 also changed the shipped nsIDOMWindowUtils_1_9_2 interface -- we
> need to back that change out and create an additional interface there, too.


Ok. Also check bug 544765. nsIDOMWindowUtils_1_9_2 was changed there too. It'll need to be backed out too, and perhaps these two changes can be put together on a new interface.
Would it be better here (for review purposes and landing purposes) to create a patch that fix the changes (revert the values to the old ones and add the new interfaces), or back out everything and create a new full patch with the changes in place?

Also, I have this pending question: does the ordering of functions on the .h implementation matter for binary compatibility?
I'm assuming it does and I'm moving the function declaration to the end of the public functions on nsDocument.h
(In reply to comment #10)
> Also, I have this pending question: does the ordering of functions on the .h
> implementation matter for binary compatibility?
> I'm assuming it does and I'm moving the function declaration to the end of the
> public functions on nsDocument.h

It doesn't matter.  The binary compatibility issue is preserving (1) the IID and (2) the ns*I*Document vtable.  Reordering things in nsDocument *might* (or might not) affect people who have nsDocument pointers, but we don't care about them; we only care about callers who have ns*I*Document pointers.
So I backed out bug 489127 (http://hg.mozilla.org/releases/mozilla-1.9.2/rev/5af70883c1de) locally, and recreated a full patch for it, creating the interfaces nsIDocument_MOZILLA_1_9_2_5_BRANCH and nsIDOMWindowUtils_1_9_2_5 and adding the new functions to said interfaces.


I don't know what should be the process for this, so I'm setting the review and superreview flags and hopefully someone can pick it. Please take a careful look on the implementation of the new interfaces because that's where this patch has differences from what landed.
Attachment #443283 - Flags: superreview?
Attachment #443283 - Flags: review?
Attachment #443283 - Flags: superreview?(dveditz)
Attachment #443283 - Flags: superreview?
Attachment #443283 - Flags: review?(Olli.Pettay)
Attachment #443283 - Flags: review?
Comment on attachment 443283 [details] [diff] [review]
Patch from 489127 keeping current interfaces unchanged

It's better to pick people for review? and superreview? requests.
Felipe, could you provide a patch which can be applied to 1.9.2 tree without
backing out anything; so just the new interfaces and some changes to the code
which uses those interfaces. That would be easier to review, at least for
me since I didn't review the original patch.
(In reply to comment #14)
> Felipe, could you provide a patch which can be applied to 1.9.2 tree without
> backing out anything; so just the new interfaces and some changes to the code
> which uses those interfaces. That would be easier to review, at least for
> me since I didn't review the original patch.

Sure
This patch reverts the IID changes to nsIDocument and nsIDOMWindowUtils_1_9_2 and moves the functions added to the new interfaces _1_9_2_5.
(I didn't reorder the function in nsDocument.h per comment 11).

I also moved the things added in bug 544765 from nsIDOMWindowUtils_1_9_2 to 1_9_2_5, so the interface is reverted to the original form in a single step.
Attachment #443283 - Attachment is obsolete: true
Attachment #443399 - Flags: superreview?(dveditz)
Attachment #443399 - Flags: review?(Olli.Pettay)
Attachment #443283 - Flags: superreview?(dveditz)
Attachment #443283 - Flags: review?(Olli.Pettay)
Summary: Bug 489127 changed nsIDocument's IID and nsIDOMWindowUtils_1_9_2 on a release branch → nsIDocument's IID and nsIDOMWindowUtils_1_9_2 were changed on a release branch
Attachment #443399 - Flags: review?(Olli.Pettay) → review+
Comment on attachment 443399 [details] [diff] [review]
Revert IIDs and create new interfaces

Thanks for fixing this.

sr=dveditz
Attachment #443399 - Flags: superreview?(dveditz) → superreview+
Whiteboard: [needs landing] → [needs 192 landing]
Don't patches on blocking bugs still require approval for checkin on branch?
(In reply to comment #18)
> Don't patches on blocking bugs still require approval for checkin on branch?

Indeed.
Keywords: checkin-needed
Whiteboard: [needs 192 landing]
Comment on attachment 443399 [details] [diff] [review]
Revert IIDs and create new interfaces

Ok, I did not know that
Attachment #443399 - Flags: approval1.9.2.5?
Before checking in it's a good idea to check tinderbox (not tinderboxpushlog). It'll give the current state and rules for that branch--which most of the time is https://wiki.mozilla.org/TreeStatus#Rules
Comment on attachment 443399 [details] [diff] [review]
Revert IIDs and create new interfaces

Approved for 1.9.2.5, a=dveditz for release-drivers
Attachment #443399 - Flags: approval1.9.2.5? → approval1.9.2.5+
blocking1.9.2: .5+ → .6+
Attachment #443399 - Flags: approval1.9.2.5+ → approval1.9.2.6+
I was testing if the patch still applies cleanly, and saw that the nsIDOMWindowUtils_1_9_2 uuid was changed again on branch in the meantime. This patch also reverts that change.
The change from the reviewed patch is 1 line: only the uuid removed changes.
Comment on attachment 452888 [details] [diff] [review]
Revert IIDs and create new interfaces

Looks good, thanks!
r=dveditz
Approved for 1.9.2.6, a=dveditz
Attachment #452888 - Flags: review+
Attachment #452888 - Flags: approval1.9.2.6+
Attachment #443399 - Attachment is obsolete: true
Attachment #443399 - Flags: approval1.9.2.6+
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Component: DOM → DOM: Core & HTML
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: