Add a new IGNORE_EXCEPTION helper to ignore ExceptionCodes when they are expected but uninteresting
https://bugs.webkit.org/show_bug.cgi?id=108771
Reviewed by Eric Seidel.
In cases where the ExceptionCode passed into a function is completely
ignored, this patch replaces it with a new IGNORE_EXCEPTION macro. This
makes our expectations about possible exceptions (or lack thereof)
explicit, rather than relying on implicit assumptions about whether a
variable is intentionally uninitialized or not. It also removes
knowledge about the internals of ExceptionCodes (that they're currently
ints, for instance) from code that shouldn't care, which will help with
future refactorings.
The implementation is entirely based upon ASSERT_NO_EXCEPTION, and
shouldn't have any visible effect on the web. As long as all the
current tests pass, we're good.
* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::dispatchEvent):
(WebCore::IDBRequest::uncaughtExceptionInEventHandler):
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::stop):
* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::processBuffer):
* dom/Document.cpp:
(WebCore::Document::processHttpEquiv):
* dom/ExceptionCodePlaceholder.h:
(WebCore):
* dom/Node.cpp:
(WebCore::Node::normalize):
* dom/Text.cpp:
(WebCore::Text::replaceWholeText):
* editing/AlternativeTextController.cpp:
(WebCore::AlternativeTextController::insertDictatedText):
* editing/AppendNodeCommand.cpp:
(WebCore::AppendNodeCommand::doApply):
(WebCore::AppendNodeCommand::doUnapply):
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::insertNewDefaultParagraphElementAt):
* editing/DeleteFromTextNodeCommand.cpp:
(WebCore::DeleteFromTextNodeCommand::doUnapply):
* editing/Editor.cpp:
(WebCore::dispatchEditableContentChangedEvents):
(WebCore::Editor::applyEditingStyleToElement):
* editing/EditorCommand.cpp:
(WebCore::executeFormatBlock):
* editing/FormatBlockCommand.cpp:
(WebCore::FormatBlockCommand::elementForFormatBlockCommand):
* editing/InsertIntoTextNodeCommand.cpp:
(WebCore::InsertIntoTextNodeCommand::doApply):
(WebCore::InsertIntoTextNodeCommand::doUnapply):
* editing/InsertListCommand.cpp:
(WebCore::InsertListCommand::doApplyForSingleParagraph):
* editing/InsertNodeBeforeCommand.cpp:
(WebCore::InsertNodeBeforeCommand::doApply):
(WebCore::InsertNodeBeforeCommand::doUnapply):
* editing/RemoveCSSPropertyCommand.cpp:
(WebCore::RemoveCSSPropertyCommand::doApply):
(WebCore::RemoveCSSPropertyCommand::doUnapply):
* editing/RemoveNodeCommand.cpp:
(WebCore::RemoveNodeCommand::doApply):
(WebCore::RemoveNodeCommand::doUnapply):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline):
* editing/TextIterator.cpp:
(WebCore::TextIterator::getLocationAndLengthFromRange):
* editing/WrapContentsInDummySpanCommand.cpp:
(WebCore::WrapContentsInDummySpanCommand::executeApply):
(WebCore::WrapContentsInDummySpanCommand::doUnapply):
* editing/htmlediting.cpp:
(WebCore::comparePositions):
* editing/markup.cpp:
(WebCore::highestAncestorToWrapMarkup):
* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocumentParser::appendEntry):
(WebCore::FTPDirectoryDocumentParser::createTDForFilename):
(WebCore::FTPDirectoryDocumentParser::loadDocumentTemplate):
(WebCore::FTPDirectoryDocumentParser::createBasicDocument):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::rewind):
(WebCore::HTMLMediaElement::returnToRealtime):
(WebCore::HTMLMediaElement::playInternal):
(WebCore::HTMLMediaElement::percentLoaded):
(WebCore::HTMLMediaElement::mediaPlayerTimeChanged):
(WebCore::HTMLMediaElement::mediaPlayerDurationChanged):
(WebCore::HTMLMediaElement::applyMediaFragmentURI):
* html/HTMLOutputElement.cpp:
(WebCore::HTMLOutputElement::setTextContentInternal):
* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::remove):
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::createTHead):
(WebCore::HTMLTableElement::deleteTHead):
(WebCore::HTMLTableElement::createTFoot):
(WebCore::HTMLTableElement::deleteTFoot):
(WebCore::HTMLTableElement::createCaption):
(WebCore::HTMLTableElement::deleteCaption):
* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::setDefaultValue):
* html/ImageDocument.cpp:
(WebCore::ImageDocument::createDocumentStructure):
* html/InputType.cpp:
(WebCore::InputType::stepUpFromRenderer):
* html/MediaController.cpp:
(MediaController::bringElementUpToSpeed):
(MediaController::asyncEventTimerFired):
* html/MediaDocument.cpp:
(WebCore::MediaDocumentParser::createDocumentStructure):
(WebCore::MediaDocument::replaceMediaElementTimerFired):
* html/PluginDocument.cpp:
(WebCore::PluginDocumentParser::createDocumentStructure):
* html/RangeInputType.cpp:
(WebCore::RangeInputType::handleKeydownEvent):
* html/TimeRanges.cpp:
(TimeRanges::contain):
(TimeRanges::nearest):
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::drawImageFromRect):
* html/shadow/MediaControlElementTypes.cpp:
(WebCore::MediaControlSeekButtonElement::seekTimerFired):
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlPanelElement::setPosition):
(WebCore::MediaControlPanelElement::resetPosition):
(WebCore::MediaControlStatusDisplayElement::update):
(WebCore::MediaControlRewindButtonElement::defaultEventHandler):
(WebCore::MediaControlTimelineElement::defaultEventHandler):
* html/shadow/MediaControls.cpp:
(WebCore::MediaControls::updateCurrentTimeDisplay):
(WebCore::MediaControls::createTextTrackDisplay):
* html/shadow/MediaControlsApple.cpp:
(WebCore::MediaControlsApple::updateCurrentTimeDisplay):
* html/shadow/MediaControlsBlackBerry.cpp:
(WebCore::MediaControlEmbeddedPanelElement::setPosition):
(WebCore::MediaControlEmbeddedPanelElement::resetPosition):
(WebCore::MediaControlFullscreenTimelineElement::defaultEventHandler):
(WebCore::MediaControlsBlackBerry::updateCurrentTimeDisplay):
* html/shadow/MediaControlsChromium.cpp:
(WebCore::MediaControlsChromium::updateCurrentTimeDisplay):
* html/track/InbandTextTrack.cpp:
(WebCore::InbandTextTrack::addGenericCue):
* inspector/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList):
* inspector/InspectorHistory.cpp:
(WebCore::InspectorHistory::markUndoableState):
* inspector/InspectorResourceAgent.cpp:
(WebCore::InspectorResourceAgent::replayXHR):
* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::contextMenuItemSelected):
* page/DOMWindow.cpp:
(WebCore::didAddStorageEventListener):
* page/DragController.cpp:
(WebCore::documentFragmentFromDragData):
* page/EventHandler.cpp:
(WebCore::EventHandler::dispatchDragEvent):
(WebCore::EventHandler::keyEvent):
(WebCore::EventHandler::handleTextInputEvent):
* page/Page.cpp:
(WebCore::Page::findStringMatchingRanges):
* platform/efl/RenderThemeEfl.cpp:
(WebCore::RenderThemeEfl::paintMediaSliderTrack):
* platform/graphics/blackberry/MediaPlayerPrivateBlackBerry.cpp:
(WebCore::MediaPlayerPrivate::percentLoaded):
* platform/gtk/RenderThemeGtk.cpp:
(WebCore::RenderThemeGtk::paintMediaSliderTrack):
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::getDataSelection):
(WebCore::documentFragmentWithImageResource):
(WebCore::Pasteboard::documentFragment):
* platform/mac/WebVideoFullscreenHUDWindowController.mm:
(-[WebVideoFullscreenHUDWindowController setCurrentTime:]):
(-[WebVideoFullscreenHUDWindowController setVolume:]):
* platform/qt/RenderThemeQt.cpp:
(WebCore::RenderThemeQt::paintMediaSliderTrack):
* rendering/RenderNamedFlowThread.cpp:
(WebCore::RenderNamedFlowThread::getRanges):
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintMediaSliderTrack):
* svg/SVGTRefElement.cpp:
(WebCore::SVGTRefElement::detachTarget):
* xml/XMLTreeViewer.cpp:
(WebCore::XMLTreeViewer::transformDocumentToTreeView):
* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::XMLDocumentParser::endElementNs):
* xml/parser/XMLDocumentParserQt.cpp:
(WebCore::XMLDocumentParser::parseEndElement):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142271 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/editing/AppendNodeCommand.cpp b/Source/WebCore/editing/AppendNodeCommand.cpp
index 4ccac7a..5f20f4e 100644
--- a/Source/WebCore/editing/AppendNodeCommand.cpp
+++ b/Source/WebCore/editing/AppendNodeCommand.cpp
@@ -28,6 +28,7 @@
#include "AXObjectCache.h"
#include "Document.h"
+#include "ExceptionCodePlaceholder.h"
#include "htmlediting.h"
namespace WebCore {
@@ -58,9 +59,8 @@
{
if (!m_parent->rendererIsEditable() && m_parent->attached())
return;
-
- ExceptionCode ec;
- m_parent->appendChild(m_node.get(), ec, true /* lazyAttach */);
+
+ m_parent->appendChild(m_node.get(), IGNORE_EXCEPTION, true /* lazyAttach */);
if (AXObjectCache::accessibilityEnabled())
sendAXTextChangedIgnoringLineBreaks(m_node.get(), AXObjectCache::AXTextInserted);
@@ -75,8 +75,7 @@
if (AXObjectCache::accessibilityEnabled())
sendAXTextChangedIgnoringLineBreaks(m_node.get(), AXObjectCache::AXTextDeleted);
- ExceptionCode ec;
- m_node->remove(ec);
+ m_node->remove(IGNORE_EXCEPTION);
}
#ifndef NDEBUG