Closed Bug 389634 Opened 17 years ago Closed 17 years ago

showModalDialog() shouldn't depend on nsXULWindow

Categories

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

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: jst, Assigned: jst)

References

Details

Attachments

(1 file)

See bz's comment #79 in bug 194404. W/o this apps like Camino won't be able to support modal content dialogs.
Flags: blocking1.9?
So I don' see how we can make this actually _work_ in embedding apps without changes on their end.  I guess our options are either to have it work incorrectly (arguments/retval not working) or to have it throw.  Unless the embeddor takes steps, of course.  The former is what we have now.  I think the latter is a better idea.

All I can think of is yet another window creator interface that would have to be implemented to open these sorts of windows...  Anyone have a better idea?
Flags: blocking1.9? → blocking1.9+
Flags: blocking1.9+ → blocking1.9?
Attached patch Remove XUL dependency. (deleted) — Splinter Review
This implements what bz and I discussed on irc the other day. This eliminates the need for the XUL window code to tell the docshell that it's modal by making the docshell ask the chrome window (through the embedding API nsIWebBrowserChrome), and makes the window watcher throw if the tree owner doesn't implement that API and we're trying to open a modal window. This also contains the followup fixes for bug 194404 that Jonas found in his original sr (and I overlooked).
Attachment #275504 - Flags: superreview?(jonas)
Attachment #275504 - Flags: review?(bzbarsky)
Status: NEW → ASSIGNED
Flags: blocking1.9? → blocking1.9+
Comment on attachment 275504 [details] [diff] [review]
Remove XUL dependency.

>+++ b/docshell/base/nsDocShell.cpp
>+        chromeFlags & nsIWebBrowserChrome::CHROME_MODAL &&
>+        !(chromeFlags & nsIWebBrowserChrome::CHROME_OPENAS_CHROME);

Stick parens around |chromeFlags & nsIWebBrowserChrome::CHROME_MODAL| so people don't have to remember whether & or && binds tighter?

>+++ b/embedding/components/windowwatcher/src/nsWindowWatcher.cpp
>+  if (chromeFlags & nsIWebBrowserChrome::CHROME_MODAL &&

Same here.

r=bzbarsky with that
Attachment #275504 - Flags: review?(bzbarsky) → review+
Attachment #275504 - Flags: superreview?(jonas) → superreview+
Fixed.
Status: ASSIGNED → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
This caused a regression in Thunderbird/SeaMonkey Mail and News. msgMail3PaneWindow.js moves a <browser type="content"> element in the XUL document. desiredParent.appendChild(messagePane); triggers something in layout which my build doesn't have symbols for, so I'll need to retest with symbols. Anyway, at some point layout tries to getInterface the nsPIDOMWindow from the docShell. This calls nsDocShell::EnsureScriptEnvironment() which calls nsContentTreeOwner::GetChromeFlags() which calls nsXULWindow::GetChromeFlags which calls nsXULWindow::GetContentScrollbarVisibility() which calls nsDocShell::GetInterface for nsIDOMWindow... can you see what this is yet?
Hmm... We probably need to fix that on the docshell end too, in case other treeowners do something similar, eh?
Depends on: 391777
The irony is that the scrollbars flag is actually a member of nsDocShell!
Could this be causing stack overflow crash on Winxp on sweitching views.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a8pre) Gecko/2007081304 Thunderbird/3.0a1pre ID:2007081304
Crash report here:
http://crash-stats.mozilla.com/report/index/fc7871ca-49e5-11dc-8ee8-001a4bd43ed6?date=2007-08-13-21
Depends on: 392532
Depends on: 393707
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: