Gecko:Content Team Minutes: Difference between revisions
No edit summary |
No edit summary |
||
(11 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
Last week's actions:<br> | Last week's actions:<br> | ||
<ol> | <ol> | ||
<li>current team roster: bz, dbaron, jst, sicking</li> | |||
<li>who else should be included? bryner, peterv, mrbkap</li> | <li>who else should be included? bryner, peterv, mrbkap</li> | ||
<li> | <li>how should we track our work? wiki.mozilla.org</li> | ||
<li> | <li>laundry list construction<br> | ||
</li> | </li> | ||
</ol> | </ol> | ||
Line 17: | Line 10: | ||
<ol> | <ol> | ||
<li>sicking: get XUL story in better shape, get somewhere with vector | <li>sicking: get XUL story in better shape, get somewhere with vector | ||
graphics. | graphics. | ||
<ul> | <ul> | ||
<li>brendan: beware w3c compound doc whim-wham, consider xul2 as | <li>brendan: beware w3c compound doc whim-wham, consider xul2 as | ||
consolidated namespace, keep eye on "rich client app" platform | consolidated namespace, keep eye on "rich client app" platform | ||
competitors. | competitors. also, footprint, perf, web compatibility, etc.</li> | ||
</ul> | </ul> | ||
</li> | </li> | ||
<li> | <li>[https://bugzilla.mozilla.org/show_bug.cgi?id=206531 wyciwyg caching for javascript:] | ||
</li> | </li> | ||
<li> | <li>[https://bugzilla.mozilla.org/show_bug.cgi?id=114461 document.open/write-after-close blows away state] | ||
</li> | </li> | ||
<li>[https://bugzilla.mozilla.org/show_bug.cgi?id=274784 blazingly fast "Back" issues] | |||
<ul> | <ul> | ||
<li>can't just treat it like tab switching if | <li>can't just treat it like tab switching if | ||
onunload/onbeforeunload | onunload/onbeforeunload are missing, because of timers, blur handlers</li> | ||
</ul> | </ul> | ||
<li>brendan, need help: | </li> | ||
<li>brendan, need help: [https://bugzilla.mozilla.org/show_bug.cgi?id=270553 E4X <-> DOM] | |||
</li> | |||
<li>sicking: | <li>sicking: [https://bugzilla.mozilla.org/show_bug.cgi?id=240884 fix IndexOf quadratic growth] | ||
<ul> | <ul> | ||
<li>sicking: will filling only in IndexOf pay off (don't want to | <li>sicking: will filling only in IndexOf pay off (don't want to | ||
fill in ChildAt)?</li> | fill in ChildAt)?</li> | ||
<li>bz: yes, for sibling following use-case</li> | <li>bz: yes, for sibling following use-case</li> | ||
<li>jst: get something in, instrument cache hits/misses | <li>jst: get something in, instrument cache hits/misses</li> | ||
<li>bz: fill for all kids (if above a threshold) on first IndexOf, | <li>bz: fill for all kids (if above a threshold) on first IndexOf, | ||
keep "search rotor" to start from<br> | keep "search rotor" to start from<br> | ||
</li> | </li> | ||
</ul> | </ul> | ||
<li>bz: extensibility story with XBL and XTF | </li> | ||
<li>bz: extensibility story with XBL and XTF | |||
<ul> | <ul> | ||
<li>security story for these extension mechanisms</li> | <li>security story for these extension mechanisms [https://bugzilla.mozilla.org/show_bug.cgi?id=236839]</li> | ||
<li>brendan: jst's patch to split content vs. chrome xpconnect | <li>brendan: jst's patch to split content vs. chrome xpconnect | ||
scopes</li> | scopes</li> | ||
<li>scripting language neutrality</li> | <li>scripting language neutrality</li> | ||
<li>XTF API may be kept, but need common insertion point magic</li> | <li>XTF API may be kept, but need common insertion point magic (see also [https://bugzilla.mozilla.org/show_bug.cgi?id=307394])</li> | ||
<li>bz: when is binding attached, detached -- poorly spec'ed</li> | <li>bz: when is binding attached, detached -- poorly spec'ed</li> | ||
<li>dbaron: avoiding CSS when expressing bindings will help that</li> | <li>dbaron: avoiding CSS when expressing bindings will help that</li> | ||
<li>bz: trying to attach before node is in doc breaks chrome</li> | <li>bz: [https://bugzilla.mozilla.org/show_bug.cgi?id=265086 trying to attach before node is in doc breaks chrome]</li> | ||
<li>brendan: keep default for compat, convenience</li> | <li>brendan: keep default for compat, convenience</li> | ||
<li>bz: cloning XUL elements is exception: cloneNode attaches | <li>bz: cloning XUL elements is exception: [https://bugzilla.mozilla.org/show_bug.cgi?id=53901 cloneNode attaches | ||
before node is in doc</li> | before node is in doc]</li> | ||
<li>migration to XBL2 will help us clean up, but compatibility is | <li>migration to XBL2 will help us clean up, but compatibility is | ||
king for</li> | king for</li> | ||
<li>now we need to evaluate | <li>now we need to evaluate [http://www.w3.org/TR/sXBL/ sXBL] | ||
and | and [http://www.hixie.ch/specs/xbl/XBL2.html XBL2] spec drafts</li> | ||
drafts</li> | |||
<li>bryner is gonna implement the sXBL/XBL2 extensions for binding | <li>bryner is gonna implement the sXBL/XBL2 extensions for binding | ||
attachment etc.</li> | attachment etc.</li> | ||
<li>bryner has a native-delegate interface for doing XBL impl. in | <li>bryner has a [https://bugzilla.mozilla.org/show_bug.cgi?id=283257 native-delegate interface for doing XBL impl. in | ||
C++ rather than JS</li> | C++ rather than JS]</li> | ||
<li>bz: base tag and extends issue: namespace/tag assumes XUL | <li>bz: base tag and extends issue: namespace/tag assumes XUL | ||
common content data structure, doesn't work well with HTML, etc.</li> | common content data structure, doesn't work well with HTML, etc.</li> | ||
<li>bryner: should we really keep XTF if XBL2 fixes everything? | <li>bryner: should we really keep XTF if XBL2 fixes everything? | ||
probably not, but are there things | probably not, but are there things [http://www.croczilla.com/xtf XTF] can do | ||
that [http://www.hixie.ch/specs/xbl/XBL2.html XBL2] can't?</li> | |||
<li>bz: class attribute in HTML and XForms counterexample: | <li>bz: class attribute in HTML and XForms counterexample: | ||
nsIStyledContent has methods to query these, but it's not scriptable. | nsIStyledContent has methods to query these, but it's not scriptable. | ||
But native-delegate goodness should address this</li> | But native-delegate goodness should address this</li> | ||
<li>bryner: another issue: binding to a namespaced attribute | <li>bryner: another issue: binding to a namespaced attribute | ||
Line 99: | Line 84: | ||
<li>jst: if binding was attached by CSS, it should go away when | <li>jst: if binding was attached by CSS, it should go away when | ||
node moves to other doc, else not necessarily</li> | node moves to other doc, else not necessarily</li> | ||
<li>bz: need a new bug filed on this | <li>bz: need a new bug filed on this (update: [https://bugzilla.mozilla.org/show_bug.cgi?id=284707 filed]<br> | ||
</li> | </li> | ||
</ul> | </ul> | ||
<li> | </li> | ||
<li>dbaron: [https://bugzilla.mozilla.org/show_bug.cgi?id=283129 it's hard not to leak with our toolkit] | |||
<ul> | <ul> | ||
<li>brendan: maybe the ephemerality of XPConnect wrappers is the | <li>brendan: maybe the ephemerality of XPConnect wrappers is the | ||
Line 116: | Line 100: | ||
<li>dbaron: sXBL and XBL2 fix this</li> | <li>dbaron: sXBL and XBL2 fix this</li> | ||
</ul> | </ul> | ||
<li>bz: native anonymous content: | </li> | ||
<li>bz: native anonymous content: | |||
<ul> | <ul> | ||
<li>breaks some bindings, not scriptable</li> | <li>breaks some bindings, not scriptable</li> | ||
Line 123: | Line 108: | ||
</li> | </li> | ||
</ul> | </ul> | ||
<li>better security model for XUL and XBL, broadly construed | </li> | ||
<li>better security model for XUL and XBL, broadly construed | |||
<ul> | <ul> | ||
<li>brendan: work at higher level (data tainting?) with Coverity et | <li>brendan: work at higher level (data tainting?) with Coverity et | ||
Line 129: | Line 115: | ||
<li>see Andrew Meyer's JIF?</li> | <li>see Andrew Meyer's JIF?</li> | ||
</ul> | </ul> | ||
<li>bz: display:none shouldn't tear down iframe content | </li> | ||
<li>bz: display:none shouldn't tear down iframe content | |||
<ul> | <ul> | ||
<li>so we need to move docshell ownership into XBL</li> | <li>so we need to move docshell ownership into XBL</li> | ||
Line 138: | Line 125: | ||
<li>dbaron: could help dynamic theme switching if we change horses, | <li>dbaron: could help dynamic theme switching if we change horses, | ||
approaches</li> | approaches</li> | ||
<li>two issues, really: XUL and HTML | <li>two issues, really: XUL and HTML; HTML iframe still loses | ||
content when removed from doc | content when removed from doc | ||
</li> | </li> | ||
</ul> | </ul> | ||
<li>jst: plugins should be owned by content nodes, not frames< | </li> | ||
<li>jst: plugins should be owned by content nodes, not frames | |||
<ul> | |||
<li>dbaron: ...and make nsObjectFrame not do all the dispatching. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1156#c4">bug 1156</a></li> | |||
</ul> | |||
</li> | |||
<li>sicking: [https://bugzilla.mozilla.org/show_bug.cgi?id=231676 4% Tp win if we improve the mutation event implementation]; | |||
more to do with mutation events, for code cleanup as well as perf.</li> | more to do with mutation events, for code cleanup as well as perf.</li> | ||
<li>brendan: are there high-level design changes to improve perf, | <li>brendan: are there high-level design changes to improve perf, | ||
not seen by profilers? | not seen by profilers? | ||
<ul> | <ul> | ||
<li>jst: batching of HTML content notifications is a mess, could be | <li>jst: batching of HTML content notifications is a mess, could be | ||
wins</li> | wins</li> | ||
<li>bz: refactor to share with XML sink? initially just making XML | <li>bz: refactor to share with XML sink? initially just making XML increment | ||
<li> | <li>clean up event loop scheduling hacks</li> | ||
<li>dbaron: content sink is batching stuff up, parser is breaking | <li>dbaron: content sink is batching stuff up, parser is breaking | ||
things up; if content sink is "taking too long" - | things up; if content sink is "taking too long" -> conflict</li> | ||
<li>brendan: timers (bz: resolution bug due to condvar notify impl) | <li>brendan: timers (bz: [https://bugzilla.mozilla.org/show_bug.cgi?id=257454 resolution bug due to condvar notify impl]) come up</li> | ||
come up</li> | |||
<li>sicking: we're reflowing while loading too much, maybe to make | <li>sicking: we're reflowing while loading too much, maybe to make | ||
offsetTop etc. valid? | offsetTop etc. valid? KTHML better?</li> | ||
<li>bz: reflows are flushed by offsetTop getter</li> | <li>bz: reflows are flushed by offsetTop getter</li> | ||
<li>paint suppression is yet another hack to consider in global | <li>paint suppression is yet another hack to consider in global | ||
sense</li> | sense</li> | ||
</ul> | </ul> | ||
</li> | |||
<li>bz: document object setup and ownership (content viewer, | <li>bz: document object setup and ownership (content viewer, | ||
docshell, etc.) | docshell, etc.) | ||
are hard to diagram | are hard to diagram | ||
<ul> | <ul> | ||
<li>brendan: draw "anatomical sections" or partial overlays</li> | <li>brendan: draw "anatomical sections" or partial overlays</li> | ||
Line 175: | Line 165: | ||
</li> | </li> | ||
</ul> | </ul> | ||
</li> | |||
<li>bz: should we post wiki references to the m.dom etc. newsgroups? | <li>bz: should we post wiki references to the m.dom etc. newsgroups? | ||
group: Yes</li> | group: Yes</li> | ||
<li>jst: right before Firefox 1.0, we were fighting synthetic event | <li>jst: right before Firefox 1.0, we were fighting synthetic event | ||
bugs that got handled by chrome handlers; we could ignore those that | bugs that got handled by chrome handlers; we could ignore those that | ||
aren't trusted events. | aren't trusted events. | ||
<ul> | <ul> | ||
<li>this breaks if we synthesize events that should be trusted but | <li>this breaks if we synthesize events that should be trusted but | ||
Line 186: | Line 177: | ||
<li>Need a use-case.</li> | <li>Need a use-case.</li> | ||
</ul> | </ul> | ||
</li> | |||
<li>bz: event dispatch issues: two different methods on pres-shell to | <li>bz: event dispatch issues: two different methods on pres-shell to | ||
dispatch, one to content, one to content and to frames. | dispatch, one to content, one to content and to frames. | ||
<ul> | <ul> | ||
<li>Latter used from widget and view manager event sources, but | <li>Latter used from widget and view manager event sources, but | ||
Line 198: | Line 190: | ||
all (to content) if there are no frames.</li> | all (to content) if there are no frames.</li> | ||
</ul> | </ul> | ||
<li>bryner, bz: dangling pointer to on-stack nsEvent bug | </li> | ||
<li>bryner, bz: dangling pointer to on-stack nsEvent bug | |||
<ul> | <ul> | ||
<li>bryner, bz, hyatt: let's get rid of nsEvent stack allocation | <li>bryner, bz, hyatt: let's get rid of nsEvent stack allocation | ||
and all, and just move logic into DOM event classes. | and all, and just move logic into DOM event classes.</li> | ||
<li>bryner: some events have opaque pointers to native data not | <li>bryner: some events have opaque pointers to native data not | ||
valid after unwinding; need a method to null them out before unwinding</li> | valid after unwinding; need a method to null them out before unwinding</li> | ||
<li>sicking, bryner: centralize the DOM event logic nested under | <li>sicking, bryner: [https://bugzilla.mozilla.org/show_bug.cgi?id=234455 centralize the DOM event logic nested under | ||
HandleDOMEvent. | HandleDOMEvent]. Probably need pre-capture and other observation points</li> | ||
<li>bz: need some interface other than nsIDOMEvent, so let's have a | <li>bz: need some interface other than nsIDOMEvent, so let's have a | ||
deCOMtaminated nsIPrivateDOMEvent (we have one already, jst said). | deCOMtaminated nsIPrivateDOMEvent (we have one already, jst said). | ||
Line 212: | Line 204: | ||
</li> | </li> | ||
</ul> | </ul> | ||
<li>Wiki URL: | </li> | ||
<li>Wiki URL: http://wiki.mozilla.org/wiki/Gecko:Content_Team_Minutes</li> | |||
<li>Splitting the window object into inner and outer objects: [[Gecko:SplitWindow]]</li> | |||
</ol> | </ol> | ||
/be | /be | ||
Latest revision as of 17:57, 26 December 2005
Last week's actions:
- current team roster: bz, dbaron, jst, sicking
- who else should be included? bryner, peterv, mrbkap
- how should we track our work? wiki.mozilla.org
- laundry list construction
Laundry list:
- sicking: get XUL story in better shape, get somewhere with vector
graphics.
- brendan: beware w3c compound doc whim-wham, consider xul2 as consolidated namespace, keep eye on "rich client app" platform competitors. also, footprint, perf, web compatibility, etc.
- wyciwyg caching for javascript:
- document.open/write-after-close blows away state
- blazingly fast "Back" issues
- can't just treat it like tab switching if onunload/onbeforeunload are missing, because of timers, blur handlers
- brendan, need help: E4X <-> DOM
- sicking: fix IndexOf quadratic growth
- sicking: will filling only in IndexOf pay off (don't want to fill in ChildAt)?
- bz: yes, for sibling following use-case
- jst: get something in, instrument cache hits/misses
- bz: fill for all kids (if above a threshold) on first IndexOf,
keep "search rotor" to start from
- bz: extensibility story with XBL and XTF
- security story for these extension mechanisms [1]
- brendan: jst's patch to split content vs. chrome xpconnect scopes
- scripting language neutrality
- XTF API may be kept, but need common insertion point magic (see also [2])
- bz: when is binding attached, detached -- poorly spec'ed
- dbaron: avoiding CSS when expressing bindings will help that
- bz: trying to attach before node is in doc breaks chrome
- brendan: keep default for compat, convenience
- bz: cloning XUL elements is exception: [https://bugzilla.mozilla.org/show_bug.cgi?id=53901 cloneNode attaches before node is in doc]
- migration to XBL2 will help us clean up, but compatibility is king for
- now we need to evaluate sXBL and XBL2 spec drafts
- bryner is gonna implement the sXBL/XBL2 extensions for binding attachment etc.
- bryner has a [https://bugzilla.mozilla.org/show_bug.cgi?id=283257 native-delegate interface for doing XBL impl. in C++ rather than JS]
- bz: base tag and extends issue: namespace/tag assumes XUL common content data structure, doesn't work well with HTML, etc.
- bryner: should we really keep XTF if XBL2 fixes everything? probably not, but are there things XTF can do that XBL2 can't?
- bz: class attribute in HTML and XForms counterexample: nsIStyledContent has methods to query these, but it's not scriptable. But native-delegate goodness should address this
- bryner: another issue: binding to a namespaced attribute instead of an element
- bz: can't remove bindings because it breaks QI identity/round-tripping; attribute bindings make this even more fun
- bryner: XTF uses wrappers, maybe we could use those to handle removal; upon removal, the wrapper keeps on QI'ing to the missing interface, but its methods give back errors; could have perf probs though
- bz: maybe distinguish removable bindings by saying they can't add interfaces?
- bz: moving nodes from one doc to another issue: ownerDoc changes, what should happen?
- brendan: we should ask Hixie
- jst: if binding was attached by CSS, it should go away when node moves to other doc, else not necessarily
- bz: need a new bug filed on this (update: filed
- dbaron: it's hard not to leak with our toolkit
- brendan: maybe the ephemerality of XPConnect wrappers is the underlying bug?
- bz: IE allows "expando" properties on DOM objects to persist
- dbaron: can find strong component root by walking up parent chain
- bz: but not for anonymous content
- dbaron: script-reachable a.c. or not?
- bz: not yet, but maybe
- dbaron: sXBL and XBL2 fix this
- bz: native anonymous content:
- breaks some bindings, not scriptable
- what's the ordering w.r.t. regular anonymous content
- bz: I need a more complete list, and do we need a tracking bug?
- better security model for XUL and XBL, broadly construed
- brendan: work at higher level (data tainting?) with Coverity et al.
- see Andrew Meyer's JIF?
- bz: display:none shouldn't tear down iframe content
- so we need to move docshell ownership into XBL
- sicking: or rewrite in C++
- brendan: don't rewrite in C++ if there's a better security model that's language-neutral and within our reach
- dbaron: could help dynamic theme switching if we change horses, approaches
- two issues, really: XUL and HTML; HTML iframe still loses content when removed from doc
- jst: plugins should be owned by content nodes, not frames
- dbaron: ...and make nsObjectFrame not do all the dispatching. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1156#c4">bug 1156</a>
- sicking: 4% Tp win if we improve the mutation event implementation; more to do with mutation events, for code cleanup as well as perf.
- brendan: are there high-level design changes to improve perf,
not seen by profilers?
- jst: batching of HTML content notifications is a mess, could be wins
- bz: refactor to share with XML sink? initially just making XML increment
- clean up event loop scheduling hacks
- dbaron: content sink is batching stuff up, parser is breaking things up; if content sink is "taking too long" -> conflict
- brendan: timers (bz: resolution bug due to condvar notify impl) come up
- sicking: we're reflowing while loading too much, maybe to make offsetTop etc. valid? KTHML better?
- bz: reflows are flushed by offsetTop getter
- paint suppression is yet another hack to consider in global sense
- bz: document object setup and ownership (content viewer,
docshell, etc.)
are hard to diagram
- brendan: draw "anatomical sections" or partial overlays
- dbaron, everyone: too many objects, period
- bz: we have two separate ways to own docshells: embeddings vs. non-embedding XUL; we should unify toward embedding APIs (nsIWebBrowser)
- jst: eliminate internal methods that duplicate embedding API
- bz: should we post wiki references to the m.dom etc. newsgroups? group: Yes
- jst: right before Firefox 1.0, we were fighting synthetic event
bugs that got handled by chrome handlers; we could ignore those that
aren't trusted events.
- this breaks if we synthesize events that should be trusted but are not marked "trusted", because some C++ uses the untrusted DOM event APIs.
- Need a use-case.
- bz: event dispatch issues: two different methods on pres-shell to
dispatch, one to content, one to content and to frames.
- Latter used from widget and view manager event sources, but content events could have coordinates too.
- This means you can't change the selection from a DOM event, because it doesn't dispatch to frames.
- The method that does dispatch to frames fails to dispatch at all (to content) if there are no frames.
- bryner, bz: dangling pointer to on-stack nsEvent bug
- bryner, bz, hyatt: let's get rid of nsEvent stack allocation and all, and just move logic into DOM event classes.
- bryner: some events have opaque pointers to native data not valid after unwinding; need a method to null them out before unwinding
- sicking, bryner: [https://bugzilla.mozilla.org/show_bug.cgi?id=234455 centralize the DOM event logic nested under HandleDOMEvent]. Probably need pre-capture and other observation points
- bz: need some interface other than nsIDOMEvent, so let's have a
deCOMtaminated nsIPrivateDOMEvent (we have one already, jst said).
Always use the private one internally, QI for external consumption.
- Wiki URL: http://wiki.mozilla.org/wiki/Gecko:Content_Team_Minutes
- Splitting the window object into inner and outer objects: Gecko:SplitWindow
/be