<!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&lt;&gt;() /
downcast&lt;&gt;() 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&lt;&gt;() / downcast&lt;&gt;() where appropriate.

* DOMHTMLClasses.cpp:
(DOMHTMLElement::idName):
(DOMHTMLElement::innerText):
(DOMHTMLElement::setInnerText):

Source/WebKit2:

Use is&lt;&gt;() / downcast&lt;&gt;() 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  &lt;cdumez@apple.com&gt;
+
+        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&lt;&gt;() /
+        downcast&lt;&gt;() 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  &lt;pecoraro@apple.com&gt;
</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-&gt;isHTMLElement() || !toHTMLElement(element)-&gt;isLabelable())
</del><ins>+    if (!is&lt;HTMLElement&gt;(element) || !downcast&lt;HTMLElement&gt;(element)-&gt;isLabelable())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     const AtomicString&amp; id = element-&gt;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() &amp;&amp; isHTMLTextFormControlElement(*node))
-        return toHTMLTextFormControlElement(*node).value();
</del><ins>+    if (isNativeTextControl() &amp;&amp; is&lt;HTMLTextFormControlElement&gt;(*node))
+        return downcast&lt;HTMLTextFormControlElement&gt;(*node).value();
</ins><span class="cx"> 
</span><span class="cx">     if (!node-&gt;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 &quot;data&quot; table attribute.
</span><del>-            if (cellElement-&gt;hasTagName(tdTag) || cellElement-&gt;hasTagName(thTag)) {
-                HTMLTableCellElement* tableCellElement = toHTMLTableCellElement(cellElement);
-                if (!tableCellElement-&gt;headers().isEmpty() || !tableCellElement-&gt;abbr().isEmpty()
-                    || !tableCellElement-&gt;axis().isEmpty() || !tableCellElement-&gt;scope().isEmpty())
</del><ins>+            if (is&lt;HTMLTableCellElement&gt;(cellElement)) {
+                HTMLTableCellElement&amp; tableCellElement = downcast&lt;HTMLTableCellElement&gt;(*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&amp; renderStyle = cell-&gt;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-&gt;isImage() || coreObject-&gt;isInputImage()) {
</span><span class="cx">         Node* node = coreObject-&gt;node();
</span><del>-        if (node &amp;&amp; node-&gt;isHTMLElement()) {
</del><ins>+        if (node &amp;&amp; is&lt;HTMLElement&gt;(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)-&gt;getAttribute(HTMLNames::altAttr);
</del><ins>+            const AtomicString&amp; alt = downcast&lt;HTMLElement&gt;(*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-&gt;isAccessibilityRenderObject())
</span><span class="cx">         node = coreObject-&gt;node();
</span><del>-    if (!node || !node-&gt;isHTMLElement() || coreObject-&gt;ariaRoleAttribute() != UnknownRole || coreObject-&gt;isImage())
</del><ins>+    if (!node || !is&lt;HTMLElement&gt;(node) || coreObject-&gt;ariaRoleAttribute() != UnknownRole || coreObject-&gt;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)-&gt;title();
</del><ins>+    String title = downcast&lt;HTMLElement&gt;(*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-&gt;nodeType()) {
</span><span class="cx">     case Node::ELEMENT_NODE:
</span><del>-        if (node-&gt;isHTMLElement())
-            return WEBKIT_DOM_NODE(wrap(toHTMLElement(node)));
</del><ins>+        if (is&lt;HTMLElement&gt;(node))
+            return WEBKIT_DOM_NODE(wrap(downcast&lt;HTMLElement&gt;(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&lt;Attr*&gt;(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-&gt;world(), element));
</span><span class="cx"> 
</span><span class="cx">     JSDOMWrapper* wrapper;        
</span><del>-    if (element-&gt;isHTMLElement())
-        wrapper = createJSHTMLWrapper(globalObject, toHTMLElement(element));
-    else if (element-&gt;isSVGElement())
</del><ins>+    if (is&lt;HTMLElement&gt;(element))
+        wrapper = createJSHTMLWrapper(globalObject, downcast&lt;HTMLElement&gt;(element));
+    else if (is&lt;SVGElement&gt;(element))
</ins><span class="cx">         wrapper = createJSSVGWrapper(globalObject, downcast&lt;SVGElement&gt;(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-&gt;nodeType()) {
</span><span class="cx">         case Node::ELEMENT_NODE:
</span><del>-            if (node-&gt;isHTMLElement())
-                wrapper = createJSHTMLWrapper(globalObject, toHTMLElement(node));
-            else if (node-&gt;isSVGElement())
</del><ins>+            if (is&lt;HTMLElement&gt;(node))
+                wrapper = createJSHTMLWrapper(globalObject, downcast&lt;HTMLElement&gt;(node));
+            else if (is&lt;SVGElement&gt;(node))
</ins><span class="cx">                 wrapper = createJSSVGWrapper(globalObject, downcast&lt;SVGElement&gt;(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&amp; element)
-{
-    return element.hasTagName(objectTag) || element.hasTagName(embedTag) || element.hasTagName(appletTag);
-}
-
</del><span class="cx"> Instance* pluginInstance(HTMLElement&amp; 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&lt;HTMLPlugInElement&gt;(element))
+        return nullptr;
+    Instance* instance = downcast&lt;HTMLPlugInElement&gt;(element).getInstance().get();
</ins><span class="cx">     if (!instance || !instance-&gt;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-&gt;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-&gt;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&amp; element = jsHTMLElement-&gt;impl();
</span><del>-    if (!isPluginElement(element))
-        return 0;
</del><ins>+    if (!is&lt;HTMLPlugInElement&gt;(element))
+        return nullptr;
</ins><span class="cx"> 
</span><del>-    HTMLPlugInElement&amp; pluginElement = toHTMLPlugInElement(element);
</del><ins>+    HTMLPlugInElement&amp; pluginElement = downcast&lt;HTMLPlugInElement&gt;(element);
</ins><span class="cx">     return pluginScriptObjectFromPluginViewBase(pluginElement, jsHTMLElement-&gt;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&amp; element = jsHTMLElement-&gt;impl();
</span><del>-    if (!isPluginElement(element))
-        return 0;
</del><ins>+    if (!is&lt;HTMLPlugInElement&gt;(element))
+        return nullptr;
</ins><span class="cx"> 
</span><del>-    HTMLPlugInElement&amp; pluginElement = toHTMLPlugInElement(element);
</del><ins>+    HTMLPlugInElement&amp; pluginElement = downcast&lt;HTMLPlugInElement&gt;(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-&gt;rootObject())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     return instance-&gt;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-&gt;hasProperty(exec, propertyName))
</span><span class="cx">         return false;
</span><span class="cx">     scriptObject-&gt;methodTable()-&gt;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-&gt;nodeType()) {
</span><span class="cx">         case WebCore::Node::ELEMENT_NODE:
</span><del>-            if (impl-&gt;isHTMLElement())
-                return WebCore::elementClass(toHTMLElement(impl)-&gt;tagQName(), [DOMHTMLElement class]);
</del><ins>+            if (is&lt;HTMLElement&gt;(impl))
+                return WebCore::elementClass(downcast&lt;HTMLElement&gt;(*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&lt;HTMLElement&gt;(styledElement)) {
</ins><span class="cx">             bool isAuto;
</span><del>-            TextDirection textDirection = toHTMLElement(styledElement).directionalityIfhasDirAutoAttribute(isAuto);
</del><ins>+            TextDirection textDirection = downcast&lt;HTMLElement&gt;(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 &amp;&amp; styledElement.isSVGElement())
</del><ins>+        if (includeSMILProperties &amp;&amp; is&lt;SVGElement&gt;(styledElement))
</ins><span class="cx">             addElementStyleProperties(downcast&lt;SVGElement&gt;(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&lt;HTMLTextFormControlElement&gt;(*element)) {
</ins><span class="cx">                 if (context.resolvingMode == Mode::ResolvingStyle) {
</span><span class="cx">                     if (RenderStyle* style = context.elementStyle ? context.elementStyle : element-&gt;renderStyle())
</span><span class="cx">                         style-&gt;setUnique();
</span><span class="cx">                 }
</span><del>-                return toHTMLTextFormControlElement(*element).isPlaceholderVisible();
</del><ins>+                return downcast&lt;HTMLTextFormControlElement&gt;(*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&amp; visitedNodeCount) const
</span><span class="cx"> {
</span><span class="cx">     if (visitedNodeCount &gt;= cStyleSearchThreshold * cStyleSearchLevelThreshold)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     if (!parent || !parent-&gt;isStyledElement())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     StyledElement* styledParent = toStyledElement(parent);
</span><span class="cx">     if (styledParent-&gt;inlineStyle())
</span><del>-        return 0;
-    if (styledParent-&gt;isSVGElement() &amp;&amp; downcast&lt;SVGElement&gt;(*styledParent).animatedSMILStyleProperties())
-        return 0;
</del><ins>+        return nullptr;
+    if (is&lt;SVGElement&gt;(styledParent) &amp;&amp; downcast&lt;SVGElement&gt;(*styledParent).animatedSMILStyleProperties())
+        return nullptr;
</ins><span class="cx">     if (styledParent-&gt;hasID() &amp;&amp; m_ruleSets.features().idsInRules.contains(styledParent-&gt;idForStyleResolution().impl()))
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     RenderStyle* parentStyle = styledParent-&gt;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-&gt;isHTMLElement() &amp;&amp; toHTMLElement(element)-&gt;hasDirectionAuto();
</del><ins>+    return is&lt;HTMLElement&gt;(element) &amp;&amp; downcast&lt;HTMLElement&gt;(*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&lt;HTMLTextFormControlElement&gt;(*element)) {
</ins><span class="cx">         if (checkingContext-&gt;resolvingMode == SelectorChecker::Mode::ResolvingStyle)
</span><span class="cx">             checkingContext-&gt;elementStyle-&gt;setUnique();
</span><del>-        return toHTMLTextFormControlElement(*element).isPlaceholderVisible();
</del><ins>+        return downcast&lt;HTMLTextFormControlElement&gt;(*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&lt;HTMLTextFormControlElement&gt;(*element)) {
</ins><span class="cx">         if (checkingContext-&gt;resolvingMode == SelectorChecker::Mode::ResolvingStyle) {
</span><span class="cx">             if (RenderStyle* style = element-&gt;renderStyle())
</span><span class="cx">                 style-&gt;setUnique();
</span><span class="cx">         }
</span><del>-        return toHTMLTextFormControlElement(*element).isPlaceholderVisible();
</del><ins>+        return downcast&lt;HTMLTextFormControlElement&gt;(*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) &amp;&amp; toHTMLTextFormControlElement(*element).isPlaceholderVisible();
</del><ins>+    return is&lt;HTMLTextFormControlElement&gt;(*element) &amp;&amp; downcast&lt;HTMLTextFormControlElement&gt;(*element).isPlaceholderVisible();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SelectorCodeGenerator::generateElementHasPlaceholderShown(Assembler::JumpList&amp; failureCases, const SelectorFragment&amp; 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() &amp;&amp; toHTMLFrameOwnerElement(node).contentFrame())
-            count++;
</del><ins>+        if (is&lt;HTMLFrameOwnerElement&gt;(node) &amp;&amp; downcast&lt;HTMLFrameOwnerElement&gt;(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() &amp;&amp; element.isFrameOwnerElement())
-            frameOwners.append(toHTMLFrameOwnerElement(element));
</del><ins>+        if (is&lt;HTMLFrameOwnerElement&gt;(element))
+            frameOwners.append(downcast&lt;HTMLFrameOwnerElement&gt;(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&lt;Ref&lt;HTMLFrameOwnerElement&gt;&gt; frameOwners;
</span><span class="cx"> 
</span><span class="cx">     if (policy == RootAndDescendants) {
</span><del>-        if (root.isHTMLElement() &amp;&amp; root.isFrameOwnerElement())
-            frameOwners.append(toHTMLFrameOwnerElement(root));
</del><ins>+        if (is&lt;HTMLFrameOwnerElement&gt;(root))
+            frameOwners.append(downcast&lt;HTMLFrameOwnerElement&gt;(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-&gt;isFrameOwnerElement()) {
-            HTMLFrameOwnerElement&amp; frameOwnerElement = toHTMLFrameOwnerElement(*source);
</del><ins>+        if (is&lt;HTMLFrameOwnerElement&gt;(*source)) {
+            HTMLFrameOwnerElement&amp; frameOwnerElement = downcast&lt;HTMLFrameOwnerElement&gt;(*source);
</ins><span class="cx">             if (frame() &amp;&amp; frame()-&gt;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&lt;HTMLElement&gt;(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-&gt;length();
</span><span class="cx">     for (unsigned int i = 0; i &lt; length; ++i) {
</span><span class="cx">         Node* child = children-&gt;item(i);
</span><del>-        if (!child-&gt;hasTagName(linkTag))
</del><ins>+        if (!is&lt;HTMLLinkElement&gt;(child))
</ins><span class="cx">             continue;
</span><span class="cx">         HTMLLinkElement&amp; linkElement = downcast&lt;HTMLLinkElement&gt;(*child);
</span><span class="cx">         if (!(linkElement.iconType() &amp; 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 &amp;&amp; isHTMLMediaElement(*node))
-            toHTMLMediaElement(*node).enteredOrExitedFullscreen();
</del><ins>+        if (shouldNotifyMediaElement &amp;&amp; is&lt;HTMLMediaElement&gt;(*node))
+            downcast&lt;HTMLMediaElement&gt;(*node).enteredOrExitedFullscreen();
</ins><span class="cx"> #endif
</span><span class="cx">         node-&gt;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 &amp;&amp; oldHoveredElement-&gt;isFrameOwnerElement()) {
-            if (Document* contentDocument = toHTMLFrameOwnerElement(*oldHoveredElement).contentDocument())
</del><ins>+        if (oldHoveredElement &amp;&amp; is&lt;HTMLFrameOwnerElement&gt;(*oldHoveredElement)) {
+            if (Document* contentDocument = downcast&lt;HTMLFrameOwnerElement&gt;(*oldHoveredElement).contentDocument())
</ins><span class="cx">                 contentDocument-&gt;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-&gt;isHTMLElement() &amp;&amp; (toHTMLElement(*node).hasTagName(linkTag) || toHTMLElement(*node).hasTagName(styleTag))) || (node-&gt;isSVGElement() &amp;&amp; downcast&lt;SVGElement&gt;(*node).hasTagName(SVGNames::styleTag))) {
</del><ins>+        } else if (is&lt;HTMLLinkElement&gt;(*node) || is&lt;HTMLStyleElement&gt;(*node) || is&lt;SVGStyleElement&gt;(*node)) {
</ins><span class="cx">             Element&amp; 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&lt;DocumentFragment&gt; fragment = WebCore::createContextualFragment(markup, toHTMLElement(element), AllowScriptingContentAndDoNotMarkAlreadyStarted, ec);
</del><ins>+    RefPtr&lt;DocumentFragment&gt; fragment = WebCore::createContextualFragment(markup, downcast&lt;HTMLElement&gt;(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 &quot;HTML&quot; &amp;&amp; $parsedTags{$name}{wrapperOnlyIfMediaIsAvailable}) {
</span><span class="cx">            print F &lt;&lt;END
</span><span class="cx">     static bool checkTagName(const HTMLElement&amp; element) { return !element.isHTMLUnknownElement() &amp;&amp; element.hasTagName($parameters{namespace}Names::${name}Tag); }
</span><del>-    static bool checkTagName(const Node&amp; node) { return node.isHTMLElement() &amp;&amp; checkTagName(toHTMLElement(node)); }
</del><ins>+    static bool checkTagName(const Node&amp; node) { return is&lt;HTMLElement&gt;(node) &amp;&amp; checkTagName(downcast&lt;HTMLElement&gt;(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 &quot;HTMLFontElement.h&quot;
</span><span class="cx"> #include &quot;HTMLInterchange.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><ins>+#include &quot;HTMLSpanElement.h&quot;
</ins><span class="cx"> #include &quot;NodeList.h&quot;
</span><span class="cx"> #include &quot;NodeTraversal.h&quot;
</span><span class="cx"> #include &quot;RenderObject.h&quot;
</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-&gt;isHTMLElement())
</del><ins>+    if (!node || !is&lt;HTMLSpanElement&gt;(node))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    const HTMLElement&amp; element = toHTMLElement(*node);
-    return element.hasTagName(spanTag) &amp;&amp; element.fastGetAttribute(classAttr) == styleSpanClassString();
</del><ins>+    return downcast&lt;HTMLSpanElement&gt;(*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-&gt;hasTagName(spanTag))
</del><ins>+    if (!element || !is&lt;HTMLSpanElement&gt;(element))
</ins><span class="cx">         return false;
</span><del>-    return hasNoAttributeOrOnlyStyleAttribute(toHTMLElement(element), AllowNonEmptyStyleAttribute);
</del><ins>+    return hasNoAttributeOrOnlyStyleAttribute(downcast&lt;HTMLSpanElement&gt;(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-&gt;isHTMLElement() || !element-&gt;hasTagName(spanTag))
</del><ins>+    if (!element || !is&lt;HTMLSpanElement&gt;(element))
</ins><span class="cx">         return false;
</span><del>-    return hasNoAttributeOrOnlyStyleAttribute(toHTMLElement(element), StyleAttributeShouldBeEmpty);
</del><ins>+    return hasNoAttributeOrOnlyStyleAttribute(downcast&lt;HTMLSpanElement&gt;(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-&gt;hasTagName(fontTag))
</del><ins>+    if (!element || !is&lt;HTMLFontElement&gt;(element))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return hasNoAttributeOrOnlyStyleAttribute(toHTMLElement(element), shouldStyleAttributeBeEmpty);
</del><ins>+    return hasNoAttributeOrOnlyStyleAttribute(downcast&lt;HTMLFontElement&gt;(element), shouldStyleAttributeBeEmpty);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static PassRefPtr&lt;Element&gt; createFontElement(Document&amp; 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-&gt;isHTMLElement());
-            if (block &amp;&amp; block-&gt;isHTMLElement()) {
-                removeCSSStyle(style, toHTMLElement(block.get()));
</del><ins>+            ASSERT(!block || is&lt;HTMLElement&gt;(*block));
+            if (block &amp;&amp; is&lt;HTMLElement&gt;(*block)) {
+                removeCSSStyle(style, downcast&lt;HTMLElement&gt;(block.get()));
</ins><span class="cx">                 if (!m_removeOnly)
</span><del>-                    addBlockStyle(styleChange, toHTMLElement(block.get()));
</del><ins>+                    addBlockStyle(styleChange, downcast&lt;HTMLElement&gt;(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&lt;HTMLElement&gt; element;
</span><del>-        if (node-&gt;isHTMLElement()) {
</del><ins>+        if (is&lt;HTMLElement&gt;(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&lt;HTMLElement&gt;(node);
</ins><span class="cx">         } else if (node-&gt;isTextNode() &amp;&amp; node-&gt;renderer() &amp;&amp; node-&gt;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">         &amp;&amp; highestAncestorUnicodeBidi != CSSValueBidiOverride
</span><del>-        &amp;&amp; highestAncestorWithUnicodeBidi-&gt;isHTMLElement()
</del><ins>+        &amp;&amp; is&lt;HTMLElement&gt;(highestAncestorWithUnicodeBidi)
</ins><span class="cx">         &amp;&amp; EditingStyle::create(highestAncestorWithUnicodeBidi, EditingStyle::AllProperties)-&gt;textDirection(highestAncestorDirection)
</span><span class="cx">         &amp;&amp; highestAncestorDirection == allowedDirection) {
</span><span class="cx">         if (!nextHighestAncestorWithUnicodeBidi)
</span><del>-            return toHTMLElement(highestAncestorWithUnicodeBidi);
</del><ins>+            return downcast&lt;HTMLElement&gt;(highestAncestorWithUnicodeBidi);
</ins><span class="cx"> 
</span><del>-        unsplitAncestor = toHTMLElement(highestAncestorWithUnicodeBidi);
</del><ins>+        unsplitAncestor = downcast&lt;HTMLElement&gt;(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-&gt;renderer() || !node-&gt;hasEditableStyle())
</span><span class="cx">             continue;
</span><span class="cx">         
</span><del>-        if (!node-&gt;hasRichlyEditableStyle() &amp;&amp; node-&gt;isHTMLElement()) {
</del><ins>+        if (!node-&gt;hasRichlyEditableStyle() &amp;&amp; is&lt;HTMLElement&gt;(*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 &amp;&amp; pastEndNode-&gt;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&lt;MutableStyleProperties&gt; inlineStyle = copyStyleOrCreateEmpty(element-&gt;inlineStyle());
</del><ins>+            HTMLElement&amp; element = downcast&lt;HTMLElement&gt;(*node);
+            RefPtr&lt;MutableStyleProperties&gt; inlineStyle = copyStyleOrCreateEmpty(element.inlineStyle());
</ins><span class="cx">             if (MutableStyleProperties* otherStyle = style-&gt;style())
</span><span class="cx">                 inlineStyle-&gt;mergeAndOverrideOnConflict(*otherStyle);
</span><del>-            setNodeAttribute(element, styleAttr, inlineStyle-&gt;asText());
</del><ins>+            setNodeAttribute(&amp;element, styleAttr, inlineStyle-&gt;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-&gt;isHTMLElement())
</del><ins>+
+        if (!is&lt;HTMLElement&gt;(*node))
</ins><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;Node&gt; previousSibling = node-&gt;previousSibling();
</span><span class="cx">         RefPtr&lt;Node&gt; nextSibling = node-&gt;nextSibling();
</span><span class="cx">         RefPtr&lt;ContainerNode&gt; parent = node-&gt;parentNode();
</span><del>-        removeInlineStyleFromElement(style, toHTMLElement(node.get()), RemoveAlways);
</del><ins>+        removeInlineStyleFromElement(style, downcast&lt;HTMLElement&gt;(node.get()), RemoveAlways);
</ins><span class="cx">         if (!node-&gt;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-&gt;parentNode()) {
-        if (n-&gt;isHTMLElement() &amp;&amp; shouldRemoveInlineStyleFromElement(style, toHTMLElement(n)))
-            result = toHTMLElement(n);
</del><ins>+    for (Node* ancestor = node; ancestor; ancestor = ancestor-&gt;parentNode()) {
+        if (is&lt;HTMLElement&gt;(ancestor) &amp;&amp; shouldRemoveInlineStyleFromElement(style, downcast&lt;HTMLElement&gt;(ancestor)))
+            result = downcast&lt;HTMLElement&gt;(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-&gt;document().updateStyleIfNeeded();
</span><span class="cx"> 
</span><del>-    if (!style || style-&gt;isEmpty() || !node-&gt;renderer() || node-&gt;hasTagName(iframeTag))
</del><ins>+    if (!style || style-&gt;isEmpty() || !node-&gt;renderer() || is&lt;HTMLIFrameElement&gt;(node))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;EditingStyle&gt; newInlineStyle = style;
</span><del>-    if (node-&gt;isHTMLElement() &amp;&amp; toHTMLElement(node)-&gt;inlineStyle()) {
</del><ins>+    if (is&lt;HTMLElement&gt;(node) &amp;&amp; downcast&lt;HTMLElement&gt;(node)-&gt;inlineStyle()) {
</ins><span class="cx">         newInlineStyle = style-&gt;copy();
</span><del>-        newInlineStyle-&gt;mergeInlineStyleOfElement(toHTMLElement(node), EditingStyle::OverrideValues);
</del><ins>+        newInlineStyle-&gt;mergeInlineStyleOfElement(downcast&lt;HTMLElement&gt;(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-&gt;renderer()-&gt;isRenderBlockFlow() || node-&gt;hasChildNodes()) &amp;&amp; node-&gt;isHTMLElement()) {
-        setNodeAttribute(toHTMLElement(node), styleAttr, newInlineStyle-&gt;style()-&gt;asText());
</del><ins>+    if ((node-&gt;renderer()-&gt;isRenderBlockFlow() || node-&gt;hasChildNodes()) &amp;&amp; is&lt;HTMLElement&gt;(node)) {
+        setNodeAttribute(downcast&lt;HTMLElement&gt;(node), styleAttr, newInlineStyle-&gt;style()-&gt;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&lt;EditingStyle&gt; styleToPushDown = EditingStyle::create();
</span><del>-        if (current-&gt;isHTMLElement())
-            removeInlineStyleFromElement(style, toHTMLElement(current.get()), RemoveIfNeeded, styleToPushDown.get());
</del><ins>+        if (is&lt;HTMLElement&gt;(*current))
+            removeInlineStyleFromElement(style, downcast&lt;HTMLElement&gt;(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-&gt;isHTMLElement() &amp;&amp; nodeFullySelected(node.get(), start, end)) {
-            RefPtr&lt;HTMLElement&gt; elem = toHTMLElement(node.get());
</del><ins>+        if (is&lt;HTMLElement&gt;(*node) &amp;&amp; nodeFullySelected(node.get(), start, end)) {
+            RefPtr&lt;HTMLElement&gt; elem = downcast&lt;HTMLElement&gt;(node.get());
</ins><span class="cx">             RefPtr&lt;Node&gt; prev = NodeTraversal::previousPostOrder(elem.get());
</span><span class="cx">             RefPtr&lt;Node&gt; next = NodeTraversal::next(elem.get());
</span><span class="cx">             RefPtr&lt;EditingStyle&gt; 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-&gt;isHTMLElement())
</del><ins>+    if (!element || !is&lt;HTMLElement&gt;(element))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return shouldRemoveInlineStyleFromElement(style, toHTMLElement(element));
</del><ins>+    return shouldRemoveInlineStyleFromElement(style, downcast&lt;HTMLElement&gt;(element));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ApplyStyleCommand::isValidCaretPositionInTextNode(const Position&amp; position)
</span><span class="lines">@@ -1427,14 +1428,14 @@
</span><span class="cx">     ASSERT(endNode-&gt;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 &amp;&amp; startNode == endNode; container = container-&gt;firstChild()) {
</span><del>-        if (container-&gt;isHTMLElement() &amp;&amp; container-&gt;hasTagName(fontTag))
-            fontContainer = toHTMLElement(container);
-        bool styleContainerIsNotSpan = !styleContainer || !styleContainer-&gt;hasTagName(spanTag);
-        if (container-&gt;isHTMLElement() &amp;&amp; (container-&gt;hasTagName(spanTag) || (styleContainerIsNotSpan &amp;&amp; container-&gt;hasChildNodes())))
-            styleContainer = toHTMLElement(container);
</del><ins>+        if (is&lt;HTMLFontElement&gt;(container))
+            fontContainer = downcast&lt;HTMLFontElement&gt;(container);
+        bool styleContainerIsNotSpan = !styleContainer || !is&lt;HTMLSpanElement&gt;(styleContainer);
+        if (is&lt;HTMLElement&gt;(container) &amp;&amp; (is&lt;HTMLSpanElement&gt;(container) || (styleContainerIsNotSpan &amp;&amp; container-&gt;hasChildNodes())))
+            styleContainer = downcast&lt;HTMLElement&gt;(container);
</ins><span class="cx">         if (!container-&gt;firstChild())
</span><span class="cx">             break;
</span><span class="cx">         startNode = container-&gt;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), &amp;isDeletableElement);
</span><del>-    return element &amp;&amp; element-&gt;isHTMLElement() ? toHTMLElement(element) : nullptr;
</del><ins>+    return element &amp;&amp; is&lt;HTMLElement&gt;(element) ? downcast&lt;HTMLElement&gt;(element) : nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DeleteButtonController::respondToChangedSelection(const VisibleSelection&amp; 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-&gt;target()-&gt;toNode()) ? toHTMLTextFormControlElement(event-&gt;target()-&gt;toNode()) : nullptr;
</del><ins>+    HTMLTextFormControlElement* textFromControlOfTarget = is&lt;HTMLTextFormControlElement&gt;(*event-&gt;target()-&gt;toNode()) ? downcast&lt;HTMLTextFormControlElement&gt;(event-&gt;target()-&gt;toNode()) : nullptr;
</ins><span class="cx">     if (textFromControlOfTarget &amp;&amp; (selection.start().isNull() || textFromControlOfTarget != textFormControlOfSelectionStart)) {
</span><span class="cx">         if (RefPtr&lt;Range&gt; range = textFromControlOfTarget-&gt;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 &amp;&amp; isHTMLTextFormControlElement(*focusedElement)) {
</del><ins>+    if (focusedElement &amp;&amp; is&lt;HTMLTextFormControlElement&gt;(*focusedElement)) {
</ins><span class="cx">         if (direction == NaturalWritingDirection)
</span><span class="cx">             return;
</span><del>-        toHTMLElement(focusedElement)-&gt;setAttribute(dirAttr, direction == LeftToRightWritingDirection ? &quot;ltr&quot; : &quot;rtl&quot;);
</del><ins>+        downcast&lt;HTMLTextFormControlElement&gt;(*focusedElement).setAttribute(dirAttr, direction == LeftToRightWritingDirection ? &quot;ltr&quot; : &quot;rtl&quot;);
</ins><span class="cx">         focusedElement-&gt;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-&gt;renderer()-&gt;isTextOrLineBreak())
</span><span class="cx">             return node;
</span><del>-        if (isHTMLTextFormControlElement(*node))
-            node = toHTMLTextFormControlElement(*node).visiblePositionForIndex(1).deepEquivalent().deprecatedNode();
</del><ins>+        if (is&lt;HTMLTextFormControlElement&gt;(*node))
+            node = downcast&lt;HTMLTextFormControlElement&gt;(*node).visiblePositionForIndex(1).deepEquivalent().deprecatedNode();
</ins><span class="cx">         else if (node-&gt;firstChild())
</span><span class="cx">             node = node-&gt;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() &amp;&amp; focusedElement) {
</span><del>-            if (focusedElement-&gt;isTextFormControl()) {
-                toHTMLTextFormControlElement(*focusedElement).select();
</del><ins>+            if (is&lt;HTMLTextFormControlElement&gt;(focusedElement)) {
+                downcast&lt;HTMLTextFormControlElement&gt;(*focusedElement).select();
</ins><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx">             root = focusedElement-&gt;nonBoundaryShadowTreeRootNode();
</span><span class="lines">@@ -2025,8 +2025,8 @@
</span><span class="cx">             return downcast&lt;HTMLFormElement&gt;(&amp;element);
</span><span class="cx">         if (is&lt;HTMLFormControlElement&gt;(element))
</span><span class="cx">             return downcast&lt;HTMLFormControlElement&gt;(element).form();
</span><del>-        if (isHTMLFrameElementBase(element)) {
-            Document* contentDocument = toHTMLFrameElementBase(element).contentDocument();
</del><ins>+        if (is&lt;HTMLFrameElementBase&gt;(element)) {
+            Document* contentDocument = downcast&lt;HTMLFrameElementBase&gt;(element).contentDocument();
</ins><span class="cx">             if (!contentDocument)
</span><span class="cx">                 continue;
</span><span class="cx">             if (HTMLFormElement* frameResult = scanForForm(contentDocument-&gt;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-&gt;isHTMLElement())
</del><ins>+    if (!sibling || !is&lt;HTMLElement&gt;(sibling))
</ins><span class="cx">         return list.release();
</span><span class="cx"> 
</span><del>-    RefPtr&lt;HTMLElement&gt; nextList = toHTMLElement(sibling);
</del><ins>+    RefPtr&lt;HTMLElement&gt; nextList = downcast&lt;HTMLElement&gt;(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&amp; node)
</span><span class="cx"> {
</span><del>-    if (!node.isHTMLElement())
</del><ins>+    if (!is&lt;HTMLElement&gt;(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&lt;HTMLElement&gt;(node).ieForbidsInsertHTML();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MarkupAccumulator::appendEndMarkup(StringBuilder&amp; result, const Element&amp; 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-&gt;inlineStyle();
</span><span class="cx">         RefPtr&lt;EditingStyle&gt; newInlineStyle = EditingStyle::create(inlineStyle);
</span><span class="cx">         if (inlineStyle) {
</span><del>-            if (element-&gt;isHTMLElement()) {
</del><ins>+            if (is&lt;HTMLElement&gt;(element)) {
</ins><span class="cx">                 Vector&lt;QualifiedName&gt; attributes;
</span><del>-                HTMLElement* htmlElement = toHTMLElement(element);
</del><ins>+                HTMLElement&amp; htmlElement = downcast&lt;HTMLElement&gt;(*element);
</ins><span class="cx"> 
</span><del>-                if (newInlineStyle-&gt;conflictsWithImplicitStyleOfElement(htmlElement)) {
</del><ins>+                if (newInlineStyle-&gt;conflictsWithImplicitStyleOfElement(&amp;htmlElement)) {
</ins><span class="cx">                     // e.g. &lt;b style=&quot;font-weight: normal;&quot;&gt; is converted to &lt;span style=&quot;font-weight: normal;&quot;&gt;
</span><del>-                    node = replaceElementWithSpanPreservingChildrenAndAttributes(htmlElement);
</del><ins>+                    node = replaceElementWithSpanPreservingChildrenAndAttributes(&amp;htmlElement);
</ins><span class="cx">                     element = toStyledElement(node.get());
</span><del>-                    insertedNodes.didReplaceNode(htmlElement, node.get());
-                } else if (newInlineStyle-&gt;extractConflictingImplicitStyleOfAttributes(htmlElement, EditingStyle::PreserveWritingDirection, 0, attributes,
</del><ins>+                    insertedNodes.didReplaceNode(&amp;htmlElement, node.get());
+                } else if (newInlineStyle-&gt;extractConflictingImplicitStyleOfAttributes(&amp;htmlElement, EditingStyle::PreserveWritingDirection, 0, attributes,
</ins><span class="cx">                     EditingStyle::DoNotExtractMatchingStyle)) {
</span><span class="cx">                     // e.g. &lt;font size=&quot;3&quot; style=&quot;font-size: 20px;&quot;&gt; is converted to &lt;font style=&quot;font-size: 20px;&quot;&gt;
</span><span class="cx">                     for (size_t i = 0; i &lt; attributes.size(); i++)
</span><span class="lines">@@ -626,10 +626,10 @@
</span><span class="cx">     for (RefPtr&lt;Node&gt; node = insertedNodes.firstNodeInserted(); node &amp;&amp; node != pastEndNode; node = next) {
</span><span class="cx">         next = NodeTraversal::next(node.get());
</span><span class="cx"> 
</span><del>-        if (!node-&gt;isHTMLElement())
</del><ins>+        if (!is&lt;HTMLElement&gt;(*node))
</ins><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        if (isProhibitedParagraphChild(toHTMLElement(node.get())-&gt;localName())) {
</del><ins>+        if (isProhibitedParagraphChild(downcast&lt;HTMLElement&gt;(*node).localName())) {
</ins><span class="cx">             if (auto* paragraphElement = enclosingElementWithTag(positionInParentBeforeNode(node.get()), pTag)) {
</span><span class="cx">                 auto* parent = paragraphElement-&gt;parentNode();
</span><span class="cx">                 if (parent &amp;&amp; parent-&gt;hasEditableStyle())
</span><span class="lines">@@ -643,7 +643,7 @@
</span><span class="cx">                 if (headerElement-&gt;parentNode() &amp;&amp; headerElement-&gt;parentNode()-&gt;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&lt;HTMLElement&gt;(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&lt;HTMLElement&gt;(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()) &amp;&amp; isListElement(refNode-&gt;firstChild())))
</span><span class="cx">         &amp;&amp; blockStart &amp;&amp; blockStart-&gt;renderer()-&gt;isListItem())
</span><del>-        refNode = insertAsListItems(toHTMLElement(refNode.get()), blockStart, insertionPos, insertedNodes);
</del><ins>+        refNode = insertAsListItems(downcast&lt;HTMLElement&gt;(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&lt;HTMLElement&gt; listElement = prpListElement;
</span><span class="cx"> 
</span><span class="cx">     while (listElement-&gt;hasOneChild() &amp;&amp; isListElement(listElement-&gt;firstChild()))
</span><del>-        listElement = toHTMLElement(listElement-&gt;firstChild());
</del><ins>+        listElement = downcast&lt;HTMLElement&gt;(listElement-&gt;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 &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;HTMLElement.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><ins>+#include &quot;HTMLParagraphElement.h&quot;
</ins><span class="cx"> #include &quot;HTMLTextFormControlElement.h&quot;
</span><span class="cx"> #include &quot;InlineTextBox.h&quot;
</span><span class="cx"> #include &quot;NodeTraversal.h&quot;
</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&lt;HTMLElement&gt;(node))
</ins><span class="cx">             return false;
</span><del>-        auto&amp; element = toHTMLElement(node);
</del><ins>+        auto&amp; element = downcast&lt;HTMLElement&gt;(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&lt;HTMLElement&gt;(node))
</ins><span class="cx">         return false;
</span><del>-    if (!(hasHeaderTag(toHTMLElement(node)) || toHTMLElement(node).hasTagName(pTag)))
</del><ins>+
+    HTMLElement&amp; element = downcast&lt;HTMLElement&gt;(node);
+    if (!hasHeaderTag(element) &amp;&amp; !is&lt;HTMLParagraphElement&gt;(element))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     int bottomMargin = toRenderBox(renderer)-&gt;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&lt;NSTextTableBlock&gt; block;
</span><span class="cx">     
</span><span class="cx">     if (element) {
</span><del>-        if (isHTMLTableCellElement(*element)) {
-            HTMLTableCellElement&amp; tableCellElement = toHTMLTableCellElement(*element);
</del><ins>+        if (is&lt;HTMLTableCellElement&gt;(*element)) {
+            HTMLTableCellElement&amp; tableCellElement = downcast&lt;HTMLTableCellElement&gt;(*element);
</ins><span class="cx">             
</span><span class="cx">             rowSpan = tableCellElement.rowSpan();
</span><span class="cx">             if (rowSpan &lt; 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&lt;HTMLFrameElementBase&gt;(element)) {
+        if (Document* contentDocument = downcast&lt;HTMLFrameElementBase&gt;(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-&gt;parentNode(); n; n = n-&gt;parentNode()) {
-        if (n-&gt;hasTagName(ulTag) || n-&gt;hasTagName(olTag))
-            return toHTMLElement(n);
-        if (n == root)
-            return 0;
</del><ins>+    for (ContainerNode* ancestor = node-&gt;parentNode(); ancestor; ancestor = ancestor-&gt;parentNode()) {
+        if (is&lt;HTMLUListElement&gt;(ancestor) || is&lt;HTMLOListElement&gt;(ancestor))
+            return downcast&lt;HTMLElement&gt;(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-&gt;hasTagName(liTag) || (isListElement(n-&gt;parentNode()) &amp;&amp; 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-&gt;firstChild(); n; n = n-&gt;nextSibling()) {
</span><span class="cx">         if (isListElement(n))
</span><del>-            return toHTMLElement(n);
</del><ins>+            return downcast&lt;HTMLElement&gt;(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-&gt;nextSibling(); n; n = n-&gt;nextSibling()) {
</span><span class="cx">         if (isListElement(n))
</span><del>-            return toHTMLElement(n);
</del><ins>+            return downcast&lt;HTMLElement&gt;(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&lt;HTMLInputElement&gt;(*focusedElement).isSearchField())))) {
</span><span class="cx">         if (direction == NaturalWritingDirection)
</span><span class="cx">             return;
</span><del>-        toHTMLElement(*focusedElement).setAttribute(alignAttr, newValue);
</del><ins>+        downcast&lt;HTMLElement&gt;(*focusedElement).setAttribute(alignAttr, newValue);
</ins><span class="cx">         m_frame.document()-&gt;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&amp; oldElement = toHTMLElement(node);
-    HTMLElement&amp; newElement = toHTMLElement(*firstChild);
</del><ins>+    const HTMLElement&amp; oldElement = downcast&lt;HTMLElement&gt;(node);
+    HTMLElement&amp; newElement = downcast&lt;HTMLElement&gt;(*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-&gt;mergeStyleFromRulesForSerialization(toHTMLElement(const_cast&lt;Element*&gt;(&amp;element)));
</del><ins>+                newInlineStyle-&gt;mergeStyleFromRulesForSerialization(downcast&lt;HTMLElement&gt;(const_cast&lt;Element*&gt;(&amp;element)));
</ins><span class="cx"> 
</span><span class="cx">             if (addDisplayInline)
</span><span class="cx">                 newInlineStyle-&gt;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()-&gt;firstChild();
</span><del>-    if (!node || !node-&gt;isHTMLElement())
</del><ins>+    if (!node || !is&lt;HTMLElement&gt;(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(&quot; &quot;);
</span><span class="cx">     }
</span><del>-    toHTMLElement(node)-&gt;setInnerText(displayValue, ASSERT_NO_EXCEPTION);
</del><ins>+    downcast&lt;HTMLElement&gt;(*node).setInnerText(displayValue, ASSERT_NO_EXCEPTION);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void BaseChooserOnlyDateAndTimeInputType::setValue(const String&amp; 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-&gt;firstChild()-&gt;firstChild()) : 0;
</del><ins>+    return shadow ? downcast&lt;HTMLElement&gt;(shadow-&gt;firstChild()-&gt;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 &lt;body&gt; of all documents embedded through &lt;iframe&gt; or &lt;frame&gt;.
</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 &amp;&amp; isHTMLFrameElementBase(*ownerElement)) {
-        HTMLFrameElementBase&amp; ownerFrameElement = toHTMLFrameElementBase(*ownerElement);
</del><ins>+    if (ownerElement &amp;&amp; is&lt;HTMLFrameElementBase&gt;(*ownerElement)) {
+        HTMLFrameElementBase&amp; ownerFrameElement = downcast&lt;HTMLFrameElementBase&gt;(*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&amp; root = rootNode();
</span><span class="cx">     if (!usesCustomForwardOnlyTraversal() &amp;&amp; root.isInTreeScope()) {
</span><span class="cx">         TreeScope&amp; 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 &amp;&amp; type() == DocAll &amp;&amp; (!candidate-&gt;isHTMLElement() || !nameShouldBeVisibleInDocumentAll(toHTMLElement(*candidate))))
-                    candidate = 0;
</del><ins>+                if (candidate &amp;&amp; type() == DocAll &amp;&amp; (!is&lt;HTMLElement&gt;(candidate) || !nameShouldBeVisibleInDocumentAll(downcast&lt;HTMLElement&gt;(*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 &amp;&amp; isMatchingElement(*this, *candidate)
</span><span class="cx">             &amp;&amp; (m_shouldOnlyIncludeDirectChildren ? candidate-&gt;parentNode() == &amp;root : candidate-&gt;isDescendantOf(&amp;root)))
</span><span class="lines">@@ -425,7 +425,7 @@
</span><span class="cx">             return nameResults-&gt;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&amp; idAttrVal = element-&gt;getIdAttribute();
</span><span class="cx">         if (!idAttrVal.isEmpty())
</span><span class="cx">             cache-&gt;appendIdCache(idAttrVal, element);
</span><del>-        if (!element-&gt;isHTMLElement())
</del><ins>+        if (!is&lt;HTMLElement&gt;(element))
</ins><span class="cx">             continue;
</span><span class="cx">         const AtomicString&amp; nameAttrVal = element-&gt;getNameAttribute();
</span><del>-        if (!nameAttrVal.isEmpty() &amp;&amp; idAttrVal != nameAttrVal &amp;&amp; (type() != DocAll || nameShouldBeVisibleInDocumentAll(toHTMLElement(*element))))
</del><ins>+        if (!nameAttrVal.isEmpty() &amp;&amp; idAttrVal != nameAttrVal &amp;&amp; (type() != DocAll || nameShouldBeVisibleInDocumentAll(downcast&lt;HTMLElement&gt;(*element))))
</ins><span class="cx">             cache-&gt;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 &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameView.h&quot;
</span><ins>+#include &quot;HTMLBDIElement.h&quot;
</ins><span class="cx"> #include &quot;HTMLBRElement.h&quot;
</span><span class="cx"> #include &quot;HTMLCollection.h&quot;
</span><span class="cx"> #include &quot;HTMLDocument.h&quot;
</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-&gt;isHTMLElement()) {
-            switch (contentEditableType(toHTMLElement(*currentElement))) {
</del><ins>+        if (is&lt;HTMLElement&gt;(currentElement)) {
+            switch (contentEditableType(downcast&lt;HTMLElement&gt;(*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&amp; html, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><span class="cx">     Element* p = parentElement();
</span><del>-    if (!p || !p-&gt;isHTMLElement()) {
</del><ins>+    if (!p || !is&lt;HTMLElement&gt;(p)) {
</ins><span class="cx">         ec = NO_MODIFICATION_ALLOWED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    RefPtr&lt;HTMLElement&gt; parent = toHTMLElement(p);
</del><ins>+    RefPtr&lt;HTMLElement&gt; parent = downcast&lt;HTMLElement&gt;(p);
</ins><span class="cx">     RefPtr&lt;Node&gt; prev = previousSibling();
</span><span class="cx">     RefPtr&lt;Node&gt; 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&amp; node)
</span><span class="cx"> {
</span><del>-    return node.isHTMLElement() &amp;&amp; (toHTMLElement(node).hasTagName(bdiTag) || toHTMLElement(node).fastHasAttribute(dirAttr));
</del><ins>+    if (!is&lt;HTMLElement&gt;(node))
+        return false;
+    const HTMLElement&amp; element = downcast&lt;HTMLElement&gt;(node);
+    return is&lt;HTMLBDIElement&gt;(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&amp; textElement = toHTMLTextFormControlElement(const_cast&lt;HTMLElement&amp;&gt;(*this));
</del><ins>+    if (is&lt;HTMLTextFormControlElement&gt;(*this)) {
+        HTMLTextFormControlElement&amp; textElement = downcast&lt;HTMLTextFormControlElement&gt;(const_cast&lt;HTMLElement&amp;&gt;(*this));
</ins><span class="cx">         bool hasStrongDirectionality;
</span><span class="cx">         UCharDirection textDirection = textElement.value().defaultWritingDirection(&amp;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 &amp;&amp; parent-&gt;isHTMLElement() &amp;&amp; parent-&gt;selfOrAncestorHasDirAutoAttribute())
-        toHTMLElement(parent)-&gt;adjustDirectionalityIfNeededAfterChildAttributeChanged(this);
</del><ins>+    if (parent &amp;&amp; is&lt;HTMLElement&gt;(parent) &amp;&amp; parent-&gt;selfOrAncestorHasDirAutoAttribute())
+        downcast&lt;HTMLElement&gt;(*parent).adjustDirectionalityIfNeededAfterChildAttributeChanged(this);
</ins><span class="cx"> 
</span><span class="cx">     if (equalIgnoringCase(value, &quot;auto&quot;))
</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&amp;); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLElement(const Node&amp; node) { return node.isHTMLElement(); }
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLElement)
+    static bool isHTMLElement(const Node&amp; node) { return node.isHTMLElement(); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx"> 
</span><del>-template &lt;typename ArgType&gt;
-struct NodeTypeCastTraits&lt;const HTMLElement, ArgType&gt; {
-    static bool isType(ArgType&amp; node) { return isHTMLElement(node); }
-};
-
-NODE_TYPE_CASTS(HTMLElement)
-
</del><span class="cx"> inline bool Node::hasTagName(const HTMLQualifiedName&amp; name) const
</span><span class="cx"> {
</span><del>-    return isHTMLElement() &amp;&amp; toHTMLElement(*this).hasTagName(name);
</del><ins>+    return is&lt;HTMLElement&gt;(*this) &amp;&amp; downcast&lt;HTMLElement&gt;(*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 &amp;&amp; &amp;namedItems.first().get() != elementFromPast)
</span><del>-        addToPastNamesMap(toHTMLElement(&amp;namedItems.first().get())-&gt;asFormNamedItem(), name);
</del><ins>+        addToPastNamesMap(downcast&lt;HTMLElement&gt;(namedItems.first().get()).asFormNamedItem(), name);
</ins><span class="cx">     else if (elementFromPast &amp;&amp; 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&amp;); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLFrameElementBase(const HTMLElement&amp; element) { return is&lt;HTMLFrameElement&gt;(element) || is&lt;HTMLIFrameElement&gt;(element); }
-inline bool isHTMLFrameElementBase(const Node&amp; node) { return is&lt;HTMLFrameElement&gt;(node) || is&lt;HTMLIFrameElement&gt;(node); }
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLFrameElementBase)
+    static bool isHTMLFrameElementBase(const HTMLElement&amp; element) { return is&lt;HTMLFrameElement&gt;(element) || is&lt;HTMLIFrameElement&gt;(element); }
+    static bool isHTMLFrameElementBase(const Node&amp; node) { return is&lt;HTMLElement&gt;(node) &amp;&amp; isHTMLFrameElementBase(downcast&lt;HTMLElement&gt;(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&amp;); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLFrameOwnerElement(const Node&amp; node) { return node.isFrameOwnerElement(); }
-NODE_TYPE_CASTS(HTMLFrameOwnerElement)
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLFrameOwnerElement)
+    static bool isHTMLFrameOwnerElement(const Node&amp; 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&amp; 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&amp;); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLMediaElement(const Element&amp; element) { return element.isMediaElement(); }
-inline bool isHTMLMediaElement(const Node&amp; node) { return node.isElementNode() &amp;&amp; toElement(node).isMediaElement(); }
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLMediaElement)
+    static bool isHTMLMediaElement(const Element&amp; element) { return element.isMediaElement(); }
+    static bool isHTMLMediaElement(const Node&amp; node) { return node.isElementNode() &amp;&amp; isHTMLMediaElement(toElement(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx"> 
</span><del>-template &lt;typename ArgType&gt;
-struct NodeTypeCastTraits&lt;const HTMLMediaElement, ArgType&gt; {
-    static bool isType(ArgType&amp; node) { return isHTMLMediaElement(node); }
-};
-
-NODE_TYPE_CASTS(HTMLMediaElement)
-
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> template&lt;&gt;
</span><span class="cx"> struct ValueToString&lt;MediaTime&gt; {
</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()-&gt;isHTMLElement())
</del><ins>+    if (!parentNode() || !is&lt;HTMLOptGroupElement&gt;(parentNode()))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    HTMLElement&amp; parentElement = toHTMLElement(*parentNode());
-    return is&lt;HTMLOptGroupElement&gt;(parentElement) &amp;&amp; parentElement.isDisabledFormControl();
</del><ins>+    return downcast&lt;HTMLOptGroupElement&gt;(*parentNode()).isDisabledFormControl();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Node::InsertionNotificationRequest HTMLOptionElement::insertedInto(ContainerNode&amp; 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&amp;); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLPlugInElement(const Node&amp; node) { return node.isPluginElement(); }
-NODE_TYPE_CASTS(HTMLPlugInElement)
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLPlugInElement)
+    static bool isHTMLPlugInElement(const Node&amp; 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-&gt;length(); i &lt; length; i++) {
</span><span class="cx">         Node* node = collection-&gt;item(i);
</span><del>-        if (node-&gt;isPluginElement()) {
-            HTMLPlugInElement* plugInElement = toHTMLPlugInElement(node);
-            if (plugInElement-&gt;isPlugInImageElement()) {
-                HTMLPlugInImageElement&amp; plugInImageElement = toHTMLPlugInImageElement(*node);
-                const URL&amp; loadedURL = plugInImageElement.loadedUrl();
-                String otherMimeType = plugInImageElement.loadedMimeType();
-                if (plugInOrigin == loadedURL.host() &amp;&amp; mimeType == otherMimeType)
-                    plugInList.append(&amp;plugInImageElement);
-            }
</del><ins>+        if (is&lt;HTMLPlugInImageElement&gt;(node)) {
+            HTMLPlugInImageElement&amp; plugInImageElement = downcast&lt;HTMLPlugInImageElement&gt;(*node);
+            const URL&amp; loadedURL = plugInImageElement.loadedUrl();
+            String otherMimeType = plugInImageElement.loadedMimeType();
+            if (plugInOrigin == loadedURL.host() &amp;&amp; mimeType == otherMimeType)
+                plugInList.append(&amp;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&amp;); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLPlugInImageElement(const HTMLPlugInElement&amp; element) { return element.isPlugInImageElement(); }
-inline bool isHTMLPlugInImageElement(const Node&amp; node) { return node.isPluginElement() &amp;&amp; toHTMLPlugInElement(node).isPlugInImageElement(); }
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLPlugInImageElement)
+    static bool isHTMLPlugInImageElement(const HTMLPlugInElement&amp; element) { return element.isPlugInImageElement(); }
+    static bool isHTMLPlugInImageElement(const Node&amp; node) { return is&lt;HTMLPlugInElement&gt;(node) &amp;&amp; isHTMLPlugInImageElement(downcast&lt;HTMLPlugInElement&gt;(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx"> 
</span><del>-template &lt;typename ArgType&gt;
-struct NodeTypeCastTraits&lt;const HTMLPlugInImageElement, ArgType&gt; {
-    static bool isType(ArgType&amp; 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 &lt; 0) {
</span><del>-        before = toHTMLElement(options()-&gt;item(index+1));
</del><ins>+        before = downcast&lt;HTMLElement&gt;(options()-&gt;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&lt;Element&gt; option = document().createElement(optionTag, false);
</span><span class="cx">             ASSERT(option);
</span><del>-            add(toHTMLElement(option.get()), 0, ec);
</del><ins>+            add(downcast&lt;HTMLElement&gt;(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&lt;HTMLElement&gt;(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 &amp;&amp; parent-&gt;isMediaElement())
-        toHTMLMediaElement(parentNode())-&gt;sourceWasAdded(this);
</del><ins>+    if (parent &amp;&amp; is&lt;HTMLMediaElement&gt;(parent))
+        downcast&lt;HTMLMediaElement&gt;(*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 &amp;&amp; removalRoot.isElementNode())
</span><span class="cx">         parent = &amp;toElement(removalRoot);
</span><del>-    if (parent &amp;&amp; parent-&gt;isMediaElement())
-        toHTMLMediaElement(parent)-&gt;sourceWasRemoved(this);
</del><ins>+    if (parent &amp;&amp; is&lt;HTMLMediaElement&gt;(parent))
+        downcast&lt;HTMLMediaElement&gt;(*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-&gt;element());
</del><ins>+    return downcast&lt;HTMLTableCellElement&gt;(cellAboveRenderer-&gt;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&lt;URL&gt;&amp;) const override;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-void isHTMLTableCellElement(const HTMLTableCellElement&amp;); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLTableCellElement(const Node&amp; 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&amp; element) { return element.hasTagName(HTMLNames::tdTag) || element.hasTagName(HTMLNames::thTag); }
+    static bool isHTMLTableCellElement(const Node&amp; node) { return is&lt;HTMLElement&gt;(node) &amp;&amp; isHTMLTableCellElement(downcast&lt;HTMLElement&gt;(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-&gt;nextSibling()) {
</span><span class="cx">         if (child-&gt;hasTagName(theadTag))
</span><del>-            return toHTMLTableSectionElement(child);
</del><ins>+            return downcast&lt;HTMLTableSectionElement&gt;(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&lt;HTMLTableSectionElement&gt; newHead, ExceptionCode&amp; ec)
</span><span class="lines">@@ -107,9 +107,9 @@
</span><span class="cx"> {
</span><span class="cx">     for (Node* child = firstChild(); child; child = child-&gt;nextSibling()) {
</span><span class="cx">         if (child-&gt;hasTagName(tfootTag))
</span><del>-            return toHTMLTableSectionElement(child);
</del><ins>+            return downcast&lt;HTMLTableSectionElement&gt;(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&lt;HTMLTableSectionElement&gt; newFoot, ExceptionCode&amp; ec)
</span><span class="lines">@@ -178,9 +178,9 @@
</span><span class="cx"> {
</span><span class="cx">     for (Node* child = lastChild(); child; child = child-&gt;previousSibling()) {
</span><span class="cx">         if (child-&gt;hasTagName(tbodyTag))
</span><del>-            return toHTMLTableSectionElement(child);
</del><ins>+            return downcast&lt;HTMLTableSectionElement&gt;(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&lt;HTMLElement&gt; HTMLTableElement::insertRow(int index, ExceptionCode&amp; 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-&gt;firstChild(); node; node = node-&gt;nextSibling()) {
</span><span class="cx">         if (node-&gt;hasTagName(tbodyTag)) {
</span><del>-            HTMLTableSectionElement* section = toHTMLTableSectionElement(node);
-            for (Node* row = section-&gt;firstChild(); row; row = row-&gt;nextSibling()) {
</del><ins>+            HTMLTableSectionElement&amp; section = downcast&lt;HTMLTableSectionElement&gt;(*node);
+            for (Node* row = section.firstChild(); row; row = row-&gt;nextSibling()) {
</ins><span class="cx">                 if (row == this)
</span><span class="cx">                     return rIndex;
</span><span class="cx">                 if (row-&gt;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())-&gt;hasTagName(sectionTag);
</del><ins>+    return downcast&lt;HTMLElement&gt;(*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&amp; 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&amp; element) { return element.hasTagName(HTMLNames::theadTag) || element.hasTagName(HTMLNames::tfootTag) || element.hasTagName(HTMLNames::tbodyTag); }
+    static bool isHTMLTableSectionElement(const Node&amp; node) { return is&lt;HTMLElement&gt;(node) &amp;&amp; isHTMLTableSectionElement(downcast&lt;HTMLElement&gt;(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-&gt;shadowHost();
</span><del>-    return ancestor &amp;&amp; isHTMLTextFormControlElement(*ancestor) ? toHTMLTextFormControlElement(ancestor) : nullptr;
</del><ins>+    return ancestor &amp;&amp; is&lt;HTMLTextFormControlElement&gt;(*ancestor) ? downcast&lt;HTMLTextFormControlElement&gt;(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&amp;); // Catch unnecessary runtime check of type known at compile time.
-inline bool isHTMLTextFormControlElement(const Element&amp; element) { return element.isTextFormControl(); }
-inline bool isHTMLTextFormControlElement(const Node&amp; node) { return node.isElementNode() &amp;&amp; toElement(node).isTextFormControl(); }
-NODE_TYPE_CASTS(HTMLTextFormControlElement)
</del><ins>+SPECIALIZE_TYPE_TRAITS_BEGIN(HTMLTextFormControlElement)
+    static bool isHTMLTextFormControlElement(const Element&amp; element) { return element.isTextFormControl(); }
+    static bool isHTMLTextFormControlElement(const Node&amp; node) { return node.isElementNode() &amp;&amp; isHTMLTextFormControlElement(toElement(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx"> 
</span><span class="cx"> HTMLTextFormControlElement* enclosingTextFormControl(const Position&amp;);
</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&amp; insertionPoint)
</span><span class="cx"> {
</span><del>-    if (!parentNode() &amp;&amp; isHTMLMediaElement(insertionPoint))
-        toHTMLMediaElement(insertionPoint).didRemoveTextTrack(this);
</del><ins>+    if (!parentNode() &amp;&amp; is&lt;HTMLMediaElement&gt;(insertionPoint))
+        downcast&lt;HTMLMediaElement&gt;(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 &amp;&amp; parent-&gt;isMediaElement())
-        return toHTMLMediaElement(parentNode());
</del><ins>+    if (parent &amp;&amp; is&lt;HTMLMediaElement&gt;(parent))
+        return downcast&lt;HTMLMediaElement&gt;(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&amp;); // Catch unnecessary runtime check of type known at compile time.
</span><span class="cx"> inline bool isLabelableElement(const HTMLElement&amp; element) { return element.isLabelable(); }
</span><del>-inline bool isLabelableElement(const Node&amp; node) { return node.isHTMLElement() &amp;&amp; toHTMLElement(node).isLabelable(); }
</del><ins>+inline bool isLabelableElement(const Node&amp; node) { return is&lt;HTMLElement&gt;(node) &amp;&amp; downcast&lt;HTMLElement&gt;(node).isLabelable(); }
</ins><span class="cx"> 
</span><span class="cx"> template &lt;typename ArgType&gt;
</span><span class="cx"> struct NodeTypeCastTraits&lt;const LabelableElement, ArgType&gt; {
</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()-&gt;firstChild()-&gt;isHTMLElement());
</span><span class="cx">     ASSERT(element().userAgentShadowRoot()-&gt;firstChild()-&gt;firstChild()); // track
</span><span class="cx"> 
</span><del>-    return &amp;toHTMLElement(*element().userAgentShadowRoot()-&gt;firstChild()-&gt;firstChild());
</del><ins>+    return downcast&lt;HTMLElement&gt;(element().userAgentShadowRoot()-&gt;firstChild()-&gt;firstChild());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> SliderThumbElement&amp; 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-&gt;shadowHost();
</span><span class="cx">     if (!mediaNode)
</span><span class="cx">         mediaNode = node;
</span><del>-    if (!mediaNode-&gt;isElementNode() || !toElement(mediaNode)-&gt;isMediaElement())
</del><ins>+    if (!is&lt;HTMLMediaElement&gt;(mediaNode))
</ins><span class="cx">         return nullptr;
</span><del>-    return toHTMLMediaElement(mediaNode);
</del><ins>+    return downcast&lt;HTMLMediaElement&gt;(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-&gt;isMediaControlElement());
</span><del>-    HTMLElement* element = toHTMLElement(node);
-    if (is&lt;HTMLInputElement&gt;(element))
-        return static_cast&lt;MediaControlInputElement*&gt;(element)-&gt;displayType();
-    return static_cast&lt;MediaControlDivElement*&gt;(element)-&gt;displayType();
</del><ins>+    if (is&lt;HTMLInputElement&gt;(node))
+        return static_cast&lt;MediaControlInputElement*&gt;(node)-&gt;displayType();
+    return static_cast&lt;MediaControlDivElement*&gt;(node)-&gt;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&amp; element) { return element.isTextControlInnerTextElement(); }
</span><del>-inline bool isTextControlInnerTextElement(const Node&amp; node) { return node.isHTMLElement() &amp;&amp; isTextControlInnerTextElement(toHTMLElement(node)); }
</del><ins>+inline bool isTextControlInnerTextElement(const Node&amp; node) { return is&lt;HTMLElement&gt;(node) &amp;&amp; isTextControlInnerTextElement(downcast&lt;HTMLElement&gt;(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-&gt;isElementNode()) {
</span><span class="cx">         Element* element = toElement(node);
</span><span class="cx">         value-&gt;setAttributes(buildArrayForElementAttributes(element));
</span><del>-        if (node-&gt;isFrameOwnerElement()) {
-            HTMLFrameOwnerElement* frameOwner = toHTMLFrameOwnerElement(node);
-            Frame* frame = frameOwner-&gt;contentFrame();
</del><ins>+        if (is&lt;HTMLFrameOwnerElement&gt;(node)) {
+            HTMLFrameOwnerElement&amp; frameOwner = downcast&lt;HTMLFrameOwnerElement&gt;(*node);
+            Frame* frame = frameOwner.contentFrame();
</ins><span class="cx">             if (frame)
</span><span class="cx">                 value-&gt;setFrameId(m_pageAgent-&gt;frameId(frame));
</span><del>-            Document* doc = frameOwner-&gt;contentDocument();
-            if (doc)
-                value-&gt;setContentDocument(buildObjectForNode(doc, 0, nodesMap));
</del><ins>+            Document* document = frameOwner.contentDocument();
+            if (document)
+                value-&gt;setContentDocument(buildObjectForNode(document, 0, nodesMap));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (ShadowRoot* root = element-&gt;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-&gt;isFrameOwnerElement()) {
-                HTMLFrameOwnerElement* frameOwner = toHTMLFrameOwnerElement(node);
-                if (Document* document = frameOwner-&gt;contentDocument())
</del><ins>+            if (is&lt;HTMLFrameOwnerElement&gt;(node)) {
+                HTMLFrameOwnerElement&amp; frameOwner = downcast&lt;HTMLFrameOwnerElement&gt;(*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&amp; frameElementBase = toHTMLFrameElementBase(ownerElement);
</del><ins>+    if (is&lt;HTMLFrameElementBase&gt;(ownerElement)) {
+        HTMLFrameElementBase&amp; frameElementBase = downcast&lt;HTMLFrameElementBase&gt;(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 &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameSelection.h&quot;
</span><span class="cx"> #include &quot;FrameTree.h&quot;
</span><ins>+#include &quot;HTMLFrameElementBase.h&quot;
</ins><span class="cx"> #include &quot;HTMLFrameOwnerElement.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;IconDatabase.h&quot;
</span><span class="lines">@@ -516,8 +517,8 @@
</span><span class="cx">     for (size_t i = 0; i &lt; nodesSize; ++i) {
</span><span class="cx">         Node&amp; node = *nodes[i];
</span><span class="cx">         Frame* childFrame;
</span><del>-        if ((is&lt;HTMLFrameElement&gt;(node) || is&lt;HTMLIFrameElement&gt;(node) || is&lt;HTMLObjectElement&gt;(node))
-            &amp;&amp; (childFrame = toHTMLFrameOwnerElement(node).contentFrame())) {
</del><ins>+        if ((is&lt;HTMLFrameElementBase&gt;(node) || is&lt;HTMLObjectElement&gt;(node))
+            &amp;&amp; (childFrame = downcast&lt;HTMLFrameOwnerElement&gt;(node).contentFrame())) {
</ins><span class="cx">             if (frameFilter &amp;&amp; !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&lt;MathMLElement&gt;(node)) {
</ins><span class="cx">         auto&amp; mathmlElement = downcast&lt;MathMLElement&gt;(node);
</span><del>-        return mathmlElement.hasTagName(MathMLNames::mathTag);
</del><ins>+        return is&lt;MathMLMathElement&gt;(mathmlElement);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (node.isSVGElement()) {
</del><ins>+    if (is&lt;SVGElement&gt;(node)) {
</ins><span class="cx">         auto&amp; svgElement = downcast&lt;SVGElement&gt;(node);
</span><del>-        return svgElement.hasTagName(SVGNames::svgTag);
</del><ins>+        return is&lt;SVGSVGElement&gt;(svgElement);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (node.isHTMLElement()) {
</del><ins>+    if (is&lt;HTMLElement&gt;(node)) {
</ins><span class="cx">         // FIXME: add the &lt;data&gt; and &lt;time&gt; tags when they are implemented.
</span><del>-        auto&amp; htmlElement = toHTMLElement(node);
</del><ins>+        auto&amp; htmlElement = downcast&lt;HTMLElement&gt;(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) &amp;&amp; ancestorsOfType&lt;HTMLMapElement&gt;(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&lt;HTMLElement&gt;(node))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    auto&amp; htmlElement = toHTMLElement(node);
</del><ins>+    auto&amp; htmlElement = downcast&lt;HTMLElement&gt;(node);
</ins><span class="cx">     // FIXME add the &lt;dialog&gt; 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() &amp;&amp; (MathMLSelectElement::isMathMLEncoding(value) || MathMLSelectElement::isHTMLEncoding(value))) {
</del><ins>+        if (is&lt;MathMLElement&gt;(child) &amp;&amp; (MathMLSelectElement::isMathMLEncoding(value) || MathMLSelectElement::isHTMLEncoding(value))) {
</ins><span class="cx">             auto&amp; mathmlElement = downcast&lt;MathMLElement&gt;(child);
</span><del>-            return mathmlElement.hasTagName(MathMLNames::mathTag);
</del><ins>+            return is&lt;MathMLMathElement&gt;(mathmlElement);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (child.isSVGElement() &amp;&amp; (MathMLSelectElement::isSVGEncoding(value) || MathMLSelectElement::isHTMLEncoding(value))) {
</del><ins>+        if (is&lt;SVGElement&gt;(child) &amp;&amp; (MathMLSelectElement::isSVGEncoding(value) || MathMLSelectElement::isHTMLEncoding(value))) {
</ins><span class="cx">             auto&amp; svgElement = downcast&lt;SVGElement&gt;(child);
</span><del>-            return svgElement.hasTagName(SVGNames::svgTag);
</del><ins>+            return is&lt;SVGSVGElement&gt;(svgElement);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (child.isHTMLElement() &amp;&amp; MathMLSelectElement::isHTMLEncoding(value)) {
-            auto&amp; htmlElement = toHTMLElement(child);
-            return htmlElement.hasTagName(HTMLNames::htmlTag) || (isFlowContent(htmlElement) &amp;&amp; StyledElement::childShouldCreateRenderer(child));
</del><ins>+        if (is&lt;HTMLElement&gt;(child) &amp;&amp; MathMLSelectElement::isHTMLEncoding(value)) {
+            auto&amp; htmlElement = downcast&lt;HTMLElement&gt;(child);
+            return is&lt;HTMLHtmlElement&gt;(htmlElement) || (isFlowContent(htmlElement) &amp;&amp; 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&lt;MathMLElement&gt;(child);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MathMLElement::attributeChanged(const QualifiedName&amp; name, const AtomicString&amp; oldValue, const AtomicString&amp; 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() &amp;&amp; asFileInput(result.innerNonSharedNode()))
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    if (result.innerNonSharedNode()-&gt;isPluginElement()) {
-        if (!toHTMLPlugInElement(result.innerNonSharedNode())-&gt;canProcessDrag() &amp;&amp; !result.innerNonSharedNode()-&gt;hasEditableStyle())
</del><ins>+    if (is&lt;HTMLPlugInElement&gt;(result.innerNonSharedNode())) {
+        if (!downcast&lt;HTMLPlugInElement&gt;(result.innerNonSharedNode())-&gt;canProcessDrag() &amp;&amp; !result.innerNonSharedNode()-&gt;hasEditableStyle())
</ins><span class="cx">             return false;
</span><span class="cx">     } else if (!result.innerNonSharedNode()-&gt;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*&amp; frame)
</span><span class="cx"> {
</span><del>-    if (!target)
</del><ins>+    if (!target || !is&lt;HTMLFrameElementBase&gt;(target))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (!target-&gt;hasTagName(frameTag) &amp;&amp; !target-&gt;hasTagName(iframeTag))
-        return false;
-
-    frame = toHTMLFrameElementBase(target)-&gt;contentFrame();
-
</del><ins>+    frame = downcast&lt;HTMLFrameElementBase&gt;(*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 &quot;HTMLImageElement.h&quot;
</span><span class="cx"> #include &quot;HTMLInputElement.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><ins>+#include &quot;HTMLPlugInElement.h&quot;
</ins><span class="cx"> #include &quot;HTMLTextAreaElement.h&quot;
</span><span class="cx"> #include &quot;HitTestResult.h&quot;
</span><span class="cx"> #include &quot;KeyboardEvent.h&quot;
</span><span class="lines">@@ -134,7 +135,7 @@
</span><span class="cx"> 
</span><span class="cx"> static inline bool hasCustomFocusLogic(Element&amp; element)
</span><span class="cx"> {
</span><del>-    return element.isHTMLElement() &amp;&amp; toHTMLElement(element).hasCustomFocusLogic();
</del><ins>+    return is&lt;HTMLElement&gt;(element) &amp;&amp; downcast&lt;HTMLElement&gt;(element).hasCustomFocusLogic();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline bool isNonFocusableShadowHost(Element&amp; element, KeyboardEvent&amp; 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 &amp;&amp; element-&gt;isFrameOwnerElement()) {
-        HTMLFrameOwnerElement&amp; owner = toHTMLFrameOwnerElement(*element);
</del><ins>+    while (element &amp;&amp; is&lt;HTMLFrameOwnerElement&gt;(element)) {
+        HTMLFrameOwnerElement&amp; owner = downcast&lt;HTMLFrameOwnerElement&gt;(*element);
</ins><span class="cx">         if (!owner.contentFrame())
</span><span class="cx">             break;
</span><span class="cx">         Element* foundElement = findFocusableElement(direction, FocusNavigationScope::focusNavigationScopeOwnedByIFrame(&amp;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-&gt;isFrameOwnerElement() &amp;&amp; (!element-&gt;isPluginElement() || !element-&gt;isKeyboardFocusable(event))) {
</del><ins>+    if (is&lt;HTMLFrameOwnerElement&gt;(*element) &amp;&amp; (!is&lt;HTMLPlugInElement&gt;(*element) || !element-&gt;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&amp; owner = toHTMLFrameOwnerElement(*element);
</del><ins>+        HTMLFrameOwnerElement&amp; owner = downcast&lt;HTMLFrameOwnerElement&gt;(*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 &quot;HTMLFrameElementBase.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;HTMLTableCellElement.h&quot;
</span><ins>+#include &quot;HTMLTableRowElement.h&quot;
</ins><span class="cx"> #include &quot;HitTestResult.h&quot;
</span><span class="cx"> #include &quot;ImageBuffer.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><span class="lines">@@ -392,9 +393,9 @@
</span><span class="cx">         if (is&lt;HTMLFormElement&gt;(n) || is&lt;HTMLFormControlElement&gt;(n))
</span><span class="cx">             break;
</span><span class="cx"> 
</span><del>-        if (n-&gt;hasTagName(tdTag) &amp;&amp; !startingTableCell) {
-            startingTableCell = toHTMLTableCellElement(n);
-        } else if (n-&gt;hasTagName(trTag) &amp;&amp; startingTableCell) {
</del><ins>+        if (n-&gt;hasTagName(tdTag) &amp;&amp; !startingTableCell)
+            startingTableCell = downcast&lt;HTMLTableCellElement&gt;(n);
+        else if (is&lt;HTMLTableRowElement&gt;(n) &amp;&amp; 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 &amp;&amp; (ownerElement-&gt;hasTagName(frameTag) || ownerElement-&gt;hasTagName(iframeTag))) {
-        HTMLFrameElementBase* frameElt = toHTMLFrameElementBase(ownerElement);
-        if (frameElt-&gt;scrollingMode() == ScrollbarAlwaysOff)
</del><ins>+    if (ownerElement &amp;&amp; is&lt;HTMLFrameElementBase&gt;(ownerElement)) {
+        HTMLFrameElementBase&amp; frameElement = downcast&lt;HTMLFrameElementBase&gt;(*ownerElement);
+        if (frameElement.scrollingMode() == ScrollbarAlwaysOff)
</ins><span class="cx">             setCanHaveScrollbars(false);
</span><del>-        LayoutUnit marginWidth = frameElt-&gt;marginWidth();
-        LayoutUnit marginHeight = frameElt-&gt;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&amp; element = embeddedObject.frameOwnerElement();
</span><span class="cx">     if (is&lt;HTMLObjectElement&gt;(element) || is&lt;HTMLEmbedElement&gt;(element)) {
</span><span class="cx">         // Tell the DOM element that it needs a widget update.
</span><del>-        HTMLPlugInImageElement&amp; pluginElement = toHTMLPlugInImageElement(element);
</del><ins>+        HTMLPlugInImageElement&amp; pluginElement = downcast&lt;HTMLPlugInImageElement&gt;(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&lt;HTMLObjectElement&gt;(element) || is&lt;HTMLEmbedElement&gt;(element)) {
</span><del>-            HTMLPlugInImageElement&amp; pluginElement = toHTMLPlugInImageElement(element);
</del><ins>+            HTMLPlugInImageElement&amp; pluginElement = downcast&lt;HTMLPlugInImageElement&gt;(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&lt;HTMLObjectElement&gt;(element) || is&lt;HTMLEmbedElement&gt;(element) || is&lt;HTMLAppletElement&gt;(element)) {
-        HTMLPlugInImageElement&amp; pluginElement = toHTMLPlugInImageElement(element);
</del><ins>+    if (is&lt;HTMLPlugInImageElement&gt;(element)) {
+        HTMLPlugInImageElement&amp; pluginElement = downcast&lt;HTMLPlugInImageElement&gt;(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&amp; node)
</span><span class="cx"> {
</span><del>-    if (!node.isHTMLElement())
</del><ins>+    if (!is&lt;HTMLElement&gt;(node))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    const HTMLElement&amp; element = toHTMLElement(node);
</del><ins>+    const HTMLElement&amp; element = downcast&lt;HTMLElement&gt;(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&amp; out, const Element&amp; element, Namespaces* namespaces)
</span><span class="cx"> {
</span><del>-    if (!element.isFrameOwnerElement())
</del><ins>+    if (!is&lt;HTMLFrameOwnerElement&gt;(element))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    const HTMLFrameOwnerElement&amp; frameOwner = toHTMLFrameOwnerElement(element);
</del><ins>+    const HTMLFrameOwnerElement&amp; frameOwner = downcast&lt;HTMLFrameOwnerElement&gt;(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&amp; candidate)
</span><span class="cx"> {
</span><del>-    return candidate.isFrameOwnerElement() ? toHTMLFrameOwnerElement(candidate.visibleNode) : nullptr;
-};
</del><ins>+    return candidate.isFrameOwnerElement() ? downcast&lt;HTMLFrameOwnerElement&gt;(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&lt;HTMLEmbedElement&gt;(*m_innerNonSharedNode) &amp;&amp; !is&lt;HTMLObjectElement&gt;(*m_innerNonSharedNode))
</span><span class="cx">         return URL();
</span><span class="cx"> 
</span><del>-    HTMLPlugInImageElement&amp; element = toHTMLPlugInImageElement(*m_innerNonSharedNode);
</del><ins>+    HTMLPlugInImageElement&amp; element = downcast&lt;HTMLPlugInImageElement&gt;(*m_innerNonSharedNode);
</ins><span class="cx">     URL url = m_innerNonSharedNode-&gt;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-&gt;renderer() &amp;&amp; m_innerNonSharedNode-&gt;renderer()-&gt;isMedia()))
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><del>-    if (is&lt;HTMLVideoElement&gt;(m_innerNonSharedNode.get()) || is&lt;HTMLAudioElement&gt;(m_innerNonSharedNode.get()))
-        return toHTMLMediaElement(m_innerNonSharedNode.get());
-    return 0;
</del><ins>+    if (is&lt;HTMLMediaElement&gt;(*m_innerNonSharedNode))
+        return downcast&lt;HTMLMediaElement&gt;(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-&gt;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-&gt;element() &amp;&amp; renderer-&gt;element()-&gt;isHTMLElement() &amp;&amp; !renderer-&gt;element()-&gt;isInShadowTree()) {
-            const HTMLElement&amp; element = toHTMLElement(*renderer-&gt;element());
</del><ins>+        if (renderer-&gt;element() &amp;&amp; is&lt;HTMLElement&gt;(renderer-&gt;element()) &amp;&amp; !renderer-&gt;element()-&gt;isInShadowTree()) {
+            const HTMLElement&amp; element = downcast&lt;HTMLElement&gt;(*renderer-&gt;element());
</ins><span class="cx">             return !is&lt;HTMLInputElement&gt;(element) &amp;&amp; !is&lt;HTMLTextAreaElement&gt;(element);
</span><span class="cx">         }
</span><span class="cx">         renderer = renderer-&gt;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&amp; paintInfo, const LayoutPoint&amp; paintOffset)
</span><span class="cx"> {
</span><del>-    if (!frameOwnerElement().isPluginElement())
</del><ins>+    if (!is&lt;HTMLPlugInElement&gt;(frameOwnerElement()))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    HTMLPlugInElement&amp; plugInElement = toHTMLPlugInElement(frameOwnerElement());
</del><ins>+    HTMLPlugInElement&amp; plugInElement = downcast&lt;HTMLPlugInElement&gt;(frameOwnerElement());
</ins><span class="cx"> 
</span><span class="cx">     if (plugInElement.displayState() &gt; 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&lt;HTMLPlugInImageElement&gt;(plugInElement))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (Image* snapshot = toHTMLPlugInImageElement(plugInElement).snapshotImage())
</del><ins>+    if (Image* snapshot = downcast&lt;HTMLPlugInImageElement&gt;(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 &amp;&amp; newSize.width() &gt;= oldSize.width() &amp;&amp; newSize.height() &gt;= oldSize.height()) {
</span><span class="cx">         HTMLFrameOwnerElement&amp; element = frameOwnerElement();
</span><del>-        if (element.isPluginElement() &amp;&amp; toHTMLPlugInElement(element).isPlugInImageElement()) {
-            HTMLPlugInImageElement&amp; plugInImageElement = toHTMLPlugInImageElement(element);
</del><ins>+        if (is&lt;HTMLPlugInImageElement&gt;(element)) {
+            HTMLPlugInImageElement&amp; plugInImageElement = downcast&lt;HTMLPlugInImageElement&gt;(element);
</ins><span class="cx">             if (plugInImageElement.displayState() &gt; HTMLPlugInElement::DisplayingSnapshot &amp;&amp; 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&amp; element = toHTMLPlugInElement(frameOwnerElement());
</del><ins>+    HTMLPlugInElement&amp; element = downcast&lt;HTMLPlugInElement&gt;(frameOwnerElement());
</ins><span class="cx">     if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; toMouseEvent(event)-&gt;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 &amp;&amp; ownerElement-&gt;renderer()) {
</span><span class="cx">             HTMLFrameElementBase* frameElementBase = nullptr;
</span><span class="cx"> 
</span><del>-            if (ownerElement-&gt;hasTagName(frameTag) || ownerElement-&gt;hasTagName(iframeTag))
-                frameElementBase = toHTMLFrameElementBase(ownerElement);
</del><ins>+            if (is&lt;HTMLFrameElementBase&gt;(ownerElement))
+                frameElementBase = downcast&lt;HTMLFrameElementBase&gt;(ownerElement);
</ins><span class="cx"> 
</span><span class="cx">             if (frameElementAndViewPermitScroll(frameElementBase, &amp;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()-&gt;renderBox() || !enclosingElement()-&gt;isHTMLElement())
</del><ins>+    if (!enclosingElement() || !enclosingElement()-&gt;renderBox() || !is&lt;HTMLElement&gt;(enclosingElement()))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     RenderBox* box = enclosingElement()-&gt;renderBox();
</span><del>-    updateSnapOffsetsForScrollableArea(*this, *toHTMLElement(enclosingElement()), *box, box-&gt;style());
</del><ins>+    updateSnapOffsetsForScrollableArea(*this, *downcast&lt;HTMLElement&gt;(enclosingElement()), *box, box-&gt;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&lt;HTMLMediaElement&gt;(renderer().element());
</ins><span class="cx">         m_graphicsLayer-&gt;setContentsToPlatformLayer(mediaElement-&gt;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-&gt;node());
</span><del>-    if (!element || !element-&gt;isPluginElement())
</del><ins>+    if (!element || !is&lt;HTMLPlugInElement&gt;(element))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return toHTMLPlugInElement(element)-&gt;isRestartedPlugin();
</del><ins>+    return downcast&lt;HTMLPlugInElement&gt;(*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&amp;, PassRef&lt;RenderStyle&gt;, const IntSize&amp; intrinsicSize);
</span><span class="cx">     virtual ~RenderMedia();
</span><span class="cx"> 
</span><del>-    HTMLMediaElement&amp; mediaElement() const { return toHTMLMediaElement(nodeForNonAnonymous()); }
</del><ins>+    HTMLMediaElement&amp; mediaElement() const { return downcast&lt;HTMLMediaElement&gt;(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 &amp;&amp; (!curr-&gt;element() || (!curr-&gt;isPositioned() &amp;&amp; !curr-&gt;isBody())) &amp;&amp; !curr-&gt;isRenderNamedFlowThread()) {
</span><span class="cx">         Element* element = curr-&gt;element();
</span><del>-        if (!skipTables &amp;&amp; element &amp;&amp; (is&lt;HTMLTableElement&gt;(*element) || isHTMLTableCellElement(*element)))
</del><ins>+        if (!skipTables &amp;&amp; element &amp;&amp; (is&lt;HTMLTableElement&gt;(*element) || is&lt;HTMLTableCellElement&gt;(*element)))
</ins><span class="cx">             break;
</span><span class="cx">  
</span><span class="cx">         float newZoom = curr-&gt;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&amp; RenderSnapshottedPlugIn::plugInImageElement() const
</span><span class="cx"> {
</span><del>-    return toHTMLPlugInImageElement(RenderEmbeddedObject::frameOwnerElement());
</del><ins>+    return downcast&lt;HTMLPlugInImageElement&gt;(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()-&gt;hasTagName(tdTag) || element()-&gt;hasTagName(thTag))
-        return std::min&lt;unsigned&gt;(toHTMLTableCellElement(element())-&gt;colSpan(), maxColumnIndex);
</del><ins>+    if (is&lt;HTMLTableCellElement&gt;(element()))
+        return std::min&lt;unsigned&gt;(downcast&lt;HTMLTableCellElement&gt;(*element()).colSpan(), maxColumnIndex);
</ins><span class="cx"> #if ENABLE(MATHML)
</span><span class="cx">     if (element()-&gt;hasTagName(MathMLNames::mtdTag))
</span><span class="cx">         return std::min&lt;unsigned&gt;(downcast&lt;MathMLElement&gt;(*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()-&gt;hasTagName(tdTag) || element()-&gt;hasTagName(thTag))
-        return std::min&lt;unsigned&gt;(toHTMLTableCellElement(element())-&gt;rowSpan(), maxRowIndex);
</del><ins>+    if (is&lt;HTMLTableCellElement&gt;(element()))
+        return std::min&lt;unsigned&gt;(downcast&lt;HTMLTableCellElement&gt;(*element()).rowSpan(), maxRowIndex);
</ins><span class="cx"> #if ENABLE(MATHML)
</span><span class="cx">     if (element()-&gt;hasTagName(MathMLNames::mtdTag))
</span><span class="cx">         return std::min&lt;unsigned&gt;(downcast&lt;MathMLElement&gt;(*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&amp; RenderTextControl::textFormControlElement() const
</span><span class="cx"> {
</span><del>-    return toHTMLTextFormControlElement(nodeForNonAnonymous());
</del><ins>+    return downcast&lt;HTMLTextFormControlElement&gt;(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&amp; o)
</span><span class="cx"> {
</span><span class="cx">     Node* node = o.node();
</span><del>-    Node* mediaNode = node ? node-&gt;shadowHost() : 0;
</del><ins>+    Node* mediaNode = node ? node-&gt;shadowHost() : nullptr;
</ins><span class="cx">     if (!mediaNode)
</span><span class="cx">         mediaNode = node;
</span><del>-    if (!mediaNode || !mediaNode-&gt;isElementNode() || !toElement(mediaNode)-&gt;isMediaElement())
-        return 0;
</del><ins>+    if (!mediaNode || !is&lt;HTMLMediaElement&gt;(mediaNode))
+        return nullptr;
</ins><span class="cx"> 
</span><del>-    return toHTMLMediaElement(mediaNode);
</del><ins>+    return downcast&lt;HTMLMediaElement&gt;(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-&gt;search();
</span><span class="cx"> 
</span><del>-    if (!input-&gt;isDisabledFormControl() &amp;&amp; (input-&gt;isTextFormControl() &amp;&amp; !toHTMLTextFormControlElement(*input).isReadOnly()))
</del><ins>+    if (!input-&gt;isDisabledFormControl() &amp;&amp; (is&lt;HTMLTextFormControlElement&gt;(input) &amp;&amp; !downcast&lt;HTMLTextFormControlElement&gt;(*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()-&gt;isHTMLElement())
</del><ins>+    if (!is&lt;HTMLElement&gt;(renderBlock.element()))
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    HTMLElement* plugInOverlay = toHTMLElement(renderBlock.element());
-    Element* parent = plugInOverlay-&gt;parentOrShadowHostElement();
-    while (parent &amp;&amp; !parent-&gt;isPluginElement())
</del><ins>+    HTMLElement&amp; plugInOverlay = downcast&lt;HTMLElement&gt;(*renderBlock.element());
+    Element* parent = plugInOverlay.parentOrShadowHostElement();
+    while (parent &amp;&amp; !is&lt;HTMLPlugInElement&gt;(parent))
</ins><span class="cx">         parent = parent-&gt;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-&gt;isPlugInImageElement())
</del><ins>+    HTMLPlugInElement&amp; plugInElement = downcast&lt;HTMLPlugInElement&gt;(*parent);
+    if (!plugInElement.isPlugInImageElement())
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    HTMLPlugInImageElement&amp; plugInImageElement = toHTMLPlugInImageElement(*plugInElement);
</del><ins>+    HTMLPlugInImageElement&amp; plugInImageElement = downcast&lt;HTMLPlugInImageElement&gt;(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 &quot;FrameView.h&quot;
</span><span class="cx"> #include &quot;HTMLElement.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><ins>+#include &quot;HTMLSpanElement.h&quot;
</ins><span class="cx"> #include &quot;InlineTextBox.h&quot;
</span><span class="cx"> #include &quot;PrintContext.h&quot;
</span><span class="cx"> #include &quot;PseudoElement.h&quot;
</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-&gt;isHTMLElement() || !node-&gt;hasTagName(spanTag))
</del><ins>+    if (!node || !is&lt;HTMLSpanElement&gt;(node))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    const HTMLElement* elem = toHTMLElement(node);
-    if (elem-&gt;getAttribute(classAttr) != &quot;Apple-style-span&quot;)
</del><ins>+    const HTMLElement&amp; element = downcast&lt;HTMLSpanElement&gt;(*node);
+    if (element.getAttribute(classAttr) != &quot;Apple-style-span&quot;)
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     if (!node-&gt;hasChildNodes())
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    const StyleProperties* inlineStyleDecl = elem-&gt;inlineStyle();
</del><ins>+    const StyleProperties* inlineStyleDecl = element.inlineStyle();
</ins><span class="cx">     return (!inlineStyleDecl || inlineStyleDecl-&gt;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&amp; frameOwnerElement() const { return toHTMLFrameOwnerElement(nodeForNonAnonymous()); }
</del><ins>+    HTMLFrameOwnerElement&amp; frameOwnerElement() const { return downcast&lt;HTMLFrameOwnerElement&gt;(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&lt;Widget&gt;);
</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 &amp;&amp; isHTMLTextFormControlElement(*element)) {
-        const HTMLTextFormControlElement&amp; textFormControlElement = toHTMLTextFormControlElement(*element);
</del><ins>+    if (element &amp;&amp; is&lt;HTMLTextFormControlElement&gt;(*element)) {
+        const HTMLTextFormControlElement&amp; textFormControlElement = downcast&lt;HTMLTextFormControlElement&gt;(*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&lt;HTMLMediaElement&gt;(node);
</ins><span class="cx">     element-&gt;player()-&gt;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&lt;HTMLPlugInElement&gt;(element);
</ins><span class="cx">     return pluginElement-&gt;displayState() &lt;= 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&lt;HTMLElement&gt;(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) &amp;&amp; (namespaceURI.isNull() || namespaceURI == node.namespaceURI());
</del><ins>+                    return equalIgnoringCase(downcast&lt;HTMLElement&gt;(node).localName(), name) &amp;&amp; (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) &amp;&amp; namespaceURI == node.namespaceURI() &amp;&amp; !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  &lt;cdumez@apple.com&gt;
+
+        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&lt;&gt;() / downcast&lt;&gt;() where appropriate.
+
+        * DOMHTMLClasses.cpp:
+        (DOMHTMLElement::idName):
+        (DOMHTMLElement::innerText):
+        (DOMHTMLElement::setInnerText):
+
</ins><span class="cx"> 2014-09-25  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</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 &amp;&amp; m_element-&gt;isHTMLElement());
-    String idString = toHTMLElement(m_element)-&gt;getAttribute(idAttr);
</del><ins>+    ASSERT(m_element &amp;&amp; is&lt;HTMLElement&gt;(m_element));
+    String idString = downcast&lt;HTMLElement&gt;(m_element)-&gt;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 &amp;&amp; m_element-&gt;isHTMLElement());
-    WTF::String innerTextString = toHTMLElement(m_element)-&gt;innerText();
</del><ins>+    ASSERT(m_element &amp;&amp; is&lt;HTMLElement&gt;(m_element));
+    WTF::String innerTextString = downcast&lt;HTMLElement&gt;(m_element)-&gt;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 &amp;&amp; m_element-&gt;isHTMLElement());
-    HTMLElement* htmlEle = toHTMLElement(m_element);
</del><ins>+    ASSERT(m_element &amp;&amp; is&lt;HTMLElement&gt;(m_element));
+    HTMLElement* htmlEle = downcast&lt;HTMLElement&gt;(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-&gt;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  &lt;cdumez@apple.com&gt;
+
+        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&lt;&gt;() / downcast&lt;&gt;() 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  &lt;andersca@apple.com&gt;
</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())-&gt;value();
</del><ins>+    return downcast&lt;HTMLTextFormControlElement&gt;(element())-&gt;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-&gt;plugInIntersectsSearchRect(*plugInImageElement);
</del><ins>+    HTMLPlugInImageElement&amp; plugInImageElement = downcast&lt;HTMLPlugInImageElement&gt;(*m_pluginElement);
+    m_didPlugInStartOffScreen = !m_webPage-&gt;plugInIntersectsSearchRect(plugInImageElement);
</ins><span class="cx"> #endif
</span><span class="cx">     m_plugin-&gt;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-&gt;plugInIntersectsSearchRect(*plugInImageElement);
</del><ins>+    HTMLPlugInImageElement&amp; plugInImageElement = downcast&lt;HTMLPlugInImageElement&gt;(*m_pluginElement);
+    bool isPlugInOnScreen = m_webPage-&gt;plugInIntersectsSearchRect(plugInImageElement);
</ins><span class="cx">     bool plugInCameOnScreen = isPlugInOnScreen &amp;&amp; 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()-&gt;settings().maximumPlugInSnapshotAttempts() &amp;&amp; !isPlugInOnScreen &amp;&amp; !snapshotFound;
</span><del>-    if (m_webPage-&gt;plugInIsPrimarySize(*plugInImageElement, candidateArea)
</del><ins>+    if (m_webPage-&gt;plugInIsPrimarySize(plugInImageElement, candidateArea)
</ins><span class="cx">         &amp;&amp; (noSnapshotFoundAfterMaxRetries || plugInCameOnScreen))
</span><span class="cx">         m_pluginElement-&gt;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-&gt;document().page()-&gt;mainFrame().document()-&gt;baseURL().host();
-    String pluginOrigin = plugInImageElement-&gt;loadedUrl().host();
-    String mimeType = plugInImageElement-&gt;loadedMimeType();
</del><ins>+    HTMLPlugInImageElement&amp; plugInImageElement = downcast&lt;HTMLPlugInImageElement&gt;(*m_pluginElement);
+    String pageOrigin = plugInImageElement.document().page()-&gt;mainFrame().document()-&gt;baseURL().host();
+    String pluginOrigin = plugInImageElement.loadedUrl().host();
+    String mimeType = plugInImageElement.loadedMimeType();
</ins><span class="cx"> 
</span><del>-    WebProcess::shared().plugInDidReceiveUserInteraction(pageOrigin, pluginOrigin, mimeType, plugInImageElement-&gt;document().page()-&gt;sessionID());
</del><ins>+    WebProcess::shared().plugInDidReceiveUserInteraction(pageOrigin, pluginOrigin, mimeType, plugInImageElement.document().page()-&gt;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-&gt;mainFrame().loader().documentLoader()-&gt;responseURL().string();
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
</span><del>-    HTMLPlugInImageElement&amp; pluginImageElement = toHTMLPlugInImageElement(*pluginElement);
</del><ins>+    HTMLPlugInImageElement&amp; pluginImageElement = downcast&lt;HTMLPlugInImageElement&gt;(*pluginElement);
</ins><span class="cx">     unsigned pluginArea = 0;
</span><span class="cx">     PluginProcessType processType = pluginElement-&gt;displayState() == HTMLPlugInElement::WaitingForSnapshot &amp;&amp; !(plugInIsPrimarySize(pluginImageElement, pluginArea) &amp;&amp; !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-&gt;isHTMLElement())
</del><ins>+    if (!m_interactionNode || !is&lt;HTMLElement&gt;(m_interactionNode))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    HTMLElement* element = toHTMLElement(m_interactionNode.get());
</del><ins>+    HTMLElement* element = downcast&lt;HTMLElement&gt;(m_interactionNode.get());
</ins><span class="cx">     if (!element-&gt;renderer())
</span><span class="cx">         return;
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>