2010-12-06  Ryosuke Niwa  <rniwa@webkit.org>

        Reviewed by Tony Chang.

        ApplyStyleCommand should take EditingStyle instead of CSSStyleDeclaration
        https://bugs.webkit.org/show_bug.cgi?id=49938

        Modified ApplyStyleCommand::ApplyStyleCommand and ApplyStyleCommand::create to take EditingStyle*
        instead of CSSStyleDeclaration*. Also replaced much of code in Editor::computeAndSetTypingStyle
        by calls to EditingStyle's member functions and extracted EditingStyle::overrideWith and
        EditingStyle::extractAndRemoveBlockProperties.

        No new tests are added since this is a refactoring.

        * WebCore.exp.in: Added SelectionController::copyTypingStyle and EditingStyle::~EditingStyle.
        * css/CSSMutableStyleDeclaration.cpp: Made CSSMutableStyleDeclaration* in the argument list const.
        (WebCore::CSSMutableStyleDeclaration::merge):
        * css/CSSMutableStyleDeclaration.h:
        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::ApplyStyleCommand): Takes EditingStyle* instead of CSSStyleDeclaration*.
        (WebCore::ApplyStyleCommand::doApply): Uses EditingStyle.
        * editing/ApplyStyleCommand.h: m_style is now a ref-pointer to EditingStyle instead of CSSMutableStyleDeclaration.
        (WebCore::ApplyStyleCommand::create): Takes EditingStyle* instead of CSSStyleDeclaration*.
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::applyStyle): Ditto.
        (WebCore::CompositeEditCommand::moveParagraphs): Calls applyStyle.
        (WebCore::CompositeEditCommand::breakOutOfEmptyListItem): Ditto.
        * editing/CompositeEditCommand.h:
        * editing/DeleteSelectionCommand.cpp:
        (WebCore::DeleteSelectionCommand::calculateTypingStyleAfterDelete): Ditto.
        * editing/EditCommand.cpp:
        * editing/EditCommand.h:
        * editing/EditingStyle.cpp:
        (WebCore::EditingStyle::~EditingStyle): Added.
        (WebCore::EditingStyle::overrideWithStyle): Extracted from Editor::calculateTypingStyleAfterDelete.
        (WebCore::EditingStyle::copy): Added.
        (WebCore::EditingStyle::extractAndRemoveBlockProperties): Extracted from Editor::calculateTypingStyleAfterDelete.
        * editing/EditingStyle.h:
        * editing/Editor.cpp:
        (WebCore::Editor::applyStyle): Calls ApplyStyleCommand::create.
        (WebCore::Editor::applyParagraphStyle): Ditto.
        (WebCore::Editor::computeAndSetTypingStyle): Ditto.
        * editing/InsertLineBreakCommand.cpp:
        (WebCore::InsertLineBreakCommand::doApply): Calls applyStyle.
        * editing/InsertParagraphSeparatorCommand.cpp:
        (WebCore::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Ditto.
        * editing/InsertTextCommand.cpp:
        (WebCore::InsertTextCommand::input): Ditto.
        * editing/RemoveFormatCommand.cpp:
        (WebCore::RemoveFormatCommand::doApply): Calls ApplyStyleCommand::create.
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::completeHTMLReplacement): Calls applyStyle.
        * editing/SelectionController.cpp:
        (WebCore::SelectionController::copyTypingStyle): Moved from SelectionController.h
        * editing/SelectionController.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73416 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/editing/DeleteSelectionCommand.cpp b/WebCore/editing/DeleteSelectionCommand.cpp
index 594a94f..24c1968 100644
--- a/WebCore/editing/DeleteSelectionCommand.cpp
+++ b/WebCore/editing/DeleteSelectionCommand.cpp
@@ -691,7 +691,7 @@
         // then move it back (which will clear typing style).
 
         setEndingSelection(visibleEnd);
-        applyStyle(m_typingStyle->style(), EditActionUnspecified);
+        applyStyle(m_typingStyle.get(), EditActionUnspecified);
         // applyStyle can destroy the placeholder that was at m_endingPosition if it needs to 
         // move it, but it will set an endingSelection() at [movedPlaceholder, 0] if it does so.
         m_endingPosition = endingSelection().start();