WebKit-https.git
5 years agoBuild fix after r188982
achristensen@apple.com [Wed, 26 Aug 2015 23:52:22 +0000 (23:52 +0000)]
Build fix after r188982

* MiniBrowser/win/CMakeLists.txt:
Find .rc files in correct directory.

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

5 years agoWeb Inspector: Implement tracking of active stylesheets in the frontend
joepeck@webkit.org [Wed, 26 Aug 2015 23:48:49 +0000 (23:48 +0000)]
Web Inspector: Implement tracking of active stylesheets in the frontend
https://bugs.webkit.org/show_bug.cgi?id=105828

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

* inspector/protocol/CSS.json:
Add new events for when a StyleSheet is added or removed.

Source/WebCore:

Tests: inspector/css/stylesheet-events-basic.html
       inspector/css/stylesheet-events-imports.html
       inspector/css/stylesheet-events-inspector-stylesheet.html

* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::documentDetachedImpl):
(WebCore::InspectorInstrumentation::activeStyleSheetsUpdatedImpl):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::documentDetached):
(WebCore::InspectorInstrumentation::activeStyleSheetsUpdated):
New hooks for when a document is detached or a document's style sheets are updated.

* dom/Document.cpp:
(WebCore::Document::prepareForDestruction):
Inform the inspector so the CSSAgent can remove document related data.

* dom/DocumentStyleSheetCollection.h:
* dom/DocumentStyleSheetCollection.cpp:
(WebCore::DocumentStyleSheetCollection::updateActiveStyleSheets):
Inform the inspector so the CSSAgent can push stylesheet related events.

(WebCore::DocumentStyleSheetCollection::activeStyleSheetsForInspector): Added.
CSSStyleSheets for the inspector include non-disabled author stylesheets
even if they are empty.

* inspector/InspectorCSSAgent.h:
* inspector/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::reset):
(WebCore::InspectorCSSAgent::documentDetached):
Handling for the new list of known document to CSSStyleSheets map.

(WebCore::InspectorCSSAgent::enable):
When the CSS domain is enabled, tell the frontend about known stylesheets.

(WebCore::InspectorCSSAgent::activeStyleSheetsUpdated):
(WebCore::InspectorCSSAgent::setActiveStyleSheetsForDocument):
Diff the old list of known stylesheets to the new list of stylesheets
for an individual document. Then send appropriate added/removed events.

(WebCore::InspectorCSSAgent::collectAllStyleSheets):
(WebCore::InspectorCSSAgent::collectAllDocumentStyleSheets):
(WebCore::InspectorCSSAgent::collectStyleSheets):
Collect stylesheets recursively. A stylesheet may link to other stylesheets
through @import statements.

(WebCore::InspectorCSSAgent::getAllStyleSheets):
Use the new methods, this command should go away as it will no longer be useful.

(WebCore::InspectorCSSAgent::unbindStyleSheet):
(WebCore::InspectorCSSAgent::bindStyleSheet):
Create an InspectorStyleSheet from a CSSStyleSheet and add to the appropriate lists.
Likewise, unbinding will remove from the appropriate lists.

(WebCore::InspectorCSSAgent::viaInspectorStyleSheet):
(WebCore::InspectorCSSAgent::detectOrigin):
When creating the inspector stylesheet, which is a <style> element,
it will push a StyleSheetAdded event. In the process of binding this
new stylesheet use the m_creatingViaInspectorStyleSheet to add it to
out list of Inspector Stylesheets.

Source/WebInspectorUI:

* UserInterface/Models/CSSStyleSheet.js:
(WebInspector.CSSStyleSheet):
(WebInspector.CSSStyleSheet.prototype.get origin):
(WebInspector.CSSStyleSheet.prototype.updateInfo):
Add a new origin attribute that has been sent from the backend for a while.

* UserInterface/Controllers/CSSStyleManager.js:
(WebInspector.CSSStyleManager.prototype.styleSheetAdded):
(WebInspector.CSSStyleManager.prototype.styleSheetRemoved):
Handle the new events by managing the new CSSStyleSheets.

(WebInspector.CSSStyleManager):
(WebInspector.CSSStyleManager.prototype._mainResourceDidChange):
Reset the legacy fetching flag. Fetching is only needed for legacy backends.

(WebInspector.CSSStyleManager.prototype._fetchInfoForAllStyleSheets):
Include the new origin property in the legacy updateInfo path.

* UserInterface/Protocol/CSSObserver.js:
(WebInspector.CSSObserver.prototype.styleSheetAdded):
(WebInspector.CSSObserver.prototype.styleSheetRemoved):
Forward to the manager.

* UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
(WebInspector.CSSStyleDetailsSidebarPanel):
Refresh the sidebar when stylesheets are added / removed, as that
may affect the style of the select element.

LayoutTests:

* inspector/css/resources/import-level-1.css: Added.
* inspector/css/resources/import-level-2.css: Added.
* inspector/css/resources/stylesheet-events-subframe.html: Added.
* inspector/css/stylesheet-events-basic-expected.txt: Added.
* inspector/css/stylesheet-events-basic.html: Added.
* inspector/css/stylesheet-events-imports-expected.txt: Added.
* inspector/css/stylesheet-events-imports.html: Added.
* inspector/css/stylesheet-events-inspector-stylesheet-expected.txt: Added.
* inspector/css/stylesheet-events-inspector-stylesheet.html: Added.
* inspector/css/stylesheet-events-multiple-documents-expected.txt: Added.
* inspector/css/stylesheet-events-multiple-documents.html: Added.
Tests for different ways that StyleSheets can be added / removed.

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

5 years agoAdd comment to LocaleToScriptMappingDefault.cpp
mmaxfield@apple.com [Wed, 26 Aug 2015 23:21:47 +0000 (23:21 +0000)]
Add comment to LocaleToScriptMappingDefault.cpp
<rdar://problem/22407296>

Unreviewed.

We currently map lang="zh" to USCRIPT_SIMPLIFIED_HAN, which is incorrect.
Instead, we should consult with an external source, such as the user's
language preferences.

* platform/text/LocaleToScriptMappingDefault.cpp:

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

5 years agoCorrect build after r188982.
bfulgham@apple.com [Wed, 26 Aug 2015 22:15:02 +0000 (22:15 +0000)]
Correct build after r188982.

* WebKit.vcxproj/WebKit.sln:

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

5 years agoDistinguish Web IDL callback interfaces from Web IDL callback functions
cdumez@apple.com [Wed, 26 Aug 2015 22:09:29 +0000 (22:09 +0000)]
Distinguish Web IDL callback interfaces from Web IDL callback functions
https://bugs.webkit.org/show_bug.cgi?id=148434

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Add isNull() convenience method on PropertyName.

* runtime/PropertyName.h:
(JSC::PropertyName::isNull):

Source/WebCore:

Distinguish Web IDL callback interfaces [1] from Web IDL callback
functions [2].

One Web-exposed difference is that when using a callback interface,
the user can pass either a function / callable object or a non-callable
object that has a method with the same name as the callback interface
operation:
https://heycam.github.io/webidl/#es-user-objects

When using a callback function, the user needs to pass a function /
callable object:
https://heycam.github.io/webidl/#es-callback-function

This patch adds a new [Callback=FunctionOnly] IDL extended attribute to
indicate that a callback interface should be function-only (i.e. a callback
function in the latest Web IDL specification). Without this IDL extended
attribute, the callback interface will be treated as a regular callback
interface. This will be needed for Bug 148415, as NodeFilter should be
an actual callback interface.

Note that longer term, we should really drop the old-style
[Callback=FunctionOnly] extendd attribute and use actual IDL callback
functions as per the latest Web IDL specification. However, I did not
do this in this patch to minimize patch size.

This patch adds Callback=FunctionOnly] IDL extended attribute to all
our pre-existing callback interfaces so that there is no behavior
change.

       [1] https://heycam.github.io/webidl/#dfn-callback-interface
       [2] https://heycam.github.io/webidl/#idl-callback-functions

* Modules/geolocation/PositionCallback.idl:
* Modules/geolocation/PositionErrorCallback.idl:
* Modules/mediastream/MediaStreamTrackSourcesCallback.idl:
* Modules/mediastream/NavigatorUserMediaErrorCallback.idl:
* Modules/mediastream/NavigatorUserMediaSuccessCallback.idl:
* Modules/mediastream/RTCPeerConnectionErrorCallback.idl:
* Modules/mediastream/RTCSessionDescriptionCallback.idl:
* Modules/mediastream/RTCStatsCallback.idl:
* Modules/notifications/NotificationPermissionCallback.idl:
* Modules/quota/StorageErrorCallback.idl:
* Modules/quota/StorageQuotaCallback.idl:
* Modules/quota/StorageUsageCallback.idl:
* Modules/webaudio/AudioBufferCallback.idl:
* Modules/webdatabase/DatabaseCallback.idl:
* Modules/webdatabase/SQLStatementCallback.idl:
* Modules/webdatabase/SQLStatementErrorCallback.idl:
* Modules/webdatabase/SQLTransactionCallback.idl:
* Modules/webdatabase/SQLTransactionErrorCallback.idl:
* bindings/js/JSCallbackData.cpp:
(WebCore::JSCallbackData::invokeCallback):
* bindings/js/JSCallbackData.h:
* bindings/js/JSCustomSQLStatementErrorCallback.cpp:
(WebCore::JSSQLStatementErrorCallback::handleEvent):
* bindings/scripts/CodeGenerator.pm:
(trim):
(IsFunctionOnlyCallbackInterface):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateParametersCheckExpression):
(GenerateParametersCheck):
(GenerateCallbackImplementation):
* bindings/scripts/IDLAttributes.txt:
* bindings/scripts/test/GObject/WebKitDOMTestCallbackFunction.cpp: Added.
(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestCallbackFunction):
(webkit_dom_test_callback_function_finalize):
(webkit_dom_test_callback_function_constructor):
(webkit_dom_test_callback_function_class_init):
(webkit_dom_test_callback_function_init):
(webkit_dom_test_callback_function_callback_with_no_param):
(webkit_dom_test_callback_function_callback_with_array_param):
(webkit_dom_test_callback_function_callback_with_serialized_script_value_param):
(webkit_dom_test_callback_function_callback_with_non_bool_return_type):
(webkit_dom_test_callback_function_callback_with_string_list):
(webkit_dom_test_callback_function_callback_with_boolean):
(webkit_dom_test_callback_function_callback_requires_this_to_pass):
* bindings/scripts/test/GObject/WebKitDOMTestCallbackFunction.h: Added.
* bindings/scripts/test/GObject/WebKitDOMTestCallbackFunctionPrivate.h: Copied from Source/WebCore/css/MediaQueryListListener.idl.
* bindings/scripts/test/JS/JSTestCallback.cpp:
(WebCore::JSTestCallback::callbackWithNoParam):
(WebCore::JSTestCallback::callbackWithArrayParam):
(WebCore::JSTestCallback::callbackWithSerializedScriptValueParam):
(WebCore::JSTestCallback::callbackWithStringList):
(WebCore::JSTestCallback::callbackWithBoolean):
(WebCore::JSTestCallback::callbackRequiresThisToPass):
* bindings/scripts/test/JS/JSTestCallbackFunction.cpp: Copied from Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp.
(WebCore::JSTestCallbackFunction::JSTestCallbackFunction):
(WebCore::JSTestCallbackFunction::~JSTestCallbackFunction):
(WebCore::JSTestCallbackFunction::callbackWithNoParam):
(WebCore::JSTestCallbackFunction::callbackWithArrayParam):
(WebCore::JSTestCallbackFunction::callbackWithSerializedScriptValueParam):
(WebCore::JSTestCallbackFunction::callbackWithStringList):
(WebCore::JSTestCallbackFunction::callbackWithBoolean):
(WebCore::JSTestCallbackFunction::callbackRequiresThisToPass):
* bindings/scripts/test/JS/JSTestCallbackFunction.h: Added.
(WebCore::JSTestCallbackFunction::create):
(WebCore::JSTestCallbackFunction::scriptExecutionContext):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjConstructor::constructJSTestObj):
(WebCore::JSTestObjConstructor::finishCreation):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionAndOptionalArg):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArg):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod5):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod2): Deleted.
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod10): Deleted.
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsConstructor::constructJSTestTypedefs):
* bindings/scripts/test/ObjC/DOMTestCallbackFunction.h: Copied from Source/WebCore/html/VoidCallback.idl.
* bindings/scripts/test/ObjC/DOMTestCallbackFunction.mm: Added.
(-[DOMTestCallbackFunction dealloc]):
(-[DOMTestCallbackFunction finalize]):
(-[DOMTestCallbackFunction callbackWithNoParam]):
(-[DOMTestCallbackFunction callbackWithArrayParam:]):
(-[DOMTestCallbackFunction callbackWithSerializedScriptValueParam:strArg:]):
(-[DOMTestCallbackFunction callbackWithNonBoolReturnType:]):
(-[DOMTestCallbackFunction customCallback:class6Param:]):
(-[DOMTestCallbackFunction callbackWithStringList:]):
(-[DOMTestCallbackFunction callbackWithBoolean:]):
(-[DOMTestCallbackFunction callbackRequiresThisToPass:testNodeParam:]):
(core):
(kit):
* bindings/scripts/test/ObjC/DOMTestCallbackFunctionInternal.h: Copied from Source/WebCore/html/VoidCallback.idl.
* bindings/scripts/test/TestCallbackFunction.idl: Copied from Source/WebCore/Modules/webdatabase/DatabaseCallback.idl.
* bindings/scripts/test/TestObj.idl:
* css/MediaQueryListListener.idl:
* dom/RequestAnimationFrameCallback.idl:
* dom/StringCallback.idl:
* html/VoidCallback.idl:

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

5 years agoWeb Inspector: Drop iOS 6 Legacy Remote Inspector Support
joepeck@webkit.org [Wed, 26 Aug 2015 22:07:18 +0000 (22:07 +0000)]
Web Inspector: Drop iOS 6 Legacy Remote Inspector Support
https://bugs.webkit.org/show_bug.cgi?id=148456

Reviewed by Timothy Hatcher.

