Web Inspector: Breakpoint Actions
https://bugs.webkit.org/show_bug.cgi?id=120576

Reviewed by Timothy Hatcher.

Source/WebCore:

Tests: inspector-protocol/debugger/setBreakpoint-actions.html
       inspector-protocol/debugger/setBreakpoint-options-exception.html

* inspector/ScriptBreakpoint.h:
(WebCore::ScriptBreakpointAction::ScriptBreakpointAction):
(WebCore::ScriptBreakpoint::ScriptBreakpoint):
Struct for a breakpoint action. Type and string of data.

* bindings/js/ScriptDebugServer.h:
* bindings/js/ScriptDebugServer.cpp:
(WebCore::ScriptDebugServer::hasBreakpoint):
(WebCore::ScriptDebugServer::evaluateBreakpointAction):
(WebCore::ScriptDebugServer::evaluateBreakpointActions):
(WebCore::ScriptDebugServer::updateCallFrameAndPauseIfNeeded):
(WebCore::ScriptDebugServer::pauseIfNeeded):
When a breakpoint is triggered evaluate each of its breakpoint
actions in order. If there are exceptions, log them.

* inspector/Inspector.json:
* inspector/InspectorDebuggerAgent.cpp:
(WebCore::buildObjectForBreakpointCookie):
(WebCore::InspectorDebuggerAgent::didParseSource):
Save and restore breakpoint actions where needed.

(WebCore::breakpointActionTypeForString):
(WebCore::breakpointActionsFromProtocol):
(WebCore::InspectorDebuggerAgent::setBreakpointByUrl):
(WebCore::InspectorDebuggerAgent::setBreakpoint):
Parse optional breakpoint actions from the protocol into
ScriptBreakpointAction objects.

LayoutTests:

* inspector-protocol/debugger/resources/breakpoint.js:
* inspector-protocol/debugger/setBreakpoint-actions-expected.txt: Added.
* inspector-protocol/debugger/setBreakpoint-actions.html: Added.
* inspector-protocol/debugger/setBreakpoint-options-exception-expected.txt: Added.
* inspector-protocol/debugger/setBreakpoint-options-exception.html: Added.
* inspector-protocol/resources/console-helper.js: Added.
(ConsoleHelper.simplifiedConsoleMessage):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155132 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: Breakpoint Actions
https://bugs.webkit.org/show_bug.cgi?id=120576

Reviewed by Timothy Hatcher.

* UserInterface/Breakpoint.js:
(WebInspector.Breakpoint):
(WebInspector.Breakpoint.prototype.get actions):
(WebInspector.Breakpoint.prototype.get options):
(WebInspector.Breakpoint.prototype.get info):
(WebInspector.Breakpoint.prototype._serializableActions):
Saving, restoring, and serialization.

(WebInspector.Breakpoint.prototype.createAction):
(WebInspector.Breakpoint.prototype.recreateAction):
(WebInspector.Breakpoint.prototype.removeAction):
(WebInspector.Breakpoint.prototype.breakpointActionDidChange):
Modifying _actions ivar.

(WebInspector.Breakpoint.prototype._editBreakpointPopoverContentElement):
(WebInspector.Breakpoint.prototype._popoverActionsCreateAddActionButton):
(WebInspector.Breakpoint.prototype._popoverActionsAddActionButtonClicked):
(WebInspector.Breakpoint.prototype._popoverActionsInsertBreakpointActionView):
(WebInspector.Breakpoint.prototype.breakpointActionViewAppendActionView):
(WebInspector.Breakpoint.prototype.breakpointActionViewRemoveActionView):
(WebInspector.Breakpoint.prototype.breakpointActionViewResized):
Popover UI containing breakpoint action views and converting to and from
having no actions.

(WebInspector.Breakpoint.prototype.willDismissPopover):
Cleanup some ivars when the popover dismisses.

* UserInterface/Breakpoint.css:
(.popover .edit-breakpoint-popover-content.wide):
Wider setting when there are actions in the popover.

(.popover .edit-breakpoint-popover-content > table > tr > th):
Keep the title labels at the top of their section.

* UserInterface/BreakpointAction.js:
(WebInspector.BreakpointAction):
(WebInspector.BreakpointAction.prototype.get breakpoint):
(WebInspector.BreakpointAction.prototype.get type):
(WebInspector.BreakpointAction.prototype.get data):
(WebInspector.BreakpointAction.prototype.set data):
(WebInspector.BreakpointAction.prototype.get info):
Very basic BreakpointAction class. Notifies Breakpoint on data changes.
Type changes are not allowed, instead just create a new BreakpointAction.

