Bug 11880 - REGRESSION (r18304): Assertion failure in -[WebHTMLView _canProcessDragWithDraggingInfo:] when dragging over the window's a scroll bar (innerFrame)
Summary: REGRESSION (r18304): Assertion failure in -[WebHTMLView _canProcessDragWithDr...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Frames (show other bugs)
Version: 420+
Hardware: Mac OS X 10.4
: P1 Normal
Assignee: Geoffrey Garen
URL: data:text/html,%3Cbody%20style=%22hei...
Keywords: Regression
Depends on:
Blocks:
 
Reported: 2006-12-19 12:25 PST by mitz
Modified: 2006-12-19 15:53 PST (History)
1 user (show)

See Also:


Attachments
fix w/changelog (3.86 KB, patch)
2006-12-19 15:20 PST, Geoffrey Garen
no flags Details | Formatted Diff | Diff
fix w/changelog (3.86 KB, patch)
2006-12-19 15:32 PST, Geoffrey Garen
darin: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description mitz 2006-12-19 12:25:52 PST
To reproduce: with a debug build of TOT, open the URL and drag the image outside of the window.

ASSERTION FAILED: innerFrame
(WebKit/WebView/WebHTMLView.m:5937 -[WebHTMLView(WebDocumentInternalProtocols) _canProcessDragWithDraggingInfo:])

Doesn't happen if the window doesn't have a scrollbar.
Comment 1 mitz 2006-12-19 12:31:09 PST
You actually need to move the mouse pointer over the scrollbar to hit the assert.
Comment 2 mitz 2006-12-19 12:43:40 PST
This is a regression from the fix for bug 8137. Specifically, EventHandler::hitTestResultAtPoint() sets the 'active' flag in the request but not the 'capturing' flag, and because of the following change in layer hit testing, it gets a null result instead of getting the document:

-    if (request.active && renderer()->isRenderView()) {
+    if (request.capturing && renderer()->isRenderView()) {

Comment 3 Geoffrey Garen 2006-12-19 15:20:53 PST
Created attachment 11923 [details]
fix w/changelog
Comment 4 Darin Adler 2006-12-19 15:23:13 PST
Comment on attachment 11923 [details]
fix w/changelog

+    if (request.active || request.mouseUp && renderer()->isRenderView()) {

I think you need parentheses here around the (active || mouseUp) part.
Comment 5 Geoffrey Garen 2006-12-19 15:32:28 PST
Created attachment 11924 [details]
fix w/changelog

doh!
Comment 6 Darin Adler 2006-12-19 15:37:29 PST
Comment on attachment 11924 [details]
fix w/changelog

A little subtle, but seems good for now. r=me
Comment 7 Geoffrey Garen 2006-12-19 15:53:58 PST
r18327.