* UserInterface/Base/Main.js:
(WebInspector.loaded):
(WebInspector._updateReloadToolbarButton):
(WebInspector._updateDownloadToolbarButton):
(WebInspector.canArchiveMainFrame):
* UserInterface/Controllers/CSSStyleManager.js:
(WebInspector.CSSStyleManager.prototype._frameURLMapKey):
(WebInspector.CSSStyleManager.prototype._lookupStyleSheet.styleSheetsFetched):
(WebInspector.CSSStyleManager._updateResourceContent.fetchedStyleSheetContent):
(WebInspector.CSSStyleManager.prototype._clearStyleSheetsForResource): Deleted.
* UserInterface/Controllers/DOMTreeManager.js:
(WebInspector.DOMTreeManager.prototype.highlightSelector):
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype._setBreakpoint):
* UserInterface/Controllers/JavaScriptLogViewController.js:
* UserInterface/Controllers/RuntimeManager.js:
(WebInspector.RuntimeManager):
(WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
* UserInterface/Controllers/SourceMapManager.js:
(WebInspector.SourceMapManager.prototype._loadAndParseSourceMap):
* UserInterface/Controllers/StorageManager.js:
(WebInspector.StorageManager):
(WebInspector.StorageManager.prototype._addDOMStorageIfNeeded):
(WebInspector.StorageManager.prototype.domStorageWasUpdated): Deleted.
(WebInspector.StorageManager.prototype._domStorageForIdentifier): Deleted.
(WebInspector.StorageManager.prototype._extraDomainsActivated): Deleted.
* UserInterface/Controllers/TimelineManager.js:
(WebInspector.TimelineManager.prototype._processRecord):
* UserInterface/Models/Breakpoint.js:
(WebInspector.Breakpoint.prototype._editBreakpointPopoverContentElement):
* UserInterface/Models/CSSCompletions.js:
(WebInspector.CSSCompletions):
(WebInspector.CSSCompletions.requestCSSCompletions):
* UserInterface/Models/CSSKeywordCompletions.js:
(WebInspector.CSSKeywordCompletions.addCustomCompletions): Deleted.
* UserInterface/Models/CSSProperty.js:
(WebInspector.CSSProperty):
(WebInspector.CSSProperty.prototype.update):
* UserInterface/Models/CSSRule.js:
(WebInspector.CSSRule.prototype.get matchedSelectors): Deleted.
(WebInspector.CSSRule.prototype.get matchedSelectorText): Deleted.
* UserInterface/Models/DOMNodeStyles.js:
(WebInspector.DOMNodeStyles.prototype.refresh.parseRuleMatchArrayPayload):
(WebInspector.DOMNodeStyles.prototype.refresh.fetchedMatchedStyles):
(WebInspector.DOMNodeStyles.prototype.changeRule.changeText):
(WebInspector.DOMNodeStyles.prototype.changeStyleText):
(WebInspector.DOMNodeStyles.prototype._parseStylePropertyPayload):
(WebInspector.DOMNodeStyles.prototype._parseRulePayload):
(WebInspector.DOMNodeStyles.prototype.changeStyleText.attributeChanged): Deleted.
(WebInspector.DOMNodeStyles.prototype.changeStyleText.fetchedStyleSheetContent.contentDidChange): Deleted.
(WebInspector.DOMNodeStyles.prototype.changeStyleText.fetchedStyleSheetContent): Deleted.
(WebInspector.DOMNodeStyles.prototype._parseSourceRangePayload): Deleted.
(WebInspector.DOMNodeStyles.prototype._parseSelectorListPayload): Deleted.
* UserInterface/Models/DOMStorageObject.js:
* UserInterface/Models/DOMTree.js:
(WebInspector.DOMTree.prototype.requestRootDOMNode):
(WebInspector.DOMTree.prototype._requestRootDOMNode):
* UserInterface/Models/DatabaseObject.js:
(WebInspector.DatabaseObject.prototype.executeSQL.queryCallback):
(WebInspector.DatabaseObject.prototype.executeSQL):
(WebInspector.DatabaseObject):
(WebInspector.DatabaseObject.prototype.executeSQL.callback): Deleted.
* UserInterface/Models/ExecutionContext.js:
(WebInspector.ExecutionContext.supported): Deleted.
* UserInterface/Models/IssueMessage.js:
(WebInspector.IssueMessage): Deleted.
* UserInterface/Models/LayoutTimelineRecord.js:
(WebInspector.LayoutTimelineRecord):
(WebInspector.LayoutTimelineRecord.prototype.get width):
(WebInspector.LayoutTimelineRecord.prototype.get height):
(WebInspector.LayoutTimelineRecord.prototype.get area):
(WebInspector.LayoutTimelineRecord.prototype.get x): Deleted.
(WebInspector.LayoutTimelineRecord.prototype.get y): Deleted.
(WebInspector.LayoutTimelineRecord.prototype.get rect): Deleted.
* UserInterface/Models/ProfileNode.js:
* UserInterface/Models/Resource.js:
(WebInspector.Resource.prototype.associateWithScript):
* UserInterface/Models/ScriptTimelineRecord.js:
(WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):
* UserInterface/Models/SourceMapResource.js:
(WebInspector.SourceMapResource.prototype.requestContentFromBackend):
* UserInterface/Models/TextRange.js:
(WebInspector.TextRange.prototype.resolveLinesAndColumns.countNewLineCharacters): Deleted.
(WebInspector.TextRange.prototype.resolveLinesAndColumns): Deleted.
* UserInterface/Models/TimelineRecording.js:
* UserInterface/Protocol/ConsoleObserver.js:
(WebInspector.ConsoleObserver.prototype.messageAdded): Deleted.
* UserInterface/Protocol/DOMStorageObserver.js:
(WebInspector.DOMStorageObserver.prototype.addDOMStorage): Deleted.
(WebInspector.DOMStorageObserver.prototype.updateDOMStorage): Deleted.
* UserInterface/Protocol/DatabaseObserver.js:
(WebInspector.DatabaseObserver.prototype.sqlTransactionSucceeded): Deleted.
(WebInspector.DatabaseObserver.prototype.sqlTransactionFailed): Deleted.
(WebInspector.DatabaseObserver): Deleted.
* UserInterface/Protocol/Legacy/6.0/InspectorBackendCommands.js: Removed.
* UserInterface/Views/CookieStorageContentView.js:
(WebInspector.CookieStorageContentView.prototype._deleteCallback):
(WebInspector.CookieStorageContentView):
* UserInterface/Views/DOMTreeContentView.js:
(WebInspector.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings): Deleted.
* UserInterface/Views/EventListenerSectionGroup.js:
(WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
(WebInspector.EventListenerSectionGroup):
* UserInterface/Views/LayoutTimelineView.js:
(WebInspector.LayoutTimelineView.prototype._showHighlightForRecord):
* UserInterface/Views/QuickConsole.js:
(WebInspector.QuickConsole):
(WebInspector.QuickConsole.prototype._createExecutionContextPathComponentFromFrame):
(WebInspector.QuickConsole.prototype._frameAdded): Deleted.
(WebInspector.QuickConsole.prototype._frameRemoved): Deleted.
(WebInspector.QuickConsole.prototype._frameMainResourceChanged): Deleted.
* UserInterface/Views/ScriptTimelineDataGridNode.js:
(WebInspector.ScriptTimelineDataGridNode.prototype.get data):
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenAnnotator):
(WebInspector.SourceCodeTextEditor.prototype._makeBasicBlockAnnotator):
* Versions/Inspector-iOS-6.0.json: Removed.
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:

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

5 years ago[EFL] Bump cairo version to 1.14.2
ryuan.choi@navercorp.com [Wed, 26 Aug 2015 21:59:40 +0000 (21:59 +0000)]
[EFL] Bump cairo version to 1.14.2
https://bugs.webkit.org/show_bug.cgi?id=148474

Reviewed by Csaba Osztrogonác.

* efl/jhbuild.modules:

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

5 years agoFix crash due to animationDidEnd called on deallocated RemoteLayerTreeHost
wenson_hsieh@apple.com [Wed, 26 Aug 2015 21:54:41 +0000 (21:54 +0000)]
Fix crash due to animationDidEnd called on deallocated RemoteLayerTreeHost
https://bugs.webkit.org/show_bug.cgi?id=148442
<rdar://problem/21609257>

Reviewed by Tim Horton.

A PlatformCAAnimationRemote's backpointer to a deallocated RemoteLayerTreeHost is not
invalidated when its host removes its reference to it.

* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::layerWillBeRemoved): Invalidate a backpointer from the
    PlatformCAAnimationRemotes to the RemoteLayerTreeHost.

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

5 years agoREGRESSION: Safari navigates after a cancelled force click
bdakin@apple.com [Wed, 26 Aug 2015 21:51:12 +0000 (21:51 +0000)]
REGRESSION: Safari navigates after a cancelled force click
https://bugs.webkit.org/show_bug.cgi?id=148491
-and corresponding-
rdar://problem/22394323

Reviewed by Tim Horton.

Source/WebCore:

This regression was introduced on El Capitan because AppKit sends ‘cancel’ to
gesture recognizer BEFORE it sends the mouseUp. So the ImmediateActionStage needs
to track whether a cancel happened after updates or without any updates since they
signify different things.

Don’t perform default behaviors when the stage is ActionCancelledAfterUpdate.
* page/EventHandler.cpp:
(WebCore::EventHandler::handleMouseReleaseEvent):

New possible stages, and new getter for the current stage.
* page/EventHandler.h:
(WebCore::EventHandler::immediateActionStage):

Source/WebKit/mac:

Use the current stage to determine which type of cancel this is.
* WebView/WebImmediateActionController.mm:
(-[WebImmediateActionController immediateActionRecognizerDidCancelAnimation:]):

Source/WebKit2:

Use the current stage to determine which type of cancel this is.
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::immediateActionDidCancel):

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

5 years agoFix failing tests.
andersca@apple.com [Wed, 26 Aug 2015 21:37:43 +0000 (21:37 +0000)]
Fix failing tests.

Add fallback code for the case when iterations is 0.

* platform/graphics/filters/FEConvolveMatrix.cpp:
(WebCore::FEConvolveMatrix::platformApplySoftware):

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

5 years agoCrash when following a Google search link to Twitter with Limit Adult Content enabled
aestes@apple.com [Wed, 26 Aug 2015 21:15:49 +0000 (21:15 +0000)]
Crash when following a Google search link to Twitter with Limit Adult Content enabled
https://bugs.webkit.org/show_bug.cgi?id=147651

Rubber-stamped by Brady Eidson.

Tools:

Taught TestRunner how to decide the navigation policy after a delay.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::decidePolicyForNavigationAction):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setShouldDecideNavigationPolicyAfterDelay):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
(WTR::TestRunner::shouldDecideNavigationPolicyAfterDelay):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::initialize):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::decidePolicyForNavigationAction):
* WebKitTestRunner/TestController.h:
(WTR::TestController::setShouldDecideNavigationPolicyAfterDelay):
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

LayoutTests:

Added a layout test.

* http/tests/contentfiltering/load-substitute-data-from-appcache-expected.txt: Added.
* http/tests/contentfiltering/load-substitute-data-from-appcache.html: Added.
* http/tests/contentfiltering/resources/appcache.html: Added.
* http/tests/contentfiltering/resources/appcache.manifest: Added.
* platform/mac-wk1/TestExpectations:

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

5 years agoUse WorkQueue::concurrentApply in FEConvolveMatrix
andersca@apple.com [Wed, 26 Aug 2015 20:44:04 +0000 (20:44 +0000)]
Use WorkQueue::concurrentApply in FEConvolveMatrix
https://bugs.webkit.org/show_bug.cgi?id=148490

Reviewed by Tim Horton.

Using WorkQueue::concurrentApply lets us simplify the code a lot, and measurements show
no difference in performance. The striding has been slightly tweaked to make more sense
(we no longer divide up the remainder across some of the iterations, instead we just process
it separately last).

* platform/graphics/filters/FEConvolveMatrix.cpp:
(WebCore::FEConvolveMatrix::platformApplySoftware):
(WebCore::FEConvolveMatrix::setInteriorPixelsWorker): Deleted.
* platform/graphics/filters/FEConvolveMatrix.h:

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

5 years agoFix build.
andersca@apple.com [Wed, 26 Aug 2015 20:38:42 +0000 (20:38 +0000)]
Fix build.

* wtf/WorkQueue.cpp:

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

5 years agoUpdate Windows tool install instructions.
bfulgham@apple.com [Wed, 26 Aug 2015 20:29:17 +0000 (20:29 +0000)]
Update Windows tool install instructions.

* building/tools.html:

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

5 years agoMedia Session: make MediaSessionMetadata a class
eric.carlson@apple.com [Wed, 26 Aug 2015 20:29:06 +0000 (20:29 +0000)]
Media Session: make MediaSessionMetadata a class
https://bugs.webkit.org/show_bug.cgi?id=148486

Reviewed by Jer Noble.

Source/WebCore:

No new tests, no observable changes.

* Modules/mediasession/MediaSessionMetadata.h: Make it a class.
* page/ChromeClient.h: struct MediaSessionMetadata -> class MediaSessionMetadata.

Source/WebKit2:

* Shared/WebCoreArgumentCoders.h: struct MediaSessionMetadata -> class MediaSessionMetadata.
* UIProcess/WebPageProxy.h: Ditto.

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

5 years ago[Win] Rename 'WinLauncher' to 'MiniBrowser'
bfulgham@apple.com [Wed, 26 Aug 2015 20:22:43 +0000 (20:22 +0000)]
[Win] Rename 'WinLauncher' to 'MiniBrowser'
https://bugs.webkit.org/show_bug.cgi?id=148485

Reviewed by Alex Christensen

Move the WinLauncher project and source files to a subdirectory
of MiniBrowser. Globally change WinLauncher -> MiniBrowser in the
source code and project files.

* MiniBrowser/MiniBrowser.vcxproj: Copied from WinLauncher/WinLauncher.vcxproj.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowser.ico: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncher.ico.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowser.rc: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncher.rc.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowser.vcxproj: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowser.vcxproj.filters: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.filters.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserCF.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserCFLite.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserCommon.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserDebug.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherDebug.props.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLib.rc: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLib.vcxproj: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLib.vcxproj.filters: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibCommon.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibDebug.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibDebug.props.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibPostBuild.cmd: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibPreBuild.cmd: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibProduction.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibProduction.props.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibRelease.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibRelease.props.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibResource.h: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserPostBuild.cmd: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherPostBuild.cmd.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserPreBuild.cmd: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherPreBuild.cmd.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserProduction.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherProduction.props.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserRelease.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherRelease.props.
* MiniBrowser/MiniBrowser.vcxproj/MiniBrowserResource.h: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherResource.h.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncher.ico: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncher.rc: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncher.vcxproj: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncher.vcxproj.filters: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherCF.props: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherCFLite.props: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherCommon.props: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherDebug.props: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherLib.rc: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherLib.vcxproj: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherLib.vcxproj.filters: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibCommon.props: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibDebug.props: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibPostBuild.cmd: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibPreBuild.cmd: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibProduction.props: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibRelease.props: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibResource.h: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherPostBuild.cmd: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherPreBuild.cmd: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherProduction.props: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherRelease.props: Removed.
* MiniBrowser/MiniBrowser.vcxproj/WinLauncherResource.h: Removed.
* MiniBrowser/win: Copied from WinLauncher.
* MiniBrowser/win/Common.cpp:
* MiniBrowser/win/MiniBrowser.cpp: Copied from WinLauncher/WinLauncher.cpp.
* MiniBrowser/win/MiniBrowser.h: Copied from WinLauncher/WinLauncher.h.
* MiniBrowser/win/MiniBrowserReplace.h: Copied from WinLauncher/WinLauncherReplace.h.
* MiniBrowser/win/MiniBrowserWebHost.cpp: Copied from WinLauncher/WinLauncherWebHost.cpp.
* MiniBrowser/win/MiniBrowserWebHost.h: Copied from WinLauncher/WinLauncherWebHost.h.
* MiniBrowser/win/PageLoadTestClient.cpp:
* MiniBrowser/win/PageLoadTestClient.h:
* MiniBrowser/win/ResourceLoadDelegate.cpp:
* MiniBrowser/win/ResourceLoadDelegate.h:
* MiniBrowser/win/WinLauncher.cpp: Removed.
* MiniBrowser/win/WinLauncher.h: Removed.
* MiniBrowser/win/WinLauncher.vcxproj: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncher.ico: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncher.rc: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncher.vcxproj: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncher.vcxproj.filters: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherCF.props: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherCFLite.props: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherCommon.props: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherDebug.props: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLib.rc: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLib.vcxproj: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibCommon.props: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibDebug.props: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibProduction.props: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibRelease.props: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibResource.h: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherPostBuild.cmd: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherPreBuild.cmd: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherProduction.props: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherRelease.props: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/WinLauncherResource.h: Removed.
* MiniBrowser/win/WinLauncher.vcxproj/small.ico: Removed.
* MiniBrowser/win/WinLauncherReplace.h: Removed.
* MiniBrowser/win/WinLauncherWebHost.cpp: Removed.
* MiniBrowser/win/WinLauncherWebHost.h: Removed.
* MiniBrowser/win/WinMain.cpp:
* WinLauncher: Removed.
* WinLauncher/AccessibilityDelegate.cpp: Removed.
* WinLauncher/AccessibilityDelegate.h: Removed.
* WinLauncher/CMakeLists.txt: Removed.
* WinLauncher/Common.cpp: Removed.
* WinLauncher/DOMDefaultImpl.cpp: Removed.
* WinLauncher/DOMDefaultImpl.h: Removed.
* WinLauncher/PageLoadTestClient.cpp: Removed.
* WinLauncher/PageLoadTestClient.h: Removed.
* WinLauncher/PrintWebUIDelegate.cpp: Removed.
* WinLauncher/PrintWebUIDelegate.h: Removed.
* WinLauncher/ResourceLoadDelegate.cpp: Removed.
* WinLauncher/ResourceLoadDelegate.h: Removed.
* WinLauncher/WebDownloadDelegate.cpp: Removed.
* WinLauncher/WebDownloadDelegate.h: Removed.
* WinLauncher/WinLauncher.cpp: Removed.
* WinLauncher/WinLauncher.h: Removed.
* WinLauncher/WinLauncher.vcxproj: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncher.ico: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncher.rc: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.filters: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherDebug.props: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLibDebug.props: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLibProduction.props: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLibRelease.props: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherPostBuild.cmd: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherPreBuild.cmd: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherProduction.props: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherRelease.props: Removed.
* WinLauncher/WinLauncher.vcxproj/WinLauncherResource.h: Removed.
* WinLauncher/WinLauncher.vcxproj/small.ico: Removed.
* WinLauncher/WinLauncherReplace.h: Removed.
* WinLauncher/WinLauncherWebHost.cpp: Removed.
* WinLauncher/WinLauncherWebHost.h: Removed.
* WinLauncher/WinMain.cpp: Removed.
* WinLauncher/resource.h: Removed.
* WinLauncher/stdafx.cpp: Removed.
* WinLauncher/stdafx.h: Removed.
* win/AssembleBuildLogs/AssembleLogs.cmd:

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

