Skip to content
  • dbates@webkit.org's avatar
    [iOS] Upstream WebCore/html changes · 1edd81da
    dbates@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=125765
    
    Reviewed by Darin Adler.
    
    Source/WebCore:
    
    * WebCore.xcodeproj/project.pbxproj:
    * html/Autocapitalize.cpp: Added.
    * html/Autocapitalize.h: Added. Also, added FIXME comment to forward declare AtomicString once we upstream
    more of the iOS port.
    * html/BaseChooserOnlyDateAndTimeInputType.cpp:
    (WebCore::BaseChooserOnlyDateAndTimeInputType::handleDOMActivateEvent): Opt out of code when building for iOS.
    * html/BaseDateAndTimeInputType.cpp:
    (WebCore::BaseDateAndTimeInputType::isKeyboardFocusable): Added; iOS-specific.
    * html/BaseDateAndTimeInputType.h:
    * html/FileInputType.cpp:
    (WebCore::FileInputType::FileInputType): Added iOS-specific code.
    (WebCore::FileInputType::~FileInputType): Opt out of code when building for iOS. Also, added FIXME comment.
    (WebCore::FileInputType::requestIcon): Ditto.
    (WebCore::FileInputType::filesChosen): Added; iOS-specific.
    (WebCore::FileInputType::displayString): Added; iOS-specific.
    (WebCore::FileInputType::receiveDroppedFiles): Guarded code with ENABLE(DRAG_SUPPORT).
    * html/FileInputType.h:
    * html/FormController.cpp:
    (WebCore::FormController::formElementsCharacterCount): Added.
    * html/FormController.h:
    * html/HTMLAppletElement.cpp:
    (WebCore::HTMLAppletElement::updateWidget): Opt out of code when building for iOS.
    * html/HTMLAreaElement.cpp:
    (WebCore::HTMLAreaElement::computePath): Changed argument datatype from RenderElement* to RenderObject*.
    Also, added FIXME comment to fix this up once we upstream iOS's DOMUIKitExtensions.{h, mm}.
    (WebCore::HTMLAreaElement::computeRect): Ditto.
    * html/HTMLAreaElement.h:
    * html/HTMLAttributeNames.in: Added attributes ongesture{start, change, end}, autocorrect, autocapitalize,
    data-youtube-id, onwebkit{currentplaybacktargetiswirelesschanged, playbacktargetavailabilitychanged}, webkit-playsinline,
    x-webkit-airplay, and x-webkit-wirelessvideoplaybackdisabled.
    * html/HTMLBodyElement.cpp:
    (WebCore::HTMLBodyElement::scrollLeft): Added iOS-specific code.
    (WebCore::HTMLBodyElement::scrollTop): Ditto.
    * html/HTMLCanvasElement.cpp:
    (WebCore::HTMLCanvasElement::HTMLCanvasElement): Added iOS-specific code and FIXME comment.
    (WebCore::HTMLCanvasElement::createImageBuffer): Added iOS-specific code.
    * html/HTMLCanvasElement.h: Added iOS-specific code and FIXME comment.
    * html/HTMLDocument.cpp:
    (WebCore::HTMLDocument::HTMLDocument): Added argument isSynthesized (default to false), which is
    passed through to Document::Document(), to create a synthesized document.
    * html/HTMLDocument.h:
    (WebCore::HTMLDocument::createSynthesizedDocument): Added.
    * html/HTMLElement.cpp:
    (WebCore::HTMLElement::collectStyleForPresentationAttribute): Added iOS-specific code.
    (WebCore::populateEventNameForAttributeLocalNameMap): Ditto.
    (WebCore::HTMLElement::willRespondToMouseMoveEvents): Added; iOS-specific.
    (WebCore::HTMLElement::willRespondToMouseWheelEvents): Added; iOS-specific.
    (WebCore::HTMLElement::willRespondToMouseClickEvents): Added; iOS-specific.
    * html/HTMLElement.h:
    * html/HTMLFormControlElement.cpp: Added FIXME comment to share more code with class HTMLFormElement.
    (WebCore::HTMLFormControlElement::autocorrect): Added; guarded by PLATFORM(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE).
    (WebCore::HTMLFormControlElement::setAutocorrect): Added; guarded by PLATFORM(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE).
    (WebCore::HTMLFormControlElement::autocapitalizeType): Added; guarded by PLATFORM(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE).
    (WebCore::HTMLFormControlElement::autocapitalize): Added; guarded by PLATFORM(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE).
    (WebCore::HTMLFormControlElement::setAutocapitalize): Added; guarded by PLATFORM(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE).
    * html/HTMLFormControlElement.h:
    * html/HTMLFormElement.cpp: Added FIXME comment to share more code with class HTMLFormControlElement.
    (WebCore::HTMLFormElement::submitImplicitly): Modified to code to allow implicit submission of multi-input
    forms only if Settings::allowMultiElementImplicitSubmission() returns true. Such behavior is expected by older
    iOS apps. Also, changed datatype of variable submissionTriggerCount from int to unsigned because it represents
    a non-negative value.
    (WebCore::HTMLFormElement::autocorrect): Added; guarded by PLATFORM(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE).
    (WebCore::HTMLFormElement::setAutocorrect): Added; guarded by PLATFORM(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE).
    (WebCore::HTMLFormElement::autocapitalizeType): Added; guarded by PLATFORM(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE).
    (WebCore::HTMLFormElement::autocapitalize): Added; guarded by PLATFORM(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE).
    (WebCore::HTMLFormElement::setAutocapitalize): Added; guarded by PLATFORM(IOS_AUTOCORRECT_AND_AUTOCAPITALIZE).
    * html/HTMLFormElement.h:
    * html/HTMLFormElement.idl: Added iOS-specific attributes: autocorrect and autocapitalize.
    * html/HTMLIFrameElement.h:
    * html/HTMLInputElement.cpp:
    (WebCore::HTMLInputElement::displayString): Added; guarded by PLATFORM(IOS).
    (WebCore::HTMLInputElement::dateType): Added; guarded by PLATFORM(IOS).
    * html/HTMLInputElement.h:
    * html/HTMLInputElement.idl: Added iOS-specific attributes: autocorrect and autocapitalize.
    * html/HTMLLabelElement.cpp:
    (WebCore::HTMLLabelElement::willRespondToMouseClickEvents): Added iOS-specific code.
    * html/HTMLMediaElement.cpp:
    (WebCore::HTMLMediaElement::HTMLMediaElement): Added iOS-specific code and FIXME comment.
    (WebCore::HTMLMediaElement::~HTMLMediaElement): Added iOS-specific code.
    (WebCore::HTMLMediaElement::parseMediaPlayerAttribute): Added; iOS-specific.
    (WebCore::HTMLMediaElement::parseAttribute): Added iOS-specific code.
    (WebCore::HTMLMediaElement::insertedInto): Ditto.
    (WebCore::HTMLMediaElement::load): Ditto.
    (WebCore::HTMLMediaElement::prepareForLoad): Ditto.
    (WebCore::HTMLMediaElement::autoplay): Ditto.
    (WebCore::HTMLMediaElement::play): Ditto.
    (WebCore::HTMLMediaElement::playInternal): Ditto.
    (WebCore::HTMLMediaElement::pauseInternal): Ditto.
    (WebCore::HTMLMediaElement::setVolumne): Opt out of code when building for iOS.
    (WebCore::HTMLMediaElement::setMuted): Ditto.
    (WebCore::HTMLMediaElement::mediaPlayerTimeChanged): Added iOS-specific code.
    (WebCore::HTMLMediaElement::updateVolume): Ditto.
    (WebCore::HTMLMediaElement::updatePlayState): Ditto.
    (WebCore::HTMLMediaElement::userCancelledLoad): Added iOS-specific code and FIXME comment.
    (WebCore::HTMLMediaElement::resume): Added iOS-specific comment. See <rdar://problem/9751303>.
    (WebCore::HTMLMediaElement::deliverNotification): Added iOS-specific code.
    (WebCore::HTMLMediaElement::getPluginProxyParams): Added iOS-specific code. Also, changed src() to getNonEmptyURLAttribute()
    in the non-iOS code as their doesn't exist a method called src in this class or its superclasses.
    (WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker): Added; guarded by ENABLE(IOS_AIRPLAY).
    (WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless): Added; guarded by ENABLE(IOS_AIRPLAY).
    (WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged): Added; guarded by ENABLE(IOS_AIRPLAY).
    (WebCore::HTMLMediaElement::mediaPlayerPlaybackTargetAvailabilityChanged): Added; guarded by ENABLE(IOS_AIRPLAY).
    (WebCore::HTMLMediaElement::addEventListener): Added; guarded by ENABLE(IOS_AIRPLAY).
    (WebCore::HTMLMediaElement::removeEventListener): Added; guarded by ENABLE(IOS_AIRPLAY).
    (WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent): Added; guarded by ENABLE(IOS_AIRPLAY).
    (WebCore::HTMLMediaElement::enterFullscreen): Added iOS-specific code.
    (WebCore::HTMLMediaElement::exitFullscreen): Ditto.
    (WebCore::HTMLMediaElement::createMediaPlayer): Added ENABLE(IOS_AIRPLAY)-guarded code.
    (WebCore::HTMLMediaElement::userRequestsMediaLoading): Added; guarded by PLATFORM(IOS).
    (WebCore::HTMLMediaElement::shouldUseVideoPluginProxy): Use dot operator instead of dereference operator (->)
    when accessing Document::settings().
    (WebCore::HTMLMediaElement::didAddUserAgentShadowRoot): Added ENABLE(PLUGIN_PROXY_FOR_VIDEO)-guarded code.
    * html/HTMLMediaElement.h:
    (WebCore::HTMLMediaElement::userGestureRequiredToShowPlaybackTargetPicker): Added; guarded by ENABLE(IOS_AIRPLAY).
    * html/HTMLMediaElement.idl: Added ENABLE_IOS_AIRPLAY-guarded attributes and functions:webkitCurrentPlaybackTargetIsWireless,
    onwebkit{currentplaybacktargetiswirelesschanged, playbacktargetavailabilitychanged}, and webkitShowPlaybackTargetPicker().
    * html/HTMLMetaElement.cpp:
    (WebCore::HTMLMetaElement::process): Added iOS-specific code.
    * html/HTMLObjectElement.cpp:
    (WebCore::shouldNotPerformURLAdjustment): Added; iOS-specific.
    (WebCore::HTMLObjectElement::parametersForPlugin): Modified to call shouldNotPerformURLAdjustment() when
    building for iOS.
    * html/HTMLPlugInElement.h:
    * html/HTMLPlugInImageElement.cpp:
    (WebCore::HTMLPlugInImageElement::createRenderer): Added iOS-specific code.
    (WebCore::HTMLPlugInImageElement::createShadowIFrameSubtree): Added; iOS-specific.
    * html/HTMLPlugInImageElement.h:
    * html/HTMLSelectElement.cpp:
    (WebCore::HTMLSelectElement::usesMenuList): Added iOS-specific code.
    (WebCore::HTMLSelectElement::createRenderer): Ditto.
    (WebCore::HTMLSelectElement::childShouldCreateRenderer): Ditto.
    (WebCore::HTMLSelectElement::willRespondToMouseClickEvents): Added; iOS-specific.
    (WebCore::HTMLSelectElement::updateListBoxSelection): Added iOS-specific code.
    (WebCore::HTMLSelectElement::scrollToSelection): Ditto.
    (WebCore::HTMLSelectElement::setOptionsChangedOnRenderer): Ditto.
    (WebCore::HTMLSelectElement::menuListDefaultEventHandler): Opt out of code when building for iOS.
    (WebCore::HTMLSelectElement::defaultEventHandler): Added iOS-specific code.
    * html/HTMLSelectElement.h:
    * html/HTMLTextAreaElement.cpp:
    (WebCore::HTMLTextAreaElement::willRespondToMouseClickEvents): Added; iOS-specific.
    * html/HTMLTextAreaElement.h:
    * html/HTMLTextAreaElement.idl: Added iOS-specific attributes: autocorrect and autocapitalize.
    * html/HTMLTextFormControlElement.cpp:
    (WebCore::HTMLTextFormControlElement::select): Added iOS-specific code and FIXME comment.
    (WebCore::HTMLTextFormControlElement::setSelectionRange): Opt out of code when building for iOS.
    (WebCore::HTMLTextFormControlElement::hidePlaceholder): Added; guarded by PLATFORM(IOS).
    (WebCore::HTMLTextFormControlElement::showPlaceholderIfNecessary): Added; guarded by PLATFORM(IOS).
    * html/HTMLTextFormControlElement.h:
    * html/HTMLVideoElement.cpp:
    (WebCore::HTMLVideoElement::createRenderer): Fix up call to HTMLMediaElement::createRenderer().
    (WebCore::HTMLVideoElement::parseAttribute): Added iOS-specific code.
    (WebCore::HTMLVideoElement::supportsFullscreen): Ditto.
    (WebCore::HTMLVideoElement::webkitWirelessVideoPlaybackDisabled): Added; guarded by ENABLE(IOS_AIRPLAY).
    (WebCore::HTMLVideoElement::setWebkitWirelessVideoPlaybackDisabled): Added; guarded by ENABLE(IOS_AIRPLAY).
    * html/HTMLVideoElement.h:
    * html/HTMLVideoElement.idl: Added ENABLE_IOS_AIRPLAY-guarded attribute: webkitWirelessVideoPlaybackDisabled.
    * html/ImageDocument.cpp:
    (WebCore::ImageDocument::createDocumentStructure): Added iOS-specific code.
    (WebCore::ImageDocument::scale): Ditto.
    (WebCore::ImageDocument::resizeImageToFit): Ditto.
    (WebCore::ImageDocument::imageClicked): Ditto.
    (WebCore::ImageDocument::imageFitsInWindow): Ditto.
    (WebCore::ImageDocument::windowSizeChanged): Ditto.
    * html/InputType.cpp:
    (WebCore::InputType::dateType): Added; guarded by PLATFORM(IOS).
    (WebCore::InputType::isKeyboardFocusable): Added iOS-specific code.
    (WebCore::InputType::displayString): Added; guarded by PLATFORM(IOS).
    * html/InputType.h:
    * html/PluginDocument.cpp:
    (WebCore::PluginDocumentParser::createDocumentStructure): Added iOS-specific code.
    * html/RangeInputType.cpp:
    (WebCore::RangeInputType::handleTouchEvent): Ditto.
    (WebCore::RangeInputType::disabledAttributeChanged): Added; iOS-specific.
    * html/RangeInputType.h:
    * html/SearchInputType.cpp:
    (WebCore::SearchInputType::addSearchResult): Opt out of code when building for iOS.
    * html/TextFieldInputType.cpp:
    (WebCore::TextFieldInputType::isKeyboardFocusable): Added iOS-specific code.
    * html/TextFieldInputType.h:
    * html/WebAutocapitalize.h: Added.
    * html/canvas/CanvasRenderingContext2D.cpp:
    (WebCore::CanvasRenderingContext2D::createImageData): Added iOS-specific code.
    (WebCore::CanvasRenderingContext2D::getImageData): Ditto.
    * html/parser/HTMLConstructionSite.h:
    (WebCore::HTMLConstructionSite::isTelephoneNumberParsingEnabled): Added; guarded by PLATFORM(IOS).
    * html/parser/HTMLParserScheduler.h:
    (WebCore::HTMLParserScheduler::checkForYieldBeforeToken): Added iOS-specific code.
    * html/parser/HTMLTreeBuilder.cpp:
    (WebCore::HTMLTreeBuilder::insertPhoneNumberLink): Added; guarded by PLATFORM(IOS).
    (WebCore::HTMLTreeBuilder::linkifyPhoneNumbers): Added; guarded by PLATFORM(IOS).
    (WebCore::disallowTelephoneNumberParsing): Added; guarded by PLATFORM(IOS).
    (WebCore::shouldParseTelephoneNumbersInNode): Added; guarded by PLATFORM(IOS).
    (WebCore::HTMLTreeBuilder::processCharacterBufferForInBody): Added iOS-specific code.
    * html/parser/HTMLTreeBuilder.h:
    * html/shadow/MediaControlElements.cpp:
    (WebCore::MediaControlClosedCaptionsTrackListElement::MediaControlClosedCaptionsTrackListElement): Guarded member initialization of m_controls with ENABLE(VIDEO_TRACK). Also added UNUSED_PARAM(event) when building with
    VIDEO_TRACK disabled.
    (WebCore::MediaControlClosedCaptionsTrackListElement::defaultEventHandler): Added UNUSED_PARAM(event) when
    building with VIDEO_TRACK disabled.
    * html/shadow/MediaControls.h:
    * html/shadow/SliderThumbElement.cpp:
    (WebCore::SliderThumbElement::SliderThumbElement): Added iOS-specific code.
    (WebCore::SliderThumbElement::dragFrom): Opt out of code when building for iOS.
    (WebCore::SliderThumbElement::willDetachRenderers):  Added iOS-specific code.
    (WebCore::SliderThumbElement::exclusiveTouchIdentifier): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::setExclusiveTouchIdentifier): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::clearExclusiveTouchIdentifier): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::findTouchWithIdentifier): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::handleTouchStart): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::handleTouchMove): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::handleTouchEndAndCancel): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::didAttachRenderers): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::handleTouchEvent): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::shouldAcceptTouchEvents): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::registerForTouchEvents): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::unregisterForTouchEvents): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    (WebCore::SliderThumbElement::disabledAttributeChanged): Added; guarded by ENABLE(TOUCH_EVENTS) && PLATFORM(IOS).
    * html/shadow/SliderThumbElement.h:
    * html/shadow/TextControlInnerElements.cpp:
    (WebCore::SearchFieldResultsButtonElement::defaultEventHandler): Opt out of code when building for iOS.
    * html/shadow/TextControlInnerElements.h:
    * page/Settings.in: Added setting allowMultiElementImplicitSubmission to enable/disable multi-input implicit form
    submission (disabled by default). Also added FIXME comment to rename this setting to allowMultiElementImplicitFormSubmission
    once we upstream the iOS changes to WebView.mm.
    
    Source/WTF:
    
    Defined ENABLE_IOS_AUTOCORRECT_AND_AUTOCAPITALIZE, enabled by default on iOS.
    
    * wtf/FeatureDefines.h:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160733 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    1edd81da