* UserInterface/BreakpointActionView.css: Added.
(.breakpoint-action-block-header):
(.breakpoint-action-remove-button):
(.breakpoint-action-remove-button:active):
(.breakpoint-action-append-button):
(.breakpoint-action-block-body):
(.breakpoint-action-block-body > input):
(.breakpoint-action-eval-editor):
(.breakpoint-action-eval-editor > .CodeMirror):
(.breakpoint-action-eval-editor > .CodeMirror-scroll):
* UserInterface/BreakpointActionView.js: Added.
(WebInspector.BreakpointActionView):
(WebInspector.BreakpointActionView.displayStringForType):
(WebInspector.BreakpointActionView.prototype.get action):
(WebInspector.BreakpointActionView.prototype.get element):
(WebInspector.BreakpointActionView.prototype._pickerChanged):
(WebInspector.BreakpointActionView.prototype._appendActionButtonClicked):
(WebInspector.BreakpointActionView.prototype._removeActionButtonClicked):
(WebInspector.BreakpointActionView.prototype._updateBody.switch.break):
(WebInspector.BreakpointActionView.prototype._logInputChanged):
(WebInspector.BreakpointActionView.prototype._codeMirrorBlurred):
(WebInspector.BreakpointActionView.prototype._codeMirrorViewportChanged):
UI and form controls for individual breakpoint actions. The view
wraps a single BreakpointAction, and for any actions that could affect
other views the delegate is notified.

* UserInterface/DebuggerManager.js:
(WebInspector.DebuggerManager):
(WebInspector.DebuggerManager.prototype._debuggerBreakpointActionType):
When sending to the backend, make sure to send protocol enums.

* UserInterface/Popover.js:
(WebInspector.Popover.prototype.update):
Update the popover when content changes.

* UserInterface/Images/BreakpointActionAdd.svg: Added.
* UserInterface/Images/BreakpointActionRemove.svg: Added.
* UserInterface/InspectorBackendCommands.js:
* UserInterface/Main.html:
* Localizations/en.lproj/localizedStrings.js:
Misc. New strings, images, includes.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155133 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: Breakpoint Actions
https://bugs.webkit.org/show_bug.cgi?id=120576

Reviewed by Timothy Hatcher.

Give the CodeMirror editor for JavaScript Breakpoint Actions JS Runtime
completions (like window, document, etc.).

The logic was inside of JavaScriptLogViewController but was already
entirely independent. Factor it out into its own class and plug it into
CodeMirrorCompletionController as a "CompletionsProvider".

Because the class hooks into a global event to reset some state, make
it a singleton, so new instances are not leaked.

* UserInterface/Main.html:
* UserInterface/Main.js:
(WebInspector.loaded):
* UserInterface/RuntimeManager.js: Added.
(WebInspector.RuntimeManager):
(WebInspector.RuntimeManager.prototype.evalCallback):
(WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
Move eval in window to new RuntimeManager. A slightly cleaner place to this
since it is used both by the console and JS completions provider.

* UserInterface/CodeMirrorCompletionController.js:
(WebInspector.CodeMirrorCompletionController):
(WebInspector.CodeMirrorCompletionController.prototype.setExtendedCompletionProvider):
(WebInspector.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
Allow a completions provider plugin to completions controller. If one
is available, this supercedes the delegate extend completions path.

* UserInterface/BreakpointActionView.js:
* UserInterface/ConsolePrompt.js:
(WebInspector.ConsolePrompt):
Use the new JS completions provider to get runtime JS completions.
NOTE: ConsolePrompt still needs the delegate path for SQL completions.

* UserInterface/JavaScriptLogViewController.js:
(WebInspector.JavaScriptLogViewController):
(WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted):
* UserInterface/JavaScriptRuntimeCompletionProvider.js: Added.
(WebInspector.JavaScriptRuntimeCompletionProvider):
(get WebInspector.JavaScriptRuntimeCompletionProvider.prototype.):
(get WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded):
Move the JS completions code to a new class. No changes needed.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Enable C++11 wherever we build C++ files that include wtf/Platform.h
https://bugs.webkit.org/show_bug.cgi?id=120782

Reviewed by Andreas Kling.

Source/ThirdParty:

Set CLANG_CXX_LANGUAGE_STANDARD to gnu++0x.

* gtest/xcode/Config/General.xcconfig:

Source/WebCore:

Pass -std=gnu++11 when preprocessing wtf/Platform.h.

* DerivedSources.make:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155135 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix build warning about unused variable.

Unreviewed build fix.

* bindings/js/ScriptDebugServer.cpp:
(WebCore::ScriptDebugServer::evaluateBreakpointAction):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155136 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Rename supportsContext to probablySupportsContext
https://bugs.webkit.org/show_bug.cgi?id=120716
<rdar://problem/14914499>

Reviewed by Antoine Quint.

As decided in: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2013-September/040680.html

Source/WebCore:

* bindings/js/JSHTMLCanvasElementCustom.cpp:
(WebCore::JSHTMLCanvasElement::probablySupportsContext):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::probablySupportsContext):
* html/HTMLCanvasElement.h:
* html/HTMLCanvasElement.idl:

LayoutTests:

* fast/canvas/webgl/canvas-supports-context-expected.txt:
* fast/canvas/webgl/canvas-supports-context.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155137 268f45cc-cd09-0410-ab3c-d52691b4dbfc
iOS build broke with change to make Mac use PDFKit for PDFDocumentImage
https://bugs.webkit.org/show_bug.cgi?id=120771

Reviewed by Anders Carlsson.

* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::createPDFDocument):
Use the (removed in r155069) PLATFORM(MAC) way of making a CGDataProvider from a SharedBuffer
everywhere; this is what iOS was expecting to use (where I accidentally changed behavior),
and it should also work for Windows, the only other USE(CG) platform.