5 years agoAdd and implement WorkQueue::concurrentApply
andersca@apple.com [Wed, 26 Aug 2015 19:44:10 +0000 (19:44 +0000)]
Add and implement WorkQueue::concurrentApply
https://bugs.webkit.org/show_bug.cgi?id=148488

Reviewed by Geoffrey Garen.

WorkQueue::concurrentApply is modeled after dispatch_apply, and on Cocoa it uses dispatch_apply directly.
For other ports there's a generic concurrentApply implemented using our threading primitives.

* wtf/NeverDestroyed.h:
(WTF::LazyNeverDestroyed::operator->):
* wtf/WorkQueue.cpp:
(WTF::WorkQueue::concurrentApply):
* wtf/WorkQueue.h:
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::WorkQueue::concurrentApply):

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

5 years agoUnreviewed.
zandobersek@gmail.com [Wed, 26 Aug 2015 19:30:50 +0000 (19:30 +0000)]
Unreviewed.

Fix the crashes in GTK+'s WebKitTestRunner by setting the process pool
on the API::PageConfiguration object in webkitWebViewBaseCreate().

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseCreate):

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

5 years agoNode::origin should be able to tell you if it's OK to exit
fpizlo@apple.com [Wed, 26 Aug 2015 19:24:41 +0000 (19:24 +0000)]
Node::origin should be able to tell you if it's OK to exit
https://bugs.webkit.org/show_bug.cgi?id=145204

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This is a major change to DFG IR, that makes it easier to reason about where nodes with
speculations can be soundly hoisted.

A program in DFG IR is a sequence of operations that compute the values of SSA variables,
perform effects on the heap or stack, and perform updates to the OSR exit state. Because
effects and OSR exit updates are interleaved, there are points in execution where exiting
simply won't work. For example, we may have some bytecode operation:

    [  24] op_foo loc42 // does something, and puts a value in loc42.

that gets compiled down to a sequence of DFG IR nodes like:

    a: Foo(W:Heap, R:World, bc#24) // writes heap, reads world - i.e. an observable effect.
    b: MovHint(@a, loc42, bc#24)
    c: SetLocal(Check:Int32:@a, loc42, bc#24, exit: bc#26)

Note that we can OSR exit at @a because we haven't yet performed any effects for bc#24 yet and
we have performed all effects for prior bytecode operations. That's what the origin.forExit
being set to "bc#24" guarantees. So, an OSR exit at @a would transfer execution to bc#24 and
this would not be observable. But at @b, if we try to exit to bc#24 as indicated by forExit, we
would end up causing the side effect of bc#24 to execute a second time. This would be
observable, so we cannot do it. And we cannot exit to the next instruction - bc#26 - either,
because @b is responsible for updating the OSR state to indicate that the result of @a should
be put into loc42. It's not until we get to @c that we can exit again.

This is a confusing, but useful, property of DFG IR. It's useful because it allows us to use IR
to spell out how we would have affected the bytecode state, and we use this to implement hard
things like object allocation elimination, where we use IR instructions to indicate what object
allocation and mutation operations we would have performed, and which bytecode variables would
have pointed to those objects. So long as IR allows us to describe how OSR exit state is
updated, there will be points in execution where that state is invalid - especially if the IR
to update exit state is separate from the IR to perform actual effects.

But this property is super confusing! It's difficult to explain that somehow magically, @b is a
bad place to put OSR exits, and that magically we will only have OSR exits at @a. Of course, it
all kind of makes sense - we insert OSR exit checks in phases that *know* where it's safe to
exit - but it's just too opaque. This also gets in the way of more sophisticated
transformations. For example, LICM barely works - it magically knows that loop pre-headers are
good places to exit from, but it has no way of determining if that is actually true. It would
be odd to introduce a restriction that anytime some block qualifies as a pre-header according
to our loop calculator, it must end with a terminal at which it is OK to exit. So, our choices
are to either leave LICM in a magical state and exercise extreme caution when introducing new
optimizations that hoist checks, or to do something to make the "can I exit here" property more
explicit in IR.

We have already, in a separate change, added a NodeOrigin::exitOK property, though it didn't do
anything yet. This change puts exitOK to work, and makes it an integral part of IR. The key
intuition behind this change is that if we know which nodes clobber exit state - i.e. after the
node, it's no longer possible to OSR exit until the exit state is fixed up - then we can figure
out where it's fine to exit. This change mostly adopts the already implicit rule that it's
always safe to exit right at the boundary of exit origins (in between two nodes where
origin.forExit differs), and adds a new node, called ExitOK, which is a kind of declaration
that exit state is good again. When making this change, I struggled with the question of
whether to make origin.exitOK be explicit, or something that we can compute with an analysis.
Of course if we are armed with a clobbersExitState(Node*) function, we can find the places
where it's fine to exit. But this kind of computation could get quite sophisticated if the
nodes belonging to an exit origin are lowered to a control-flow construct. It would also be
harder to see what the original intent was, if we found an error: is the bug that we shouldn't
be clobbering exit state, or that we shouldn't be exiting? This change opts to make exitOK be
an explicit property of IR, so that DFG IR validation will reject any program where exitOK is
true after a node that clobbersExitState(), or if exitOK is true after a node has exitOK set to
false - unless the latter node has a different exit origin or is an ExitOK node. It will also
reject any program where a node mayExit() with !exitOK.

It turns out that this revealed a lot of sloppiness and what almost looked like an outright
bug: the callee property of an inline closure call frame was being set up "as if" by the
callee's op_enter. If we did hoist a check per the old rule - to the boundary of exit origins -
then we would crash because the callee is unknown. It also revealed that LICM could *almost*
get hosed by having a pre-header where there are effects before the jump. I wasn't able to
construct a test case that would crash trunk, but I also couldn't quite prove why such a
program couldn't be constructed. I did fix the issue in loop pre-header creation, and the
validater does catch the issue because of its exitOK assertions.

This doesn't yet add any other safeguards to LICM - that phase still expects that pre-headers
are in place and that they were created in such a way that their terminal origins have exitOK.
It also still keeps the old way of saying "not OK to exit" - having a clear NodeOrigin. In a
later patch I'll remove that and use !exitOK everywhere. Note that I did consider using clear
NodeOrigins to signify that it's not OK to exit, but that would make DFGForAllKills a lot more
expensive - it would have to sometimes search to find nearby forExit origins if the current
node doesn't have it set - and that's a critical phase for DFG compilation performance.
Requiring that forExit is usually set to *something* and that properly shadows the original
bytecode is cheap and easy, so it seemed like a good trade-off.

This change has no performance effect. Its only effect is that it makes the compiler easier to
understand by turning a previously magical concept into an explicit one.

* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
* dfg/DFGAbstractHeap.h:
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGArgumentsEliminationPhase.cpp:
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::setDirect):
(JSC::DFG::ByteCodeParser::currentNodeOrigin):
(JSC::DFG::ByteCodeParser::branchData):
(JSC::DFG::ByteCodeParser::addToGraph):
(JSC::DFG::ByteCodeParser::handleCall):
(JSC::DFG::ByteCodeParser::inlineCall):
(JSC::DFG::ByteCodeParser::handleInlining):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::handlePutById):
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGCFGSimplificationPhase.cpp:
(JSC::DFG::CFGSimplificationPhase::run):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGClobbersExitState.cpp: Added.
(JSC::DFG::clobbersExitState):
* dfg/DFGClobbersExitState.h: Added.
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::emitPutByOffset):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::convertStringAddUse):
(JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):
(JSC::DFG::FixupPhase::fixupGetAndSetLocalsInBlock):
(JSC::DFG::FixupPhase::fixupChecksInBlock):
* dfg/DFGFlushFormat.h:
(JSC::DFG::useKindFor):
(JSC::DFG::uncheckedUseKindFor):
(JSC::DFG::typeFilterFor):
* dfg/DFGGraph.cpp:
(JSC::DFG::printWhiteSpace):
(JSC::DFG::Graph::dumpCodeOrigin):
(JSC::DFG::Graph::dump):
* dfg/DFGGraph.h:
(JSC::DFG::Graph::addSpeculationMode):
* dfg/DFGInsertionSet.cpp:
(JSC::DFG::InsertionSet::insertSlow):
(JSC::DFG::InsertionSet::execute):
* dfg/DFGLoopPreHeaderCreationPhase.cpp:
(JSC::DFG::LoopPreHeaderCreationPhase::run):
* dfg/DFGMayExit.cpp:
(JSC::DFG::mayExit):
(WTF::printInternal):
* dfg/DFGMayExit.h:
* dfg/DFGMovHintRemovalPhase.cpp:
* dfg/DFGNodeOrigin.cpp: Added.
(JSC::DFG::NodeOrigin::dump):
* dfg/DFGNodeOrigin.h:
(JSC::DFG::NodeOrigin::NodeOrigin):
(JSC::DFG::NodeOrigin::isSet):
(JSC::DFG::NodeOrigin::withSemantic):
(JSC::DFG::NodeOrigin::withExitOK):
(JSC::DFG::NodeOrigin::withInvalidExit):
(JSC::DFG::NodeOrigin::takeValidExit):
(JSC::DFG::NodeOrigin::forInsertingAfter):
(JSC::DFG::NodeOrigin::operator==):
(JSC::DFG::NodeOrigin::operator!=):
* dfg/DFGNodeType.h:
* dfg/DFGOSREntrypointCreationPhase.cpp:
(JSC::DFG::OSREntrypointCreationPhase::run):
* dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::OSRExit):
(JSC::DFG::OSRExit::setPatchableCodeOffset):
* dfg/DFGOSRExitBase.h:
* dfg/DFGObjectAllocationSinkingPhase.cpp:
* dfg/DFGPhantomInsertionPhase.cpp:
* dfg/DFGPhase.cpp:
(JSC::DFG::Phase::validate):
(JSC::DFG::Phase::beginPhase):
(JSC::DFG::Phase::endPhase):
* dfg/DFGPhase.h:
(JSC::DFG::Phase::vm):
(JSC::DFG::Phase::codeBlock):
(JSC::DFG::Phase::profiledBlock):
* dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
* dfg/DFGPutStackSinkingPhase.cpp:
* dfg/DFGSSAConversionPhase.cpp:
(JSC::DFG::SSAConversionPhase::run):
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::speculationCheck):
(JSC::DFG::SpeculativeJIT::emitInvalidationPoint):
(JSC::DFG::SpeculativeJIT::terminateSpeculativeExecution):
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::checkArgumentTypes):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGStoreBarrierInsertionPhase.cpp:
* dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):
* dfg/DFGValidate.cpp:
(JSC::DFG::Validate::validate):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::lower):
(JSC::FTL::DFG::LowerDFGToLLVM::compileNode):
(JSC::FTL::DFG::LowerDFGToLLVM::compileUpsilon):
(JSC::FTL::DFG::LowerDFGToLLVM::compileInvalidationPoint):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExit):

Source/WTF:

* wtf/Insertion.h:
(WTF::executeInsertions): Add a useful assertion. This come into play because JSC will use UINT_MAX as "invalid index", and that ought to trigger this assertion.

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

5 years ago[JSC] StructureTransitionTable should eagerly deallocate single-transition WeakImpls.
akling@apple.com [Wed, 26 Aug 2015 19:21:19 +0000 (19:21 +0000)]
[JSC] StructureTransitionTable should eagerly deallocate single-transition WeakImpls.
<https://webkit.org/b/148478>

Reviewed by Geoffrey Garen.

Use a WeakHandleOwner to eagerly deallocate StructureTransitionTable's Weak pointers
when it's using the single-transition optimization and the Structure it transitioned
to has been GC'd.

This prevents Structures from keeping WeakBlocks alive longer than necessary when
they've been transitioned away from but are still in use themselves.

* runtime/Structure.cpp:
(JSC::singleSlotTransitionWeakOwner):
(JSC::StructureTransitionTable::singleTransition):
(JSC::StructureTransitionTable::setSingleTransition):
(JSC::StructureTransitionTable::add):
* runtime/StructureTransitionTable.h:
(JSC::StructureTransitionTable::singleTransition): Deleted.
(JSC::StructureTransitionTable::setSingleTransition): Deleted.

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

5 years ago[Curl] Deadlock when downloading.
peavo@outlook.com [Wed, 26 Aug 2015 19:01:44 +0000 (19:01 +0000)]
[Curl] Deadlock when downloading.
https://bugs.webkit.org/show_bug.cgi?id=148438

Reviewed by Alex Christensen.

A thread should not try locking when it already has got the lock,
this will create a deadlock.

* platform/network/curl/CurlDownload.cpp:
(WebCore::CurlDownloadManager::startThreadIfNeeded):
(WebCore::CurlDownloadManager::stopThread):
(WebCore::CurlDownloadManager::stopThreadIfIdle):
(WebCore::CurlDownload::~CurlDownload):
(WebCore::CurlDownload::moveFileToDestination):
(WebCore::CurlDownload::didFail):
* platform/network/curl/CurlDownload.h:
(WebCore::CurlDownloadManager::getMultiHandle):
(WebCore::CurlDownloadManager::runThread):
(WebCore::CurlDownloadManager::setRunThread):

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

5 years agoWeb Inspector: REGRESSION(r188965): BackendDispatcher loses request ids when called...
bburg@apple.com [Wed, 26 Aug 2015 18:53:36 +0000 (18:53 +0000)]
Web Inspector: REGRESSION(r188965): BackendDispatcher loses request ids when called re-entrantly
https://bugs.webkit.org/show_bug.cgi?id=148480

Reviewed by Joseph Pecoraro.

I added an assertion that m_currentRequestId is Nullopt when dispatch() is called, but this should
not hold if dispatching a backend command while debugger is paused. I will remove the assertion
and add proper scoping for all dispatch() branches.

No new tests, this wrong assert caused inspector/dom-debugger/node-removed.html to crash reliably.

* inspector/InspectorBackendDispatcher.cpp:
(Inspector::BackendDispatcher::dispatch): Cover each exit with an appropriate TemporaryChange scope.

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

5 years ago[Win] Build does not generate debug info.
peavo@outlook.com [Wed, 26 Aug 2015 18:50:06 +0000 (18:50 +0000)]
[Win] Build does not generate debug info.
https://bugs.webkit.org/show_bug.cgi?id=148431

Reviewed by Alex Christensen.

Generate debug info for Windows builds.

* Source/cmake/OptionsWin.cmake:

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

