| Differences between
and this patch
- Tools/ChangeLog +36 lines
Lines 1-3 Tools/ChangeLog_sec1
1
2014-02-13  Brent Fulgham  <bfulgham@apple.com>
2
3
        Create some latched scrolling tests.
4
        https://bugs.webkit.org/show_bug.cgi?id=127606
5
        <rdar://problem/15911348>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        * DumpRenderTree/mac/EventSendingController.mm:
10
        (+[EventSendingController isSelectorExcludedFromWebScript:]): Update to recognize
11
        the new "mouseScrollByX:andY:withWheel:andMomentumPhases:" selector.
12
        (+[EventSendingController webScriptNameForSelector:]): Ditto.
13
        (-[EventSendingController mouseScrollByX:andY:withWheel:andMomentumPhases:]): Implement
14
        the new wheel event sender.
15
        * WebKitTestRunner/EventSenderProxy.h:
16
        * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl: Add declaration
17
        of new mouseScrollByWithWheelAndMomentumPhases method.
18
        * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
19
        (WTR::EventSendingController::mouseScrollByWithWheelAndMomentumPhases): Added
20
        * WebKitTestRunner/InjectedBundle/EventSendingController.h:
21
        * WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm:
22
        (WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases): Add stub for iOS.
23
        * WebKitTestRunner/TestController.cpp:
24
        (WTR::TestController::didReceiveMessageFromInjectedBundle): Handle the new
25
        mouseScrollByWithWheelAndMomentumPhases message.
26
        (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle): Handle the
27
        new mouseScrollByWithWheelAndMomentumPhases.
28
        * WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
29
        (WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases): Provide stub that
30
        relays to the standard mouse wheel handler.
31
        * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
32
        (WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases): Ditto.
33
        * WebKitTestRunner/mac/EventSenderProxy.mm:
34
        (WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases): Provide implementation
35
        of mouse wheel gesture method.
36
1
2014-02-13  Alexey Proskuryakov  <ap@apple.com>
37
2014-02-13  Alexey Proskuryakov  <ap@apple.com>
2
38
3
        [Mac] Add a WebKit1 SPI to get WebCrypto master key from a client
39
        [Mac] Add a WebKit1 SPI to get WebCrypto master key from a client