Since we only createPDFDocument() after all data has been received, I'm not
restoring the comment about the SharedBuffer being secretly written to behind its back.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155138 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add new RenderBlockFlow class
https://bugs.webkit.org/show_bug.cgi?id=120777

Reviewed by Simon Fraser.

This patch adds a new RenderBlockFlow class. The idea is to get all of the line/float/margin
code out of RenderBlock and into the subclass, and then we can make RenderBlock an abstract
base. This will save memory for all of the classes that derive from RenderBlock but have
their own layout systems (e.g., flexbox, grid, table), and it will let us tighten up
types to make it more clear when we're talking about block layout code vs. a more generic
block-level object that can have any kind of layout.

The only real change here is that isBlockFlow() has been renamed to isRenderBlockFlow() and
is now checking if the object is a RenderBlockFlow. All of the block subclasses have been patched
to be a RenderBlock or RenderBlockFlow.

* CMakeLists.txt:
* GNUmakefile.list.am:
* Target.pri:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.xcodeproj/project.pbxproj:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
* dom/Position.cpp:
(WebCore::Position::isCandidate):
(WebCore::Position::getInlineBoxAndOffset):
(WebCore::Position::primaryDirection):
* dom/PositionIterator.cpp:
(WebCore::PositionIterator::isCandidate):
* editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::applyInlineStyleToPushDown):
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::addBlockPlaceholderIfNeeded):
* editing/Editor.cpp:
(WebCore::Editor::baseWritingDirectionForSelectionStart):
* editing/FrameSelection.cpp:
(WebCore::caretRenderer):
* editing/TextIterator.cpp:
(WebCore::TextIterator::shouldRepresentNodeOffsetZero):
* editing/TypingCommand.cpp:
(WebCore::TypingCommand::makeEditableRootEmpty):
* editing/htmlediting.cpp:
(WebCore::isBlockFlowElement):
* html/shadow/SliderThumbElement.cpp:
(WebCore::RenderSliderThumb::RenderSliderThumb):
* html/shadow/SliderThumbElement.h:
* rendering/LayoutState.cpp:
(WebCore::LayoutState::LayoutState):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::layoutBlock):
(WebCore::RenderBlock::collapseMargins):
(WebCore::RenderBlock::selectionGaps):
(WebCore::RenderBlock::firstLineBoxBaseline):
(WebCore::RenderBlock::lastLineBoxBaseline):
(WebCore::RenderBlock::firstLineBlock):
(WebCore::findFirstLetterBlock):
(WebCore::shouldCheckLines):
(WebCore::RenderBlock::adjustForBorderFit):
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.cpp: Added.
(WebCore::RenderBlockFlow::RenderBlockFlow):
(WebCore::RenderBlockFlow::~RenderBlockFlow):
* rendering/RenderBlockFlow.h: Added.
(WebCore::toRenderBlockFlow):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::computeRectForRepaint):
(WebCore::RenderBox::positionForPoint):
* rendering/RenderBoxModelObject.h:
(WebCore::RenderBoxModelObject::canHaveBoxInfoInRegion):
* rendering/RenderDeprecatedFlexibleBox.cpp:
(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
(WebCore::RenderDeprecatedFlexibleBox::clearLineClamp):
* rendering/RenderDetailsMarker.cpp:
(WebCore::RenderDetailsMarker::RenderDetailsMarker):
* rendering/RenderDetailsMarker.h:
* rendering/RenderFieldset.cpp:
(WebCore::RenderFieldset::RenderFieldset):
* rendering/RenderFieldset.h:
* rendering/RenderFileUploadControl.cpp:
(WebCore::RenderFileUploadControl::RenderFileUploadControl):
* rendering/RenderFileUploadControl.h:
* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::RenderFlowThread):
* rendering/RenderFlowThread.h:
* rendering/RenderFullScreen.cpp:
* rendering/RenderInline.cpp:
(WebCore::RenderInline::computeRectForRepaint):
* rendering/RenderLineBoxList.cpp:
(WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):
* rendering/RenderMeter.cpp:
(WebCore::RenderMeter::RenderMeter):
* rendering/RenderMeter.h:
* rendering/RenderMultiColumnBlock.cpp:
(WebCore::RenderMultiColumnBlock::RenderMultiColumnBlock):
* rendering/RenderMultiColumnBlock.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::computeRectForRepaint):
(WebCore::RenderObject::styleWillChange):
(WebCore::firstLineStyleForCachedUncachedType):
* rendering/RenderObject.h:
(WebCore::RenderObject::isBR):
(WebCore::RenderObject::isRenderBlockFlow):
* rendering/RenderObjectChildList.cpp:
(WebCore::RenderObjectChildList::insertChildNode):
* rendering/RenderProgress.cpp:
(WebCore::RenderProgress::RenderProgress):
* rendering/RenderProgress.h:
* rendering/RenderRegion.cpp:
(WebCore::RenderRegion::RenderRegion):
* rendering/RenderRegion.h:
* rendering/RenderRuby.cpp:
(WebCore::RenderRubyAsBlock::RenderRubyAsBlock):
* rendering/RenderRuby.h:
* rendering/RenderRubyBase.cpp:
(WebCore::RenderRubyBase::RenderRubyBase):
* rendering/RenderRubyBase.h:
* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::RenderRubyRun):
* rendering/RenderRubyRun.h:
* rendering/RenderRubyText.cpp:
(WebCore::RenderRubyText::RenderRubyText):
* rendering/RenderRubyText.h:
* rendering/RenderTableCaption.cpp:
(WebCore::RenderTableCaption::RenderTableCaption):
* rendering/RenderTableCaption.h:
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::RenderTableCell):
* rendering/RenderTableCell.h:
* rendering/RenderTextControl.cpp:
(WebCore::RenderTextControl::RenderTextControl):
* rendering/RenderTextControl.h:
* rendering/RenderTextControlSingleLine.h:
(WebCore::RenderTextControlInnerBlock::RenderTextControlInnerBlock):
* rendering/RenderTextTrackCue.cpp:
(WebCore::RenderTextTrackCue::RenderTextTrackCue):
* rendering/RenderTextTrackCue.h:
* rendering/RenderView.cpp:
(WebCore::RenderView::RenderView):
* rendering/RenderView.h:
* rendering/svg/RenderSVGBlock.cpp:
(WebCore::RenderSVGBlock::RenderSVGBlock):
* rendering/svg/RenderSVGBlock.h:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155139 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Expected result images are sometimes blank in WKTR
https://bugs.webkit.org/show_bug.cgi?id=120715