5 years ago[GTK] Disable ACCELERATED_2D_CANVAS by default
mcatanzaro@igalia.com [Wed, 26 Aug 2015 18:46:04 +0000 (18:46 +0000)]
[GTK] Disable ACCELERATED_2D_CANVAS by default
https://bugs.webkit.org/show_bug.cgi?id=148473

Reviewed by Martin Robinson.

Currently ACCELERATED_2D_CANVAS is enabled by default on most systems (which have CairoGL)
but not on Debian (which does not). We've known this was problematic for a while, since it
means we have two different sets of distro-dependent bugs, but never decided whether that
outweighed the benefits of CarioGL or not. I'm making the call now: it's more important to
have the same bugs everywhere. We can turn this on again for other distros when we're ready
to turn it on for Debian.

Also, properly fail the build if ENABLE_ACCELERATED_2D_CANVAS is enabled but CairoGL is not
available.

* Source/cmake/OptionsGTK.cmake:

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

5 years agoRemove the unused *Executable::unlinkCalls() and CodeBlock::unlinkCalls()
commit-queue@webkit.org [Wed, 26 Aug 2015 18:34:38 +0000 (18:34 +0000)]
Remove the unused *Executable::unlinkCalls() and CodeBlock::unlinkCalls()
https://bugs.webkit.org/show_bug.cgi?id=148469

Patch by Sukolsak Sakshuwong <sukolsak@gmail.com> on 2015-08-26
Reviewed by Geoffrey Garen.

We use CodeBlock::unlinkIncomingCalls() to unlink calls.
(...)Executable::unlinkCalls() and CodeBlock::unlinkCalls() are no longer used.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::unlinkCalls): Deleted.
* bytecode/CodeBlock.h:
* runtime/Executable.cpp:
(JSC::EvalExecutable::unlinkCalls): Deleted.
(JSC::ProgramExecutable::unlinkCalls): Deleted.
(JSC::FunctionExecutable::unlinkCalls): Deleted.
* runtime/Executable.h:
(JSC::ScriptExecutable::unlinkCalls): Deleted.

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

5 years agoLayout Test platform/mac/fast/events/content-inset-hit-testing-in-frame.html is flaky
timothy_horton@apple.com [Wed, 26 Aug 2015 18:18:14 +0000 (18:18 +0000)]
Layout Test platform/mac/fast/events/content-inset-hit-testing-in-frame.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=148409

Reviewed by Beth Dakin.

* WebView/WebDynamicScrollBarsView.mm:
(-[WebDynamicScrollBarsView setContentInsets:]):
Explicitly force our NSScrollView to lay out after updating
content insets. We depend on this happening synchronously (specifically,
we need our frame/bounds change callbacks to fire), because the layout
which will happen subsequently needs up-to-date information in order to
correctly a) enable scrollbars and then b) update the scroll position.

* platform/mac/fast/events/resources/iframe-to-hit-test.html:
Adjust the test so that it logs something useful if it fails
instead of complaining about not being run in WKTR/DRT.

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

5 years ago[Win] Simplify menu handling code in WinLauncher
bfulgham@apple.com [Wed, 26 Aug 2015 17:33:49 +0000 (17:33 +0000)]
[Win] Simplify menu handling code in WinLauncher
https://bugs.webkit.org/show_bug.cgi?id=148461

Reviewed by Zalan Bujtas.

Revise 'ToggleMenuItem' to return a boolean value indicating if
it handled the message. Revise WndProc to use this to decide if it
should pass the message on to the default handler, rather than
duplicating the logic in both places.

* WinLauncher/Common.cpp:
(ToggleMenuItem): Return true if the menu item message was handled.
(WndProc): If 'ToggleMenuItem' did not handle the message, pass
the message tothe default handler.

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

5 years ago[Cairo] Accelerated canvas should fall back to non-accelerated canvas on creation...
commit-queue@webkit.org [Wed, 26 Aug 2015 16:44:43 +0000 (16:44 +0000)]
[Cairo] Accelerated canvas should fall back to non-accelerated canvas on creation failure
https://bugs.webkit.org/show_bug.cgi?id=148476

Patch by Jinyoung Hur <hur.ims@navercorp.com> on 2015-08-26
Reviewed by Brent Fulgham.

Cairo-gl backed surface might fail to be created with large dimensions, e.g., 50x32000, depending on
the gl implementations. In case of Mac port, ImageBufferCG falls back to a software surface when it fails to create
IOSurface, an accelerated surface. Though the unaccelerated surface could be slower, it would be better
to create a working surface than nothing.

Because the max dimensions of gl texture might vary among the OpenGL implementations, below test can't guarantee
the verification of behavior difference depending on the running platform.

Test: fast/canvas/canvas-large-dimensions.html

* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBuffer::ImageBuffer):

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

5 years agoWeb Inspector: Command-Enter should evaluate selected JS in Debugger/Sources
nvasilyev@apple.com [Wed, 26 Aug 2015 16:06:21 +0000 (16:06 +0000)]
Web Inspector: Command-Enter should evaluate selected JS in Debugger/Sources
https://bugs.webkit.org/show_bug.cgi?id=148368

Reviewed by Timothy Hatcher.

* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WebInspector.CodeMirrorCompletionController):
(WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):
Evaluate selected text in the console only for JS and HTML resources. HTML resources
should be allowed because they can have commented out (inside <!-- -->) and
inline (onclick="") JavaScript.

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

5 years agoUnreviewed, rolling out r188960.
commit-queue@webkit.org [Wed, 26 Aug 2015 15:53:00 +0000 (15:53 +0000)]
Unreviewed, rolling out r188960.
https://bugs.webkit.org/show_bug.cgi?id=148479

Broke all the tests (Requested by ap on #webkit).

Reverted changeset:

"Add some new emoji with modifiers and new sequence."
https://bugs.webkit.org/show_bug.cgi?id=148202
http://trac.webkit.org/changeset/188960

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

5 years agoWeb Inspector: no need to allocate protocolErrors array for every dispatched backend...
bburg@apple.com [Wed, 26 Aug 2015 14:34:38 +0000 (14:34 +0000)]
Web Inspector: no need to allocate protocolErrors array for every dispatched backend command
https://bugs.webkit.org/show_bug.cgi?id=146466

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Clean up some of the backend dispatcher code, with a focus on eliminating useless allocations
of objects in the common case when no protocol errors happen. This is done by saving the
current id of each request as it is being processed by the backend dispatcher, and tagging any
subsequent errors with that id. This also means we don't have to thread the requestId except
in the async command code path.

This patch also lifts some common code shared between all generated backend command
implementatations into the per-domain dispatch method instead. This reduces generated code size.

To be consistent, this patch standardizes on calling the id of a backend message its 'requestId'.
Requests can be handled synchronously or asynchronously (triggered via the 'async' property).

No new tests, covered by existing protocol tests.

* inspector/InspectorBackendDispatcher.cpp:
(Inspector::BackendDispatcher::CallbackBase::CallbackBase): Split the two code paths for reporting
success and failure.

(Inspector::BackendDispatcher::CallbackBase::sendFailure):
(Inspector::BackendDispatcher::CallbackBase::sendSuccess): Renamed from sendIfActive.
(Inspector::BackendDispatcher::dispatch): Reset counters and current requestId before dispatching.
No need to manually thread the requestId to all reportProtocolError calls.

(Inspector::BackendDispatcher::hasProtocolErrors): Added.
(Inspector::BackendDispatcher::sendResponse):
(Inspector::BackendDispatcher::sendPendingErrors): Send any saved protocol errors to the frontend.
Always send a 'data' member with all of the errors, even if there's just one. We might want to add
more information about errors later.

(Inspector::BackendDispatcher::reportProtocolError): Enqueue a protocol error to be sent later.
(Inspector::BackendDispatcher::getPropertyValue): Remove useless type parameters and nuke most of
the type conversion methods. Use std::function types instead of function pointer types.

(Inspector::castToInteger): Added.
(Inspector::castToNumber): Added.
(Inspector::BackendDispatcher::getInteger):
(Inspector::BackendDispatcher::getDouble):
(Inspector::BackendDispatcher::getString):
(Inspector::BackendDispatcher::getBoolean):
(Inspector::BackendDispatcher::getObject):
(Inspector::BackendDispatcher::getArray):
(Inspector::BackendDispatcher::getValue):
(Inspector::getPropertyValue): Deleted.
(Inspector::AsMethodBridges::asInteger): Deleted.
(Inspector::AsMethodBridges::asDouble): Deleted.
(Inspector::AsMethodBridges::asString): Deleted.
(Inspector::AsMethodBridges::asBoolean): Deleted.
(Inspector::AsMethodBridges::asObject): Deleted.
(Inspector::AsMethodBridges::asArray): Deleted.
(Inspector::AsMethodBridges::asValue): Deleted.
* inspector/InspectorBackendDispatcher.h:
* inspector/scripts/codegen/cpp_generator_templates.py: Extract 'params' object in domain dispatch method.
Omit requestIds where possible. Convert dispatch tables to use NeverDestroyed. Check the protocol error count
to decide whether to abort the dispatch or not, rather than allocating our own errors array.

* inspector/scripts/codegen/cpp_generator_templates.py:
(void):
* inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py: Revert to passing RefPtr<InspectorObject>
since parameters are now being passed rather than the message object. Some commands do not require parameters.
* inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:
(CppBackendDispatcherImplementationGenerator.generate_output):
(CppBackendDispatcherImplementationGenerator._generate_small_dispatcher_switch_implementation_for_domain):
(CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
* inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py:
(ObjCBackendDispatcherHeaderGenerator._generate_objc_handler_declaration_for_command):
* inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:
(ObjCConfigurationImplementationGenerator._generate_handler_implementation_for_command):
(ObjCConfigurationImplementationGenerator._generate_success_block_for_command):
* inspector/scripts/codegen/objc_generator_templates.py:

Rebaseline some protocol generator tests.
* inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
* inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
* inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
* inspector/scripts/tests/expected/enum-values.json-result:
* inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
* inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
* inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
* inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
* inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
* inspector/scripts/tests/expected/type-declaration-array-type.json-result:
* inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
* inspector/scripts/tests/expected/type-declaration-object-type.json-result:
* inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:

Source/WebInspectorUI:

* UserInterface/TestStub.html: Fix a typo, this property exists on ProtocolTest.

LayoutTests:

* inspector/protocol/backend-dispatcher-argument-errors-expected.txt:
* inspector/protocol/backend-dispatcher-argument-errors.html:
Stringify the 'data' member before dumping, since it now contains JSON. Rebaseline it.

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

5 years agoWeb Inspector: Rendering Frames legend item checkbox colors are too light
mattbaker@apple.com [Wed, 26 Aug 2015 10:24:30 +0000 (10:24 +0000)]
Web Inspector: Rendering Frames legend item checkbox colors are too light
https://bugs.webkit.org/show_bug.cgi?id=148465

Reviewed by Timothy Hatcher.

* UserInterface/Views/ChartDetailsSectionRow.js:
(WebInspector.ChartDetailsSectionRow.prototype._addCheckboxColorFilter):
Gamma primitive should use an "exponent" attribute instead of "value".
Increased gamma exponent to 1.4.

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

5 years agoWeb Inspector: Make DOM node attribute changes highlighting less obnoxious
nvasilyev@apple.com [Wed, 26 Aug 2015 10:22:22 +0000 (10:22 +0000)]
Web Inspector: Make DOM node attribute changes highlighting less obnoxious
https://bugs.webkit.org/show_bug.cgi?id=148050

Reviewed by Timothy Hatcher.

* UserInterface/Views/DOMTreeOutline.css:
(@keyframes node-state-changed): Change color to a light green.
(.node-state-changed): Add a slight ease-in for the animation function.

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

5 years agoWeb Inspector: Add Refresh button to Cookie Content View
commit-queue@webkit.org [Wed, 26 Aug 2015 10:18:46 +0000 (10:18 +0000)]
Web Inspector: Add Refresh button to Cookie Content View
https://bugs.webkit.org/show_bug.cgi?id=148468

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2015-08-26
Reviewed by Timothy Hatcher.

* UserInterface/Views/CookieStorageContentView.js:
(WebInspector.CookieStorageContentView):
(WebInspector.CookieStorageContentView.prototype.get navigationItems):
(WebInspector.CookieStorageContentView.prototype._refreshButtonClicked):

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

5 years ago[GStreamer] "method" property for the webkitwebsrc element
philn@webkit.org [Wed, 26 Aug 2015 09:51:11 +0000 (09:51 +0000)]
[GStreamer] "method" property for the webkitwebsrc element
https://bugs.webkit.org/show_bug.cgi?id=148433

Reviewed by Carlos Garcia Campos.

This new property is sometimes used by the GStreamer uridownloader
when time synchronization is required for DASH. The same property
was added to the souphttpsrc element.

* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcSetProperty):
(webKitWebSrcGetProperty):
(webKitWebSrcStart):

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

5 years agoAdd some new emoji with modifiers and new sequence.
enrica@apple.com [Wed, 26 Aug 2015 09:26:14 +0000 (09:26 +0000)]
Add some new emoji with modifiers and new sequence.
https://bugs.webkit.org/show_bug.cgi?id=148202
rdar://problem/21849857

Reviewed by Sam Weinig.

Source/WebCore:

Adding support for some new emoji with modifiers and
one new emoji sequence.

* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::characterRangeCodePath):
* platform/text/CharacterProperties.h:
(WebCore::isEmojiGroupCandidate):
(WebCore::isEmojiModifier):
* platform/text/TextBreakIterator.cpp:
(WebCore::cursorMovementIterator):

LayoutTests:

Updated test to reflect the changes.

* editing/deleting/delete-emoji-expected.txt:
* editing/deleting/delete-emoji.html:

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

5 years agoRemove unused code after r188948
ossy@webkit.org [Wed, 26 Aug 2015 08:38:24 +0000 (08:38 +0000)]
Remove unused code after r188948
https://bugs.webkit.org/show_bug.cgi?id=148467

Reviewed by Gyuyoung Kim.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::platformPreferences): Deleted.

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

5 years ago[EFL][GTK] REGRESSION(r188828): All performance tests and almost all layout tests...
gyuyoung.kim@webkit.org [Wed, 26 Aug 2015 07:03:24 +0000 (07:03 +0000)]
[EFL][GTK] REGRESSION(r188828): All performance tests and almost all layout tests crash
https://bugs.webkit.org/show_bug.cgi?id=148377

Reviewed by Carlos Garcia Campos.

EFL and GTK don't support TestController::platformPreferences() yet which was introduced by r188828.
It caused all crashes of layout test and performance test on EFL and GTK. So this patch implements
TestController::platformPreferences() using WKPageGroupGetPreferences() which was previous thing for
EFL and GTK at the moment.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::platformWillRunTest):
* WebKitTestRunner/efl/TestControllerEfl.cpp:
(WTR::TestController::platformPreferences):
* WebKitTestRunner/gtk/TestControllerGtk.cpp:
(WTR::TestController::platformPreferences):

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

5 years agoAX: Enable accessibility/aria-controls.html test for mac
commit-queue@webkit.org [Wed, 26 Aug 2015 06:49:45 +0000 (06:49 +0000)]
AX: Enable accessibility/aria-controls.html test for mac
https://bugs.webkit.org/show_bug.cgi?id=148458

Patch by Nan Wang <n_wang@apple.com> on 2015-08-25
Reviewed by Chris Fleizach.

Source/WebCore:

Re-enabled accessibility/aria-controls.html test for mac.

* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

Tools:

Implemented ariaControlsElementAtIndex(unsigned index).

* DumpRenderTree/mac/AccessibilityUIElementMac.mm:
(AccessibilityUIElement::ariaControlsElementAtIndex):
(AccessibilityUIElement::disclosedRowAtIndex):
* WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::AccessibilityUIElement::ariaControlsElementAtIndex):

LayoutTests:

* accessibility/aria-controls.html:
* platform/mac/TestExpectations:
* platform/mac/accessibility/aria-controls-expected.txt: Added.

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