- Tools/DumpRenderTree/mac/EventSendingController.mm -1 / +50 lines
Lines 1-5 Tools/DumpRenderTree/mac/EventSendingController.mm_sec1
1
/*
1
/*
2
 * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
2
 * Copyright (C) 2005, 2006, 2007, 2008, 2014 Apple Inc. All rights reserved.
3
 * Copyright (C) 2006 Jonas Witt <jonas.witt@gmail.com>
3
 * Copyright (C) 2006 Jonas Witt <jonas.witt@gmail.com>
4
 * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
4
 * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
5
 * Copyright (C) 2006 Alexey Proskuryakov <ap@nypop.com>
5
 * Copyright (C) 2006 Alexey Proskuryakov <ap@nypop.com>
Lines 202-207 + (BOOL)isSelectorExcludedFromWebScript: Tools/DumpRenderTree/mac/EventSendingController.mm_sec2
202
            || aSelector == @selector(zoomPageOut)
202
            || aSelector == @selector(zoomPageOut)
203
            || aSelector == @selector(scalePageBy:atX:andY:)
203
            || aSelector == @selector(scalePageBy:atX:andY:)
204
            || aSelector == @selector(mouseScrollByX:andY:)
204
            || aSelector == @selector(mouseScrollByX:andY:)
205
            || aSelector == @selector(mouseScrollByX:andY:withWheel:andMomentumPhases:)
205
            || aSelector == @selector(continuousMouseScrollByX:andY:)
206
            || aSelector == @selector(continuousMouseScrollByX:andY:)
206
#if PLATFORM(IOS)
207
#if PLATFORM(IOS)
207
            || aSelector == @selector(addTouchAtX:y:)
208
            || aSelector == @selector(addTouchAtX:y:)
Lines 254-259 + (NSString *)webScriptNameForSelector:( Tools/DumpRenderTree/mac/EventSendingController.mm_sec3
254
        return @"setDragMode";
255
        return @"setDragMode";
255
    if (aSelector == @selector(mouseScrollByX:andY:))
256
    if (aSelector == @selector(mouseScrollByX:andY:))
256
        return @"mouseScrollBy";
257
        return @"mouseScrollBy";
258
    if (aSelector == @selector(mouseScrollByX:andY:withWheel:andMomentumPhases:))
259
        return @"mouseScrollByWithWheelAndMomentumPhases";
257
    if (aSelector == @selector(continuousMouseScrollByX:andY:))
260
    if (aSelector == @selector(continuousMouseScrollByX:andY:))
258
        return @"continuousMouseScrollBy";
261
        return @"continuousMouseScrollBy";
259
    if (aSelector == @selector(scalePageBy:atX:andY:))
262
    if (aSelector == @selector(scalePageBy:atX:andY:))
Lines 699-704 - (void)mouseScrollByX:(int)x andY:(int) Tools/DumpRenderTree/mac/EventSendingController.mm_sec4
699
    [self mouseScrollByX:x andY:y continuously:NO];
702
    [self mouseScrollByX:x andY:y continuously:NO];
700
}
703
}
701
704
705
- (void)mouseScrollByX:(int)x andY:(int)y withWheel:(NSString*)phaseName andMomentumPhases:(NSString*)momentumName
706
{
707
#if !PLATFORM(IOS)
708
    CGScrollPhase phase = 0;
709
    if ([phaseName isEqualToString: @"none"])
710
        phase = 0;
711
    else if ([phaseName isEqualToString: @"began"])
712
        phase = kCGScrollPhaseBegan;
713
    else if ([phaseName isEqualToString: @"changed"])
714
        phase = kCGScrollPhaseChanged;
715
    else if ([phaseName isEqualToString: @"ended"])
716
        phase = kCGScrollPhaseEnded;
717
    else if ([phaseName isEqualToString: @"cancelled"])
718
        phase = kCGScrollPhaseCancelled;
719
    else if ([phaseName isEqualToString: @"maybegin"])
720
        phase = kCGScrollPhaseMayBegin;
721
722
    CGMomentumScrollPhase momentum = 0;
723
    if ([momentumName isEqualToString: @"none"])
724
        momentum = kCGMomentumScrollPhaseNone;
725
    else if ([momentumName isEqualToString:@"begin"])
726
        momentum = kCGMomentumScrollPhaseBegin;
727
    else if ([momentumName isEqualToString:@"continue"])
728
        momentum = kCGMomentumScrollPhaseContinue;
729
    else if ([momentumName isEqualToString:@"end"])
730
        momentum = kCGMomentumScrollPhaseEnd;
731
732
    CGEventRef cgScrollEvent = CGEventCreateScrollWheelEvent(NULL, kCGScrollEventUnitLine, 2, y, x);
733
734
    // CGEvent locations are in global display coordinates.
735
    CGPoint lastGlobalMousePosition = CGPointMake(lastMousePosition.x, [[NSScreen mainScreen] frame].size.height - lastMousePosition.y);
736
    CGEventSetLocation(cgScrollEvent, lastGlobalMousePosition);
737
    CGEventSetIntegerValueField(cgScrollEvent, kCGScrollWheelEventScrollPhase, phase);
738
    CGEventSetIntegerValueField(cgScrollEvent, kCGScrollWheelEventMomentumPhase, momentum);
739
    
740
    NSEvent* scrollEvent = [NSEvent eventWithCGEvent:cgScrollEvent];
741
    CFRelease(cgScrollEvent);
742
743
    if (NSView* targetView = [[mainFrame webView] hitTest:[scrollEvent locationInWindow]]) {
744
        [NSApp _setCurrentEvent:scrollEvent];
745
        [targetView scrollWheel:scrollEvent];
746
        [NSApp _setCurrentEvent:nil];
747
    }
748
#endif
749
}
750
702
- (NSArray *)contextClick
751
- (NSArray *)contextClick
703
{
752
{
704
#if !PLATFORM(IOS)
753
#if !PLATFORM(IOS)
- Tools/WebKitTestRunner/EventSenderProxy.h -1 / +2 lines
Lines 1-5 Tools/WebKitTestRunner/EventSenderProxy.h_sec1
1
/*
1
/*
2
 * Copyright (C) 2011 Apple Inc. All rights reserved.
2
 * Copyright (C) 2011, 2014 Apple Inc. All rights reserved.
3
 * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
3
 * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4
 *
4
 *
5
 * Redistribution and use in source and binary forms, with or without
5
 * Redistribution and use in source and binary forms, with or without
Lines 60-65 public: Tools/WebKitTestRunner/EventSenderProxy.h_sec2
60
    void mouseUp(unsigned button, WKEventModifiers);
60
    void mouseUp(unsigned button, WKEventModifiers);
61
    void mouseMoveTo(double x, double y);
61
    void mouseMoveTo(double x, double y);
62
    void mouseScrollBy(int x, int y);
62
    void mouseScrollBy(int x, int y);
63
    void mouseScrollByWithWheelAndMomentumPhases(int x, int y, int phase, int momentum);
63
    void continuousMouseScrollBy(int x, int y, bool paged);
64
    void continuousMouseScrollBy(int x, int y, bool paged);
64
65
65
    void leapForward(int milliseconds);
66
    void leapForward(int milliseconds);
- Tools/WebKitTestRunner/TestController.cpp -1 / +39 lines
Lines 1-5 Tools/WebKitTestRunner/TestController.cpp_sec1
1
/*
1
/*
2
 * Copyright (C) 2010 Apple Inc. All rights reserved.
2
 * Copyright (C) 2010, 2014 Apple Inc. All rights reserved.
3
 *
3
 *
4
 * Redistribution and use in source and binary forms, with or without
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
5
 * modification, are permitted provided that the following conditions
Lines 856-861 void TestController::didReceiveMessageFr Tools/WebKitTestRunner/TestController.cpp_sec2
856
            return;
856
            return;
857
        }
857
        }
858
858
859
        if (WKStringIsEqualToUTF8CString(subMessageName, "MouseScrollByWithWheelAndMomentumPhases")) {
860
            WKRetainPtr<WKStringRef> xKey = adoptWK(WKStringCreateWithUTF8CString("X"));
861
            double x = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, xKey.get())));
862
            
863
            WKRetainPtr<WKStringRef> yKey = adoptWK(WKStringCreateWithUTF8CString("Y"));
864
            double y = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, yKey.get())));
865
            
866
            WKRetainPtr<WKStringRef> phaseKey = adoptWK(WKStringCreateWithUTF8CString("Phase"));
867
            int phase = static_cast<int>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, phaseKey.get()))));
868
            WKRetainPtr<WKStringRef> momentumKey = adoptWK(WKStringCreateWithUTF8CString("Momentum"));
869
            int momentum = static_cast<int>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, momentumKey.get()))));
870
            
871
            // Forward to WebProcess
872
            WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
873
            m_eventSenderProxy->mouseScrollByWithWheelAndMomentumPhases(x, y, phase, momentum);
874
875
            return;
876
        }
877
859
        ASSERT_NOT_REACHED();
878
        ASSERT_NOT_REACHED();
860
    }
879
    }
861
880
Lines 925-930 WKRetainPtr<WKTypeRef> TestController::d Tools/WebKitTestRunner/TestController.cpp_sec3
925
            return 0;
944
            return 0;
926
        }
945
        }
927
946
947
        if (WKStringIsEqualToUTF8CString(subMessageName, "MouseScrollByWithWheelAndMomentumPhases")) {
948
            WKRetainPtr<WKStringRef> xKey = adoptWK(WKStringCreateWithUTF8CString("X"));
949
            double x = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, xKey.get())));
950
            
951
            WKRetainPtr<WKStringRef> yKey = adoptWK(WKStringCreateWithUTF8CString("Y"));
952
            double y = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, yKey.get())));
953
            
954
            WKRetainPtr<WKStringRef> phaseKey = adoptWK(WKStringCreateWithUTF8CString("Phase"));
955
            int phase = static_cast<int>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, phaseKey.get()))));
956
            WKRetainPtr<WKStringRef> momentumKey = adoptWK(WKStringCreateWithUTF8CString("Momentum"));
957
            int momentum = static_cast<int>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, momentumKey.get()))));
958
959
            // Forward to WebProcess
960
            WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), true);
961
            m_eventSenderProxy->mouseScrollByWithWheelAndMomentumPhases(x, y, phase, momentum);
962
            WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
963
            return 0;
964
        }
965
        
928
        if (WKStringIsEqualToUTF8CString(subMessageName, "ContinuousMouseScrollBy")) {
966
        if (WKStringIsEqualToUTF8CString(subMessageName, "ContinuousMouseScrollBy")) {
929
            WKRetainPtr<WKStringRef> xKey = adoptWK(WKStringCreateWithUTF8CString("X"));
967
            WKRetainPtr<WKStringRef> xKey = adoptWK(WKStringCreateWithUTF8CString("X"));
930
            double x = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, xKey.get())));
968
            double x = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, xKey.get())));
- Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp -1 / +56 lines
Lines 1-5 Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp_sec1
1
/*
1
/*
2
 * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
2
 * Copyright (C) 2010, 2011, 2014 Apple Inc. All rights reserved.
3
 *
3
 *
4
 * Redistribution and use in source and binary forms, with or without
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
5
 * modification, are permitted provided that the following conditions
Lines 347-352 void EventSendingController::mouseScroll Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp_sec2
347
    WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
347
    WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
348
}
348
}
349
349
350
void EventSendingController::mouseScrollByWithWheelAndMomentumPhases(int x, int y, JSStringRef phaseStr, JSStringRef momentumStr, bool asyncScrolling)
351
{
352
    WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
353
    WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate());
354
    
355
    WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
356
    WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("MouseScrollByWithWheelAndMomentumPhases"));
357
    WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
358
    
359
    WKRetainPtr<WKStringRef> xKey(AdoptWK, WKStringCreateWithUTF8CString("X"));
360
    WKRetainPtr<WKDoubleRef> xRef(AdoptWK, WKDoubleCreate(x));
361
    WKDictionarySetItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
362
    
363
    WKRetainPtr<WKStringRef> yKey(AdoptWK, WKStringCreateWithUTF8CString("Y"));
364
    WKRetainPtr<WKDoubleRef> yRef(AdoptWK, WKDoubleCreate(y));
365
    WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
366
367
    uint64_t phase = 0;
368
    if (JSStringIsEqualToUTF8CString(phaseStr, "none"))
369
        phase = 0;
370
    else if (JSStringIsEqualToUTF8CString(phaseStr, "began"))
371
        phase = 1; // kCGScrollPhaseBegan
372
    else if (JSStringIsEqualToUTF8CString(phaseStr, "changed"))
373
        phase = 2; // kCGScrollPhaseChanged
374
    else if (JSStringIsEqualToUTF8CString(phaseStr, "ended"))
375
        phase = 4; // kCGScrollPhaseEnded
376
    else if (JSStringIsEqualToUTF8CString(phaseStr, "cancelled"))
377
        phase = 8; // kCGScrollPhaseCancelled
378
    else if (JSStringIsEqualToUTF8CString(phaseStr, "maybegin"))
379
        phase = 128; // kCGScrollPhaseMayBegin
380
381
    WKRetainPtr<WKStringRef> phaseKey(AdoptWK, WKStringCreateWithUTF8CString("Phase"));
382
    WKRetainPtr<WKUInt64Ref> phaseRef(AdoptWK, WKUInt64Create(phase));
383
    WKDictionarySetItem(EventSenderMessageBody.get(), phaseKey.get(), phaseRef.get());
384
385
    uint64_t momentum = 0;
386
    if (JSStringIsEqualToUTF8CString(momentumStr, "none"))
387
        momentum = 0; // kCGMomentumScrollPhaseNone
388
    else if (JSStringIsEqualToUTF8CString(momentumStr, "begin"))
389
        momentum = 1; // kCGMomentumScrollPhaseBegin
390
    else if (JSStringIsEqualToUTF8CString(momentumStr, "continue"))
391
        momentum = 2; // kCGMomentumScrollPhaseContinue
392
    else if (JSStringIsEqualToUTF8CString(momentumStr, "end"))
393
        momentum = 3; // kCGMomentumScrollPhaseEnd
394
395
    WKRetainPtr<WKStringRef> momentumKey(AdoptWK, WKStringCreateWithUTF8CString("Momentum"));
396
    WKRetainPtr<WKUInt64Ref> momentumRef(AdoptWK, WKUInt64Create(momentum));
397
    WKDictionarySetItem(EventSenderMessageBody.get(), momentumKey.get(), momentumRef.get());
398
399
    if (asyncScrolling)
400
        WKBundlePostMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get());
401
    else
402
        WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
403
}
404
350
void EventSendingController::continuousMouseScrollBy(int x, int y, bool paged)
405
void EventSendingController::continuousMouseScrollBy(int x, int y, bool paged)
351
{
406
{
352
    WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
407
    WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
- Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h -1 / +2 lines
Lines 1-5 Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h_sec1
1
/*
1
/*
2
 * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
2
 * Copyright (C) 2010, 2011, 2014 Apple Inc. All rights reserved.
3
 *
3
 *
4
 * Redistribution and use in source and binary forms, with or without
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
5
 * modification, are permitted provided that the following conditions
Lines 47-52 public: Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h_sec2
47
    void mouseUp(int button, JSValueRef modifierArray);
47
    void mouseUp(int button, JSValueRef modifierArray);
48
    void mouseMoveTo(int x, int y);
48
    void mouseMoveTo(int x, int y);
49
    void mouseScrollBy(int x, int y);
49
    void mouseScrollBy(int x, int y);
50
    void mouseScrollByWithWheelAndMomentumPhases(int x, int y, JSStringRef phase, JSStringRef momentum, bool asyncScrolling);
50
    void continuousMouseScrollBy(int x, int y, bool paged);
51
    void continuousMouseScrollBy(int x, int y, bool paged);
51
    JSValueRef contextClick();
52
    JSValueRef contextClick();
52
    void leapForward(int milliseconds);
53
    void leapForward(int milliseconds);
- Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl -1 / +2 lines
Lines 1-5 Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl_sec1
1
/*
1
/*
2
 * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
2
 * Copyright (C) 2010, 2011, 2014 Apple Inc. All rights reserved.
3
 *
3
 *
4
 * Redistribution and use in source and binary forms, with or without
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
5
 * modification, are permitted provided that the following conditions
Lines 28-33 interface EventSendingController { Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl_sec2
28
    void mouseUp(long buttonNumber, object modifierArray);
28
    void mouseUp(long buttonNumber, object modifierArray);
29
    void mouseMoveTo(long x, long y);
29
    void mouseMoveTo(long x, long y);
30
    void mouseScrollBy(long x, long y);
30
    void mouseScrollBy(long x, long y);
31
    void mouseScrollByWithWheelAndMomentumPhases(long x, long y, DOMString phase, DOMString momentum, optional boolean asyncScrolling);
31
    void continuousMouseScrollBy(long x, long y, optional boolean paged);
32
    void continuousMouseScrollBy(long x, long y, optional boolean paged);
32
    object contextClick();
33
    object contextClick();
33
    void scheduleAsynchronousClick();
34
    void scheduleAsynchronousClick();
- Tools/WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm +5 lines
Lines 98-103 void EventSenderProxy::mouseScrollBy(int Tools/WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm_sec1
98
    // Write me.
98
    // Write me.
99
}
99
}
100
100
101
void EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases(int x, int y, int phase, int momentum)
102
{
103
    // Write me.
104
}
105
101
void EventSenderProxy::continuousMouseScrollBy(int x, int y, bool paged)
106
void EventSenderProxy::continuousMouseScrollBy(int x, int y, bool paged)
102
{
107
{
103
    // Write me.
108
    // Write me.
- Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp +7 lines
Lines 392-397 void EventSenderProxy::continuousMouseSc Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp_sec1
392
    notImplemented();
392
    notImplemented();
393
}
393
}
394
394
395
void EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases(int x, int y, int /*phase*/, int /*momentum*/)
396
{
397
    // EFL does not have the concept of wheel gesture phases or momentum. Just relay to
398
    // the mouse wheel handler.
399
    mouseScrollBy(x, y);
400
}
401
395
void EventSenderProxy::leapForward(int milliseconds)
402
void EventSenderProxy::leapForward(int milliseconds)
396
{
403
{
397
    if (m_eventQueue.isEmpty())
404
    if (m_eventQueue.isEmpty())
- Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp +7 lines
Lines 433-438 void EventSenderProxy::continuousMouseSc Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp_sec1
433
    sendOrQueueEvent(event);
433
    sendOrQueueEvent(event);
434
}
434
}
435
435
436
void EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases(int x, int y, int /*phase*/, int /*momentum*/)
437
{
438
    // Gtk+ does not have the concept of wheel gesture phases or momentum. Just relay to
439
    // the mouse wheel handler.
440
    mouseScrollBy(x, y);
441
}
442
436
void EventSenderProxy::leapForward(int milliseconds)
443
void EventSenderProxy::leapForward(int milliseconds)
437
{
444
{
438
    if (m_eventQueue.isEmpty())
445
    if (m_eventQueue.isEmpty())
- Tools/WebKitTestRunner/mac/EventSenderProxy.mm -1 / +22 lines
Lines 1-5 Tools/WebKitTestRunner/mac/EventSenderProxy.mm_sec1
1
/*
1
/*
2
 * Copyright (C) 2011 Apple Inc. All rights reserved.
2
 * Copyright (C) 2011, 2014 Apple Inc. All rights reserved.
3
 * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
3
 * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4
 *
4
 *
5
 * Redistribution and use in source and binary forms, with or without
5
 * Redistribution and use in source and binary forms, with or without
Lines 461-464 void EventSenderProxy::continuousMouseSc Tools/WebKitTestRunner/mac/EventSenderProxy.mm_sec2
461
    return;
461
    return;
462
}
462
}
463
463
464
void EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases(int x, int y, int phase, int momentum)
465
{
466
    RetainPtr<CGEventRef> cgScrollEvent = adoptCF(CGEventCreateScrollWheelEvent(0, kCGScrollEventUnitLine, 2, y, x));
467
468
    // CGEvent locations are in global display coordinates.
469
    CGPoint lastGlobalMousePosition = CGPointMake(m_position.x, [[NSScreen mainScreen] frame].size.height - m_position.y);
470
    CGEventSetLocation(cgScrollEvent.get(), lastGlobalMousePosition);
471
472
    CGEventSetIntegerValueField(cgScrollEvent.get(), kCGScrollWheelEventScrollPhase, phase);
473
    CGEventSetIntegerValueField(cgScrollEvent.get(), kCGScrollWheelEventMomentumPhase, momentum);
474
475
    NSEvent* event = [NSEvent eventWithCGEvent: cgScrollEvent.get()];
476
477
    // Our event should have the correct settings:
478
    if (NSView *targetView = [m_testController->mainWebView()->platformView() hitTest: [event locationInWindow]]) {
479
        [NSApp _setCurrentEvent: event];
480
        [targetView scrollWheel: event];
481
        [NSApp _setCurrentEvent: nil];
482
    }
483
}
484
464
} // namespace WTR
485
} // namespace WTR
- LayoutTests/ChangeLog +50 lines
Lines 1-3 LayoutTests/ChangeLog_sec1
1
2014-02-13  Brent Fulgham  <bfulgham@apple.com>
2
3
        Create some latched scrolling tests.
4
        https://bugs.webkit.org/show_bug.cgi?id=127606
5
        <rdar://problem/15911348>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        Add a series of tests to cover desired behavior with wheel events (including momentum).
10
        This behavior is specific to the Mac platform, so is limited to the platform/mac and
11
        platform/mac-wk2 directories.
12
13
        * platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-expected.txt: Added.
14
        * platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-with-handler-expected.txt: Added.
15
        * platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-with-handler.html: Added.
16
        * platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div.html: Added.
17
        * platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-expected.txt: Added.
18
        * platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-with-handler-expected.txt: Added.
19
        * platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-with-handler.html: Added.
20
        * platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe.html: Added.
21
        * platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-expected.txt: Added.
22
        * platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-with-handler-expected.txt: Added.
23
        * platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-with-handler.html: Added.
24
        * platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe.html: Added.
25
        * platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-expected.txt: Added.
26
        * platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-with-handler-expected.txt: Added.
27
        * platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-with-handler.html: Added.
28
        * platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe.html: Added.
29
        * platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-expected.txt: Added.
30
        * platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-with-handler-expected.txt: Added.
31
        * platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-with-handler.html: Added.
32
        * platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe.html: Added.
33
        * platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-expected.txt: Added.
34
        * platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-with-handler-expected.txt: Added.
35
        * platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-with-handler.html: Added.
36
        * platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select.html: Added.
37
        * platform/mac/fast/scrolling: Added.
38
        * platform/mac/fast/scrolling/scroll-div-latched-div-expected.txt: Added.
39
        * platform/mac/fast/scrolling/scroll-div-latched-div.html: Added.
40
        * platform/mac/fast/scrolling/scroll-div-latched-mainframe-expected.txt: Added.
41
        * platform/mac/fast/scrolling/scroll-div-latched-mainframe.html: Added.
42
        * platform/mac/fast/scrolling/scroll-iframe-latched-iframe-expected.txt: Added.
43
        * platform/mac/fast/scrolling/scroll-iframe-latched-iframe.html: Added.
44
        * platform/mac/fast/scrolling/scroll-iframe-latched-mainframe-expected.txt: Added.
45
        * platform/mac/fast/scrolling/scroll-iframe-latched-mainframe.html: Added.
46
        * platform/mac/fast/scrolling/scroll-select-latched-mainframe-expected.txt: Added.
47
        * platform/mac/fast/scrolling/scroll-select-latched-mainframe.html: Added.
48
        * platform/mac/fast/scrolling/scroll-select-latched-select-expected.txt: Added.
49
        * platform/mac/fast/scrolling/scroll-select-latched-select.html: Added.
50
1
2014-02-13  Myles C. Maxfield  <mmaxfield@apple.com>
51
2014-02-13  Myles C. Maxfield  <mmaxfield@apple.com>
2
52
3
        During a copy, position:fixed gets converted to position:absolute even if only part of the document is selected
53
        During a copy, position:fixed gets converted to position:absolute even if only part of the document is selected
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-expected.txt +76 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Region
3
4
Count	DATA	Rev Count
5
TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP
6
1	0.1100	40
7
2	0.1155	39
8
3	0.2200	38
9
4	0.2255	37
10
5	0.3300	36
11
6	0.3355	35
12
7	0.4400	34
13
8	0.4455	33
14
9	0.5500	32
15
10	0.5555	31
16
11	0.6600	30
17
12	0.6655	29
18
13	0.7700	28
19
14	0.7755	27
20
15	0.8800	26
21
16	0.8855	25
22
17	0.9900	24
23
18	0.9955	23
24
19	0.9999	22
25
20	1.0000	21
26
21	1.0000	20
27
22	0.9999	19
28
23	0.9955	18
29
24	0.9900	17
30
25	0.8855	16
31
26	0.8800	15
32
27	0.7755	14
33
28	0.7700	13
34
29	0.6655	12
35
30	0.6600	11
36
31	0.5555	10
37
32	0.5500	9
38
33	0.4455	8
39
34	0.4400	7
40
35	0.3355	6
41
36	0.3300	5
42
37	0.2255	4
43
38	0.2200	3
44
39	0.1155	2
45
40	0.1100	1
46
END END END END END	END END END END END	END END END END END
47
Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom
48
49
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
50
51
52
PASS successfullyParsed is true
53
54
TEST COMPLETE
55
div display height = 485
56
Mouse moved to (28, 610)
57
Page before: 0, div before: 451
58
Page after:  0, div after: 451
59
PASS Page did not receive wheel events.
60
(GraphicsLayer
61
  (bounds 2008.00 2326.00)
62
  (visible rect 0.00, 0.00 785.00 x 585.00)
63
  (contentsScale 1.00)
64
  (children 1
65
    (GraphicsLayer
66
      (bounds 2008.00 2326.00)
67
      (contentsOpaque 1)
68
      (visible rect 0.00, 0.00 785.00 x 585.00)
69
      (contentsScale 1.00)
70
      (tile cache coverage 0, 0 2008 x 2048)
71
      (tile size 512 x 512)
72
      (top left tile 0, 0 tiles grid 4 x 4)
73
    )
74
  )
75
)
76
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-with-handler-expected.txt +77 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-with-handler-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Region
3
4
Count	DATA	Rev Count
5
TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP
6
1	0.1100	40
7
2	0.1155	39
8
3	0.2200	38
9
4	0.2255	37
10
5	0.3300	36
11
6	0.3355	35
12
7	0.4400	34
13
8	0.4455	33
14
9	0.5500	32
15
10	0.5555	31
16
11	0.6600	30
17
12	0.6655	29
18
13	0.7700	28
19
14	0.7755	27
20
15	0.8800	26
21
16	0.8855	25
22
17	0.9900	24
23
18	0.9955	23
24
19	0.9999	22
25
20	1.0000	21
26
21	1.0000	20
27
22	0.9999	19
28
23	0.9955	18
29
24	0.9900	17
30
25	0.8855	16
31
26	0.8800	15
32
27	0.7755	14
33
28	0.7700	13
34
29	0.6655	12
35
30	0.6600	11
36
31	0.5555	10
37
32	0.5500	9
38
33	0.4455	8
39
34	0.4400	7
40
35	0.3355	6
41
36	0.3300	5
42
37	0.2255	4
43
38	0.2200	3
44
39	0.1155	2
45
40	0.1100	1
46
END END END END END	END END END END END	END END END END END
47
Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom
48
49
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
50
51
52
PASS successfullyParsed is true
53
54
TEST COMPLETE
55
div display height = 485
56
Mouse moved to (28, 610)
57
Page before: 0, div before: 451
58
Page after:  0, div after: 451
59
PASS Page did not receive wheel events.
60
Document was initial target for 0 of the wheel events.
61
(GraphicsLayer
62
  (bounds 2008.00 2341.00)
63
  (visible rect 0.00, 0.00 785.00 x 585.00)
64
  (contentsScale 1.00)
65
  (children 1
66
    (GraphicsLayer
67
      (bounds 2008.00 2341.00)
68
      (contentsOpaque 1)
69
      (visible rect 0.00, 0.00 785.00 x 585.00)
70
      (contentsScale 1.00)
71
      (tile cache coverage 0, 0 2008 x 2048)
72
      (tile size 512 x 512)
73
      (top left tile 0, 0 tiles grid 4 x 4)
74
    )
75
  )
76
)
77
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-with-handler.html +182 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-with-handler.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../resources/js-test-pre.js"></script>
29
<script>
30
var wheelCount = 0;
31
function onScrollWheel(evt) {
32
    wheelCount = wheelCount + 1;
33
}
34
35
function onLoad() {
36
    document.addEventListener("mousewheel", onScrollWheel);
37
    setupTopLevel();
38
}
39
</script>
40
</head>
41
<body onload="onLoad();">
42
<script>
43
44
var divTarget;
45
var pageScrollPositionBefore;
46
var divScrollPositionBefore;
47
var continueCount = 5;
48
49
function checkForScroll() {
50
51
    // The div should not have scrolled at all.
52
    var pageScrollPositionAfter = document.body.scrollTop;
53
    var divScrollPositionAfter = divTarget.scrollTop;
54
55
    debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore);
56
    debug("Page after:  " + pageScrollPositionAfter + ", div after: " + divScrollPositionAfter);
57
58
    if (pageScrollPositionBefore != pageScrollPositionAfter)
59
        testFailed("Page received wheel events.");
60
    else
61
        testPassed("Page did not receive wheel events.");
62
63
    debug("Document was initial target for " + wheelCount + " of the wheel events.");
64
65
    if (window.internals) {
66
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
67
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
68
    }
69
70
    testRunner.notifyDone();
71
}
72
73
function scrollTest() {
74
    // See where our IFrame lives:
75
    pageScrollPositionBefore = document.body.scrollTop;
76
77
    divTarget = document.getElementById('target');
78
    divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100;
79
80
    divScrollPositionBefore = divTarget.scrollTop;
81
82
    // Scroll the #source until we reach the #target.
83
    var startPosX = divTarget.offsetLeft + 20;
84
    debug("div display height = " + divTarget.clientHeight);
85
    var startPosY = divTarget.offsetTop + divTarget.clientHeight - 42; // One wheel turn before end.
86
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
87
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
88
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
89
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
90
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
91
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
92
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
93
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
94
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
95
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
96
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
97
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
98
    setTimeout(checkForScroll, 100);
99
}
100
101
function setupTopLevel() {
102
103
    if (window.eventSender) {
104
        testRunner.dumpAsText(true);
105
        testRunner.waitUntilDone();
106
107
        setTimeout(scrollTest, 1000);
108
    } else {
109
        var messageLocation = document.getElementById('parent');
110
        var message = document.createElement('div');
111
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
112
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
113
            + "down past the div.<br/><br/>"
114
            + "You should not see the row of END labels if this test is successful.</p>";
115
        messageLocation.appendChild(message);
116
    }
117
}
118
119
</script>
120
<div id="parent" style="height: 2000px; width: 2000px;">
121
    <div id="source" style="height: 100px; width: 500px;">
122
        Put mouse here and flick downwards
123
    </div>
124
    <div class="scrollable_region">
125
        <h3>Scrollable Region</h3>
126
        <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 485px;'>
127
            <table class="table" style='width: 99%'>
128
                <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr>
129
                <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr>
130
                <tr><td>1</td><td>0.1100</td><td>40</td></tr>
131
                <tr><td>2</td><td>0.1155</td><td>39</td></tr>
132
                <tr><td>3</td><td>0.2200</td><td>38</td></tr>
133
                <tr><td>4</td><td>0.2255</td><td>37</td></tr>
134
                <tr><td>5</td><td>0.3300</td><td>36</td></tr>
135
                <tr><td>6</td><td>0.3355</td><td>35</td></tr>
136
                <tr><td>7</td><td>0.4400</td><td>34</td></tr>
137
                <tr><td>8</td><td>0.4455</td><td>33</td></tr>
138
                <tr><td>9</td><td>0.5500</td><td>32</td></tr>
139
                <tr><td>10</td><td>0.5555</td><td>31</td></tr>
140
                <tr><td>11</td><td>0.6600</td><td>30</td></tr>
141
                <tr><td>12</td><td>0.6655</td><td>29</td></tr>
142
                <tr><td>13</td><td>0.7700</td><td>28</td></tr>
143
                <tr><td>14</td><td>0.7755</td><td>27</td></tr>
144
                <tr><td>15</td><td>0.8800</td><td>26</td></tr>
145
                <tr><td>16</td><td>0.8855</td><td>25</td></tr>
146
                <tr><td>17</td><td>0.9900</td><td>24</td></tr>
147
                <tr><td>18</td><td>0.9955</td><td>23</td></tr>
148
                <tr><td>19</td><td>0.9999</td><td>22</td></tr>
149
                <tr><td>20</td><td>1.0000</td><td>21</td></tr>
150
                <tr><td>21</td><td>1.0000</td><td>20</td></tr>
151
                <tr><td>22</td><td>0.9999</td><td>19</td></tr>
152
                <tr><td>23</td><td>0.9955</td><td>18</td></tr>
153
                <tr><td>24</td><td>0.9900</td><td>17</td></tr>
154
                <tr><td>25</td><td>0.8855</td><td>16</td></tr>
155
                <tr><td>26</td><td>0.8800</td><td>15</td></tr>
156
                <tr><td>27</td><td>0.7755</td><td>14</td></tr>
157
                <tr><td>28</td><td>0.7700</td><td>13</td></tr>
158
                <tr><td>29</td><td>0.6655</td><td>12</td></tr>
159
                <tr><td>30</td><td>0.6600</td><td>11</td></tr>
160
                <tr><td>31</td><td>0.5555</td><td>10</td></tr>
161
                <tr><td>32</td><td>0.5500</td><td>9</td></tr>
162
                <tr><td>33</td><td>0.4455</td><td>8</td></tr>
163
                <tr><td>34</td><td>0.4400</td><td>7</td></tr>
164
                <tr><td>35</td><td>0.3355</td><td>6</td></tr>
165
                <tr><td>36</td><td>0.3300</td><td>5</td></tr>
166
                <tr><td>37</td><td>0.2255</td><td>4</td></tr>
167
                <tr><td>38</td><td>0.2200</td><td>3</td></tr>
168
                <tr><td>39</td><td>0.1155</td><td>2</td></tr>
169
                <tr><td>40</td><td>0.1100</td><td>1</td></tr>
170
                <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr>
171
            </table>
172
        </div>
173
    </div>
174
</div>
175
<div id="console"></div>
176
<script>
177
description("Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom");
178
</script>
179
<pre id="layers">Layer tree goes here</p>
180
<script src="../../../resources/js-test-post.js"></script>
181
</body>
182
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div.html +174 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../resources/js-test-pre.js"></script>
29
<script>
30
function onLoad() {
31
    setupTopLevel();
32
}
33
</script>
34
</head>
35
<body onload="onLoad();">
36
<script>
37
38
var divTarget;
39
var pageScrollPositionBefore;
40
var divScrollPositionBefore;
41
var continueCount = 5;
42
43
function checkForScroll() {
44
45
    // The div should not have scrolled at all.
46
    var pageScrollPositionAfter = document.body.scrollTop;
47
    var divScrollPositionAfter = divTarget.scrollTop;
48
49
    debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore);
50
    debug("Page after:  " + pageScrollPositionAfter + ", div after: " + divScrollPositionAfter);
51
52
    if (pageScrollPositionBefore != pageScrollPositionAfter)
53
        testFailed("Page received wheel events.");
54
    else
55
        testPassed("Page did not receive wheel events.");
56
57
    if (window.internals) {
58
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
59
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
60
    }
61
62
    testRunner.notifyDone();
63
}
64
65
function scrollTest() {
66
    // See where our IFrame lives:
67
    pageScrollPositionBefore = document.body.scrollTop;
68
69
    divTarget = document.getElementById('target');
70
    divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100;
71
72
    divScrollPositionBefore = divTarget.scrollTop;
73
74
    // Scroll the #source until we reach the #target.
75
    var startPosX = divTarget.offsetLeft + 20;
76
    debug("div display height = " + divTarget.clientHeight);
77
    var startPosY = divTarget.offsetTop + divTarget.clientHeight - 42; // One wheel turn before end.
78
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
79
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
80
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
81
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
82
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
83
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
84
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
85
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
86
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
87
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
88
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
89
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
90
    setTimeout(checkForScroll, 100);
91
}
92
93
function setupTopLevel() {
94
95
    if (window.eventSender) {
96
        testRunner.dumpAsText(true);
97
        testRunner.waitUntilDone();
98
99
        setTimeout(scrollTest, 1000);
100
    } else {
101
        var messageLocation = document.getElementById('parent');
102
        var message = document.createElement('div');
103
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
104
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
105
            + "down past the div.<br/><br/>"
106
            + "You should not see the row of END labels if this test is successful.</p>";
107
        messageLocation.appendChild(message);
108
    }
109
}
110
111
</script>
112
<div id="parent" style="height: 2000px; width: 2000px;">
113
    <div id="source" style="height: 100px; width: 500px;">
114
        Put mouse here and flick downwards
115
    </div>
116
    <div class="scrollable_region">
117
        <h3>Scrollable Region</h3>
118
        <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 485px;'>
119
            <table class="table" style='width: 99%'>
120
                <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr>
121
                <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr>
122
                <tr><td>1</td><td>0.1100</td><td>40</td></tr>
123
                <tr><td>2</td><td>0.1155</td><td>39</td></tr>
124
                <tr><td>3</td><td>0.2200</td><td>38</td></tr>
125
                <tr><td>4</td><td>0.2255</td><td>37</td></tr>
126
                <tr><td>5</td><td>0.3300</td><td>36</td></tr>
127
                <tr><td>6</td><td>0.3355</td><td>35</td></tr>
128
                <tr><td>7</td><td>0.4400</td><td>34</td></tr>
129
                <tr><td>8</td><td>0.4455</td><td>33</td></tr>
130
                <tr><td>9</td><td>0.5500</td><td>32</td></tr>
131
                <tr><td>10</td><td>0.5555</td><td>31</td></tr>
132
                <tr><td>11</td><td>0.6600</td><td>30</td></tr>
133
                <tr><td>12</td><td>0.6655</td><td>29</td></tr>
134
                <tr><td>13</td><td>0.7700</td><td>28</td></tr>
135
                <tr><td>14</td><td>0.7755</td><td>27</td></tr>
136
                <tr><td>15</td><td>0.8800</td><td>26</td></tr>
137
                <tr><td>16</td><td>0.8855</td><td>25</td></tr>
138
                <tr><td>17</td><td>0.9900</td><td>24</td></tr>
139
                <tr><td>18</td><td>0.9955</td><td>23</td></tr>
140
                <tr><td>19</td><td>0.9999</td><td>22</td></tr>
141
                <tr><td>20</td><td>1.0000</td><td>21</td></tr>
142
                <tr><td>21</td><td>1.0000</td><td>20</td></tr>
143
                <tr><td>22</td><td>0.9999</td><td>19</td></tr>
144
                <tr><td>23</td><td>0.9955</td><td>18</td></tr>
145
                <tr><td>24</td><td>0.9900</td><td>17</td></tr>
146
                <tr><td>25</td><td>0.8855</td><td>16</td></tr>
147
                <tr><td>26</td><td>0.8800</td><td>15</td></tr>
148
                <tr><td>27</td><td>0.7755</td><td>14</td></tr>
149
                <tr><td>28</td><td>0.7700</td><td>13</td></tr>
150
                <tr><td>29</td><td>0.6655</td><td>12</td></tr>
151
                <tr><td>30</td><td>0.6600</td><td>11</td></tr>
152
                <tr><td>31</td><td>0.5555</td><td>10</td></tr>
153
                <tr><td>32</td><td>0.5500</td><td>9</td></tr>
154
                <tr><td>33</td><td>0.4455</td><td>8</td></tr>
155
                <tr><td>34</td><td>0.4400</td><td>7</td></tr>
156
                <tr><td>35</td><td>0.3355</td><td>6</td></tr>
157
                <tr><td>36</td><td>0.3300</td><td>5</td></tr>
158
                <tr><td>37</td><td>0.2255</td><td>4</td></tr>
159
                <tr><td>38</td><td>0.2200</td><td>3</td></tr>
160
                <tr><td>39</td><td>0.1155</td><td>2</td></tr>
161
                <tr><td>40</td><td>0.1100</td><td>1</td></tr>
162
                <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr>
163
            </table>
164
        </div>
165
    </div>
166
</div>
167
<div id="console"></div>
168
<script>
169
description("Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom");
170
</script>
171
<pre id="layers">Layer tree goes here</p>
172
<script src="../../../resources/js-test-post.js"></script>
173
</body>
174
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-expected.txt +75 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Region
3
4
Count	DATA	Rev Count
5
TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP
6
1	0.1100	40
7
2	0.1155	39
8
3	0.2200	38
9
4	0.2255	37
10
5	0.3300	36
11
6	0.3355	35
12
7	0.4400	34
13
8	0.4455	33
14
9	0.5500	32
15
10	0.5555	31
16
11	0.6600	30
17
12	0.6655	29
18
13	0.7700	28
19
14	0.7755	27
20
15	0.8800	26
21
16	0.8855	25
22
17	0.9900	24
23
18	0.9955	23
24
19	0.9999	22
25
20	1.0000	21
26
21	1.0000	20
27
22	0.9999	19
28
23	0.9955	18
29
24	0.9900	17
30
25	0.8855	16
31
26	0.8800	15
32
27	0.7755	14
33
28	0.7700	13
34
29	0.6655	12
35
30	0.6600	11
36
31	0.5555	10
37
32	0.5500	9
38
33	0.4455	8
39
34	0.4400	7
40
35	0.3355	6
41
36	0.3300	5
42
37	0.2255	4
43
38	0.2200	3
44
39	0.1155	2
45
40	0.1100	1
46
END END END END END	END END END END END	END END END END END
47
Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame.
48
49
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
50
51
52
PASS successfullyParsed is true
53
54
TEST COMPLETE
55
Mouse moved to (28, 125)
56
Page before: 0, div before: 0
57
Page after:  280, div after: 0
58
PASS Scrollable div did not receive wheel events.
59
(GraphicsLayer
60
  (bounds 2008.00 2311.00)
61
  (visible rect 0.00, 280.00 785.00 x 585.00)
62
  (contentsScale 1.00)
63
  (children 1
64
    (GraphicsLayer
65
      (bounds 2008.00 2311.00)
66
      (contentsOpaque 1)
67
      (visible rect 0.00, 280.00 785.00 x 585.00)
68
      (contentsScale 1.00)
69
      (tile cache coverage 0, 0 2008 x 2048)
70
      (tile size 512 x 512)
71
      (top left tile 0, 0 tiles grid 4 x 4)
72
    )
73
  )
74
)
75
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-with-handler-expected.txt +76 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-with-handler-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Region
3
4
Count	DATA	Rev Count
5
TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP
6
1	0.1100	40
7
2	0.1155	39
8
3	0.2200	38
9
4	0.2255	37
10
5	0.3300	36
11
6	0.3355	35
12
7	0.4400	34
13
8	0.4455	33
14
9	0.5500	32
15
10	0.5555	31
16
11	0.6600	30
17
12	0.6655	29
18
13	0.7700	28
19
14	0.7755	27
20
15	0.8800	26
21
16	0.8855	25
22
17	0.9900	24
23
18	0.9955	23
24
19	0.9999	22
25
20	1.0000	21
26
21	1.0000	20
27
22	0.9999	19
28
23	0.9955	18
29
24	0.9900	17
30
25	0.8855	16
31
26	0.8800	15
32
27	0.7755	14
33
28	0.7700	13
34
29	0.6655	12
35
30	0.6600	11
36
31	0.5555	10
37
32	0.5500	9
38
33	0.4455	8
39
34	0.4400	7
40
35	0.3355	6
41
36	0.3300	5
42
37	0.2255	4
43
38	0.2200	3
44
39	0.1155	2
45
40	0.1100	1
46
END END END END END	END END END END END	END END END END END
47
Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame.
48
49
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
50
51
52
PASS successfullyParsed is true
53
54
TEST COMPLETE
55
Mouse moved to (28, 125)
56
Page before: 0, div before: 0
57
Page after:  280, div after: 0
58
PASS Scrollable div did not receive wheel events.
59
Document was initial target for 4 of the wheel events.
60
(GraphicsLayer
61
  (bounds 2008.00 2326.00)
62
  (visible rect 0.00, 280.00 785.00 x 585.00)
63
  (contentsScale 1.00)
64
  (children 1
65
    (GraphicsLayer
66
      (bounds 2008.00 2326.00)
67
      (contentsOpaque 1)
68
      (visible rect 0.00, 280.00 785.00 x 585.00)
69
      (contentsScale 1.00)
70
      (tile cache coverage 0, 0 2008 x 2048)
71
      (tile size 512 x 512)
72
      (top left tile 0, 0 tiles grid 4 x 4)
73
    )
74
  )
75
)
76
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-with-handler.html +180 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-with-handler.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../resources/js-test-pre.js"></script>
29
<script>
30
var wheelCount = 0;
31
function onScrollWheel(evt) {
32
    wheelCount = wheelCount + 1;
33
}
34
35
function onLoad() {
36
    document.addEventListener("mousewheel", onScrollWheel);
37
    setupTopLevel();
38
}
39
</script>
40
</head>
41
<body onload="onLoad();">
42
<script>
43
44
var divTarget;
45
var pageScrollPositionBefore;
46
var divScrollPositionBefore;
47
var continueCount = 5;
48
49
function checkForScroll() {
50
51
    // The div should not have scrolled at all.
52
    var pageScrollPositionAfter = document.body.scrollTop;
53
    var divScrollPositionAfter = divTarget.scrollTop;
54
55
    debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore);
56
    debug("Page after:  " + pageScrollPositionAfter + ", div after: " + divScrollPositionAfter);
57
58
    if (divScrollPositionBefore != divScrollPositionAfter)
59
        testFailed("Scrollable div consumed wheel events.");
60
    else
61
        testPassed("Scrollable div did not receive wheel events.");
62
63
    debug("Document was initial target for " + wheelCount + " of the wheel events.");
64
65
    if (window.internals) {
66
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
67
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
68
    }
69
70
    testRunner.notifyDone();
71
}
72
73
function scrollTest() {
74
    // See where our IFrame lives:
75
    pageScrollPositionBefore = document.body.scrollTop;
76
77
    divTarget = document.getElementById('target');
78
79
    divScrollPositionBefore = divTarget.scrollTop;
80
81
    // Scroll the #source until we reach the #target.
82
    var startPosX = divTarget.offsetLeft + 20;
83
    var startPosY = divTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame
84
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
85
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
86
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
87
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
88
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
89
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
90
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
91
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
92
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
93
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
94
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
95
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
96
    setTimeout(checkForScroll, 100);
97
}
98
99
function setupTopLevel() {
100
101
    if (window.eventSender) {
102
        testRunner.dumpAsText(true);
103
        testRunner.waitUntilDone();
104
105
        setTimeout(scrollTest, 1000);
106
    } else {
107
        var messageLocation = document.getElementById('parent');
108
        var message = document.createElement('div');
109
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
110
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
111
            + "down past the div.<br/><br/>"
112
            + "You should not see the row of END labels if this test is successful.</p>";
113
        messageLocation.appendChild(message);
114
    }
115
}
116
117
</script>
118
<div id="parent" style="height: 2000px; width: 2000px;">
119
    <div id="source" style="height: 100px; width: 500px;">
120
        Put mouse here and flick downwards
121
    </div>
122
    <div class="scrollable_region">
123
        <h3>Scrollable Region</h3>
124
        <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 485px;'>
125
            <table class="table" style='width: 99%'>
126
                <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr>
127
                <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr>
128
                <tr><td>1</td><td>0.1100</td><td>40</td></tr>
129
                <tr><td>2</td><td>0.1155</td><td>39</td></tr>
130
                <tr><td>3</td><td>0.2200</td><td>38</td></tr>
131
                <tr><td>4</td><td>0.2255</td><td>37</td></tr>
132
                <tr><td>5</td><td>0.3300</td><td>36</td></tr>
133
                <tr><td>6</td><td>0.3355</td><td>35</td></tr>
134
                <tr><td>7</td><td>0.4400</td><td>34</td></tr>
135
                <tr><td>8</td><td>0.4455</td><td>33</td></tr>
136
                <tr><td>9</td><td>0.5500</td><td>32</td></tr>
137
                <tr><td>10</td><td>0.5555</td><td>31</td></tr>
138
                <tr><td>11</td><td>0.6600</td><td>30</td></tr>
139
                <tr><td>12</td><td>0.6655</td><td>29</td></tr>
140
                <tr><td>13</td><td>0.7700</td><td>28</td></tr>
141
                <tr><td>14</td><td>0.7755</td><td>27</td></tr>
142
                <tr><td>15</td><td>0.8800</td><td>26</td></tr>
143
                <tr><td>16</td><td>0.8855</td><td>25</td></tr>
144
                <tr><td>17</td><td>0.9900</td><td>24</td></tr>
145
                <tr><td>18</td><td>0.9955</td><td>23</td></tr>
146
                <tr><td>19</td><td>0.9999</td><td>22</td></tr>
147
                <tr><td>20</td><td>1.0000</td><td>21</td></tr>
148
                <tr><td>21</td><td>1.0000</td><td>20</td></tr>
149
                <tr><td>22</td><td>0.9999</td><td>19</td></tr>
150
                <tr><td>23</td><td>0.9955</td><td>18</td></tr>
151
                <tr><td>24</td><td>0.9900</td><td>17</td></tr>
152
                <tr><td>25</td><td>0.8855</td><td>16</td></tr>
153
                <tr><td>26</td><td>0.8800</td><td>15</td></tr>
154
                <tr><td>27</td><td>0.7755</td><td>14</td></tr>
155
                <tr><td>28</td><td>0.7700</td><td>13</td></tr>
156
                <tr><td>29</td><td>0.6655</td><td>12</td></tr>
157
                <tr><td>30</td><td>0.6600</td><td>11</td></tr>
158
                <tr><td>31</td><td>0.5555</td><td>10</td></tr>
159
                <tr><td>32</td><td>0.5500</td><td>9</td></tr>
160
                <tr><td>33</td><td>0.4455</td><td>8</td></tr>
161
                <tr><td>34</td><td>0.4400</td><td>7</td></tr>
162
                <tr><td>35</td><td>0.3355</td><td>6</td></tr>
163
                <tr><td>36</td><td>0.3300</td><td>5</td></tr>
164
                <tr><td>37</td><td>0.2255</td><td>4</td></tr>
165
                <tr><td>38</td><td>0.2200</td><td>3</td></tr>
166
                <tr><td>39</td><td>0.1155</td><td>2</td></tr>
167
                <tr><td>40</td><td>0.1100</td><td>1</td></tr>
168
                <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr>
169
            </table>
170
        </div>
171
    </div>
172
</div>
173
<div id="console"></div>
174
<script>
175
description("Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame.");
176
</script>
177
<pre id="layers">Layer tree goes here</p>
178
<script src="../../../resources/js-test-post.js"></script>
179
</body>
180
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe.html +172 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../resources/js-test-pre.js"></script>
29
<script>
30
function onLoad() {
31
    setupTopLevel();
32
}
33
</script>
34
</head>
35
<body onload="onLoad();">
36
<script>
37
38
var divTarget;
39
var pageScrollPositionBefore;
40
var divScrollPositionBefore;
41
var continueCount = 5;
42
43
function checkForScroll() {
44
45
    // The div should not have scrolled at all.
46
    var pageScrollPositionAfter = document.body.scrollTop;
47
    var divScrollPositionAfter = divTarget.scrollTop;
48
49
    debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore);
50
    debug("Page after:  " + pageScrollPositionAfter + ", div after: " + divScrollPositionAfter);
51
52
    if (divScrollPositionBefore != divScrollPositionAfter)
53
        testFailed("Scrollable div consumed wheel events.");
54
    else
55
        testPassed("Scrollable div did not receive wheel events.");
56
57
    if (window.internals) {
58
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
59
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
60
    }
61
62
    testRunner.notifyDone();
63
}
64
65
function scrollTest() {
66
    // See where our IFrame lives:
67
    pageScrollPositionBefore = document.body.scrollTop;
68
69
    divTarget = document.getElementById('target');
70
71
    divScrollPositionBefore = divTarget.scrollTop;
72
73
    // Scroll the #source until we reach the #target.
74
    var startPosX = divTarget.offsetLeft + 20;
75
    var startPosY = divTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame
76
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
77
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
78
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
79
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
80
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
81
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
82
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
83
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
84
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
85
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
86
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
87
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
88
    setTimeout(checkForScroll, 100);
89
}
90
91
function setupTopLevel() {
92
93
    if (window.eventSender) {
94
        testRunner.dumpAsText(true);
95
        testRunner.waitUntilDone();
96
97
        setTimeout(scrollTest, 1000);
98
    } else {
99
        var messageLocation = document.getElementById('parent');
100
        var message = document.createElement('div');
101
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
102
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
103
            + "down past the div.<br/><br/>"
104
            + "You should not see the row of END labels if this test is successful.</p>";
105
        messageLocation.appendChild(message);
106
    }
107
}
108
109
</script>
110
<div id="parent" style="height: 2000px; width: 2000px;">
111
    <div id="source" style="height: 100px; width: 500px;">
112
        Put mouse here and flick downwards
113
    </div>
114
    <div class="scrollable_region">
115
        <h3>Scrollable Region</h3>
116
        <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 485px;'>
117
            <table class="table" style='width: 99%'>
118
                <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr>
119
                <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr>
120
                <tr><td>1</td><td>0.1100</td><td>40</td></tr>
121
                <tr><td>2</td><td>0.1155</td><td>39</td></tr>
122
                <tr><td>3</td><td>0.2200</td><td>38</td></tr>
123
                <tr><td>4</td><td>0.2255</td><td>37</td></tr>
124
                <tr><td>5</td><td>0.3300</td><td>36</td></tr>
125
                <tr><td>6</td><td>0.3355</td><td>35</td></tr>
126
                <tr><td>7</td><td>0.4400</td><td>34</td></tr>
127
                <tr><td>8</td><td>0.4455</td><td>33</td></tr>
128
                <tr><td>9</td><td>0.5500</td><td>32</td></tr>
129
                <tr><td>10</td><td>0.5555</td><td>31</td></tr>
130
                <tr><td>11</td><td>0.6600</td><td>30</td></tr>
131
                <tr><td>12</td><td>0.6655</td><td>29</td></tr>
132
                <tr><td>13</td><td>0.7700</td><td>28</td></tr>
133
                <tr><td>14</td><td>0.7755</td><td>27</td></tr>
134
                <tr><td>15</td><td>0.8800</td><td>26</td></tr>
135
                <tr><td>16</td><td>0.8855</td><td>25</td></tr>
136
                <tr><td>17</td><td>0.9900</td><td>24</td></tr>
137
                <tr><td>18</td><td>0.9955</td><td>23</td></tr>
138
                <tr><td>19</td><td>0.9999</td><td>22</td></tr>
139
                <tr><td>20</td><td>1.0000</td><td>21</td></tr>
140
                <tr><td>21</td><td>1.0000</td><td>20</td></tr>
141
                <tr><td>22</td><td>0.9999</td><td>19</td></tr>
142
                <tr><td>23</td><td>0.9955</td><td>18</td></tr>
143
                <tr><td>24</td><td>0.9900</td><td>17</td></tr>
144
                <tr><td>25</td><td>0.8855</td><td>16</td></tr>
145
                <tr><td>26</td><td>0.8800</td><td>15</td></tr>
146
                <tr><td>27</td><td>0.7755</td><td>14</td></tr>
147
                <tr><td>28</td><td>0.7700</td><td>13</td></tr>
148
                <tr><td>29</td><td>0.6655</td><td>12</td></tr>
149
                <tr><td>30</td><td>0.6600</td><td>11</td></tr>
150
                <tr><td>31</td><td>0.5555</td><td>10</td></tr>
151
                <tr><td>32</td><td>0.5500</td><td>9</td></tr>
152
                <tr><td>33</td><td>0.4455</td><td>8</td></tr>
153
                <tr><td>34</td><td>0.4400</td><td>7</td></tr>
154
                <tr><td>35</td><td>0.3355</td><td>6</td></tr>
155
                <tr><td>36</td><td>0.3300</td><td>5</td></tr>
156
                <tr><td>37</td><td>0.2255</td><td>4</td></tr>
157
                <tr><td>38</td><td>0.2200</td><td>3</td></tr>
158
                <tr><td>39</td><td>0.1155</td><td>2</td></tr>
159
                <tr><td>40</td><td>0.1100</td><td>1</td></tr>
160
                <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr>
161
            </table>
162
        </div>
163
    </div>
164
</div>
165
<div id="console"></div>
166
<script>
167
description("Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame.");
168
</script>
169
<pre id="layers">Layer tree goes here</p>
170
<script src="../../../resources/js-test-post.js"></script>
171
</body>
172
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-expected.txt +32 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-expected.txt_sec1
1
Put mouse here and flick downwards
2
3
Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom
4
5
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
6
7
8
PASS successfullyParsed is true
9
10
TEST COMPLETE
11
IFrame display height = 500
12
Mouse moved to (28, 566)
13
Page before: 0, IFrame before: 416
14
Page after:  0, IFrame after: 531
15
PASS Page did not receive wheel events.
16
(GraphicsLayer
17
  (bounds 785.00 2326.00)
18
  (visible rect 0.00, 0.00 785.00 x 600.00)
19
  (contentsScale 1.00)
20
  (children 1
21
    (GraphicsLayer
22
      (bounds 785.00 2326.00)
23
      (contentsOpaque 1)
24
      (visible rect 0.00, 0.00 785.00 x 600.00)
25
      (contentsScale 1.00)
26
      (tile cache coverage 0, 0 785 x 2048)
27
      (tile size 512 x 512)
28
      (top left tile 0, 0 tiles grid 2 x 4)
29
    )
30
  )
31
)
32
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-with-handler-expected.txt +33 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-with-handler-expected.txt_sec1
1
Put mouse here and flick downwards
2
3
Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom
4
5
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
6
7
8
PASS successfullyParsed is true
9
10
TEST COMPLETE
11
IFrame display height = 500
12
Mouse moved to (28, 566)
13
Page before: 0, IFrame before: 416
14
Page after:  0, IFrame after: 531
15
PASS Page did not receive wheel events.
16
Document was initial target for 0 of the wheel events.
17
(GraphicsLayer
18
  (bounds 785.00 2341.00)
19
  (visible rect 0.00, 0.00 785.00 x 600.00)
20
  (contentsScale 1.00)
21
  (children 1
22
    (GraphicsLayer
23
      (bounds 785.00 2341.00)
24
      (contentsOpaque 1)
25
      (visible rect 0.00, 0.00 785.00 x 600.00)
26
      (contentsScale 1.00)
27
      (tile cache coverage 0, 0 785 x 2048)
28
      (tile size 512 x 512)
29
      (top left tile 0, 0 tiles grid 2 x 4)
30
    )
31
  )
32
)
33
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-with-handler.html +126 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-with-handler.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
5
<script src="../../../resources/js-test-pre.js"></script>
6
<script>
7
var wheelCount = 0;
8
function onScrollWheel(evt) {
9
    wheelCount = wheelCount + 1;
10
}
11
12
function onLoad() {
13
    document.addEventListener("mousewheel", onScrollWheel);
14
}
15
</script>
16
</head>
17
<body onload="onLoad();">
18
<script>
19
20
var iframeTarget;
21
var pageScrollPositionBefore;
22
var iFrameScrollPositionBefore;
23
var continueCount = 5;
24
25
function checkForScroll() {
26
27
    // The IFrame should not have scrolled at all.
28
    var pageScrollPositionAfter = document.body.scrollTop;
29
    var iFrameScrollPositionAfter = window.frames['target'].document.body.scrollTop;
30
31
    debug("Page before: " + pageScrollPositionBefore + ", IFrame before: " + iFrameScrollPositionBefore);
32
    debug("Page after:  " + pageScrollPositionAfter + ", IFrame after: " + iFrameScrollPositionAfter);
33
34
    if (pageScrollPositionBefore != pageScrollPositionAfter)
35
        testFailed("Page received wheel events.");
36
    else
37
        testPassed("Page did not receive wheel events.");
38
39
    debug("Document was initial target for " + wheelCount + " of the wheel events.");
40
41
    if (window.internals) {
42
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
43
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
44
    }
45
46
    testRunner.notifyDone();
47
}
48
49
function scrollTest() {
50
    // See where our IFrame lives:
51
    pageScrollPositionBefore = document.body.scrollTop;
52
53
    iframeTarget = document.getElementById('target');
54
55
    var iFrameBody = window.frames['target'].document.body;
56
    iFrameBody.scrollTop = iFrameBody.scrollHeight - iframeTarget.clientHeight - 100;
57
58
    iFrameScrollPositionBefore = iFrameBody.scrollTop;
59
60
    // Scroll the #source until we reach the #target.
61
    var startPosX = iframeTarget.offsetLeft + 20;
62
    debug("IFrame display height = " + iframeTarget.clientHeight);
63
    var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end.
64
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
65
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
66
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
67
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
68
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
69
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
70
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
71
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
72
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
73
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
74
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
75
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
76
    setTimeout(checkForScroll, 100);
77
}
78
79
function setupTopLevel() {
80
81
    if (window.eventSender) {
82
        testRunner.dumpAsText(true);
83
        testRunner.waitUntilDone();
84
85
        setTimeout(scrollTest, 1000);
86
    } else {
87
        var messageLocation = document.getElementById('parent');
88
        var message = document.createElement('div');
89
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
90
            + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"
91
            + "<br/><br/>"
92
            + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
93
        messageLocation.appendChild(message);
94
    }
95
}
96
97
</script>
98
<div id="parent" style="height: 2000px">
99
    <div id="source" style="height: 100px">
100
        Put mouse here and flick downwards
101
    </div>
102
    <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 
103
     src= "data:text/html,
104
     <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
105
     TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
106
     This should still be visible inside the frame after you scroll down
107
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
108
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
109
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
110
     This should NOT be visible inside the frame after you scroll down<br/>
111
     <br/>
112
     END END END END END END END END END END END END END
113
     </div>
114
     "
115
     onload="setupTopLevel();"
116
     >
117
    </iframe>
118
</div>
119
<div id="console"></div>
120
<script>
121
description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
122
</script>
123
<pre id="layers">Layer tree goes here</p>
124
<script src="../../../resources/js-test-post.js"></script>
125
</body>
126
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe.html +114 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
5
<script src="../../../resources/js-test-pre.js"></script>
6
</head>
7
<body>
8
<script>
9
10
var iframeTarget;
11
var pageScrollPositionBefore;
12
var iFrameScrollPositionBefore;
13
var continueCount = 5;
14
15
function checkForScroll() {
16
17
    // The IFrame should not have scrolled at all.
18
    var pageScrollPositionAfter = document.body.scrollTop;
19
    var iFrameScrollPositionAfter = window.frames['target'].document.body.scrollTop;
20
21
    debug("Page before: " + pageScrollPositionBefore + ", IFrame before: " + iFrameScrollPositionBefore);
22
    debug("Page after:  " + pageScrollPositionAfter + ", IFrame after: " + iFrameScrollPositionAfter);
23
24
    if (pageScrollPositionBefore != pageScrollPositionAfter)
25
        testFailed("Page received wheel events.");
26
    else
27
        testPassed("Page did not receive wheel events.");
28
29
    if (window.internals) {
30
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
31
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
32
    }
33
34
    testRunner.notifyDone();
35
}
36
37
function scrollTest() {
38
    // See where our IFrame lives:
39
    pageScrollPositionBefore = document.body.scrollTop;
40
41
    iframeTarget = document.getElementById('target');
42
43
    var iFrameBody = window.frames['target'].document.body;
44
    iFrameBody.scrollTop = iFrameBody.scrollHeight - iframeTarget.clientHeight - 100;
45
46
    iFrameScrollPositionBefore = iFrameBody.scrollTop;
47
48
    // Scroll the #source until we reach the #target.
49
    var startPosX = iframeTarget.offsetLeft + 20;
50
    debug("IFrame display height = " + iframeTarget.clientHeight);
51
    var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end.
52
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
53
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
54
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
55
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
56
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
57
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
58
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
59
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
60
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
61
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
62
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
63
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
64
    setTimeout(checkForScroll, 100);
65
}
66
67
function setupTopLevel() {
68
69
    if (window.eventSender) {
70
        testRunner.dumpAsText(true);
71
        testRunner.waitUntilDone();
72
73
        setTimeout(scrollTest, 1000);
74
    } else {
75
        var messageLocation = document.getElementById('parent');
76
        var message = document.createElement('div');
77
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
78
            + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"
79
            + "<br/><br/>"
80
            + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
81
        messageLocation.appendChild(message);
82
    }
83
}
84
85
</script>
86
<div id="parent" style="height: 2000px">
87
    <div id="source" style="height: 100px">
88
        Put mouse here and flick downwards
89
    </div>
90
    <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 
91
     src= "data:text/html,
92
     <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
93
     TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
94
     This should still be visible inside the frame after you scroll down
95
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
96
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
97
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
98
     This should NOT be visible inside the frame after you scroll down<br/>
99
     <br/>
100
     END END END END END END END END END END END END END
101
     </div>
102
     "
103
     onload="setupTopLevel();"
104
     >
105
    </iframe>
106
</div>
107
<div id="console"></div>
108
<script>
109
description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
110
</script>
111
<pre id="layers">Layer tree goes here</p>
112
<script src="../../../resources/js-test-post.js"></script>
113
</body>
114
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-expected.txt +31 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-expected.txt_sec1
1
Put mouse here and flick downwards
2
3
Tests that iframe doesn't consume wheel events when scroll
4
5
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
6
7
8
PASS successfullyParsed is true
9
10
TEST COMPLETE
11
Mouse moved to (28, 66)
12
Page before: 0, IFrame before: 0
13
Page after:  280, IFrame after: 0
14
PASS IFrame did not receive wheel events.
15
(GraphicsLayer
16
  (bounds 785.00 2311.00)
17
  (visible rect 0.00, 280.00 785.00 x 600.00)
18
  (contentsScale 1.00)
19
  (children 1
20
    (GraphicsLayer
21
      (bounds 785.00 2311.00)
22
      (contentsOpaque 1)
23
      (visible rect 0.00, 280.00 785.00 x 600.00)
24
      (contentsScale 1.00)
25
      (tile cache coverage 0, 0 785 x 2048)
26
      (tile size 512 x 512)
27
      (top left tile 0, 0 tiles grid 2 x 4)
28
    )
29
  )
30
)
31
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-with-handler-expected.txt +32 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-with-handler-expected.txt_sec1
1
Put mouse here and flick downwards
2
3
Tests that iframe doesn't consume wheel events when scroll
4
5
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
6
7
8
PASS successfullyParsed is true
9
10
TEST COMPLETE
11
Mouse moved to (28, 66)
12
Page before: 0, IFrame before: 0
13
Page after:  280, IFrame after: 0
14
PASS IFrame did not receive wheel events.
15
Document was initial target for 4 of the wheel events.
16
(GraphicsLayer
17
  (bounds 785.00 2326.00)
18
  (visible rect 0.00, 280.00 785.00 x 600.00)
19
  (contentsScale 1.00)
20
  (children 1
21
    (GraphicsLayer
22
      (bounds 785.00 2326.00)
23
      (contentsOpaque 1)
24
      (visible rect 0.00, 280.00 785.00 x 600.00)
25
      (contentsScale 1.00)
26
      (tile cache coverage 0, 0 785 x 2048)
27
      (tile size 512 x 512)
28
      (top left tile 0, 0 tiles grid 2 x 4)
29
    )
30
  )
31
)
32
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-with-handler.html +121 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-with-handler.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
5
<script src="../../../resources/js-test-pre.js"></script>
6
<script>
7
var wheelCount = 0;
8
function onScrollWheel(evt) {
9
    wheelCount = wheelCount + 1;
10
}
11
12
function onLoad() {
13
    document.addEventListener("mousewheel", onScrollWheel);
14
}
15
</script>
16
</head>
17
<body onload="onLoad();">
18
<script>
19
20
var iframeTarget;
21
var pageScrollPositionBefore;
22
var iFrameScrollPositionBefore;
23
var continueCount = 5;
24
25
function checkForScroll() {
26
27
    // The IFrame should not have scrolled at all.
28
    var pageScrollPositionAfter = document.body.scrollTop;
29
    var iFrameScrollPositionAfter = window.frames['target'].document.body.scrollTop;
30
31
    debug("Page before: " + pageScrollPositionBefore + ", IFrame before: " + iFrameScrollPositionBefore);
32
    debug("Page after:  " + pageScrollPositionAfter + ", IFrame after: " + iFrameScrollPositionAfter);
33
34
    if (iFrameScrollPositionBefore != iFrameScrollPositionAfter)
35
        testFailed("IFrame consumed wheel events.");
36
    else
37
        testPassed("IFrame did not receive wheel events.");
38
39
    debug("Document was initial target for " + wheelCount + " of the wheel events.");
40
41
    if (window.internals) {
42
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
43
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
44
    }
45
46
    testRunner.notifyDone();
47
}
48
49
function scrollTest() {
50
    // See where our IFrame lives:
51
    pageScrollPositionBefore = document.body.scrollTop;
52
    iFrameScrollPositionBefore = window.frames['target'].document.body.scrollTop;
53
54
    iframeTarget = document.getElementById('target');
55
56
    // Scroll the #source until we reach the #target.
57
    var startPosX = iframeTarget.offsetLeft + 20;
58
    var startPosY = iframeTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame
59
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
60
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
61
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
62
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
63
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
64
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
65
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
66
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
67
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
68
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
69
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
70
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
71
    setTimeout(checkForScroll, 100);
72
}
73
74
function setupTopLevel() {
75
76
    if (window.eventSender) {
77
        testRunner.dumpAsText(true);
78
        testRunner.waitUntilDone();
79
80
        setTimeout(scrollTest, 1000);
81
    } else {
82
        var messageLocation = document.getElementById('parent');
83
        var message = document.createElement('div');
84
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
85
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
86
            + "down past the IFrame.<br/><br/>"
87
            + "You should not see the row of END labels if this test is successful.</p>";
88
        messageLocation.appendChild(message);
89
    }
90
}
91
92
</script>
93
<div id="parent" style="height: 2000px">
94
    <div id="source" style="height: 100px">
95
        Put mouse here and flick downwards
96
    </div>
97
    <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 
98
     src= "data:text/html,
99
     <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
100
     TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
101
     This should still be visible inside the frame after you scroll down
102
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
103
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
104
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
105
     This should NOT be visible inside the frame after you scroll down<br/>
106
     <br/>
107
     END END END END END END END END END END END END END
108
     </div>
109
     "
110
     onload="setupTopLevel();"
111
     >
112
    </iframe>
113
</div>
114
<div id="console"></div>
115
<script>
116
description("Tests that iframe doesn't consume wheel events when scroll ");
117
</script>
118
<pre id="layers">Layer tree goes here</p>
119
<script src="../../../resources/js-test-post.js"></script>
120
</body>
121
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe.html +109 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
5
<script src="../../../resources/js-test-pre.js"></script>
6
</head>
7
<body>
8
<script>
9
10
var iframeTarget;
11
var pageScrollPositionBefore;
12
var iFrameScrollPositionBefore;
13
var continueCount = 5;
14
15
function checkForScroll() {
16
17
    // The IFrame should not have scrolled at all.
18
    var pageScrollPositionAfter = document.body.scrollTop;
19
    var iFrameScrollPositionAfter = window.frames['target'].document.body.scrollTop;
20
21
    debug("Page before: " + pageScrollPositionBefore + ", IFrame before: " + iFrameScrollPositionBefore);
22
    debug("Page after:  " + pageScrollPositionAfter + ", IFrame after: " + iFrameScrollPositionAfter);
23
24
    if (iFrameScrollPositionBefore != iFrameScrollPositionAfter)
25
        testFailed("IFrame consumed wheel events.");
26
    else
27
        testPassed("IFrame did not receive wheel events.");
28
29
    if (window.internals) {
30
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
31
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
32
    }
33
34
    testRunner.notifyDone();
35
}
36
37
function scrollTest() {
38
    // See where our IFrame lives:
39
    pageScrollPositionBefore = document.body.scrollTop;
40
    iFrameScrollPositionBefore = window.frames['target'].document.body.scrollTop;
41
42
    iframeTarget = document.getElementById('target');
43
44
    // Scroll the #source until we reach the #target.
45
    var startPosX = iframeTarget.offsetLeft + 20;
46
    var startPosY = iframeTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame
47
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
48
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
49
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
50
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
51
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
52
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
53
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
54
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
55
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
56
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
57
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
58
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
59
    setTimeout(checkForScroll, 100);
60
}
61
62
function setupTopLevel() {
63
64
    if (window.eventSender) {
65
        testRunner.dumpAsText(true);
66
        testRunner.waitUntilDone();
67
68
        setTimeout(scrollTest, 1000);
69
    } else {
70
        var messageLocation = document.getElementById('parent');
71
        var message = document.createElement('div');
72
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
73
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
74
            + "down past the IFrame.<br/><br/>"
75
            + "You should not see the row of END labels if this test is successful.</p>";
76
        messageLocation.appendChild(message);
77
    }
78
}
79
80
</script>
81
<div id="parent" style="height: 2000px">
82
    <div id="source" style="height: 100px">
83
        Put mouse here and flick downwards
84
    </div>
85
    <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 
86
     src= "data:text/html,
87
     <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
88
     TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
89
     This should still be visible inside the frame after you scroll down
90
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
91
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
92
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
93
     This should NOT be visible inside the frame after you scroll down<br/>
94
     <br/>
95
     END END END END END END END END END END END END END
96
     </div>
97
     "
98
     onload="setupTopLevel();"
99
     >
100
    </iframe>
101
</div>
102
<div id="console"></div>
103
<script>
104
description("Tests that iframe doesn't consume wheel events when scroll ");
105
</script>
106
<pre id="layers">Layer tree goes here</p>
107
<script src="../../../resources/js-test-post.js"></script>
108
</body>
109
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-expected.txt +33 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Select
3
4
5
Tests that a select doesn't consume wheel events when scroll is latched to main frame.
6
7
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
8
9
10
PASS successfullyParsed is true
11
12
TEST COMPLETE
13
Mouse moved to (30, 127)
14
Page before: 0, select before: 0
15
Page after:  280, select after: 0
16
PASS Select did not receive wheel events.
17
(GraphicsLayer
18
  (bounds 2008.00 2311.00)
19
  (visible rect 0.00, 280.00 785.00 x 585.00)
20
  (contentsScale 1.00)
21
  (children 1
22
    (GraphicsLayer
23
      (bounds 2008.00 2311.00)
24
      (contentsOpaque 1)
25
      (visible rect 0.00, 280.00 785.00 x 585.00)
26
      (contentsScale 1.00)
27
      (tile cache coverage 0, 0 2008 x 2048)
28
      (tile size 512 x 512)
29
      (top left tile 0, 0 tiles grid 4 x 4)
30
    )
31
  )
32
)
33
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-with-handler-expected.txt +34 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-with-handler-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Select
3
4
5
Tests that a select doesn't consume wheel events when scroll is latched to main frame.
6
7
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
8
9
10
PASS successfullyParsed is true
11
12
TEST COMPLETE
13
Mouse moved to (30, 127)
14
Page before: 0, select before: 0
15
Page after:  280, select after: 0
16
PASS Select did not receive wheel events.
17
Document was initial target for 4 of the wheel events.
18
(GraphicsLayer
19
  (bounds 2008.00 2326.00)
20
  (visible rect 0.00, 280.00 785.00 x 585.00)
21
  (contentsScale 1.00)
22
  (children 1
23
    (GraphicsLayer
24
      (bounds 2008.00 2326.00)
25
      (contentsOpaque 1)
26
      (visible rect 0.00, 280.00 785.00 x 585.00)
27
      (contentsScale 1.00)
28
      (tile cache coverage 0, 0 2008 x 2048)
29
      (tile size 512 x 512)
30
      (top left tile 0, 0 tiles grid 4 x 4)
31
    )
32
  )
33
)
34
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-with-handler.html +157 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-with-handler.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../resources/js-test-pre.js"></script>
29
<script>
30
var wheelCount = 0;
31
function onScrollWheel(evt) {
32
    wheelCount = wheelCount + 1;
33
}
34
35
function onLoad() {
36
    document.addEventListener("mousewheel", onScrollWheel);
37
    setupTopLevel();
38
}
39
</script>
40
</head>
41
<body onload="onLoad();">
42
<script>
43
44
var selectTarget;
45
var pageScrollPositionBefore;
46
var selectScrollPositionBefore;
47
var continueCount = 5;
48
49
function checkForScroll() {
50
51
    // The select should not have scrolled at all.
52
    var pageScrollPositionAfter = document.body.scrollTop;
53
    var selectScrollPositionAfter = selectTarget.scrollTop;
54
55
    debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore);
56
    debug("Page after:  " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter);
57
58
    if (selectScrollPositionBefore != selectScrollPositionAfter)
59
        testFailed("Select consumed wheel events.");
60
    else
61
        testPassed("Select did not receive wheel events.");
62
63
    debug("Document was initial target for " + wheelCount + " of the wheel events.");
64
65
    if (window.internals) {
66
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
67
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
68
    }
69
70
    testRunner.notifyDone();
71
}
72
73
function scrollTest() {
74
    // See where our IFrame lives:
75
    pageScrollPositionBefore = document.body.scrollTop;
76
77
    selectTarget = document.getElementById('target');
78
79
    selectScrollPositionBefore = selectTarget.scrollTop;
80
81
    // Scroll the #source until we reach the #target.
82
    var startPosX = selectTarget.offsetLeft + 20;
83
    var startPosY = selectTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame
84
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
85
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
86
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
87
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
88
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
89
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
90
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
91
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
92
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
93
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
94
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
95
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
96
    setTimeout(checkForScroll, 100);
97
}
98
99
function setupTopLevel() {
100
101
    if (window.eventSender) {
102
        testRunner.dumpAsText(true);
103
        testRunner.waitUntilDone();
104
105
        setTimeout(scrollTest, 1000);
106
    } else {
107
        var messageLocation = document.getElementById('parent');
108
        var message = document.createElement('div');
109
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
110
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll down<br/>"
111
            + "past the selectTarget.<br/><br/>"
112
            + "You should not see the 'content21' label if this test is successful.</p>";
113
        messageLocation.appendChild(message);
114
    }
115
}
116
117
</script>
118
<div id="parent" style="height: 2000px; width: 2000px;">
119
    <div id="source" style="height: 100px; width: 500px;">
120
        Put mouse here and flick downwards
121
    </div>
122
        <div class="scrollable_region">
123
            <h3>Scrollable Select</h3>
124
            <select id="target" class="scrollable_select" size="8">
125
                <option>content1</option>
126
                <option>content2</option>
127
                <option>content3</option>
128
                <option>content4</option>
129
                <option>content5</option>
130
                <option>content6</option>
131
                <option>content7</option>
132
                <option>content8</option>
133
                <option>content9</option>
134
                <option>content10</option>
135
                <option>content11</option>
136
                <option>content12</option>
137
                <option>content13</option>
138
                <option>content14</option>
139
                <option>content15</option>
140
                <option>content16</option>
141
                <option>content17</option>
142
                <option>content18</option>
143
                <option>content19</option>
144
                <option>content20</option>
145
                <option>content21</option>
146
            </select>
147
        </div>
148
    </div>
149
</div>
150
<div id="console"></div>
151
<script>
152
description("Tests that a select doesn't consume wheel events when scroll is latched to main frame.");
153
</script>
154
<pre id="layers">Layer tree goes here</p>
155
<script src="../../../resources/js-test-post.js"></script>
156
</body>
157
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe.html +149 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../resources/js-test-pre.js"></script>
29
<script>
30
function onLoad() {
31
    setupTopLevel();
32
}
33
</script>
34
</head>
35
<body onload="onLoad();">
36
<script>
37
38
var selectTarget;
39
var pageScrollPositionBefore;
40
var selectScrollPositionBefore;
41
var continueCount = 5;
42
43
function checkForScroll() {
44
45
    // The select should not have scrolled at all.
46
    var pageScrollPositionAfter = document.body.scrollTop;
47
    var selectScrollPositionAfter = selectTarget.scrollTop;
48
49
    debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore);
50
    debug("Page after:  " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter);
51
52
    if (selectScrollPositionBefore != selectScrollPositionAfter)
53
        testFailed("Select consumed wheel events.");
54
    else
55
        testPassed("Select did not receive wheel events.");
56
57
    if (window.internals) {
58
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
59
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
60
    }
61
62
    testRunner.notifyDone();
63
}
64
65
function scrollTest() {
66
    // See where our IFrame lives:
67
    pageScrollPositionBefore = document.body.scrollTop;
68
69
    selectTarget = document.getElementById('target');
70
71
    selectScrollPositionBefore = selectTarget.scrollTop;
72
73
    // Scroll the #source until we reach the #target.
74
    var startPosX = selectTarget.offsetLeft + 20;
75
    var startPosY = selectTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame
76
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
77
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
78
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
79
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
80
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
81
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
82
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
83
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
84
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
85
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
86
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
87
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
88
    setTimeout(checkForScroll, 100);
89
}
90
91
function setupTopLevel() {
92
93
    if (window.eventSender) {
94
        testRunner.dumpAsText(true);
95
        testRunner.waitUntilDone();
96
97
        setTimeout(scrollTest, 1000);
98
    } else {
99
        var messageLocation = document.getElementById('parent');
100
        var message = document.createElement('div');
101
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
102
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll down<br/>"
103
            + "past the selectTarget.<br/><br/>"
104
            + "You should not see the 'content21' label if this test is successful.</p>";
105
        messageLocation.appendChild(message);
106
    }
107
}
108
109
</script>
110
<div id="parent" style="height: 2000px; width: 2000px;">
111
    <div id="source" style="height: 100px; width: 500px;">
112
        Put mouse here and flick downwards
113
    </div>
114
        <div class="scrollable_region">
115
            <h3>Scrollable Select</h3>
116
            <select id="target" class="scrollable_select" size="8">
117
                <option>content1</option>
118
                <option>content2</option>
119
                <option>content3</option>
120
                <option>content4</option>
121
                <option>content5</option>
122
                <option>content6</option>
123
                <option>content7</option>
124
                <option>content8</option>
125
                <option>content9</option>
126
                <option>content10</option>
127
                <option>content11</option>
128
                <option>content12</option>
129
                <option>content13</option>
130
                <option>content14</option>
131
                <option>content15</option>
132
                <option>content16</option>
133
                <option>content17</option>
134
                <option>content18</option>
135
                <option>content19</option>
136
                <option>content20</option>
137
                <option>content21</option>
138
            </select>
139
        </div>
140
    </div>
141
</div>
142
<div id="console"></div>
143
<script>
144
description("Tests that a select doesn't consume wheel events when scroll is latched to main frame.");
145
</script>
146
<pre id="layers">Layer tree goes here</p>
147
<script src="../../../resources/js-test-post.js"></script>
148
</body>
149
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-expected.txt +34 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Select
3
4
5
Tests that a select doesn't pass wheel events to main frame when scrolling at bottom
6
7
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
8
9
10
PASS successfullyParsed is true
11
12
TEST COMPLETE
13
div display height = 111
14
Mouse moved to (30, 238)
15
Page before: 0, select before: 70
16
Page after:  0, select after: 182
17
PASS Page did not receive wheel events.
18
(GraphicsLayer
19
  (bounds 2008.00 2326.00)
20
  (visible rect 0.00, 0.00 785.00 x 585.00)
21
  (contentsScale 1.00)
22
  (children 1
23
    (GraphicsLayer
24
      (bounds 2008.00 2326.00)
25
      (contentsOpaque 1)
26
      (visible rect 0.00, 0.00 785.00 x 585.00)
27
      (contentsScale 1.00)
28
      (tile cache coverage 0, 0 2008 x 2048)
29
      (tile size 512 x 512)
30
      (top left tile 0, 0 tiles grid 4 x 4)
31
    )
32
  )
33
)
34
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-with-handler-expected.txt +35 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-with-handler-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Select
3
4
5
Tests that a select doesn't pass wheel events to main frame when scrolling at bottom
6
7
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
8
9
10
PASS successfullyParsed is true
11
12
TEST COMPLETE
13
div display height = 111
14
Mouse moved to (30, 238)
15
Page before: 0, select before: 70
16
Page after:  0, select after: 182
17
PASS Page did not receive wheel events.
18
Document was initial target for 4 of the wheel events.
19
(GraphicsLayer
20
  (bounds 2008.00 2341.00)
21
  (visible rect 0.00, 0.00 785.00 x 585.00)
22
  (contentsScale 1.00)
23
  (children 1
24
    (GraphicsLayer
25
      (bounds 2008.00 2341.00)
26
      (contentsOpaque 1)
27
      (visible rect 0.00, 0.00 785.00 x 585.00)
28
      (contentsScale 1.00)
29
      (tile cache coverage 0, 0 2008 x 2048)
30
      (tile size 512 x 512)
31
      (top left tile 0, 0 tiles grid 4 x 4)
32
    )
33
  )
34
)
35
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-with-handler.html +159 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-with-handler.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../resources/js-test-pre.js"></script>
29
<script>
30
var wheelCount = 0;
31
function onScrollWheel(evt) {
32
    wheelCount = wheelCount + 1;
33
}
34
35
function onLoad() {
36
    document.addEventListener("mousewheel", onScrollWheel);
37
    setupTopLevel();
38
}
39
</script>
40
</head>
41
<body onload="onLoad();">
42
<script>
43
44
var selectTarget;
45
var pageScrollPositionBefore;
46
var selectScrollPositionBefore;
47
var continueCount = 5;
48
49
function checkForScroll() {
50
51
    // The page should not have scrolled at all.
52
    var pageScrollPositionAfter = document.body.scrollTop;
53
    var selectScrollPositionAfter = selectTarget.scrollTop;
54
55
    debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore);
56
    debug("Page after:  " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter);
57
58
    if (pageScrollPositionBefore != pageScrollPositionAfter)
59
        testFailed("Page received wheel events.");
60
    else
61
        testPassed("Page did not receive wheel events.");
62
63
    debug("Document was initial target for " + wheelCount + " of the wheel events.");
64
65
    if (window.internals) {
66
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
67
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
68
    }
69
70
    testRunner.notifyDone();
71
}
72
73
function scrollTest() {
74
    // See where our IFrame lives:
75
    pageScrollPositionBefore = document.body.scrollTop;
76
77
    selectTarget = document.getElementById('target');
78
    selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100;
79
80
    selectScrollPositionBefore = selectTarget.scrollTop;
81
82
    // Scroll the #source until we reach the #target.
83
    var startPosX = selectTarget.offsetLeft + 20;
84
    debug("div display height = " + selectTarget.clientHeight);
85
    var startPosY = selectTarget.offsetTop + selectTarget.clientHeight - 42; // One wheel turn before end.
86
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
87
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
88
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
89
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
90
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
91
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
92
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
93
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
94
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
95
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
96
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
97
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
98
    setTimeout(checkForScroll, 100);
99
}
100
101
function setupTopLevel() {
102
103
    if (window.eventSender) {
104
        testRunner.dumpAsText(true);
105
        testRunner.waitUntilDone();
106
107
        setTimeout(scrollTest, 1000);
108
    } else {
109
        var messageLocation = document.getElementById('parent');
110
        var message = document.createElement('div');
111
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
112
            + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger<br/>"
113
            + "swipe to scroll through the rest of the select options.<br/><br/>"
114
            + "You should not see the page position change if this test is successful.</p>";
115
        messageLocation.appendChild(message);
116
    }
117
}
118
119
</script>
120
<div id="parent" style="height: 2000px; width: 2000px;">
121
    <div id="source" style="height: 100px; width: 500px;">
122
        Put mouse here and flick downwards
123
    </div>
124
        <div class="scrollable_region">
125
            <h3>Scrollable Select</h3>
126
            <select id="target" class="scrollable_select" size="8">
127
                <option>content1</option>
128
                <option>content2</option>
129
                <option>content3</option>
130
                <option>content4</option>
131
                <option>content5</option>
132
                <option>content6</option>
133
                <option>content7</option>
134
                <option>content8</option>
135
                <option>content9</option>
136
                <option>content10</option>
137
                <option>content11</option>
138
                <option>content12</option>
139
                <option>content13</option>
140
                <option>content14</option>
141
                <option>content15</option>
142
                <option>content16</option>
143
                <option>content17</option>
144
                <option>content18</option>
145
                <option>content19</option>
146
                <option>content20</option>
147
                <option>content21</option>
148
            </select>
149
        </div>
150
    </div>
151
</div>
152
<div id="console"></div>
153
<script>
154
description("Tests that a select doesn't pass wheel events to main frame when scrolling at bottom");
155
</script>
156
<pre id="layers">Layer tree goes here</p>
157
<script src="../../../resources/js-test-post.js"></script>
158
</body>
159
</html>
- LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select.html +151 lines
Line 0 LayoutTests/platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../resources/js-test-pre.js"></script>
29
<script>
30
function onLoad() {
31
    setupTopLevel();
32
}
33
</script>
34
</head>
35
<body onload="onLoad();">
36
<script>
37
38
var selectTarget;
39
var pageScrollPositionBefore;
40
var selectScrollPositionBefore;
41
var continueCount = 5;
42
43
function checkForScroll() {
44
45
    // The page should not have scrolled at all.
46
    var pageScrollPositionAfter = document.body.scrollTop;
47
    var selectScrollPositionAfter = selectTarget.scrollTop;
48
49
    debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore);
50
    debug("Page after:  " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter);
51
52
    if (pageScrollPositionBefore != pageScrollPositionAfter)
53
        testFailed("Page received wheel events.");
54
    else
55
        testPassed("Page did not receive wheel events.");
56
57
    if (window.internals) {
58
        document.getElementById('layers').innerText = internals.layerTreeAsText(document,
59
            internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
60
    }
61
62
    testRunner.notifyDone();
63
}
64
65
function scrollTest() {
66
    // See where our IFrame lives:
67
    pageScrollPositionBefore = document.body.scrollTop;
68
69
    selectTarget = document.getElementById('target');
70
    selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100;
71
72
    selectScrollPositionBefore = selectTarget.scrollTop;
73
74
    // Scroll the #source until we reach the #target.
75
    var startPosX = selectTarget.offsetLeft + 20;
76
    debug("div display height = " + selectTarget.clientHeight);
77
    var startPosY = selectTarget.offsetTop + selectTarget.clientHeight - 42; // One wheel turn before end.
78
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
79
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
80
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
81
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
82
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
83
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
84
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
85
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
86
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
87
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
88
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
89
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
90
    setTimeout(checkForScroll, 100);
91
}
92
93
function setupTopLevel() {
94
95
    if (window.eventSender) {
96
        testRunner.dumpAsText(true);
97
        testRunner.waitUntilDone();
98
99
        setTimeout(scrollTest, 1000);
100
    } else {
101
        var messageLocation = document.getElementById('parent');
102
        var message = document.createElement('div');
103
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
104
            + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger<br/>"
105
            + "swipe to scroll through the rest of the select options.<br/><br/>"
106
            + "You should not see the page position change if this test is successful.</p>";
107
        messageLocation.appendChild(message);
108
    }
109
}
110
111
</script>
112
<div id="parent" style="height: 2000px; width: 2000px;">
113
    <div id="source" style="height: 100px; width: 500px;">
114
        Put mouse here and flick downwards
115
    </div>
116
        <div class="scrollable_region">
117
            <h3>Scrollable Select</h3>
118
            <select id="target" class="scrollable_select" size="8">
119
                <option>content1</option>
120
                <option>content2</option>
121
                <option>content3</option>
122
                <option>content4</option>
123
                <option>content5</option>
124
                <option>content6</option>
125
                <option>content7</option>
126
                <option>content8</option>
127
                <option>content9</option>
128
                <option>content10</option>
129
                <option>content11</option>
130
                <option>content12</option>
131
                <option>content13</option>
132
                <option>content14</option>
133
                <option>content15</option>
134
                <option>content16</option>
135
                <option>content17</option>
136
                <option>content18</option>
137
                <option>content19</option>
138
                <option>content20</option>
139
                <option>content21</option>
140
            </select>
141
        </div>
142
    </div>
143
</div>
144
<div id="console"></div>
145
<script>
146
description("Tests that a select doesn't pass wheel events to main frame when scrolling at bottom");
147
</script>
148
<pre id="layers">Layer tree goes here</p>
149
<script src="../../../resources/js-test-post.js"></script>
150
</body>
151
</html>
- LayoutTests/platform/mac/fast/scrolling/scroll-div-latched-div-expected.txt +60 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-div-latched-div-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Region
3
4
Count	DATA	Rev Count
5
TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP
6
1	0.1100	40
7
2	0.1155	39
8
3	0.2200	38
9
4	0.2255	37
10
5	0.3300	36
11
6	0.3355	35
12
7	0.4400	34
13
8	0.4455	33
14
9	0.5500	32
15
10	0.5555	31
16
11	0.6600	30
17
12	0.6655	29
18
13	0.7700	28
19
14	0.7755	27
20
15	0.8800	26
21
16	0.8855	25
22
17	0.9900	24
23
18	0.9955	23
24
19	0.9999	22
25
20	1.0000	21
26
21	1.0000	20
27
22	0.9999	19
28
23	0.9955	18
29
24	0.9900	17
30
25	0.8855	16
31
26	0.8800	15
32
27	0.7755	14
33
28	0.7700	13
34
29	0.6655	12
35
30	0.6600	11
36
31	0.5555	10
37
32	0.5500	9
38
33	0.4455	8
39
34	0.4400	7
40
35	0.3355	6
41
36	0.3300	5
42
37	0.2255	4
43
38	0.2200	3
44
39	0.1155	2
45
40	0.1100	1
46
END END END END END	END END END END END	END END END END END
47
Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom
48
49
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
50
51
52
PASS successfullyParsed is true
53
54
TEST COMPLETE
55
div display height = 485
56
Mouse moved to (28, 610)
57
Page before: 0, div before: 451
58
Page after:  0, div after: 451
59
PASS Page did not receive wheel events.
60
- LayoutTests/platform/mac/fast/scrolling/scroll-div-latched-div.html +168 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-div-latched-div.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../../resources/js-test-pre.js"></script>
29
<script>
30
function onLoad() {
31
    setupTopLevel();
32
}
33
</script>
34
</head>
35
<body onload="onLoad();">
36
<script>
37
38
var divTarget;
39
var pageScrollPositionBefore;
40
var divScrollPositionBefore;
41
var continueCount = 5;
42
43
function checkForScroll() {
44
45
    // The div should not have scrolled at all.
46
    var pageScrollPositionAfter = document.body.scrollTop;
47
    var divScrollPositionAfter = divTarget.scrollTop;
48
49
    debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore);
50
    debug("Page after:  " + pageScrollPositionAfter + ", div after: " + divScrollPositionAfter);
51
52
    if (pageScrollPositionBefore != pageScrollPositionAfter)
53
        testFailed("Page received wheel events.");
54
    else
55
        testPassed("Page did not receive wheel events.");
56
57
    testRunner.notifyDone();
58
}
59
60
function scrollTest() {
61
    // See where our IFrame lives:
62
    pageScrollPositionBefore = document.body.scrollTop;
63
64
    divTarget = document.getElementById('target');
65
    divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100;
66
67
    divScrollPositionBefore = divTarget.scrollTop;
68
69
    // Scroll the #source until we reach the #target.
70
    var startPosX = divTarget.offsetLeft + 20;
71
    debug("div display height = " + divTarget.clientHeight);
72
    var startPosY = divTarget.offsetTop + divTarget.clientHeight - 42; // One wheel turn before end.
73
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
74
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
75
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
76
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
77
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
78
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
79
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
80
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
81
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
82
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
83
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
84
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
85
    setTimeout(checkForScroll, 100);
86
}
87
88
function setupTopLevel() {
89
90
    if (window.eventSender) {
91
        testRunner.dumpAsText(true);
92
        testRunner.waitUntilDone();
93
94
        setTimeout(scrollTest, 1000);
95
    } else {
96
        var messageLocation = document.getElementById('parent');
97
        var message = document.createElement('div');
98
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
99
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
100
            + "down past the div.<br/><br/>"
101
            + "You should not see the row of END labels if this test is successful.</p>";
102
        messageLocation.appendChild(message);
103
    }
104
}
105
106
</script>
107
<div id="parent" style="height: 2000px; width: 2000px;">
108
    <div id="source" style="height: 100px; width: 500px;">
109
        Put mouse here and flick downwards
110
    </div>
111
    <div class="scrollable_region">
112
        <h3>Scrollable Region</h3>
113
        <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 485px;'>
114
            <table class="table" style='width: 99%'>
115
                <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr>
116
                <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr>
117
                <tr><td>1</td><td>0.1100</td><td>40</td></tr>
118
                <tr><td>2</td><td>0.1155</td><td>39</td></tr>
119
                <tr><td>3</td><td>0.2200</td><td>38</td></tr>
120
                <tr><td>4</td><td>0.2255</td><td>37</td></tr>
121
                <tr><td>5</td><td>0.3300</td><td>36</td></tr>
122
                <tr><td>6</td><td>0.3355</td><td>35</td></tr>
123
                <tr><td>7</td><td>0.4400</td><td>34</td></tr>
124
                <tr><td>8</td><td>0.4455</td><td>33</td></tr>
125
                <tr><td>9</td><td>0.5500</td><td>32</td></tr>
126
                <tr><td>10</td><td>0.5555</td><td>31</td></tr>
127
                <tr><td>11</td><td>0.6600</td><td>30</td></tr>
128
                <tr><td>12</td><td>0.6655</td><td>29</td></tr>
129
                <tr><td>13</td><td>0.7700</td><td>28</td></tr>
130
                <tr><td>14</td><td>0.7755</td><td>27</td></tr>
131
                <tr><td>15</td><td>0.8800</td><td>26</td></tr>
132
                <tr><td>16</td><td>0.8855</td><td>25</td></tr>
133
                <tr><td>17</td><td>0.9900</td><td>24</td></tr>
134
                <tr><td>18</td><td>0.9955</td><td>23</td></tr>
135
                <tr><td>19</td><td>0.9999</td><td>22</td></tr>
136
                <tr><td>20</td><td>1.0000</td><td>21</td></tr>
137
                <tr><td>21</td><td>1.0000</td><td>20</td></tr>
138
                <tr><td>22</td><td>0.9999</td><td>19</td></tr>
139
                <tr><td>23</td><td>0.9955</td><td>18</td></tr>
140
                <tr><td>24</td><td>0.9900</td><td>17</td></tr>
141
                <tr><td>25</td><td>0.8855</td><td>16</td></tr>
142
                <tr><td>26</td><td>0.8800</td><td>15</td></tr>
143
                <tr><td>27</td><td>0.7755</td><td>14</td></tr>
144
                <tr><td>28</td><td>0.7700</td><td>13</td></tr>
145
                <tr><td>29</td><td>0.6655</td><td>12</td></tr>
146
                <tr><td>30</td><td>0.6600</td><td>11</td></tr>
147
                <tr><td>31</td><td>0.5555</td><td>10</td></tr>
148
                <tr><td>32</td><td>0.5500</td><td>9</td></tr>
149
                <tr><td>33</td><td>0.4455</td><td>8</td></tr>
150
                <tr><td>34</td><td>0.4400</td><td>7</td></tr>
151
                <tr><td>35</td><td>0.3355</td><td>6</td></tr>
152
                <tr><td>36</td><td>0.3300</td><td>5</td></tr>
153
                <tr><td>37</td><td>0.2255</td><td>4</td></tr>
154
                <tr><td>38</td><td>0.2200</td><td>3</td></tr>
155
                <tr><td>39</td><td>0.1155</td><td>2</td></tr>
156
                <tr><td>40</td><td>0.1100</td><td>1</td></tr>
157
                <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr>
158
            </table>
159
        </div>
160
    </div>
161
</div>
162
<div id="console"></div>
163
<script>
164
description("Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom");
165
</script>
166
<script src="../../../../resources/js-test-post.js"></script>
167
</body>
168
</html>
- LayoutTests/platform/mac/fast/scrolling/scroll-div-latched-mainframe-expected.txt +59 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-div-latched-mainframe-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Region
3
4
Count	DATA	Rev Count
5
TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP
6
1	0.1100	40
7
2	0.1155	39
8
3	0.2200	38
9
4	0.2255	37
10
5	0.3300	36
11
6	0.3355	35
12
7	0.4400	34
13
8	0.4455	33
14
9	0.5500	32
15
10	0.5555	31
16
11	0.6600	30
17
12	0.6655	29
18
13	0.7700	28
19
14	0.7755	27
20
15	0.8800	26
21
16	0.8855	25
22
17	0.9900	24
23
18	0.9955	23
24
19	0.9999	22
25
20	1.0000	21
26
21	1.0000	20
27
22	0.9999	19
28
23	0.9955	18
29
24	0.9900	17
30
25	0.8855	16
31
26	0.8800	15
32
27	0.7755	14
33
28	0.7700	13
34
29	0.6655	12
35
30	0.6600	11
36
31	0.5555	10
37
32	0.5500	9
38
33	0.4455	8
39
34	0.4400	7
40
35	0.3355	6
41
36	0.3300	5
42
37	0.2255	4
43
38	0.2200	3
44
39	0.1155	2
45
40	0.1100	1
46
END END END END END	END END END END END	END END END END END
47
Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame.
48
49
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
50
51
52
PASS successfullyParsed is true
53
54
TEST COMPLETE
55
Mouse moved to (28, 125)
56
Page before: 0, div before: 0
57
Page after:  320, div after: 0
58
PASS Scrollable div did not receive wheel events.
59
- LayoutTests/platform/mac/fast/scrolling/scroll-div-latched-mainframe.html +166 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-div-latched-mainframe.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../../resources/js-test-pre.js"></script>
29
<script>
30
function onLoad() {
31
    setupTopLevel();
32
}
33
</script>
34
</head>
35
<body onload="onLoad();">
36
<script>
37
38
var divTarget;
39
var pageScrollPositionBefore;
40
var divScrollPositionBefore;
41
var continueCount = 5;
42
43
function checkForScroll() {
44
45
    // The div should not have scrolled at all.
46
    var pageScrollPositionAfter = document.body.scrollTop;
47
    var divScrollPositionAfter = divTarget.scrollTop;
48
49
    debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore);
50
    debug("Page after:  " + pageScrollPositionAfter + ", div after: " + divScrollPositionAfter);
51
52
    if (divScrollPositionBefore != divScrollPositionAfter)
53
        testFailed("Scrollable div consumed wheel events.");
54
    else
55
        testPassed("Scrollable div did not receive wheel events.");
56
57
    testRunner.notifyDone();
58
}
59
60
function scrollTest() {
61
    // See where our IFrame lives:
62
    pageScrollPositionBefore = document.body.scrollTop;
63
64
    divTarget = document.getElementById('target');
65
66
    divScrollPositionBefore = divTarget.scrollTop;
67
68
    // Scroll the #source until we reach the #target.
69
    var startPosX = divTarget.offsetLeft + 20;
70
    var startPosY = divTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame
71
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
72
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
73
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
74
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
75
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
76
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
77
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
78
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
79
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
80
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
81
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
82
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
83
    setTimeout(checkForScroll, 100);
84
}
85
86
function setupTopLevel() {
87
88
    if (window.eventSender) {
89
        testRunner.dumpAsText(true);
90
        testRunner.waitUntilDone();
91
92
        setTimeout(scrollTest, 1000);
93
    } else {
94
        var messageLocation = document.getElementById('parent');
95
        var message = document.createElement('div');
96
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
97
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
98
            + "down past the div.<br/><br/>"
99
            + "You should not see the row of END labels if this test is successful.</p>";
100
        messageLocation.appendChild(message);
101
    }
102
}
103
104
</script>
105
<div id="parent" style="height: 2000px; width: 2000px;">
106
    <div id="source" style="height: 100px; width: 500px;">
107
        Put mouse here and flick downwards
108
    </div>
109
    <div class="scrollable_region">
110
        <h3>Scrollable Region</h3>
111
        <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 485px;'>
112
            <table class="table" style='width: 99%'>
113
                <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr>
114
                <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr>
115
                <tr><td>1</td><td>0.1100</td><td>40</td></tr>
116
                <tr><td>2</td><td>0.1155</td><td>39</td></tr>
117
                <tr><td>3</td><td>0.2200</td><td>38</td></tr>
118
                <tr><td>4</td><td>0.2255</td><td>37</td></tr>
119
                <tr><td>5</td><td>0.3300</td><td>36</td></tr>
120
                <tr><td>6</td><td>0.3355</td><td>35</td></tr>
121
                <tr><td>7</td><td>0.4400</td><td>34</td></tr>
122
                <tr><td>8</td><td>0.4455</td><td>33</td></tr>
123
                <tr><td>9</td><td>0.5500</td><td>32</td></tr>
124
                <tr><td>10</td><td>0.5555</td><td>31</td></tr>
125
                <tr><td>11</td><td>0.6600</td><td>30</td></tr>
126
                <tr><td>12</td><td>0.6655</td><td>29</td></tr>
127
                <tr><td>13</td><td>0.7700</td><td>28</td></tr>
128
                <tr><td>14</td><td>0.7755</td><td>27</td></tr>
129
                <tr><td>15</td><td>0.8800</td><td>26</td></tr>
130
                <tr><td>16</td><td>0.8855</td><td>25</td></tr>
131
                <tr><td>17</td><td>0.9900</td><td>24</td></tr>
132
                <tr><td>18</td><td>0.9955</td><td>23</td></tr>
133
                <tr><td>19</td><td>0.9999</td><td>22</td></tr>
134
                <tr><td>20</td><td>1.0000</td><td>21</td></tr>
135
                <tr><td>21</td><td>1.0000</td><td>20</td></tr>
136
                <tr><td>22</td><td>0.9999</td><td>19</td></tr>
137
                <tr><td>23</td><td>0.9955</td><td>18</td></tr>
138
                <tr><td>24</td><td>0.9900</td><td>17</td></tr>
139
                <tr><td>25</td><td>0.8855</td><td>16</td></tr>
140
                <tr><td>26</td><td>0.8800</td><td>15</td></tr>
141
                <tr><td>27</td><td>0.7755</td><td>14</td></tr>
142
                <tr><td>28</td><td>0.7700</td><td>13</td></tr>
143
                <tr><td>29</td><td>0.6655</td><td>12</td></tr>
144
                <tr><td>30</td><td>0.6600</td><td>11</td></tr>
145
                <tr><td>31</td><td>0.5555</td><td>10</td></tr>
146
                <tr><td>32</td><td>0.5500</td><td>9</td></tr>
147
                <tr><td>33</td><td>0.4455</td><td>8</td></tr>
148
                <tr><td>34</td><td>0.4400</td><td>7</td></tr>
149
                <tr><td>35</td><td>0.3355</td><td>6</td></tr>
150
                <tr><td>36</td><td>0.3300</td><td>5</td></tr>
151
                <tr><td>37</td><td>0.2255</td><td>4</td></tr>
152
                <tr><td>38</td><td>0.2200</td><td>3</td></tr>
153
                <tr><td>39</td><td>0.1155</td><td>2</td></tr>
154
                <tr><td>40</td><td>0.1100</td><td>1</td></tr>
155
                <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr>
156
            </table>
157
        </div>
158
    </div>
159
</div>
160
<div id="console"></div>
161
<script>
162
description("Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame.");
163
</script>
164
<script src="../../../../resources/js-test-post.js"></script>
165
</body>
166
</html>
- LayoutTests/platform/mac/fast/scrolling/scroll-iframe-latched-iframe-expected.txt +16 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-iframe-latched-iframe-expected.txt_sec1
1
Put mouse here and flick downwards
2
3
Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom
4
5
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
6
7
8
PASS successfullyParsed is true
9
10
TEST COMPLETE
11
IFrame display height = 500
12
Mouse moved to (28, 566)
13
Page before: 0, IFrame before: 416
14
Page after:  0, IFrame after: 416
15
PASS Page did not receive wheel events.
16
- LayoutTests/platform/mac/fast/scrolling/scroll-iframe-latched-iframe.html +108 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-iframe-latched-iframe.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
5
<script src="../../../../resources/js-test-pre.js"></script>
6
</head>
7
<body>
8
<script>
9
10
var iframeTarget;
11
var pageScrollPositionBefore;
12
var iFrameScrollPositionBefore;
13
var continueCount = 5;
14
15
function checkForScroll() {
16
17
    // The IFrame should not have scrolled at all.
18
    var pageScrollPositionAfter = document.body.scrollTop;
19
    var iFrameScrollPositionAfter = window.frames['target'].document.body.scrollTop;
20
21
    debug("Page before: " + pageScrollPositionBefore + ", IFrame before: " + iFrameScrollPositionBefore);
22
    debug("Page after:  " + pageScrollPositionAfter + ", IFrame after: " + iFrameScrollPositionAfter);
23
24
    if (pageScrollPositionBefore != pageScrollPositionAfter)
25
        testFailed("Page received wheel events.");
26
    else
27
        testPassed("Page did not receive wheel events.");
28
29
    testRunner.notifyDone();
30
}
31
32
function scrollTest() {
33
    // See where our IFrame lives:
34
    pageScrollPositionBefore = document.body.scrollTop;
35
36
    iframeTarget = document.getElementById('target');
37
38
    var iFrameBody = window.frames['target'].document.body;
39
    iFrameBody.scrollTop = iFrameBody.scrollHeight - iframeTarget.clientHeight - 100;
40
41
    iFrameScrollPositionBefore = iFrameBody.scrollTop;
42
43
    // Scroll the #source until we reach the #target.
44
    var startPosX = iframeTarget.offsetLeft + 20;
45
    debug("IFrame display height = " + iframeTarget.clientHeight);
46
    var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end.
47
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
48
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
49
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
50
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
51
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
52
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
53
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
54
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
55
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
56
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
57
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
58
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
59
    setTimeout(checkForScroll, 100);
60
}
61
62
function setupTopLevel() {
63
64
    if (window.eventSender) {
65
        testRunner.dumpAsText(true);
66
        testRunner.waitUntilDone();
67
68
        setTimeout(scrollTest, 1000);
69
    } else {
70
        var messageLocation = document.getElementById('parent');
71
        var message = document.createElement('div');
72
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
73
            + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"
74
            + "<br/><br/>"
75
            + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
76
        messageLocation.appendChild(message);
77
    }
78
}
79
80
</script>
81
<div id="parent" style="height: 2000px">
82
    <div id="source" style="height: 100px">
83
        Put mouse here and flick downwards
84
    </div>
85
    <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 
86
     src= "data:text/html,
87
     <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
88
     TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
89
     This should still be visible inside the frame after you scroll down
90
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
91
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
92
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
93
     This should NOT be visible inside the frame after you scroll down<br/>
94
     <br/>
95
     END END END END END END END END END END END END END
96
     </div>
97
     "
98
     onload="setupTopLevel();"
99
     >
100
    </iframe>
101
</div>
102
<div id="console"></div>
103
<script>
104
description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
105
</script>
106
<script src="../../../../resources/js-test-post.js"></script>
107
</body>
108
</html>
- LayoutTests/platform/mac/fast/scrolling/scroll-iframe-latched-mainframe-expected.txt +15 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-iframe-latched-mainframe-expected.txt_sec1
1
Put mouse here and flick downwards
2
3
Tests that iframe doesn't consume wheel events when scroll
4
5
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
6
7
8
PASS successfullyParsed is true
9
10
TEST COMPLETE
11
Mouse moved to (28, 66)
12
Page before: 0, IFrame before: 0
13
Page after:  320, IFrame after: 0
14
PASS IFrame did not receive wheel events.
15
- LayoutTests/platform/mac/fast/scrolling/scroll-iframe-latched-mainframe.html +103 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-iframe-latched-mainframe.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
5
<script src="../../../../resources/js-test-pre.js"></script>
6
</head>
7
<body>
8
<script>
9
10
var iframeTarget;
11
var pageScrollPositionBefore;
12
var iFrameScrollPositionBefore;
13
var continueCount = 5;
14
15
function checkForScroll() {
16
17
    // The IFrame should not have scrolled at all.
18
    var pageScrollPositionAfter = document.body.scrollTop;
19
    var iFrameScrollPositionAfter = window.frames['target'].document.body.scrollTop;
20
21
    debug("Page before: " + pageScrollPositionBefore + ", IFrame before: " + iFrameScrollPositionBefore);
22
    debug("Page after:  " + pageScrollPositionAfter + ", IFrame after: " + iFrameScrollPositionAfter);
23
24
    if (iFrameScrollPositionBefore != iFrameScrollPositionAfter)
25
        testFailed("IFrame consumed wheel events.");
26
    else
27
        testPassed("IFrame did not receive wheel events.");
28
29
    testRunner.notifyDone();
30
}
31
32
function scrollTest() {
33
    // See where our IFrame lives:
34
    pageScrollPositionBefore = document.body.scrollTop;
35
    iFrameScrollPositionBefore = window.frames['target'].document.body.scrollTop;
36
37
    iframeTarget = document.getElementById('target');
38
39
    // Scroll the #source until we reach the #target.
40
    var startPosX = iframeTarget.offsetLeft + 20;
41
    var startPosY = iframeTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame
42
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
43
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
44
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
45
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
46
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
47
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
48
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
49
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
50
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
51
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
52
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
53
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
54
    setTimeout(checkForScroll, 100);
55
}
56
57
function setupTopLevel() {
58
59
    if (window.eventSender) {
60
        testRunner.dumpAsText(true);
61
        testRunner.waitUntilDone();
62
63
        setTimeout(scrollTest, 1000);
64
    } else {
65
        var messageLocation = document.getElementById('parent');
66
        var message = document.createElement('div');
67
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
68
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
69
            + "down past the IFrame.<br/><br/>"
70
            + "You should not see the row of END labels if this test is successful.</p>";
71
        messageLocation.appendChild(message);
72
    }
73
}
74
75
</script>
76
<div id="parent" style="height: 2000px">
77
    <div id="source" style="height: 100px">
78
        Put mouse here and flick downwards
79
    </div>
80
    <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 
81
     src= "data:text/html,
82
     <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
83
     TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
84
     This should still be visible inside the frame after you scroll down
85
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
86
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
87
     <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
88
     This should NOT be visible inside the frame after you scroll down<br/>
89
     <br/>
90
     END END END END END END END END END END END END END
91
     </div>
92
     "
93
     onload="setupTopLevel();"
94
     >
95
    </iframe>
96
</div>
97
<div id="console"></div>
98
<script>
99
description("Tests that iframe doesn't consume wheel events when scroll ");
100
</script>
101
<script src="../../../../resources/js-test-post.js"></script>
102
</body>
103
</html>
- LayoutTests/platform/mac/fast/scrolling/scroll-select-latched-mainframe-expected.txt +17 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-select-latched-mainframe-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Select
3
4
5
Tests that a select doesn't consume wheel events when scroll is latched to main frame.
6
7
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
8
9
10
PASS successfullyParsed is true
11
12
TEST COMPLETE
13
Mouse moved to (30, 127)
14
Page before: 0, select before: 0
15
Page after:  320, select after: 0
16
PASS Select did not receive wheel events.
17
- LayoutTests/platform/mac/fast/scrolling/scroll-select-latched-mainframe.html +143 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-select-latched-mainframe.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../../resources/js-test-pre.js"></script>
29
<script>
30
function onLoad() {
31
    setupTopLevel();
32
}
33
</script>
34
</head>
35
<body onload="onLoad();">
36
<script>
37
38
var selectTarget;
39
var pageScrollPositionBefore;
40
var selectScrollPositionBefore;
41
var continueCount = 5;
42
43
function checkForScroll() {
44
45
    // The select should not have scrolled at all.
46
    var pageScrollPositionAfter = document.body.scrollTop;
47
    var selectScrollPositionAfter = selectTarget.scrollTop;
48
49
    debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore);
50
    debug("Page after:  " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter);
51
52
    if (selectScrollPositionBefore != selectScrollPositionAfter)
53
        testFailed("Select consumed wheel events.");
54
    else
55
        testPassed("Select did not receive wheel events.");
56
57
    testRunner.notifyDone();
58
}
59
60
function scrollTest() {
61
    // See where our IFrame lives:
62
    pageScrollPositionBefore = document.body.scrollTop;
63
64
    selectTarget = document.getElementById('target');
65
66
    selectScrollPositionBefore = selectTarget.scrollTop;
67
68
    // Scroll the #source until we reach the #target.
69
    var startPosX = selectTarget.offsetLeft + 20;
70
    var startPosY = selectTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame
71
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
72
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
73
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
74
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
75
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
76
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
77
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
78
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
79
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
80
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
81
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
82
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
83
    setTimeout(checkForScroll, 100);
84
}
85
86
function setupTopLevel() {
87
88
    if (window.eventSender) {
89
        testRunner.dumpAsText(true);
90
        testRunner.waitUntilDone();
91
92
        setTimeout(scrollTest, 1000);
93
    } else {
94
        var messageLocation = document.getElementById('parent');
95
        var message = document.createElement('div');
96
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
97
            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll down<br/>"
98
            + "past the selectTarget.<br/><br/>"
99
            + "You should not see the 'content21' label if this test is successful.</p>";
100
        messageLocation.appendChild(message);
101
    }
102
}
103
104
</script>
105
<div id="parent" style="height: 2000px; width: 2000px;">
106
    <div id="source" style="height: 100px; width: 500px;">
107
        Put mouse here and flick downwards
108
    </div>
109
        <div class="scrollable_region">
110
            <h3>Scrollable Select</h3>
111
            <select id="target" class="scrollable_select" size="8">
112
                <option>content1</option>
113
                <option>content2</option>
114
                <option>content3</option>
115
                <option>content4</option>
116
                <option>content5</option>
117
                <option>content6</option>
118
                <option>content7</option>
119
                <option>content8</option>
120
                <option>content9</option>
121
                <option>content10</option>
122
                <option>content11</option>
123
                <option>content12</option>
124
                <option>content13</option>
125
                <option>content14</option>
126
                <option>content15</option>
127
                <option>content16</option>
128
                <option>content17</option>
129
                <option>content18</option>
130
                <option>content19</option>
131
                <option>content20</option>
132
                <option>content21</option>
133
            </select>
134
        </div>
135
    </div>
136
</div>
137
<div id="console"></div>
138
<script>
139
description("Tests that a select doesn't consume wheel events when scroll is latched to main frame.");
140
</script>
141
<script src="../../../../resources/js-test-post.js"></script>
142
</body>
143
</html>
- LayoutTests/platform/mac/fast/scrolling/scroll-select-latched-select-expected.txt +18 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-select-latched-select-expected.txt_sec1
1
Put mouse here and flick downwards
2
Scrollable Select
3
4
5
Tests that a select doesn't pass wheel events to main frame when scrolling at bottom
6
7
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
8
9
10
PASS successfullyParsed is true
11
12
TEST COMPLETE
13
div display height = 111
14
Mouse moved to (30, 238)
15
Page before: 0, select before: 70
16
Page after:  0, select after: 182
17
PASS Page did not receive wheel events.
18
- LayoutTests/platform/mac/fast/scrolling/scroll-select-latched-select.html +145 lines
Line 0 LayoutTests/platform/mac/fast/scrolling/scroll-select-latched-select.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
.scrollable_region {
6
    width: 680px;
7
}
8
9
.table td, .table th {
10
    padding: 2px;
11
}
12
13
.table th {
14
    height: 20px;
15
    text-align: left;
16
    font-weight: strong;
17
}
18
19
.table tr:nth-child(odd) {
20
    background: #f3f3f3;
21
}
22
23
.scrollable_select option:nth-child(odd) {
24
    background: #f3f3f3;
25
}
26
27
</style>
28
<script src="../../../../resources/js-test-pre.js"></script>
29
<script>
30
function onLoad() {
31
    setupTopLevel();
32
}
33
</script>
34
</head>
35
<body onload="onLoad();">
36
<script>
37
38
var selectTarget;
39
var pageScrollPositionBefore;
40
var selectScrollPositionBefore;
41
var continueCount = 5;
42
43
function checkForScroll() {
44
45
    // The page should not have scrolled at all.
46
    var pageScrollPositionAfter = document.body.scrollTop;
47
    var selectScrollPositionAfter = selectTarget.scrollTop;
48
49
    debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore);
50
    debug("Page after:  " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter);
51
52
    if (pageScrollPositionBefore != pageScrollPositionAfter)
53
        testFailed("Page received wheel events.");
54
    else
55
        testPassed("Page did not receive wheel events.");
56
57
    testRunner.notifyDone();
58
}
59
60
function scrollTest() {
61
    // See where our IFrame lives:
62
    pageScrollPositionBefore = document.body.scrollTop;
63
64
    selectTarget = document.getElementById('target');
65
    selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100;
66
67
    selectScrollPositionBefore = selectTarget.scrollTop;
68
69
    // Scroll the #source until we reach the #target.
70
    var startPosX = selectTarget.offsetLeft + 20;
71
    debug("div display height = " + selectTarget.clientHeight);
72
    var startPosY = selectTarget.offsetTop + selectTarget.clientHeight - 42; // One wheel turn before end.
73
    eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
74
    debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
75
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
76
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
77
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
78
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
79
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
80
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
81
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
82
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
83
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
84
    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
85
    setTimeout(checkForScroll, 100);
86
}
87
88
function setupTopLevel() {
89
90
    if (window.eventSender) {
91
        testRunner.dumpAsText(true);
92
        testRunner.waitUntilDone();
93
94
        setTimeout(scrollTest, 1000);
95
    } else {
96
        var messageLocation = document.getElementById('parent');
97
        var message = document.createElement('div');
98
        message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
99
            + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger<br/>"
100
            + "swipe to scroll through the rest of the select options.<br/><br/>"
101
            + "You should not see the page position change if this test is successful.</p>";
102
        messageLocation.appendChild(message);
103
    }
104
}
105
106
</script>
107
<div id="parent" style="height: 2000px; width: 2000px;">
108
    <div id="source" style="height: 100px; width: 500px;">
109
        Put mouse here and flick downwards
110
    </div>
111
        <div class="scrollable_region">
112
            <h3>Scrollable Select</h3>
113
            <select id="target" class="scrollable_select" size="8">
114
                <option>content1</option>
115
                <option>content2</option>
116
                <option>content3</option>
117
                <option>content4</option>
118
                <option>content5</option>
119
                <option>content6</option>
120
                <option>content7</option>
121
                <option>content8</option>
122
                <option>content9</option>
123
                <option>content10</option>
124
                <option>content11</option>
125
                <option>content12</option>
126
                <option>content13</option>
127
                <option>content14</option>
128
                <option>content15</option>
129
                <option>content16</option>
130
                <option>content17</option>
131
                <option>content18</option>
132
                <option>content19</option>
133
                <option>content20</option>
134
                <option>content21</option>
135
            </select>
136
        </div>
137
    </div>
138
</div>
139
<div id="console"></div>
140
<script>
141
description("Tests that a select doesn't pass wheel events to main frame when scrolling at bottom");
142
</script>
143
<script src="../../../../resources/js-test-post.js"></script>
144
</body>
145
</html>

Return to Bug 127606