diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/editing/InsertIntoTextNodeCommand.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/editing/InsertIntoTextNodeCommand.cpp')
-rw-r--r-- | Source/WebCore/editing/InsertIntoTextNodeCommand.cpp | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp b/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp index 370d4bf4e..9d2894e3e 100644 --- a/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp +++ b/Source/WebCore/editing/InsertIntoTextNodeCommand.cpp @@ -10,10 +10,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -26,21 +26,21 @@ #include "config.h" #include "InsertIntoTextNodeCommand.h" -#include "AXObjectCache.h" #include "Document.h" -#include "ExceptionCodePlaceholder.h" +#include "Frame.h" #include "RenderText.h" #include "Settings.h" #include "Text.h" + #if PLATFORM(IOS) #include "RenderText.h" #endif namespace WebCore { -InsertIntoTextNodeCommand::InsertIntoTextNodeCommand(PassRefPtr<Text> node, unsigned offset, const String& text) - : SimpleEditCommand(node->document()) - , m_node(node) +InsertIntoTextNodeCommand::InsertIntoTextNodeCommand(RefPtr<Text>&& node, unsigned offset, const String& text, EditAction editingAction) + : SimpleEditCommand(node->document(), editingAction) + , m_node(WTFMove(node)) , m_offset(offset) , m_text(text) { @@ -51,8 +51,7 @@ InsertIntoTextNodeCommand::InsertIntoTextNodeCommand(PassRefPtr<Text> node, unsi void InsertIntoTextNodeCommand::doApply() { - // FIXME: EditCommand should always have a Frame, so going through Document for Settings shouldn't be necessary. - bool passwordEchoEnabled = document().settings() && document().settings()->passwordEchoEnabled(); + bool passwordEchoEnabled = frame().settings().passwordEchoEnabled(); if (passwordEchoEnabled) document().updateLayoutIgnorePendingStylesheets(); @@ -60,42 +59,40 @@ void InsertIntoTextNodeCommand::doApply() return; if (passwordEchoEnabled) { - RenderText* renderText = m_node->renderer(); - if (renderText && renderText->isSecure()) - renderText->momentarilyRevealLastTypedCharacter(m_offset + m_text.length() - 1); + if (RenderText* renderText = m_node->renderer()) + renderText->momentarilyRevealLastTypedCharacter(m_offset + m_text.length()); } - m_node->insertData(m_offset, m_text, IGNORE_EXCEPTION); - - if (AXObjectCache* cache = document().existingAXObjectCache()) - cache->nodeTextChangeNotification(m_node.get(), AXObjectCache::AXTextInserted, m_offset, m_text); + m_node->insertData(m_offset, m_text); } #if PLATFORM(IOS) + +// FIXME: Why would reapply be iOS-specific? void InsertIntoTextNodeCommand::doReapply() { - ExceptionCode ec; - m_node->insertData(m_offset, m_text, ec); + // FIXME: Shouldn't this have a hasEditableStyle check? + + m_node->insertData(m_offset, m_text); } + #endif void InsertIntoTextNodeCommand::doUnapply() { if (!m_node->hasEditableStyle()) return; - - // Need to notify this before actually deleting the text - if (AXObjectCache* cache = document().existingAXObjectCache()) - cache->nodeTextChangeNotification(m_node.get(), AXObjectCache::AXTextDeleted, m_offset, m_text); - m_node->deleteData(m_offset, m_text.length(), IGNORE_EXCEPTION); + m_node->deleteData(m_offset, m_text.length()); } #ifndef NDEBUG + void InsertIntoTextNodeCommand::getNodesInCommand(HashSet<Node*>& nodes) { addNodeAndDescendants(m_node.get(), nodes); } + #endif } // namespace WebCore |