5 years agoWeb Inspector: message dispatch metrics should use high-resolution timing data
bburg@apple.com [Wed, 26 Aug 2015 06:29:48 +0000 (06:29 +0000)]
Web Inspector: message dispatch metrics should use high-resolution timing data
https://bugs.webkit.org/show_bug.cgi?id=135467

Reviewed by Timothy Hatcher.

Use performance.now if it's available, otherwise fallback to Date.now().
Format timestamps with fixed decimal point, and sprinkle some ES6.

* UserInterface/Base/Utilities.js:
(timestamp): Added.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass):
(InspectorBackendClass.prototype._sendCommandToBackendWithCallback):
(InspectorBackendClass.prototype._dispatchEvent):
* UserInterface/Protocol/MessageDispatcher.js:
(WebInspector.dispatchNextQueuedMessageFromBackend):
(WebInspector.dispatchMessageFromBackend): Be consistent about using `this`.

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

5 years agoRemove python tests for PassRefPtr
gyuyoung.kim@webkit.org [Wed, 26 Aug 2015 05:47:59 +0000 (05:47 +0000)]
Remove python tests for PassRefPtr
https://bugs.webkit.org/show_bug.cgi?id=148463

Reviewed by Andy Estes.

As we're removing uses of PassRefPtr, we need to remove all python tests for PassRefPtr as well.

* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(PassPtrTest): Deleted.
(PassPtrTest.assert_pass_ptr_check): Deleted.
(PassPtrTest.test_pass_ref_ptr_in_function): Deleted.
(PassPtrTest.test_pass_other_type_ptr_in_function): Deleted.
(PassPtrTest.test_pass_ref_ptr_return_value): Deleted.
(PassPtrTest.test_ref_ptr_parameter_value): Deleted.
(PassPtrTest.test_ref_ptr_member_variable): Deleted.
(PassPtrTest.test_ref_ptr_member_variable.Foo): Deleted.

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

5 years agoMore test gardening of css3/line-break-language-sensitive.
mmaxfield@apple.com [Wed, 26 Aug 2015 05:17:34 +0000 (05:17 +0000)]
More test gardening of css3/line-break-language-sensitive.

Unreviewed.

* css3/line-break-language-sensitive/line-break-auto-hyphens-expected.html:
* css3/line-break-language-sensitive/line-break-auto-hyphens.html:
* css3/line-break-language-sensitive/line-break-auto-sound-marks-expected.html:
* css3/line-break-language-sensitive/line-break-auto-sound-marks.html:

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

5 years ago[iOS] run-webkit-tests fails if watchOS SDK is installed
aestes@apple.com [Wed, 26 Aug 2015 03:41:32 +0000 (03:41 +0000)]
[iOS] run-webkit-tests fails if watchOS SDK is installed
https://bugs.webkit.org/show_bug.cgi?id=148453

Reviewed by David Kilzer.

* Scripts/webkitpy/xcode/simulator.py:
(Simulator): Taught Simulator how to parse watchOS runtimes and devices.
* Scripts/webkitpy/xcode/simulator_unittest.py: Added tests.

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

5 years agoiOS Simulator layout-tests fail to start while cleaning a directory structure if...
commit-queue@webkit.org [Wed, 26 Aug 2015 02:01:42 +0000 (02:01 +0000)]
iOS Simulator layout-tests fail to start while cleaning a directory structure if simulator is already running
https://bugs.webkit.org/show_bug.cgi?id=148197
rdar://problem/22334382

Patch by Aakash Jain <aakash_jain@apple.com> on 2015-08-25
Reviewed by Daniel Bates.

* BuildSlaveSupport/kill-old-processes: Add Simulator to the list of processes to kill (for iOS builders).
* Scripts/webkitpy/port/ios.py:
(IOSSimulatorPort): Converted bundle id com.apple.iphonesimulator to a variable SIMULATOR_BUNDLE_ID.
(IOSSimulatorPort._quitIOSSimulator): Common function to quit iOS Simulator.
(IOSSimulatorPort.clean_up_test_run): Quit the simulator during the cleanup.
(IOSSimulatorPort.check_sys_deps): No need to quit the simulator here as its now being quit in reset_preferences().
(IOSSimulatorPort.reset_preferences): Quit the simulator before trying to delete associated data directory.

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

5 years agoAX: accessibility/mac/misspelled-attributed-string.html is flaky
commit-queue@webkit.org [Wed, 26 Aug 2015 01:35:30 +0000 (01:35 +0000)]
AX: accessibility/mac/misspelled-attributed-string.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=148455

Patch by Nan Wang <n_wang@apple.com> on 2015-08-25
Reviewed by Chris Fleizach.

Updated the test case to be more stable since the client's text checker
might change over time.

* accessibility/mac/misspelled-attributed-string-expected.txt:
* accessibility/mac/misspelled-attributed-string.html:
* platform/mac/TestExpectations:

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

5 years agoRemove PassRefPtr style check rule
gyuyoung.kim@webkit.org [Wed, 26 Aug 2015 01:02:54 +0000 (01:02 +0000)]
Remove PassRefPtr style check rule
https://bugs.webkit.org/show_bug.cgi?id=148432

Reviewed by Andreas Kling.

PassRefPtr is being removed. Thus style rule needs to be removed as well.

* Scripts/webkitpy/style/checkers/cpp.py:
(_check_parameter_name_against_text): Deleted.
(check_function_definition_and_pass_ptr): Deleted.
(check_function_definition): Deleted.
(check_pass_ptr_usage): Deleted.
(process_line): Deleted.
(CppChecker): Deleted.

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

5 years ago[Win] Expose "Inverted Colors" option in WinLauncher
bfulgham@apple.com [Wed, 26 Aug 2015 00:16:02 +0000 (00:16 +0000)]
[Win] Expose "Inverted Colors" option in WinLauncher
https://bugs.webkit.org/show_bug.cgi?id=148451

Reviewed by Tim Horton.

Add the ability to toggle the "Inverted Colors" preference
in WinLauncher.

* WinLauncher/Common.cpp:
(ToggleMenuItem): Toggle the feature when the menu item
is selected.
(WndProc): Recognize the new menu option.
* WinLauncher/WinLauncher.cpp:
(WinLauncher::setToDefaultPreferences): Launch with "Invert
Colors" turned off.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc: Add menu
entry for "Invert Colors".
* WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h:

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

5 years agoUnreviewed, rolling out r188919.
commit-queue@webkit.org [Tue, 25 Aug 2015 23:45:12 +0000 (23:45 +0000)]
Unreviewed, rolling out r188919.
https://bugs.webkit.org/show_bug.cgi?id=148452

broke build (Requested by alexchristensen on #webkit).

Reverted changeset:

"[Win] Build does not generate debug info."
https://bugs.webkit.org/show_bug.cgi?id=148431
http://trac.webkit.org/changeset/188919

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

5 years agoUsing the filter functional notation for background images results in wrong backgroun...
zalan@apple.com [Tue, 25 Aug 2015 22:44:45 +0000 (22:44 +0000)]
Using the filter functional notation for background images results in wrong background-size rendering
https://bugs.webkit.org/show_bug.cgi?id=148221
rdar://problem/22379518

Reviewed by Daniel Bates.

Do not ignore the size argument, when the filter image is being drawn onto the context.
When the size is ignored, we end up painting the image with its native size while the filter
is applied on the size of the generated image.

Source/WebCore:

Test: fast/filter-image/background-filter-image.html

* css/CSSFilterImageValue.cpp:
(WebCore::CSSFilterImageValue::image):

LayoutTests:

* fast/filter-image/background-filter-image-expected.html: Added.
* fast/filter-image/background-filter-image.html: Added.

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

5 years agoSpeculative build fix.
bdakin@apple.com [Tue, 25 Aug 2015 22:01:18 +0000 (22:01 +0000)]
Speculative build fix.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):

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

5 years agoLets rename codeOriginIndex to callSiteIndex and get rid of CallFrame::Location.
saambarati1@gmail.com [Tue, 25 Aug 2015 19:40:46 +0000 (19:40 +0000)]
Lets rename codeOriginIndex to callSiteIndex and get rid of CallFrame::Location.
https://bugs.webkit.org/show_bug.cgi?id=148213

Reviewed by Filip Pizlo.

This patch introduces a struct called CallSiteIndex which is
used as a wrapper for a 32-bit int to place things in the tag for ArgumentCount
in the call frame. On 32-bit we place Instruction* into this slot for LLInt and Basline.
For 32-bit DFG we place a an index into the code origin table in this slot.
On 64-bit we place a bytecode offset into this slot for LLInt and Baseline.
On 64-bit we place the index into the code origin table in this slot in the
DFG/FTL.

This patch also gets rid of the encoding scheme that describes if something is a
bytecode index or a code origin table index. This information can always
be determined based on the CodeBlock's' JITType.

StructureStubInfo now also has a CallSiteIndex which it stores to
the call frame when making a call.

* bytecode/CodeBlock.h:
(JSC::CodeBlock::hasCodeOrigins):
(JSC::CodeBlock::canGetCodeOrigin):
(JSC::CodeBlock::codeOrigin):
(JSC::CodeBlock::addFrequentExitSite):
* bytecode/StructureStubInfo.h:
(JSC::StructureStubInfo::StructureStubInfo):
* dfg/DFGCommonData.cpp:
(JSC::DFG::CommonData::notifyCompilingStructureTransition):
(JSC::DFG::CommonData::addCodeOrigin):
(JSC::DFG::CommonData::shrinkToFit):
* dfg/DFGCommonData.h:
(JSC::DFG::CommonData::CommonData):
* dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::setEndOfCode):
(JSC::DFG::JITCompiler::addCallSite):
(JSC::DFG::JITCompiler::emitStoreCodeOrigin):
* dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileIn):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):
* ftl/FTLCompile.cpp:
(JSC::FTL::mmAllocateDataSection):
* ftl/FTLInlineCacheDescriptor.h:
(JSC::FTL::InlineCacheDescriptor::InlineCacheDescriptor):
(JSC::FTL::InlineCacheDescriptor::stackmapID):
(JSC::FTL::InlineCacheDescriptor::callSiteIndex):
(JSC::FTL::InlineCacheDescriptor::uid):
(JSC::FTL::GetByIdDescriptor::GetByIdDescriptor):
(JSC::FTL::PutByIdDescriptor::PutByIdDescriptor):
(JSC::FTL::CheckInDescriptor::CheckInDescriptor):
(JSC::FTL::InlineCacheDescriptor::codeOrigin): Deleted.
* ftl/FTLLink.cpp:
(JSC::FTL::link):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::compilePutById):
(JSC::FTL::DFG::LowerDFGToLLVM::compileIn):
(JSC::FTL::DFG::LowerDFGToLLVM::getById):
(JSC::FTL::DFG::LowerDFGToLLVM::callPreflight):
* ftl/FTLSlowPathCall.cpp:
(JSC::FTL::storeCodeOrigin):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::currentVPC):
(JSC::CallFrame::setCurrentVPC):
(JSC::CallFrame::callSiteBitsAsBytecodeOffset):
(JSC::CallFrame::bytecodeOffset):
(JSC::CallFrame::codeOrigin):
(JSC::CallFrame::topOfFrameInternal):
(JSC::CallFrame::locationAsBytecodeOffset): Deleted.
(JSC::CallFrame::setLocationAsBytecodeOffset): Deleted.
(JSC::CallFrame::bytecodeOffsetFromCodeOriginIndex): Deleted.
* interpreter/CallFrame.h:
(JSC::CallSiteIndex::CallSiteIndex):
(JSC::CallSiteIndex::bits):
(JSC::ExecState::returnPCOffset):
(JSC::ExecState::abstractReturnPC):
(JSC::ExecState::topOfFrame):
(JSC::ExecState::setCallerFrame):
(JSC::ExecState::setScope):
(JSC::ExecState::currentVPC): Deleted.
(JSC::ExecState::setCurrentVPC): Deleted.
* interpreter/CallFrameInlines.h:
(JSC::CallFrame::callSiteBitsAreBytecodeOffset):
(JSC::CallFrame::callSiteBitsAreCodeOriginIndex):
(JSC::CallFrame::callSiteAsRawBits):
(JSC::CallFrame::callSiteIndex):
(JSC::CallFrame::hasActivation):
(JSC::CallFrame::Location::encode): Deleted.
(JSC::CallFrame::Location::decode): Deleted.
(JSC::CallFrame::Location::encodeAsBytecodeOffset): Deleted.
(JSC::CallFrame::Location::encodeAsBytecodeInstruction): Deleted.
(JSC::CallFrame::Location::encodeAsCodeOriginIndex): Deleted.
(JSC::CallFrame::Location::isBytecodeLocation): Deleted.
(JSC::CallFrame::Location::isCodeOriginIndex): Deleted.
(JSC::CallFrame::hasLocationAsBytecodeOffset): Deleted.
(JSC::CallFrame::hasLocationAsCodeOriginIndex): Deleted.
(JSC::CallFrame::locationAsRawBits): Deleted.
(JSC::CallFrame::setLocationAsRawBits): Deleted.
(JSC::CallFrame::locationAsBytecodeOffset): Deleted.
(JSC::CallFrame::setLocationAsBytecodeOffset): Deleted.
(JSC::CallFrame::locationAsCodeOriginIndex): Deleted.
* interpreter/StackVisitor.cpp:
(JSC::StackVisitor::readFrame):
(JSC::StackVisitor::readNonInlinedFrame):
(JSC::StackVisitor::Frame::print):
* jit/JITCall.cpp:
(JSC::JIT::compileOpCall):
* jit/JITCall32_64.cpp:
(JSC::JIT::compileOpCall):
* jit/JITInlineCacheGenerator.cpp:
(JSC::garbageStubInfo):
(JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITByIdGenerator::generateFastPathChecks):
(JSC::JITGetByIdGenerator::JITGetByIdGenerator):
(JSC::JITGetByIdGenerator::generateFastPath):
(JSC::JITPutByIdGenerator::JITPutByIdGenerator):
* jit/JITInlineCacheGenerator.h:
(JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
(JSC::JITInlineCacheGenerator::stubInfo):
(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITGetByIdGenerator::JITGetByIdGenerator):
(JSC::JITPutByIdGenerator::JITPutByIdGenerator):
* jit/JITInlines.h:
(JSC::JIT::updateTopCallFrame):
* jit/JITOperations.cpp:
(JSC::getByVal):
(JSC::tryGetByValOptimize):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emitGetByValWithCachedId):
(JSC::JIT::emitPutByValWithCachedId):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_put_by_id):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emitGetByValWithCachedId):
(JSC::JIT::emitPutByValWithCachedId):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_put_by_id):
* jit/Repatch.cpp:
(JSC::generateByIdStub):

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

5 years agoIconDatabase: syncThreadMainLoop() is unlocking m_syncLock twice when thread terminat...
commit-queue@webkit.org [Tue, 25 Aug 2015 19:16:08 +0000 (19:16 +0000)]
IconDatabase: syncThreadMainLoop() is unlocking m_syncLock twice when thread termination is requested
https://bugs.webkit.org/show_bug.cgi?id=148429

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2015-08-25
Reviewed by Filip Pizlo.

The lock is released an locked on every loop iteration, and then
unlocked again after the loop. There's an early break in the loop
when thread termination is requested that happens after the lock
is released but before is locked again, so that the unlock after
the loop is trying to unlock the lock again. This was not a
problem before, but the new Lock has an assertion to ensure that a
lock is not released twice.

* loader/icon/IconDatabase.cpp:
(WebCore::IconDatabase::syncThreadMainLoop): Clean up the thread
and return instead of breaking the loop when thread termination is
requested.

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

5 years ago[Mac] accessibility/document-attributes.html fails
commit-queue@webkit.org [Tue, 25 Aug 2015 19:14:55 +0000 (19:14 +0000)]
[Mac] accessibility/document-attributes.html fails
https://bugs.webkit.org/show_bug.cgi?id=116636

