We propagate table's 'frame' and 'rules' attributes through the style system, but nobody gets them out the other end. There's no need for this. (The propagation of 'cols' and 'span' is just a very fancy cached GetAttribute, but that will be another patch, since this one already has a few extras thrown in.)
The extras that I'm throwing into this patch are: * I missed the MapTableFrameInto and MapTableBorderInto functions when making some previous changes (converting struct null-checks to SID checks, since the SID checks are stricter where the nsCSS* / nsStyle* struct correspondence isn't 1:1). They former is very very broken (messing up the cascade by not eCSSUnit_Null-checking), but that's also another bug. So when I removed from these functions the only thing that wasn't in the border struct, I removed the caller that was calling it for the table struct and changed the struct null-checks to SID assertions. * in nsHTMLTableColElement.cpp, fix a regression from bug 107453 (rev. 1.43)
Oh, never mind, these are used in nsHTMLStyleSheet.cpp in the post-resolve callbacks.
Created attachment 167395 [details] [diff] [review] patch This could probably be applied after bug 43178 is fixed.
But actually, the GetAttributeChangeHint wouldn't be needed given that fix.