Interesting, and surprising. Have you spoken to the #webkit folks
about this? Hyatt was the one that did all this re-factoring, maybe
this is expected, or not. I'd drop him an email directly if you can't
get anything out of #webkit.

On Fri, Sep 4, 2009 at 5:17 PM, Avi Drissman<a...@google.com> wrote:
> Speculation here (while I'm not 100% convinced I'm 99.44% there), but...
>
> Scrollbar thumb size has always been fuzzy. On the original Mac there was no
> way to specify the thumb size, and even today HIThemeDrawTrack (which is the
> most modern Mac theme-drawing API) has a parameter |viewsize| which is
> under-specified. While the theory is to make
>
> thumb : track :: view : doc size
>
> the Mac scrollbar code passes in the page scroll size for the viewsize
> parameter. You can see the code in ScrollbarThemeMac for details, but as an
> example, for LayoutTests/css1/basic/inheritance.html, the WebCore Scrollbar
> that had values visible size = 600, total size = 724 turned into:
>
> scrollbar size: 15x585 (we lose 15px to the growbox)
> min: 0
> max: 124
> viewsize: 560 (visible size of 600 - cAmountToKeepWhenPaging; see
> ScrollView::updateScrollbars)
>
> Now the scrollbar isn't 560/585 (96%) of the track so it's not clear where
> the thumb size (as drawn) is coming from. But that's not the problem.
>
> The problem is that I was trying to track down the same numbers for the
> reference images so I could see where the metrics were diverging. And I
> couldn't.
>
> I got DumpRenderTree from WebCore loading in GDB, but breakpoints in
> ScrollbarThemeMac.mm wouldn't hit. Nor would breakpoints in Scrollbar.cpp or
> ScrollView.cpp. In desperation I breakpointed on HIThemeDrawTrack. And that
> didn't hit either.
>
> What did hit was -[NSScroller drawRect:] at this damning backtrace:
>
> #0    0x96143759 in -[NSScroller drawRect:]
> #1    0x9605fbf8 in -[NSView _drawRect:clip:]
> #2    0x9605e6ef in -[NSView
> _recursiveDisplayAllDirtyWithLockFocus:visRect:]
> #3    0x9605ea86 in -[NSView
> _recursiveDisplayAllDirtyWithLockFocus:visRect:]
> #4    0x9605ea86 in -[NSView
> _recursiveDisplayAllDirtyWithLockFocus:visRect:]
> #5    0x9605ea86 in -[NSView
> _recursiveDisplayAllDirtyWithLockFocus:visRect:]
> #6    0x9605ea86 in -[NSView
> _recursiveDisplayAllDirtyWithLockFocus:visRect:]
> #7    0x9605ea86 in -[NSView
> _recursiveDisplayAllDirtyWithLockFocus:visRect:]
> #8    0x9605d045 in -[NSView
> _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
> #9    0x96145385 in -[NSNextStepFrame
> _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
> #10    0x960594ab in -[NSView
> _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:]
> #11    0x95f99e7b in -[NSView displayIfNeeded]
> #12    0x00011ab4 in -[FrameLoadDelegate webView:didFinishLoadForFrame:] at
> FrameLoadDelegate.mm:207
>
> That's why the scrollbars are different. I thought that they'd moved from
> using the Cocoa scroll code in WebCore, but it doesn't seem so.
>
> Options:
> 1. Tweak ScrollbarThemeMac to generate values that make HIThemeDrawTrack
> draw identically to Cocoa (or fork it; same diff)
> 2. Rebaseline all images that only involve scrollbar diffs without mercy.
>
> Avi
>



-- 
Mike Pinkerton
Mac Weenie
pinker...@google.com

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to