Reviewed by Tim Horton.

In WebKitTestRunner, snapshots obtained via windowSnapshotImage() were
sometimes blank if a previous test triggered compositing mode, and the
current test or reference did not require compositing. This happened
because the UI process didn't wait for the web process to complete
its compositing mode switch before snapshotting. Fix by calling
WKPageForceRepaint() before we take the snapshot; this is async,
so we have to spin the runloop for a while.

Remove the Qt/EFL code that does the same thing.

* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::forceRepaintDoneCallback):
(WTR::TestInvocation::dumpResults):
* WebKitTestRunner/TestInvocation.h:
* WebKitTestRunner/cairo/TestInvocationCairo.cpp:
(WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
* WebKitTestRunner/qt/TestInvocationQt.cpp:
(WTR::TestInvocation::dumpPixelsAndCompareWithExpected):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155140 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Make RenderBlock have a protected constructor..
https://bugs.webkit.org/show_bug.cgi?id=120787

Reviewed by Beth Dakin.

Make sure nobody can create a RenderBlock directly. Make sure RenderBlockFlows
get made when a display:block/inline-block/compact/run-in is seen.

* html/HTMLDetailsElement.cpp:
(WebCore::HTMLDetailsElement::createRenderer):
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::createRenderer):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::createAnonymous):
* rendering/RenderBlock.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::createObject):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Make RenderListItem inherit from RenderBlockFlow.
https://bugs.webkit.org/show_bug.cgi?id=120789

Reviewed by Beth Dakin.

* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::RenderListItem):
(WebCore::RenderListItem::willBeDestroyed):
(WebCore::RenderListItem::willBeRemovedFromTree):
(WebCore::RenderListItem::layout):
(WebCore::RenderListItem::addOverflowFromChildren):
(WebCore::RenderListItem::computePreferredLogicalWidths):
(WebCore::RenderListItem::paint):
* rendering/RenderListItem.h:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155142 268f45cc-cd09-0410-ab3c-d52691b4dbfc