Patch by Nan Wang <n_wang@apple.com> on 2015-08-25
Reviewed by Chris Fleizach.

Source/WebCore:

Re-enabled accessibility/document-attributes.html test.

* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

Tools:

Implemented documentURI() and documentEncoding().

* DumpRenderTree/mac/AccessibilityUIElementMac.mm:
(AccessibilityUIElement::documentEncoding):
(AccessibilityUIElement::documentURI):
* WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::AccessibilityUIElement::documentEncoding):
(WTR::AccessibilityUIElement::documentURI):

LayoutTests:

* platform/mac/TestExpectations:

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

5 years ago[GTK] r186800 broke the build on Ubuntu 14.04
mcatanzaro@igalia.com [Tue, 25 Aug 2015 19:13:39 +0000 (19:13 +0000)]
[GTK] r186800 broke the build on Ubuntu 14.04
https://bugs.webkit.org/show_bug.cgi?id=147559

Reviewed by Martin Robinson.

* Source/cmake/FindGTK3.cmake: Always define GTK3_SUPPORTS_X11 and GTK3_SUPPORTS_WAYLAND.
* Source/cmake/OptionsGTK.cmake: Autodetect support for X11 and Wayland backends.

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

5 years agoFunction.prototype.toString is incorrect for ArrowFunction
commit-queue@webkit.org [Tue, 25 Aug 2015 19:10:29 +0000 (19:10 +0000)]
Function.prototype.toString is incorrect for ArrowFunction
https://bugs.webkit.org/show_bug.cgi?id=148148

Source/JavaScriptCore:

Patch by Aleksandr Skachkov <gskachkov@gmail.com> on 2015-08-25
Reviewed by Saam Barati.

Added correct support of toString() method for arrow function.

* parser/ASTBuilder.h:
(JSC::ASTBuilder::createFunctionMetadata):
(JSC::ASTBuilder::createArrowFunctionExpr):
* parser/Nodes.cpp:
(JSC::FunctionMetadataNode::FunctionMetadataNode):
* parser/Nodes.h:
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::Parser<LexerType>::parseFunctionInfo):
* parser/SyntaxChecker.h:
(JSC::SyntaxChecker::createFunctionMetadata):
* runtime/FunctionPrototype.cpp:
(JSC::functionProtoFuncToString):
* tests/stress/arrowfunction-tostring.js: Added.

LayoutTests:

Patch by Skachkov Oleksandr <gskachkov@gmail.com> on 2015-08-25
Reviewed by Saam Barati.

Added test of toString() method.

* js/arrowfunction-tostring-expected.txt: Added.
* js/arrowfunction-tostring.html: Added.
* js/script-tests/arrowfunction-tostring.js: Added.

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

5 years agoTest gardening
mmaxfield@apple.com [Tue, 25 Aug 2015 19:07:54 +0000 (19:07 +0000)]
Test gardening
<rdar://problem/22420410>

Unreviewed.

Updating test expected results according to Kinsoku Shori.

* css3/line-break-language-sensitive/line-break-auto-hyphens-expected.html:
* css3/line-break-language-sensitive/line-break-auto-sound-marks-expected.html:

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

5 years agoCallee can be incorrectly overridden when it's captured
saambarati1@gmail.com [Tue, 25 Aug 2015 18:40:14 +0000 (18:40 +0000)]
Callee can be incorrectly overridden when it's captured
https://bugs.webkit.org/show_bug.cgi?id=148400

Reviewed by Filip Pizlo.

We now resort to always creating the function name scope
when the function name is in scope. Because the bytecode
generator now has a notion of local lexical scoping,
this incurs no runtime penalty for function expression names
that aren't heap allocated. If they are heap allocated,
this means we may now have one more scope on the runtime
scope stack than before. This modification simplifies the
callee initialization code and uses the lexical scoping constructs
to implement this. This implementation also ensures
that everything Just Works for function's with default
parameter values. Before this patch, IIFE functions
with default parameter values and a captured function
name would crash JSC.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::pushLexicalScopeInternal):
(JSC::BytecodeGenerator::popLexicalScopeInternal):
(JSC::BytecodeGenerator::variable):
(JSC::BytecodeGenerator::resolveType):
(JSC::BytecodeGenerator::emitThrowTypeError):
(JSC::BytecodeGenerator::emitPushFunctionNameScope):
(JSC::BytecodeGenerator::emitReadOnlyExceptionIfNeeded):
* bytecompiler/BytecodeGenerator.h:
(JSC::Variable::isReadOnly):
(JSC::Variable::isSpecial):
(JSC::Variable::isConst):
(JSC::Variable::setIsReadOnly):
* bytecompiler/NodesCodegen.cpp:
(JSC::PostfixNode::emitResolve):
(JSC::PrefixNode::emitResolve):
(JSC::ReadModifyResolveNode::emitBytecode):
(JSC::AssignResolveNode::emitBytecode):
(JSC::BindingNode::bindValue):
* tests/stress/IIFE-es6-default-parameters.js: Added.
(assert):
(.):
* tests/stress/IIFE-function-name-captured.js: Added.
(assert):
(.):

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

5 years agoUnreviewed, fix typo introduced in r188917
cdumez@apple.com [Tue, 25 Aug 2015 18:38:14 +0000 (18:38 +0000)]
Unreviewed, fix typo introduced in r188917

* TestExpectations:

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

5 years agoLong press gesture recognizer should adjust delay based on other recognizers
bdakin@apple.com [Tue, 25 Aug 2015 18:19:10 +0000 (18:19 +0000)]
Long press gesture recognizer should adjust delay based on other recognizers
https://bugs.webkit.org/show_bug.cgi?id=148402
-and corresponding-
rdar://problem/22278723

Reviewed by Tim Horton.

Call _setAdjustsDelayBasedOnOtherRecognizers with a value of YES.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):

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

5 years agoFix the !ENABLE(VIDEO) build after r188693
ossy@webkit.org [Tue, 25 Aug 2015 18:13:05 +0000 (18:13 +0000)]
Fix the !ENABLE(VIDEO) build after r188693
https://bugs.webkit.org/show_bug.cgi?id=148424

Reviewed by Tim Horton.

* page/ChromeClient.h:

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

5 years ago[iOS] Don't clear AVPlayerItem when pausing if AirPlay is active
eric.carlson@apple.com [Tue, 25 Aug 2015 18:10:19 +0000 (18:10 +0000)]
[iOS] Don't clear AVPlayerItem when pausing if AirPlay is active
https://bugs.webkit.org/show_bug.cgi?id=148319

Reviewed by Jer Noble.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::purgeBufferedDataIfPossible): Do nothing if the session
  is allowed to load data when in the background and we are not under memory pressure.

* platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::sessionCanLoadMedia): Call base class.

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

5 years agoFix the !ENABLE(CSS_REGIONS) build after r188663
ossy@webkit.org [Tue, 25 Aug 2015 18:04:10 +0000 (18:04 +0000)]
Fix the !ENABLE(CSS_REGIONS) build after r188663
https://bugs.webkit.org/show_bug.cgi?id=148425

Reviewed by Chris Dumez.

* bindings/js/JSDOMNamedFlowCollectionCustom.cpp:

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

5 years agoWheel events stop propagating when target element is removed from DOM
bfulgham@apple.com [Tue, 25 Aug 2015 18:03:00 +0000 (18:03 +0000)]
Wheel events stop propagating when target element is removed from DOM
https://bugs.webkit.org/show_bug.cgi?id=148384
<rdar://problem/19732211>

Reviewed by David Hyatt.

Source/WebCore:

Tested by tiled-drawing/scrolling/latched-to-deleted-node.html

We need to reset our latching state if the targeted node is removed from the DOM.
Add a check in 'platformPrepareForWheelEvents' that checks if the expected latching
target node was already removed from the DOM. If it was, we should not send events
to it, and should reset latching state so we can attach to the next relevant node.

* dom/Element.cpp:
(WebCore::Element::removedFrom): Remove any latched wheel event state objects that
match the current element.
* page/MainFrame.cpp:
(WebCore::MainFrame::removeLatchingStateForTarget): Remove any latched wheel event
state structures that match the passed wheel event target.
* page/MainFrame.h:

LayoutTests:

* tiled-drawing/scrolling/latched-to-deleted-node-expected.txt: Added.
* tiled-drawing/scrolling/latched-to-deleted-node.html: Added.

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

5 years ago[Win] Build does not generate debug info.
peavo@outlook.com [Tue, 25 Aug 2015 18:01:58 +0000 (18:01 +0000)]
[Win] Build does not generate debug info.
https://bugs.webkit.org/show_bug.cgi?id=148431

Reviewed by Brent Fulgham.

Generate debug info for Windows builds.

* Source/cmake/OptionsWin.cmake:

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

5 years agoFix crash due to search field disappearing when showing results menu
wenson_hsieh@apple.com [Tue, 25 Aug 2015 18:00:02 +0000 (18:00 +0000)]
Fix crash due to search field disappearing when showing results menu
https://bugs.webkit.org/show_bug.cgi?id=148410
<rdar://problem/22399850>

Reviewed by Brent Fulgham.

When clicking on the results button of a search field that hides upon being focused, WebKit will crash because we
attempt to toggle the results menu using the search field's renderer which is null. This is addressed by adding a null
check to make sure the search field has not been hidden before toggling the menu.

Test: fast/forms/search/search-results-hidden-crash.html

* html/shadow/TextControlInnerElements.cpp:
(WebCore::SearchFieldResultsButtonElement::defaultEventHandler): Add a null check for the search field's renderer.

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

5 years agocompareDocumentPosition() should report PRECEDING or FOLLOWING information even if...
cdumez@apple.com [Tue, 25 Aug 2015 17:58:27 +0000 (17:58 +0000)]
compareDocumentPosition() should report PRECEDING or FOLLOWING information even if nodes are disconnected
https://bugs.webkit.org/show_bug.cgi?id=119316

Reviewed by Darin Adler.

Source/WebCore:

As the latest DOM specification, compareDocumentPosition() should report
PRECEDING or FOLLOWING information even if nodes are disconnected:
- http://dom.spec.whatwg.org/#dom-node-comparedocumentposition

This behavior is consistent with both IE10, Firefox and Chrome.

The implementation relies on the comparison of cryptographic hashes
(SHA1) of the Node pointers so that the results returned by the function
are consistent. We don't compare Node pointers directly as it was done
previously in r153660 to avoid leaking information about our memory
model to the Web.

Test: fast/dom/compare-document-position-disconnected-nodes.html
W3C Test suite: http://w3c-test.org/dom/nodes/Node-compareDocumentPosition.html

* dom/Node.cpp:
(WebCore::hashPointer):
(WebCore::compareDetachedElementsPosition):
(WebCore::Node::compareDocumentPosition):

LayoutTests:

Update fast/dom/compare-document-position-disconnected-nodes.html to check that compareDocumentPosition()
now returns one of the following values for disconnected nodes:
- DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_PRECEDING
- DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_FOLLOWING

* TestExpectations:
Several dom/xhtml/level3 are skipped and marked as WonfFix because they are outdated and no longer match
the latest DOM specification. They expect compareDocumentPosition() not to return PRECEDING / FOLLOWING
information for disconnected nodes.

* dom/xhtml/level3/core/nodecomparedocumentposition38-expected.txt:
* fast/dom/compare-document-position-disconnected-nodes-expected.txt:
* fast/dom/compare-document-position-disconnected-nodes.html:
* fast/dom/shadow/compare-document-position-expected.txt:
* fast/dom/shadow/compare-document-position.html:

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

5 years agoWeb Inspector: Rendering Frames pie chart should use the needsLayout/updateLayout...
mattbaker@apple.com [Tue, 25 Aug 2015 17:55:07 +0000 (17:55 +0000)]
Web Inspector: Rendering Frames pie chart should use the needsLayout/updateLayout idiom
https://bugs.webkit.org/show_bug.cgi?id=148412

Reviewed by Timothy Hatcher.

* UserInterface/Views/ChartDetailsSectionRow.js:
(WebInspector.ChartDetailsSectionRow):
(WebInspector.ChartDetailsSectionRow.prototype.set innerLabel):
(WebInspector.ChartDetailsSectionRow.prototype.set innerRadius):
Schedule a layout.
(WebInspector.ChartDetailsSectionRow.prototype.set data): Deleted.
Replaced by addItem, setItemValue, and clearItems.
(WebInspector.ChartDetailsSectionRow.prototype.addItem):
(WebInspector.ChartDetailsSectionRow.prototype.setItemValue):
(WebInspector.ChartDetailsSectionRow.prototype.clearItems):
Add/update data points and schedule a layout.
(WebInspector.ChartDetailsSectionRow.prototype._needsLayout):
(WebInspector.ChartDetailsSectionRow.prototype.updateLayout):
Update legend and draw pie chart.
(WebInspector.ChartDetailsSectionRow.prototype._createLegend): Deleted.
Refactored as _updateLegend.
(WebInspector.ChartDetailsSectionRow.prototype._refresh): Deleted.
Refactored as updateLayout.

* UserInterface/Views/TimelineSidebarPanel.js:
(WebInspector.TimelineSidebarPanel):
Add chart data points once.
(WebInspector.TimelineSidebarPanel._refreshFrameSelectionChart):
Update chart values.

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

5 years agoAdd support for callback interfaces using other callback names than "handleEvent"
cdumez@apple.com [Tue, 25 Aug 2015 17:04:47 +0000 (17:04 +0000)]
Add support for callback interfaces using other callback names than "handleEvent"
https://bugs.webkit.org/show_bug.cgi?id=148418

Reviewed by Ryosuke Niwa.

Add support for callback interfaces using other callback names than
"handleEvent" [1].

This is a pre-requirement for Bug 148415, as NodeFilter's callback
function name is "acceptNode":
- https://dom.spec.whatwg.org/#interface-nodefilter

[1] https://heycam.github.io/webidl/#es-user-objects

* bindings/js/JSCallbackData.cpp:
(WebCore::JSCallbackData::invokeCallback):
* bindings/js/JSCallbackData.h:
* bindings/js/JSCustomSQLStatementErrorCallback.cpp:
(WebCore::JSSQLStatementErrorCallback::handleEvent):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateCallbackImplementation):
* bindings/scripts/test/JS/JSTestCallback.cpp:
(WebCore::JSTestCallback::callbackWithNoParam):
(WebCore::JSTestCallback::callbackWithArrayParam):
(WebCore::JSTestCallback::callbackWithSerializedScriptValueParam):
(WebCore::JSTestCallback::callbackWithStringList):
(WebCore::JSTestCallback::callbackWithBoolean):
(WebCore::JSTestCallback::callbackRequiresThisToPass):

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

5 years agoRequire GCC version at least 4.9
ossy@webkit.org [Tue, 25 Aug 2015 17:02:34 +0000 (17:02 +0000)]
Require GCC version at least 4.9
https://bugs.webkit.org/show_bug.cgi?id=148430

Reviewed by Darin Adler.

* wtf/Compiler.h:

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

5 years agoGet rid of custom bindings for RequestAnimationFrameCallback.handleEvent()
cdumez@apple.com [Tue, 25 Aug 2015 10:11:14 +0000 (10:11 +0000)]
Get rid of custom bindings for RequestAnimationFrameCallback.handleEvent()
https://bugs.webkit.org/show_bug.cgi?id=148417

Reviewed by Sam Weinig.

Get rid of custom bindings for RequestAnimationFrameCallback.handleEvent()
by improving the bindings generator. In this case, the problem was that the
bindings generator did not know how to convert a double parameter into a
JSValue. The new code leverages the pre-existing NativeToJSValue subroutine
to do the conversion instead of duplicating complex support here.

* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSRequestAnimationFrameCallbackCustom.cpp: Removed.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateCallbackImplementation):
* bindings/scripts/test/JS/JSTestCallback.cpp:
(WebCore::JSTestCallback::callbackWithArrayParam):
(WebCore::JSTestCallback::callbackWithSerializedScriptValueParam):
(WebCore::JSTestCallback::callbackWithStringList):
(WebCore::JSTestCallback::callbackWithBoolean):
(WebCore::JSTestCallback::callbackRequiresThisToPass):
* dom/RequestAnimationFrameCallback.idl:

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

