⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 243657 in webkit


Ignore:
Timestamp:
Mar 29, 2019, 1:11:54 PM (7 years ago)
Author:
Chris Dumez
Message:

REGRESSION (r243523): Six form-related watchOS layout tests are timing out
https://bugs.webkit.org/show_bug.cgi?id=196405
<rdar://problem/49428130>

Reviewed by Wenson Hsieh.

Tools:

Add a shouldPresentPopovers=false WebKitTestRunner option to cause WKTR to swizzle
the popover presentation methods to be no-ops. Use this in the new test added in
r243523 so that we do not swizzle those methods for all tests. This is needed because
those WatchOS tests rely on the popover getting presented and interactive.

  • WebKitTestRunner/TestController.cpp:

(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformInitialize):
(WTR::TestController::platformResetStateToConsistentValues):

LayoutTests:

  • fast/forms/ios/file-upload-panel.html:
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r243656 r243657  
     12019-03-29  Chris Dumez  <cdumez@apple.com>
     2
     3        REGRESSION (r243523): Six form-related watchOS layout tests are timing out
     4        https://bugs.webkit.org/show_bug.cgi?id=196405
     5        <rdar://problem/49428130>
     6
     7        Reviewed by Wenson Hsieh.
     8
     9        * fast/forms/ios/file-upload-panel.html:
     10
    1112019-03-29  Wenson Hsieh  <wenson_hsieh@apple.com>
    212
  • trunk/LayoutTests/fast/forms/ios/file-upload-panel.html

    r243523 r243657  
    1 <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true, shouldHandleRunOpenPanel=false ] -->
     1<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true, shouldHandleRunOpenPanel=false, shouldPresentPopovers=false ] -->
    22<html>
    33<head>
  • trunk/Tools/ChangeLog

    r243654 r243657  
     12019-03-29  Chris Dumez  <cdumez@apple.com>
     2
     3        REGRESSION (r243523): Six form-related watchOS layout tests are timing out
     4        https://bugs.webkit.org/show_bug.cgi?id=196405
     5        <rdar://problem/49428130>
     6
     7        Reviewed by Wenson Hsieh.
     8
     9        Add a shouldPresentPopovers=false WebKitTestRunner option to cause WKTR to swizzle
     10        the popover presentation methods to be no-ops. Use this in the new test added in
     11        r243523 so that we do not swizzle those methods for all tests. This is needed because
     12        those WatchOS tests rely on the popover getting presented and interactive.
     13
     14        * WebKitTestRunner/TestController.cpp:
     15        (WTR::updateTestOptionsFromTestHeader):
     16        * WebKitTestRunner/TestController.h:
     17        * WebKitTestRunner/TestOptions.h:
     18        (WTR::TestOptions::hasSameInitializationOptions const):
     19        * WebKitTestRunner/ios/TestControllerIOS.mm:
     20        (WTR::TestController::platformInitialize):
     21        (WTR::TestController::platformResetStateToConsistentValues):
     22
    1232019-03-29  Takashi Komori  <Takashi.Komori@sony.com>
    224
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r243632 r243657  
    13471347        else if (key == "shouldHandleRunOpenPanel")
    13481348            testOptions.shouldHandleRunOpenPanel = parseBooleanTestHeaderValue(value);
     1349        else if (key == "shouldPresentPopovers")
     1350            testOptions.shouldPresentPopovers = parseBooleanTestHeaderValue(value);
    13491351        else if (key == "contentInset.top")
    13501352            testOptions.contentInsetTop = std::stod(value);
  • trunk/Tools/WebKitTestRunner/TestController.h

    r243632 r243657  
    490490    Vector<std::unique_ptr<InstanceMethodSwizzler>> m_inputModeSwizzlers;
    491491    RetainPtr<UIKeyboardInputMode> m_overriddenKeyboardInputMode;
     492    Vector<std::unique_ptr<InstanceMethodSwizzler>> m_presentPopoverSwizzlers;
    492493#endif
    493494
  • trunk/Tools/WebKitTestRunner/TestOptions.h

    r243523 r243657  
    9191    bool enableUndoManagerAPI { false };
    9292    bool shouldHandleRunOpenPanel { true };
     93    bool shouldPresentPopovers { true };
    9394
    9495    double contentInsetTop { 0 };
     
    139140            || enableUndoManagerAPI != options.enableUndoManagerAPI
    140141            || shouldHandleRunOpenPanel != options.shouldHandleRunOpenPanel
     142            || shouldPresentPopovers != options.shouldPresentPopovers
    141143            || contentInsetTop != options.contentInsetTop)
    142144            return false;
  • trunk/Tools/WebKitTestRunner/ios/TestControllerIOS.mm

    r243523 r243657  
    101101    // regardless of whether a hardware keyboard is attached. We intentionally never restore the original implementation.
    102102    method_setImplementation(class_getClassMethod([UIKeyboard class], @selector(isInHardwareKeyboardMode)), reinterpret_cast<IMP>(overrideIsInHardwareKeyboardMode));
    103 
    104     method_setImplementation(class_getInstanceMethod([UIViewController class], @selector(presentViewController:animated:completion:)), reinterpret_cast<IMP>(overridePresentViewControllerOrPopover));
    105     method_setImplementation(class_getInstanceMethod([UIPopoverController class], @selector(presentPopoverFromRect:inView:permittedArrowDirections:animated:)), reinterpret_cast<IMP>(overridePresentViewControllerOrPopover));
    106103}
    107104
     
    148145    m_inputModeSwizzlers.clear();
    149146    m_overriddenKeyboardInputMode = nil;
     147
     148    m_presentPopoverSwizzlers.clear();
     149    if (!options.shouldPresentPopovers) {
     150        m_presentPopoverSwizzlers.append(std::make_unique<InstanceMethodSwizzler>([UIViewController class], @selector(presentViewController:animated:completion:), reinterpret_cast<IMP>(overridePresentViewControllerOrPopover)));
     151        m_presentPopoverSwizzlers.append(std::make_unique<InstanceMethodSwizzler>([UIPopoverController class], @selector(presentPopoverFromRect:inView:permittedArrowDirections:animated:), reinterpret_cast<IMP>(overridePresentViewControllerOrPopover)));
     152    }
    150153   
    151154    BOOL shouldRestoreFirstResponder = NO;
Note: See TracChangeset for help on using the changeset viewer.