Commit 48ac3c40 authored by darin@apple.com's avatar darin@apple.com

WebCore:

2008-06-14  Darin Adler  <darin@apple.com>

        Reviewed by Sam.

        - more work on https://bugs.webkit.org/show_bug.cgi?id=17257
          start ref counts at 1 instead of 0 for speed

        * WebCore.base.exp:
        * bindings/js/JSSVGMatrixCustom.cpp:
        (WebCore::JSSVGMatrix::multiply):
        (WebCore::JSSVGMatrix::inverse):
        (WebCore::JSSVGMatrix::translate):
        (WebCore::JSSVGMatrix::scale):
        (WebCore::JSSVGMatrix::scaleNonUniform):
        (WebCore::JSSVGMatrix::rotate):
        (WebCore::JSSVGMatrix::rotateFromVector):
        (WebCore::JSSVGMatrix::flipX):
        (WebCore::JSSVGMatrix::flipY):
        (WebCore::JSSVGMatrix::skewX):
        (WebCore::JSSVGMatrix::skewY):
        * bindings/js/JSSVGPODTypeWrapper.h:
        (WebCore::JSSVGPODTypeWrapperCreatorReadWrite::create):
        (WebCore::JSSVGPODTypeWrapperCreatorReadWrite::JSSVGPODTypeWrapperCreatorReadWrite):
        (WebCore::JSSVGPODTypeWrapperCreatorReadOnly::create):
        (WebCore::JSSVGPODTypeWrapperCreatorReadOnly::JSSVGPODTypeWrapperCreatorReadOnly):
        (WebCore::JSSVGPODTypeWrapperCreatorForList::create):
        (WebCore::JSSVGPODTypeWrapperCreatorForList::JSSVGPODTypeWrapperCreatorForList):
        (WebCore::JSSVGPODTypeWrapperCache::lookupOrCreateWrapper):
        (WebCore::JSSVGPODTypeWrapperCache::forgetWrapper):
        * bindings/js/JSSVGPointListCustom.cpp:
        (WebCore::finishGetter):
        (WebCore::finishSetter):
        (WebCore::finishSetterReadOnlyResult):
        (WebCore::JSSVGPointList::clear):
        (WebCore::JSSVGPointList::initialize):
        (WebCore::JSSVGPointList::getItem):
        (WebCore::JSSVGPointList::insertItemBefore):
        (WebCore::JSSVGPointList::replaceItem):
        (WebCore::JSSVGPointList::removeItem):
        (WebCore::JSSVGPointList::appendItem):
        * bindings/js/JSSVGTransformListCustom.cpp:
        (WebCore::finishGetter):
        (WebCore::finishSetter):
        (WebCore::finishSetterReadOnlyResult):
        (WebCore::JSSVGTransformList::clear):
        (WebCore::JSSVGTransformList::initialize):
        (WebCore::JSSVGTransformList::getItem):
        (WebCore::JSSVGTransformList::insertItemBefore):
        (WebCore::JSSVGTransformList::replaceItem):
        (WebCore::JSSVGTransformList::removeItem):
        (WebCore::JSSVGTransformList::appendItem):
        * bindings/scripts/CodeGeneratorJS.pm:
        * css/CSSFontSelector.cpp:
        (WebCore::CSSFontSelector::CSSFontSelector):
        (WebCore::CSSFontSelector::~CSSFontSelector):
        * css/CSSFontSelector.h:
        (WebCore::CSSFontSelector::create):
        * css/CSSStyleSelector.cpp:
        (WebCore::CSSStyleSelector::CSSStyleSelector):
        (WebCore::CSSStyleSelector::applyProperty):
        * dom/Attribute.cpp:
        (WebCore::Attribute::clone):
        * dom/Attribute.h:
        (WebCore::Attribute::create):
        (WebCore::Attribute::Attribute):
        * dom/BeforeTextInsertedEvent.h:
        (WebCore::BeforeTextInsertedEvent::create):
        * dom/BeforeUnloadEvent.h:
        (WebCore::BeforeUnloadEvent::create):
        * dom/CharacterData.cpp:
        (WebCore::CharacterData::dispatchModifiedEvent):
        * dom/ClipboardEvent.cpp:
        (WebCore::ClipboardEvent::ClipboardEvent):
        * dom/ClipboardEvent.h:
        (WebCore::ClipboardEvent::create):
        * dom/ContainerNode.cpp:
        (WebCore::ContainerNode::removeChild):
        (WebCore::dispatchChildInsertionEvents):
        (WebCore::dispatchChildRemovalEvents):
        * dom/Document.cpp:
        (WebCore::Document::createTextNode):
        (WebCore::Document::createComment):
        (WebCore::Document::createCDATASection):
        (WebCore::Document::createProcessingInstruction):
        (WebCore::Document::createEntityReference):
        (WebCore::Document::createEditingTextNode):
        (WebCore::Document::createEvent):
        (WebCore::Document::createAttributeNS):
        (WebCore::Document::finishedParsing):
        * dom/Document.h:
        * dom/Element.cpp:
        (WebCore::Element::createAttribute):
        * dom/Element.h:
        * dom/Event.cpp:
        (WebCore::Event::Event):
        * dom/Event.h:
        (WebCore::Event::create):
        * dom/EventTargetNode.cpp:
        (WebCore::EventTargetNode::dispatchSubtreeModifiedEvent):
        (WebCore::EventTargetNode::dispatchWindowEvent):
        (WebCore::EventTargetNode::dispatchUIEvent):
        (WebCore::EventTargetNode::dispatchKeyEvent):
        (WebCore::EventTargetNode::dispatchMouseEvent):
        (WebCore::EventTargetNode::dispatchWheelEvent):
        (WebCore::EventTargetNode::dispatchHTMLEvent):
        (WebCore::EventTargetNode::dispatchProgressEvent):
        (WebCore::EventTargetNode::dispatchStorageEvent):
        * dom/KeyboardEvent.h:
        (WebCore::KeyboardEvent::create):
        * dom/MappedAttribute.cpp:
        (WebCore::MappedAttribute::clone):
        * dom/MappedAttribute.h:
        (WebCore::MappedAttribute::create):
        (WebCore::MappedAttribute::setDecl):
        (WebCore::MappedAttribute::MappedAttribute):
        * dom/MessageEvent.cpp:
        (WebCore::MessageEvent::MessageEvent):
        * dom/MessageEvent.h:
        (WebCore::MessageEvent::create):
        * dom/MouseEvent.cpp:
        (WebCore::MouseEvent::MouseEvent):
        (WebCore::MouseEvent::initMouseEvent):
        * dom/MouseEvent.h:
        (WebCore::MouseEvent::create):
        * dom/MouseRelatedEvent.cpp:
        (WebCore::MouseRelatedEvent::MouseRelatedEvent):
        * dom/MouseRelatedEvent.h:
        * dom/MutationEvent.cpp:
        (WebCore::MutationEvent::MutationEvent):
        (WebCore::MutationEvent::initMutationEvent):
        * dom/MutationEvent.h:
        (WebCore::MutationEvent::create):
        * dom/OverflowEvent.h:
        (WebCore::OverflowEvent::create):
        * dom/ProgressEvent.h:
        (WebCore::ProgressEvent::create):
        * dom/StyledElement.cpp:
        (WebCore::StyledElement::getMappedAttributeDecl):
        (WebCore::StyledElement::setMappedAttributeDecl):
        (WebCore::StyledElement::removeMappedAttributeDecl):
        (WebCore::StyledElement::createAttribute):
        * dom/StyledElement.h:
        * dom/TextEvent.cpp:
        (WebCore::TextEvent::TextEvent):
        (WebCore::TextEvent::initTextEvent):
        * dom/TextEvent.h:
        (WebCore::TextEvent::create):
        * dom/UIEvent.cpp:
        (WebCore::UIEvent::UIEvent):
        (WebCore::UIEvent::initUIEvent):
        * dom/UIEvent.h:
        (WebCore::UIEvent::create):
        * dom/UIEventWithKeyState.h:
        (WebCore::UIEventWithKeyState::ctrlKey):
        (WebCore::UIEventWithKeyState::shiftKey):
        (WebCore::UIEventWithKeyState::altKey):
        (WebCore::UIEventWithKeyState::metaKey):
        (WebCore::UIEventWithKeyState::UIEventWithKeyState):
        * dom/WheelEvent.cpp:
        (WebCore::WheelEvent::WheelEvent):
        (WebCore::WheelEvent::initWheelEvent):
        * dom/WheelEvent.h:
        (WebCore::WheelEvent::create):
        * editing/AppendNodeCommand.cpp:
        (WebCore::AppendNodeCommand::AppendNodeCommand):
        * editing/AppendNodeCommand.h:
        (WebCore::AppendNodeCommand::create):
        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::applyBlockStyle):
        * editing/ApplyStyleCommand.h:
        (WebCore::ApplyStyleCommand::create):
        * editing/BreakBlockquoteCommand.h:
        (WebCore::BreakBlockquoteCommand::create):
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::applyStyle):
        (WebCore::CompositeEditCommand::applyStyledElement):
        (WebCore::CompositeEditCommand::removeStyledElement):
        (WebCore::CompositeEditCommand::insertParagraphSeparator):
        (WebCore::CompositeEditCommand::insertLineBreak):
        (WebCore::CompositeEditCommand::insertNodeBefore):
        (WebCore::CompositeEditCommand::appendNode):
        (WebCore::CompositeEditCommand::removeNode):
        (WebCore::CompositeEditCommand::removeNodePreservingChildren):
        (WebCore::CompositeEditCommand::splitTextNode):
        (WebCore::CompositeEditCommand::splitElement):
        (WebCore::CompositeEditCommand::mergeIdenticalElements):
        (WebCore::CompositeEditCommand::wrapContentsInDummySpan):
        (WebCore::CompositeEditCommand::splitTextNodeContainingElement):
        (WebCore::CompositeEditCommand::joinTextNodes):
        (WebCore::CompositeEditCommand::inputText):
        (WebCore::CompositeEditCommand::insertTextIntoNode):
        (WebCore::CompositeEditCommand::deleteTextFromNode):
        (WebCore::CompositeEditCommand::replaceTextInNode):
        (WebCore::CompositeEditCommand::deleteSelection):
        (WebCore::CompositeEditCommand::removeCSSProperty):
        (WebCore::CompositeEditCommand::removeNodeAttribute):
        (WebCore::CompositeEditCommand::setNodeAttribute):
        (WebCore::CompositeEditCommand::appendBlockPlaceholder):
        (WebCore::CompositeEditCommand::insertBlockPlaceholder):
        (WebCore::CompositeEditCommand::addBlockPlaceholderIfNeeded):
        (WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
        (WebCore::CompositeEditCommand::moveParagraphs):
        (WebCore::CompositeEditCommand::splitTreeToNode):
        * editing/CompositeEditCommand.h:
        (WebCore::CompositeEditCommand::isFirstCommand):
        * editing/CreateLinkCommand.h:
        (WebCore::CreateLinkCommand::create):
        * editing/DeleteButtonController.cpp:
        (WebCore::DeleteButtonController::deleteTarget):
        * editing/DeleteFromTextNodeCommand.cpp:
        (WebCore::DeleteFromTextNodeCommand::DeleteFromTextNodeCommand):
        * editing/DeleteFromTextNodeCommand.h:
        (WebCore::DeleteFromTextNodeCommand::create):
        * editing/DeleteSelectionCommand.h:
        (WebCore::DeleteSelectionCommand::create):
        * editing/EditCommand.h:
        (WebCore::SimpleEditCommand::SimpleEditCommand):
        * editing/Editor.cpp:
        (WebCore::Editor::deleteSelectionWithSmartDelete):
        (WebCore::Editor::replaceSelectionWithFragment):
        (WebCore::Editor::removeFormattingAndStyle):
        (WebCore::Editor::clearLastEditCommand):
        (WebCore::Editor::dispatchCPPEvent):
        (WebCore::Editor::applyStyle):
        (WebCore::Editor::applyParagraphStyle):
        (WebCore::Editor::indent):
        (WebCore::Editor::outdent):
        (WebCore::dispatchEditableContentChangedEvents):
        * editing/Editor.h:
        * editing/EditorCommand.cpp:
        (WebCore::executeInsertFragment):
        (WebCore::executeCreateLink):
        (WebCore::executeFormatBlock):
        (WebCore::executeIndent):
        (WebCore::executeInsertOrderedList):
        (WebCore::executeInsertUnorderedList):
        (WebCore::executeOutdent):
        (WebCore::executeUnlink):
        * editing/FormatBlockCommand.h:
        (WebCore::FormatBlockCommand::create):
        * editing/IndentOutdentCommand.cpp:
        (WebCore::IndentOutdentCommand::indentRegion):
        (WebCore::IndentOutdentCommand::outdentParagraph):
        * editing/IndentOutdentCommand.h:
        (WebCore::IndentOutdentCommand::create):
        * editing/InsertIntoTextNodeCommand.cpp:
        (WebCore::InsertIntoTextNodeCommand::InsertIntoTextNodeCommand):
        * editing/InsertIntoTextNodeCommand.h:
        (WebCore::InsertIntoTextNodeCommand::create):
        * editing/InsertLineBreakCommand.h:
        (WebCore::InsertLineBreakCommand::create):
        * editing/InsertListCommand.cpp:
        (WebCore::InsertListCommand::doApply):
        * editing/InsertListCommand.h:
        (WebCore::InsertListCommand::create):
        * editing/InsertNodeBeforeCommand.cpp:
        (WebCore::InsertNodeBeforeCommand::InsertNodeBeforeCommand):
        * editing/InsertNodeBeforeCommand.h:
        (WebCore::InsertNodeBeforeCommand::create):
        * editing/InsertParagraphSeparatorCommand.cpp:
        (WebCore::InsertParagraphSeparatorCommand::doApply):
        * editing/InsertParagraphSeparatorCommand.h:
        (WebCore::InsertParagraphSeparatorCommand::create):
        * editing/InsertTextCommand.h:
        (WebCore::InsertTextCommand::create):
        * editing/JoinTextNodesCommand.cpp:
        (WebCore::JoinTextNodesCommand::JoinTextNodesCommand):
        * editing/JoinTextNodesCommand.h:
        (WebCore::JoinTextNodesCommand::create):
        * editing/MergeIdenticalElementsCommand.cpp:
        (WebCore::MergeIdenticalElementsCommand::MergeIdenticalElementsCommand):
        * editing/MergeIdenticalElementsCommand.h:
        (WebCore::MergeIdenticalElementsCommand::create):
        * editing/ModifySelectionListLevel.cpp:
        (WebCore::IncreaseSelectionListLevelCommand::increaseSelectionListLevelWithType):
        * editing/MoveSelectionCommand.cpp:
        (WebCore::MoveSelectionCommand::doApply):
        * editing/MoveSelectionCommand.h:
        (WebCore::MoveSelectionCommand::create):
        * editing/RemoveCSSPropertyCommand.cpp:
        (WebCore::RemoveCSSPropertyCommand::RemoveCSSPropertyCommand):
        * editing/RemoveCSSPropertyCommand.h:
        (WebCore::RemoveCSSPropertyCommand::create):
        * editing/RemoveFormatCommand.h:
        (WebCore::RemoveFormatCommand::create):
        * editing/RemoveNodeAttributeCommand.cpp:
        (WebCore::RemoveNodeAttributeCommand::RemoveNodeAttributeCommand):
        * editing/RemoveNodeAttributeCommand.h:
        (WebCore::RemoveNodeAttributeCommand::create):
        * editing/RemoveNodeCommand.cpp:
        (WebCore::RemoveNodeCommand::RemoveNodeCommand):
        * editing/RemoveNodeCommand.h:
        (WebCore::RemoveNodeCommand::create):
        * editing/RemoveNodePreservingChildrenCommand.cpp:
        (WebCore::RemoveNodePreservingChildrenCommand::RemoveNodePreservingChildrenCommand):
        (WebCore::RemoveNodePreservingChildrenCommand::doApply):
        * editing/RemoveNodePreservingChildrenCommand.h:
        (WebCore::RemoveNodePreservingChildrenCommand::create):
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::):
        (WebCore::ReplacementFragment::hasInterchangeNewlineAtStart):
        (WebCore::ReplacementFragment::hasInterchangeNewlineAtEnd):
        (WebCore::ReplacementFragment::ReplacementFragment):
        * editing/ReplaceSelectionCommand.h:
        (WebCore::ReplaceSelectionCommand::create):
        * editing/SetNodeAttributeCommand.cpp:
        (WebCore::SetNodeAttributeCommand::SetNodeAttributeCommand):
        * editing/SetNodeAttributeCommand.h:
        (WebCore::SetNodeAttributeCommand::create):
        * editing/SplitElementCommand.cpp:
        (WebCore::SplitElementCommand::SplitElementCommand):
        * editing/SplitElementCommand.h:
        (WebCore::SplitElementCommand::create):
        * editing/SplitTextNodeCommand.cpp:
        (WebCore::SplitTextNodeCommand::SplitTextNodeCommand):
        * editing/SplitTextNodeCommand.h:
        (WebCore::SplitTextNodeCommand::create):
        * editing/SplitTextNodeContainingElementCommand.cpp:
        (WebCore::SplitTextNodeContainingElementCommand::SplitTextNodeContainingElementCommand):
        * editing/SplitTextNodeContainingElementCommand.h:
        (WebCore::SplitTextNodeContainingElementCommand::create):
        * editing/TypingCommand.cpp:
        (WebCore::TypingCommand::deleteSelection):
        (WebCore::TypingCommand::deleteKeyPressed):
        (WebCore::TypingCommand::forwardDeleteKeyPressed):
        (WebCore::TypingCommand::insertText):
        (WebCore::TypingCommand::insertLineBreak):
        (WebCore::TypingCommand::insertParagraphSeparatorInQuotedContent):
        (WebCore::TypingCommand::insertParagraphSeparator):
        (WebCore::TypingCommand::insertTextRunWithoutNewlines):
        * editing/TypingCommand.h:
        (WebCore::TypingCommand::create):
        (WebCore::TypingCommand::smartDelete):
        * editing/UnlinkCommand.h:
        (WebCore::UnlinkCommand::create):
        * editing/WrapContentsInDummySpanCommand.cpp:
        (WebCore::WrapContentsInDummySpanCommand::WrapContentsInDummySpanCommand):
        * editing/WrapContentsInDummySpanCommand.h:
        (WebCore::WrapContentsInDummySpanCommand::create):
        * html/HTMLTableElement.cpp:
        (WebCore::HTMLTableElement::additionalAttributeStyleDecls):
        (WebCore::HTMLTableElement::addSharedCellBordersDecl):
        (WebCore::HTMLTableElement::addSharedCellPaddingDecl):
        (WebCore::HTMLTableElement::addSharedGroupDecls):
        * html/HTMLTokenizer.cpp:
        (WebCore::Token::addAttribute):
        * html/HTMLViewSourceDocument.cpp:
        (WebCore::HTMLViewSourceDocument::createContainingTable):
        (WebCore::HTMLViewSourceDocument::addSpanWithClassName):
        (WebCore::HTMLViewSourceDocument::addLine):
        (WebCore::HTMLViewSourceDocument::addLink):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::didOpenURL):
        * loader/appcache/DOMApplicationCache.cpp:
        (WebCore::DOMApplicationCache::callListener):
        * page/ContextMenuController.cpp:
        (WebCore::ContextMenuController::contextMenuItemSelected):
        * page/DOMWindow.cpp:
        (WebCore::PostMessageTimer::PostMessageTimer):
        (WebCore::PostMessageTimer::fired):
        (WebCore::DOMWindow::postMessage):
        * page/DragController.cpp:
        (WebCore::DragController::concludeDrag):
        * page/EventHandler.cpp:
        (WebCore::EventHandler::dispatchDragEvent):
        (WebCore::EventHandler::keyEvent):
        (WebCore::EventHandler::handleTextInputEvent):
        * page/Frame.cpp:
        (WebCore::Frame::computeAndSetTypingStyle):
        (WebCore::Frame::shouldClose):
        * page/FrameView.cpp:
        (WebCore::FrameView::updateOverflowStatus):
        * page/mac/EventHandlerMac.mm:
        (WebCore::EventHandler::currentKeyboardEvent):
        * page/mac/FrameMac.mm:
        * platform/DeprecatedValueListImpl.cpp:
        (WebCore::DeprecatedValueListImpl::Private::Private):
        (WebCore::DeprecatedValueListImpl::DeprecatedValueListImpl):
        (WebCore::DeprecatedValueListImpl::copyOnWrite):
        * platform/graphics/FontSelector.h:
        * platform/graphics/GlyphPageTreeNode.cpp:
        (WebCore::GlyphPageTreeNode::initializePage):
        * platform/graphics/GlyphPageTreeNode.h:
        (WebCore::GlyphPage::create):
        (WebCore::GlyphPage::GlyphPage):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::scrollToOffset):
        (WebCore::RenderLayer::updateOverflowStatus):
        (WebCore::RenderLayer::updateReflectionStyle):
        * rendering/style/RenderStyle.h:
        (WebCore::TransformOperation::~TransformOperation):
        (WebCore::ScaleTransformOperation::create):
        (WebCore::ScaleTransformOperation::ScaleTransformOperation):
        (WebCore::RotateTransformOperation::create):
        (WebCore::RotateTransformOperation::RotateTransformOperation):
        (WebCore::SkewTransformOperation::create):
        (WebCore::SkewTransformOperation::operator==):
        (WebCore::SkewTransformOperation::SkewTransformOperation):
        (WebCore::TranslateTransformOperation::create):
        (WebCore::TranslateTransformOperation::operator==):
        (WebCore::TranslateTransformOperation::TranslateTransformOperation):
        (WebCore::MatrixTransformOperation::create):
        (WebCore::MatrixTransformOperation::MatrixTransformOperation):
        (WebCore::StyleReflection::create):
        (WebCore::StyleReflection::StyleReflection):
        * storage/StorageEvent.cpp:
        (WebCore::StorageEvent::StorageEvent):
        (WebCore::StorageEvent::initStorageEvent):
        * storage/StorageEvent.h:
        (WebCore::StorageEvent::create):
        (WebCore::StorageEvent::StorageEvent):
        * svg/SVGAngle.cpp:
        (WebCore::SVGAngle::SVGAngle):
        * svg/SVGAngle.h:
        (WebCore::SVGAngle::create):
        * svg/SVGAnimatedTemplate.h:
        (WebCore::SVGAnimatedTemplate::SVGAnimatedTemplate):
        (WebCore::lookupOrCreateWrapper):
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::sendSVGLoadEventIfPossible):
        * svg/SVGElement.h:
        * svg/SVGMarkerElement.cpp:
        (WebCore::SVGMarkerElement::SVGMarkerElement):
        (WebCore::SVGMarkerElement::parseMappedAttribute):
        (WebCore::SVGMarkerElement::setOrientToAngle):
        * svg/SVGMarkerElement.h:
        * svg/SVGSVGElement.cpp:
        (WebCore::SVGSVGElement::createSVGAngle):
        * svg/SVGSVGElement.h:
        * svg/SVGZoomEvent.h:
        (WebCore::SVGZoomEvent::create):
        * svg/graphics/SVGImage.cpp:
        * xml/XMLHttpRequest.cpp:
        (WebCore::XMLHttpRequest::callReadyStateChangeListener):
        (WebCore::XMLHttpRequest::dispatchProgressEvent):
        * xml/XMLHttpRequestProgressEvent.cpp:
        * xml/XMLHttpRequestProgressEvent.h:
        (WebCore::XMLHttpRequestProgressEvent::create):
        (WebCore::XMLHttpRequestProgressEvent::position):
        (WebCore::XMLHttpRequestProgressEvent::totalSize):
        (WebCore::XMLHttpRequestProgressEvent::XMLHttpRequestProgressEvent):