5 years agoAdd mp4 version of types-changing video.
saambarati1@gmail.com [Tue, 25 Aug 2015 05:31:49 +0000 (05:31 +0000)]
Add mp4 version of types-changing video.

* blog-files/type-profiler-and-code-coverage-profiler/types-changing.mp4: Added.

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

5 years ago[Win] Unreviewed test gardening.
bfulgham@apple.com [Tue, 25 Aug 2015 03:25:53 +0000 (03:25 +0000)]
[Win] Unreviewed test gardening.

Fix another case where the logging string is constructed using the variable 'frame',
but the method argument is not given a name. This causes the global 'frame' value to
be used, producing incorrect output.

* DumpRenderTree/win/FrameLoadDelegate.cpp:
(FrameLoadDelegate::didReceiveServerRedirectForProvisionalLoadForFrame): Use 'frame'
argument.

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

5 years agoClear cairo-gl surface for initialization
commit-queue@webkit.org [Tue, 25 Aug 2015 01:56:46 +0000 (01:56 +0000)]
Clear cairo-gl surface for initialization
https://bugs.webkit.org/show_bug.cgi?id=148307

Patch by Jinyoung Hur <hur.ims@navercorp.com> on 2015-08-24
Reviewed by Martin Robinson.

A cairo-gl surface that is created from an uninitialized texture, should be cleared before use.
A texture memory created by calling glTexImage2D with null data parameter, is uninitialized.
And cairo_gl_surface_create_for_texture doesn't clear the provided texture for initialization.
So it seems safe to clear the surface explicitly.

It is hard to verify this behavior change because the texture memory status is undefined. Undefined means
it can be either initialized or not, though mostly initialized in my experiences.

* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::clearSurface):
(WebCore::createCairoGLSurface):

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

5 years agoAX: Fix accessibility/mac/search-with-frames.html test
commit-queue@webkit.org [Tue, 25 Aug 2015 01:48:18 +0000 (01:48 +0000)]
AX: Fix accessibility/mac/search-with-frames.html test
https://bugs.webkit.org/show_bug.cgi?id=148313

Patch by Nan Wang <n_wang@apple.com> on 2015-08-24
Reviewed by Chris Fleizach.

Fixed the test by making sure that search is performed after all frames
have been loaded.

* accessibility/mac/search-with-frames.html:
* platform/mac/TestExpectations:

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

5 years agoUnreviewed, EFL and GTK build fix since r188895.
gyuyoung.kim@webkit.org [Tue, 25 Aug 2015 01:22:31 +0000 (01:22 +0000)]
Unreviewed, EFL and GTK build fix since r188895.

* CMakeLists.txt: Rename Rename VisitedLinkProvider to VisitedLinkStore.

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

5 years agoMarking more scroll-snap tests as flaky.
ap@apple.com [Tue, 25 Aug 2015 00:33:29 +0000 (00:33 +0000)]
Marking more scroll-snap tests as flaky.

* platform/mac-wk2/TestExpectations:

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

5 years agoRoll out r188827, because it didn't help.
ap@apple.com [Tue, 25 Aug 2015 00:22:59 +0000 (00:22 +0000)]
Roll out r188827, because it didn't help.

* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders.html:

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

5 years agoWeb Inspector: add protocol test for existing error handling performed by the backend
bburg@apple.com [Mon, 24 Aug 2015 23:58:31 +0000 (23:58 +0000)]
Web Inspector: add protocol test for existing error handling performed by the backend
https://bugs.webkit.org/show_bug.cgi?id=147097

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

A new test revealed that the protocol "method" parameter was being parsed in a naive way.
Rewrite it to use String::split and improve error checking to avoid failing later.

* inspector/InspectorBackendDispatcher.cpp:
(Inspector::BackendDispatcher::dispatch):

Source/WebInspectorUI:

Add a way to send raw messages to the backend while still awaiting on responses.
This is necessary to test protocol error handling in the inspector backend.

* UserInterface/Test/InspectorProtocol.js:
(InspectorProtocol.sendCommand):
(InspectorProtocol.awaitCommand): Use awaitMessage internally.
(InspectorProtocol.awaitMessage): Added. Use a dummy requestId if none is supplied.
(InspectorProtocol._sendMessage): Added.
(InspectorProtocol.dispatchMessageFromBackend):
Reject with the error object instead of the error message, so error code/data can be checked.
(InspectorProtocol.sendMessage): Deleted, it is now a private method.

LayoutTests:

Add a bunch of test cases to cover existing error handling by the backend dispatcher.

* inspector/protocol/backend-dispatcher-argument-errors-expected.txt: Added.
* inspector/protocol/backend-dispatcher-argument-errors.html: Added.
* inspector/protocol/backend-dispatcher-malformed-message-errors-expected.txt: Added.
* inspector/protocol/backend-dispatcher-malformed-message-errors.html: Added.

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

5 years agoMark flaky scrolling tests as such.
ap@apple.com [Mon, 24 Aug 2015 23:53:32 +0000 (23:53 +0000)]
Mark flaky scrolling tests as such.

* platform/mac-wk2/TestExpectations:

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

5 years agoRename VisitedLinkProvider to VisitedLinkStore
andersca@apple.com [Mon, 24 Aug 2015 23:51:01 +0000 (23:51 +0000)]
Rename VisitedLinkProvider to VisitedLinkStore
https://bugs.webkit.org/show_bug.cgi?id=148406

Reviewed by Tim Horton.

* DerivedSources.make:
* Shared/API/APIObject.h:
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::copy):
(API::PageConfiguration::visitedLinkStore):
(API::PageConfiguration::setVisitedLinkStore):
(API::PageConfiguration::visitedLinkProvider): Deleted.
(API::PageConfiguration::setVisitedLinkProvider): Deleted.
* UIProcess/API/APIPageConfiguration.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextAddVisitedLink):
(WKContextClearVisitedLinks):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithFrame:configuration:]):
* UIProcess/API/Cocoa/_WKVisitedLinkStore.mm:
(-[_WKVisitedLinkStore init]):
(-[_WKVisitedLinkStore dealloc]):
(-[_WKVisitedLinkStore addVisitedLinkWithURL:]):
(-[_WKVisitedLinkStore removeAll]):
(-[_WKVisitedLinkStore _apiObject]):
* UIProcess/API/Cocoa/_WKVisitedLinkStoreInternal.h:
(WebKit::wrapper):
* UIProcess/VisitedLinkProvider.cpp:
(WebKit::generateIdentifier): Deleted.
(WebKit::VisitedLinkProvider::create): Deleted.
(WebKit::VisitedLinkProvider::~VisitedLinkProvider): Deleted.
(WebKit::VisitedLinkProvider::VisitedLinkProvider): Deleted.
(WebKit::VisitedLinkProvider::addProcess): Deleted.
(WebKit::VisitedLinkProvider::removeProcess): Deleted.
(WebKit::VisitedLinkProvider::addVisitedLinkHash): Deleted.
(WebKit::VisitedLinkProvider::removeAll): Deleted.
(WebKit::VisitedLinkProvider::webProcessWillOpenConnection): Deleted.
(WebKit::VisitedLinkProvider::webProcessDidCloseConnection): Deleted.
(WebKit::VisitedLinkProvider::addVisitedLinkHashFromPage): Deleted.
(WebKit::nextPowerOf2): Deleted.
(WebKit::tableSizeForKeyCount): Deleted.
(WebKit::VisitedLinkProvider::pendingVisitedLinksTimerFired): Deleted.
(WebKit::VisitedLinkProvider::resizeTable): Deleted.
(WebKit::VisitedLinkProvider::sendTable): Deleted.
* UIProcess/VisitedLinkStore.cpp: Renamed from Source/WebKit2/UIProcess/VisitedLinkProvider.cpp.
(WebKit::generateIdentifier):
(WebKit::VisitedLinkStore::create):
(WebKit::VisitedLinkStore::~VisitedLinkStore):
(WebKit::VisitedLinkStore::VisitedLinkStore):
(WebKit::VisitedLinkStore::addProcess):
(WebKit::VisitedLinkStore::removeProcess):
(WebKit::VisitedLinkStore::addVisitedLinkHash):
(WebKit::VisitedLinkStore::removeAll):
(WebKit::VisitedLinkStore::webProcessWillOpenConnection):
(WebKit::VisitedLinkStore::webProcessDidCloseConnection):
(WebKit::VisitedLinkStore::addVisitedLinkHashFromPage):
(WebKit::nextPowerOf2):
(WebKit::tableSizeForKeyCount):
(WebKit::VisitedLinkStore::pendingVisitedLinksTimerFired):
(WebKit::VisitedLinkStore::resizeTable):
(WebKit::VisitedLinkStore::sendTable):
* UIProcess/VisitedLinkStore.h: Renamed from Source/WebKit2/UIProcess/VisitedLinkProvider.h.
* UIProcess/VisitedLinkStore.messages.in: Renamed from Source/WebKit2/UIProcess/VisitedLinkProvider.messages.in.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::processDidFinishLaunching):
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::createWebPage):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::addVisitedLinkStore):
(WebKit::WebProcessProxy::didDestroyVisitedLinkStore):
(WebKit::WebProcessProxy::addVisitedLinkProvider): Deleted.
(WebKit::WebProcessProxy::didDestroyVisitedLinkProvider): Deleted.
* UIProcess/WebProcessProxy.h:
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebPage/VisitedLinkTableController.cpp:
(WebKit::VisitedLinkTableController::addVisitedLink):

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

5 years ago[ES6] Return JSInternalPromise as result of evaluateModule
utatane.tea@gmail.com [Mon, 24 Aug 2015 23:48:55 +0000 (23:48 +0000)]
[ES6] Return JSInternalPromise as result of evaluateModule
https://bugs.webkit.org/show_bug.cgi?id=148173

Reviewed by Saam Barati.

Now evaluateModule returns JSInternalPromise* as its result value.
When an error occurs while loading or executing the modules,
this promise is rejected by that error. By leveraging this, we implemented
asynchronous error reporting when executing the modules in JSC shell.

And this patch also changes the evaluateModule signature to accept the entry
point by the moduleName. By using it, JSC shell can start executing the modules
with the entry point module name.

* builtins/ModuleLoaderObject.js:
(loadModule):
* jsc.cpp:
(dumpException):
(runWithScripts):
* runtime/Completion.cpp:
(JSC::evaluateModule):
* runtime/Completion.h:
* runtime/JSInternalPromise.cpp:
(JSC::JSInternalPromise::then):
* runtime/JSInternalPromise.h:
* runtime/ModuleLoaderObject.cpp:
(JSC::ModuleLoaderObject::requestInstantiateAll):
(JSC::ModuleLoaderObject::loadModule):
(JSC::ModuleLoaderObject::resolve):
(JSC::ModuleLoaderObject::fetch):
(JSC::ModuleLoaderObject::translate):
(JSC::ModuleLoaderObject::instantiate):
(JSC::moduleLoaderObjectParseModule):
* runtime/ModuleLoaderObject.h:

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

5 years agoAX: Fix accessibility/mac/mathml-elements.html test
commit-queue@webkit.org [Mon, 24 Aug 2015 23:31:58 +0000 (23:31 +0000)]
AX: Fix accessibility/mac/mathml-elements.html test
https://bugs.webkit.org/show_bug.cgi?id=148393

Patch by Nan Wang <n_wang@apple.com> on 2015-08-24
Reviewed by Chris Fleizach.

Updated the test to match the structure changes of mfenced/mo operators in bug 124838.

* accessibility/mac/mathml-elements-expected.txt:
* accessibility/mac/mathml-elements.html:
* platform/mac/TestExpectations:

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

5 years ago(Finally...) get rid of WKViewIOS
timothy_horton@apple.com [Mon, 24 Aug 2015 23:11:25 +0000 (23:11 +0000)]
(Finally...) get rid of WKViewIOS
https://bugs.webkit.org/show_bug.cgi?id=148404

Reviewed by Anders Carlsson.

* UIProcess/API/Cocoa/WKView.h:
* UIProcess/API/ios/WKViewIOS.mm: Removed.
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::PageClientImpl): Deleted.
(WebKit::PageClientImpl::didRelaunchProcess): Deleted.
(WebKit::PageClientImpl::refView): Deleted.
(WebKit::PageClientImpl::derefView): Deleted.
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView initWithFrame:processPool:configuration:wkView:]): Deleted.
* WebKit2.xcodeproj/project.pbxproj:
Get rid of WKViewIOS and references to it.

* DatabaseProcess/ios/DatabaseProcessIOS.mm:
(WebKit::DatabaseProcess::initializeSandbox):
* NetworkProcess/ios/NetworkProcessIOS.mm:
(WebKit::NetworkProcess::initializeSandbox):
* Shared/Plugins/mac/PluginSandboxProfile.mm:
(WebKit::pluginSandboxProfileDirectory):
* Shared/ios/ChildProcessIOS.mm:
(WebKit::ChildProcess::initializeSandbox):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::initializeSandbox):
Look for WKWebView instead of WKView if we have it.

* TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm:
* TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.mm:
* TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme.mm:
* TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm:
* TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm:
* TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm:
* TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm:
* TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm:
* TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.h:
* TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.mm:
Mark tests that use WKBrowsingContextController as Mac-only.

* WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm:
(WTR::AccessibilityController::addNotificationListener):
* WebKitTestRunner/ios/mainIOS.mm:
(-[WebKitTestRunnerApp applicationDidEnterBackground:]):
Import UIKit instead of depending on WKView.h to do so.

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

5 years agoRename _WKVisitedLinkProvider to _WKVisitedLinkStore for consistency
andersca@apple.com [Mon, 24 Aug 2015 22:45:17 +0000 (22:45 +0000)]
Rename _WKVisitedLinkProvider to _WKVisitedLinkStore for consistency
https://bugs.webkit.org/show_bug.cgi?id=148398

Reviewed by Tim Horton.

We'd like to call the abstract classes providers and the concrete classes stores in WebKit. Begin by renaming
_WKVisitedLinkProvider to _WKVisitedLinkStore, but keep the former around as a deprecated class.

* Shared/API/Cocoa/WebKitPrivate.h:
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithFrame:configuration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _visitedLinkStore]):
(-[WKWebViewConfiguration _setVisitedLinkStore:]):
(-[WKWebViewConfiguration _visitedLinkProvider]):
(-[WKWebViewConfiguration _setVisitedLinkProvider:]):
(-[WKWebViewConfiguration _validate]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/API/Cocoa/_WKVisitedLinkProvider.h:
* UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm:
(-[_WKVisitedLinkProvider init]): Deleted.
(-[_WKVisitedLinkProvider dealloc]): Deleted.
(-[_WKVisitedLinkProvider addVisitedLinkWithURL:]): Deleted.
(-[_WKVisitedLinkProvider removeAll]): Deleted.
(-[_WKVisitedLinkProvider _apiObject]): Deleted.
* UIProcess/API/Cocoa/_WKVisitedLinkStore.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProvider.h.
* UIProcess/API/Cocoa/_WKVisitedLinkStore.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm.
(-[_WKVisitedLinkStore init]):
(-[_WKVisitedLinkStore dealloc]):
(-[_WKVisitedLinkStore addVisitedLinkWithURL:]):
(-[_WKVisitedLinkStore removeAll]):
(-[_WKVisitedLinkStore _apiObject]):
* UIProcess/API/Cocoa/_WKVisitedLinkStoreInternal.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProviderInternal.h.
(WebKit::wrapper):
* WebKit2.xcodeproj/project.pbxproj:

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

5 years agoAdd support to dashboard for displaying Git SHA's as revisions.
commit-queue@webkit.org [Mon, 24 Aug 2015 22:42:54 +0000 (22:42 +0000)]
Add support to dashboard for displaying Git SHA's as revisions.
https://bugs.webkit.org/show_bug.cgi?id=148387

Patch by Jason Marcell <jmarcell@apple.com> on 2015-08-24
Reviewed by Daniel Bates.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:
(parseRevisionProperty): Added support to dashboard for displaying Git SHA's as revisions.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:
(BuildbotQueueView.prototype._revisionContentWithPopoverForIteration): Ditto.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js: Added
"isSVN" property to Dashboard.Repository.(OpenSource|Internal).

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

5 years agoREPTACH is not a word
basile_clement@apple.com [Mon, 24 Aug 2015 21:56:38 +0000 (21:56 +0000)]
REPTACH is not a word
https://bugs.webkit.org/show_bug.cgi?id=148401

Reviewed by Saam Barati.

* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::callWithSlowPathReturnType):
(JSC::MacroAssemblerX86_64::call):
(JSC::MacroAssemblerX86_64::tailRecursiveCall):
(JSC::MacroAssemblerX86_64::makeTailRecursiveCall):
(JSC::MacroAssemblerX86_64::readCallTarget):
(JSC::MacroAssemblerX86_64::linkCall):
(JSC::MacroAssemblerX86_64::repatchCall):

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

