Gecko:Content Team Minutes
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
- sicking: get XUL story in better shape, get somewhere with vector
- 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.
- 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 
- 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 )
- 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,
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