WebKit/mac:

2008-06-14  Darin Adler  <darin@apple.com>

        Reviewed by Sam.

        - more work on https://bugs.webkit.org/show_bug.cgi?id=17257
          start ref counts at 1 instead of 0 for speed

        * WebView/WebFrame.mm:
        (-[WebFrame _replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34536 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent ce46a1c5
This diff is collapsed.
......@@ -127,7 +127,7 @@ __ZN7WebCore10CachedPage22cachedPagePlatformDataEv
__ZN7WebCore10CachedPage25setCachedPagePlatformDataEPNS_22CachedPagePlatformDataE
__ZN7WebCore10EventNames10clickEventE
__ZN7WebCore10EventNames12keydownEventE
__ZN7WebCore10MouseEventC1ERKNS_12AtomicStringEbbPNS_9DOMWindowEiiiiibbbbtPNS_15EventTargetNodeEPNS_9ClipboardEb
__ZN7WebCore10MouseEventC1ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEEiiiiibbbbtNS5_INS_15EventTargetNodeEEENS5_INS_9ClipboardEEEb
__ZN7WebCore10StringImpl7replaceEtt
__ZN7WebCore10StringImplD1Ev
__ZN7WebCore10StringImplcvP8NSStringEv
......
......@@ -35,13 +35,13 @@ JSValue* JSSVGMatrix::multiply(ExecState* exec, const List& args)
AffineTransform imp(*impl());
AffineTransform secondMatrix = toSVGMatrix(args[0]);
return toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.multiply(secondMatrix)), m_context.get());
return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.multiply(secondMatrix)).get(), m_context.get());
}
JSValue* JSSVGMatrix::inverse(ExecState* exec, const List&)
{
AffineTransform imp(*impl());
KJS::JSValue* result = toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.inverse()), m_context.get());
KJS::JSValue* result = toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.inverse()).get(), m_context.get());
if (!imp.isInvertible())
setDOMException(exec, SVGException::SVG_MATRIX_NOT_INVERTABLE);
......@@ -56,7 +56,7 @@ JSValue* JSSVGMatrix::translate(ExecState* exec, const List& args)
float x = args[0]->toFloat(exec);
float y = args[1]->toFloat(exec);
return toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.translate(x, y)), m_context.get());
return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.translate(x, y)).get(), m_context.get());
}
JSValue* JSSVGMatrix::scale(ExecState* exec, const List& args)
......@@ -64,7 +64,7 @@ JSValue* JSSVGMatrix::scale(ExecState* exec, const List& args)
AffineTransform imp(*impl());
float scaleFactor = args[0]->toFloat(exec);
return toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.scale(scaleFactor)), m_context.get());
return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.scale(scaleFactor)).get(), m_context.get());
}
JSValue* JSSVGMatrix::scaleNonUniform(ExecState* exec, const List& args)
......@@ -74,7 +74,7 @@ JSValue* JSSVGMatrix::scaleNonUniform(ExecState* exec, const List& args)
float scaleFactorX = args[0]->toFloat(exec);
float scaleFactorY = args[1]->toFloat(exec);
return toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.scaleNonUniform(scaleFactorX, scaleFactorY)), m_context.get());
return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.scaleNonUniform(scaleFactorX, scaleFactorY)).get(), m_context.get());
}
JSValue* JSSVGMatrix::rotate(ExecState* exec, const List& args)
......@@ -82,7 +82,7 @@ JSValue* JSSVGMatrix::rotate(ExecState* exec, const List& args)
AffineTransform imp(*impl());
float angle = args[0]->toFloat(exec);
return toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.rotate(angle)), m_context.get());
return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.rotate(angle)).get(), m_context.get());
}
JSValue* JSSVGMatrix::rotateFromVector(ExecState* exec, const List& args)
......@@ -92,7 +92,7 @@ JSValue* JSSVGMatrix::rotateFromVector(ExecState* exec, const List& args)
float x = args[0]->toFloat(exec);
float y = args[1]->toFloat(exec);
KJS::JSValue* result = toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.rotateFromVector(x, y)), m_context.get());
KJS::JSValue* result = toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.rotateFromVector(x, y)).get(), m_context.get());
if (x == 0.0 || y == 0.0)
setDOMException(exec, SVGException::SVG_INVALID_VALUE_ERR);
......@@ -103,13 +103,13 @@ JSValue* JSSVGMatrix::rotateFromVector(ExecState* exec, const List& args)
JSValue* JSSVGMatrix::flipX(ExecState* exec, const List&)
{
AffineTransform imp(*impl());
return toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.flipX()), m_context.get());
return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.flipX()).get(), m_context.get());
}
JSValue* JSSVGMatrix::flipY(ExecState* exec, const List&)
{
AffineTransform imp(*impl());
return toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.flipY()), m_context.get());
return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.flipY()).get(), m_context.get());
}
JSValue* JSSVGMatrix::skewX(ExecState* exec, const List& args)
......@@ -117,7 +117,7 @@ JSValue* JSSVGMatrix::skewX(ExecState* exec, const List& args)
AffineTransform imp(*impl());
float angle = args[0]->toFloat(exec);
return toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.skewX(angle)), m_context.get());
return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.skewX(angle)).get(), m_context.get());
}
JSValue* JSSVGMatrix::skewY(ExecState* exec, const List& args)
......@@ -125,7 +125,7 @@ JSValue* JSSVGMatrix::skewY(ExecState* exec, const List& args)
AffineTransform imp(*impl());
float angle = args[0]->toFloat(exec);
return toJS(exec, new JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>(imp.skewY(angle)), m_context.get());
return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.skewY(angle)).get(), m_context.get());
}
}
......
......@@ -30,18 +30,13 @@
#if ENABLE(SVG)
#include "Frame.h"
#include <wtf/RefCounted.h>
#include "SVGElement.h"
#include <wtf/Assertions.h>
#include <wtf/HashMap.h>
namespace WebCore {
template<typename PODType>
class JSSVGPODTypeWrapper : public RefCounted<JSSVGPODTypeWrapper<PODType> > {
public:
JSSVGPODTypeWrapper() : RefCounted<JSSVGPODTypeWrapper<PODType> >(0) { }
virtual ~JSSVGPODTypeWrapper() { }
// Getter wrapper
......@@ -52,24 +47,16 @@ public:
};
template<typename PODType, typename PODTypeCreator>
class JSSVGPODTypeWrapperCreatorReadWrite : public JSSVGPODTypeWrapper<PODType>
{
class JSSVGPODTypeWrapperCreatorReadWrite : public JSSVGPODTypeWrapper<PODType> {
public:
typedef PODType (PODTypeCreator::*GetterMethod)() const;
typedef void (PODTypeCreator::*SetterMethod)(PODType);
JSSVGPODTypeWrapperCreatorReadWrite(PODTypeCreator* creator, GetterMethod getter, SetterMethod setter)
: m_creator(creator)
, m_getter(getter)
, m_setter(setter)
static PassRefPtr<JSSVGPODTypeWrapperCreatorReadWrite> create(PassRefPtr<PODTypeCreator> creator, GetterMethod getter, SetterMethod setter)
{
ASSERT(creator);
ASSERT(getter);
ASSERT(setter);
return adoptRef(new JSSVGPODTypeWrapperCreatorReadWrite(creator, getter, setter));
}
virtual ~JSSVGPODTypeWrapperCreatorReadWrite() { }
// Getter wrapper
virtual operator PODType() { return (m_creator.get()->*m_getter)(); }
......@@ -86,6 +73,16 @@ public:
}
private:
JSSVGPODTypeWrapperCreatorReadWrite(PassRefPtr<PODTypeCreator> creator, GetterMethod getter, SetterMethod setter)
: m_creator(creator)
, m_getter(getter)
, m_setter(setter)
{
ASSERT(m_creator);
ASSERT(m_getter);
ASSERT(m_setter);
}
// Update callbacks
RefPtr<PODTypeCreator> m_creator;
GetterMethod m_getter;
......@@ -93,14 +90,12 @@ private:
};
template<typename PODType>
class JSSVGPODTypeWrapperCreatorReadOnly : public JSSVGPODTypeWrapper<PODType>
{
class JSSVGPODTypeWrapperCreatorReadOnly : public JSSVGPODTypeWrapper<PODType> {
public:
JSSVGPODTypeWrapperCreatorReadOnly(PODType type)
: m_podType(type)
{ }
virtual ~JSSVGPODTypeWrapperCreatorReadOnly() { }
static PassRefPtr<JSSVGPODTypeWrapperCreatorReadOnly> create(PODType type)
{
return adoptRef(new JSSVGPODTypeWrapperCreatorReadOnly(type));
}
// Getter wrapper
virtual operator PODType() { return m_podType; }
......@@ -112,6 +107,11 @@ public:
}
private:
JSSVGPODTypeWrapperCreatorReadOnly(PODType type)
: m_podType(type)
{
}
PODType m_podType;
};
......@@ -119,25 +119,16 @@ template<typename PODType>
class SVGPODListItem;
template<typename PODType>
class JSSVGPODTypeWrapperCreatorForList : public JSSVGPODTypeWrapper<PODType>
{
class JSSVGPODTypeWrapperCreatorForList : public JSSVGPODTypeWrapper<PODType> {
public:
typedef PODType (SVGPODListItem<PODType>::*GetterMethod)() const;
typedef void (SVGPODListItem<PODType>::*SetterMethod)(PODType);
JSSVGPODTypeWrapperCreatorForList(SVGPODListItem<PODType>* creator, const QualifiedName& attributeName)
: m_creator(creator)
, m_getter(&SVGPODListItem<PODType>::value)
, m_setter(&SVGPODListItem<PODType>::setValue)
, m_associatedAttributeName(attributeName)
static PassRefPtr<JSSVGPODTypeWrapperCreatorForList> create(PassRefPtr<SVGPODListItem<PODType> > creator, const QualifiedName& attributeName)
{
ASSERT(m_creator);
ASSERT(m_getter);
ASSERT(m_setter);
return adoptRef(new JSSVGPODTypeWrapperCreatorForList(creator, attributeName));
}
virtual ~JSSVGPODTypeWrapperCreatorForList() { }
// Getter wrapper
virtual operator PODType() { return (m_creator.get()->*m_getter)(); }
......@@ -154,6 +145,17 @@ public:
}
private:
JSSVGPODTypeWrapperCreatorForList(PassRefPtr<SVGPODListItem<PODType> > creator, const QualifiedName& attributeName)
: m_creator(creator)
, m_getter(&SVGPODListItem<PODType>::value)
, m_setter(&SVGPODListItem<PODType>::setValue)
, m_associatedAttributeName(attributeName)
{
ASSERT(m_creator);
ASSERT(m_getter);
ASSERT(m_setter);
}
// Update callbacks
RefPtr<SVGPODListItem<PODType> > m_creator;
GetterMethod m_getter;
......@@ -241,8 +243,7 @@ struct PODTypeReadWriteHashInfoTraits : WTF::GenericHashTraits<PODTypeReadWriteH
};
template<typename PODType, typename PODTypeCreator>
class JSSVGPODTypeWrapperCache
{
class JSSVGPODTypeWrapperCache {
public:
typedef PODType (PODTypeCreator::*GetterMethod)() const;
typedef void (PODTypeCreator::*SetterMethod)(PODType);
......@@ -257,7 +258,7 @@ public:
}
// Used for readwrite attributes only
static JSSVGPODTypeWrapper<PODType>* lookupOrCreateWrapper(PODTypeCreator* creator, GetterMethod getter, SetterMethod setter)
static PassRefPtr<JSSVGPODTypeWrapper<PODType> > lookupOrCreateWrapper(PODTypeCreator* creator, GetterMethod getter, SetterMethod setter)
{
ReadWriteHashMap& map(readWriteHashMap());
PODTypeReadWriteHashInfo<PODType, PODTypeCreator> info(creator, getter, setter);
......@@ -265,9 +266,9 @@ public:
if (map.contains(info))
return map.get(info);
JSSVGPODTypeWrapperCreatorReadWrite<PODType, PODTypeCreator>* wrapper = new JSSVGPODTypeWrapperCreatorReadWrite<PODType, PODTypeCreator>(creator, getter, setter);
map.set(info, wrapper);
return wrapper;
RefPtr<JSSVGPODTypeWrapperCreatorReadWrite<PODType, PODTypeCreator> > wrapper = JSSVGPODTypeWrapperCreatorReadWrite<PODType, PODTypeCreator>::create(creator, getter, setter);
map.set(info, wrapper.get());
return wrapper.release();
}
static void forgetWrapper(JSSVGPODTypeWrapper<PODType>* wrapper)
......@@ -281,7 +282,7 @@ public:
if (it->second != wrapper)
continue;
// It's guaruanteed that there's just one object we need to take care of.
// It's guaranteed that there's just one object we need to take care of.
map.remove(it->first);
break;
}
......
/*
* Copyright (C) 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
* Copyright (C) 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
......@@ -18,108 +19,98 @@
*/
#include "config.h"
#include "JSSVGPointList.h"
#if ENABLE(SVG)
#include "JSSVGPointList.h"
#include "Document.h"
#include "Frame.h"
#include "JSSVGPoint.h"
#include "SVGDocumentExtensions.h"
#include "SVGPointList.h"
#include "SVGStyledElement.h"
#include <wtf/Assertions.h>
using namespace KJS;
namespace WebCore {
JSValue* JSSVGPointList::clear(ExecState* exec, const List&)
typedef SVGList<RefPtr<SVGPODListItem<FloatPoint> > > SVGPointListBase;
static JSValue* finishGetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<SVGPODListItem<FloatPoint> > item)
{
ExceptionCode ec = 0;
if (ec) {
setDOMException(exec, ec);
return jsUndefined();
}
return toJS(exec, JSSVGPODTypeWrapperCreatorForList<FloatPoint>::create(item.get(), list->associatedAttributeName()).get(), context);
}
SVGPointList* imp = static_cast<SVGPointList*>(impl());
imp->clear(ec);
setDOMException(exec, ec);
static JSValue* finishSetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<SVGPODListItem<FloatPoint> > item)
{
if (ec) {
setDOMException(exec, ec);
return jsUndefined();
}
const QualifiedName& attributeName = list->associatedAttributeName();
context->svgAttributeChanged(attributeName);
return toJS(exec, JSSVGPODTypeWrapperCreatorForList<FloatPoint>::create(item.get(), attributeName).get(), context);
}
m_context->svgAttributeChanged(imp->associatedAttributeName());
static JSValue* finishSetterReadOnlyResult(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<SVGPODListItem<FloatPoint> > item)
{
if (ec) {
setDOMException(exec, ec);
return jsUndefined();
}
context->svgAttributeChanged(list->associatedAttributeName());
return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<FloatPoint>::create(*item).get(), context);
}
JSValue* JSSVGPointList::clear(ExecState* exec, const List&)
{
ExceptionCode ec = 0;
impl()->clear(ec);
setDOMException(exec, ec);
m_context->svgAttributeChanged(impl()->associatedAttributeName());
return jsUndefined();
}
JSValue* JSSVGPointList::initialize(ExecState* exec, const List& args)
{
ExceptionCode ec = 0;
FloatPoint newItem = toSVGPoint(args[0]);
SVGPointList* imp = static_cast<SVGPointList*>(impl());
SVGList<RefPtr<SVGPODListItem<FloatPoint> > >* listImp = imp;
SVGPODListItem<FloatPoint>* listItem = listImp->initialize(SVGPODListItem<FloatPoint>::copy(newItem), ec).get();
JSSVGPODTypeWrapperCreatorForList<FloatPoint>* obj = new JSSVGPODTypeWrapperCreatorForList<FloatPoint>(listItem, imp->associatedAttributeName());
KJS::JSValue* result = toJS(exec, obj, m_context.get());
setDOMException(exec, ec);
m_context->svgAttributeChanged(imp->associatedAttributeName());
return result;
SVGPointListBase* listImp = impl();
return finishSetter(exec, ec, context(), impl(),
listImp->initialize(SVGPODListItem<FloatPoint>::copy(toSVGPoint(args[0])), ec));
}
JSValue* JSSVGPointList::getItem(ExecState* exec, const List& args)
{
ExceptionCode ec = 0;
bool indexOk;
unsigned index = args[0]->toInt32(exec, indexOk);
unsigned index = args[0]->toUInt32(exec, indexOk);
if (!indexOk) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
}
SVGPointList* imp = static_cast<SVGPointList*>(impl());
SVGList<RefPtr<SVGPODListItem<FloatPoint> > >* listImp = imp;
SVGPODListItem<FloatPoint>* listItem = listImp->getItem(index, ec).get();
JSSVGPODTypeWrapperCreatorForList<FloatPoint>* obj = new JSSVGPODTypeWrapperCreatorForList<FloatPoint>(listItem, imp->associatedAttributeName());
KJS::JSValue* result = toJS(exec, obj, m_context.get());
setDOMException(exec, ec);
return result;
ExceptionCode ec = 0;
SVGPointListBase* listImp = impl();
return finishGetter(exec, ec, context(), impl(),
listImp->getItem(index, ec));
}
JSValue* JSSVGPointList::insertItemBefore(ExecState* exec, const List& args)
{
ExceptionCode ec = 0;
FloatPoint newItem = toSVGPoint(args[0]);
bool indexOk;
unsigned index = args[1]->toInt32(exec, indexOk);
unsigned index = args[1]->toUInt32(exec, indexOk);
if (!indexOk) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
}
SVGPointList* imp = static_cast<SVGPointList*>(impl());
SVGList<RefPtr<SVGPODListItem<FloatPoint> > >* listImp = imp;
SVGPODListItem<FloatPoint>* listItem = listImp->insertItemBefore(SVGPODListItem<FloatPoint>::copy(newItem), index, ec).get();
JSSVGPODTypeWrapperCreatorForList<FloatPoint>* obj = new JSSVGPODTypeWrapperCreatorForList<FloatPoint>(listItem, imp->associatedAttributeName());
KJS::JSValue* result = toJS(exec, obj, m_context.get());
setDOMException(exec, ec);
m_context->svgAttributeChanged(imp->associatedAttributeName());
return result;
ExceptionCode ec = 0;
SVGPointListBase* listImp = impl();
return finishSetter(exec, ec, context(), impl(),
listImp->insertItemBefore(SVGPODListItem<FloatPoint>::copy(toSVGPoint(args[0])), index, ec));
}
JSValue* JSSVGPointList::replaceItem(ExecState* exec, const List& args)
{
ExceptionCode ec = 0;
FloatPoint newItem = toSVGPoint(args[0]);
bool indexOk;
unsigned index = args[1]->toInt32(exec, indexOk);
if (!indexOk) {
......@@ -127,24 +118,14 @@ JSValue* JSSVGPointList::replaceItem(ExecState* exec, const List& args)
return jsUndefined();
}
SVGPointList* imp = static_cast<SVGPointList*>(impl());
SVGList<RefPtr<SVGPODListItem<FloatPoint> > >* listImp = imp;
SVGPODListItem<FloatPoint>* listItem = listImp->replaceItem(SVGPODListItem<FloatPoint>::copy(newItem), index, ec).get();
JSSVGPODTypeWrapperCreatorForList<FloatPoint>* obj = new JSSVGPODTypeWrapperCreatorForList<FloatPoint>(listItem, imp->associatedAttributeName());
KJS::JSValue* result = toJS(exec, obj, m_context.get());
setDOMException(exec, ec);
m_context->svgAttributeChanged(imp->associatedAttributeName());
return result;
ExceptionCode ec = 0;
SVGPointListBase* listImp = impl();
return finishSetter(exec, ec, context(), impl(),
listImp->replaceItem(SVGPODListItem<FloatPoint>::copy(toSVGPoint(args[0])), index, ec));
}
JSValue* JSSVGPointList::removeItem(ExecState* exec, const List& args)
{
ExceptionCode ec = 0;
bool indexOk;
unsigned index = args[0]->toInt32(exec, indexOk);
if (!indexOk) {
......@@ -152,37 +133,18 @@ JSValue* JSSVGPointList::removeItem(ExecState* exec, const List& args)
return jsUndefined();
}
SVGPointList* imp = static_cast<SVGPointList*>(impl());
SVGList<RefPtr<SVGPODListItem<FloatPoint> > >* listImp = imp;
RefPtr<SVGPODListItem<FloatPoint> > listItem(listImp->removeItem(index, ec));
JSSVGPODTypeWrapper<FloatPoint>* obj = new JSSVGPODTypeWrapperCreatorReadOnly<FloatPoint>(*listItem.get());
KJS::JSValue* result = toJS(exec, obj, m_context.get());
setDOMException(exec, ec);
m_context->svgAttributeChanged(imp->associatedAttributeName());
return result;
ExceptionCode ec = 0;
SVGPointListBase* listImp = impl();
return finishSetterReadOnlyResult(exec, ec, context(), impl(),
listImp->removeItem(index, ec));
}
JSValue* JSSVGPointList::appendItem(ExecState* exec, const List& args)
{
ExceptionCode ec = 0;
FloatPoint newItem = toSVGPoint(args[0]);
SVGPointList* imp = static_cast<SVGPointList*>(impl());
SVGList<RefPtr<SVGPODListItem<FloatPoint> > >* listImp = imp;
SVGPODListItem<FloatPoint>* listItem = listImp->appendItem(SVGPODListItem<FloatPoint>::copy(newItem), ec).get();
JSSVGPODTypeWrapperCreatorForList<FloatPoint>* obj = new JSSVGPODTypeWrapperCreatorForList<FloatPoint>(listItem, imp->associatedAttributeName());
KJS::JSValue* result = toJS(exec, obj, m_context.get());
setDOMException(exec, ec);
m_context->svgAttributeChanged(imp->associatedAttributeName());
return result;
SVGPointListBase* listImp = impl();
return finishSetter(exec, ec, context(), impl(),
listImp->appendItem(SVGPODListItem<FloatPoint>::copy(toSVGPoint(args[0])), ec));
}
}
......
/*
* Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
* Copyright (C) 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
......@@ -18,59 +19,68 @@
*/
#include "config.h"
#include "JSSVGTransformList.h"
#if ENABLE(SVG)
#include "JSSVGTransformList.h"
#include "Document.h"