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/html/HTMLTableElement.cpp b/Source/WebCore/html/HTMLTableElement.cpp
index 59f0b0c..d0eb12d 100644
--- a/Source/WebCore/html/HTMLTableElement.cpp
+++ b/Source/WebCore/html/HTMLTableElement.cpp
@@ -32,6 +32,7 @@
#include "CSSValueKeywords.h"
#include "CSSValuePool.h"
#include "ExceptionCode.h"
+#include "ExceptionCodePlaceholder.h"
#include "HTMLNames.h"
#include "HTMLParserIdioms.h"
#include "HTMLTableCaptionElement.h"
@@ -128,15 +129,13 @@
if (HTMLTableSectionElement* existingHead = tHead())
return existingHead;
RefPtr<HTMLTableSectionElement> head = HTMLTableSectionElement::create(theadTag, document());
- ExceptionCode ec;
- setTHead(head, ec);
+ setTHead(head, IGNORE_EXCEPTION);
return head.release();
}
void HTMLTableElement::deleteTHead()
{
- ExceptionCode ec;
- removeChild(tHead(), ec);
+ removeChild(tHead(), IGNORE_EXCEPTION);
}
PassRefPtr<HTMLElement> HTMLTableElement::createTFoot()
@@ -144,15 +143,13 @@
if (HTMLTableSectionElement* existingFoot = tFoot())
return existingFoot;
RefPtr<HTMLTableSectionElement> foot = HTMLTableSectionElement::create(tfootTag, document());
- ExceptionCode ec;
- setTFoot(foot, ec);
+ setTFoot(foot, IGNORE_EXCEPTION);
return foot.release();
}
void HTMLTableElement::deleteTFoot()
{
- ExceptionCode ec;
- removeChild(tFoot(), ec);
+ removeChild(tFoot(), IGNORE_EXCEPTION);
}
PassRefPtr<HTMLElement> HTMLTableElement::createTBody()
@@ -168,15 +165,13 @@
if (HTMLTableCaptionElement* existingCaption = caption())
return existingCaption;
RefPtr<HTMLTableCaptionElement> caption = HTMLTableCaptionElement::create(captionTag, document());
- ExceptionCode ec;
- setCaption(caption, ec);
+ setCaption(caption, IGNORE_EXCEPTION);
return caption.release();
}
void HTMLTableElement::deleteCaption()
{
- ExceptionCode ec;
- removeChild(caption(), ec);
+ removeChild(caption(), IGNORE_EXCEPTION);
}
HTMLTableSectionElement* HTMLTableElement::lastBody() const