5 years agoAdd support for setting JSC options from a file.
mark.lam@apple.com [Mon, 24 Aug 2015 21:51:26 +0000 (21:51 +0000)]
Add support for setting JSC options from a file.
https://bugs.webkit.org/show_bug.cgi?id=148394

Reviewed by Saam Barati.

This is needed for environments where the JSC executable does not have access to
environmental variables.  This is only needed for debugging, and is currently
guarded under a #define USE_OPTIONS_FILE in Options.cpp, and is disabled by
default.

Also fixed Options::setOptions() to be allow for whitespace that is not a single
' '.  This makes setOptions() much more flexible and friendlier to use for loading
options in general.

For example, this current use case of loading options from a file may have '\n's
in the character stream, and this feature is easier to implement if setOptions()
just support more than 1 whitespace char between options, and recognize whitespace
characters other than ' '.

* runtime/Options.cpp:
(JSC::parse):
(JSC::Options::initialize):
(JSC::Options::setOptions):

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

5 years agoDFG::FixupPhase should use the lambda form of m_graph.doToChildren() rather than...
fpizlo@apple.com [Mon, 24 Aug 2015 21:44:39 +0000 (21:44 +0000)]
DFG::FixupPhase should use the lambda form of m_graph.doToChildren() rather than the old macro
https://bugs.webkit.org/show_bug.cgi?id=148397

Reviewed by Geoffrey Garen.

We used to iterate the edges of a node by using the DFG_NODE_DO_TO_CHILDREN macro. We
don't need to do that anymore since we have the lambda-based m_graph.doToChildren(). This
allows us to get rid of a bunch of helper methods in DFG::FixupPhase.

I also took the opportunity to give the injectTypeConversionsInBlock() method a more
generic name, since after https://bugs.webkit.org/show_bug.cgi?id=145204 it will be used
for fix-up of checks more broadly.

* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::run):
(JSC::DFG::FixupPhase::attemptToMakeGetTypedArrayByteOffset):
(JSC::DFG::FixupPhase::fixupChecksInBlock):
(JSC::DFG::FixupPhase::injectTypeConversionsInBlock): Deleted.
(JSC::DFG::FixupPhase::tryToRelaxRepresentation): Deleted.
(JSC::DFG::FixupPhase::fixEdgeRepresentation): Deleted.
(JSC::DFG::FixupPhase::injectTypeConversionsForEdge): Deleted.

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

5 years agoNodeList should not have a named getter
cdumez@apple.com [Mon, 24 Aug 2015 21:44:32 +0000 (21:44 +0000)]
NodeList should not have a named getter
https://bugs.webkit.org/show_bug.cgi?id=148117

Reviewed by Geoffrey Garen.

Add a layout test to check that NodeList no longer has a named property
getter after r188829.

* fast/dom/NodeList/no-named-getter-expected.txt: Added.
* fast/dom/NodeList/no-named-getter.html: Added.

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

5 years agoSome renaming to clarify CodeBlock and UnlinkedCodeBlock
ggaren@apple.com [Mon, 24 Aug 2015 21:43:13 +0000 (21:43 +0000)]
Some renaming to clarify CodeBlock and UnlinkedCodeBlock
https://bugs.webkit.org/show_bug.cgi?id=148391

Reviewed by Saam Barati.

* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::generateUnlinkedFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::visitChildren):
(JSC::UnlinkedFunctionExecutable::fromGlobalCode):
(JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor):
(JSC::generateFunctionCodeBlock): Deleted.
(JSC::UnlinkedFunctionExecutable::codeBlockFor): Deleted.
* bytecode/UnlinkedFunctionExecutable.h: Call our CodeBlocks "unlinked"
in the name for clarity, since we are unlinked.

* heap/Heap.cpp:
(JSC::Heap::objectTypeCounts):
(JSC::Heap::deleteAllCodeBlocks):
(JSC::Heap::deleteAllUnlinkedCodeBlocks):
(JSC::Heap::clearUnmarkedExecutables):
(JSC::Heap::deleteOldCode):
(JSC::Heap::FinalizerOwner::finalize):
(JSC::Heap::addExecutable):
(JSC::Heap::collectAllGarbageIfNotDoneRecently):
(JSC::Heap::deleteAllCompiledCode): Deleted.
(JSC::Heap::deleteAllUnlinkedFunctionCode): Deleted.
(JSC::Heap::addCompiledCode): Deleted.
* heap/Heap.h:
(JSC::Heap::notifyIsSafeToCollect):
(JSC::Heap::isSafeToCollect):
(JSC::Heap::sizeBeforeLastFullCollection):
(JSC::Heap::sizeAfterLastFullCollection):
(JSC::Heap::compiledCode): Deleted.

    deleteAllCompiledCode => deleteAllCodeBlocks because "compiled"
    is a broad phrase these days.

    m_compiledCode => m_executables for the same reason.

    addCompiledCode => addExecutable for the same reason.

    deleteAllUnlinkedFunctionCode => deleteAllUnlinkedCodeBlocks
    for consistency.

* jsc.cpp:
(functionDeleteAllCompiledCode):

* runtime/Executable.cpp:
(JSC::ScriptExecutable::newCodeBlockFor): codeBlockFor => unlinkedCodeBlockFor

(JSC::FunctionExecutable::clearUnlinkedCodeForRecompilation): Deleted.
It was strange to put this function on executable, since its name implied
that it only changed the executable, but it actually changed all cached
code. Now, a client that wants to change cached code must do so explicitly.

* runtime/Executable.h:
(JSC::ScriptExecutable::finishCreation):
* runtime/VM.cpp:
(JSC::VM::deleteAllCode):
* runtime/VMEntryScope.cpp:
(JSC::VMEntryScope::VMEntryScope): Updated for renames above.

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

5 years agoSpecify the corrent regression revision.
aestes@apple.com [Mon, 24 Aug 2015 21:31:13 +0000 (21:31 +0000)]
Specify the corrent regression revision.

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

5 years agoREGRESSION (r182356): WebKit2.BundleParameters fails on iOS
aestes@apple.com [Mon, 24 Aug 2015 21:25:27 +0000 (21:25 +0000)]
REGRESSION (r182356): WebKit2.BundleParameters fails on iOS

* TestWebKitAPI/Configurations/WebProcessPlugIn.xcconfig: Specify LD_RUNPATH_SEARCH_PATHS correctly for iOS.

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

5 years agoDFG::InsertionSet should be tolerant of occasional out-of-order insertions
fpizlo@apple.com [Mon, 24 Aug 2015 21:11:17 +0000 (21:11 +0000)]
DFG::InsertionSet should be tolerant of occasional out-of-order insertions
https://bugs.webkit.org/show_bug.cgi?id=148367

Reviewed by Geoffrey Garen and Saam Barati.

Since forever, the DFG::InsertionSet has been the way we insert nodes into DFG IR, and it
requires that you walk a block in order and perform insertions in order: you can't insert
something at index J, then at index I where I < J, except if you do a second pass.

This restriction makes sense, because it enables a very fast algorithm. And it's very
rare that a phase would need to insert things out of order.

But sometimes - rarely - we need to insert things slightly out-of-order. For example we
may want to insert a node at index J, but to insert a check associated with that node, we
may need to use index I where I < J. This will come up from the work on
https://bugs.webkit.org/show_bug.cgi?id=145204. And it has already come up in the past.
It seems like it would be best to just lift this restriction.

* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
* dfg/DFGInsertionSet.cpp: Added.
(JSC::DFG::InsertionSet::insertSlow):
* dfg/DFGInsertionSet.h:
(JSC::DFG::InsertionSet::InsertionSet):
(JSC::DFG::InsertionSet::graph):
(JSC::DFG::InsertionSet::insert):
(JSC::DFG::InsertionSet::execute):

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

5 years agoCreate ById IC for ByVal operation only when the specific Id comes more than once
utatane.tea@gmail.com [Mon, 24 Aug 2015 20:26:05 +0000 (20:26 +0000)]
Create ById IC for ByVal operation only when the specific Id comes more than once
https://bugs.webkit.org/show_bug.cgi?id=148288

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

After introducing byId ICs into byVal ops, byVal ops creates much ICs than before.
The failure fixed in r188767 figures out these ICs are created even if this op is executed only once.

The situation is the following;
In the current code, when byVal op is executed with the Id, we immediately set up the byId IC for that byVal op.
But setting up JITGetByIdGenerator generates the fast path IC code and consumes executable memory.
As a result, if we call eval("contains byVal ops") with the different strings repeatedly under no-llint environment, each eval call creates byId IC for byVal and consumes executable memory.

To solve it, we will add "seen" flag to ByValInfo.
And we will create the IC on the second byVal op call with the same Id.

* bytecode/ByValInfo.h:
(JSC::ByValInfo::ByValInfo):
* jit/JITOperations.cpp:
(JSC::tryGetByValOptimize):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::privateCompileGetByValWithCachedId): Deleted.
(JSC::JIT::privateCompilePutByValWithCachedId): Deleted.

LayoutTests:

Revert the skip marks introduced in r188767.

* js/script-tests/dfg-float32array.js:
* js/script-tests/dfg-int16array.js:
* js/script-tests/dfg-int32array-overflow-values.js:
* js/script-tests/dfg-int32array.js:
* js/script-tests/dfg-int8array.js:
* js/script-tests/dfg-uint16array.js:
* js/script-tests/dfg-uint32array-overflow-values.js:
* js/script-tests/dfg-uint32array.js:
* js/script-tests/dfg-uint8array.js:
* js/script-tests/dfg-uint8clampedarray.js:
* js/script-tests/regress-141098.js:

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

5 years agoFix the build fixes in r188875 and r188874
mmaxfield@apple.com [Mon, 24 Aug 2015 20:18:13 +0000 (20:18 +0000)]
Fix the build fixes in r188875 and r188874

Unreviewed.

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::createFontPlatformData):
* platform/graphics/mac/FontCacheMac.mm:
(WebCore::toNSFontTraits):

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

5 years agoWeb Inspector: Change webkitAnimationEnd use, should be animationEnd
timothy@apple.com [Mon, 24 Aug 2015 19:52:42 +0000 (19:52 +0000)]
Web Inspector: Change webkitAnimationEnd use, should be animationEnd
https://bugs.webkit.org/show_bug.cgi?id=148385

Reviewed by Joseph Pecoraro.

* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype.emphasizeSearchHighlight):
* UserInterface/Views/DashboardContainerView.js:
(WebInspector.DashboardContainerView.prototype._showDashboardView.animationEnded):
(WebInspector.DashboardContainerView.prototype._showDashboardView):
(WebInspector.DashboardContainerView.prototype._hideDashboardView.animationEnded):
(WebInspector.DashboardContainerView.prototype._hideDashboardView):
* UserInterface/Views/DefaultDashboardView.js:
(WebInspector.DefaultDashboardView.prototype._setConsoleItemValue.animationEnded):
(WebInspector.DefaultDashboardView.prototype._setConsoleItemValue):
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype.revealPosition.revealAndHighlightLine):
(WebInspector.TextEditor.prototype.revealPosition):
(WebInspector.TextEditor.prototype._revealSearchResult):

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

5 years agoTry to fix the build.
timothy_horton@apple.com [Mon, 24 Aug 2015 19:03:28 +0000 (19:03 +0000)]
Try to fix the build.

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::createFontPlatformData):

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

5 years agoFix the build.
timothy_horton@apple.com [Mon, 24 Aug 2015 18:50:09 +0000 (18:50 +0000)]
Fix the build.

* platform/graphics/mac/FontCacheMac.mm:
(WebCore::toNSFontWeight):
(WebCore::toNSFontTraits):
(WebCore::platformFontWithFamilySpecialCase):

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

5 years agoUse Optionals in RenderBox height computations
mmaxfield@apple.com [Mon, 24 Aug 2015 18:48:51 +0000 (18:48 +0000)]
Use Optionals in RenderBox height computations
https://bugs.webkit.org/show_bug.cgi?id=147253

Reviewed by David Hyatt.

No new tests because there is no behavior change.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::constrainLogicalHeightByMinMax):
(WebCore::RenderBox::constrainContentBoxLogicalHeightByMinMax):
(WebCore::RenderBox::overrideContainingBlockContentLogicalWidth):
(WebCore::RenderBox::overrideContainingBlockContentLogicalHeight):
(WebCore::RenderBox::setOverrideContainingBlockContentLogicalWidth):
(WebCore::RenderBox::setOverrideContainingBlockContentLogicalHeight):
(WebCore::RenderBox::adjustContentBoxLogicalHeightForBoxSizing):
(WebCore::RenderBox::containingBlockLogicalWidthForContent):
(WebCore::RenderBox::containingBlockLogicalHeightForContent):
(WebCore::RenderBox::perpendicularContainingBlockLogicalHeight):
(WebCore::RenderBox::computeLogicalHeight):
(WebCore::RenderBox::computeLogicalHeightUsing):
(WebCore::RenderBox::computeContentLogicalHeight):
(WebCore::RenderBox::computeIntrinsicLogicalContentHeightUsing):
(WebCore::RenderBox::computeContentAndScrollbarLogicalHeightUsing):
(WebCore::RenderBox::computePercentageLogicalHeight):
(WebCore::RenderBox::computeReplacedLogicalHeightUsing):
(WebCore::RenderBox::availableLogicalHeight):
(WebCore::RenderBox::availableLogicalHeightUsing):
(WebCore::RenderBox::computePositionedLogicalHeightUsing):
(WebCore::logicalWidthIsResolvable):
(WebCore::RenderBox::percentageLogicalHeightIsResolvableFromBlock):
(WebCore::RenderBox::hasDefiniteLogicalHeight):
* rendering/RenderBox.h:
* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::computeMainAxisExtentForChild):
(WebCore::RenderFlexibleBox::preferredMainAxisContentExtentForChild):
(WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax):
* rendering/RenderFlexibleBox.h:
* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::addForcedRegionBreak):
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::computeUsedBreadthOfSpecifiedLength):
(WebCore::RenderGrid::logicalContentHeightForChild):
(WebCore::RenderGrid::minContentForChild):
(WebCore::RenderGrid::maxContentForChild):
(WebCore::RenderGrid::layoutGridItems):
(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):
* rendering/RenderMultiColumnSet.cpp:
(WebCore::RenderMultiColumnSet::calculateMaxColumnHeight):
* rendering/RenderTable.cpp:
(WebCore::RenderTable::convertStyleLogicalHeightToComputedHeight):

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

5 years agoFix failing tests.
andersca@apple.com [Mon, 24 Aug 2015 18:46:44 +0000 (18:46 +0000)]
Fix failing tests.

It's OK to call runStateMachine with an idle state. Just bail early when that happens.

* Modules/webdatabase/SQLTransactionStateMachine.h:
(WebCore::SQLTransactionStateMachine<T>::runStateMachine):

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