<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[174031] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/174031">174031</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-09-26 18:32:34 -0700 (Fri, 26 Sep 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Stop using legacy NODE_TYPE_CASTS() macro for HTML Elements
https://bugs.webkit.org/show_bug.cgi?id=137137
Reviewed by Benjamin Poulain.
Source/WebCore:
Stop using legacy NODE_TYPE_CASTS() macro for HTML Elements and use the
new SPECIALIZE_TYPE_TRAITS_*() macro instead so that is<>() /
downcast<>() works for those types.
No new tests, no behavior change.
* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::labelForElement):
(WebCore::AccessibilityNodeObject::text):
* accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::isDataTable):
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetName):
(webkitAccessibleGetDescription):
* bindings/gobject/WebKitDOMPrivate.cpp:
(WebKit::wrap):
* bindings/js/JSElementCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSNodeCustom.cpp:
(WebCore::createWrapperInline):
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginInstance):
(WebCore::pluginScriptObjectFromPluginViewBase):
(WebCore::pluginScriptObject):
(WebCore::pluginElementCustomPut):
(WebCore::isPluginElement): Deleted.
* bindings/objc/DOM.mm:
(kitClass):
* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::matchAllRules):
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOne):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::locateCousinList):
(WebCore::elementHasDirectionAuto):
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::makeContextStyleUniqueIfNecessaryAndTestIsPlaceholderShown):
(WebCore::SelectorCompiler::makeElementStyleUniqueIfNecessaryAndTestIsPlaceholderShown):
(WebCore::SelectorCompiler::isPlaceholderShown):
* dom/ContainerNodeAlgorithms.cpp:
(WebCore::assertConnectedSubrameCountIsConsistent):
(WebCore::collectFrameOwners):
(WebCore::disconnectSubframes):
* dom/Document.cpp:
(WebCore::Document::adoptNode):
(WebCore::Document::setBody):
(WebCore::Document::iconURLs):
(WebCore::Document::dispatchFullScreenChangeOrErrorEvent):
(WebCore::Document::updateHoverActiveState):
* dom/DocumentStyleSheetCollection.cpp:
(WebCore::DocumentStyleSheetCollection::collectActiveStyleSheets):
* dom/Range.cpp:
(WebCore::Range::createContextualFragment):
* dom/make_names.pl:
(printTypeHelpers):
* editing/ApplyStyleCommand.cpp:
(WebCore::isLegacyAppleStyleSpan):
(WebCore::isStyleSpanOrSpanWithOnlyStyleAttribute):
(WebCore::isSpanWithoutAttributesOrUnstyledStyleSpan):
(WebCore::isEmptyFontTag):
(WebCore::ApplyStyleCommand::applyBlockStyle):
(WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
(WebCore::ApplyStyleCommand::splitAncestorsWithUnicodeBidi):
(WebCore::ApplyStyleCommand::applyInlineStyleToNodeRange):
(WebCore::ApplyStyleCommand::removeConflictingInlineStyleFromRun):
(WebCore::ApplyStyleCommand::highestAncestorWithConflictingInlineStyle):
(WebCore::ApplyStyleCommand::applyInlineStyleToPushDown):
(WebCore::ApplyStyleCommand::pushDownInlineStyleAroundNode):
(WebCore::ApplyStyleCommand::removeInlineStyle):
(WebCore::ApplyStyleCommand::shouldSplitTextElement):
(WebCore::ApplyStyleCommand::applyInlineStyleChange):
* editing/DeleteButtonController.cpp:
(WebCore::enclosingDeletableElement):
* editing/Editor.cpp:
(WebCore::Editor::selectionForCommand):
(WebCore::Editor::setBaseWritingDirection):
(WebCore::findFirstMarkable):
* editing/FrameSelection.cpp:
(WebCore::FrameSelection::selectAll):
(WebCore::scanForForm):
* editing/InsertListCommand.cpp:
(WebCore::InsertListCommand::mergeWithNeighboringLists):
* editing/MarkupAccumulator.cpp:
(WebCore::MarkupAccumulator::elementCannotHaveEndTag):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline):
(WebCore::ReplaceSelectionCommand::makeInsertedContentRoundTrippableWithHTMLTreeBuilder):
(WebCore::ReplaceSelectionCommand::handleStyleSpans):
(WebCore::ReplaceSelectionCommand::doApply):
(WebCore::ReplaceSelectionCommand::insertAsListItems):
* editing/TextIterator.cpp:
(WebCore::shouldEmitNewlinesBeforeAndAfterNode):
(WebCore::shouldEmitExtraNewlineForNode):
* editing/cocoa/HTMLConverter.mm:
(HTMLConverter::_addTableCellForElement):
(HTMLConverter::_processElement):
* editing/htmlediting.cpp:
(WebCore::enclosingList):
(WebCore::embeddedSublist):
(WebCore::appendedSublist):
* editing/ios/EditorIOS.mm:
(WebCore::Editor::setTextAlignmentForChangedBaseWritingDirection):
* editing/mac/EditorMac.mm:
(WebCore::maybeCopyNodeAttributesToFragment):
* editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::appendElement):
* html/BaseChooserOnlyDateAndTimeInputType.cpp:
(WebCore::BaseChooserOnlyDateAndTimeInputType::updateAppearance):
* html/ColorInputType.cpp:
(WebCore::ColorInputType::shadowColorSwatch):
* html/HTMLBodyElement.cpp:
(WebCore::HTMLBodyElement::insertedInto):
* html/HTMLCollection.cpp:
(WebCore::HTMLCollection::namedItem):
(WebCore::HTMLCollection::updateNamedElementCache):
* html/HTMLElement.cpp:
(WebCore::HTMLElement::matchesReadWritePseudoClass):
(WebCore::HTMLElement::setOuterHTML):
(WebCore::elementAffectsDirectionality):
(WebCore::HTMLElement::directionality):
(WebCore::HTMLElement::dirAttributeChanged):
* html/HTMLElement.h:
(WebCore::isHTMLElement):
(WebCore::Node::hasTagName):
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::getNamedElements):
* html/HTMLFrameElementBase.h:
(WebCore::isHTMLFrameElementBase):
* html/HTMLFrameOwnerElement.h:
(WebCore::isHTMLFrameOwnerElement):
* html/HTMLMediaElement.h:
(WebCore::isHTMLMediaElement):
* html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::isDisabledFormControl):
* html/HTMLPlugInElement.h:
(WebCore::isHTMLPlugInElement):
* html/HTMLPlugInImageElement.cpp:
(WebCore::addPlugInsFromNodeListMatchingPlugInOrigin):
* html/HTMLPlugInImageElement.h:
(WebCore::isHTMLPlugInImageElement):
* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::setOption):
(WebCore::HTMLSelectElement::setLength):
(WebCore::HTMLSelectElement::recalcListItems):
* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
* html/HTMLTableCellElement.cpp:
(WebCore::HTMLTableCellElement::cellAbove):
* html/HTMLTableCellElement.h:
(WebCore::isHTMLTableCellElement):
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::tHead):
(WebCore::HTMLTableElement::tFoot):
(WebCore::HTMLTableElement::lastBody):
* html/HTMLTableRowElement.cpp:
(WebCore::HTMLTableRowElement::rowIndex):
* html/HTMLTableRowsCollection.cpp:
(WebCore::isInSection):
* html/HTMLTableSectionElement.h:
(WebCore::isHTMLTableSectionElement):
* html/HTMLTagNames.in:
* html/HTMLTextFormControlElement.cpp:
(WebCore::enclosingTextFormControl):
* html/HTMLTextFormControlElement.h:
(WebCore::isHTMLTextFormControlElement):
* html/HTMLTrackElement.cpp:
(WebCore::HTMLTrackElement::removedFrom):
(WebCore::HTMLTrackElement::mediaElement):
* html/LabelableElement.h:
(WebCore::isLabelableElement):
* html/RangeInputType.cpp:
(WebCore::RangeInputType::sliderTrackElement):
* html/shadow/MediaControlElementTypes.cpp:
(WebCore::parentMediaElement):
(WebCore::mediaControlElementType):
* html/shadow/TextControlInnerElements.h:
(WebCore::isTextControlInnerTextElement):
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::buildObjectForNode):
* inspector/InspectorNodeFinder.cpp:
(WebCore::InspectorNodeFinder::searchUsingDOMTreeTraversal):
* loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::loadSubframe):
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::create):
* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::isPhrasingContent):
(WebCore::MathMLElement::isFlowContent):
(WebCore::MathMLElement::childShouldCreateRenderer):
* mathml/mathtags.in:
* page/DragController.cpp:
(WebCore::DragController::canProcessDrag):
* page/EventHandler.cpp:
(WebCore::targetIsFrame):
* page/FocusController.cpp:
(WebCore::hasCustomFocusLogic):
(WebCore::FocusController::findFocusableElementDescendingDownIntoFrameDocument):
(WebCore::FocusController::advanceFocusInDocumentOrder):
* page/Frame.cpp:
(WebCore::Frame::searchForLabelsBeforeElement):
* page/FrameView.cpp:
(WebCore::FrameView::init):
(WebCore::FrameView::addEmbeddedObjectToUpdate):
(WebCore::FrameView::updateEmbeddedObject):
* page/PageSerializer.cpp:
(WebCore::isCharsetSpecifyingNode):
(WebCore::SerializerMarkupAccumulator::appendCustomAttributes):
* page/SpatialNavigation.cpp:
(WebCore::frameOwnerElement):
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::absolutePDFURL):
(WebCore::HitTestResult::mediaElement):
* rendering/RenderBlockFlow.cpp:
(WebCore::resizeTextPermitted):
* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::paintContents):
(WebCore::RenderEmbeddedObject::layout):
(WebCore::RenderEmbeddedObject::handleUnavailablePluginIndicatorEvent):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollRectToVisible):
(WebCore::RenderLayer::updateSnapOffsets):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::isRestartedPlugin):
* rendering/RenderMedia.h:
(WebCore::RenderMedia::mediaElement):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::offsetParent):
* rendering/RenderSnapshottedPlugIn.cpp:
(WebCore::RenderSnapshottedPlugIn::plugInImageElement):
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::parseColSpanFromDOM):
(WebCore::RenderTableCell::parseRowSpanFromDOM):
* rendering/RenderTextControl.cpp:
(WebCore::RenderTextControl::textFormControlElement):
* rendering/RenderThemeGtk.cpp:
(WebCore::getMediaElementFromRenderObject):
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintSearchFieldCancelButton):
(WebCore::RenderThemeMac::paintSnapshottedPluginOverlay):
* rendering/RenderTreeAsText.cpp:
(WebCore::isEmptyOrUnstyledAppleStyleSpan):
* rendering/RenderWidget.h:
(WebCore::RenderWidget::frameOwnerElement):
* testing/Internals.cpp:
(WebCore::Internals::visiblePlaceholder):
(WebCore::Internals::simulateAudioInterruption):
(WebCore::Internals::isPluginSnapshotted):
* xml/XPathStep.cpp:
(WebCore::XPath::nodeMatchesBasicTest):
Source/WebKit/win:
Use is<>() / downcast<>() where appropriate.
* DOMHTMLClasses.cpp:
(DOMHTMLElement::idName):
(DOMHTMLElement::innerText):
(DOMHTMLElement::setInnerText):
Source/WebKit2:
Use is<>() / downcast<>() where appropriate.
* WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
(WebKit::PDFPluginTextAnnotation::value):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::initializePlugin):
(WebKit::PluginView::pluginSnapshotTimerFired):
(WebKit::PluginView::pluginDidReceiveUserInteraction):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::createPlugin):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::performActionOnElement):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityNodeObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityTablecpp">trunk/Source/WebCore/accessibility/AccessibilityTable.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityatkWebKitAccessibleWrapperAtkcpp">trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsgobjectWebKitDOMPrivatecpp">trunk/Source/WebCore/bindings/gobject/WebKitDOMPrivate.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSElementCustomcpp">trunk/Source/WebCore/bindings/js/JSElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNodeCustomcpp">trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp">trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsobjcDOMmm">trunk/Source/WebCore/bindings/objc/DOM.mm</a></li>
<li><a href="#trunkSourceWebCorecssElementRuleCollectorcpp">trunk/Source/WebCore/css/ElementRuleCollector.cpp</a></li>
<li><a href="#trunkSourceWebCorecssSelectorCheckercpp">trunk/Source/WebCore/css/SelectorChecker.cpp</a></li>
<li><a href="#trunkSourceWebCorecssStyleResolvercpp">trunk/Source/WebCore/css/StyleResolver.cpp</a></li>
<li><a href="#trunkSourceWebCorecssjitSelectorCompilercpp">trunk/Source/WebCore/cssjit/SelectorCompiler.cpp</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodeAlgorithmscpp">trunk/Source/WebCore/dom/ContainerNodeAlgorithms.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentStyleSheetCollectioncpp">trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp</a></li>
<li><a href="#trunkSourceWebCoredomRangecpp">trunk/Source/WebCore/dom/Range.cpp</a></li>
<li><a href="#trunkSourceWebCoredommake_namespl">trunk/Source/WebCore/dom/make_names.pl</a></li>
<li><a href="#trunkSourceWebCoreeditingApplyStyleCommandcpp">trunk/Source/WebCore/editing/ApplyStyleCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingDeleteButtonControllercpp">trunk/Source/WebCore/editing/DeleteButtonController.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingEditorcpp">trunk/Source/WebCore/editing/Editor.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingFrameSelectioncpp">trunk/Source/WebCore/editing/FrameSelection.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingInsertListCommandcpp">trunk/Source/WebCore/editing/InsertListCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingMarkupAccumulatorcpp">trunk/Source/WebCore/editing/MarkupAccumulator.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingReplaceSelectionCommandcpp">trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingTextIteratorcpp">trunk/Source/WebCore/editing/TextIterator.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingcocoaHTMLConvertermm">trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm</a></li>
<li><a href="#trunkSourceWebCoreeditinghtmleditingcpp">trunk/Source/WebCore/editing/htmlediting.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingiosEditorIOSmm">trunk/Source/WebCore/editing/ios/EditorIOS.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmacEditorMacmm">trunk/Source/WebCore/editing/mac/EditorMac.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmarkupcpp">trunk/Source/WebCore/editing/markup.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlBaseChooserOnlyDateAndTimeInputTypecpp">trunk/Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlColorInputTypecpp">trunk/Source/WebCore/html/ColorInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLBodyElementcpp">trunk/Source/WebCore/html/HTMLBodyElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLCollectioncpp">trunk/Source/WebCore/html/HTMLCollection.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementcpp">trunk/Source/WebCore/html/HTMLElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementh">trunk/Source/WebCore/html/HTMLElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormElementcpp">trunk/Source/WebCore/html/HTMLFormElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameElementBaseh">trunk/Source/WebCore/html/HTMLFrameElementBase.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameOwnerElementh">trunk/Source/WebCore/html/HTMLFrameOwnerElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementh">trunk/Source/WebCore/html/HTMLMediaElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionElementcpp">trunk/Source/WebCore/html/HTMLOptionElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLPlugInElementh">trunk/Source/WebCore/html/HTMLPlugInElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLPlugInImageElementcpp">trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLPlugInImageElementh">trunk/Source/WebCore/html/HTMLPlugInImageElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSelectElementcpp">trunk/Source/WebCore/html/HTMLSelectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSourceElementcpp">trunk/Source/WebCore/html/HTMLSourceElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableCellElementcpp">trunk/Source/WebCore/html/HTMLTableCellElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableCellElementh">trunk/Source/WebCore/html/HTMLTableCellElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableElementcpp">trunk/Source/WebCore/html/HTMLTableElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableRowElementcpp">trunk/Source/WebCore/html/HTMLTableRowElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableRowsCollectioncpp">trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableSectionElementh">trunk/Source/WebCore/html/HTMLTableSectionElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTagNamesin">trunk/Source/WebCore/html/HTMLTagNames.in</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextFormControlElementcpp">trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextFormControlElementh">trunk/Source/WebCore/html/HTMLTextFormControlElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTrackElementcpp">trunk/Source/WebCore/html/HTMLTrackElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlLabelableElementh">trunk/Source/WebCore/html/LabelableElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlRangeInputTypecpp">trunk/Source/WebCore/html/RangeInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlElementTypescpp">trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowTextControlInnerElementsh">trunk/Source/WebCore/html/shadow/TextControlInnerElements.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorNodeFindercpp">trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderSubframeLoadercpp">trunk/Source/WebCore/loader/SubframeLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderarchivecfLegacyWebArchivecpp">trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLElementcpp">trunk/Source/WebCore/mathml/MathMLElement.cpp</a></li>
<li><a href="#trunkSourceWebCoremathmlmathtagsin">trunk/Source/WebCore/mathml/mathtags.in</a></li>
<li><a href="#trunkSourceWebCorepageDragControllercpp">trunk/Source/WebCore/page/DragController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageEventHandlercpp">trunk/Source/WebCore/page/EventHandler.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFocusControllercpp">trunk/Source/WebCore/page/FocusController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFramecpp">trunk/Source/WebCore/page/Frame.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewcpp">trunk/Source/WebCore/page/FrameView.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePageSerializercpp">trunk/Source/WebCore/page/PageSerializer.cpp</a></li>
<li><a href="#trunkSourceWebCorepageSpatialNavigationcpp">trunk/Source/WebCore/page/SpatialNavigation.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingHitTestResultcpp">trunk/Source/WebCore/rendering/HitTestResult.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowcpp">trunk/Source/WebCore/rendering/RenderBlockFlow.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderEmbeddedObjectcpp">trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayercpp">trunk/Source/WebCore/rendering/RenderLayer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerBackingcpp">trunk/Source/WebCore/rendering/RenderLayerBacking.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMediah">trunk/Source/WebCore/rendering/RenderMedia.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjectcpp">trunk/Source/WebCore/rendering/RenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderSnapshottedPlugIncpp">trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableCellcpp">trunk/Source/WebCore/rendering/RenderTableCell.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTextControlcpp">trunk/Source/WebCore/rendering/RenderTextControl.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeGtkcpp">trunk/Source/WebCore/rendering/RenderThemeGtk.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeMacmm">trunk/Source/WebCore/rendering/RenderThemeMac.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTreeAsTextcpp">trunk/Source/WebCore/rendering/RenderTreeAsText.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderWidgeth">trunk/Source/WebCore/rendering/RenderWidget.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalscpp">trunk/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathStepcpp">trunk/Source/WebCore/xml/XPathStep.cpp</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinDOMHTMLClassescpp">trunk/Source/WebKit/win/DOMHTMLClasses.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFPDFPluginTextAnnotationmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPluginViewcpp">trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm">trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/ChangeLog        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1,3 +1,262 @@
</span><ins>+2014-09-26 Christophe Dumez <cdumez@apple.com>
+
+ Stop using legacy NODE_TYPE_CASTS() macro for HTML Elements
+ https://bugs.webkit.org/show_bug.cgi?id=137137
+
+ Reviewed by Benjamin Poulain.
+
+ Stop using legacy NODE_TYPE_CASTS() macro for HTML Elements and use the
+ new SPECIALIZE_TYPE_TRAITS_*() macro instead so that is<>() /
+ downcast<>() works for those types.
+
+ No new tests, no behavior change.
+
+ * accessibility/AccessibilityNodeObject.cpp:
+ (WebCore::AccessibilityNodeObject::labelForElement):
+ (WebCore::AccessibilityNodeObject::text):
+ * accessibility/AccessibilityTable.cpp:
+ (WebCore::AccessibilityTable::isDataTable):
+ * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+ (webkitAccessibleGetName):
+ (webkitAccessibleGetDescription):
+ * bindings/gobject/WebKitDOMPrivate.cpp:
+ (WebKit::wrap):
+ * bindings/js/JSElementCustom.cpp:
+ (WebCore::toJSNewlyCreated):
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::createWrapperInline):
+ * bindings/js/JSPluginElementFunctions.cpp:
+ (WebCore::pluginInstance):
+ (WebCore::pluginScriptObjectFromPluginViewBase):
+ (WebCore::pluginScriptObject):
+ (WebCore::pluginElementCustomPut):
+ (WebCore::isPluginElement): Deleted.
+ * bindings/objc/DOM.mm:
+ (kitClass):
+ * css/ElementRuleCollector.cpp:
+ (WebCore::ElementRuleCollector::matchAllRules):
+ * css/SelectorChecker.cpp:
+ (WebCore::SelectorChecker::checkOne):
+ * css/StyleResolver.cpp:
+ (WebCore::StyleResolver::locateCousinList):
+ (WebCore::elementHasDirectionAuto):
+ * cssjit/SelectorCompiler.cpp:
+ (WebCore::SelectorCompiler::makeContextStyleUniqueIfNecessaryAndTestIsPlaceholderShown):
+ (WebCore::SelectorCompiler::makeElementStyleUniqueIfNecessaryAndTestIsPlaceholderShown):
+ (WebCore::SelectorCompiler::isPlaceholderShown):
+ * dom/ContainerNodeAlgorithms.cpp:
+ (WebCore::assertConnectedSubrameCountIsConsistent):
+ (WebCore::collectFrameOwners):
+ (WebCore::disconnectSubframes):
+ * dom/Document.cpp:
+ (WebCore::Document::adoptNode):
+ (WebCore::Document::setBody):
+ (WebCore::Document::iconURLs):
+ (WebCore::Document::dispatchFullScreenChangeOrErrorEvent):
+ (WebCore::Document::updateHoverActiveState):
+ * dom/DocumentStyleSheetCollection.cpp:
+ (WebCore::DocumentStyleSheetCollection::collectActiveStyleSheets):
+ * dom/Range.cpp:
+ (WebCore::Range::createContextualFragment):
+ * dom/make_names.pl:
+ (printTypeHelpers):
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::isLegacyAppleStyleSpan):
+ (WebCore::isStyleSpanOrSpanWithOnlyStyleAttribute):
+ (WebCore::isSpanWithoutAttributesOrUnstyledStyleSpan):
+ (WebCore::isEmptyFontTag):
+ (WebCore::ApplyStyleCommand::applyBlockStyle):
+ (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
+ (WebCore::ApplyStyleCommand::splitAncestorsWithUnicodeBidi):
+ (WebCore::ApplyStyleCommand::applyInlineStyleToNodeRange):
+ (WebCore::ApplyStyleCommand::removeConflictingInlineStyleFromRun):
+ (WebCore::ApplyStyleCommand::highestAncestorWithConflictingInlineStyle):
+ (WebCore::ApplyStyleCommand::applyInlineStyleToPushDown):
+ (WebCore::ApplyStyleCommand::pushDownInlineStyleAroundNode):
+ (WebCore::ApplyStyleCommand::removeInlineStyle):
+ (WebCore::ApplyStyleCommand::shouldSplitTextElement):
+ (WebCore::ApplyStyleCommand::applyInlineStyleChange):
+ * editing/DeleteButtonController.cpp:
+ (WebCore::enclosingDeletableElement):
+ * editing/Editor.cpp:
+ (WebCore::Editor::selectionForCommand):
+ (WebCore::Editor::setBaseWritingDirection):
+ (WebCore::findFirstMarkable):
+ * editing/FrameSelection.cpp:
+ (WebCore::FrameSelection::selectAll):
+ (WebCore::scanForForm):
+ * editing/InsertListCommand.cpp:
+ (WebCore::InsertListCommand::mergeWithNeighboringLists):
+ * editing/MarkupAccumulator.cpp:
+ (WebCore::MarkupAccumulator::elementCannotHaveEndTag):
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline):
+ (WebCore::ReplaceSelectionCommand::makeInsertedContentRoundTrippableWithHTMLTreeBuilder):
+ (WebCore::ReplaceSelectionCommand::handleStyleSpans):
+ (WebCore::ReplaceSelectionCommand::doApply):
+ (WebCore::ReplaceSelectionCommand::insertAsListItems):
+ * editing/TextIterator.cpp:
+ (WebCore::shouldEmitNewlinesBeforeAndAfterNode):
+ (WebCore::shouldEmitExtraNewlineForNode):
+ * editing/cocoa/HTMLConverter.mm:
+ (HTMLConverter::_addTableCellForElement):
+ (HTMLConverter::_processElement):
+ * editing/htmlediting.cpp:
+ (WebCore::enclosingList):
+ (WebCore::embeddedSublist):
+ (WebCore::appendedSublist):
+ * editing/ios/EditorIOS.mm:
+ (WebCore::Editor::setTextAlignmentForChangedBaseWritingDirection):
+ * editing/mac/EditorMac.mm:
+ (WebCore::maybeCopyNodeAttributesToFragment):
+ * editing/markup.cpp:
+ (WebCore::StyledMarkupAccumulator::appendElement):
+ * html/BaseChooserOnlyDateAndTimeInputType.cpp:
+ (WebCore::BaseChooserOnlyDateAndTimeInputType::updateAppearance):
+ * html/ColorInputType.cpp:
+ (WebCore::ColorInputType::shadowColorSwatch):
+ * html/HTMLBodyElement.cpp:
+ (WebCore::HTMLBodyElement::insertedInto):
+ * html/HTMLCollection.cpp:
+ (WebCore::HTMLCollection::namedItem):
+ (WebCore::HTMLCollection::updateNamedElementCache):
+ * html/HTMLElement.cpp:
+ (WebCore::HTMLElement::matchesReadWritePseudoClass):
+ (WebCore::HTMLElement::setOuterHTML):
+ (WebCore::elementAffectsDirectionality):
+ (WebCore::HTMLElement::directionality):
+ (WebCore::HTMLElement::dirAttributeChanged):
+ * html/HTMLElement.h:
+ (WebCore::isHTMLElement):
+ (WebCore::Node::hasTagName):
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::getNamedElements):
+ * html/HTMLFrameElementBase.h:
+ (WebCore::isHTMLFrameElementBase):
+ * html/HTMLFrameOwnerElement.h:
+ (WebCore::isHTMLFrameOwnerElement):
+ * html/HTMLMediaElement.h:
+ (WebCore::isHTMLMediaElement):
+ * html/HTMLOptionElement.cpp:
+ (WebCore::HTMLOptionElement::isDisabledFormControl):
+ * html/HTMLPlugInElement.h:
+ (WebCore::isHTMLPlugInElement):
+ * html/HTMLPlugInImageElement.cpp:
+ (WebCore::addPlugInsFromNodeListMatchingPlugInOrigin):
+ * html/HTMLPlugInImageElement.h:
+ (WebCore::isHTMLPlugInImageElement):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::setOption):
+ (WebCore::HTMLSelectElement::setLength):
+ (WebCore::HTMLSelectElement::recalcListItems):
+ * html/HTMLSourceElement.cpp:
+ (WebCore::HTMLSourceElement::insertedInto):
+ (WebCore::HTMLSourceElement::removedFrom):
+ * html/HTMLTableCellElement.cpp:
+ (WebCore::HTMLTableCellElement::cellAbove):
+ * html/HTMLTableCellElement.h:
+ (WebCore::isHTMLTableCellElement):
+ * html/HTMLTableElement.cpp:
+ (WebCore::HTMLTableElement::tHead):
+ (WebCore::HTMLTableElement::tFoot):
+ (WebCore::HTMLTableElement::lastBody):
+ * html/HTMLTableRowElement.cpp:
+ (WebCore::HTMLTableRowElement::rowIndex):
+ * html/HTMLTableRowsCollection.cpp:
+ (WebCore::isInSection):
+ * html/HTMLTableSectionElement.h:
+ (WebCore::isHTMLTableSectionElement):
+ * html/HTMLTagNames.in:
+ * html/HTMLTextFormControlElement.cpp:
+ (WebCore::enclosingTextFormControl):
+ * html/HTMLTextFormControlElement.h:
+ (WebCore::isHTMLTextFormControlElement):
+ * html/HTMLTrackElement.cpp:
+ (WebCore::HTMLTrackElement::removedFrom):
+ (WebCore::HTMLTrackElement::mediaElement):
+ * html/LabelableElement.h:
+ (WebCore::isLabelableElement):
+ * html/RangeInputType.cpp:
+ (WebCore::RangeInputType::sliderTrackElement):
+ * html/shadow/MediaControlElementTypes.cpp:
+ (WebCore::parentMediaElement):
+ (WebCore::mediaControlElementType):
+ * html/shadow/TextControlInnerElements.h:
+ (WebCore::isTextControlInnerTextElement):
+ * inspector/InspectorDOMAgent.cpp:
+ (WebCore::InspectorDOMAgent::buildObjectForNode):
+ * inspector/InspectorNodeFinder.cpp:
+ (WebCore::InspectorNodeFinder::searchUsingDOMTreeTraversal):
+ * loader/SubframeLoader.cpp:
+ (WebCore::SubframeLoader::loadSubframe):
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ (WebCore::LegacyWebArchive::create):
+ * mathml/MathMLElement.cpp:
+ (WebCore::MathMLElement::isPhrasingContent):
+ (WebCore::MathMLElement::isFlowContent):
+ (WebCore::MathMLElement::childShouldCreateRenderer):
+ * mathml/mathtags.in:
+ * page/DragController.cpp:
+ (WebCore::DragController::canProcessDrag):
+ * page/EventHandler.cpp:
+ (WebCore::targetIsFrame):
+ * page/FocusController.cpp:
+ (WebCore::hasCustomFocusLogic):
+ (WebCore::FocusController::findFocusableElementDescendingDownIntoFrameDocument):
+ (WebCore::FocusController::advanceFocusInDocumentOrder):
+ * page/Frame.cpp:
+ (WebCore::Frame::searchForLabelsBeforeElement):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::init):
+ (WebCore::FrameView::addEmbeddedObjectToUpdate):
+ (WebCore::FrameView::updateEmbeddedObject):
+ * page/PageSerializer.cpp:
+ (WebCore::isCharsetSpecifyingNode):
+ (WebCore::SerializerMarkupAccumulator::appendCustomAttributes):
+ * page/SpatialNavigation.cpp:
+ (WebCore::frameOwnerElement):
+ * rendering/HitTestResult.cpp:
+ (WebCore::HitTestResult::absolutePDFURL):
+ (WebCore::HitTestResult::mediaElement):
+ * rendering/RenderBlockFlow.cpp:
+ (WebCore::resizeTextPermitted):
+ * rendering/RenderEmbeddedObject.cpp:
+ (WebCore::RenderEmbeddedObject::paintContents):
+ (WebCore::RenderEmbeddedObject::layout):
+ (WebCore::RenderEmbeddedObject::handleUnavailablePluginIndicatorEvent):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::scrollRectToVisible):
+ (WebCore::RenderLayer::updateSnapOffsets):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateConfiguration):
+ (WebCore::isRestartedPlugin):
+ * rendering/RenderMedia.h:
+ (WebCore::RenderMedia::mediaElement):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::offsetParent):
+ * rendering/RenderSnapshottedPlugIn.cpp:
+ (WebCore::RenderSnapshottedPlugIn::plugInImageElement):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::parseColSpanFromDOM):
+ (WebCore::RenderTableCell::parseRowSpanFromDOM):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::textFormControlElement):
+ * rendering/RenderThemeGtk.cpp:
+ (WebCore::getMediaElementFromRenderObject):
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::paintSearchFieldCancelButton):
+ (WebCore::RenderThemeMac::paintSnapshottedPluginOverlay):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::isEmptyOrUnstyledAppleStyleSpan):
+ * rendering/RenderWidget.h:
+ (WebCore::RenderWidget::frameOwnerElement):
+ * testing/Internals.cpp:
+ (WebCore::Internals::visiblePlaceholder):
+ (WebCore::Internals::simulateAudioInterruption):
+ (WebCore::Internals::isPluginSnapshotted):
+ * xml/XPathStep.cpp:
+ (WebCore::XPath::nodeMatchesBasicTest):
+
</ins><span class="cx"> 2014-09-26 Joseph Pecoraro <pecoraro@apple.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: Automatic Inspection should continue once all breakpoints are loaded
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityNodeObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1159,7 +1159,7 @@
</span><span class="cx">
</span><span class="cx"> HTMLLabelElement* AccessibilityNodeObject::labelForElement(Element* element) const
</span><span class="cx"> {
</span><del>- if (!element->isHTMLElement() || !toHTMLElement(element)->isLabelable())
</del><ins>+ if (!is<HTMLElement>(element) || !downcast<HTMLElement>(element)->isLabelable())
</ins><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> const AtomicString& id = element->getIdAttribute();
</span><span class="lines">@@ -1750,8 +1750,8 @@
</span><span class="cx"> if (!node)
</span><span class="cx"> return String();
</span><span class="cx">
</span><del>- if (isNativeTextControl() && isHTMLTextFormControlElement(*node))
- return toHTMLTextFormControlElement(*node).value();
</del><ins>+ if (isNativeTextControl() && is<HTMLTextFormControlElement>(*node))
+ return downcast<HTMLTextFormControlElement>(*node).value();
</ins><span class="cx">
</span><span class="cx"> if (!node->isElementNode())
</span><span class="cx"> return String();
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityTablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityTable.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityTable.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/accessibility/AccessibilityTable.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -218,10 +218,10 @@
</span><span class="cx"> headersInFirstColumnCount++;
</span><span class="cx">
</span><span class="cx"> // In this case, the developer explicitly assigned a "data" table attribute.
</span><del>- if (cellElement->hasTagName(tdTag) || cellElement->hasTagName(thTag)) {
- HTMLTableCellElement* tableCellElement = toHTMLTableCellElement(cellElement);
- if (!tableCellElement->headers().isEmpty() || !tableCellElement->abbr().isEmpty()
- || !tableCellElement->axis().isEmpty() || !tableCellElement->scope().isEmpty())
</del><ins>+ if (is<HTMLTableCellElement>(cellElement)) {
+ HTMLTableCellElement& tableCellElement = downcast<HTMLTableCellElement>(*cellElement);
+ if (!tableCellElement.headers().isEmpty() || !tableCellElement.abbr().isEmpty()
+ || !tableCellElement.axis().isEmpty() || !tableCellElement.scope().isEmpty())
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx"> const RenderStyle& renderStyle = cell->style();
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityatkWebKitAccessibleWrapperAtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -141,9 +141,9 @@
</span><span class="cx">
</span><span class="cx"> if (coreObject->isImage() || coreObject->isInputImage()) {
</span><span class="cx"> Node* node = coreObject->node();
</span><del>- if (node && node->isHTMLElement()) {
</del><ins>+ if (node && is<HTMLElement>(node)) {
</ins><span class="cx"> // Get the attribute rather than altText String so as not to fall back on title.
</span><del>- String alt = toHTMLElement(node)->getAttribute(HTMLNames::altAttr);
</del><ins>+ const AtomicString& alt = downcast<HTMLElement>(*node).getAttribute(HTMLNames::altAttr);
</ins><span class="cx"> if (!alt.isEmpty())
</span><span class="cx"> return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, alt);
</span><span class="cx"> }
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx"> Node* node = nullptr;
</span><span class="cx"> if (coreObject->isAccessibilityRenderObject())
</span><span class="cx"> node = coreObject->node();
</span><del>- if (!node || !node->isHTMLElement() || coreObject->ariaRoleAttribute() != UnknownRole || coreObject->isImage())
</del><ins>+ if (!node || !is<HTMLElement>(node) || coreObject->ariaRoleAttribute() != UnknownRole || coreObject->isImage())
</ins><span class="cx"> return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, accessibilityDescription(coreObject));
</span><span class="cx">
</span><span class="cx"> // atk_table_get_summary returns an AtkObject. We have no summary object, so expose summary here.
</span><span class="lines">@@ -186,7 +186,7 @@
</span><span class="cx">
</span><span class="cx"> // The title attribute should be reliably available as the object's descripton.
</span><span class="cx"> // We do not want to fall back on other attributes in its absence. See bug 25524.
</span><del>- String title = toHTMLElement(node)->title();
</del><ins>+ String title = downcast<HTMLElement>(*node).title();
</ins><span class="cx"> if (!title.isEmpty())
</span><span class="cx"> return cacheAndReturnAtkProperty(object, AtkCachedAccessibleDescription, title);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsgobjectWebKitDOMPrivatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/gobject/WebKitDOMPrivate.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/gobject/WebKitDOMPrivate.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/bindings/gobject/WebKitDOMPrivate.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -84,8 +84,8 @@
</span><span class="cx">
</span><span class="cx"> switch (node->nodeType()) {
</span><span class="cx"> case Node::ELEMENT_NODE:
</span><del>- if (node->isHTMLElement())
- return WEBKIT_DOM_NODE(wrap(toHTMLElement(node)));
</del><ins>+ if (is<HTMLElement>(node))
+ return WEBKIT_DOM_NODE(wrap(downcast<HTMLElement>(node)));
</ins><span class="cx"> return WEBKIT_DOM_NODE(wrapElement(toElement(node)));
</span><span class="cx"> case Node::ATTRIBUTE_NODE:
</span><span class="cx"> return WEBKIT_DOM_NODE(wrapAttr(static_cast<Attr*>(node)));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSElementCustom.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSElementCustom.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/bindings/js/JSElementCustom.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -56,9 +56,9 @@
</span><span class="cx"> ASSERT(!getCachedWrapper(globalObject->world(), element));
</span><span class="cx">
</span><span class="cx"> JSDOMWrapper* wrapper;
</span><del>- if (element->isHTMLElement())
- wrapper = createJSHTMLWrapper(globalObject, toHTMLElement(element));
- else if (element->isSVGElement())
</del><ins>+ if (is<HTMLElement>(element))
+ wrapper = createJSHTMLWrapper(globalObject, downcast<HTMLElement>(element));
+ else if (is<SVGElement>(element))
</ins><span class="cx"> wrapper = createJSSVGWrapper(globalObject, downcast<SVGElement>(element));
</span><span class="cx"> else
</span><span class="cx"> wrapper = CREATE_DOM_WRAPPER(globalObject, Element, element);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNodeCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -192,9 +192,9 @@
</span><span class="cx"> JSDOMWrapper* wrapper;
</span><span class="cx"> switch (node->nodeType()) {
</span><span class="cx"> case Node::ELEMENT_NODE:
</span><del>- if (node->isHTMLElement())
- wrapper = createJSHTMLWrapper(globalObject, toHTMLElement(node));
- else if (node->isSVGElement())
</del><ins>+ if (is<HTMLElement>(node))
+ wrapper = createJSHTMLWrapper(globalObject, downcast<HTMLElement>(node));
+ else if (is<SVGElement>(node))
</ins><span class="cx"> wrapper = createJSSVGWrapper(globalObject, downcast<SVGElement>(node));
</span><span class="cx"> else
</span><span class="cx"> wrapper = CREATE_DOM_WRAPPER(globalObject, Element, node);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -35,19 +35,14 @@
</span><span class="cx">
</span><span class="cx"> // JavaScript access to plug-in-exported properties for JSHTMLAppletElement, JSHTMLEmbedElement and JSHTMLObjectElement.
</span><span class="cx">
</span><del>-static inline bool isPluginElement(HTMLElement& element)
-{
- return element.hasTagName(objectTag) || element.hasTagName(embedTag) || element.hasTagName(appletTag);
-}
-
</del><span class="cx"> Instance* pluginInstance(HTMLElement& element)
</span><span class="cx"> {
</span><span class="cx"> // The plugin element holds an owning reference, so we don't have to.
</span><del>- if (!isPluginElement(element))
- return 0;
- Instance* instance = toHTMLPlugInElement(element).getInstance().get();
</del><ins>+ if (!is<HTMLPlugInElement>(element))
+ return nullptr;
+ Instance* instance = downcast<HTMLPlugInElement>(element).getInstance().get();
</ins><span class="cx"> if (!instance || !instance->rootObject())
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> return instance;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -55,10 +50,10 @@
</span><span class="cx"> {
</span><span class="cx"> Widget* pluginWidget = pluginElement.pluginWidget();
</span><span class="cx"> if (!pluginWidget)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> if (!pluginWidget->isPluginViewBase())
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> PluginViewBase* pluginViewBase = toPluginViewBase(pluginWidget);
</span><span class="cx"> return pluginViewBase->scriptObject(globalObject);
</span><span class="lines">@@ -67,20 +62,20 @@
</span><span class="cx"> static JSObject* pluginScriptObjectFromPluginViewBase(JSHTMLElement* jsHTMLElement)
</span><span class="cx"> {
</span><span class="cx"> HTMLElement& element = jsHTMLElement->impl();
</span><del>- if (!isPluginElement(element))
- return 0;
</del><ins>+ if (!is<HTMLPlugInElement>(element))
+ return nullptr;
</ins><span class="cx">
</span><del>- HTMLPlugInElement& pluginElement = toHTMLPlugInElement(element);
</del><ins>+ HTMLPlugInElement& pluginElement = downcast<HTMLPlugInElement>(element);
</ins><span class="cx"> return pluginScriptObjectFromPluginViewBase(pluginElement, jsHTMLElement->globalObject());
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSObject* pluginScriptObject(ExecState* exec, JSHTMLElement* jsHTMLElement)
</span><span class="cx"> {
</span><span class="cx"> HTMLElement& element = jsHTMLElement->impl();
</span><del>- if (!isPluginElement(element))
- return 0;
</del><ins>+ if (!is<HTMLPlugInElement>(element))
+ return nullptr;
</ins><span class="cx">
</span><del>- HTMLPlugInElement& pluginElement = toHTMLPlugInElement(element);
</del><ins>+ HTMLPlugInElement& pluginElement = downcast<HTMLPlugInElement>(element);
</ins><span class="cx">
</span><span class="cx"> // Choke point for script/plugin interaction; notify DOMTimer of the event.
</span><span class="cx"> DOMTimer::scriptDidInteractWithPlugin(pluginElement);
</span><span class="lines">@@ -98,7 +93,7 @@
</span><span class="cx"> // The plugin element holds an owning reference, so we don't have to.
</span><span class="cx"> Instance* instance = pluginElement.getInstance().get();
</span><span class="cx"> if (!instance || !instance->rootObject())
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> return instance->createRuntimeObject(exec);
</span><span class="cx"> }
</span><span class="lines">@@ -132,7 +127,7 @@
</span><span class="cx"> {
</span><span class="cx"> JSObject* scriptObject = pluginScriptObject(exec, element);
</span><span class="cx"> if (!scriptObject)
</span><del>- return 0;
</del><ins>+ return false;
</ins><span class="cx"> if (!scriptObject->hasProperty(exec, propertyName))
</span><span class="cx"> return false;
</span><span class="cx"> scriptObject->methodTable()->put(scriptObject, exec, propertyName, value, slot);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsobjcDOMmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/objc/DOM.mm (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/objc/DOM.mm        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/bindings/objc/DOM.mm        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -301,8 +301,8 @@
</span><span class="cx"> {
</span><span class="cx"> switch (impl->nodeType()) {
</span><span class="cx"> case WebCore::Node::ELEMENT_NODE:
</span><del>- if (impl->isHTMLElement())
- return WebCore::elementClass(toHTMLElement(impl)->tagQName(), [DOMHTMLElement class]);
</del><ins>+ if (is<HTMLElement>(impl))
+ return WebCore::elementClass(downcast<HTMLElement>(*impl).tagQName(), [DOMHTMLElement class]);
</ins><span class="cx"> return [DOMElement class];
</span><span class="cx"> case WebCore::Node::ATTRIBUTE_NODE:
</span><span class="cx"> return [DOMAttr class];
</span></span></pre></div>
<a id="trunkSourceWebCorecssElementRuleCollectorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/ElementRuleCollector.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/ElementRuleCollector.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/css/ElementRuleCollector.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -397,9 +397,9 @@
</span><span class="cx"> // after all attributes, since their mapped style depends on the values of multiple attributes.
</span><span class="cx"> addElementStyleProperties(styledElement.additionalPresentationAttributeStyle());
</span><span class="cx">
</span><del>- if (styledElement.isHTMLElement()) {
</del><ins>+ if (is<HTMLElement>(styledElement)) {
</ins><span class="cx"> bool isAuto;
</span><del>- TextDirection textDirection = toHTMLElement(styledElement).directionalityIfhasDirAutoAttribute(isAuto);
</del><ins>+ TextDirection textDirection = downcast<HTMLElement>(styledElement).directionalityIfhasDirAutoAttribute(isAuto);
</ins><span class="cx"> if (isAuto)
</span><span class="cx"> m_result.addMatchedProperties(textDirection == LTR ? leftToRightDeclaration() : rightToLeftDeclaration());
</span><span class="cx"> }
</span><span class="lines">@@ -421,7 +421,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Now check SMIL animation override style.
</span><del>- if (includeSMILProperties && styledElement.isSVGElement())
</del><ins>+ if (includeSMILProperties && is<SVGElement>(styledElement))
</ins><span class="cx"> addElementStyleProperties(downcast<SVGElement>(styledElement).animatedSMILStyleProperties(), false /* isCacheable */);
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecssSelectorCheckercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/SelectorChecker.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/SelectorChecker.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/css/SelectorChecker.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -650,12 +650,12 @@
</span><span class="cx"> break;
</span><span class="cx"> #if ENABLE(CSS_SELECTORS_LEVEL4)
</span><span class="cx"> case CSSSelector::PseudoClassPlaceholderShown:
</span><del>- if (isHTMLTextFormControlElement(*element)) {
</del><ins>+ if (is<HTMLTextFormControlElement>(*element)) {
</ins><span class="cx"> if (context.resolvingMode == Mode::ResolvingStyle) {
</span><span class="cx"> if (RenderStyle* style = context.elementStyle ? context.elementStyle : element->renderStyle())
</span><span class="cx"> style->setUnique();
</span><span class="cx"> }
</span><del>- return toHTMLTextFormControlElement(*element).isPlaceholderVisible();
</del><ins>+ return downcast<HTMLTextFormControlElement>(*element).isPlaceholderVisible();
</ins><span class="cx"> }
</span><span class="cx"> return false;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleResolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleResolver.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleResolver.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/css/StyleResolver.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -444,16 +444,16 @@
</span><span class="cx"> Node* StyleResolver::locateCousinList(Element* parent, unsigned& visitedNodeCount) const
</span><span class="cx"> {
</span><span class="cx"> if (visitedNodeCount >= cStyleSearchThreshold * cStyleSearchLevelThreshold)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> if (!parent || !parent->isStyledElement())
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> StyledElement* styledParent = toStyledElement(parent);
</span><span class="cx"> if (styledParent->inlineStyle())
</span><del>- return 0;
- if (styledParent->isSVGElement() && downcast<SVGElement>(*styledParent).animatedSMILStyleProperties())
- return 0;
</del><ins>+ return nullptr;
+ if (is<SVGElement>(styledParent) && downcast<SVGElement>(*styledParent).animatedSMILStyleProperties())
+ return nullptr;
</ins><span class="cx"> if (styledParent->hasID() && m_ruleSets.features().idsInRules.contains(styledParent->idForStyleResolution().impl()))
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> RenderStyle* parentStyle = styledParent->renderStyle();
</span><span class="cx"> unsigned subcount = 0;
</span><span class="lines">@@ -546,7 +546,7 @@
</span><span class="cx"> static inline bool elementHasDirectionAuto(Element* element)
</span><span class="cx"> {
</span><span class="cx"> // FIXME: This line is surprisingly hot, we may wish to inline hasDirectionAuto into StyleResolver.
</span><del>- return element->isHTMLElement() && toHTMLElement(element)->hasDirectionAuto();
</del><ins>+ return is<HTMLElement>(element) && downcast<HTMLElement>(*element).hasDirectionAuto();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool StyleResolver::sharingCandidateHasIdenticalStyleAffectingAttributes(StyledElement* sharingCandidate) const
</span></span></pre></div>
<a id="trunkSourceWebCorecssjitSelectorCompilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/cssjit/SelectorCompiler.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/cssjit/SelectorCompiler.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/cssjit/SelectorCompiler.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -2782,29 +2782,29 @@
</span><span class="cx"> #if ENABLE(CSS_SELECTORS_LEVEL4)
</span><span class="cx"> static bool makeContextStyleUniqueIfNecessaryAndTestIsPlaceholderShown(Element* element, const SelectorChecker::CheckingContext* checkingContext)
</span><span class="cx"> {
</span><del>- if (isHTMLTextFormControlElement(*element)) {
</del><ins>+ if (is<HTMLTextFormControlElement>(*element)) {
</ins><span class="cx"> if (checkingContext->resolvingMode == SelectorChecker::Mode::ResolvingStyle)
</span><span class="cx"> checkingContext->elementStyle->setUnique();
</span><del>- return toHTMLTextFormControlElement(*element).isPlaceholderVisible();
</del><ins>+ return downcast<HTMLTextFormControlElement>(*element).isPlaceholderVisible();
</ins><span class="cx"> }
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static bool makeElementStyleUniqueIfNecessaryAndTestIsPlaceholderShown(Element* element, const SelectorChecker::CheckingContext* checkingContext)
</span><span class="cx"> {
</span><del>- if (isHTMLTextFormControlElement(*element)) {
</del><ins>+ if (is<HTMLTextFormControlElement>(*element)) {
</ins><span class="cx"> if (checkingContext->resolvingMode == SelectorChecker::Mode::ResolvingStyle) {
</span><span class="cx"> if (RenderStyle* style = element->renderStyle())
</span><span class="cx"> style->setUnique();
</span><span class="cx"> }
</span><del>- return toHTMLTextFormControlElement(*element).isPlaceholderVisible();
</del><ins>+ return downcast<HTMLTextFormControlElement>(*element).isPlaceholderVisible();
</ins><span class="cx"> }
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static bool isPlaceholderShown(Element* element)
</span><span class="cx"> {
</span><del>- return isHTMLTextFormControlElement(*element) && toHTMLTextFormControlElement(*element).isPlaceholderVisible();
</del><ins>+ return is<HTMLTextFormControlElement>(*element) && downcast<HTMLTextFormControlElement>(*element).isPlaceholderVisible();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void SelectorCodeGenerator::generateElementHasPlaceholderShown(Assembler::JumpList& failureCases, const SelectorFragment& fragment)
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodeAlgorithmscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNodeAlgorithms.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNodeAlgorithms.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/dom/ContainerNodeAlgorithms.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -103,8 +103,8 @@
</span><span class="cx"> unsigned count = 0;
</span><span class="cx">
</span><span class="cx"> if (node.isElementNode()) {
</span><del>- if (node.isFrameOwnerElement() && toHTMLFrameOwnerElement(node).contentFrame())
- count++;
</del><ins>+ if (is<HTMLFrameOwnerElement>(node) && downcast<HTMLFrameOwnerElement>(node).contentFrame())
+ ++count;
</ins><span class="cx">
</span><span class="cx"> if (ShadowRoot* root = toElement(node).shadowRoot())
</span><span class="cx"> count += assertConnectedSubrameCountIsConsistent(*root);
</span><span class="lines">@@ -138,8 +138,8 @@
</span><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (element.isHTMLElement() && element.isFrameOwnerElement())
- frameOwners.append(toHTMLFrameOwnerElement(element));
</del><ins>+ if (is<HTMLFrameOwnerElement>(element))
+ frameOwners.append(downcast<HTMLFrameOwnerElement>(element));
</ins><span class="cx">
</span><span class="cx"> if (ShadowRoot* shadowRoot = element.shadowRoot())
</span><span class="cx"> collectFrameOwners(frameOwners, *shadowRoot);
</span><span class="lines">@@ -157,8 +157,8 @@
</span><span class="cx"> Vector<Ref<HTMLFrameOwnerElement>> frameOwners;
</span><span class="cx">
</span><span class="cx"> if (policy == RootAndDescendants) {
</span><del>- if (root.isHTMLElement() && root.isFrameOwnerElement())
- frameOwners.append(toHTMLFrameOwnerElement(root));
</del><ins>+ if (is<HTMLFrameOwnerElement>(root))
+ frameOwners.append(downcast<HTMLFrameOwnerElement>(root));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> collectFrameOwners(frameOwners, root);
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/dom/Document.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1036,8 +1036,8 @@
</span><span class="cx"> ec = HIERARCHY_REQUEST_ERR;
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><del>- if (source->isFrameOwnerElement()) {
- HTMLFrameOwnerElement& frameOwnerElement = toHTMLFrameOwnerElement(*source);
</del><ins>+ if (is<HTMLFrameOwnerElement>(*source)) {
+ HTMLFrameOwnerElement& frameOwnerElement = downcast<HTMLFrameOwnerElement>(*source);
</ins><span class="cx"> if (frame() && frame()->tree().isDescendantOf(frameOwnerElement.contentFrame())) {
</span><span class="cx"> ec = HIERARCHY_REQUEST_ERR;
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -2345,7 +2345,7 @@
</span><span class="cx"> if (ec)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- newBody = toHTMLElement(node.get());
</del><ins>+ newBody = downcast<HTMLElement>(node.get());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> HTMLElement* b = body();
</span><span class="lines">@@ -4650,7 +4650,7 @@
</span><span class="cx"> unsigned int length = children->length();
</span><span class="cx"> for (unsigned int i = 0; i < length; ++i) {
</span><span class="cx"> Node* child = children->item(i);
</span><del>- if (!child->hasTagName(linkTag))
</del><ins>+ if (!is<HTMLLinkElement>(child))
</ins><span class="cx"> continue;
</span><span class="cx"> HTMLLinkElement& linkElement = downcast<HTMLLinkElement>(*child);
</span><span class="cx"> if (!(linkElement.iconType() & iconTypesMask))
</span><span class="lines">@@ -5540,8 +5540,8 @@
</span><span class="cx"> queue.append(documentElement());
</span><span class="cx">
</span><span class="cx"> #if ENABLE(VIDEO)
</span><del>- if (shouldNotifyMediaElement && isHTMLMediaElement(*node))
- toHTMLMediaElement(*node).enteredOrExitedFullscreen();
</del><ins>+ if (shouldNotifyMediaElement && is<HTMLMediaElement>(*node))
+ downcast<HTMLMediaElement>(*node).enteredOrExitedFullscreen();
</ins><span class="cx"> #endif
</span><span class="cx"> node->dispatchEvent(Event::create(eventName, true, false));
</span><span class="cx"> }
</span><span class="lines">@@ -6073,8 +6073,8 @@
</span><span class="cx"> elementsToRemoveFromChain.append(element);
</span><span class="cx"> }
</span><span class="cx"> // Unset hovered nodes in sub frame documents if the old hovered node was a frame owner.
</span><del>- if (oldHoveredElement && oldHoveredElement->isFrameOwnerElement()) {
- if (Document* contentDocument = toHTMLFrameOwnerElement(*oldHoveredElement).contentDocument())
</del><ins>+ if (oldHoveredElement && is<HTMLFrameOwnerElement>(*oldHoveredElement)) {
+ if (Document* contentDocument = downcast<HTMLFrameOwnerElement>(*oldHoveredElement).contentDocument())
</ins><span class="cx"> contentDocument->updateHoverActiveState(request, nullptr);
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentStyleSheetCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -280,7 +280,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><del>- } else if ((node->isHTMLElement() && (toHTMLElement(*node).hasTagName(linkTag) || toHTMLElement(*node).hasTagName(styleTag))) || (node->isSVGElement() && downcast<SVGElement>(*node).hasTagName(SVGNames::styleTag))) {
</del><ins>+ } else if (is<HTMLLinkElement>(*node) || is<HTMLStyleElement>(*node) || is<SVGStyleElement>(*node)) {
</ins><span class="cx"> Element& element = toElement(*node);
</span><span class="cx"> AtomicString title = element.fastGetAttribute(titleAttr);
</span><span class="cx"> bool enabledViaScript = false;
</span></span></pre></div>
<a id="trunkSourceWebCoredomRangecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Range.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Range.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/dom/Range.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1123,7 +1123,7 @@
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- RefPtr<DocumentFragment> fragment = WebCore::createContextualFragment(markup, toHTMLElement(element), AllowScriptingContentAndDoNotMarkAlreadyStarted, ec);
</del><ins>+ RefPtr<DocumentFragment> fragment = WebCore::createContextualFragment(markup, downcast<HTMLElement>(element), AllowScriptingContentAndDoNotMarkAlreadyStarted, ec);
</ins><span class="cx"> if (!fragment)
</span><span class="cx"> return 0;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoredommake_namespl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/make_names.pl (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/make_names.pl        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/dom/make_names.pl        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -645,7 +645,7 @@
</span><span class="cx"> if ($parameters{namespace} eq "HTML" && $parsedTags{$name}{wrapperOnlyIfMediaIsAvailable}) {
</span><span class="cx"> print F <<END
</span><span class="cx"> static bool checkTagName(const HTMLElement& element) { return !element.isHTMLUnknownElement() && element.hasTagName($parameters{namespace}Names::${name}Tag); }
</span><del>- static bool checkTagName(const Node& node) { return node.isHTMLElement() && checkTagName(toHTMLElement(node)); }
</del><ins>+ static bool checkTagName(const Node& node) { return is<HTMLElement>(node) && checkTagName(downcast<HTMLElement>(node)); }
</ins><span class="cx"> END
</span><span class="cx"> ;
</span><span class="cx"> } else {
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingApplyStyleCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ApplyStyleCommand.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ApplyStyleCommand.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/ApplyStyleCommand.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include "HTMLFontElement.h"
</span><span class="cx"> #include "HTMLInterchange.h"
</span><span class="cx"> #include "HTMLNames.h"
</span><ins>+#include "HTMLSpanElement.h"
</ins><span class="cx"> #include "NodeList.h"
</span><span class="cx"> #include "NodeTraversal.h"
</span><span class="cx"> #include "RenderObject.h"
</span><span class="lines">@@ -67,11 +68,10 @@
</span><span class="cx">
</span><span class="cx"> bool isLegacyAppleStyleSpan(const Node* node)
</span><span class="cx"> {
</span><del>- if (!node || !node->isHTMLElement())
</del><ins>+ if (!node || !is<HTMLSpanElement>(node))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- const HTMLElement& element = toHTMLElement(*node);
- return element.hasTagName(spanTag) && element.fastGetAttribute(classAttr) == styleSpanClassString();
</del><ins>+ return downcast<HTMLSpanElement>(*node).fastGetAttribute(classAttr) == styleSpanClassString();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static bool hasNoAttributeOrOnlyStyleAttribute(const StyledElement* element, ShouldStyleAttributeBeEmpty shouldStyleAttributeBeEmpty)
</span><span class="lines">@@ -92,24 +92,24 @@
</span><span class="cx">
</span><span class="cx"> bool isStyleSpanOrSpanWithOnlyStyleAttribute(const Element* element)
</span><span class="cx"> {
</span><del>- if (!element || !element->hasTagName(spanTag))
</del><ins>+ if (!element || !is<HTMLSpanElement>(element))
</ins><span class="cx"> return false;
</span><del>- return hasNoAttributeOrOnlyStyleAttribute(toHTMLElement(element), AllowNonEmptyStyleAttribute);
</del><ins>+ return hasNoAttributeOrOnlyStyleAttribute(downcast<HTMLSpanElement>(element), AllowNonEmptyStyleAttribute);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline bool isSpanWithoutAttributesOrUnstyledStyleSpan(const Element* element)
</span><span class="cx"> {
</span><del>- if (!element || !element->isHTMLElement() || !element->hasTagName(spanTag))
</del><ins>+ if (!element || !is<HTMLSpanElement>(element))
</ins><span class="cx"> return false;
</span><del>- return hasNoAttributeOrOnlyStyleAttribute(toHTMLElement(element), StyleAttributeShouldBeEmpty);
</del><ins>+ return hasNoAttributeOrOnlyStyleAttribute(downcast<HTMLSpanElement>(element), StyleAttributeShouldBeEmpty);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool isEmptyFontTag(const Element* element, ShouldStyleAttributeBeEmpty shouldStyleAttributeBeEmpty)
</span><span class="cx"> {
</span><del>- if (!element || !element->hasTagName(fontTag))
</del><ins>+ if (!element || !is<HTMLFontElement>(element))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- return hasNoAttributeOrOnlyStyleAttribute(toHTMLElement(element), shouldStyleAttributeBeEmpty);
</del><ins>+ return hasNoAttributeOrOnlyStyleAttribute(downcast<HTMLFontElement>(element), shouldStyleAttributeBeEmpty);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static PassRefPtr<Element> createFontElement(Document& document)
</span><span class="lines">@@ -276,11 +276,11 @@
</span><span class="cx"> if (newBlock)
</span><span class="cx"> block = newBlock;
</span><span class="cx"> }
</span><del>- ASSERT(!block || block->isHTMLElement());
- if (block && block->isHTMLElement()) {
- removeCSSStyle(style, toHTMLElement(block.get()));
</del><ins>+ ASSERT(!block || is<HTMLElement>(*block));
+ if (block && is<HTMLElement>(*block)) {
+ removeCSSStyle(style, downcast<HTMLElement>(block.get()));
</ins><span class="cx"> if (!m_removeOnly)
</span><del>- addBlockStyle(styleChange, toHTMLElement(block.get()));
</del><ins>+ addBlockStyle(styleChange, downcast<HTMLElement>(block.get()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (nextParagraphStart.isOrphan())
</span><span class="lines">@@ -377,11 +377,11 @@
</span><span class="cx"> Node* lastStyledNode = 0;
</span><span class="cx"> for (Node* node = startNode; node != beyondEnd; node = NodeTraversal::next(node)) {
</span><span class="cx"> RefPtr<HTMLElement> element;
</span><del>- if (node->isHTMLElement()) {
</del><ins>+ if (is<HTMLElement>(node)) {
</ins><span class="cx"> // Only work on fully selected nodes.
</span><span class="cx"> if (!nodeFullySelected(node, start, end))
</span><span class="cx"> continue;
</span><del>- element = toHTMLElement(node);
</del><ins>+ element = downcast<HTMLElement>(node);
</ins><span class="cx"> } else if (node->isTextNode() && node->renderer() && node->parentNode() != lastStyledNode) {
</span><span class="cx"> // Last styled node was not parent node of this text node, but we wish to style this
</span><span class="cx"> // text node. To make this possible, add a style span to surround this text node.
</span><span class="lines">@@ -473,13 +473,13 @@
</span><span class="cx"> WritingDirection highestAncestorDirection;
</span><span class="cx"> if (allowedDirection != NaturalWritingDirection
</span><span class="cx"> && highestAncestorUnicodeBidi != CSSValueBidiOverride
</span><del>- && highestAncestorWithUnicodeBidi->isHTMLElement()
</del><ins>+ && is<HTMLElement>(highestAncestorWithUnicodeBidi)
</ins><span class="cx"> && EditingStyle::create(highestAncestorWithUnicodeBidi, EditingStyle::AllProperties)->textDirection(highestAncestorDirection)
</span><span class="cx"> && highestAncestorDirection == allowedDirection) {
</span><span class="cx"> if (!nextHighestAncestorWithUnicodeBidi)
</span><del>- return toHTMLElement(highestAncestorWithUnicodeBidi);
</del><ins>+ return downcast<HTMLElement>(highestAncestorWithUnicodeBidi);
</ins><span class="cx">
</span><del>- unsplitAncestor = toHTMLElement(highestAncestorWithUnicodeBidi);
</del><ins>+ unsplitAncestor = downcast<HTMLElement>(highestAncestorWithUnicodeBidi);
</ins><span class="cx"> highestAncestorWithUnicodeBidi = nextHighestAncestorWithUnicodeBidi;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -758,18 +758,18 @@
</span><span class="cx"> if (!node->renderer() || !node->hasEditableStyle())
</span><span class="cx"> continue;
</span><span class="cx">
</span><del>- if (!node->hasRichlyEditableStyle() && node->isHTMLElement()) {
</del><ins>+ if (!node->hasRichlyEditableStyle() && is<HTMLElement>(*node)) {
</ins><span class="cx"> // This is a plaintext-only region. Only proceed if it's fully selected.
</span><span class="cx"> // pastEndNode is the node after the last fully selected node, so if it's inside node then
</span><span class="cx"> // node isn't fully selected.
</span><span class="cx"> if (pastEndNode && pastEndNode->isDescendantOf(node.get()))
</span><span class="cx"> break;
</span><span class="cx"> // Add to this element's inline style and skip over its contents.
</span><del>- HTMLElement* element = toHTMLElement(node.get());
- RefPtr<MutableStyleProperties> inlineStyle = copyStyleOrCreateEmpty(element->inlineStyle());
</del><ins>+ HTMLElement& element = downcast<HTMLElement>(*node);
+ RefPtr<MutableStyleProperties> inlineStyle = copyStyleOrCreateEmpty(element.inlineStyle());
</ins><span class="cx"> if (MutableStyleProperties* otherStyle = style->style())
</span><span class="cx"> inlineStyle->mergeAndOverrideOnConflict(*otherStyle);
</span><del>- setNodeAttribute(element, styleAttr, inlineStyle->asText());
</del><ins>+ setNodeAttribute(&element, styleAttr, inlineStyle->asText());
</ins><span class="cx"> next = NodeTraversal::nextSkippingChildren(node.get());
</span><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="lines">@@ -856,13 +856,14 @@
</span><span class="cx"> next = NodeTraversal::nextSkippingChildren(node.get());
</span><span class="cx"> } else
</span><span class="cx"> next = NodeTraversal::next(node.get());
</span><del>- if (!node->isHTMLElement())
</del><ins>+
+ if (!is<HTMLElement>(*node))
</ins><span class="cx"> continue;
</span><span class="cx">
</span><span class="cx"> RefPtr<Node> previousSibling = node->previousSibling();
</span><span class="cx"> RefPtr<Node> nextSibling = node->nextSibling();
</span><span class="cx"> RefPtr<ContainerNode> parent = node->parentNode();
</span><del>- removeInlineStyleFromElement(style, toHTMLElement(node.get()), RemoveAlways);
</del><ins>+ removeInlineStyleFromElement(style, downcast<HTMLElement>(node.get()), RemoveAlways);
</ins><span class="cx"> if (!node->inDocument()) {
</span><span class="cx"> // FIXME: We might need to update the start and the end of current selection here but need a test.
</span><span class="cx"> if (runStart == node)
</span><span class="lines">@@ -973,17 +974,17 @@
</span><span class="cx"> HTMLElement* ApplyStyleCommand::highestAncestorWithConflictingInlineStyle(EditingStyle* style, Node* node)
</span><span class="cx"> {
</span><span class="cx"> if (!node)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><del>- HTMLElement* result = 0;
</del><ins>+ HTMLElement* result = nullptr;
</ins><span class="cx"> Node* unsplittableElement = unsplittableElementForPosition(firstPositionInOrBeforeNode(node));
</span><span class="cx">
</span><del>- for (Node *n = node; n; n = n->parentNode()) {
- if (n->isHTMLElement() && shouldRemoveInlineStyleFromElement(style, toHTMLElement(n)))
- result = toHTMLElement(n);
</del><ins>+ for (Node* ancestor = node; ancestor; ancestor = ancestor->parentNode()) {
+ if (is<HTMLElement>(ancestor) && shouldRemoveInlineStyleFromElement(style, downcast<HTMLElement>(ancestor)))
+ result = downcast<HTMLElement>(ancestor);
</ins><span class="cx"> // Should stop at the editable root (cannot cross editing boundary) and
</span><span class="cx"> // also stop at the unsplittable element to be consistent with other UAs
</span><del>- if (n == unsplittableElement)
</del><ins>+ if (ancestor == unsplittableElement)
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -996,19 +997,19 @@
</span><span class="cx">
</span><span class="cx"> node->document().updateStyleIfNeeded();
</span><span class="cx">
</span><del>- if (!style || style->isEmpty() || !node->renderer() || node->hasTagName(iframeTag))
</del><ins>+ if (!style || style->isEmpty() || !node->renderer() || is<HTMLIFrameElement>(node))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> RefPtr<EditingStyle> newInlineStyle = style;
</span><del>- if (node->isHTMLElement() && toHTMLElement(node)->inlineStyle()) {
</del><ins>+ if (is<HTMLElement>(node) && downcast<HTMLElement>(node)->inlineStyle()) {
</ins><span class="cx"> newInlineStyle = style->copy();
</span><del>- newInlineStyle->mergeInlineStyleOfElement(toHTMLElement(node), EditingStyle::OverrideValues);
</del><ins>+ newInlineStyle->mergeInlineStyleOfElement(downcast<HTMLElement>(node), EditingStyle::OverrideValues);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Since addInlineStyleIfNeeded can't add styles to block-flow render objects, add style attribute instead.
</span><span class="cx"> // FIXME: applyInlineStyleToRange should be used here instead.
</span><del>- if ((node->renderer()->isRenderBlockFlow() || node->hasChildNodes()) && node->isHTMLElement()) {
- setNodeAttribute(toHTMLElement(node), styleAttr, newInlineStyle->style()->asText());
</del><ins>+ if ((node->renderer()->isRenderBlockFlow() || node->hasChildNodes()) && is<HTMLElement>(node)) {
+ setNodeAttribute(downcast<HTMLElement>(node), styleAttr, newInlineStyle->style()->asText());
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1045,8 +1046,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RefPtr<EditingStyle> styleToPushDown = EditingStyle::create();
</span><del>- if (current->isHTMLElement())
- removeInlineStyleFromElement(style, toHTMLElement(current.get()), RemoveIfNeeded, styleToPushDown.get());
</del><ins>+ if (is<HTMLElement>(*current))
+ removeInlineStyleFromElement(style, downcast<HTMLElement>(current.get()), RemoveIfNeeded, styleToPushDown.get());
</ins><span class="cx">
</span><span class="cx"> // The inner loop will go through children on each level
</span><span class="cx"> // FIXME: we should aggregate inline child elements together so that we don't wrap each child separately.
</span><span class="lines">@@ -1119,8 +1120,8 @@
</span><span class="cx"> } else
</span><span class="cx"> next = NodeTraversal::next(node.get());
</span><span class="cx">
</span><del>- if (node->isHTMLElement() && nodeFullySelected(node.get(), start, end)) {
- RefPtr<HTMLElement> elem = toHTMLElement(node.get());
</del><ins>+ if (is<HTMLElement>(*node) && nodeFullySelected(node.get(), start, end)) {
+ RefPtr<HTMLElement> elem = downcast<HTMLElement>(node.get());
</ins><span class="cx"> RefPtr<Node> prev = NodeTraversal::previousPostOrder(elem.get());
</span><span class="cx"> RefPtr<Node> next = NodeTraversal::next(elem.get());
</span><span class="cx"> RefPtr<EditingStyle> styleToPushDown;
</span><span class="lines">@@ -1248,10 +1249,10 @@
</span><span class="cx">
</span><span class="cx"> bool ApplyStyleCommand::shouldSplitTextElement(Element* element, EditingStyle* style)
</span><span class="cx"> {
</span><del>- if (!element || !element->isHTMLElement())
</del><ins>+ if (!element || !is<HTMLElement>(element))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- return shouldRemoveInlineStyleFromElement(style, toHTMLElement(element));
</del><ins>+ return shouldRemoveInlineStyleFromElement(style, downcast<HTMLElement>(element));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool ApplyStyleCommand::isValidCaretPositionInTextNode(const Position& position)
</span><span class="lines">@@ -1427,14 +1428,14 @@
</span><span class="cx"> ASSERT(endNode->inDocument());
</span><span class="cx">
</span><span class="cx"> // Find appropriate font and span elements top-down.
</span><del>- HTMLElement* fontContainer = 0;
- HTMLElement* styleContainer = 0;
</del><ins>+ HTMLFontElement* fontContainer = nullptr;
+ HTMLElement* styleContainer = nullptr;
</ins><span class="cx"> for (Node* container = startNode.get(); container && startNode == endNode; container = container->firstChild()) {
</span><del>- if (container->isHTMLElement() && container->hasTagName(fontTag))
- fontContainer = toHTMLElement(container);
- bool styleContainerIsNotSpan = !styleContainer || !styleContainer->hasTagName(spanTag);
- if (container->isHTMLElement() && (container->hasTagName(spanTag) || (styleContainerIsNotSpan && container->hasChildNodes())))
- styleContainer = toHTMLElement(container);
</del><ins>+ if (is<HTMLFontElement>(container))
+ fontContainer = downcast<HTMLFontElement>(container);
+ bool styleContainerIsNotSpan = !styleContainer || !is<HTMLSpanElement>(styleContainer);
+ if (is<HTMLElement>(container) && (is<HTMLSpanElement>(container) || (styleContainerIsNotSpan && container->hasChildNodes())))
+ styleContainer = downcast<HTMLElement>(container);
</ins><span class="cx"> if (!container->firstChild())
</span><span class="cx"> break;
</span><span class="cx"> startNode = container->firstChild();
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingDeleteButtonControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/DeleteButtonController.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/DeleteButtonController.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/DeleteButtonController.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> Node* element = enclosingNodeOfType(firstPositionInNode(container), &isDeletableElement);
</span><del>- return element && element->isHTMLElement() ? toHTMLElement(element) : nullptr;
</del><ins>+ return element && is<HTMLElement>(element) ? downcast<HTMLElement>(element) : nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void DeleteButtonController::respondToChangedSelection(const VisibleSelection& oldSelection)
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/Editor.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/Editor.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/Editor.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx"> // If the target is a text control, and the current selection is outside of its shadow tree,
</span><span class="cx"> // then use the saved selection for that text control.
</span><span class="cx"> HTMLTextFormControlElement* textFormControlOfSelectionStart = enclosingTextFormControl(selection.start());
</span><del>- HTMLTextFormControlElement* textFromControlOfTarget = isHTMLTextFormControlElement(*event->target()->toNode()) ? toHTMLTextFormControlElement(event->target()->toNode()) : nullptr;
</del><ins>+ HTMLTextFormControlElement* textFromControlOfTarget = is<HTMLTextFormControlElement>(*event->target()->toNode()) ? downcast<HTMLTextFormControlElement>(event->target()->toNode()) : nullptr;
</ins><span class="cx"> if (textFromControlOfTarget && (selection.start().isNull() || textFromControlOfTarget != textFormControlOfSelectionStart)) {
</span><span class="cx"> if (RefPtr<Range> range = textFromControlOfTarget->selection())
</span><span class="cx"> return VisibleSelection(range.get(), DOWNSTREAM, selection.isDirectional());
</span><span class="lines">@@ -1660,10 +1660,10 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> Element* focusedElement = document().focusedElement();
</span><del>- if (focusedElement && isHTMLTextFormControlElement(*focusedElement)) {
</del><ins>+ if (focusedElement && is<HTMLTextFormControlElement>(*focusedElement)) {
</ins><span class="cx"> if (direction == NaturalWritingDirection)
</span><span class="cx"> return;
</span><del>- toHTMLElement(focusedElement)->setAttribute(dirAttr, direction == LeftToRightWritingDirection ? "ltr" : "rtl");
</del><ins>+ downcast<HTMLTextFormControlElement>(*focusedElement).setAttribute(dirAttr, direction == LeftToRightWritingDirection ? "ltr" : "rtl");
</ins><span class="cx"> focusedElement->dispatchInputEvent();
</span><span class="cx"> document().updateStyleIfNeeded();
</span><span class="cx"> return;
</span><span class="lines">@@ -3536,8 +3536,8 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> if (node->renderer()->isTextOrLineBreak())
</span><span class="cx"> return node;
</span><del>- if (isHTMLTextFormControlElement(*node))
- node = toHTMLTextFormControlElement(*node).visiblePositionForIndex(1).deepEquivalent().deprecatedNode();
</del><ins>+ if (is<HTMLTextFormControlElement>(*node))
+ node = downcast<HTMLTextFormControlElement>(*node).visiblePositionForIndex(1).deepEquivalent().deprecatedNode();
</ins><span class="cx"> else if (node->firstChild())
</span><span class="cx"> node = node->firstChild();
</span><span class="cx"> else
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingFrameSelectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/FrameSelection.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/FrameSelection.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/FrameSelection.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1686,8 +1686,8 @@
</span><span class="cx"> selectStartTarget = root.get();
</span><span class="cx"> } else {
</span><span class="cx"> if (m_selection.isNone() && focusedElement) {
</span><del>- if (focusedElement->isTextFormControl()) {
- toHTMLTextFormControlElement(*focusedElement).select();
</del><ins>+ if (is<HTMLTextFormControlElement>(focusedElement)) {
+ downcast<HTMLTextFormControlElement>(*focusedElement).select();
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> root = focusedElement->nonBoundaryShadowTreeRootNode();
</span><span class="lines">@@ -2025,8 +2025,8 @@
</span><span class="cx"> return downcast<HTMLFormElement>(&element);
</span><span class="cx"> if (is<HTMLFormControlElement>(element))
</span><span class="cx"> return downcast<HTMLFormControlElement>(element).form();
</span><del>- if (isHTMLFrameElementBase(element)) {
- Document* contentDocument = toHTMLFrameElementBase(element).contentDocument();
</del><ins>+ if (is<HTMLFrameElementBase>(element)) {
+ Document* contentDocument = downcast<HTMLFrameElementBase>(element).contentDocument();
</ins><span class="cx"> if (!contentDocument)
</span><span class="cx"> continue;
</span><span class="cx"> if (HTMLFormElement* frameResult = scanForForm(contentDocument->documentElement()))
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingInsertListCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/InsertListCommand.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/InsertListCommand.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/InsertListCommand.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -72,12 +72,12 @@
</span><span class="cx"> mergeIdenticalElements(previousList, list);
</span><span class="cx">
</span><span class="cx"> if (!list)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> Element* sibling = ElementTraversal::nextSibling(list.get());
</span><del>- if (!sibling || !sibling->isHTMLElement())
</del><ins>+ if (!sibling || !is<HTMLElement>(sibling))
</ins><span class="cx"> return list.release();
</span><span class="cx">
</span><del>- RefPtr<HTMLElement> nextList = toHTMLElement(sibling);
</del><ins>+ RefPtr<HTMLElement> nextList = downcast<HTMLElement>(sibling);
</ins><span class="cx"> if (canMergeLists(list.get(), nextList.get())) {
</span><span class="cx"> mergeIdenticalElements(list, nextList);
</span><span class="cx"> return nextList.release();
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingMarkupAccumulatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/MarkupAccumulator.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/MarkupAccumulator.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/MarkupAccumulator.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -603,14 +603,14 @@
</span><span class="cx">
</span><span class="cx"> bool MarkupAccumulator::elementCannotHaveEndTag(const Node& node)
</span><span class="cx"> {
</span><del>- if (!node.isHTMLElement())
</del><ins>+ if (!is<HTMLElement>(node))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> // FIXME: ieForbidsInsertHTML may not be the right function to call here
</span><span class="cx"> // ieForbidsInsertHTML is used to disallow setting innerHTML/outerHTML
</span><span class="cx"> // or createContextualFragment. It does not necessarily align with
</span><span class="cx"> // which elements should be serialized w/o end tags.
</span><del>- return toHTMLElement(node).ieForbidsInsertHTML();
</del><ins>+ return downcast<HTMLElement>(node).ieForbidsInsertHTML();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void MarkupAccumulator::appendEndMarkup(StringBuilder& result, const Element& element)
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingReplaceSelectionCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -488,16 +488,16 @@
</span><span class="cx"> const StyleProperties* inlineStyle = element->inlineStyle();
</span><span class="cx"> RefPtr<EditingStyle> newInlineStyle = EditingStyle::create(inlineStyle);
</span><span class="cx"> if (inlineStyle) {
</span><del>- if (element->isHTMLElement()) {
</del><ins>+ if (is<HTMLElement>(element)) {
</ins><span class="cx"> Vector<QualifiedName> attributes;
</span><del>- HTMLElement* htmlElement = toHTMLElement(element);
</del><ins>+ HTMLElement& htmlElement = downcast<HTMLElement>(*element);
</ins><span class="cx">
</span><del>- if (newInlineStyle->conflictsWithImplicitStyleOfElement(htmlElement)) {
</del><ins>+ if (newInlineStyle->conflictsWithImplicitStyleOfElement(&htmlElement)) {
</ins><span class="cx"> // e.g. <b style="font-weight: normal;"> is converted to <span style="font-weight: normal;">
</span><del>- node = replaceElementWithSpanPreservingChildrenAndAttributes(htmlElement);
</del><ins>+ node = replaceElementWithSpanPreservingChildrenAndAttributes(&htmlElement);
</ins><span class="cx"> element = toStyledElement(node.get());
</span><del>- insertedNodes.didReplaceNode(htmlElement, node.get());
- } else if (newInlineStyle->extractConflictingImplicitStyleOfAttributes(htmlElement, EditingStyle::PreserveWritingDirection, 0, attributes,
</del><ins>+ insertedNodes.didReplaceNode(&htmlElement, node.get());
+ } else if (newInlineStyle->extractConflictingImplicitStyleOfAttributes(&htmlElement, EditingStyle::PreserveWritingDirection, 0, attributes,
</ins><span class="cx"> EditingStyle::DoNotExtractMatchingStyle)) {
</span><span class="cx"> // e.g. <font size="3" style="font-size: 20px;"> is converted to <font style="font-size: 20px;">
</span><span class="cx"> for (size_t i = 0; i < attributes.size(); i++)
</span><span class="lines">@@ -626,10 +626,10 @@
</span><span class="cx"> for (RefPtr<Node> node = insertedNodes.firstNodeInserted(); node && node != pastEndNode; node = next) {
</span><span class="cx"> next = NodeTraversal::next(node.get());
</span><span class="cx">
</span><del>- if (!node->isHTMLElement())
</del><ins>+ if (!is<HTMLElement>(*node))
</ins><span class="cx"> continue;
</span><span class="cx">
</span><del>- if (isProhibitedParagraphChild(toHTMLElement(node.get())->localName())) {
</del><ins>+ if (isProhibitedParagraphChild(downcast<HTMLElement>(*node).localName())) {
</ins><span class="cx"> if (auto* paragraphElement = enclosingElementWithTag(positionInParentBeforeNode(node.get()), pTag)) {
</span><span class="cx"> auto* parent = paragraphElement->parentNode();
</span><span class="cx"> if (parent && parent->hasEditableStyle())
</span><span class="lines">@@ -643,7 +643,7 @@
</span><span class="cx"> if (headerElement->parentNode() && headerElement->parentNode()->isContentRichlyEditable())
</span><span class="cx"> moveNodeOutOfAncestor(node, headerElement);
</span><span class="cx"> else {
</span><del>- HTMLElement* newSpanElement = replaceElementWithSpanPreservingChildrenAndAttributes(toHTMLElement(node.get()));
</del><ins>+ HTMLElement* newSpanElement = replaceElementWithSpanPreservingChildrenAndAttributes(downcast<HTMLElement>(node.get()));
</ins><span class="cx"> insertedNodes.didReplaceNode(node.get(), newSpanElement);
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -778,7 +778,7 @@
</span><span class="cx"> // so search for the top level style span instead of assuming it's at the top.
</span><span class="cx"> for (Node* node = insertedNodes.firstNodeInserted(); node; node = NodeTraversal::next(node)) {
</span><span class="cx"> if (isLegacyAppleStyleSpan(node)) {
</span><del>- wrappingStyleSpan = toHTMLElement(node);
</del><ins>+ wrappingStyleSpan = downcast<HTMLElement>(node);
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -1099,7 +1099,7 @@
</span><span class="cx"> Node* blockStart = enclosingBlock(insertionPos.deprecatedNode());
</span><span class="cx"> if ((isListElement(refNode.get()) || (isLegacyAppleStyleSpan(refNode.get()) && isListElement(refNode->firstChild())))
</span><span class="cx"> && blockStart && blockStart->renderer()->isListItem())
</span><del>- refNode = insertAsListItems(toHTMLElement(refNode.get()), blockStart, insertionPos, insertedNodes);
</del><ins>+ refNode = insertAsListItems(downcast<HTMLElement>(refNode.get()), blockStart, insertionPos, insertedNodes);
</ins><span class="cx"> else {
</span><span class="cx"> insertNodeAt(refNode, insertionPos);
</span><span class="cx"> insertedNodes.respondToNodeInsertion(refNode.get());
</span><span class="lines">@@ -1438,7 +1438,7 @@
</span><span class="cx"> RefPtr<HTMLElement> listElement = prpListElement;
</span><span class="cx">
</span><span class="cx"> while (listElement->hasOneChild() && isListElement(listElement->firstChild()))
</span><del>- listElement = toHTMLElement(listElement->firstChild());
</del><ins>+ listElement = downcast<HTMLElement>(listElement->firstChild());
</ins><span class="cx">
</span><span class="cx"> bool isStart = isStartOfParagraph(insertPos);
</span><span class="cx"> bool isEnd = isEndOfParagraph(insertPos);
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingTextIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/TextIterator.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/TextIterator.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/TextIterator.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include "Frame.h"
</span><span class="cx"> #include "HTMLElement.h"
</span><span class="cx"> #include "HTMLNames.h"
</span><ins>+#include "HTMLParagraphElement.h"
</ins><span class="cx"> #include "HTMLTextFormControlElement.h"
</span><span class="cx"> #include "InlineTextBox.h"
</span><span class="cx"> #include "NodeTraversal.h"
</span><span class="lines">@@ -813,9 +814,9 @@
</span><span class="cx"> // a newline both before and after the element.
</span><span class="cx"> auto* renderer = node.renderer();
</span><span class="cx"> if (!renderer) {
</span><del>- if (!node.isHTMLElement())
</del><ins>+ if (!is<HTMLElement>(node))
</ins><span class="cx"> return false;
</span><del>- auto& element = toHTMLElement(node);
</del><ins>+ auto& element = downcast<HTMLElement>(node);
</ins><span class="cx"> return hasHeaderTag(element)
</span><span class="cx"> || element.hasTagName(blockquoteTag)
</span><span class="cx"> || element.hasTagName(ddTag)
</span><span class="lines">@@ -884,9 +885,11 @@
</span><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> // NOTE: We only do this for a select set of nodes, and WinIE appears not to do this at all.
</span><del>- if (!node.isHTMLElement())
</del><ins>+ if (!is<HTMLElement>(node))
</ins><span class="cx"> return false;
</span><del>- if (!(hasHeaderTag(toHTMLElement(node)) || toHTMLElement(node).hasTagName(pTag)))
</del><ins>+
+ HTMLElement& element = downcast<HTMLElement>(node);
+ if (!hasHeaderTag(element) && !is<HTMLParagraphElement>(element))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> int bottomMargin = toRenderBox(renderer)->collapsedMarginAfter();
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingcocoaHTMLConvertermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1889,8 +1889,8 @@
</span><span class="cx"> RetainPtr<NSTextTableBlock> block;
</span><span class="cx">
</span><span class="cx"> if (element) {
</span><del>- if (isHTMLTableCellElement(*element)) {
- HTMLTableCellElement& tableCellElement = toHTMLTableCellElement(*element);
</del><ins>+ if (is<HTMLTableCellElement>(*element)) {
+ HTMLTableCellElement& tableCellElement = downcast<HTMLTableCellElement>(*element);
</ins><span class="cx">
</span><span class="cx"> rowSpan = tableCellElement.rowSpan();
</span><span class="cx"> if (rowSpan < 1)
</span><span class="lines">@@ -2002,8 +2002,8 @@
</span><span class="cx"> if (url)
</span><span class="cx"> retval = !_addAttachmentForElement(element, url, isBlockLevel, NO);
</span><span class="cx"> }
</span><del>- } else if (element.hasTagName(frameTag) || element.hasTagName(iframeTag)) {
- if (Document* contentDocument = toHTMLFrameElementBase(element).contentDocument()) {
</del><ins>+ } else if (is<HTMLFrameElementBase>(element)) {
+ if (Document* contentDocument = downcast<HTMLFrameElementBase>(element).contentDocument()) {
</ins><span class="cx"> _traverseNode(*contentDocument, depth + 1, true /* embedded */);
</span><span class="cx"> retval = NO;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditinghtmleditingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/htmlediting.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/htmlediting.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/htmlediting.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -647,24 +647,24 @@
</span><span class="cx"> HTMLElement* enclosingList(Node* node)
</span><span class="cx"> {
</span><span class="cx"> if (!node)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> Node* root = highestEditableRoot(firstPositionInOrBeforeNode(node));
</span><span class="cx">
</span><del>- for (ContainerNode* n = node->parentNode(); n; n = n->parentNode()) {
- if (n->hasTagName(ulTag) || n->hasTagName(olTag))
- return toHTMLElement(n);
- if (n == root)
- return 0;
</del><ins>+ for (ContainerNode* ancestor = node->parentNode(); ancestor; ancestor = ancestor->parentNode()) {
+ if (is<HTMLUListElement>(ancestor) || is<HTMLOListElement>(ancestor))
+ return downcast<HTMLElement>(ancestor);
+ if (ancestor == root)
+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> Node* enclosingListChild(Node *node)
</span><span class="cx"> {
</span><span class="cx"> if (!node)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> // Check for a list item element, or for a node whose parent is a list element. Such a node
</span><span class="cx"> // will appear visually as a list item (but without a list marker)
</span><span class="cx"> Node* root = highestEditableRoot(firstPositionInOrBeforeNode(node));
</span><span class="lines">@@ -674,10 +674,10 @@
</span><span class="cx"> if (n->hasTagName(liTag) || (isListElement(n->parentNode()) && n != root))
</span><span class="cx"> return n;
</span><span class="cx"> if (n == root || isTableCell(n))
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static HTMLElement* embeddedSublist(Node* listItem)
</span><span class="lines">@@ -685,10 +685,10 @@
</span><span class="cx"> // Check the DOM so that we'll find collapsed sublists without renderers.
</span><span class="cx"> for (Node* n = listItem->firstChild(); n; n = n->nextSibling()) {
</span><span class="cx"> if (isListElement(n))
</span><del>- return toHTMLElement(n);
</del><ins>+ return downcast<HTMLElement>(n);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static Node* appendedSublist(Node* listItem)
</span><span class="lines">@@ -696,12 +696,12 @@
</span><span class="cx"> // Check the DOM so that we'll find collapsed sublists without renderers.
</span><span class="cx"> for (Node* n = listItem->nextSibling(); n; n = n->nextSibling()) {
</span><span class="cx"> if (isListElement(n))
</span><del>- return toHTMLElement(n);
</del><ins>+ return downcast<HTMLElement>(n);
</ins><span class="cx"> if (isListItem(listItem))
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // FIXME: This method should not need to call isStartOfParagraph/isEndOfParagraph
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingiosEditorIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ios/EditorIOS.mm (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ios/EditorIOS.mm        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/ios/EditorIOS.mm        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -186,7 +186,7 @@
</span><span class="cx"> || downcast<HTMLInputElement>(*focusedElement).isSearchField())))) {
</span><span class="cx"> if (direction == NaturalWritingDirection)
</span><span class="cx"> return;
</span><del>- toHTMLElement(*focusedElement).setAttribute(alignAttr, newValue);
</del><ins>+ downcast<HTMLElement>(*focusedElement).setAttribute(alignAttr, newValue);
</ins><span class="cx"> m_frame.document()->updateStyleIfNeeded();
</span><span class="cx"> return;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmacEditorMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/mac/EditorMac.mm (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/mac/EditorMac.mm        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/mac/EditorMac.mm        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -250,8 +250,8 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> // And only if the source Element and destination Element have the same HTML tag name.
</span><del>- const HTMLElement& oldElement = toHTMLElement(node);
- HTMLElement& newElement = toHTMLElement(*firstChild);
</del><ins>+ const HTMLElement& oldElement = downcast<HTMLElement>(node);
+ HTMLElement& newElement = downcast<HTMLElement>(*firstChild);
</ins><span class="cx"> if (oldElement.localName() != newElement.localName())
</span><span class="cx"> return;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmarkupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/markup.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/markup.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/editing/markup.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -327,7 +327,7 @@
</span><span class="cx">
</span><span class="cx"> if (shouldAnnotateOrForceInline) {
</span><span class="cx"> if (shouldAnnotate())
</span><del>- newInlineStyle->mergeStyleFromRulesForSerialization(toHTMLElement(const_cast<Element*>(&element)));
</del><ins>+ newInlineStyle->mergeStyleFromRulesForSerialization(downcast<HTMLElement>(const_cast<Element*>(&element)));
</ins><span class="cx">
</span><span class="cx"> if (addDisplayInline)
</span><span class="cx"> newInlineStyle->forceInline();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlBaseChooserOnlyDateAndTimeInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -73,14 +73,14 @@
</span><span class="cx"> void BaseChooserOnlyDateAndTimeInputType::updateAppearance()
</span><span class="cx"> {
</span><span class="cx"> Node* node = element().userAgentShadowRoot()->firstChild();
</span><del>- if (!node || !node->isHTMLElement())
</del><ins>+ if (!node || !is<HTMLElement>(node))
</ins><span class="cx"> return;
</span><span class="cx"> String displayValue = visibleValue();
</span><span class="cx"> if (displayValue.isEmpty()) {
</span><span class="cx"> // Need to put something to keep text baseline.
</span><span class="cx"> displayValue = ASCIILiteral(" ");
</span><span class="cx"> }
</span><del>- toHTMLElement(node)->setInnerText(displayValue, ASSERT_NO_EXCEPTION);
</del><ins>+ downcast<HTMLElement>(*node).setInnerText(displayValue, ASSERT_NO_EXCEPTION);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void BaseChooserOnlyDateAndTimeInputType::setValue(const String& value, bool valueChanged, TextFieldEventBehavior eventBehavior)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlColorInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ColorInputType.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ColorInputType.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/ColorInputType.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -199,7 +199,7 @@
</span><span class="cx"> HTMLElement* ColorInputType::shadowColorSwatch() const
</span><span class="cx"> {
</span><span class="cx"> ShadowRoot* shadow = element().userAgentShadowRoot();
</span><del>- return shadow ? toHTMLElement(shadow->firstChild()->firstChild()) : 0;
</del><ins>+ return shadow ? downcast<HTMLElement>(shadow->firstChild()->firstChild()) : nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> IntRect ColorInputType::elementRectRelativeToRootView() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLBodyElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLBodyElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLBodyElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLBodyElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -175,8 +175,8 @@
</span><span class="cx"> // magically appear on the <body> of all documents embedded through <iframe> or <frame>.
</span><span class="cx"> // FIXME: Perhaps this code should be in attach() instead of here.
</span><span class="cx"> HTMLFrameOwnerElement* ownerElement = document().ownerElement();
</span><del>- if (ownerElement && isHTMLFrameElementBase(*ownerElement)) {
- HTMLFrameElementBase& ownerFrameElement = toHTMLFrameElementBase(*ownerElement);
</del><ins>+ if (ownerElement && is<HTMLFrameElementBase>(*ownerElement)) {
+ HTMLFrameElementBase& ownerFrameElement = downcast<HTMLFrameElementBase>(*ownerElement);
</ins><span class="cx"> int marginWidth = ownerFrameElement.marginWidth();
</span><span class="cx"> if (marginWidth != -1)
</span><span class="cx"> setIntegralAttribute(marginwidthAttr, marginWidth);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLCollection.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLCollection.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLCollection.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -388,23 +388,23 @@
</span><span class="cx"> // that are allowed a name attribute.
</span><span class="cx">
</span><span class="cx"> if (name.isEmpty())
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> ContainerNode& root = rootNode();
</span><span class="cx"> if (!usesCustomForwardOnlyTraversal() && root.isInTreeScope()) {
</span><span class="cx"> TreeScope& treeScope = root.treeScope();
</span><del>- Element* candidate = 0;
</del><ins>+ Element* candidate = nullptr;
</ins><span class="cx"> if (treeScope.hasElementWithId(*name.impl())) {
</span><span class="cx"> if (!treeScope.containsMultipleElementsWithId(name))
</span><span class="cx"> candidate = treeScope.getElementById(name);
</span><span class="cx"> } else if (treeScope.hasElementWithName(*name.impl())) {
</span><span class="cx"> if (!treeScope.containsMultipleElementsWithName(name)) {
</span><span class="cx"> candidate = treeScope.getElementByName(name);
</span><del>- if (candidate && type() == DocAll && (!candidate->isHTMLElement() || !nameShouldBeVisibleInDocumentAll(toHTMLElement(*candidate))))
- candidate = 0;
</del><ins>+ if (candidate && type() == DocAll && (!is<HTMLElement>(candidate) || !nameShouldBeVisibleInDocumentAll(downcast<HTMLElement>(*candidate))))
+ candidate = nullptr;
</ins><span class="cx"> }
</span><span class="cx"> } else
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> if (candidate && isMatchingElement(*this, *candidate)
</span><span class="cx"> && (m_shouldOnlyIncludeDirectChildren ? candidate->parentNode() == &root : candidate->isDescendantOf(&root)))
</span><span class="lines">@@ -425,7 +425,7 @@
</span><span class="cx"> return nameResults->at(0);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void HTMLCollection::updateNamedElementCache() const
</span><span class="lines">@@ -443,10 +443,10 @@
</span><span class="cx"> const AtomicString& idAttrVal = element->getIdAttribute();
</span><span class="cx"> if (!idAttrVal.isEmpty())
</span><span class="cx"> cache->appendIdCache(idAttrVal, element);
</span><del>- if (!element->isHTMLElement())
</del><ins>+ if (!is<HTMLElement>(element))
</ins><span class="cx"> continue;
</span><span class="cx"> const AtomicString& nameAttrVal = element->getNameAttribute();
</span><del>- if (!nameAttrVal.isEmpty() && idAttrVal != nameAttrVal && (type() != DocAll || nameShouldBeVisibleInDocumentAll(toHTMLElement(*element))))
</del><ins>+ if (!nameAttrVal.isEmpty() && idAttrVal != nameAttrVal && (type() != DocAll || nameShouldBeVisibleInDocumentAll(downcast<HTMLElement>(*element))))
</ins><span class="cx"> cache->appendNameCache(nameAttrVal, element);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx"> #include "Frame.h"
</span><span class="cx"> #include "FrameLoader.h"
</span><span class="cx"> #include "FrameView.h"
</span><ins>+#include "HTMLBDIElement.h"
</ins><span class="cx"> #include "HTMLBRElement.h"
</span><span class="cx"> #include "HTMLCollection.h"
</span><span class="cx"> #include "HTMLDocument.h"
</span><span class="lines">@@ -363,8 +364,8 @@
</span><span class="cx"> {
</span><span class="cx"> const Element* currentElement = this;
</span><span class="cx"> do {
</span><del>- if (currentElement->isHTMLElement()) {
- switch (contentEditableType(toHTMLElement(*currentElement))) {
</del><ins>+ if (is<HTMLElement>(currentElement)) {
+ switch (contentEditableType(downcast<HTMLElement>(*currentElement))) {
</ins><span class="cx"> case ContentEditableType::True:
</span><span class="cx"> case ContentEditableType::PlaintextOnly:
</span><span class="cx"> return true;
</span><span class="lines">@@ -451,11 +452,11 @@
</span><span class="cx"> void HTMLElement::setOuterHTML(const String& html, ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> Element* p = parentElement();
</span><del>- if (!p || !p->isHTMLElement()) {
</del><ins>+ if (!p || !is<HTMLElement>(p)) {
</ins><span class="cx"> ec = NO_MODIFICATION_ALLOWED_ERR;
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- RefPtr<HTMLElement> parent = toHTMLElement(p);
</del><ins>+ RefPtr<HTMLElement> parent = downcast<HTMLElement>(p);
</ins><span class="cx"> RefPtr<Node> prev = previousSibling();
</span><span class="cx"> RefPtr<Node> next = nextSibling();
</span><span class="cx">
</span><span class="lines">@@ -868,7 +869,10 @@
</span><span class="cx">
</span><span class="cx"> static inline bool elementAffectsDirectionality(const Node& node)
</span><span class="cx"> {
</span><del>- return node.isHTMLElement() && (toHTMLElement(node).hasTagName(bdiTag) || toHTMLElement(node).fastHasAttribute(dirAttr));
</del><ins>+ if (!is<HTMLElement>(node))
+ return false;
+ const HTMLElement& element = downcast<HTMLElement>(node);
+ return is<HTMLBDIElement>(element) || element.fastHasAttribute(dirAttr);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static void setHasDirAutoFlagRecursively(Node* firstNode, bool flag, Node* lastNode = nullptr)
</span><span class="lines">@@ -919,8 +923,8 @@
</span><span class="cx">
</span><span class="cx"> TextDirection HTMLElement::directionality(Node** strongDirectionalityTextNode) const
</span><span class="cx"> {
</span><del>- if (isHTMLTextFormControlElement(*this)) {
- HTMLTextFormControlElement& textElement = toHTMLTextFormControlElement(const_cast<HTMLElement&>(*this));
</del><ins>+ if (is<HTMLTextFormControlElement>(*this)) {
+ HTMLTextFormControlElement& textElement = downcast<HTMLTextFormControlElement>(const_cast<HTMLElement&>(*this));
</ins><span class="cx"> bool hasStrongDirectionality;
</span><span class="cx"> UCharDirection textDirection = textElement.value().defaultWritingDirection(&hasStrongDirectionality);
</span><span class="cx"> if (strongDirectionalityTextNode)
</span><span class="lines">@@ -966,8 +970,8 @@
</span><span class="cx"> {
</span><span class="cx"> Element* parent = parentElement();
</span><span class="cx">
</span><del>- if (parent && parent->isHTMLElement() && parent->selfOrAncestorHasDirAutoAttribute())
- toHTMLElement(parent)->adjustDirectionalityIfNeededAfterChildAttributeChanged(this);
</del><ins>+ if (parent && is<HTMLElement>(parent) && parent->selfOrAncestorHasDirAutoAttribute())
+ downcast<HTMLElement>(*parent).adjustDirectionalityIfNeededAfterChildAttributeChanged(this);
</ins><span class="cx">
</span><span class="cx"> if (equalIgnoringCase(value, "auto"))
</span><span class="cx"> calculateAndAdjustDirectionality();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLElement.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -146,19 +146,13 @@
</span><span class="cx"> ASSERT(tagName.localName().impl());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void isHTMLElement(const HTMLElement&); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLElement(const Node& node) { return node.isHTMLElement(); }
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLElement)
+ static bool isHTMLElement(const Node& node) { return node.isHTMLElement(); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx">
</span><del>-template <typename ArgType>
-struct NodeTypeCastTraits<const HTMLElement, ArgType> {
- static bool isType(ArgType& node) { return isHTMLElement(node); }
-};
-
-NODE_TYPE_CASTS(HTMLElement)
-
</del><span class="cx"> inline bool Node::hasTagName(const HTMLQualifiedName& name) const
</span><span class="cx"> {
</span><del>- return isHTMLElement() && toHTMLElement(*this).hasTagName(name);
</del><ins>+ return is<HTMLElement>(*this) && downcast<HTMLElement>(*this).hasTagName(name);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLFormElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -800,7 +800,7 @@
</span><span class="cx">
</span><span class="cx"> HTMLElement* elementFromPast = elementFromPastNamesMap(name);
</span><span class="cx"> if (namedItems.size() == 1 && &namedItems.first().get() != elementFromPast)
</span><del>- addToPastNamesMap(toHTMLElement(&namedItems.first().get())->asFormNamedItem(), name);
</del><ins>+ addToPastNamesMap(downcast<HTMLElement>(namedItems.first().get()).asFormNamedItem(), name);
</ins><span class="cx"> else if (elementFromPast && namedItems.isEmpty())
</span><span class="cx"> namedItems.append(*elementFromPast);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameElementBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameElementBase.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameElementBase.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLFrameElementBase.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -76,12 +76,11 @@
</span><span class="cx"> int m_marginHeight;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-void isHTMLFrameElementBase(const HTMLFrameElementBase&); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLFrameElementBase(const HTMLElement& element) { return is<HTMLFrameElement>(element) || is<HTMLIFrameElement>(element); }
-inline bool isHTMLFrameElementBase(const Node& node) { return is<HTMLFrameElement>(node) || is<HTMLIFrameElement>(node); }
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLFrameElementBase)
+ static bool isHTMLFrameElementBase(const HTMLElement& element) { return is<HTMLFrameElement>(element) || is<HTMLIFrameElement>(element); }
+ static bool isHTMLFrameElementBase(const Node& node) { return is<HTMLElement>(node) && isHTMLFrameElementBase(downcast<HTMLElement>(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx">
</span><del>-NODE_TYPE_CASTS(HTMLFrameElementBase)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #endif // HTMLFrameElementBase_h
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameOwnerElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameOwnerElement.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameOwnerElement.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLFrameOwnerElement.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -69,10 +69,11 @@
</span><span class="cx"> SandboxFlags m_sandboxFlags;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-void isHTMLFrameOwnerElement(const HTMLFrameOwnerElement&); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLFrameOwnerElement(const Node& node) { return node.isFrameOwnerElement(); }
-NODE_TYPE_CASTS(HTMLFrameOwnerElement)
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLFrameOwnerElement)
+ static bool isHTMLFrameOwnerElement(const Node& node) { return node.isFrameOwnerElement(); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx">
</span><ins>+
</ins><span class="cx"> class SubframeLoadingDisabler {
</span><span class="cx"> public:
</span><span class="cx"> explicit SubframeLoadingDisabler(ContainerNode& root)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -910,17 +910,11 @@
</span><span class="cx"> #endif
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-void isHTMLMediaElement(const HTMLMediaElement&); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLMediaElement(const Element& element) { return element.isMediaElement(); }
-inline bool isHTMLMediaElement(const Node& node) { return node.isElementNode() && toElement(node).isMediaElement(); }
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLMediaElement)
+ static bool isHTMLMediaElement(const Element& element) { return element.isMediaElement(); }
+ static bool isHTMLMediaElement(const Node& node) { return node.isElementNode() && isHTMLMediaElement(toElement(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx">
</span><del>-template <typename ArgType>
-struct NodeTypeCastTraits<const HTMLMediaElement, ArgType> {
- static bool isType(ArgType& node) { return isHTMLMediaElement(node); }
-};
-
-NODE_TYPE_CASTS(HTMLMediaElement)
-
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> template<>
</span><span class="cx"> struct ValueToString<MediaTime> {
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLOptionElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -312,11 +312,10 @@
</span><span class="cx"> if (ownElementDisabled())
</span><span class="cx"> return true;
</span><span class="cx">
</span><del>- if (!parentNode() || !parentNode()->isHTMLElement())
</del><ins>+ if (!parentNode() || !is<HTMLOptGroupElement>(parentNode()))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- HTMLElement& parentElement = toHTMLElement(*parentNode());
- return is<HTMLOptGroupElement>(parentElement) && parentElement.isDisabledFormControl();
</del><ins>+ return downcast<HTMLOptGroupElement>(*parentNode()).isDisabledFormControl();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> Node::InsertionNotificationRequest HTMLOptionElement::insertedInto(ContainerNode& insertionPoint)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLPlugInElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLPlugInElement.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLPlugInElement.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLPlugInElement.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -134,9 +134,9 @@
</span><span class="cx"> DisplayState m_displayState;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-void isHTMLPlugInElement(const HTMLPlugInElement&); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLPlugInElement(const Node& node) { return node.isPluginElement(); }
-NODE_TYPE_CASTS(HTMLPlugInElement)
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLPlugInElement)
+ static bool isHTMLPlugInElement(const Node& node) { return node.isPluginElement(); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLPlugInImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -414,15 +414,12 @@
</span><span class="cx"> {
</span><span class="cx"> for (unsigned i = 0, length = collection->length(); i < length; i++) {
</span><span class="cx"> Node* node = collection->item(i);
</span><del>- if (node->isPluginElement()) {
- HTMLPlugInElement* plugInElement = toHTMLPlugInElement(node);
- if (plugInElement->isPlugInImageElement()) {
- HTMLPlugInImageElement& plugInImageElement = toHTMLPlugInImageElement(*node);
- const URL& loadedURL = plugInImageElement.loadedUrl();
- String otherMimeType = plugInImageElement.loadedMimeType();
- if (plugInOrigin == loadedURL.host() && mimeType == otherMimeType)
- plugInList.append(&plugInImageElement);
- }
</del><ins>+ if (is<HTMLPlugInImageElement>(node)) {
+ HTMLPlugInImageElement& plugInImageElement = downcast<HTMLPlugInImageElement>(*node);
+ const URL& loadedURL = plugInImageElement.loadedUrl();
+ String otherMimeType = plugInImageElement.loadedMimeType();
+ if (plugInOrigin == loadedURL.host() && mimeType == otherMimeType)
+ plugInList.append(&plugInImageElement);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLPlugInImageElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLPlugInImageElement.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLPlugInImageElement.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLPlugInImageElement.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -157,17 +157,11 @@
</span><span class="cx"> bool m_plugInDimensionsSpecified;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-void isHTMLPlugInImageElement(const HTMLPlugInImageElement&); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLPlugInImageElement(const HTMLPlugInElement& element) { return element.isPlugInImageElement(); }
-inline bool isHTMLPlugInImageElement(const Node& node) { return node.isPluginElement() && toHTMLPlugInElement(node).isPlugInImageElement(); }
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLPlugInImageElement)
+ static bool isHTMLPlugInImageElement(const HTMLPlugInElement& element) { return element.isPlugInImageElement(); }
+ static bool isHTMLPlugInImageElement(const Node& node) { return is<HTMLPlugInElement>(node) && isHTMLPlugInImageElement(downcast<HTMLPlugInElement>(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx">
</span><del>-template <typename ArgType>
-struct NodeTypeCastTraits<const HTMLPlugInImageElement, ArgType> {
- static bool isType(ArgType& node) { return isHTMLPlugInImageElement(node); }
-};
-
-NODE_TYPE_CASTS(HTMLPlugInImageElement)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #endif // HTMLPlugInImageElement_h
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -449,7 +449,7 @@
</span><span class="cx"> setLength(index, ec);
</span><span class="cx"> // Replace an existing entry?
</span><span class="cx"> } else if (diff < 0) {
</span><del>- before = toHTMLElement(options()->item(index+1));
</del><ins>+ before = downcast<HTMLElement>(options()->item(index + 1));
</ins><span class="cx"> removeByIndex(index);
</span><span class="cx"> }
</span><span class="cx"> // Finally add the new element.
</span><span class="lines">@@ -471,7 +471,7 @@
</span><span class="cx"> do {
</span><span class="cx"> RefPtr<Element> option = document().createElement(optionTag, false);
</span><span class="cx"> ASSERT(option);
</span><del>- add(toHTMLElement(option.get()), 0, ec);
</del><ins>+ add(downcast<HTMLElement>(option.get()), nullptr, ec);
</ins><span class="cx"> if (ec)
</span><span class="cx"> break;
</span><span class="cx"> } while (++diff);
</span><span class="lines">@@ -785,7 +785,7 @@
</span><span class="cx"> currentElement = ElementTraversal::nextSkippingChildren(currentElement, this);
</span><span class="cx"> continue;
</span><span class="cx"> }
</span><del>- HTMLElement* current = toHTMLElement(currentElement);
</del><ins>+ HTMLElement* current = downcast<HTMLElement>(currentElement);
</ins><span class="cx">
</span><span class="cx"> // optgroup tags may not nest. However, both FireFox and IE will
</span><span class="cx"> // flatten the tree automatically, so we follow suit.
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSourceElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSourceElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSourceElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLSourceElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -55,8 +55,8 @@
</span><span class="cx"> {
</span><span class="cx"> HTMLElement::insertedInto(insertionPoint);
</span><span class="cx"> Element* parent = parentElement();
</span><del>- if (parent && parent->isMediaElement())
- toHTMLMediaElement(parentNode())->sourceWasAdded(this);
</del><ins>+ if (parent && is<HTMLMediaElement>(parent))
+ downcast<HTMLMediaElement>(*parent).sourceWasAdded(this);
</ins><span class="cx"> return InsertionDone;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -65,8 +65,8 @@
</span><span class="cx"> Element* parent = parentElement();
</span><span class="cx"> if (!parent && removalRoot.isElementNode())
</span><span class="cx"> parent = &toElement(removalRoot);
</span><del>- if (parent && parent->isMediaElement())
- toHTMLMediaElement(parent)->sourceWasRemoved(this);
</del><ins>+ if (parent && is<HTMLMediaElement>(parent))
+ downcast<HTMLMediaElement>(*parent).sourceWasRemoved(this);
</ins><span class="cx"> HTMLElement::removedFrom(removalRoot);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableCellElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableCellElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableCellElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLTableCellElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx"> if (!cellAboveRenderer)
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><del>- return toHTMLTableCellElement(cellAboveRenderer->element());
</del><ins>+ return downcast<HTMLTableCellElement>(cellAboveRenderer->element());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableCellElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableCellElement.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableCellElement.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLTableCellElement.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -62,9 +62,10 @@
</span><span class="cx"> virtual void addSubresourceAttributeURLs(ListHashSet<URL>&) const override;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-void isHTMLTableCellElement(const HTMLTableCellElement&); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLTableCellElement(const Node& node) { return node.hasTagName(HTMLNames::tdTag) || node.hasTagName(HTMLNames::thTag); }
-NODE_TYPE_CASTS(HTMLTableCellElement)
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLTableCellElement)
+ static bool isHTMLTableCellElement(const HTMLElement& element) { return element.hasTagName(HTMLNames::tdTag) || element.hasTagName(HTMLNames::thTag); }
+ static bool isHTMLTableCellElement(const Node& node) { return is<HTMLElement>(node) && isHTMLTableCellElement(downcast<HTMLElement>(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx">
</span><span class="cx"> } // namespace
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLTableElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -86,9 +86,9 @@
</span><span class="cx"> {
</span><span class="cx"> for (Node* child = firstChild(); child; child = child->nextSibling()) {
</span><span class="cx"> if (child->hasTagName(theadTag))
</span><del>- return toHTMLTableSectionElement(child);
</del><ins>+ return downcast<HTMLTableSectionElement>(child);
</ins><span class="cx"> }
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void HTMLTableElement::setTHead(PassRefPtr<HTMLTableSectionElement> newHead, ExceptionCode& ec)
</span><span class="lines">@@ -107,9 +107,9 @@
</span><span class="cx"> {
</span><span class="cx"> for (Node* child = firstChild(); child; child = child->nextSibling()) {
</span><span class="cx"> if (child->hasTagName(tfootTag))
</span><del>- return toHTMLTableSectionElement(child);
</del><ins>+ return downcast<HTMLTableSectionElement>(child);
</ins><span class="cx"> }
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void HTMLTableElement::setTFoot(PassRefPtr<HTMLTableSectionElement> newFoot, ExceptionCode& ec)
</span><span class="lines">@@ -178,9 +178,9 @@
</span><span class="cx"> {
</span><span class="cx"> for (Node* child = lastChild(); child; child = child->previousSibling()) {
</span><span class="cx"> if (child->hasTagName(tbodyTag))
</span><del>- return toHTMLTableSectionElement(child);
</del><ins>+ return downcast<HTMLTableSectionElement>(child);
</ins><span class="cx"> }
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> PassRefPtr<HTMLElement> HTMLTableElement::insertRow(int index, ExceptionCode& ec)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableRowElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableRowElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableRowElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLTableRowElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -81,8 +81,8 @@
</span><span class="cx">
</span><span class="cx"> for (Node *node = table->firstChild(); node; node = node->nextSibling()) {
</span><span class="cx"> if (node->hasTagName(tbodyTag)) {
</span><del>- HTMLTableSectionElement* section = toHTMLTableSectionElement(node);
- for (Node* row = section->firstChild(); row; row = row->nextSibling()) {
</del><ins>+ HTMLTableSectionElement& section = downcast<HTMLTableSectionElement>(*node);
+ for (Node* row = section.firstChild(); row; row = row->nextSibling()) {
</ins><span class="cx"> if (row == this)
</span><span class="cx"> return rIndex;
</span><span class="cx"> if (row->hasTagName(trTag))
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableRowsCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> {
</span><span class="cx"> // Because we know that the parent is a table or a section, it's safe to cast it to an HTMLElement
</span><span class="cx"> // giving us access to the faster hasTagName overload from that class.
</span><del>- return toHTMLElement(row.parentNode())->hasTagName(sectionTag);
</del><ins>+ return downcast<HTMLElement>(*row.parentNode()).hasTagName(sectionTag);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> HTMLTableRowElement* HTMLTableRowsCollection::rowAfter(HTMLTableElement* table, HTMLTableRowElement* previous)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableSectionElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableSectionElement.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableSectionElement.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLTableSectionElement.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -61,13 +61,11 @@
</span><span class="cx"> virtual const StyleProperties* additionalPresentationAttributeStyle() override;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-inline bool isHTMLTableSectionElement(const Node& node)
-{
- return node.hasTagName(HTMLNames::theadTag) || node.hasTagName(HTMLNames::tfootTag) || node.hasTagName(HTMLNames::tbodyTag);
-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLTableSectionElement)
+ static bool isHTMLTableSectionElement(const HTMLElement& element) { return element.hasTagName(HTMLNames::theadTag) || element.hasTagName(HTMLNames::tfootTag) || element.hasTagName(HTMLNames::tbodyTag); }
+ static bool isHTMLTableSectionElement(const Node& node) { return is<HTMLElement>(node) && isHTMLTableSectionElement(downcast<HTMLElement>(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx">
</span><del>-NODE_TYPE_CASTS(HTMLTableSectionElement)
-
</del><span class="cx"> } //namespace
</span><span class="cx">
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTagNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTagNames.in (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTagNames.in        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLTagNames.in        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx"> b interfaceName=HTMLElement
</span><span class="cx"> base generateTypeHelpers
</span><span class="cx"> basefont interfaceName=HTMLBaseFontElement
</span><del>-bdi interfaceName=HTMLBDIElement, JSInterfaceName=HTMLElement
</del><ins>+bdi interfaceName=HTMLBDIElement, JSInterfaceName=HTMLElement, generateTypeHelpers
</ins><span class="cx"> bdo interfaceName=HTMLElement
</span><span class="cx"> bgsound interfaceName=HTMLElement
</span><span class="cx"> big interfaceName=HTMLElement
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> fieldset interfaceName=HTMLFieldSetElement, constructorNeedsFormElement, generateTypeHelpers
</span><span class="cx"> figcaption interfaceName=HTMLElement
</span><span class="cx"> figure interfaceName=HTMLElement
</span><del>-font
</del><ins>+font generateTypeHelpers
</ins><span class="cx"> footer interfaceName=HTMLElement
</span><span class="cx"> form generateTypeHelpers
</span><span class="cx"> frame generateTypeHelpers
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx"> optgroup interfaceName=HTMLOptGroupElement, generateTypeHelpers
</span><span class="cx"> option generateTypeHelpers
</span><span class="cx"> output constructorNeedsFormElement
</span><del>-p interfaceName=HTMLParagraphElement
</del><ins>+p interfaceName=HTMLParagraphElement, generateTypeHelpers
</ins><span class="cx"> param generateTypeHelpers
</span><span class="cx"> plaintext interfaceName=HTMLElement
</span><span class="cx"> pre
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx"> track wrapperOnlyIfMediaIsAvailable, conditional=VIDEO_TRACK, generateTypeHelpers
</span><span class="cx"> tt interfaceName=HTMLElement
</span><span class="cx"> u interfaceName=HTMLElement
</span><del>-ul interfaceName=HTMLUListElement
</del><ins>+ul interfaceName=HTMLUListElement, generateTypeHelpers
</ins><span class="cx"> var interfaceName=HTMLElement
</span><span class="cx"> video wrapperOnlyIfMediaIsAvailable, conditional=VIDEO, constructorNeedsCreatedByParser, generateTypeHelpers
</span><span class="cx"> wbr interfaceName=HTMLElement
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextFormControlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -717,7 +717,7 @@
</span><span class="cx"> if (!container)
</span><span class="cx"> return nullptr;
</span><span class="cx"> Element* ancestor = container->shadowHost();
</span><del>- return ancestor && isHTMLTextFormControlElement(*ancestor) ? toHTMLTextFormControlElement(ancestor) : nullptr;
</del><ins>+ return ancestor && is<HTMLTextFormControlElement>(*ancestor) ? downcast<HTMLTextFormControlElement>(ancestor) : nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static const Element* parentHTMLElement(const Element* element)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextFormControlElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextFormControlElement.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -151,10 +151,10 @@
</span><span class="cx"> unsigned char m_isPlaceholderVisible : 1;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-void isHTMLTextFormControlElement(const HTMLTextFormControlElement&); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLTextFormControlElement(const Element& element) { return element.isTextFormControl(); }
-inline bool isHTMLTextFormControlElement(const Node& node) { return node.isElementNode() && toElement(node).isTextFormControl(); }
-NODE_TYPE_CASTS(HTMLTextFormControlElement)
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLTextFormControlElement)
+ static bool isHTMLTextFormControlElement(const Element& element) { return element.isTextFormControl(); }
+ static bool isHTMLTextFormControlElement(const Node& node) { return node.isElementNode() && isHTMLTextFormControlElement(toElement(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx">
</span><span class="cx"> HTMLTextFormControlElement* enclosingTextFormControl(const Position&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTrackElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTrackElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTrackElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/HTMLTrackElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -85,8 +85,8 @@
</span><span class="cx">
</span><span class="cx"> void HTMLTrackElement::removedFrom(ContainerNode& insertionPoint)
</span><span class="cx"> {
</span><del>- if (!parentNode() && isHTMLMediaElement(insertionPoint))
- toHTMLMediaElement(insertionPoint).didRemoveTextTrack(this);
</del><ins>+ if (!parentNode() && is<HTMLMediaElement>(insertionPoint))
+ downcast<HTMLMediaElement>(insertionPoint).didRemoveTextTrack(this);
</ins><span class="cx"> HTMLElement::removedFrom(insertionPoint);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -343,10 +343,10 @@
</span><span class="cx"> HTMLMediaElement* HTMLTrackElement::mediaElement() const
</span><span class="cx"> {
</span><span class="cx"> Element* parent = parentElement();
</span><del>- if (parent && parent->isMediaElement())
- return toHTMLMediaElement(parentNode());
</del><ins>+ if (parent && is<HTMLMediaElement>(parent))
+ return downcast<HTMLMediaElement>(parentNode());
</ins><span class="cx">
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlLabelableElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/LabelableElement.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/LabelableElement.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/LabelableElement.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">
</span><span class="cx"> void isLabelableElement(const LabelableElement&); // Catch unnecessary runtime check of type known at compile time.
</span><span class="cx"> inline bool isLabelableElement(const HTMLElement& element) { return element.isLabelable(); }
</span><del>-inline bool isLabelableElement(const Node& node) { return node.isHTMLElement() && toHTMLElement(node).isLabelable(); }
</del><ins>+inline bool isLabelableElement(const Node& node) { return is<HTMLElement>(node) && downcast<HTMLElement>(node).isLabelable(); }
</ins><span class="cx">
</span><span class="cx"> template <typename ArgType>
</span><span class="cx"> struct NodeTypeCastTraits<const LabelableElement, ArgType> {
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlRangeInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/RangeInputType.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/RangeInputType.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/RangeInputType.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -268,7 +268,7 @@
</span><span class="cx"> ASSERT(element().userAgentShadowRoot()->firstChild()->isHTMLElement());
</span><span class="cx"> ASSERT(element().userAgentShadowRoot()->firstChild()->firstChild()); // track
</span><span class="cx">
</span><del>- return &toHTMLElement(*element().userAgentShadowRoot()->firstChild()->firstChild());
</del><ins>+ return downcast<HTMLElement>(element().userAgentShadowRoot()->firstChild()->firstChild());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> SliderThumbElement& RangeInputType::typedSliderThumbElement() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlElementTypescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -53,18 +53,17 @@
</span><span class="cx"> Node* mediaNode = node->shadowHost();
</span><span class="cx"> if (!mediaNode)
</span><span class="cx"> mediaNode = node;
</span><del>- if (!mediaNode->isElementNode() || !toElement(mediaNode)->isMediaElement())
</del><ins>+ if (!is<HTMLMediaElement>(mediaNode))
</ins><span class="cx"> return nullptr;
</span><del>- return toHTMLMediaElement(mediaNode);
</del><ins>+ return downcast<HTMLMediaElement>(mediaNode);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> MediaControlElementType mediaControlElementType(Node* node)
</span><span class="cx"> {
</span><span class="cx"> ASSERT_WITH_SECURITY_IMPLICATION(node->isMediaControlElement());
</span><del>- HTMLElement* element = toHTMLElement(node);
- if (is<HTMLInputElement>(element))
- return static_cast<MediaControlInputElement*>(element)->displayType();
- return static_cast<MediaControlDivElement*>(element)->displayType();
</del><ins>+ if (is<HTMLInputElement>(node))
+ return static_cast<MediaControlInputElement*>(node)->displayType();
+ return static_cast<MediaControlDivElement*>(node)->displayType();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> MediaControlElement::MediaControlElement(MediaControlElementType displayType, HTMLElement* element)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowTextControlInnerElementsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/TextControlInnerElements.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/TextControlInnerElements.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/html/shadow/TextControlInnerElements.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> inline bool isTextControlInnerTextElement(const HTMLElement& element) { return element.isTextControlInnerTextElement(); }
</span><del>-inline bool isTextControlInnerTextElement(const Node& node) { return node.isHTMLElement() && isTextControlInnerTextElement(toHTMLElement(node)); }
</del><ins>+inline bool isTextControlInnerTextElement(const Node& node) { return is<HTMLElement>(node) && isTextControlInnerTextElement(downcast<HTMLElement>(node)); }
</ins><span class="cx"> NODE_TYPE_CASTS(TextControlInnerTextElement)
</span><span class="cx">
</span><span class="cx"> class SearchFieldResultsButtonElement final : public HTMLDivElement {
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1280,14 +1280,14 @@
</span><span class="cx"> if (node->isElementNode()) {
</span><span class="cx"> Element* element = toElement(node);
</span><span class="cx"> value->setAttributes(buildArrayForElementAttributes(element));
</span><del>- if (node->isFrameOwnerElement()) {
- HTMLFrameOwnerElement* frameOwner = toHTMLFrameOwnerElement(node);
- Frame* frame = frameOwner->contentFrame();
</del><ins>+ if (is<HTMLFrameOwnerElement>(node)) {
+ HTMLFrameOwnerElement& frameOwner = downcast<HTMLFrameOwnerElement>(*node);
+ Frame* frame = frameOwner.contentFrame();
</ins><span class="cx"> if (frame)
</span><span class="cx"> value->setFrameId(m_pageAgent->frameId(frame));
</span><del>- Document* doc = frameOwner->contentDocument();
- if (doc)
- value->setContentDocument(buildObjectForNode(doc, 0, nodesMap));
</del><ins>+ Document* document = frameOwner.contentDocument();
+ if (document)
+ value->setContentDocument(buildObjectForNode(document, 0, nodesMap));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (ShadowRoot* root = element->shadowRoot()) {
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorNodeFindercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -89,9 +89,9 @@
</span><span class="cx"> m_results.add(node);
</span><span class="cx">
</span><span class="cx"> // Search inside frame elements.
</span><del>- if (node->isFrameOwnerElement()) {
- HTMLFrameOwnerElement* frameOwner = toHTMLFrameOwnerElement(node);
- if (Document* document = frameOwner->contentDocument())
</del><ins>+ if (is<HTMLFrameOwnerElement>(node)) {
+ HTMLFrameOwnerElement& frameOwner = downcast<HTMLFrameOwnerElement>(*node);
+ if (Document* document = frameOwner.contentDocument())
</ins><span class="cx"> performSearch(document);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderSubframeLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/SubframeLoader.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/SubframeLoader.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/loader/SubframeLoader.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -297,8 +297,8 @@
</span><span class="cx"> bool allowsScrolling = true;
</span><span class="cx"> int marginWidth = -1;
</span><span class="cx"> int marginHeight = -1;
</span><del>- if (ownerElement.hasTagName(frameTag) || ownerElement.hasTagName(iframeTag)) {
- HTMLFrameElementBase& frameElementBase = toHTMLFrameElementBase(ownerElement);
</del><ins>+ if (is<HTMLFrameElementBase>(ownerElement)) {
+ HTMLFrameElementBase& frameElementBase = downcast<HTMLFrameElementBase>(ownerElement);
</ins><span class="cx"> allowsScrolling = frameElementBase.scrollingMode() != ScrollbarAlwaysOff;
</span><span class="cx"> marginWidth = frameElementBase.marginWidth();
</span><span class="cx"> marginHeight = frameElementBase.marginHeight();
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchivecfLegacyWebArchivecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include "FrameLoader.h"
</span><span class="cx"> #include "FrameSelection.h"
</span><span class="cx"> #include "FrameTree.h"
</span><ins>+#include "HTMLFrameElementBase.h"
</ins><span class="cx"> #include "HTMLFrameOwnerElement.h"
</span><span class="cx"> #include "HTMLNames.h"
</span><span class="cx"> #include "IconDatabase.h"
</span><span class="lines">@@ -516,8 +517,8 @@
</span><span class="cx"> for (size_t i = 0; i < nodesSize; ++i) {
</span><span class="cx"> Node& node = *nodes[i];
</span><span class="cx"> Frame* childFrame;
</span><del>- if ((is<HTMLFrameElement>(node) || is<HTMLIFrameElement>(node) || is<HTMLObjectElement>(node))
- && (childFrame = toHTMLFrameOwnerElement(node).contentFrame())) {
</del><ins>+ if ((is<HTMLFrameElementBase>(node) || is<HTMLObjectElement>(node))
+ && (childFrame = downcast<HTMLFrameOwnerElement>(node).contentFrame())) {
</ins><span class="cx"> if (frameFilter && !frameFilter(*childFrame))
</span><span class="cx"> continue;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLElement.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLElement.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/mathml/MathMLElement.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -83,19 +83,19 @@
</span><span class="cx"> if (!node.isElementNode())
</span><span class="cx"> return node.isTextNode();
</span><span class="cx">
</span><del>- if (node.isMathMLElement()) {
</del><ins>+ if (is<MathMLElement>(node)) {
</ins><span class="cx"> auto& mathmlElement = downcast<MathMLElement>(node);
</span><del>- return mathmlElement.hasTagName(MathMLNames::mathTag);
</del><ins>+ return is<MathMLMathElement>(mathmlElement);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- if (node.isSVGElement()) {
</del><ins>+ if (is<SVGElement>(node)) {
</ins><span class="cx"> auto& svgElement = downcast<SVGElement>(node);
</span><del>- return svgElement.hasTagName(SVGNames::svgTag);
</del><ins>+ return is<SVGSVGElement>(svgElement);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- if (node.isHTMLElement()) {
</del><ins>+ if (is<HTMLElement>(node)) {
</ins><span class="cx"> // FIXME: add the <data> and <time> tags when they are implemented.
</span><del>- auto& htmlElement = toHTMLElement(node);
</del><ins>+ auto& htmlElement = downcast<HTMLElement>(node);
</ins><span class="cx"> return htmlElement.hasTagName(HTMLNames::aTag)
</span><span class="cx"> || htmlElement.hasTagName(HTMLNames::abbrTag)
</span><span class="cx"> || (htmlElement.hasTagName(HTMLNames::areaTag) && ancestorsOfType<HTMLMapElement>(htmlElement).first())
</span><span class="lines">@@ -158,10 +158,10 @@
</span><span class="cx"> if (isPhrasingContent(node))
</span><span class="cx"> return true;
</span><span class="cx">
</span><del>- if (!node.isHTMLElement())
</del><ins>+ if (!is<HTMLElement>(node))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- auto& htmlElement = toHTMLElement(node);
</del><ins>+ auto& htmlElement = downcast<HTMLElement>(node);
</ins><span class="cx"> // FIXME add the <dialog> tag when it is implemented.
</span><span class="cx"> return htmlElement.hasTagName(HTMLNames::addressTag)
</span><span class="cx"> || htmlElement.hasTagName(HTMLNames::articleTag)
</span><span class="lines">@@ -268,26 +268,26 @@
</span><span class="cx">
</span><span class="cx"> // See annotation-xml.model.mathml, annotation-xml.model.svg and annotation-xml.model.xhtml in the HTML5 RelaxNG schema.
</span><span class="cx">
</span><del>- if (child.isMathMLElement() && (MathMLSelectElement::isMathMLEncoding(value) || MathMLSelectElement::isHTMLEncoding(value))) {
</del><ins>+ if (is<MathMLElement>(child) && (MathMLSelectElement::isMathMLEncoding(value) || MathMLSelectElement::isHTMLEncoding(value))) {
</ins><span class="cx"> auto& mathmlElement = downcast<MathMLElement>(child);
</span><del>- return mathmlElement.hasTagName(MathMLNames::mathTag);
</del><ins>+ return is<MathMLMathElement>(mathmlElement);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- if (child.isSVGElement() && (MathMLSelectElement::isSVGEncoding(value) || MathMLSelectElement::isHTMLEncoding(value))) {
</del><ins>+ if (is<SVGElement>(child) && (MathMLSelectElement::isSVGEncoding(value) || MathMLSelectElement::isHTMLEncoding(value))) {
</ins><span class="cx"> auto& svgElement = downcast<SVGElement>(child);
</span><del>- return svgElement.hasTagName(SVGNames::svgTag);
</del><ins>+ return is<SVGSVGElement>(svgElement);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- if (child.isHTMLElement() && MathMLSelectElement::isHTMLEncoding(value)) {
- auto& htmlElement = toHTMLElement(child);
- return htmlElement.hasTagName(HTMLNames::htmlTag) || (isFlowContent(htmlElement) && StyledElement::childShouldCreateRenderer(child));
</del><ins>+ if (is<HTMLElement>(child) && MathMLSelectElement::isHTMLEncoding(value)) {
+ auto& htmlElement = downcast<HTMLElement>(child);
+ return is<HTMLHtmlElement>(htmlElement) || (isFlowContent(htmlElement) && StyledElement::childShouldCreateRenderer(child));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // In general, only MathML children are allowed. Text nodes are only visible in token MathML elements.
</span><del>- return child.isMathMLElement();
</del><ins>+ return is<MathMLElement>(child);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void MathMLElement::attributeChanged(const QualifiedName& name, const AtomicString& oldValue, const AtomicString& newValue, AttributeModificationReason reason)
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlmathtagsin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/mathtags.in (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/mathtags.in        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/mathml/mathtags.in        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -6,7 +6,7 @@
</span><span class="cx"> annotation interfaceName=MathMLTextElement
</span><span class="cx"> annotation-xml interfaceName=MathMLInlineContainerElement
</span><span class="cx"> maction interfaceName=MathMLSelectElement
</span><del>-math
</del><ins>+math generateTypeHelpers
</ins><span class="cx"> mfrac interfaceName=MathMLInlineContainerElement
</span><span class="cx"> mfenced interfaceName=MathMLInlineContainerElement
</span><span class="cx"> msubsup interfaceName=MathMLInlineContainerElement
</span></span></pre></div>
<a id="trunkSourceWebCorepageDragControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DragController.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DragController.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/page/DragController.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -552,8 +552,8 @@
</span><span class="cx"> if (dragData.containsFiles() && asFileInput(result.innerNonSharedNode()))
</span><span class="cx"> return true;
</span><span class="cx">
</span><del>- if (result.innerNonSharedNode()->isPluginElement()) {
- if (!toHTMLPlugInElement(result.innerNonSharedNode())->canProcessDrag() && !result.innerNonSharedNode()->hasEditableStyle())
</del><ins>+ if (is<HTMLPlugInElement>(result.innerNonSharedNode())) {
+ if (!downcast<HTMLPlugInElement>(result.innerNonSharedNode())->canProcessDrag() && !result.innerNonSharedNode()->hasEditableStyle())
</ins><span class="cx"> return false;
</span><span class="cx"> } else if (!result.innerNonSharedNode()->hasEditableStyle())
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventHandlercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventHandler.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventHandler.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/page/EventHandler.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -2141,14 +2141,10 @@
</span><span class="cx">
</span><span class="cx"> static bool targetIsFrame(Node* target, Frame*& frame)
</span><span class="cx"> {
</span><del>- if (!target)
</del><ins>+ if (!target || !is<HTMLFrameElementBase>(target))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- if (!target->hasTagName(frameTag) && !target->hasTagName(iframeTag))
- return false;
-
- frame = toHTMLFrameElementBase(target)->contentFrame();
-
</del><ins>+ frame = downcast<HTMLFrameElementBase>(*target).contentFrame();
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorepageFocusControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FocusController.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FocusController.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/page/FocusController.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> #include "HTMLImageElement.h"
</span><span class="cx"> #include "HTMLInputElement.h"
</span><span class="cx"> #include "HTMLNames.h"
</span><ins>+#include "HTMLPlugInElement.h"
</ins><span class="cx"> #include "HTMLTextAreaElement.h"
</span><span class="cx"> #include "HitTestResult.h"
</span><span class="cx"> #include "KeyboardEvent.h"
</span><span class="lines">@@ -134,7 +135,7 @@
</span><span class="cx">
</span><span class="cx"> static inline bool hasCustomFocusLogic(Element& element)
</span><span class="cx"> {
</span><del>- return element.isHTMLElement() && toHTMLElement(element).hasCustomFocusLogic();
</del><ins>+ return is<HTMLElement>(element) && downcast<HTMLElement>(element).hasCustomFocusLogic();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline bool isNonFocusableShadowHost(Element& element, KeyboardEvent& event)
</span><span class="lines">@@ -227,8 +228,8 @@
</span><span class="cx"> // The node we found might be a HTMLFrameOwnerElement, so descend down the tree until we find either:
</span><span class="cx"> // 1) a focusable node, or
</span><span class="cx"> // 2) the deepest-nested HTMLFrameOwnerElement.
</span><del>- while (element && element->isFrameOwnerElement()) {
- HTMLFrameOwnerElement& owner = toHTMLFrameOwnerElement(*element);
</del><ins>+ while (element && is<HTMLFrameOwnerElement>(element)) {
+ HTMLFrameOwnerElement& owner = downcast<HTMLFrameOwnerElement>(*element);
</ins><span class="cx"> if (!owner.contentFrame())
</span><span class="cx"> break;
</span><span class="cx"> Element* foundElement = findFocusableElement(direction, FocusNavigationScope::focusNavigationScopeOwnedByIFrame(&owner), 0, event);
</span><span class="lines">@@ -311,10 +312,10 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (element->isFrameOwnerElement() && (!element->isPluginElement() || !element->isKeyboardFocusable(event))) {
</del><ins>+ if (is<HTMLFrameOwnerElement>(*element) && (!is<HTMLPlugInElement>(*element) || !element->isKeyboardFocusable(event))) {
</ins><span class="cx"> // We focus frames rather than frame owners.
</span><span class="cx"> // FIXME: We should not focus frames that have no scrollbars, as focusing them isn't useful to the user.
</span><del>- HTMLFrameOwnerElement& owner = toHTMLFrameOwnerElement(*element);
</del><ins>+ HTMLFrameOwnerElement& owner = downcast<HTMLFrameOwnerElement>(*element);
</ins><span class="cx"> if (!owner.contentFrame())
</span><span class="cx"> return false;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorepageFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Frame.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Frame.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/page/Frame.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx"> #include "HTMLFrameElementBase.h"
</span><span class="cx"> #include "HTMLNames.h"
</span><span class="cx"> #include "HTMLTableCellElement.h"
</span><ins>+#include "HTMLTableRowElement.h"
</ins><span class="cx"> #include "HitTestResult.h"
</span><span class="cx"> #include "ImageBuffer.h"
</span><span class="cx"> #include "InspectorInstrumentation.h"
</span><span class="lines">@@ -392,9 +393,9 @@
</span><span class="cx"> if (is<HTMLFormElement>(n) || is<HTMLFormControlElement>(n))
</span><span class="cx"> break;
</span><span class="cx">
</span><del>- if (n->hasTagName(tdTag) && !startingTableCell) {
- startingTableCell = toHTMLTableCellElement(n);
- } else if (n->hasTagName(trTag) && startingTableCell) {
</del><ins>+ if (n->hasTagName(tdTag) && !startingTableCell)
+ startingTableCell = downcast<HTMLTableCellElement>(n);
+ else if (is<HTMLTableRowElement>(n) && startingTableCell) {
</ins><span class="cx"> String result = searchForLabelsAboveCell(regExp, startingTableCell, resultDistance);
</span><span class="cx"> if (!result.isEmpty()) {
</span><span class="cx"> if (resultIsInCellAbove)
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/page/FrameView.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -322,12 +322,12 @@
</span><span class="cx">
</span><span class="cx"> // Propagate the marginwidth/height and scrolling modes to the view.
</span><span class="cx"> Element* ownerElement = frame().ownerElement();
</span><del>- if (ownerElement && (ownerElement->hasTagName(frameTag) || ownerElement->hasTagName(iframeTag))) {
- HTMLFrameElementBase* frameElt = toHTMLFrameElementBase(ownerElement);
- if (frameElt->scrollingMode() == ScrollbarAlwaysOff)
</del><ins>+ if (ownerElement && is<HTMLFrameElementBase>(ownerElement)) {
+ HTMLFrameElementBase& frameElement = downcast<HTMLFrameElementBase>(*ownerElement);
+ if (frameElement.scrollingMode() == ScrollbarAlwaysOff)
</ins><span class="cx"> setCanHaveScrollbars(false);
</span><del>- LayoutUnit marginWidth = frameElt->marginWidth();
- LayoutUnit marginHeight = frameElt->marginHeight();
</del><ins>+ LayoutUnit marginWidth = frameElement.marginWidth();
+ LayoutUnit marginHeight = frameElement.marginHeight();
</ins><span class="cx"> if (marginWidth != -1)
</span><span class="cx"> setMarginWidth(marginWidth);
</span><span class="cx"> if (marginHeight != -1)
</span><span class="lines">@@ -1416,7 +1416,7 @@
</span><span class="cx"> HTMLFrameOwnerElement& element = embeddedObject.frameOwnerElement();
</span><span class="cx"> if (is<HTMLObjectElement>(element) || is<HTMLEmbedElement>(element)) {
</span><span class="cx"> // Tell the DOM element that it needs a widget update.
</span><del>- HTMLPlugInImageElement& pluginElement = toHTMLPlugInImageElement(element);
</del><ins>+ HTMLPlugInImageElement& pluginElement = downcast<HTMLPlugInImageElement>(element);
</ins><span class="cx"> if (!pluginElement.needsCheckForSizeChange())
</span><span class="cx"> pluginElement.setNeedsWidgetUpdate(true);
</span><span class="cx"> }
</span><span class="lines">@@ -2789,7 +2789,7 @@
</span><span class="cx">
</span><span class="cx"> if (embeddedObject.isSnapshottedPlugIn()) {
</span><span class="cx"> if (is<HTMLObjectElement>(element) || is<HTMLEmbedElement>(element)) {
</span><del>- HTMLPlugInImageElement& pluginElement = toHTMLPlugInImageElement(element);
</del><ins>+ HTMLPlugInImageElement& pluginElement = downcast<HTMLPlugInImageElement>(element);
</ins><span class="cx"> pluginElement.checkSnapshotStatus();
</span><span class="cx"> }
</span><span class="cx"> return;
</span><span class="lines">@@ -2799,8 +2799,8 @@
</span><span class="cx">
</span><span class="cx"> // FIXME: This could turn into a real virtual dispatch if we defined
</span><span class="cx"> // updateWidget(PluginCreationOption) on HTMLElement.
</span><del>- if (is<HTMLObjectElement>(element) || is<HTMLEmbedElement>(element) || is<HTMLAppletElement>(element)) {
- HTMLPlugInImageElement& pluginElement = toHTMLPlugInImageElement(element);
</del><ins>+ if (is<HTMLPlugInImageElement>(element)) {
+ HTMLPlugInImageElement& pluginElement = downcast<HTMLPlugInImageElement>(element);
</ins><span class="cx"> if (pluginElement.needsCheckForSizeChange()) {
</span><span class="cx"> pluginElement.checkSnapshotStatus();
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageSerializercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PageSerializer.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PageSerializer.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/page/PageSerializer.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -66,10 +66,10 @@
</span><span class="cx">
</span><span class="cx"> static bool isCharsetSpecifyingNode(const Node& node)
</span><span class="cx"> {
</span><del>- if (!node.isHTMLElement())
</del><ins>+ if (!is<HTMLElement>(node))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- const HTMLElement& element = toHTMLElement(node);
</del><ins>+ const HTMLElement& element = downcast<HTMLElement>(node);
</ins><span class="cx"> if (!element.hasTagName(HTMLNames::metaTag))
</span><span class="cx"> return false;
</span><span class="cx"> HTMLMetaCharsetParser::AttributeList attributes;
</span><span class="lines">@@ -146,10 +146,10 @@
</span><span class="cx">
</span><span class="cx"> void SerializerMarkupAccumulator::appendCustomAttributes(StringBuilder& out, const Element& element, Namespaces* namespaces)
</span><span class="cx"> {
</span><del>- if (!element.isFrameOwnerElement())
</del><ins>+ if (!is<HTMLFrameOwnerElement>(element))
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- const HTMLFrameOwnerElement& frameOwner = toHTMLFrameOwnerElement(element);
</del><ins>+ const HTMLFrameOwnerElement& frameOwner = downcast<HTMLFrameOwnerElement>(element);
</ins><span class="cx"> Frame* frame = frameOwner.contentFrame();
</span><span class="cx"> if (!frame)
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCorepageSpatialNavigationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/SpatialNavigation.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/SpatialNavigation.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/page/SpatialNavigation.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -758,7 +758,7 @@
</span><span class="cx">
</span><span class="cx"> HTMLFrameOwnerElement* frameOwnerElement(FocusCandidate& candidate)
</span><span class="cx"> {
</span><del>- return candidate.isFrameOwnerElement() ? toHTMLFrameOwnerElement(candidate.visibleNode) : nullptr;
-};
</del><ins>+ return candidate.isFrameOwnerElement() ? downcast<HTMLFrameOwnerElement>(candidate.visibleNode) : nullptr;
+}
</ins><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingHitTestResultcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/HitTestResult.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/HitTestResult.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/HitTestResult.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -337,7 +337,7 @@
</span><span class="cx"> if (!is<HTMLEmbedElement>(*m_innerNonSharedNode) && !is<HTMLObjectElement>(*m_innerNonSharedNode))
</span><span class="cx"> return URL();
</span><span class="cx">
</span><del>- HTMLPlugInImageElement& element = toHTMLPlugInImageElement(*m_innerNonSharedNode);
</del><ins>+ HTMLPlugInImageElement& element = downcast<HTMLPlugInImageElement>(*m_innerNonSharedNode);
</ins><span class="cx"> URL url = m_innerNonSharedNode->document().completeURL(stripLeadingAndTrailingHTMLSpaces(element.url()));
</span><span class="cx"> if (!url.isValid())
</span><span class="cx"> return URL();
</span><span class="lines">@@ -372,14 +372,14 @@
</span><span class="cx"> HTMLMediaElement* HitTestResult::mediaElement() const
</span><span class="cx"> {
</span><span class="cx"> if (!m_innerNonSharedNode)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> if (!(m_innerNonSharedNode->renderer() && m_innerNonSharedNode->renderer()->isMedia()))
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><del>- if (is<HTMLVideoElement>(m_innerNonSharedNode.get()) || is<HTMLAudioElement>(m_innerNonSharedNode.get()))
- return toHTMLMediaElement(m_innerNonSharedNode.get());
- return 0;
</del><ins>+ if (is<HTMLMediaElement>(*m_innerNonSharedNode))
+ return downcast<HTMLMediaElement>(m_innerNonSharedNode.get());
+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -3567,8 +3567,8 @@
</span><span class="cx"> auto renderer = render->parent();
</span><span class="cx"> while (renderer) {
</span><span class="cx"> // Get the first non-shadow HTMLElement and see if it's an input.
</span><del>- if (renderer->element() && renderer->element()->isHTMLElement() && !renderer->element()->isInShadowTree()) {
- const HTMLElement& element = toHTMLElement(*renderer->element());
</del><ins>+ if (renderer->element() && is<HTMLElement>(renderer->element()) && !renderer->element()->isInShadowTree()) {
+ const HTMLElement& element = downcast<HTMLElement>(*renderer->element());
</ins><span class="cx"> return !is<HTMLInputElement>(element) && !is<HTMLTextAreaElement>(element);
</span><span class="cx"> }
</span><span class="cx"> renderer = renderer->parent();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderEmbeddedObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -224,10 +224,10 @@
</span><span class="cx">
</span><span class="cx"> void RenderEmbeddedObject::paintContents(PaintInfo& paintInfo, const LayoutPoint& paintOffset)
</span><span class="cx"> {
</span><del>- if (!frameOwnerElement().isPluginElement())
</del><ins>+ if (!is<HTMLPlugInElement>(frameOwnerElement()))
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- HTMLPlugInElement& plugInElement = toHTMLPlugInElement(frameOwnerElement());
</del><ins>+ HTMLPlugInElement& plugInElement = downcast<HTMLPlugInElement>(frameOwnerElement());
</ins><span class="cx">
</span><span class="cx"> if (plugInElement.displayState() > HTMLPlugInElement::DisplayingSnapshot) {
</span><span class="cx"> RenderWidget::paintContents(paintInfo, paintOffset);
</span><span class="lines">@@ -235,10 +235,10 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (!plugInElement.isPlugInImageElement())
</del><ins>+ if (!is<HTMLPlugInImageElement>(plugInElement))
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- if (Image* snapshot = toHTMLPlugInImageElement(plugInElement).snapshotImage())
</del><ins>+ if (Image* snapshot = downcast<HTMLPlugInImageElement>(plugInElement).snapshotImage())
</ins><span class="cx"> paintSnapshotImage(paintInfo, paintOffset, snapshot);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -493,8 +493,8 @@
</span><span class="cx">
</span><span class="cx"> if (!wasMissingWidget && newSize.width() >= oldSize.width() && newSize.height() >= oldSize.height()) {
</span><span class="cx"> HTMLFrameOwnerElement& element = frameOwnerElement();
</span><del>- if (element.isPluginElement() && toHTMLPlugInElement(element).isPlugInImageElement()) {
- HTMLPlugInImageElement& plugInImageElement = toHTMLPlugInImageElement(element);
</del><ins>+ if (is<HTMLPlugInImageElement>(element)) {
+ HTMLPlugInImageElement& plugInImageElement = downcast<HTMLPlugInImageElement>(element);
</ins><span class="cx"> if (plugInImageElement.displayState() > HTMLPlugInElement::DisplayingSnapshot && plugInImageElement.snapshotDecision() == HTMLPlugInImageElement::MaySnapshotWhenResized) {
</span><span class="cx"> plugInImageElement.setNeedsCheckForSizeChange();
</span><span class="cx"> view().frameView().addEmbeddedObjectToUpdate(*this);
</span><span class="lines">@@ -604,7 +604,7 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> MouseEvent* mouseEvent = toMouseEvent(event);
</span><del>- HTMLPlugInElement& element = toHTMLPlugInElement(frameOwnerElement());
</del><ins>+ HTMLPlugInElement& element = downcast<HTMLPlugInElement>(frameOwnerElement());
</ins><span class="cx"> if (event->type() == eventNames().mousedownEvent && toMouseEvent(event)->button() == LeftButton) {
</span><span class="cx"> m_mouseDownWasInUnavailablePluginIndicator = isInUnavailablePluginIndicator(mouseEvent);
</span><span class="cx"> if (m_mouseDownWasInUnavailablePluginIndicator) {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -2380,8 +2380,8 @@
</span><span class="cx"> if (ownerElement && ownerElement->renderer()) {
</span><span class="cx"> HTMLFrameElementBase* frameElementBase = nullptr;
</span><span class="cx">
</span><del>- if (ownerElement->hasTagName(frameTag) || ownerElement->hasTagName(iframeTag))
- frameElementBase = toHTMLFrameElementBase(ownerElement);
</del><ins>+ if (is<HTMLFrameElementBase>(ownerElement))
+ frameElementBase = downcast<HTMLFrameElementBase>(ownerElement);
</ins><span class="cx">
</span><span class="cx"> if (frameElementAndViewPermitScroll(frameElementBase, &frameView)) {
</span><span class="cx"> LayoutRect viewRect = frameView.visibleContentRect(LegacyIOSDocumentVisibleRect);
</span><span class="lines">@@ -3089,11 +3089,11 @@
</span><span class="cx"> void RenderLayer::updateSnapOffsets()
</span><span class="cx"> {
</span><span class="cx"> // FIXME: Extend support beyond HTMLElements.
</span><del>- if (!enclosingElement() || !enclosingElement()->renderBox() || !enclosingElement()->isHTMLElement())
</del><ins>+ if (!enclosingElement() || !enclosingElement()->renderBox() || !is<HTMLElement>(enclosingElement()))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> RenderBox* box = enclosingElement()->renderBox();
</span><del>- updateSnapOffsetsForScrollableArea(*this, *toHTMLElement(enclosingElement()), *box, box->style());
</del><ins>+ updateSnapOffsetsForScrollableArea(*this, *downcast<HTMLElement>(enclosingElement()), *box, box->style());
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerBackingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -586,7 +586,7 @@
</span><span class="cx"> }
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="cx"> else if (renderer().isVideo()) {
</span><del>- HTMLMediaElement* mediaElement = toHTMLMediaElement(renderer().element());
</del><ins>+ HTMLMediaElement* mediaElement = downcast<HTMLMediaElement>(renderer().element());
</ins><span class="cx"> m_graphicsLayer->setContentsToPlatformLayer(mediaElement->platformLayer(), GraphicsLayer::ContentsLayerForMedia);
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="lines">@@ -1681,10 +1681,10 @@
</span><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> Element* element = toElement(renderer->node());
</span><del>- if (!element || !element->isPluginElement())
</del><ins>+ if (!element || !is<HTMLPlugInElement>(element))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- return toHTMLPlugInElement(element)->isRestartedPlugin();
</del><ins>+ return downcast<HTMLPlugInElement>(*element).isRestartedPlugin();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static bool isCompositedPlugin(RenderObject* renderer)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMediah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMedia.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMedia.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderMedia.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> RenderMedia(HTMLMediaElement&, PassRef<RenderStyle>, const IntSize& intrinsicSize);
</span><span class="cx"> virtual ~RenderMedia();
</span><span class="cx">
</span><del>- HTMLMediaElement& mediaElement() const { return toHTMLMediaElement(nodeForNonAnonymous()); }
</del><ins>+ HTMLMediaElement& mediaElement() const { return downcast<HTMLMediaElement>(nodeForNonAnonymous()); }
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> void element() const = delete;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -2444,7 +2444,7 @@
</span><span class="cx"> auto curr = parent();
</span><span class="cx"> while (curr && (!curr->element() || (!curr->isPositioned() && !curr->isBody())) && !curr->isRenderNamedFlowThread()) {
</span><span class="cx"> Element* element = curr->element();
</span><del>- if (!skipTables && element && (is<HTMLTableElement>(*element) || isHTMLTableCellElement(*element)))
</del><ins>+ if (!skipTables && element && (is<HTMLTableElement>(*element) || is<HTMLTableCellElement>(*element)))
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> float newZoom = curr->style().effectiveZoom();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderSnapshottedPlugIncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">
</span><span class="cx"> HTMLPlugInImageElement& RenderSnapshottedPlugIn::plugInImageElement() const
</span><span class="cx"> {
</span><del>- return toHTMLPlugInImageElement(RenderEmbeddedObject::frameOwnerElement());
</del><ins>+ return downcast<HTMLPlugInImageElement>(RenderEmbeddedObject::frameOwnerElement());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RenderSnapshottedPlugIn::layout()
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableCellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableCell.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableCell.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderTableCell.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -88,8 +88,8 @@
</span><span class="cx"> unsigned RenderTableCell::parseColSpanFromDOM() const
</span><span class="cx"> {
</span><span class="cx"> ASSERT(element());
</span><del>- if (element()->hasTagName(tdTag) || element()->hasTagName(thTag))
- return std::min<unsigned>(toHTMLTableCellElement(element())->colSpan(), maxColumnIndex);
</del><ins>+ if (is<HTMLTableCellElement>(element()))
+ return std::min<unsigned>(downcast<HTMLTableCellElement>(*element()).colSpan(), maxColumnIndex);
</ins><span class="cx"> #if ENABLE(MATHML)
</span><span class="cx"> if (element()->hasTagName(MathMLNames::mtdTag))
</span><span class="cx"> return std::min<unsigned>(downcast<MathMLElement>(*element()).colSpan(), maxColumnIndex);
</span><span class="lines">@@ -100,8 +100,8 @@
</span><span class="cx"> unsigned RenderTableCell::parseRowSpanFromDOM() const
</span><span class="cx"> {
</span><span class="cx"> ASSERT(element());
</span><del>- if (element()->hasTagName(tdTag) || element()->hasTagName(thTag))
- return std::min<unsigned>(toHTMLTableCellElement(element())->rowSpan(), maxRowIndex);
</del><ins>+ if (is<HTMLTableCellElement>(element()))
+ return std::min<unsigned>(downcast<HTMLTableCellElement>(*element()).rowSpan(), maxRowIndex);
</ins><span class="cx"> #if ENABLE(MATHML)
</span><span class="cx"> if (element()->hasTagName(MathMLNames::mtdTag))
</span><span class="cx"> return std::min<unsigned>(downcast<MathMLElement>(*element()).rowSpan(), maxRowIndex);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTextControlcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTextControl.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTextControl.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderTextControl.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">
</span><span class="cx"> HTMLTextFormControlElement& RenderTextControl::textFormControlElement() const
</span><span class="cx"> {
</span><del>- return toHTMLTextFormControlElement(nodeForNonAnonymous());
</del><ins>+ return downcast<HTMLTextFormControlElement>(nodeForNonAnonymous());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> TextControlInnerTextElement* RenderTextControl::innerTextElement() const
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeGtk.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeGtk.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderThemeGtk.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -258,13 +258,13 @@
</span><span class="cx"> static HTMLMediaElement* getMediaElementFromRenderObject(const RenderObject& o)
</span><span class="cx"> {
</span><span class="cx"> Node* node = o.node();
</span><del>- Node* mediaNode = node ? node->shadowHost() : 0;
</del><ins>+ Node* mediaNode = node ? node->shadowHost() : nullptr;
</ins><span class="cx"> if (!mediaNode)
</span><span class="cx"> mediaNode = node;
</span><del>- if (!mediaNode || !mediaNode->isElementNode() || !toElement(mediaNode)->isMediaElement())
- return 0;
</del><ins>+ if (!mediaNode || !is<HTMLMediaElement>(mediaNode))
+ return nullptr;
</ins><span class="cx">
</span><del>- return toHTMLMediaElement(mediaNode);
</del><ins>+ return downcast<HTMLMediaElement>(mediaNode);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RenderThemeGtk::initMediaColors()
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeMac.mm (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeMac.mm        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.mm        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1683,7 +1683,7 @@
</span><span class="cx">
</span><span class="cx"> NSSearchFieldCell* search = this->search();
</span><span class="cx">
</span><del>- if (!input->isDisabledFormControl() && (input->isTextFormControl() && !toHTMLTextFormControlElement(*input).isReadOnly()))
</del><ins>+ if (!input->isDisabledFormControl() && (is<HTMLTextFormControlElement>(input) && !downcast<HTMLTextFormControlElement>(*input).isReadOnly()))
</ins><span class="cx"> updatePressedState([search cancelButtonCell], o);
</span><span class="cx"> else if ([[search cancelButtonCell] isHighlighted])
</span><span class="cx"> [[search cancelButtonCell] setHighlighted:NO];
</span><span class="lines">@@ -1851,22 +1851,22 @@
</span><span class="cx"> // from our node. Assuming this node is the plugin overlay element, we should get to the
</span><span class="cx"> // plugin itself by asking for the shadow root parent, and then its parent.
</span><span class="cx">
</span><del>- if (!renderBlock.element()->isHTMLElement())
</del><ins>+ if (!is<HTMLElement>(renderBlock.element()))
</ins><span class="cx"> return true;
</span><span class="cx">
</span><del>- HTMLElement* plugInOverlay = toHTMLElement(renderBlock.element());
- Element* parent = plugInOverlay->parentOrShadowHostElement();
- while (parent && !parent->isPluginElement())
</del><ins>+ HTMLElement& plugInOverlay = downcast<HTMLElement>(*renderBlock.element());
+ Element* parent = plugInOverlay.parentOrShadowHostElement();
+ while (parent && !is<HTMLPlugInElement>(parent))
</ins><span class="cx"> parent = parent->parentOrShadowHostElement();
</span><span class="cx">
</span><span class="cx"> if (!parent)
</span><span class="cx"> return true;
</span><span class="cx">
</span><del>- HTMLPlugInElement* plugInElement = toHTMLPlugInElement(parent);
- if (!plugInElement->isPlugInImageElement())
</del><ins>+ HTMLPlugInElement& plugInElement = downcast<HTMLPlugInElement>(*parent);
+ if (!plugInElement.isPlugInImageElement())
</ins><span class="cx"> return true;
</span><span class="cx">
</span><del>- HTMLPlugInImageElement& plugInImageElement = toHTMLPlugInImageElement(*plugInElement);
</del><ins>+ HTMLPlugInImageElement& plugInImageElement = downcast<HTMLPlugInImageElement>(plugInElement);
</ins><span class="cx">
</span><span class="cx"> Image* snapshot = plugInImageElement.snapshotImage();
</span><span class="cx"> if (!snapshot)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTreeAsTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTreeAsText.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTreeAsText.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderTreeAsText.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include "FrameView.h"
</span><span class="cx"> #include "HTMLElement.h"
</span><span class="cx"> #include "HTMLNames.h"
</span><ins>+#include "HTMLSpanElement.h"
</ins><span class="cx"> #include "InlineTextBox.h"
</span><span class="cx"> #include "PrintContext.h"
</span><span class="cx"> #include "PseudoElement.h"
</span><span class="lines">@@ -124,17 +125,17 @@
</span><span class="cx">
</span><span class="cx"> static bool isEmptyOrUnstyledAppleStyleSpan(const Node* node)
</span><span class="cx"> {
</span><del>- if (!node || !node->isHTMLElement() || !node->hasTagName(spanTag))
</del><ins>+ if (!node || !is<HTMLSpanElement>(node))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- const HTMLElement* elem = toHTMLElement(node);
- if (elem->getAttribute(classAttr) != "Apple-style-span")
</del><ins>+ const HTMLElement& element = downcast<HTMLSpanElement>(*node);
+ if (element.getAttribute(classAttr) != "Apple-style-span")
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> if (!node->hasChildNodes())
</span><span class="cx"> return true;
</span><span class="cx">
</span><del>- const StyleProperties* inlineStyleDecl = elem->inlineStyle();
</del><ins>+ const StyleProperties* inlineStyleDecl = element.inlineStyle();
</ins><span class="cx"> return (!inlineStyleDecl || inlineStyleDecl->isEmpty());
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderWidgeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderWidget.h (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderWidget.h        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/rendering/RenderWidget.h        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> public:
</span><span class="cx"> virtual ~RenderWidget();
</span><span class="cx">
</span><del>- HTMLFrameOwnerElement& frameOwnerElement() const { return toHTMLFrameOwnerElement(nodeForNonAnonymous()); }
</del><ins>+ HTMLFrameOwnerElement& frameOwnerElement() const { return downcast<HTMLFrameOwnerElement>(nodeForNonAnonymous()); }
</ins><span class="cx">
</span><span class="cx"> Widget* widget() const { return m_widget.get(); }
</span><span class="cx"> WEBCORE_EXPORT void setWidget(PassRefPtr<Widget>);
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/testing/Internals.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -623,8 +623,8 @@
</span><span class="cx">
</span><span class="cx"> String Internals::visiblePlaceholder(Element* element)
</span><span class="cx"> {
</span><del>- if (element && isHTMLTextFormControlElement(*element)) {
- const HTMLTextFormControlElement& textFormControlElement = toHTMLTextFormControlElement(*element);
</del><ins>+ if (element && is<HTMLTextFormControlElement>(*element)) {
+ const HTMLTextFormControlElement& textFormControlElement = downcast<HTMLTextFormControlElement>(*element);
</ins><span class="cx"> if (!textFormControlElement.isPlaceholderVisible())
</span><span class="cx"> return String();
</span><span class="cx"> if (HTMLElement* placeholderElement = textFormControlElement.placeholderElement())
</span><span class="lines">@@ -2073,7 +2073,7 @@
</span><span class="cx"> void Internals::simulateAudioInterruption(Node* node)
</span><span class="cx"> {
</span><span class="cx"> #if USE(GSTREAMER)
</span><del>- HTMLMediaElement* element = toHTMLMediaElement(node);
</del><ins>+ HTMLMediaElement* element = downcast<HTMLMediaElement>(node);
</ins><span class="cx"> element->player()->simulateAudioInterruption();
</span><span class="cx"> #else
</span><span class="cx"> UNUSED_PARAM(node);
</span><span class="lines">@@ -2232,7 +2232,7 @@
</span><span class="cx"> ec = INVALID_ACCESS_ERR;
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><del>- HTMLPlugInElement* pluginElement = toHTMLPlugInElement(element);
</del><ins>+ HTMLPlugInElement* pluginElement = downcast<HTMLPlugInElement>(element);
</ins><span class="cx"> return pluginElement->displayState() <= HTMLPlugInElement::DisplayingSnapshot;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathStepcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathStep.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathStep.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebCore/xml/XPathStep.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -208,9 +208,9 @@
</span><span class="cx"> return namespaceURI.isEmpty() || namespaceURI == node.namespaceURI();
</span><span class="cx">
</span><span class="cx"> if (node.document().isHTMLDocument()) {
</span><del>- if (node.isHTMLElement()) {
</del><ins>+ if (is<HTMLElement>(node)) {
</ins><span class="cx"> // Paths without namespaces should match HTML elements in HTML documents despite those having an XHTML namespace. Names are compared case-insensitively.
</span><del>- return equalIgnoringCase(toHTMLElement(node).localName(), name) && (namespaceURI.isNull() || namespaceURI == node.namespaceURI());
</del><ins>+ return equalIgnoringCase(downcast<HTMLElement>(node).localName(), name) && (namespaceURI.isNull() || namespaceURI == node.namespaceURI());
</ins><span class="cx"> }
</span><span class="cx"> // An expression without any prefix shouldn't match no-namespace nodes (because HTML5 says so).
</span><span class="cx"> return toElement(node).hasLocalName(name) && namespaceURI == node.namespaceURI() && !namespaceURI.isNull();
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebKit/win/ChangeLog        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2014-09-26 Christophe Dumez <cdumez@apple.com>
+
+ Stop using legacy NODE_TYPE_CASTS() macro for HTML Elements
+ https://bugs.webkit.org/show_bug.cgi?id=137137
+
+ Reviewed by Benjamin Poulain.
+
+ Use is<>() / downcast<>() where appropriate.
+
+ * DOMHTMLClasses.cpp:
+ (DOMHTMLElement::idName):
+ (DOMHTMLElement::innerText):
+ (DOMHTMLElement::setInnerText):
+
</ins><span class="cx"> 2014-09-25 Brent Fulgham <bfulgham@apple.com>
</span><span class="cx">
</span><span class="cx"> [Win] Debug builds of TestWebKitAPI are crashing.
</span></span></pre></div>
<a id="trunkSourceWebKitwinDOMHTMLClassescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/DOMHTMLClasses.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/DOMHTMLClasses.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebKit/win/DOMHTMLClasses.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -395,8 +395,8 @@
</span><span class="cx"> if (!result)
</span><span class="cx"> return E_POINTER;
</span><span class="cx">
</span><del>- ASSERT(m_element && m_element->isHTMLElement());
- String idString = toHTMLElement(m_element)->getAttribute(idAttr);
</del><ins>+ ASSERT(m_element && is<HTMLElement>(m_element));
+ String idString = downcast<HTMLElement>(m_element)->getAttribute(idAttr);
</ins><span class="cx"> *result = BString(idString).release();
</span><span class="cx"> return S_OK;
</span><span class="cx"> }
</span><span class="lines">@@ -481,8 +481,8 @@
</span><span class="cx"> HRESULT STDMETHODCALLTYPE DOMHTMLElement::innerText(
</span><span class="cx"> /* [retval][out] */ BSTR* result)
</span><span class="cx"> {
</span><del>- ASSERT(m_element && m_element->isHTMLElement());
- WTF::String innerTextString = toHTMLElement(m_element)->innerText();
</del><ins>+ ASSERT(m_element && is<HTMLElement>(m_element));
+ WTF::String innerTextString = downcast<HTMLElement>(m_element)->innerText();
</ins><span class="cx"> *result = BString(innerTextString).release();
</span><span class="cx"> return S_OK;
</span><span class="cx"> }
</span><span class="lines">@@ -490,8 +490,8 @@
</span><span class="cx"> HRESULT STDMETHODCALLTYPE DOMHTMLElement::setInnerText(
</span><span class="cx"> /* [in] */ BSTR text)
</span><span class="cx"> {
</span><del>- ASSERT(m_element && m_element->isHTMLElement());
- HTMLElement* htmlEle = toHTMLElement(m_element);
</del><ins>+ ASSERT(m_element && is<HTMLElement>(m_element));
+ HTMLElement* htmlEle = downcast<HTMLElement>(m_element);
</ins><span class="cx"> WTF::String textString(text, SysStringLen(text));
</span><span class="cx"> WebCore::ExceptionCode ec = 0;
</span><span class="cx"> htmlEle->setInnerText(textString, ec);
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebKit2/ChangeLog        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2014-09-26 Christophe Dumez <cdumez@apple.com>
+
+ Stop using legacy NODE_TYPE_CASTS() macro for HTML Elements
+ https://bugs.webkit.org/show_bug.cgi?id=137137
+
+ Reviewed by Benjamin Poulain.
+
+ Use is<>() / downcast<>() where appropriate.
+
+ * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
+ (WebKit::PDFPluginTextAnnotation::value):
+ * WebProcess/Plugins/PluginView.cpp:
+ (WebKit::PluginView::initializePlugin):
+ (WebKit::PluginView::pluginSnapshotTimerFired):
+ (WebKit::PluginView::pluginDidReceiveUserInteraction):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::createPlugin):
+ * WebProcess/WebPage/ios/WebPageIOS.mm:
+ (WebKit::WebPage::performActionOnElement):
+
</ins><span class="cx"> 2014-09-26 Anders Carlsson <andersca@apple.com>
</span><span class="cx">
</span><span class="cx"> Add API for loading local files
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFPDFPluginTextAnnotationmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx">
</span><span class="cx"> String PDFPluginTextAnnotation::value() const
</span><span class="cx"> {
</span><del>- return toHTMLTextFormControlElement(element())->value();
</del><ins>+ return downcast<HTMLTextFormControlElement>(element())->value();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool PDFPluginTextAnnotation::handleEvent(Event* event)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPluginViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -590,8 +590,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
</span><del>- HTMLPlugInImageElement* plugInImageElement = toHTMLPlugInImageElement(m_pluginElement.get());
- m_didPlugInStartOffScreen = !m_webPage->plugInIntersectsSearchRect(*plugInImageElement);
</del><ins>+ HTMLPlugInImageElement& plugInImageElement = downcast<HTMLPlugInImageElement>(*m_pluginElement);
+ m_didPlugInStartOffScreen = !m_webPage->plugInIntersectsSearchRect(plugInImageElement);
</ins><span class="cx"> #endif
</span><span class="cx"> m_plugin->initialize(this, m_parameters);
</span><span class="cx">
</span><span class="lines">@@ -1713,8 +1713,8 @@
</span><span class="cx"> ASSERT(m_plugin);
</span><span class="cx">
</span><span class="cx"> #if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
</span><del>- HTMLPlugInImageElement* plugInImageElement = toHTMLPlugInImageElement(m_pluginElement.get());
- bool isPlugInOnScreen = m_webPage->plugInIntersectsSearchRect(*plugInImageElement);
</del><ins>+ HTMLPlugInImageElement& plugInImageElement = downcast<HTMLPlugInImageElement>(*m_pluginElement);
+ bool isPlugInOnScreen = m_webPage->plugInIntersectsSearchRect(plugInImageElement);
</ins><span class="cx"> bool plugInCameOnScreen = isPlugInOnScreen && m_didPlugInStartOffScreen;
</span><span class="cx"> bool snapshotFound = false;
</span><span class="cx"> #endif
</span><span class="lines">@@ -1747,7 +1747,7 @@
</span><span class="cx"> #if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
</span><span class="cx"> unsigned candidateArea = 0;
</span><span class="cx"> bool noSnapshotFoundAfterMaxRetries = m_countSnapshotRetries == frame()->settings().maximumPlugInSnapshotAttempts() && !isPlugInOnScreen && !snapshotFound;
</span><del>- if (m_webPage->plugInIsPrimarySize(*plugInImageElement, candidateArea)
</del><ins>+ if (m_webPage->plugInIsPrimarySize(plugInImageElement, candidateArea)
</ins><span class="cx"> && (noSnapshotFoundAfterMaxRetries || plugInCameOnScreen))
</span><span class="cx"> m_pluginElement->setDisplayState(HTMLPlugInElement::Playing);
</span><span class="cx"> else
</span><span class="lines">@@ -1781,12 +1781,12 @@
</span><span class="cx">
</span><span class="cx"> m_didReceiveUserInteraction = true;
</span><span class="cx">
</span><del>- WebCore::HTMLPlugInImageElement* plugInImageElement = toHTMLPlugInImageElement(m_pluginElement.get());
- String pageOrigin = plugInImageElement->document().page()->mainFrame().document()->baseURL().host();
- String pluginOrigin = plugInImageElement->loadedUrl().host();
- String mimeType = plugInImageElement->loadedMimeType();
</del><ins>+ HTMLPlugInImageElement& plugInImageElement = downcast<HTMLPlugInImageElement>(*m_pluginElement);
+ String pageOrigin = plugInImageElement.document().page()->mainFrame().document()->baseURL().host();
+ String pluginOrigin = plugInImageElement.loadedUrl().host();
+ String mimeType = plugInImageElement.loadedMimeType();
</ins><span class="cx">
</span><del>- WebProcess::shared().plugInDidReceiveUserInteraction(pageOrigin, pluginOrigin, mimeType, plugInImageElement->document().page()->sessionID());
</del><ins>+ WebProcess::shared().plugInDidReceiveUserInteraction(pageOrigin, pluginOrigin, mimeType, plugInImageElement.document().page()->sessionID());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool PluginView::shouldCreateTransientPaintingSnapshot() const
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -628,7 +628,7 @@
</span><span class="cx"> String pageURLString = m_page->mainFrame().loader().documentLoader()->responseURL().string();
</span><span class="cx">
</span><span class="cx"> #if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
</span><del>- HTMLPlugInImageElement& pluginImageElement = toHTMLPlugInImageElement(*pluginElement);
</del><ins>+ HTMLPlugInImageElement& pluginImageElement = downcast<HTMLPlugInImageElement>(*pluginElement);
</ins><span class="cx"> unsigned pluginArea = 0;
</span><span class="cx"> PluginProcessType processType = pluginElement->displayState() == HTMLPlugInElement::WaitingForSnapshot && !(plugInIsPrimarySize(pluginImageElement, pluginArea) && !plugInIntersectsSearchRect(pluginImageElement)) ? PluginProcessTypeSnapshot : PluginProcessTypeNormal;
</span><span class="cx"> #else
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (174030 => 174031)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-09-26 23:55:59 UTC (rev 174030)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-09-27 01:32:34 UTC (rev 174031)
</span><span class="lines">@@ -1952,10 +1952,10 @@
</span><span class="cx">
</span><span class="cx"> void WebPage::performActionOnElement(uint32_t action)
</span><span class="cx"> {
</span><del>- if (!m_interactionNode || !m_interactionNode->isHTMLElement())
</del><ins>+ if (!m_interactionNode || !is<HTMLElement>(m_interactionNode))
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- HTMLElement* element = toHTMLElement(m_interactionNode.get());
</del><ins>+ HTMLElement* element = downcast<HTMLElement>(m_interactionNode.get());
</ins><span class="cx"> if (!element->renderer())
</span><span class="cx"> return;
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>