Changeset 246429 in webkit


Ignore:
Timestamp:
Jun 13, 2019 11:50:51 PM (5 years ago)
Author:
graouts@webkit.org
Message:

REGRESSION (r246103) [ Mojave+ WK1 ] Layout Test scrollbars/scrollbar-iframe-click-does-not-blur-content.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=198800
<rdar://problem/51679634>

Reviewed by Tim Horton.

Source/WebKitLegacy/mac:

Expose a private method that we need to use from DumpRenderTree.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _hitViewForEvent:]):

  • WebView/WebHTMLViewPrivate.h:

Tools:

We didn't detect an NSScroller in a sub-frame due to WebHTMLView's implementation of -[NSView hitTest:]. We now use a private method
which lets us use the default implementation and correctly returns an NSScroller in a sub-frame.

  • DumpRenderTree/mac/EventSendingController.mm:

(eventPressedMouseButtonsSwizzlerForViewAndEvent):
(-[EventSendingController mouseDown:withModifiers:]):
(-[EventSendingController mouseUp:withModifiers:]):
(-[EventSendingController mouseMoveToX:Y:]):

LayoutTests:

This test now passes reliably on WK1.

  • platform/mac-wk1/TestExpectations:
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r246427 r246429  
     12019-06-13  Antoine Quint  <graouts@apple.com>
     2
     3        REGRESSION (r246103) [ Mojave+ WK1 ] Layout Test scrollbars/scrollbar-iframe-click-does-not-blur-content.html is timing out
     4        https://bugs.webkit.org/show_bug.cgi?id=198800
     5        <rdar://problem/51679634>
     6
     7        Reviewed by Tim Horton.
     8
     9        This test now passes reliably on WK1.
     10
     11        * platform/mac-wk1/TestExpectations:
     12
    1132019-06-12  Myles C. Maxfield  <mmaxfield@apple.com>
    214
  • trunk/LayoutTests/platform/mac-wk1/TestExpectations

    r246406 r246429  
    740740
    741741webkit.org/b/196508 compositing/repaint/scroller-with-foreground-layer-repaints.html [ Pass Failure ]
    742 
    743 webkit.org/b/198800 [ Mojave+ ] scrollbars/scrollbar-iframe-click-does-not-blur-content.html [ Pass Timeout ]
  • trunk/Source/WebKitLegacy/mac/ChangeLog

    r246285 r246429  
     12019-06-13  Antoine Quint  <graouts@apple.com>
     2
     3        REGRESSION (r246103) [ Mojave+ WK1 ] Layout Test scrollbars/scrollbar-iframe-click-does-not-blur-content.html is timing out
     4        https://bugs.webkit.org/show_bug.cgi?id=198800
     5        <rdar://problem/51679634>
     6
     7        Reviewed by Tim Horton.
     8
     9        Expose a private method that we need to use from DumpRenderTree.
     10
     11        * WebView/WebHTMLView.mm:
     12        (-[WebHTMLView _hitViewForEvent:]):
     13        * WebView/WebHTMLViewPrivate.h:
     14
    1152019-06-10  Sam Weinig  <weinig@apple.com>
    216
  • trunk/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm

    r246285 r246429  
    847847- (DOMRange *)_selectedRange;
    848848#if PLATFORM(MAC)
    849 - (NSView *)_hitViewForEvent:(NSEvent *)event;
    850849- (void)_writeSelectionWithPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard cachedAttributedString:(NSAttributedString *)attributedString;
    851850#endif
     
    13381337#if PLATFORM(MAC)
    13391338
    1340 - (NSView *)_hitViewForEvent:(NSEvent *)event
    1341 {
    1342     // Usually, we hack AK's hitTest method to catch all events at the topmost WebHTMLView. 
    1343     // Callers of this method, however, want to query the deepest view instead.
    1344     forceNSViewHitTest = YES;
    1345     NSView *hitView = [(NSView *)[[self window] contentView] hitTest:[event locationInWindow]];
    1346     forceNSViewHitTest = NO;   
    1347     return hitView;
    1348 }
    1349 
    13501339- (void)_writeSelectionWithPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard cachedAttributedString:(NSAttributedString *)attributedString
    13511340{
     
    25682557{
    25692558    return [[self _frame] accessibilityRoot];
     2559}
     2560
     2561#endif
     2562
     2563#if PLATFORM(MAC)
     2564
     2565- (NSView *)_hitViewForEvent:(NSEvent *)event
     2566{
     2567    // Usually, we hack AK's hitTest method to catch all events at the topmost WebHTMLView.
     2568    // Callers of this method, however, want to query the deepest view instead.
     2569    forceNSViewHitTest = YES;
     2570    NSView *hitView = [(NSView *)[[self window] contentView] hitTest:[event locationInWindow]];
     2571    forceNSViewHitTest = NO;
     2572    return hitView;
    25702573}
    25712574
  • trunk/Source/WebKitLegacy/mac/WebView/WebHTMLViewPrivate.h

    r221559 r246429  
    148148#endif
    149149
     150#if !TARGET_OS_IPHONE
     151- (NSView *)_hitViewForEvent:(NSEvent *)event;
     152#endif
     153
    150154@end
  • trunk/Tools/ChangeLog

    r246418 r246429  
     12019-06-13  Antoine Quint  <graouts@apple.com>
     2
     3        REGRESSION (r246103) [ Mojave+ WK1 ] Layout Test scrollbars/scrollbar-iframe-click-does-not-blur-content.html is timing out
     4        https://bugs.webkit.org/show_bug.cgi?id=198800
     5        <rdar://problem/51679634>
     6
     7        Reviewed by Tim Horton.
     8
     9        We didn't detect an NSScroller in a sub-frame due to WebHTMLView's implementation of -[NSView hitTest:]. We now use a private method
     10        which lets us use the default implementation and correctly returns an NSScroller in a sub-frame.
     11
     12        * DumpRenderTree/mac/EventSendingController.mm:
     13        (eventPressedMouseButtonsSwizzlerForViewAndEvent):
     14        (-[EventSendingController mouseDown:withModifiers:]):
     15        (-[EventSendingController mouseUp:withModifiers:]):
     16        (-[EventSendingController mouseMoveToX:Y:]):
     17
    1182019-06-13  Fujii Hironori  <Hironori.Fujii@sony.com>
    219
  • trunk/Tools/DumpRenderTree/mac/EventSendingController.mm

    r246103 r246429  
    4848#import <Carbon/Carbon.h> // for GetCurrentEventTime()
    4949#import <WebKit/WebHTMLView.h>
     50#import <WebKit/WebHTMLViewPrivate.h>
    5051#import <objc/runtime.h>
    5152#import <wtf/mac/AppKitCompatibilityDeclarations.h>
     
    564565
    565566#if !PLATFORM(IOS_FAMILY)
     567static std::unique_ptr<ClassMethodSwizzler> eventPressedMouseButtonsSwizzlerForViewAndEvent(NSView* view, NSEvent* event)
     568{
     569    if ([view isKindOfClass:[WebHTMLView class]])
     570        view = [(WebHTMLView *)view _hitViewForEvent:event];
     571    return ![view isKindOfClass:[NSScroller class]] ? std::make_unique<ClassMethodSwizzler>([NSEvent class], @selector(pressedMouseButtons), reinterpret_cast<IMP>(swizzledEventPressedMouseButtons)) : NULL;
     572}
     573
    566574static NSUInteger swizzledEventPressedMouseButtons()
    567575{
     
    601609        {
    602610#if !PLATFORM(IOS_FAMILY)
    603             auto eventPressedMouseButtonsSwizzler = ![subView isKindOfClass:[NSScroller class]] ? std::make_unique<ClassMethodSwizzler>([NSEvent class], @selector(pressedMouseButtons), reinterpret_cast<IMP>(swizzledEventPressedMouseButtons)) : NULL;
     611            auto eventPressedMouseButtonsSwizzler = eventPressedMouseButtonsSwizzlerForViewAndEvent(subView, event);
    604612#endif
    605613            [subView mouseDown:event];
     
    697705    {
    698706#if !PLATFORM(IOS_FAMILY)
    699         auto eventPressedMouseButtonsSwizzler = ![targetView isKindOfClass:[NSScroller class]] ? std::make_unique<ClassMethodSwizzler>([NSEvent class], @selector(pressedMouseButtons), reinterpret_cast<IMP>(swizzledEventPressedMouseButtons)) : NULL;
     707        auto eventPressedMouseButtonsSwizzler = eventPressedMouseButtonsSwizzlerForViewAndEvent(targetView, event);
    700708#endif
    701709        [targetView mouseUp:event];
     
    787795            } else {
    788796#if !PLATFORM(IOS_FAMILY)
    789                 auto eventPressedMouseButtonsSwizzler = ![subView isKindOfClass:[NSScroller class]] ? std::make_unique<ClassMethodSwizzler>([NSEvent class], @selector(pressedMouseButtons), reinterpret_cast<IMP>(swizzledEventPressedMouseButtons)) : NULL;
     797                auto eventPressedMouseButtonsSwizzler = eventPressedMouseButtonsSwizzlerForViewAndEvent(subView, event);
    790798#endif
    791799                [subView mouseDragged:event];
     
    794802        } else {
    795803#if !PLATFORM(IOS_FAMILY)
    796             auto eventPressedMouseButtonsSwizzler = ![subView isKindOfClass:[NSScroller class]] ? std::make_unique<ClassMethodSwizzler>([NSEvent class], @selector(pressedMouseButtons), reinterpret_cast<IMP>(swizzledEventPressedMouseButtons)) : NULL;
     804            auto eventPressedMouseButtonsSwizzler = eventPressedMouseButtonsSwizzlerForViewAndEvent(subView, event);
    797805#endif
    798806            [subView mouseMoved:event];
Note: See TracChangeset for help on using the changeset viewer.