Timeline



Apr 20, 2015:

11:47 PM Changeset in webkit [183053] by Simon Fraser
  • 4 edits
    2 adds in trunk

REGRESSION (r177494): -webkit-mask-image: with data URI fails on non-local files
https://bugs.webkit.org/show_bug.cgi?id=141857

Reviewed by Dirk Schulze.

Source/WebCore:

r177494 regressed loading of data URIs in masks with remote content, triggering
a cross-domain error which occurs because the mask loading happened via a separate
SVGDocument.

Fix by checking for data URIs at parsing time, which is what we used to do.

Test: http/tests/css/data-uri-mask.html

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseMaskImage):

  • svg/SVGURIReference.h:

(WebCore::SVGURIReference::isExternalURIReference):

LayoutTests:

Ref test with a masked green square. Has to be an http test to trigger the
origin checking.

  • http/tests/css/data-uri-mask-expected.html: Added.
  • http/tests/css/data-uri-mask.html: Added.
11:22 PM Changeset in webkit [183052] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Crash when showing Web Inspector on page with 'multipart/x-mixed-replace' main resource
https://bugs.webkit.org/show_bug.cgi?id=143979
<rdar://problem/20594948>

Reviewed by Timothy Hatcher.

InspectorDOMAgent::m_document was updated only once per load, from
FrameLoader::dispatchDidCommitLoad(). However, dispatchDidCommitLoad()
is not called for follow-up multipart replacing loads. You can see this
from the following check in DocumentLoader::commitData():

if (!isMultipartReplacingLoad())

frameLoader()->receivedFirstData();

As a result, in the case of a 'multipart/x-mixed-replace' main resource
InspectorDOMAgent::m_document would quickly get outdated as we create
a new Document for each replacing load. This would lead to Web Inspector
code using a Document without frame and causing crashes.

This patch calls InspectorInstrumentation::frameDocumentUpdated() from
Frame::setDocument() so that InspectorDOMAgent::m_document is always up
to date.

No new tests, not easily testable as the main resource needs to be
'multipart/x-mixed-replace'.

  • dom/Document.cpp:

(WebCore::Document::applyXSLTransform):
Stop calling InspectorInstrumentation::frameDocumentUpdated() here as
XSLTProcessor::createDocumentFromSource() will call Frame::setDocument()
and frameDocumentUpdated() will be called there.

  • page/Frame.cpp:

(WebCore::Frame::setDocument):
Call InspectorInstrumentation::frameDocumentUpdated() to make sure
InspectorDOMAgent::m_document gets updated.

10:52 PM Changeset in webkit [183051] by dburkart@apple.com
  • 1 copy in branches/safari-600.7-branch

Branched from safari-600.6-branch

10:49 PM Changeset in webkit [183050] by Lucas Forschler
  • 2 edits in branches/safari-600.1.4.16-branch/Source/WebCore

Merged r182076. rdar://problem/20545985

10:30 PM Changeset in webkit [183049] by Lucas Forschler
  • 2 edits in branches/safari-600.1.4.16-branch/Source/WebKit2

Merged r181991. rdar://problem/20545917

10:20 PM Changeset in webkit [183048] by Lucas Forschler
  • 2 edits in branches/safari-600.1.4.16-branch/Source/WebCore

Merged r179958. rdar://problem/20545917

10:17 PM Changeset in webkit [183047] by Lucas Forschler
  • 2 edits in branches/safari-600.1.4.16-branch/Source/WebCore

Merged r179895. rdar://problem/20545917

10:13 PM Changeset in webkit [183046] by Lucas Forschler
  • 2 edits in branches/safari-600.1.4.16-branch/Source/WebCore

Merged r179880. rdar://problem/20545917

10:03 PM Changeset in webkit [183045] by Lucas Forschler
  • 2 edits in branches/safari-600.1.4.16-branch/Source/WebKit2

Merged r181919. rdar://problem/20546023

9:59 PM Changeset in webkit [183044] by Lucas Forschler
  • 2 edits in branches/safari-600.1.4.16-branch/Source/WebKit2

Merged r181869. rdar://problem/20545937

9:35 PM Changeset in webkit [183043] by commit-queue@webkit.org
  • 3 edits
    8 deletes in trunk/Source/WebInspectorUI

Web Inspector: Unify PrettyPrinting Tool and UserInterface resources
https://bugs.webkit.org/show_bug.cgi?id=143969

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-20
Reviewed by Timothy Hatcher.

Have the PrettyPrinting tool just use the CodeMirror and WebInspector
resources from the relative UserInterface directory. This avoids
having duplicate resources in the tree which offered few advantages.

  • Scripts/update-pretty-printer.rb: Removed.
  • Tools/PrettyPrinting/CodeMirrorFormatters.js: Removed.
  • Tools/PrettyPrinting/Formatter.js: Removed.
  • Tools/PrettyPrinting/FormatterContentBuilder.js: Removed.
  • Tools/PrettyPrinting/codemirror.css: Removed.
  • Tools/PrettyPrinting/codemirror.js: Removed.
  • Tools/PrettyPrinting/css.js: Removed.
  • Tools/PrettyPrinting/index.html:
  • Tools/PrettyPrinting/javascript.js: Removed.
  • UserInterface/Views/CodeMirrorFormatters.js:

Fix style issues.

8:48 PM Changeset in webkit [183042] by jinwoo7.song@samsung.com
  • 7 edits
    3 adds in trunk/LayoutTests

[EFL] Unreviewed, update test expectations and rebaseline failing tests.

Remove some expected failures from tests that are passing.
Also rebaselined failing tests.

  • platform/efl/TestExpectations:
  • platform/efl/fast/dom/Element/getClientRects-expected.txt: Added. Rebaselined after r177774.
  • platform/efl/fast/dom/Range/getClientRects-expected.txt: Ditto.
  • platform/efl/fast/line-grid/line-align-right-edges-expected.png: Rebaselined after r177128.
  • platform/efl/fast/line-grid/line-align-right-edges-expected.txt: Ditto.
  • platform/efl/fast/table/022-expected.png: Rebaselined after r177774.
  • platform/efl/fast/table/022-expected.txt: Added. Ditto.
  • platform/efl/fast/text/wbr-pre-expected.png: Rebaselined after r177774.
  • platform/efl/fast/text/wbr-pre-expected.txt: Added. Ditto.
7:48 PM Changeset in webkit [183041] by rniwa@webkit.org
  • 9 edits
    1 add in trunk/Websites/perf.webkit.org

Perf dashboard should have UI to set status on analysis tasks
https://bugs.webkit.org/show_bug.cgi?id=143977

Reviewed by Chris Dumez.

Added the UI to set the result of an analysis task to 'progression', 'regression', 'unchanged', and 'inconclusive'
as well as a boolean indicating whether creating the analysis task was the right thing to do or not.
The latter will be a useful metric once we start automatically creating analysis tasks.

  • init-database.sql: Added two columns to analysis_tasks table.
  • public/api/analysis-tasks.php: Include the added columns in the JSON.
  • public/include/db.php:

(Database::to_database_boolean): Added.

  • public/include/json-header.php:

(require_match_one_of_values): Added.

  • public/privileged-api/update-analysis-task.php: Added. Updates 'result' and 'needed' values of an analysis task.

(main):

  • public/v2/analysis.js:

(App.AnalysisTask.result): Added.
(App.AnalysisTask.needed): Added. We don't use DS.attr('boolean') here since that would coerce null into false
and we want to differentiate null from false in order to differentiate the null-ness of the value.
(App.AnalysisTask.saveStatus): Added.
(App.AnalysisTask.statusLabel): Use 'result' as the label if it's set and all build requests have been processed.

  • public/v2/app.css:
  • public/v2/app.js:

(App.AnalysisTaskController.analysisResultOptions): Added.
(App.AnalysisTaskController.shouldNotHaveBeenCreated): Added.
(App.AnalysisTaskController.needsFeedback): Added. Show the checkbox to indicate the analysis task should not have
been created if 'no change' is selected.
(App.AnalysisTaskController._updateChosenAnalysisResult): Added.
(App.AnalysisTaskController.actions.saveStatus): Added.

  • public/v2/index.html: Extracted a partial template for updating the bug numbers. Also added the UI to update

'result' and 'needed' values of the analysis task.

7:37 PM Changeset in webkit [183040] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

PhantomNewObject should be marked NodeMustGenerate
https://bugs.webkit.org/show_bug.cgi?id=143974

Patch by Basile Clement <basile_clement@apple.com> on 2015-04-20
Reviewed by Filip Pizlo.

  • dfg/DFGNodeType.h: Mark PhantomNewObject as NodeMustGenerate
6:48 PM Changeset in webkit [183039] by matthew_hanson@apple.com
  • 2 edits in trunk/Tools

Fix compilation error for prepare-ChangeLog running with Perl version < v5.18.2.

Unreviewed build fix.

The any function was added to List::Utils between Perl v5.16.2 and Perl v5.18.2.
However, it has been exposed by List::MoreUtils since its inception. This patch uses
the any function exposed by List::MoreUtils for greater compatibility.

  • Scripts/prepare-ChangeLog:

Use any from List::MoreUtils instead of List::Utils, as List::MoreUtils exposes
the any function in all of versions of Perl used by our infrastructure.

5:43 PM Changeset in webkit [183038] by mitz@apple.com
  • 5 edits in trunk/Source/WebKit2

Expose more bundle form client functions as WKWebProcessPlugInFormDelegatePrivate methods
https://bugs.webkit.org/show_bug.cgi?id=143973

Reviewed by Anders Carlsson.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFormDelegatePrivate.h: Declared new

delegate methods.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h: Declared new frame

property.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:

(-[WKWebProcessPlugInNodeHandle frame]): Added. Returns the node’s document’s frame. This is
useful to delegates getting an array of nodes via the new method.

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Added overrides of
shouldNotifyOnFormChanges and didAssociateFormControls, which call the new delegate methods.

5:17 PM Changeset in webkit [183037] by Lucas Forschler
  • 26 edits
    4 copies in branches/safari-600.1.4.16-branch

Merged r181656 and r182985.

4:38 PM Changeset in webkit [183036] by achristensen@apple.com
  • 2 edits in trunk/Tools

Remove unnecessary logs when resetting tests.

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformResetPreferencesToConsistentValues):
In r183020 I added some logs when compiling or removing content extensions fails.
We often try to remove a content extension that does not exist, and that is not a problem.

4:26 PM Changeset in webkit [183035] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Overwrite existing files with moveFile.
https://bugs.webkit.org/show_bug.cgi?id=143968

Reviewed by Brady Eidson and Anders Carlsson.

  • platform/mac/FileSystemMac.mm:

(-[WebFileManagerDelegate fileManager:shouldProceedAfterError:movingItemAtURL:toURL:]):
(WebCore::moveFile):
r182932 introduced moveFile instead of renameFile. In order to preserve behavior, it should overwrite existing files.

4:05 PM Changeset in webkit [183034] by Lucas Forschler
  • 2 edits in branches/safari-600.1.4.16-branch/Source/WebCore

Merged r180520. rdar://problem/20546024

4:00 PM Changeset in webkit [183033] by Lucas Forschler
  • 3 edits in branches/safari-600.1.4.16-branch/Source/WebCore

Merged r179850. rdar://problem/20545969

3:53 PM Changeset in webkit [183032] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebCore

Unreviewed Windows build fix after r183031.

  • platform/graphics/OpenGLShims.cpp:

(WebCore::lookupOpenGLFunctionAddress):
Windows needs an explicit cast converting LChar* to const char*.
Also, add a FIXME comment for sketchy behavior.

3:07 PM Changeset in webkit [183031] by commit-queue@webkit.org
  • 27 edits in trunk/Source

Cleanup some StringBuilder use
https://bugs.webkit.org/show_bug.cgi?id=143550

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-20
Reviewed by Darin Adler.

Source/JavaScriptCore:

  • runtime/Symbol.cpp:

(JSC::Symbol::descriptiveString):

  • runtime/TypeProfiler.cpp:

(JSC::TypeProfiler::typeInformationForExpressionAtOffset):

  • runtime/TypeSet.cpp:

(JSC::TypeSet::toJSONString):
(JSC::StructureShape::propertyHash):
(JSC::StructureShape::stringRepresentation):
(JSC::StructureShape::toJSONString):

Source/WebCore:

  • Modules/plugins/YouTubePluginReplacement.cpp:

(WebCore::YouTubePluginReplacement::youTubeURL):

  • css/CSSAnimationTriggerScrollValue.cpp:

(WebCore::CSSAnimationTriggerScrollValue::customCSSText):

  • css/CSSCanvasValue.cpp:

(WebCore::CSSCanvasValue::customCSSText):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createImageBuffer):

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::captionsWindowCSS):
(WebCore::CaptionUserPreferencesMediaAF::windowRoundedCornerRadiusCSS):
(WebCore::CaptionUserPreferencesMediaAF::cssPropertyWithTextEdgeColor):
(WebCore::CaptionUserPreferencesMediaAF::colorPropertyCSS):
(WebCore::CaptionUserPreferencesMediaAF::captionsDefaultFontCSS):
(WebCore::CaptionUserPreferencesMediaAF::captionsStyleSheetOverride):

  • page/EventSource.cpp:

(WebCore::EventSource::didReceiveResponse):

  • page/PageSerializer.cpp:

(WebCore::PageSerializer::serializeCSSStyleSheet):

  • platform/graphics/OpenGLShims.cpp:

(WebCore::lookupOpenGLFunctionAddress):

  • platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:

(WebCore::InbandTextTrackPrivateAVF::processCueAttributes):

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::generateHashedName):

  • platform/text/DateTimeFormat.cpp:

(WebCore::DateTimeFormat::quoteAndAppendLiteral):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::logLayerInfo):

  • rendering/RenderTreeAsText.cpp:

(WebCore::writeRenderRegionList):

  • testing/MicroTaskTest.cpp:

(WebCore::MicroTaskTest::run):

  • testing/MockContentFilterSettings.cpp:

(WebCore::MockContentFilterSettings::unblockRequestURL):

Source/WebKit2:

  • DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:

(WebKit::buildObjectStoreStatement):

  • DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:

(WebKit::v2RecordsTableSchema):

  • Shared/Databases/IndexedDB/IDBUtilities.cpp:

(WebKit::uniqueDatabaseIdentifier):

  • UIProcess/API/APIUserScript.cpp:

(API::UserScript::generateUniqueURL):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::didReceiveInvalidMessage):

  • WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:

(WebKit::combinedSecurityOriginIdentifier):

3:05 PM Changeset in webkit [183030] by matthew_hanson@apple.com
  • 2 edits in trunk/Tools

prepare-ChangeLog should ignore the preceeding function when processing the removal of a function.
https://bugs.webkit.org/show_bug.cgi?id=143897

Reviewed by David Kilzer.

This is a speculative fix that addresses two issues:

  1. An off-by-one error which allowed ending lines to be less than starting lines when a hunk was a pure delete.

We were determining ending lines from combined diffs using the logic: End = Start + Offset - 1.

So for a hunk like "@@ -723,10 +721,0 @@ bool foobar", we were generating the following starting/ending line pairs:
Before: (723, 729)
After: (721, 720)

Before is correct, but After should be (721, 721), since it represents the beginning and ending lines for the hunk.
Whether there are zero lines or one line in the hunk, the starting and ending line are the same.

This error was causing bad behavior on purely additive and purely subtractive hunks, but since we only refer
to After when generating ChangeLog output, the extractLineRangeBeforeChange had no visible effect on program output.

The fix is to set End to the max of Start + Offset - 1 and Start, rather than always using the former.

  1. Creating git diffs from HEAD and not origin/master by default.

Hard-coding origin/master into the originalFile command has the disadvantage of causing the diff to fail entirely
when origin/master does not exist, and to do the wrong thing when determining deleted functions/methods.

  • Scripts/prepare-ChangeLog:

(originalFile):
Use HEAD instead of origin/master in default Git case.

(generateFunctionLists):
Ensure that the end line is not less than the start line.

(extractLineRangeAfterChange):
Set the end line to the start line if the end line is less than the start line.

(extractLineRangeBeforeChange):
Ditto.

3:05 PM Changeset in webkit [183029] by matthew_hanson@apple.com
  • 2 edits in trunk/Tools

Suppress warning in prepare-ChangeLog.
https://bugs.webkit.org/show_bug.cgi?id=143882

Reviewed by David Kilzer.

Prune noisy prepare-ChangeLog output by using the List::Util::any function
instead of the deprecated smartmatch operator.

  • Scripts/prepare-ChangeLog:

Import the List::Util::any function.

(get_function_line_ranges_for_cpp):
Use the any function instead of smartmatch.

2:48 PM Changeset in webkit [183028] by andersca@apple.com
  • 10 edits in trunk

Modify the WKWebsiteDataStore API to take a NSSet of types instead of a bitmask
https://bugs.webkit.org/show_bug.cgi?id=143966

Reviewed by Dan Bernstein.

Source/WebKit2:

  • UIProcess/API/Cocoa/WKWebsiteDataRecord.h:
  • UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:

(dataTypesToString):
(-[WKWebsiteDataRecord dataTypes]):

  • UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:

(WebKit::toWebsiteDataTypes):
(WebKit::toWKWebsiteDataTypes):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(+[WKWebsiteDataStore allWebsiteDataTypes]):
(-[WKWebsiteDataStore fetchDataRecordsOfTypes:completionHandler:]):
(-[WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:]):
(-[WKWebsiteDataStore removeDataOfTypes:forDataRecords:completionHandler:]):

  • UIProcess/API/Cocoa/_WKWebsiteDataRecord.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStore.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:

(toWKWebsiteDataTypes):
(-[_WKWebsiteDataStore fetchDataRecordsOfTypes:completionHandler:]):
(-[_WKWebsiteDataStore removeDataOfTypes:forDataRecords:completionHandler:]):
(-[_WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:]):

Tools:

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(dataTypes):
(-[WK2BrowserWindowController fetchWebsiteData:]):
(-[WK2BrowserWindowController fetchAndClearWebsiteData:]):
(-[WK2BrowserWindowController clearWebsiteData:]):

2:31 PM Changeset in webkit [183027] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Add debugging tools to test if a given pointer is a valid object and in the heap.
https://bugs.webkit.org/show_bug.cgi?id=143910

Reviewed by Geoffrey Garen.

When doing debugging from lldb, sometimes, it is useful to be able to tell if a
purported JSObject is really a valid object in the heap or not. We can add the
following utility functions to help:

isValidCell(heap, candidate) - returns true if the candidate is a "live" cell in the heap.
isInHeap(heap, candidate) - returns true if the candidate is the heap's Object space or Storage space.
isInObjectSpace(heap, candidate) - returns true if the candidate is the heap's Object space.
isInStorageSpace(heap, candidate) - returns true if the candidate is the heap's Storage space.

Also moved lldb callable debug utility function prototypes from
JSDollarVMPrototype.cpp to JSDollarVMPrototype.h as static members of the
JSDollarVMPrototype class. This is so that we can conveniently #include that
file to get the prototypes when we need to call them programmatically from
instrumentation that we add while debugging an issue.

  • heap/Heap.h:

(JSC::Heap::storageSpace):

  • tools/JSDollarVMPrototype.cpp:

(JSC::JSDollarVMPrototype::currentThreadOwnsJSLock):
(JSC::ensureCurrentThreadOwnsJSLock):
(JSC::JSDollarVMPrototype::gc):
(JSC::functionGC):
(JSC::JSDollarVMPrototype::edenGC):
(JSC::functionEdenGC):
(JSC::JSDollarVMPrototype::isInHeap):
(JSC::JSDollarVMPrototype::isInObjectSpace):
(JSC::JSDollarVMPrototype::isInStorageSpace):
(JSC::ObjectAddressCheckFunctor::ObjectAddressCheckFunctor):
(JSC::ObjectAddressCheckFunctor::operator()):
(JSC::JSDollarVMPrototype::isValidCell):
(JSC::JSDollarVMPrototype::isValidCodeBlock):
(JSC::JSDollarVMPrototype::codeBlockForFrame):
(JSC::functionCodeBlockForFrame):
(JSC::codeBlockFromArg):
(JSC::JSDollarVMPrototype::printCallFrame):
(JSC::JSDollarVMPrototype::printStack):
(JSC::JSDollarVMPrototype::printValue):
(JSC::currentThreadOwnsJSLock): Deleted.
(JSC::gc): Deleted.
(JSC::edenGC): Deleted.
(JSC::isValidCodeBlock): Deleted.
(JSC::codeBlockForFrame): Deleted.
(JSC::printCallFrame): Deleted.
(JSC::printStack): Deleted.
(JSC::printValue): Deleted.

  • tools/JSDollarVMPrototype.h:
1:43 PM Changeset in webkit [183026] by commit-queue@webkit.org
  • 4 edits
    4 adds in trunk

SVGFitToViewBox::viewBoxToViewTransform() has to count for zero physical width and height before calling SVGPreserveAspectRatio::getCTM()
https://bugs.webkit.org/show_bug.cgi?id=143903

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-04-20
Reviewed by Daniel Bates.

Source/WebCore:

Ensure that the SVG viewBoxToView transformation is always invertible.
CG path drawing functions crash if the context is transformed to non-
invertible matrix.

Tests: svg/css/crash-path-zero-height-viewbox.svg

svg/css/crash-path-zero-width-viewbox.svg

  • svg/SVGFitToViewBox.cpp:

(WebCore::SVGFitToViewBox::viewBoxToViewTransform):
Do not call SVGPreserveAspectRatio::getCTM() if the physical width or the
physical height is zero.

  • svg/SVGPreserveAspectRatio.cpp:

(WebCore::SVGPreserveAspectRatio::getCTM):
Ensure that we are not dividing by zero in this function.

LayoutTests:

  • svg/css/crash-path-zero-height-viewbox-expected.txt: Added.
  • svg/css/crash-path-zero-height-viewbox.svg: Added.
  • svg/css/crash-path-zero-width-viewbox-expected.txt: Added.
  • svg/css/crash-path-zero-width-viewbox.svg: Added.

Make sure if the physical width or the physical height of an SVG is zero
and a viewBox is specified, we do not crash.

1:25 PM Changeset in webkit [183025] by commit-queue@webkit.org
  • 16 edits in trunk

Web Inspector: Improve Support for WeakSet in Console
https://bugs.webkit.org/show_bug.cgi?id=143951

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-20
Reviewed by Darin Adler.

Source/JavaScriptCore:

  • inspector/InjectedScriptSource.js:
  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::subtype):
(Inspector::JSInjectedScriptHost::weakSetSize):
(Inspector::JSInjectedScriptHost::weakSetEntries):

  • inspector/JSInjectedScriptHost.h:
  • inspector/JSInjectedScriptHostPrototype.cpp:

(Inspector::JSInjectedScriptHostPrototype::finishCreation):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetSize):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetEntries):
Treat WeakSets like special sets.

  • inspector/protocol/Runtime.json:

Add a new object subtype, "weakset".

Source/WebInspectorUI:

  • UserInterface/Models/NativeFunctionParameters.js:

WeakSet has the same APIs and parameters as Set for the functions it implements.

  • UserInterface/Protocol/RemoteObject.js:

(WebInspector.RemoteObject.prototype.isCollectionType):
(WebInspector.RemoteObject.prototype.isWeakCollection):
(WebInspector.RemoteObject.prototype.getCollectionEntries):
(WebInspector.RemoteObject.prototype._weakCollectionObjectGroup):
WeakSet is a weak collection.

  • UserInterface/Models/ObjectPreview.js:

(WebInspector.ObjectPreview.prototype.hasSize):

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView.prototype._formatParameter):

  • UserInterface/Views/FormattedValue.css:

(.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap, .formatted-weakset):
(:matches(.formatted-array, .formatted-map, .formatted-set, .formatted-weakmap, .formatted-weakset) > .size):
(.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap): Deleted.
(:matches(.formatted-array, .formatted-map, .formatted-set, .formatted-weakmap) > .size): Deleted.

  • UserInterface/Views/FormattedValue.js:

(WebInspector.FormattedValue.createElementForTypesAndValue):
Treat a WeakSet like a set in more places.

LayoutTests:

  • inspector/model/remote-object-expected.txt:
  • inspector/model/remote-object.html:

Update the test to include a WeakSet example.
Also rebaseline for iterator changes that landed recently.

12:40 PM Changeset in webkit [183024] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

CSSParser::parseValue() copies the m_parsedProperties vector at addParsedProperties()
https://bugs.webkit.org/show_bug.cgi?id=143925

Reviewed by Simon Fraser.

Update MutableStyleProperties::addParsedProperties() to use
CSSParser::ParsedPropertyVector type (i.e. Vector<CSSProperty, 256>)
instead of Vector<CSSProperty> so that the properties vector is no
longer copied unnecessarily to convert one type to the other.

  • css/CSSParser.h:
  • css/StyleProperties.cpp:

(WebCore::MutableStyleProperties::addParsedProperties):

  • css/StyleProperties.h:
12:39 PM Changeset in webkit [183023] by ap@apple.com
  • 3 edits in trunk/Source/WebKit/mac

Disable mixed content blocking for existing WebKit1 clients
https://bugs.webkit.org/show_bug.cgi?id=143955
rdar://problem/20177186

Reviewed by Oliver Hunt.

  • Misc/WebKitVersionChecks.h:
  • WebView/WebView.mm:

(shouldAllowInsecureContent):
(-[WebView _preferencesChanged:]):

12:35 PM Changeset in webkit [183022] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

HashMap storing PropertyKey StringImpl* need to use IdentifierRepHash to handle Symbols
https://bugs.webkit.org/show_bug.cgi?id=143947

Reviewed by Darin Adler.

Type profiler has map between PropertyKey (StringImpl*) and offset.
StringImpl* is also used for Symbol PropertyKey.
So equality of hash tables is considered by interned StringImpl*'s pointer value.
To do so, use IdentifierRepHash instead of StringHash.

  • runtime/SymbolTable.h:
12:03 PM Changeset in webkit [183021] by Beth Dakin
  • 15 edits in trunk/Source

Should remove mouseForceClick and mouseForceCancelled from DOM force events
https://bugs.webkit.org/show_bug.cgi?id=143904
-and corresponding-
rdar://problem/20578842

Reviewed by Dan Bernstein.

Source/WebCore:

After more thought and discussion, we decided to remove mouseForceClick and
mouseForceCancelled from DOM force events. mouseForceClick is confusing and
redundant. mouseForceCancelled is confusing as it is currently implemented, and
all of its functionality can be filled by exisiting events such as mouseup,
mouseout, etc.

  • dom/Document.cpp:

(WebCore::Document::addListenerTypeIfNeeded):

  • dom/Document.h:
  • dom/Document.idl:
  • dom/Element.cpp:

(WebCore::Element::dispatchMouseForceWillBegin):
(WebCore::Element::dispatchMouseForceClick): Deleted.
(WebCore::Element::dispatchMouseForceCancelled): Deleted.

  • dom/Element.h:
  • dom/Element.idl:
  • dom/EventNames.h:
  • html/HTMLAttributeNames.in:
  • html/HTMLBodyElement.cpp:

(WebCore::HTMLBodyElement::createWindowEventHandlerNameMap):

  • html/HTMLBodyElement.idl:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::createEventHandlerNameMap):

  • page/DOMWindow.idl:

Source/WebKit2:

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::immediateActionDidCancel):

11:48 AM Changeset in webkit [183020] by achristensen@apple.com
  • 4 edits in trunk

Fix content extension test flakiness.
https://bugs.webkit.org/show_bug.cgi?id=143950

Reviewed by Brady Eidson.

Tools:

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformResetPreferencesToConsistentValues):
Remove the TestContentExtensions if it exists.
(WTR::TestController::platformConfigureViewForTest):
Log errors in case there are any.

LayoutTests:

  • platform/mac-wk2/TestExpectations:

Mark contentextensions tests as not flaky any more.

11:46 AM Changeset in webkit [183019] by timothy_horton@apple.com
  • 6 edits in trunk/Source

Implement immediate action support for tel: and mailto: URLs
https://bugs.webkit.org/show_bug.cgi?id=143916
<rdar://problem/19721711>

Reviewed by Darin Adler.

  • Shared/API/c/WKImmediateActionTypes.h:
  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController _defaultAnimationController]):
(-[WKImmediateActionController _animationControllerForDataDetectedText]):
(-[WKImmediateActionController _animationControllerForDataDetectedLink]):
(-[WKImmediateActionController _menuItemForDataDetectedText]): Deleted.
Add _animationControllerForDataDetectedLink and use it when
building immediate actions for tel: and mailto: links.

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController _defaultAnimationController]):
(-[WebImmediateActionController _animationControllerForDataDetectedText]):
(-[WebImmediateActionController _animationControllerForDataDetectedLink]):
(-[WebImmediateActionController _menuItemForDataDetectedText]): Deleted.

  • WebView/WebUIDelegatePrivate.h:

Add _animationControllerForDataDetectedLink and use it when
building immediate actions for tel: and mailto: links.

11:45 AM Changeset in webkit [183018] by Beth Dakin
  • 2 edits in trunk/LayoutTests

Should not list these tests twice.

  • platform/mac-wk2/TestExpectations:
11:31 AM Changeset in webkit [183017] by Simon Fraser
  • 17 edits
    2 adds in trunk

Setting inline style to the same value it already has triggers a style recalc
https://bugs.webkit.org/show_bug.cgi?id=143922

Reviewed by Antti Koivisto.

Source/WebCore:

MutableStyleProperties::setProperty() was taking the result of CSSParser::parseValue()
to mean "parsing changed the style", but it actually just means "parsing succeeded".
Add a new out param, piped through various parser functions, to indicate whether
parsing actually changed style, and instead return that from setProperty().

Add internals.startTrackingStyleRecalcs() and internals.styleRecalcCount() so
we can write tests for style recalc.

Test: fast/css/set-inline-style-recalc.html

  • WebCore.xcodeproj/project.pbxproj: Let Xcode have it's way.
  • css/CSSParser.cpp:

(WebCore::parseColorValue):
(WebCore::parseSimpleLengthValue):
(WebCore::parseKeywordValue):
(WebCore::parseTranslateTransformValue):
(WebCore::CSSParser::parseFontFaceValue):
(WebCore::CSSParser::parseValue):

  • css/CSSParser.h:
  • css/CSSProperty.h:

(WebCore::StylePropertyMetadata::operator==):
(WebCore::CSSProperty::operator==):

  • css/DOMWindowCSS.cpp:

(WebCore::DOMWindowCSS::supports):

  • css/StyleProperties.cpp:

(WebCore::MutableStyleProperties::setProperty):
(WebCore::MutableStyleProperties::appendPrefixingVariantProperty):
(WebCore::MutableStyleProperties::addParsedProperties):
(WebCore::MutableStyleProperties::addParsedProperty):

  • css/StyleProperties.h:
  • css/WebKitCSSMatrix.cpp:

(WebCore::WebKitCSSMatrix::setMatrixValue):

  • dom/Document.cpp:

(WebCore::Document::recalcStyle):
(WebCore::Document::startTrackingStyleRecalcs):
(WebCore::Document::styleRecalcCount):

  • dom/Document.h:
  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::setFont):

  • testing/Internals.cpp:

(WebCore::Internals::startTrackingStyleRecalcs):
(WebCore::Internals::styleRecalcCount):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

Test that changes inline-style (to test this bug fix), and classes (for
proactive testing) and counts style recalcs.

  • fast/css/set-inline-style-recalc-expected.txt: Added.
  • fast/css/set-inline-style-recalc.html: Added.
10:14 AM Changeset in webkit [183016] by beidson@apple.com
  • 5 edits
    7 adds in trunk

Crash in StyleResolver::invalidateMatchedPropertiesCache() when using content extensions.
<rdar://problem/20554405> and https://bugs.webkit.org/show_bug.cgi?id=143892

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/contentextensions/style-resolver-changed-reentrancy.html

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForLoad):

  • dom/DocumentStyleSheetCollection.cpp:

(WebCore::DocumentStyleSheetCollection::DocumentStyleSheetCollection):
(WebCore::DocumentStyleSheetCollection::addContentExtensionUserSheet): Call styleResolverChanged on a delay.
(WebCore::DocumentStyleSheetCollection::maybeAddContentExtensionSheet): Ditto.
(WebCore::DocumentStyleSheetCollection::styleResolverChangedTimerFired):

  • dom/DocumentStyleSheetCollection.h:

LayoutTests:

  • http/tests/contentextensions/resources/woff-stylesheet.css: Added.

(@font-face):

  • http/tests/contentextensions/style-resolver-changed-reentrancy-expected.txt: Added.
  • http/tests/contentextensions/style-resolver-changed-reentrancy.html: Added.
  • http/tests/contentextensions/style-resolver-changed-reentrancy.html.json: Added.
  • http/tests/resources/Ahem.woff: Added.
9:49 AM Changeset in webkit [183015] by peavo@outlook.com
  • 3 edits
    2 adds in trunk

Favicons are not always loaded.
https://bugs.webkit.org/show_bug.cgi?id=143880

Reviewed by Darin Adler.

Source/WebCore:

If the favicon link element(s) in the document does not have a mime type,
the favicon is loaded from the domain root (/favicon.ico). If no favicon
exists at this location, the favicon loading will fail. This can be solved
by not demanding that the link element has a mime type.

Test: fast/dom/icon-url-without-mimetype.html

  • loader/icon/IconController.cpp:

(WebCore::iconFromLinkElements): Return the chosen icon URL instead of a vector of URLs.
(WebCore::IconController::url):
(WebCore::iconsFromLinkElements): Deleted.

LayoutTests:

Added new test for icon link elements without mime type.

  • fast/dom/icon-url-without-mimetype-expected.txt: Added.
  • fast/dom/icon-url-without-mimetype.html: Added.
9:37 AM Changeset in webkit [183014] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Contentextensions tests are flaky
https://bugs.webkit.org/show_bug.cgi?id=143950

  • platform/mac-wk2/TestExpectations: Marking them as such.
9:13 AM Changeset in webkit [183013] by achristensen@apple.com
  • 4 edits in trunk

Properly report errors from _WKUserContentExtensionStore.
https://bugs.webkit.org/show_bug.cgi?id=143808

Reviewed by Darin Adler.

Source/WebKit2:

  • UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm:

(-[_WKUserContentExtensionStore compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]):
(-[_WKUserContentExtensionStore lookupContentExtensionForIdentifier:completionHandler:]):
(-[_WKUserContentExtensionStore removeContentExtensionForIdentifier:completionHandler:]):

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/_WKUserContentExtensionStore.mm:

(TEST_F):

8:23 AM Changeset in webkit [183012] by Martin Robinson
  • 3 edits in trunk/Source/WebCore

[CMake] Include ICU unconditionally on the source lists
https://bugs.webkit.org/show_bug.cgi?id=143900

Reviewed by Darin Adler.

No new tests. This is just a build file change.

  • CMakeLists.txt: Integrate ICU source files, includes, and libraries into the main

sections. They are shared by all platforms.

  • PlatformGTK.cmake: Eliminate build rules that are duplicated from the main CMakeLists.txt.
8:05 AM Changeset in webkit [183011] by Chris Fleizach
  • 2 edits in trunk/Source/WebCore

AX: iOS: Text input field ignores value of read-only and aria-readonly attributes
https://bugs.webkit.org/show_bug.cgi?id=143946

Reviewed by Mario Sanchez Prada.

Expose an existing method for determining whether the value can be set to the iOS accessibility platform.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityCanSetValue]):

3:48 AM Changeset in webkit [183010] by jinwoo7.song@samsung.com
  • 4 edits
    1 add in trunk/LayoutTests

[EFL] Unreviewed gardening

Update test expectations for failing tests.

  • platform/efl/fast/box-sizing/box-sizing-expected.png: Rebaseline after 176978.
  • platform/efl/fast/box-sizing/box-sizing-expected.txt: Ditto.
  • platform/efl/fast/css/image-rendering-expected.txt: Added. Rebaseline after r177774.
  • platform/efl/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport-expected.txt:

Rebaseline after r173857.

2:18 AM Changeset in webkit [183009] by akling@apple.com
  • 6 edits
    1 delete in trunk/Source/WebCore

Merge TreeShared into Node.
<https://webkit.org/b/143942>

Reviewed by Darin Adler.

Node was the only remaining user of TreeShared, so just fold the class into Node.

  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.vcxproj/WebCore.vcxproj.filters:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Node.cpp:

(WebCore::Node::Node):
(WebCore::Node::~Node):

  • dom/Node.h:

(WebCore::Node::ref):
(WebCore::Node::deref):
(WebCore::Node::hasOneRef):
(WebCore::Node::refCount):
(WebCore::adopted):
(WebCore::Node::hasTreeSharedParent): Deleted.

  • platform/TreeShared.h: Removed.
1:31 AM Changeset in webkit [183008] by jinwoo7.song@samsung.com
  • 1 edit
    1 add in trunk/LayoutTests

[EFL] Unreviewed gardening

Rebaseline after r177774.

  • platform/efl/css2.1/t1508-c527-font-00-b-expected.txt: Added.
1:29 AM Changeset in webkit [183007] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Add a rule for NetworkCache to watchlist file
https://bugs.webkit.org/show_bug.cgi?id=143945

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2015-04-20
Reviewed by Sergio Villar Senin.

And add myself to the list of watchers.

  • Scripts/webkitpy/common/config/watchlist:
12:05 AM Changeset in webkit [183006] by commit-queue@webkit.org
  • 6 edits
    3 adds in trunk

Implement Object.is
https://bugs.webkit.org/show_bug.cgi?id=143865

Patch by Jordan Harband <ljharb@gmail.com> on 2015-04-20
Reviewed by Darin Adler.

Source/JavaScriptCore:

Expose sameValue to JS, via Object.is
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.is

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorIs):

  • runtime/PropertyDescriptor.cpp:

(JSC::sameValue):

LayoutTests:

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/Object-is-expected.txt: Added.
  • js/Object-is.html: Added.
  • js/script-tests/Object-getOwnPropertyNames.js:
  • js/script-tests/Object-is.js: Added.

Apr 19, 2015:

11:05 PM Changeset in webkit [183005] by Darin Adler
  • 10 edits in trunk/Source/JavaScriptCore

Remove all the remaining uses of OwnPtr and PassOwnPtr in JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=143941

Reviewed by Gyuyoung Kim.

  • API/JSCallbackObject.h: Use unique_ptr for m_callbackObjectData.
  • API/JSCallbackObjectFunctions.h: Ditto.
  • API/ObjCCallbackFunction.h: Use unique_ptr for the arguments to the

create function and the constructor and for m_impl.

  • API/ObjCCallbackFunction.mm:

(CallbackArgumentOfClass::CallbackArgumentOfClass): Streamline this
class by using RetainPtr<Class>.
(ArgumentTypeDelegate::typeInteger): Use make_unique.
(ArgumentTypeDelegate::typeDouble): Ditto.
(ArgumentTypeDelegate::typeBool): Ditto.
(ArgumentTypeDelegate::typeVoid): Ditto.
(ArgumentTypeDelegate::typeId): Ditto.
(ArgumentTypeDelegate::typeOfClass): Ditto.
(ArgumentTypeDelegate::typeBlock): Ditto.
(ArgumentTypeDelegate::typeStruct): Ditto.
(ResultTypeDelegate::typeInteger): Ditto.
(ResultTypeDelegate::typeDouble): Ditto.
(ResultTypeDelegate::typeBool): Ditto.
(ResultTypeDelegate::typeVoid): Ditto.
(ResultTypeDelegate::typeId): Ditto.
(ResultTypeDelegate::typeOfClass): Ditto.
(ResultTypeDelegate::typeBlock): Ditto.
(ResultTypeDelegate::typeStruct): Ditto.
(JSC::ObjCCallbackFunctionImpl::ObjCCallbackFunctionImpl): Use
unique_ptr for the arguments to the constructor, m_arguments, and m_result.
Use RetainPtr<Class> for m_instanceClass.
(JSC::objCCallbackFunctionCallAsConstructor): Use nullptr instead of nil or 0
for non-Objective-C object pointer null.
(JSC::ObjCCallbackFunction::ObjCCallbackFunction): Use unique_ptr for
the arguments to the constructor and for m_impl.
(JSC::ObjCCallbackFunction::create): Use unique_ptr for arguments.
(skipNumber): Mark this static since it's local to this source file.
(objCCallbackFunctionForInvocation): Call parseObjCType without doing any
explicit adoptPtr since the types in the traits are now unique_ptr. Also use
nullptr instead of nil for JSObjectRef values.
(objCCallbackFunctionForMethod): Tweaked comment.
(objCCallbackFunctionForBlock): Use nullptr instead of 0 for JSObjectRef.

  • bytecode/CallLinkInfo.h: Removed unneeded include of OwnPtr.h.
  • heap/GCThread.cpp:

(JSC::GCThread::GCThread): Use unique_ptr.

  • heap/GCThread.h: Use unique_ptr for arguments to the constructor and for

m_slotVisitor and m_copyVisitor.

  • heap/GCThreadSharedData.cpp:

(JSC::GCThreadSharedData::GCThreadSharedData): Ditto.

  • parser/SourceProvider.h: Removed unneeded include of PassOwnPtr.h.
10:32 PM Changeset in webkit [183004] by bshafiei@apple.com
  • 5 edits in branches/safari-600.1.4.16-branch/Source

Versioning.

10:30 PM Changeset in webkit [183003] by bshafiei@apple.com
  • 1 copy in branches/safari-600.1.4.16-branch

New Branch.

9:47 PM Changeset in webkit [183002] by mitz@apple.com
  • 2 edits in trunk/Websites/webkit.org

Fixed a typo.

  • coding/RefPtr.html:
9:42 PM Changeset in webkit [183001] by Darin Adler
  • 9 edits in trunk

Update RefPtr documentation and deprecation
https://bugs.webkit.org/show_bug.cgi?id=143936

Reviewed by Andreas Kling.

Source/WTF:

  • WTF.vcxproj/WTF.vcxproj: Removed PassRef.h
  • WTF.vcxproj/WTF.vcxproj.filters: Ditto.
  • WTF.xcodeproj/project.pbxproj: Ditto.
  • wtf/CMakeLists.txt: Ditto.

Tools:

  • Scripts/do-webcore-rename: Put in some DeprecatedPassRefPtr renames.

Websites/webkit.org:

  • coding/RefPtr.html: Updated.
9:17 PM Changeset in webkit [183000] by bshafiei@apple.com
  • 5 edits in branches/safari-600.6-branch/Source

Versioning.

9:08 PM Changeset in webkit [182999] by bshafiei@apple.com
  • 1 copy in tags/Safari-600.6.2

New tag.

8:54 PM Changeset in webkit [182998] by benjamin@webkit.org
  • 4 edits in trunk/Source

Improve the feature.json files

  • features.json:
6:45 PM Changeset in webkit [182997] by Yusuke Suzuki
  • 14 edits
    3 adds in trunk

Introduce bytecode intrinsics
https://bugs.webkit.org/show_bug.cgi?id=143926

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This patch introduces bytecode level intrinsics into builtins/*.js JS code.
When implementing functions in builtins/*.js,
sometimes we require lower level functionality.

For example, in the current Array.from, we use result[k] = value.
The spec requires [[DefineOwnProperty]] operation here.
However, usual result[k] = value is evaluated as [[Set]]. (PutValue => [[Set]])
So if we implement Array.prototype[k] getter/setter, the difference is observable.

Ideally, reaching here, we would like to use put_by_val_direct bytecode.
However, there's no syntax to generate it directly.

This patch introduces bytecode level intrinsics into JSC BytecodeCompiler.
Like @call, @apply, we introduce a new node, Intrinsic.
These are generated when calling appropriate private symbols in privileged code.
AST parser detects them and generates Intrinsic nodes and
BytecodeCompiler detects them and generate required bytecodes.

Currently, Array.from implementation works fine without this patch.
This is because when the target code is builtin JS,
BytecodeGenerator emits put_by_val_direct instead of put_by_val.
This solves the above issue. However, instead of solving this issue,
it raises another issue; There's no way to emit [[Set]] operation.
[[Set]] operation is actually used in the spec (Array.from's "length" is set by [[Set]]).
So to implement it precisely, introducing bytecode level intrinsics is necessary.

In the subsequent fixes, we'll remove that special path emitting put_by_val_direct
for result[k] = value under builtin JS environment. Instead of that special handling,
use bytecode intrinsics instead. It solves problems and it is more intuitive
because written JS code in builtin works as the same to the usual JS code.

(from):

  • bytecode/BytecodeIntrinsicRegistry.cpp: Added.

(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):
(JSC::BytecodeIntrinsicRegistry::lookup):

  • bytecode/BytecodeIntrinsicRegistry.h: Added.
  • bytecompiler/NodesCodegen.cpp:

(JSC::BytecodeIntrinsicNode::emitBytecode):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_putByValDirect):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::makeFunctionCallNode):

  • parser/NodeConstructors.h:

(JSC::BytecodeIntrinsicNode::BytecodeIntrinsicNode):

  • parser/Nodes.h:

(JSC::BytecodeIntrinsicNode::identifier):

  • runtime/CommonIdentifiers.cpp:

(JSC::CommonIdentifiers::CommonIdentifiers):

  • runtime/CommonIdentifiers.h:

(JSC::CommonIdentifiers::bytecodeIntrinsicRegistry):

  • tests/stress/array-from-with-accessors.js: Added.

(shouldBe):

Tools:

Change cpplint to accept emit_intrinsic_XXX.

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_identifier_name_in_declaration):

6:28 PM Changeset in webkit [182996] by Gyuyoung Kim
  • 3 edits in trunk

[CMake] Synchronize variables between WebKitFeatures.cmake and cmakedonfig.h.cmake
https://bugs.webkit.org/show_bug.cgi?id=143935

Reviewed by Darin Adler.

Some variables aren't defined in these files or unused variables aren't removed. This
patch cleans up it as well as fix wrong alphabet order.

  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmakeconfig.h.cmake:
11:59 AM Changeset in webkit [182995] by Yusuke Suzuki
  • 5 edits
    1 add in trunk/Source/JavaScriptCore

Make Builtin functions non constructible
https://bugs.webkit.org/show_bug.cgi?id=143923

Reviewed by Darin Adler.

Builtin functions defined by builtins/*.js accidentally have Construct?.
According to the spec, these functions except for explicitly defined as a constructor do not have Construct?.
This patch fixes it. When the JS function used for a construction is builtin function, throw not a constructor error.

Ideally, returning ConstructTypeNone in JSFunction::getConstructData is enough.
However, to avoid calling getConstructData (it involves indirect call of function pointer of getConstructData), some places do not check ConstructType.
In these places, they only check the target function is JSFunction because previously JSFunction always has Construct?.
So in this patch, we check isBuiltinFunction() in those places.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::inliningCost):

  • jit/JITOperations.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setUpCall):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::getConstructData):

  • tests/stress/builtin-function-is-construct-type-none.js: Added.

(shouldThrow):

11:08 AM Changeset in webkit [182994] by Yusuke Suzuki
  • 12 edits
    11 adds in trunk

[ES6] Implement WeakSet
https://bugs.webkit.org/show_bug.cgi?id=142408

Reviewed by Darin Adler.

Source/JavaScriptCore:

This patch implements ES6 WeakSet.
Current implementation simply leverages WeakMapData with undefined value.
This WeakMapData should be optimized in the same manner as MapData/SetData in the subsequent patch[1].

And in this patch, we also fix WeakMap/WeakSet behavior to conform the ES6 spec.
Except for adders (WeakMap.prototype.set/WeakSet.prototype.add),
methods return false (or undefined for WeakMap.prototype.get)
when a key is not Object instead of throwing a type error.

[1]: https://bugs.webkit.org/show_bug.cgi?id=143919

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • runtime/CommonIdentifiers.h:
  • runtime/JSGlobalObject.cpp:
  • runtime/JSGlobalObject.h:
  • runtime/JSWeakSet.cpp: Added.

(JSC::JSWeakSet::finishCreation):
(JSC::JSWeakSet::visitChildren):

  • runtime/JSWeakSet.h: Added.

(JSC::JSWeakSet::createStructure):
(JSC::JSWeakSet::create):
(JSC::JSWeakSet::weakMapData):
(JSC::JSWeakSet::JSWeakSet):

  • runtime/WeakMapPrototype.cpp:

(JSC::getWeakMapData):
(JSC::protoFuncWeakMapDelete):
(JSC::protoFuncWeakMapGet):
(JSC::protoFuncWeakMapHas):

  • runtime/WeakSetConstructor.cpp: Added.

(JSC::WeakSetConstructor::finishCreation):
(JSC::callWeakSet):
(JSC::constructWeakSet):
(JSC::WeakSetConstructor::getConstructData):
(JSC::WeakSetConstructor::getCallData):

  • runtime/WeakSetConstructor.h: Added.

(JSC::WeakSetConstructor::create):
(JSC::WeakSetConstructor::createStructure):
(JSC::WeakSetConstructor::WeakSetConstructor):

  • runtime/WeakSetPrototype.cpp: Added.

(JSC::WeakSetPrototype::finishCreation):
(JSC::getWeakMapData):
(JSC::protoFuncWeakSetDelete):
(JSC::protoFuncWeakSetHas):
(JSC::protoFuncWeakSetAdd):

  • runtime/WeakSetPrototype.h: Added.

(JSC::WeakSetPrototype::create):
(JSC::WeakSetPrototype::createStructure):
(JSC::WeakSetPrototype::WeakSetPrototype):

  • tests/stress/weak-set-constructor-adder.js: Added.

(WeakSet.prototype.add):

  • tests/stress/weak-set-constructor.js: Added.

LayoutTests:

Add basic-weakset test and fix WeakMap behavior to conform the latest spec.

  • js/dom/basic-weakmap-expected.txt:
  • js/dom/basic-weakset-expected.txt: Added.
  • js/dom/basic-weakset.html: Added.
  • js/dom/script-tests/basic-weakmap.js:
  • js/dom/script-tests/basic-weakset.js: Added.
9:17 AM Changeset in webkit [182993] by Simon Fraser
  • 2 edits in trunk

Restore the WebKit.xcworkspace to the way it was before r182899,
which inadvertently added the Source directory and a couple of source
files.

  • WebKit.xcworkspace/contents.xcworkspacedata:
12:10 AM Changeset in webkit [182992] by bshafiei@apple.com
  • 5 edits in branches/safari-600.6-branch/Source

Versioning.

Apr 18, 2015:

11:56 PM Changeset in webkit [182991] by bshafiei@apple.com
  • 1 copy in tags/Safari-600.6.1

New tag.

9:20 PM Changeset in webkit [182990] by Nikita Vasilyev
  • 17 edits in trunk/Source/WebInspectorUI

Web Inspector: Pass multiple arguments to classList.add and classList.remove
https://bugs.webkit.org/show_bug.cgi?id=143914

classList.add and classList.remove can accept multiple arguments, use that.

Reviewed by Timothy Hatcher.

  • UserInterface/Base/Main.js:

(WebInspector.updateDockedState):

  • UserInterface/Views/DOMTreeDataGrid.js:

(WebInspector.DOMTreeDataGrid):

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):

  • UserInterface/Views/DataGrid.js:

(WebInspector.DataGridNode.prototype.set hasChildren):

  • UserInterface/Views/DatabaseContentView.js:

(WebInspector.DatabaseContentView):

  • UserInterface/Views/DetailsSection.js:

(WebInspector.DetailsSection):

  • UserInterface/Views/DetailsSectionPropertiesRow.js:

(WebInspector.DetailsSectionPropertiesRow):

  • UserInterface/Views/GeneralTreeElement.js:

(WebInspector.GeneralTreeElement.prototype.set classNames):

  • UserInterface/Views/NavigationItem.js:

(WebInspector.NavigationItem):

  • UserInterface/Views/ResourceContentView.js:

(WebInspector.ResourceContentView):

  • UserInterface/Views/ResourceTimelineDataGridNode.js:

(WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):

  • UserInterface/Views/Sidebar.js:

(WebInspector.Sidebar):

  • UserInterface/Views/SidebarPanel.js:

(WebInspector.SidebarPanel):

  • UserInterface/Views/SourceCodeTextEditor.js:
  • UserInterface/Views/TextEditor.js:

(WebInspector.TextEditor):

  • UserInterface/Views/TimelineRuler.js:
9:19 PM Changeset in webkit [182989] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Make prototype pill’s background semi-transparent
https://bugs.webkit.org/show_bug.cgi?id=143928

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ObjectTreePropertyTreeElement.css:

(.object-tree-property.prototype-property):

(.object-tree-property.prototype-property:hover, .object-tree-property.prototype-property:focus):
Slightly highlight the prototype pill when hovering over.

8:29 PM Changeset in webkit [182988] by jonlee@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac] Time elapsed should be right-aligned
https://bugs.webkit.org/show_bug.cgi?id=143927

Reviewed by Eric Carlson.

Current time is left-aligned, which is visually jarring when going from < 1 hour to > 1 hour.

  • Modules/mediacontrols/mediaControlsApple.css:

(audio::-webkit-media-controls-current-time-display): Set justify-content to flex-end.
(audio::-webkit-media-controls-time-remaining-display): Explicitly set justify-content to flex-start.

3:06 PM Changeset in webkit [182987] by Simon Fraser
  • 2 edits in trunk/Tools

Fix lldb_webkit.py to show StringImpls correctly
https://bugs.webkit.org/show_bug.cgi?id=143920

Reviewed by Andreas Kling.

Update WTFStringImplProvider's is_8bit to use the correct bitmask.

  • lldb/lldb_webkit.py:

(WTFStringImplProvider.is_8bit):

1:15 PM Changeset in webkit [182986] by Michał Pakuła vel Rutka
  • 8 edits
    1 add in trunk/LayoutTests

[EFL] Unreviewed gardening

Update test expectations for failing tests.

  • platform/efl/TestExpectations:
  • platform/efl/fast/css/text-overflow-ellipsis-bidi-expected.txt: Rebaseline after r182620.
  • platform/efl/fast/dom/focus-contenteditable-expected.txt: Ditto.
  • platform/efl/fast/forms/listbox-hit-test-zoomed-expected.txt: Ditto.
  • platform/efl/fast/parser/open-comment-in-textarea-expected.txt: Ditto.
  • platform/efl/fast/text/international/bidi-layout-across-linebreak-expected.txt: Ditto.
  • platform/efl/inspector-protocol/debugger/regress-133182-expected.txt: Rebaseline after r181810.
  • platform/efl/svg/wicd/test-rightsizing-b-expected.txt: Rebaseline after r182620.
12:39 PM Changeset in webkit [182985] by Simon Fraser
  • 25 edits
    2 adds in trunk

REGRESSION (r181656): Animated tiled layers are missing content
https://bugs.webkit.org/show_bug.cgi?id=143911
rdar://problem/20596328

Reviewed by Darin Adler.
Source/WebCore:

After r181656, all requestAnimationFrame was falling back to timers, and not
using the platform's DisplayRefreshMonitor, because of a Nullopt vs nullptr
fumble. As a result, GraphicsLayerUpdater (which updates tiled layers during
animations) was failing to do any updates.

Replace this confusing Optional<> code with simpler code that just forces the
clients to make a DisplayRefreshMonitor if they can, first asking
ChromeClient, and then falling back to createDefaultDisplayRefreshMonitor().

Make lots of things into references, and use C++11 initialization in some places.

Add Internals API to allow a test to get the number of layer flushes that have
occurred.

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::ScriptedAnimationController):
(WebCore::ScriptedAnimationController::windowScreenDidChange):
(WebCore::ScriptedAnimationController::scheduleAnimation):
(WebCore::ScriptedAnimationController::createDisplayRefreshMonitor):

  • dom/ScriptedAnimationController.h:
  • page/ChromeClient.h:
  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::createDefaultDisplayRefreshMonitor):
(WebCore::DisplayRefreshMonitor::create):
(WebCore::DisplayRefreshMonitor::addClient):
(WebCore::DisplayRefreshMonitor::removeClient):
(WebCore::DisplayRefreshMonitor::displayDidRefresh):

  • platform/graphics/DisplayRefreshMonitor.h:
  • platform/graphics/DisplayRefreshMonitorClient.cpp:

(WebCore::DisplayRefreshMonitorClient::~DisplayRefreshMonitorClient):

  • platform/graphics/DisplayRefreshMonitorClient.h:
  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::createMonitorForClient):
(WebCore::DisplayRefreshMonitorManager::registerClient):
(WebCore::DisplayRefreshMonitorManager::unregisterClient):
(WebCore::DisplayRefreshMonitorManager::scheduleAnimation):
(WebCore::DisplayRefreshMonitorManager::displayDidRefresh):
(WebCore::DisplayRefreshMonitorManager::windowScreenDidChange):

  • platform/graphics/DisplayRefreshMonitorManager.h:
  • platform/graphics/GraphicsLayerUpdater.cpp:

(WebCore::GraphicsLayerUpdater::GraphicsLayerUpdater):
(WebCore::GraphicsLayerUpdater::scheduleUpdate):
(WebCore::GraphicsLayerUpdater::screenDidChange):
(WebCore::GraphicsLayerUpdater::displayRefreshFired):
(WebCore::GraphicsLayerUpdater::createDisplayRefreshMonitor):

  • platform/graphics/GraphicsLayerUpdater.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::RenderLayerCompositor):
(WebCore::RenderLayerCompositor::flushPendingLayerChanges):
(WebCore::RenderLayerCompositor::notifyFlushBeforeDisplayRefresh):
(WebCore::RenderLayerCompositor::flushLayersSoon):
(WebCore::RenderLayerCompositor::createDisplayRefreshMonitor):
(WebCore::RenderLayerCompositor::startTrackingLayerFlushes):
(WebCore::RenderLayerCompositor::layerFlushCount):

  • rendering/RenderLayerCompositor.h:
  • testing/Internals.cpp:

(WebCore::Internals::startTrackingLayerFlushes):
(WebCore::Internals::layerFlushCount):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit2:

After r181656, all requestAnimationFrame was falling back to timers, and not
using the platform's DisplayRefreshMonitor, because of a Nullopt vs nullptr
fumble.

Replace this confusing Optional<> code with simpler code that just forces the
clients to make a DisplayRefreshMonitor if they can, first asking
ChromeClient, and then falling back to createDefaultDisplayRefreshMonitor().

Make lots of things into references, and use C++11 initialization in some places.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createDisplayRefreshMonitor):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

LayoutTests:

Test that animates a tiled layer, and checks that layer flushes occur while the
animation is running.

  • compositing/animation/animation-backing-expected.txt: Added.
  • compositing/animation/animation-backing.html: Added.
7:57 AM Changeset in webkit [182984] by mitz@apple.com
  • 3 edits
    2 moves
    1 add in trunk/Source/WebKit2

SwipeShadow images are installed on iOS
https://bugs.webkit.org/show_bug.cgi?id=143915

Reviewed by Tim Horton.

  • Configurations/WebKit.xcconfig: Added Resources/Mac/* to

EXCLUDED_SOURCE_FILE_NAMES[sdk=iphone*]. We could move more resources there and remove
individual patterns.

  • Resources/SwipeShadow.png: Moved to mac.
  • Resources/SwipeShadow@2x.png: Moved to mac.
  • Resources/mac: Added.
  • Resources/mac/SwipeShadow.png: Moved from Source/WebKit2/Resources/SwipeShadow.png.
  • Resources/mac/SwipeShadow@2x.png: Moved from Source/WebKit2/Resources/SwipeShadow@2x.png.
  • WebKit2.xcodeproj/project.pbxproj: Created mac group in the Resources group and moved

SwipeShadow*.png into it. Updated for file moves.

7:42 AM Changeset in webkit [182983] by Chris Dumez
  • 4 edits in trunk/Source/WebKit2

Fix NetworkCache Statistics database bootstrapping after r182803
https://bugs.webkit.org/show_bug.cgi?id=143890

Reviewed by Darin Adler.

Update the NetworkCache Statistics database bootstrapping code to use
the records path instead of the version path. Also check that the
filenames in the folder are valid hashes to discard the *-body files.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::recordsPath):
(WebKit::NetworkCache::Cache::storagePath): Deleted.

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStatistics.cpp:

(WebKit::NetworkCache::Statistics::initialize):
(WebKit::NetworkCache::Statistics::bootstrapFromNetworkCache):
(WebKit::NetworkCache::Statistics::shrinkIfNeeded):

Apr 17, 2015:

9:04 PM Changeset in webkit [182982] by jonowells@apple.com
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: All sans-serif font family rules should be set the same way.
https://bugs.webkit.org/show_bug.cgi?id=143909

Reviewed by Timothy Hatcher.

Update styles so that all uses of sans-serif font use -webkit-system-font consistently.

  • UserInterface/Views/DefaultDashboardView.css:

(body.mac-platform.legacy .toolbar .dashboard.default > .item):

  • UserInterface/Views/ObjectTreePropertyTreeElement.css:

(.object-tree-property .prototype-name):

  • UserInterface/Views/ObjectTreeView.css:

(.object-tree-outline li .empty-message):

  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:

(.timeline-overview-graph.rendering-frame > .divider > .label):

7:55 PM Changeset in webkit [182981] by aestes@apple.com
  • 2 edits in branches/safari-600.6-branch/Source/WebCore

Merged r181409. rdar://problem/20540512

6:04 PM Changeset in webkit [182980] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit2

Clients sometimes block for 500ms in waitForPossibleGeometryUpdates
https://bugs.webkit.org/show_bug.cgi?id=143901
<rdar://problem/20488655>

Reviewed by Anders Carlsson.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::waitForMessage):
InterruptWaitingIfSyncMessageArrives already cancels waitForMessage if
a sync message arrives while waiting, but it should also avoid waiting
if there's a sync message already in the queue when the waiting starts,
as that will have the same nasty effect.

  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:

(WebKit::TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate):
If a synchronous message comes in from the Web process while we're waiting,
cancel our synchronous wait for DidUpdateGeometry. This will cause the size
change to not synchronize with the Web process' painting, but that is better
than pointlessly blocking for 500ms.

5:46 PM Changeset in webkit [182979] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Possible null pointer dereference in WebDiagnosticLoggingClient::logDiagnosticMessageWithValue()
https://bugs.webkit.org/show_bug.cgi?id=143899
<rdar://problem/20584215>

Reviewed by Anders Carlsson.

WebDiagnosticLoggingClient::logDiagnosticMessage*() methods failed to
check that m_page.corePage() was non-null before dereferencing, thus
causing crashes when it is null.

  • WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:

(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessage):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithResult):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithValue):

5:12 PM Changeset in webkit [182978] by Lucas Forschler
  • 3 edits in branches/safari-600.6-branch

Rollout r182965.

3:45 PM Changeset in webkit [182977] by ap@apple.com
  • 2 edits in trunk/Source/WTF

Use ASan poisoning to taint moved-out-of Refs
https://bugs.webkit.org/show_bug.cgi?id=143894
rdar://problem/19443723

Reviewed by Darin Adler.

  • wtf/Ref.h: (WTF::Ref::~Ref):
3:29 PM Changeset in webkit [182976] by timothy@apple.com
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Have better inactive window color for pixel borders
https://bugs.webkit.org/show_bug.cgi?id=143888

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/FindBanner.css:

(body.window-inactive .find-banner):

  • UserInterface/Views/Main.css:

(body.window-inactive.docked.bottom):
(body.window-inactive.docked.right):
(body.window-inactive #split-content-browser):

  • UserInterface/Views/NavigationBar.css:

(body.window-inactive .navigation-bar):

  • UserInterface/Views/QuickConsole.css:

(body.window-inactive .quick-console):
(.quick-console.showing-log):

  • UserInterface/Views/Sidebar.css:

(body.window-inactive .sidebar.left):
(body.window-inactive .sidebar.right):

3:28 PM Changeset in webkit [182975] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebKit2

WebKit client should be able to add view controller for link preview.
https://bugs.webkit.org/show_bug.cgi?id=143686

Add delegate methods to WKUIDelegatePrivate so that a WebKit client can prepare a view controller
for link preview and react to the dismissal of this view controller. Also connect WKContentView to
preview gesture recognizer and forwards the delegate callbacks to corresponding delegate methods
in WKUIDelegatePrivate.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2015-04-17
Reviewed by Beth Dakin.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView willMoveToWindow:]):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView cleanupInteraction]):
(-[WKContentView gestureRecognizer:canPreventGestureRecognizer:]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView gestureRecognizerShouldBegin:]):
(-[WKContentView previewViewControllerForPosition:inSourceView:]):
(-[WKContentView commitPreviewViewController:]):
(-[WKContentView willPresentPreviewViewController:forPosition:inSourceView:]):
(-[WKContentView didDismissPreviewViewController:committing:]):

3:25 PM Changeset in webkit [182974] by Bem Jones-Bey
  • 3 edits
    2 adds in trunk

Large values for line-height cause integer overflow in RenderStyle::computedLineHeight
https://bugs.webkit.org/show_bug.cgi?id=143863

Reviewed by Rob Buis.

Source/WebCore:

When we compute huge values for line-height through percentage or CSS
calc, we'll overflow the integer and later on
ShapeOutsideInfo::computeDeltasForContainingBlockLine will ASSERT
because it expects non-negative line height. So for the computed
line-height, clamp to an integer range to avoid overflow. Note that
the code path for percentages here is safe because LayoutUnit clamps
to an int on conversion.

This is based on a Blink patch by Rob Buis.

Test: fast/shapes/shape-outside-floats/shape-outside-negative-line-height-crash.html

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::computedLineHeight): Clamp line-height to an

int to avoid overflow.

LayoutTests:

Simplified test from a fuzzer.

  • fast/shapes/shape-outside-floats/shape-outside-negative-line-height-crash-expected.txt: Added.
  • fast/shapes/shape-outside-floats/shape-outside-negative-line-height-crash.html: Added.
3:22 PM Changeset in webkit [182973] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Unexpected background at top of console when rubber-banding with selection
https://bugs.webkit.org/show_bug.cgi?id=140710

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-17
Reviewed by Timothy Hatcher.

  • UserInterface/Views/LogContentView.css:

(.console-messages):
Remove the focus ring on the console's log view, only visible when rubber-banding.

2:59 PM Changeset in webkit [182972] by Lucas Forschler
  • 2 edits in branches/safari-600.6-branch/LayoutTests

Merged r182299. rdar://problem/20540450

2:58 PM Changeset in webkit [182971] by ap@apple.com
  • 7 edits
    1 delete in trunk/Source

Remove unused BoundsCheckedPointer
https://bugs.webkit.org/show_bug.cgi?id=143896

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  • bytecode/SpeculatedType.cpp: The header was included here.

Source/WTF:

  • WTF.vcxproj/WTF.vcxproj:
  • WTF.vcxproj/WTF.vcxproj.filters:
  • WTF.xcodeproj/project.pbxproj:
  • wtf/BoundsCheckedPointer.h: Removed.
  • wtf/CMakeLists.txt:
2:55 PM Changeset in webkit [182970] by Lucas Forschler
  • 2 edits in branches/safari-600.6-branch/Source/WebKit2

Merged r182285. rdar://problem/20540450

2:52 PM Changeset in webkit [182969] by Lucas Forschler
  • 5 edits in branches/safari-600.6-branch

Merged r182284. rdar://problem/20540450

2:46 PM Changeset in webkit [182968] by Lucas Forschler
  • 3 edits
    2 copies in branches/safari-600.6-branch

Merged r182051. rdar://problem/20540237

2:22 PM Changeset in webkit [182967] by Yusuke Suzuki
  • 5 edits in trunk

[ES6] Fix name enumeration of static functions for Symbol constructor
https://bugs.webkit.org/show_bug.cgi?id=143891

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Fix missing symbolPrototypeTable registration to the js class object.
This patch fixes name enumeration of static functions (Symbol.key, Symbol.keyFor) for Symbol constructor.

  • runtime/SymbolConstructor.cpp:

LayoutTests:

Add property names tests for Symbol constructor, Symbol object and Symbol.prototype.

  • js/Object-getOwnPropertyNames-expected.txt: Removed.
  • js/script-tests/Object-getOwnPropertyNames.js:
2:21 PM Changeset in webkit [182966] by Lucas Forschler
  • 4 edits in branches/safari-600.6-branch

Merged r181864. rdar://problem/20540342

2:18 PM Changeset in webkit [182965] by Lucas Forschler
  • 3 edits in branches/safari-600.6-branch

Merged r181409. rdar://problem/20540512

1:13 PM Changeset in webkit [182964] by dbates@webkit.org
  • 3 edits
    2 adds in trunk

Not able to build WebKit against iOS Simulator 8.3 SDK
https://bugs.webkit.org/show_bug.cgi?id=143883

Reviewed by David Kilzer.

Tools:

Copy libraries libWebKitSystemInterfaceIOS{Device, Simulator}8.3.a to the built product directory
so that Xcode uses them.

  • Scripts/copy-webkitlibraries-to-product-directory:

WebKitLibraries:

Add WebKitSystemInterface for iOS 8.3.

  • libWebKitSystemInterfaceIOSDevice8.3.a: Added.
  • libWebKitSystemInterfaceIOSSimulator8.3.a: Added.
12:55 PM Changeset in webkit [182963] by Beth Dakin
  • 39 edits
    6 adds in trunk

Force mouse events should go through normal mouse event handling code paths
https://bugs.webkit.org/show_bug.cgi?id=143749
-and corresponding-
rdar://problem/20472895

Reviewed by Dean Jackson.

Source/WebCore:

This patch moves all of the code to dispatch mouseforcedown, mouseforceup, and
mouseforcechanged into normal mouse event dispatching code. This patch leaves
behind the cancel and click events because we plan to remove those, and it also
leaves mouseforcewillbegin because that is necessarily a very different event more
tied to the NSImmediateActionGestureRecognizer than these other events which are
tied to NSResponder’s pressureChangeWithEvent.

New helper functions.

  • dom/Document.cpp:

(WebCore::Document::hasListenerTypeForEventType):

  • dom/Document.h:
  • dom/Element.cpp:

(WebCore::isForceEvent):

Move the code to ensure the force events have listeners in order to fire to
dispatchMouseEvent, and delete the old implementations.
(WebCore::Element::dispatchMouseEvent):
(WebCore::Element::dispatchMouseForceChanged): Deleted.
(WebCore::Element::dispatchMouseForceDown): Deleted.
(WebCore::Element::dispatchMouseForceUp): Deleted.

  • dom/Element.h:

Perform a hit test and pipe the events through dispatchMouseEvent().

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMouseForceEvent):

  • page/EventHandler.h:

New types for the new events.

  • platform/PlatformEvent.h:

Forward to EventHandler.

  • replay/UserInputBridge.cpp:

(WebCore::UserInputBridge::handleMouseForceEvent):

  • replay/UserInputBridge.h:

Source/WebKit2:

This patch makes pressureChangeWithEvent create NativeWebMouseEvents with the
NSEventTypePressures that is gets and sends those down to the web process.

Re-name pressureEvent to lastPressureEvent. Now that event can sometimes be an
NSEventTypePressure, the new name makes it clear how the second parameter differs
from the first.

  • Shared/NativeWebMouseEvent.h:

New event types for the new types of events.

  • Shared/WebEvent.h:
  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):

  • Shared/mac/NativeWebMouseEventMac.mm:

(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):

  • Shared/mac/WebEventFactory.h:

All of the square-peg, round-hole problems of massaging the NSEventTypePressures
events into WebMouseEvents is taken care of here.

  • Shared/mac/WebEventFactory.mm:

(WebKit::mouseButtonForEvent):
(WebKit::globalPointForEvent):
(WebKit::pointForEvent):
(WebKit::WebEventFactory::createWebMouseEvent):

Instead of calling the old inputDeviceForceDidChange, create a NativeWebMouseEvent
and handle it.

  • UIProcess/API/mac/WKView.mm:

(-[WKView pressureChangeWithEvent:]):

Handle the new types.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didReceiveEvent):

Can delete inputDeviceForceDidChange since it’s no longer used.
(WebKit::WebPageProxy::inputDeviceForceDidChange): Deleted.

  • UIProcess/WebPageProxy.h:

Handle the new types of mouse events properly.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::handleMouseEvent):

Delete inputDeviceForceDidChange() and m_lastForceStage.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::inputDeviceForceDidChange): Deleted.

Handle new WebEvent types.

  • WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:

Tools:

Add mouseForceDown/mouseForceUp/mouseForceChanged support to WebKitTestRunner.
Since there is not a way to create an NSEventTypePressure from scratch, we
subclass NSEvent and override all of the critical methods.

  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::EventSendingController::mouseForceDown):
(WTR::EventSendingController::mouseForceUp):
(WTR::EventSendingController::mouseForceChanged):

  • WebKitTestRunner/InjectedBundle/EventSendingController.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(-[EventSenderPressureEvent initAtLocation:globalLocation:stage:pressure:phase:time:eventNumber:]):
(-[EventSenderPressureEvent timestamp]):
(-[EventSenderPressureEvent type]):
(-[EventSenderPressureEvent locationInWindow]):
(-[EventSenderPressureEvent location]):
(-[EventSenderPressureEvent stage]):
(-[EventSenderPressureEvent pressure]):
(-[EventSenderPressureEvent phase]):
(-[EventSenderPressureEvent eventNumber]):
(WTR::EventSenderProxy::mouseForceDown):
(WTR::EventSenderProxy::mouseForceUp):
(WTR::EventSenderProxy::mouseForceChanged):

LayoutTests:

Just a few new tests. More to come.

  • fast/events/mouse-force-changed-expected.txt: Added.
  • fast/events/mouse-force-changed.html: Added.
  • fast/events/mouse-force-down-expected.txt: Added.
  • fast/events/mouse-force-down.html: Added.
  • fast/events/mouse-force-up-expected.txt: Added.
  • fast/events/mouse-force-up.html: Added.

Right now the new tests will only work on Mac 10.10.3 and beyond.

  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/mac-mavericks/TestExpectations:
  • platform/win/TestExpectations:
12:53 PM Changeset in webkit [182962] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

RenderTableCell::computeCollapsed*Border() should check if the cell is still attached to the render tree.
https://bugs.webkit.org/show_bug.cgi?id=143887
rdar://problem/20568989

Reviewed by Simon Fraser.

Detached table cell has no access to its parent table. This is a speculative fix to
avoid dereferencing the invalid table pointer.

  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::computeCollapsedStartBorder):
(WebCore::RenderTableCell::computeCollapsedEndBorder):
(WebCore::RenderTableCell::computeCollapsedBeforeBorder):
(WebCore::RenderTableCell::computeCollapsedAfterBorder):

12:08 PM Changeset in webkit [182961] by Lucas Forschler
  • 12 edits
    6 copies in branches/safari-600.6-branch

Merged r180110. rdar://problem/20540540

12:08 PM Changeset in webkit [182960] by ap@apple.com
  • 2 edits in trunk/Tools

build.webkit.org/dashboard still shows obsolete results for out of order builds sometimes
https://bugs.webkit.org/show_bug.cgi?id=143885

Reviewed by Tim Horton.

Fixed a case where we have two builds with the same revision(s). An in order build
is one for which the revision is strictly higher.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js:

(BuildbotQueue.prototype._checkForInOrderResult):
(BuildbotQueue.prototype.compareIterationsByRevisions):

11:50 AM Changeset in webkit [182959] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Inline JSFunction allocation in DFG
https://bugs.webkit.org/show_bug.cgi?id=143858

Patch by Basile Clement <basile_clement@apple.com> on 2015-04-17
Reviewed by Filip Pizlo.

Followup to my previous patch which inlines JSFunction allocation when
using FTL, now also enabled in DFG.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewFunction):

11:35 AM Changeset in webkit [182958] by roger_fong@apple.com
  • 2 edits in trunk/Source/WebCore

Update fullscreen button visibility on fullscreen change.
https://bugs.webkit.org/show_bug.cgi?id=143861.
<rdar://problem/20143218>

Reviewed by Eric Carlson.

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller): There is no need for hasVisualMedia to be a class variable.
(Controller.prototype.handleReadyStateChange):
(Controller.prototype.handleFullscreenChange):
(Controller.prototype.updateFullscreenButtons):

11:21 AM Changeset in webkit [182957] by dbates@webkit.org
  • 13 edits
    2 adds in trunk

REGRESSION: SVG does not support link dragging
https://bugs.webkit.org/show_bug.cgi?id=141597

Reviewed by Darin Adler.

Source/WebCore:

Fixes an issue where a SVG hyperlink cannot be dragged. We should support
dragging an SVG A element just as we support dragging an HTML A element.

Test: fast/events/drag-and-drop-link.html

  • page/DragController.cpp: Removed explicit include of header Element.h as it will

be ultimately included by HTMLAnchorElement.h, among other headers.
(WebCore::isDraggableLink): Added. Extracted code from HitTestResult::isLiveLink().
(WebCore::DragController::draggableElement): Call WebCore::isDraggableLink() to
determine whether a element is a hyperlink that can be dragged.

  • page/DragController.h:
  • page/EventHandler.cpp:

(WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent): Write code in terms of

WebCore::isDraggableLink().

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::isLiveLink): Deleted.

  • rendering/HitTestResult.h:

Source/WebKit/mac:

Write -[WebElementDictionary _isLiveLink] in terms of WebCore::isDraggableLink().

  • Misc/WebElementDictionary.mm:

(-[WebElementDictionary _isLiveLink]):

LayoutTests:

Add a test to ensure we do not regress dragging of a HTML hyperlink or a SVG hyperlink.

  • fast/events/drag-and-drop-link-expected.txt: Added.
  • fast/events/drag-and-drop-link.html: Added.
  • platform/efl/TestExpectations: Mark the test as "failure" since EFL does not support drag-and-drop.
  • platform/gtk/TestExpectations: Mark the test as "failure" until we implement drag-and-drop support for

GTK+ as part of fixing <https://bugs.webkit.org/show_bug.cgi?id=42194>.

  • platform/ios-simulator/TestExpectations: Skip the test since iOS does not implement

drag-and-drop support.

  • platform/mac-wk2/TestExpectations: Skip the test until we implement drag-and-drop support in EventSender

for Mac as part of fixing <https://bugs.webkit.org/show_bug.cgi?id=42194>.

10:33 AM Changeset in webkit [182956] by commit-queue@webkit.org
  • 38 edits
    6 deletes in trunk

Unreviewed, rolling out r182912 and r182920.
https://bugs.webkit.org/show_bug.cgi?id=143881

Build breakage in some configurations (Requested by ap on
#webkit).

Reverted changesets:

"Force mouse events should go through normal mouse event
handling code paths"
https://bugs.webkit.org/show_bug.cgi?id=143749
http://trac.webkit.org/changeset/182912

http://trac.webkit.org/changeset/182920

10:30 AM Changeset in webkit [182955] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebCore

Fix review comments for https://bugs.webkit.org/show_bug.cgi?id=143590
following http://trac.webkit.org/changeset/182876.

Reviewed by Daniel Bates.

  • ChangeLog:

Fixed typo.

  • style/StyleFontSizeFunctions.cpp:

(WebCore::Style::computedFontSizeFromSpecifiedSize):
Fixed a typo in an enum definition and changed the name of an argument.

10:07 AM Changeset in webkit [182954] by Antti Koivisto
  • 4 edits in trunk/Source/WebKit2

Network Cache: Read resource record and body in parallel
https://bugs.webkit.org/show_bug.cgi?id=143879

Reviewed by Chris Dumez.

We currently first fetch the record file and then fetch the body blob if needed.
We can do both operations in parallel to reduce latency.

  • NetworkProcess/cache/NetworkCacheFileSystemPosix.h:

(WebKit::NetworkCache::traverseCacheFiles):

Do all validation in the client.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::synchronize):

Maintain a bloom filter that contains the body blobs to avoid unnecessary IO attempts.
Delete any unknown file in cache directory.

(WebKit::NetworkCache::Storage::addToRecordFilter):

More informative name for record filter.

(WebKit::NetworkCache::Storage::mayContain):
(WebKit::NetworkCache::Storage::readRecord):
(WebKit::NetworkCache::Storage::storeBodyAsBlob):
(WebKit::NetworkCache::Storage::dispatchReadOperation):

Start record read IO and body blob read IO in parallel.

(WebKit::NetworkCache::Storage::finishReadOperation):

The read is finished when we have both the record and the blob.

(WebKit::NetworkCache::Storage::dispatchWriteOperation):
(WebKit::NetworkCache::Storage::retrieve):
(WebKit::NetworkCache::Storage::store):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::clear):
(WebKit::NetworkCache::Storage::shrink):
(WebKit::NetworkCache::Storage::addToContentsFilter): Deleted.
(WebKit::NetworkCache::Storage::decodeRecord): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.h:

(WebKit::NetworkCache::Storage::ReadOperation::ReadOperation):

ReadOperation is now mutable and gathers the read result.

9:49 AM Changeset in webkit [182953] by bshafiei@apple.com
  • 5 edits in tags/Safari-601.1.27.2/Source

Versioning.

9:45 AM Changeset in webkit [182952] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Stop installing WebKit2.framework
https://bugs.webkit.org/show_bug.cgi?id=143860
rdar://problem/18298491

Reviewed by Dan Bernstein.

  • Configurations/WebKit2.xcconfig:

Set SKIP_INSTALL=YES for all SDKs except 10.9 where we still need it.

9:44 AM Changeset in webkit [182951] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.27.2

New tag.

8:32 AM Changeset in webkit [182950] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Gardening 17th April.
https://bugs.webkit.org/show_bug.cgi?id=143870

Unreviewed.

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-04-17

  • platform/gtk/TestExpectations:
5:53 AM Changeset in webkit [182949] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL] Unreviewed EFL gardening on 17 April.

Mark 5 form tests and 3 navigation tests to failure.

  • platform/efl/TestExpectations:
5:00 AM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)
4:58 AM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)
4:14 AM Changeset in webkit [182948] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

[GTK] One more unreviewed fix after r182882.

  • TestWebKitAPI/PlatformGTK.cmake: Added back the WebKit2's forwarding header generator dependency.
3:43 AM Changeset in webkit [182947] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] Silent WebAudio buffers support
https://bugs.webkit.org/show_bug.cgi?id=143869

Reviewed by Carlos Garcia Campos.

  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:

(webKitWebAudioSrcLoop): Set gap flag on silent buffers. The audio
sink can then drop them and avoid un-necessary buffer processing.

3:22 AM Changeset in webkit [182946] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit2

Unreviewed. Fix the build with ENABLE(NETWORK_CACHE) and !ENABLE(SHAREABLE_RESOURCE).

  • NetworkProcess/cache/NetworkCacheEntry.cpp:
  • NetworkProcess/cache/NetworkCacheFileSystemPosix.h:

(WebKit::NetworkCache::fileTimes): There's no st_birthtime in Linux.

3:19 AM Changeset in webkit [182945] by Csaba Osztrogonác
  • 3 edits in trunk/Tools

[GTK] Unreviewed speculative clean build fix after r182882.

TestWebKitAPI's forwarding header generator depended on WeKit2's
which generated SOUP related forwarding headers too.

This dependency isn't necessary and was removed by r182882 to make
forwarding header generators parallelizable. But in this case
TestWebKitAPI's and WebKitTestRunner's forwarding header generator
should generate SOUP related forwarding headers too similar to EFL.

  • TestWebKitAPI/PlatformGTK.cmake:
  • WebKitTestRunner/PlatformGTK.cmake:
3:16 AM Changeset in webkit [182944] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[SOUP] ResourceRequest cache policy is not encoded/decoded in IPC messages
https://bugs.webkit.org/show_bug.cgi?id=143867

Reviewed by Sergio Villar Senin.

Encode/Decode the ResourceRequest cache policy.

  • Shared/soup/WebCoreArgumentCodersSoup.cpp:

(IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
(IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):

3:13 AM Changeset in webkit [182943] by Carlos Garcia Campos
  • 4 edits in trunk

[SOUP] Redirect to non HTTP destination is broken
https://bugs.webkit.org/show_bug.cgi?id=143866

Reviewed by Sergio Villar Senin.

Source/WebCore:

This is because we are passing true unconditionally as
isHTTPFamilyRequest parameter of
createSoupRequestAndMessageForHandle in continueAfterWillSendRequest.
We don't actually need to pass isHTTPFamilyRequest parameter to
createSoupRequestAndMessageForHandle, since it can simply check
that from the given request.

Covered by unit tets and also cache/disk-cache/disk-cache-redirect-to-data.html.

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::continueAfterWillSendRequest):
(WebCore::createSoupRequestAndMessageForHandle):
(WebCore::ResourceHandle::start):

Tools:

Add a unit test to check that redirect to a data URI works.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp:

(testRedirectToDataURI):
(serverCallback):
(beforeAll):

3:03 AM Changeset in webkit [182942] by calvaris@igalia.com
  • 7 edits in trunk/LayoutTests

streams/reference-implementation/readable-stream.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143778

Unreviewed.

Comment out flaky subtests while working on a more complete
solution.

The problem with these tests is that they set a timeout before the
calling done() and this causes some tests to behave
undeterministically, specilly code related to promise
resolution. This could even cause indetermination if the tests
were expected to run correctly.

We think it is better to comment them out and find a more long
term solution that could involve submitting change requests to the
reference tests in the spec. This will be tackled in bug 143774.

  • streams/reference-implementation/readable-stream-expected.txt:
  • streams/reference-implementation/readable-stream-reader-expected.txt:
  • streams/reference-implementation/readable-stream-reader.html:
  • streams/reference-implementation/readable-stream-templated-expected.txt:
  • streams/reference-implementation/readable-stream-templated.html:
  • streams/reference-implementation/readable-stream.html:

Apr 16, 2015:

11:50 PM Changeset in webkit [182941] by youenn.fablet@crf.canon.fr
  • 2 edits in trunk/LayoutTests

streams/readablestream-reader.html test should really test collected stream case.
https://bugs.webkit.org/show_bug.cgi?id=143818

Reviewed by Darin Adler.

Making the test async so that the stream start async callback is made and the stream be collected.

  • streams/readable-stream-reader.html:
11:06 PM Changeset in webkit [182940] by ap@apple.com
  • 3 edits in trunk/LayoutTests

http/tests/misc/DOMContentLoaded-event.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143382

Reviewed by Chris Dumez.

  • http/tests/misc/DOMContentLoaded-event-expected.txt:
  • http/tests/misc/DOMContentLoaded-event.html:

Don't race with a timer, just check if some time passes between DOMContentLoaded and load events.

7:10 PM Changeset in webkit [182939] by jonowells@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Breakpoint icons should not get pushed off of debugger sidebar due to long resource names
https://bugs.webkit.org/show_bug.cgi?id=142714

Reviewed by Timothy Hatcher.

Modify the styles for content and group containers inside the debugger sidebar panel's detail sections
such that the rules "display: table" and "display: table-row-group" no longer apply. This will make
the file names which use the rule "text-overflow: ellipsis" truncate as expected.

  • UserInterface/Views/DebuggerSidebarPanel.css:

(.sidebar > .panel.navigation.debugger .details-section > .content):
(.sidebar > .panel.navigation.debugger .details-section.collapsed > .content):
(.sidebar > .panel.navigation.debugger .details-section > .content > .group):
(.sidebar > .panel.navigation.debugger .details-section.scripts):
(.sidebar > .panel.navigation.debugger .details-section.scripts .header):
(.sidebar > .panel.navigation.debugger .details-section.scripts.collapsed > .content):

6:36 PM Changeset in webkit [182938] by commit-queue@webkit.org
  • 10 edits in trunk

Number.parseInt is not === global parseInt in nightly r182673
https://bugs.webkit.org/show_bug.cgi?id=143799

Patch by Jordan Harband <ljharb@gmail.com> on 2015-04-16
Reviewed by Darin Adler.

Source/JavaScriptCore:

Ensuring parseInt === Number.parseInt, per spec
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.parseint

  • runtime/CommonIdentifiers.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::parseIntFunction):

  • runtime/NumberConstructor.cpp:

(JSC::NumberConstructor::finishCreation):

LayoutTests:

  • js/number-constructor-expected.txt:
  • js/parseInt-expected.txt:
  • js/script-tests/number-constructor.js:
  • js/script-tests/parseInt.js:
6:28 PM Changeset in webkit [182937] by jacob_nielsen@apple.com
  • 3 edits in trunk/Tools

Changes method of quitting iOS Simulator to be more correct.
https://bugs.webkit.org/show_bug.cgi?id=143847
<rdar://problem/20530344>

Reviewed by Darin Adler.

Fixes by addressing the app by ID rather than by name.

  • Scripts/webkitdirs.pm:

(quitIOSSimulator):

  • Scripts/webkitpy/port/ios.py:

(IOSSimulatorPort.check_sys_deps):

6:25 PM Changeset in webkit [182936] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

Use UNUSED_PARAM instead of the void casting to suppress unused parameter warnings.
https://bugs.webkit.org/show_bug.cgi?id=143750

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-04-16
Reviewed by Darin Adler.

No new tests, no behavior change.

  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp:

(WebKit::NotificationPermissionRequestManager::NotificationPermissionRequestManager):

6:12 PM Changeset in webkit [182935] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Use less memory when compiling content extensions
https://bugs.webkit.org/show_bug.cgi?id=143857

Reviewed by Benjamin Poulain.

When compiling a content extension, we convert the rule list into several intermediate forms:

1) A String.
2) A JSValue from JSONParse in loadEncodedRules.
3) A Vector of ContentExtensionRules.
4) A CombinedURLFilters object representing the pieces of the regular expressions from the triggers.
5) A Vector of NFAs.
6) A DFA for each NFA.
7) A Vector of DFABytecode.

Each one of these contains all the information contained in the content extension,
so we do not need to keep them all in memory at the same time like we are doing now.
When we are done with one, we can free that memory to greatly reduce the maximum memory usage while compiling.
The next step will be to reduce the copies of the original JSON String and to generate NFAs one at a time.

  • contentextensions/CombinedURLFilters.cpp:

(WebCore::ContentExtensions::CombinedURLFilters::clear):

  • contentextensions/CombinedURLFilters.h:
  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):
Clear structures when finished using them.

6:03 PM Changeset in webkit [182934] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Gardening: fix CLOOP build after r182927.

Not reviewed.

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::print):

6:00 PM Changeset in webkit [182933] by Joseph Pecoraro
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Should include "Log Value" context menu item in Preview and Collapsed ObjectTree
https://bugs.webkit.org/show_bug.cgi?id=143845

Reviewed by Timothy Hatcher.

Give previews the same "Log Value" context menu so that if you just log
a bunch of objects to the console you can quickly turn that entire object
into a $n reference in the console to interact with.

  • UserInterface/Views/ObjectPreviewView.js:

(WebInspector.ObjectPreviewView.prototype.setOriginatingObjectInfo):
(WebInspector.ObjectPreviewView.prototype._contextMenuHandler):
Provide API to refer to a RemoteObject and optional PropertyPath
that can be used to give the preview a "Log Value" context menu.

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
Include the RemoteObject without a path for a preview context menu.

  • UserInterface/Views/ObjectTreeView.js:

(WebInspector.ObjectTreeView):
Include the RemoteObject with a path if we knew it for a preview context menu.

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement):
The context menu can never be empty, since we always added at least one item above.

5:53 PM Changeset in webkit [182932] by beidson@apple.com
  • 8 edits in trunk/Source

Compiling a content extension fails when user's home directory is on a different volume from /var/tmp.
https://bugs.webkit.org/show_bug.cgi?id=143834

Reviewed by Anders Carlsson.

Source/WebCore:

  • Add moveFile() for a WK2 call site to use.
  • Remove renameFile() as it is now dead code.
  • platform/FileSystem.h:
  • platform/gtk/FileSystemGtk.cpp:

(WebCore::renameFile): Deleted.

  • platform/mac/FileSystemMac.mm:

(WebCore::moveFile):

  • platform/posix/FileSystemPOSIX.cpp:

(WebCore::renameFile): Deleted.

  • platform/win/FileSystemWin.cpp:

(WebCore::renameFile): Deleted.

Source/WebKit2:

  • UIProcess/API/APIUserContentExtensionStore.cpp:

(API::compiledToFile): Use moveFile() instead of renameFile()

5:49 PM Changeset in webkit [182931] by timothy_horton@apple.com
  • 4 edits in trunk/LayoutTests

Rebaseline mouse-cursor-image-set results after r182869

  • fast/events/mouse-cursor-image-set-expected.txt:
  • platform/win/fast/events/mouse-cursor-image-set-expected.txt:
  • platform/mac/TestExpectations:

Un-skip and land new results.

5:46 PM Changeset in webkit [182930] by andersca@apple.com
  • 11 edits in trunk

Deprecate _WKWebsiteDataStore in favor of WKWebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=143844

Reviewed by Dan Bernstein.

Source/WebKit2:

  • Shared/API/Cocoa/WKFoundation.h:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _validate]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataRecord.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStore.h:
  • mac/postprocess-framework-headers.sh:

Tools:

  • MiniBrowser/mac/AppDelegate.m:

(-[BrowserAppDelegate newPrivateWindow:]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController initWithConfiguration:]):
(-[WK2BrowserWindowController fetchWebsiteData:]):
(-[WK2BrowserWindowController fetchAndClearWebsiteData:]):
(-[WK2BrowserWindowController clearWebsiteData:]):

5:44 PM Changeset in webkit [182929] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

Inline JSFunction allocation in FTL
https://bugs.webkit.org/show_bug.cgi?id=143851

Patch by Basile Clement <basile_clement@apple.com> on 2015-04-16
Reviewed by Filip Pizlo.

JSFunction allocation is a simple operation that should be inlined when possible.

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileNewFunction):

  • runtime/JSFunction.h:

(JSC::JSFunction::allocationSize):

5:28 PM Changeset in webkit [182928] by weinig@apple.com
  • 5 edits in trunk/Source/WebKit/mac

Expose JavaScriptMarkupEnabled preference for WebKit1
<rdar://problem/19939450>
https://bugs.webkit.org/show_bug.cgi?id=143855

Reviewed by Dan Bernstein.

  • WebView/WebPreferenceKeysPrivate.h:

Add new key, WebKitJavaScriptMarkupEnabledPreferenceKey

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
Initialize WebKitJavaScriptMarkupEnabledPreferenceKey to YES.

(-[WebPreferences isJavaScriptMarkupEnabled]):
(-[WebPreferences setJavaScriptMarkupEnabled:]):
Implement getter/setter.

  • WebView/WebPreferencesPrivate.h:

Add new property, javaScriptMarkupEnabled.

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):
Map the new preference to WebCore's scriptMarkupEnabled setting.

5:25 PM Changeset in webkit [182927] by mark.lam@apple.com
  • 13 edits
    4 adds in trunk/Source/JavaScriptCore

Add $vm debugging tool.
https://bugs.webkit.org/show_bug.cgi?id=143809

Reviewed by Geoffrey Garen.

For debugging VM bugs, it would be useful to be able to dump VM data structures
from JS code that we instrument. To this end, let's introduce a
JS_enableDollarVM option that, if true, installs an $vm property into each JS
global object at creation time. The $vm property refers to an object that
provides a collection of useful utility functions. For this initial
implementation, $vm will have the following:

crash() - trigger an intentional crash.

dfgTrue() - returns true if the current function is DFG compiled, else returns false.
jitTrue() - returns true if the current function is compiled by the baseline JIT, else returns false.
llintTrue() - returns true if the current function is interpreted by the LLINT, else returns false.

gc() - runs a full GC.
edenGC() - runs an eden GC.

codeBlockForFrame(frameNumber) - gets the codeBlock at the specified frame (0 = current, 1 = caller, etc).
printSourceFor(codeBlock) - prints the source code for the codeBlock.
printByteCodeFor(codeBlock) - prints the bytecode for the codeBlock.

print(str) - prints a string to dataLog output.
printCallFrame() - prints the current CallFrame.
printStack() - prints the JS stack.
printInternal(value) - prints the JSC internal info for the specified value.

With JS_enableDollarVM=true, JS code can use the above functions like so:

$vm.print("Using $vm features\n");

(JSC::CodeBlock::printCallOp):

  • FTL compiled functions don't like it when we try to compute the CallLinkStatus. Hence, we skip this step if we're dumping an FTL codeBlock.
  • heap/Heap.cpp:

(JSC::Heap::collectAndSweep):
(JSC::Heap::collectAllGarbage): Deleted.

  • heap/Heap.h:

(JSC::Heap::collectAllGarbage):

  • Add ability to do an Eden collection and sweep.
  • interpreter/StackVisitor.cpp:

(JSC::printIndents):
(JSC::log):
(JSC::logF):
(JSC::StackVisitor::Frame::print):
(JSC::jitTypeName): Deleted.
(JSC::printif): Deleted.

  • Modernize the implementation of StackVisitor::Frame::print(), and remove some now redundant code.
  • Also fix it so that it downgrades gracefully when encountering inlined DFG and compiled FTL functions.

(DebugPrintFrameFunctor::DebugPrintFrameFunctor): Deleted.
(DebugPrintFrameFunctor::operator()): Deleted.
(debugPrintCallFrame): Deleted.
(debugPrintStack): Deleted.

  • these have been moved into JSDollarVMPrototype.cpp.
  • interpreter/StackVisitor.h:
  • StackVisitor::Frame::print() is now enabled for release builds as well so that we can call it from $vm.
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:
  • Added the $vm instance to global objects conditional on the JSC_enableDollarVM option.
  • runtime/Options.h:
  • Added the JSC_enableDollarVM option.
  • tools/JSDollarVM.cpp: Added.
  • tools/JSDollarVM.h: Added.

(JSC::JSDollarVM::createStructure):
(JSC::JSDollarVM::create):
(JSC::JSDollarVM::JSDollarVM):

  • tools/JSDollarVMPrototype.cpp: Added.
  • This file contains 2 sets of functions:
  1. a C++ implementation of debugging utility functions that are callable when doing debugging from lldb. To the extent possible, these functions try to be cautious and not cause unintended crashes should the user call them with the wrong info. Hence, they are designed to be robust rather than speedy.
  1. the native implementations of JS functions in the $vm object. Where there is overlapping functionality, these are built on top of the C++ functions above to do the work.

Note: it does not make sense for all of the $vm functions to have a C++
counterpart for lldb debugging. For example, the $vm.dfgTrue() function is
only useful for JS code, and works via the DFG intrinsics mechanism.
When doing debugging via lldb, the optimization level of the currently
executing JS function can be gotten by dumping the current CallFrame instead.

(JSC::currentThreadOwnsJSLock):
(JSC::ensureCurrentThreadOwnsJSLock):
(JSC::JSDollarVMPrototype::addFunction):
(JSC::functionCrash): - $vm.crash()
(JSC::functionDFGTrue): - $vm.dfgTrue()
(JSC::CallerFrameJITTypeFunctor::CallerFrameJITTypeFunctor):
(JSC::CallerFrameJITTypeFunctor::operator()):
(JSC::CallerFrameJITTypeFunctor::jitType):
(JSC::functionLLintTrue): - $vm.llintTrue()
(JSC::functionJITTrue): - $vm.jitTrue()
(JSC::gc):
(JSC::functionGC): - $vm.gc()
(JSC::edenGC):
(JSC::functionEdenGC): - $vm.edenGC()
(JSC::isValidCodeBlock):
(JSC::codeBlockForFrame):
(JSC::functionCodeBlockForFrame): - $vm.codeBlockForFrame(frameNumber)
(JSC::codeBlockFromArg):
(JSC::functionPrintSourceFor): - $vm.printSourceFor(codeBlock)
(JSC::functionPrintByteCodeFor): - $vm.printBytecodeFor(codeBlock)
(JSC::functionPrint): - $vm.print(str)
(JSC::PrintFrameFunctor::PrintFrameFunctor):
(JSC::PrintFrameFunctor::operator()):
(JSC::printCallFrame):
(JSC::printStack):
(JSC::functionPrintCallFrame): - $vm.printCallFrame()
(JSC::functionPrintStack): - $vm.printStack()
(JSC::printValue):
(JSC::functionPrintValue): - $vm.printValue()
(JSC::JSDollarVMPrototype::finishCreation):

  • tools/JSDollarVMPrototype.h: Added.

(JSC::JSDollarVMPrototype::create):
(JSC::JSDollarVMPrototype::createStructure):
(JSC::JSDollarVMPrototype::JSDollarVMPrototype):

5:09 PM Changeset in webkit [182926] by achristensen@apple.com
  • 2 edits in trunk/Tools

32-bit build fix.

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformResetPreferencesToConsistentValues):
(WTR::TestController::platformConfigureViewForTest):
Added WK_API_ENABLED.

4:52 PM Changeset in webkit [182925] by Beth Dakin
  • 2 edits in trunk/LayoutTests

I will be investigating this in the short term, but skip these failing test for
now.

  • platform/mac-wk2/TestExpectations:
4:45 PM Changeset in webkit [182924] by roger_fong@apple.com
  • 2 edits in trunk/Source/WebCore

Media element time displays shouldn't wrap.
https://bugs.webkit.org/show_bug.cgi?id=143854.
<rdar://problem/20284766>

Reviewed by Brent Fulgham.

  • Modules/mediacontrols/mediaControlsApple.css:

(::-webkit-media-controls): Don't wrap any text.
(audio::-webkit-media-controls-time-remaining-display): Also increase remaining time display width by 1.
(audio::-webkit-media-controls-time-remaining-display.five-digit-time): Ditto.
(audio::-webkit-media-controls-time-remaining-display.six-digit-time): Ditto.

4:41 PM Changeset in webkit [182923] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Add assertions to make sure ActiveDOMObject::suspend() / resume() / stop() overrides don't fire events
https://bugs.webkit.org/show_bug.cgi?id=143850

Reviewed by Alexey Proskuryakov.

Add assertions to make sure ActiveDOMObject::suspend() / resume() / stop()
overrides don't fire events as this is not allowed. This would cause
arbitrary JS execution which would be very dangerous in these stages.

Firing JS events from these functions is a common source of crashes.

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::suspend):
(WebCore::WebSocket::resume):

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::suspendActiveDOMObjects):
(WebCore::ScriptExecutionContext::resumeActiveDOMObjects):
(WebCore::ScriptExecutionContext::stopActiveDOMObjects):

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::suspend):
(WebCore::XMLHttpRequest::resume):
(WebCore::XMLHttpRequest::stop):

4:41 PM Changeset in webkit [182922] by achristensen@apple.com
  • 10 edits
    2 deletes in trunk

Removed unused WKUserContentFilterRef.
https://bugs.webkit.org/show_bug.cgi?id=143852

Reviewed by Sam Weinig.

Source/WebKit2:

  • Shared/WebCompiledContentExtension.cpp:

(WebKit::LegacyContentExtensionCompilationClient::LegacyContentExtensionCompilationClient): Deleted.
(WebKit::LegacyContentExtensionCompilationClient::writeBytecode): Deleted.
(WebKit::LegacyContentExtensionCompilationClient::writeActions): Deleted.
(WebKit::WebCompiledContentExtension::createFromCompiledContentExtensionData): Deleted.

  • Shared/WebCompiledContentExtension.h:
  • UIProcess/API/C/WKUserContentFilterRef.cpp: Removed.
  • UIProcess/API/C/WKUserContentFilterRef.h: Removed.
  • UIProcess/API/C/WebKit2_C.h:
  • UIProcess/API/Cocoa/_WKUserContentFilter.h:
  • UIProcess/API/Cocoa/_WKUserContentFilter.mm:

(-[_WKUserContentFilter initWithName:serializedRules:]): Deleted.

  • WebKit2.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/_WKUserContentExtensionStore.mm:
  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformResetPreferencesToConsistentValues):
(WTR::TestController::platformConfigureViewForTest):

4:28 PM Changeset in webkit [182921] by benjamin@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Speculative fix after r182915
https://bugs.webkit.org/show_bug.cgi?id=143404

Patch by Geoffrey Garen <ggaren@apple.com> on 2015-04-16
Reviewed by Alexey Proskuryakov.

  • runtime/SymbolConstructor.h:
4:22 PM Changeset in webkit [182920] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Rubber-stamped by Tim Horton.

Fixing a small mistake in http://trac.webkit.org/changeset/182912 which should
make sure to use the most up-to-date pressure information when setting the force
on a WebMouseEvent.

  • Shared/mac/WebEventFactory.mm:

(WebKit::WebEventFactory::createWebMouseEvent):

4:21 PM Changeset in webkit [182919] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fixed some typos in a comment.

Not reviewed.

  • dfg/DFGGenerationInfo.h:
4:04 PM Changeset in webkit [182918] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

Media element can manipulate DOM during Document destruction.
rdar://problem/20553898 and https://bugs.webkit.org/show_bug.cgi?id=143780

Patch by Brady Eidson <beidson@apple.com> on 2015-04-16
Reviewed by Jer Noble.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::configureMediaControls): Bail if the element has no active document.

3:58 PM Changeset in webkit [182917] by jacob_nielsen@apple.com
  • 2 edits in trunk/Tools

Unreviewed. Adding myself as a commiter in contributers.json.

  • Scripts/webkitpy/common/config/contributors.json:
3:54 PM Changeset in webkit [182916] by ap@apple.com
  • 3 edits in trunk/Tools

It is very hard to attach a debugger to WebProcess to debug tests
https://bugs.webkit.org/show_bug.cgi?id=143837

Reviewed by Chris Dumez.

--no-timeout used to only affect waitUntilDone timeout, but not IPC timeout in
WebKitTestRunner, and not pipe reading timeout in run-webkit-tests.

Now it disables all timeouts in tools, as is best for debugging tests.

  • Scripts/webkitpy/port/driver.py: (Driver.run_test): Respect --no-timeout, so

that the script doesn't terminate DRT/WKTR when there is no output for a long time.

  • WebKitTestRunner/Options.cpp: Removed --no-timeout-at-all, as --no-timeout

now has the same functionality.

3:46 PM Changeset in webkit [182915] by Yusuke Suzuki
  • 17 edits
    1 copy
    5 adds in trunk

[ES6] Implement Symbol.for and Symbol.keyFor
https://bugs.webkit.org/show_bug.cgi?id=143404

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This patch implements Symbol.for and Symbol.keyFor.
SymbolRegistry maintains registered StringImpl* symbols.
And to make this mapping enabled over realms,
VM owns this mapping (not JSGlobalObject).

While there's Default AtomicStringTable per thread,
SymbolRegistry should not exist over VMs.
So everytime VM is created, SymbolRegistry is also created.

In SymbolRegistry implementation, we don't leverage WeakGCMap (or weak reference design).
Theres are several reasons.

  1. StringImpl* which represents identity of Symbols is not GC-managed object. So we cannot use WeakGCMap directly. While Symbol* is GC-managed object, holding weak reference to Symbol* doesn't maintain JS symbols (exposed primitive values to users) liveness, because distinct Symbol* can exist. Distinct Symbol* means the Symbol* object that pointer value (Symbol*) is different from weakly referenced Symbol* but held StringImpl* is the same.
  1. We don't use WTF::WeakPtr. If we add WeakPtrFactory into StringImpl's member, we can track StringImpl*'s liveness by WeakPtr. However there's problem about when we prune staled entries in SymbolRegistry. Since the memory allocated for the Symbol is typically occupied by allocated symbolized StringImpl*'s content, and it is not in GC-heap. While heavily registering Symbols and storing StringImpl* into SymbolRegistry, Heap's EdenSpace is not so occupied. So GC typically attempt to perform EdenCollection, and it doesn't call WeakGCMap's pruleStaleEntries callback. As a result, before pruning staled entries in SymbolRegistry, fast malloc-ed memory fills up the system memory.

So instead of using Weak reference, we take relatively easy design.
When we register symbolized StringImpl* into SymbolRegistry, symbolized StringImpl* is aware of that.
And when destructing it, it removes its reference from SymbolRegistry as if atomic StringImpl do so with AtomicStringTable.

  • CMakeLists.txt:
  • DerivedSources.make:
  • runtime/SymbolConstructor.cpp:

(JSC::SymbolConstructor::getOwnPropertySlot):
(JSC::symbolConstructorFor):
(JSC::symbolConstructorKeyFor):

  • runtime/SymbolConstructor.h:
  • runtime/VM.cpp:
  • runtime/VM.h:

(JSC::VM::symbolRegistry):

  • tests/stress/symbol-registry.js: Added.

(test):

Source/WTF:

When we register symbolized StringImpl* into SymbolRegistry, symbolized StringImpl* is aware of that.
And when destructing it, it removes its reference from SymbolRegistry as if atomic StringImpl do so with AtomicStringTable.
While AtomicStringTable (in WebCore case) exists in thread local storage,
SymbolRegistry exists per VM and StringImpl* has a reference to the registered SymbolRegistry.

Since StringImpl has isSymbol etc. members, it's class is aware of Symbol use cases.
So introduce SymbolRegistry in WTF layers as if AtomicStringTable.

  • WTF.vcxproj/WTF.vcxproj:
  • WTF.vcxproj/WTF.vcxproj.filters:
  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/text/AtomicString.cpp:

(WTF::AtomicString::addSlowCase):
(WTF::AtomicString::findSlowCase):
(WTF::AtomicString::findInternal):
(WTF::AtomicString::find): Deleted.

  • wtf/text/AtomicString.h:

(WTF::AtomicString::find):

  • wtf/text/StringImpl.cpp:

(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::createSymbol):
(WTF::StringImpl::createSymbolEmpty):

  • wtf/text/StringImpl.h:

(WTF::StringImpl::StringImpl):
(WTF::StringImpl::extractFoldedStringInSymbol):
(WTF::StringImpl::symbolRegistry):
(WTF::StringImpl::createSymbolEmpty): Deleted.

  • wtf/text/SymbolRegistry.cpp: Copied from Source/JavaScriptCore/runtime/SymbolConstructor.h.

(WTF::SymbolRegistry::~SymbolRegistry):
(WTF::SymbolRegistry::symbolForKey):
(WTF::SymbolRegistry::keyForSymbol):
(WTF::SymbolRegistry::remove):

  • wtf/text/SymbolRegistry.h: Added.

(WTF::SymbolRegistryKey::hash):
(WTF::SymbolRegistryKey::impl):
(WTF::SymbolRegistryKey::isHashTableDeletedValue):
(WTF::SymbolRegistryKey::hashTableDeletedValue):
(WTF::DefaultHash<SymbolRegistryKey>::Hash::hash):
(WTF::DefaultHash<SymbolRegistryKey>::Hash::equal):
(WTF::HashTraits<SymbolRegistryKey>::isEmptyValue):
(WTF::SymbolRegistryKey::SymbolRegistryKey):

LayoutTests:

Add tests to check Symbol's identity over different realms.

  • js/dom/cross-frame-symbols-expected.txt: Added.
  • js/dom/cross-frame-symbols.html: Added.
  • js/dom/script-tests/cross-frame-symbols.js: Added.
3:42 PM Changeset in webkit [182914] by jer.noble@apple.com
  • 15 edits in trunk/Source

[iOS] When simultaneously exiting-and-entering fullscreen, WebVideoFullscreenManager/Proxy becomes confused about what video element it represents.
https://bugs.webkit.org/show_bug.cgi?id=143680

Reviewed by Simon Fraser.

Source/WebCore:

Add getters for the video's fullscreen layer, and be more tolerant about the order in which setVideoElement() and
setWebVideoFullscreenInterface are called.

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::videoFullscreenLayer): Added simple getter.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.h:
  • platform/ios/WebVideoFullscreenModelVideoElement.h:

(WebCore::WebVideoFullscreenModelVideoElement::videoElement): Added simple getter.
(WebCore::WebVideoFullscreenModelVideoElement::setWebVideoFullscreenInterface): Deleted. Moved to .mm file.

  • platform/ios/WebVideoFullscreenModelVideoElement.mm:

(WebVideoFullscreenModelVideoElement::WebVideoFullscreenModelVideoElement): Initialize ivars in the .h file.
(WebVideoFullscreenModelVideoElement::setWebVideoFullscreenInterface): Call those methods skipped in setVideoElement()

if m_videoFullscreenInterface had not yet been set.

(WebVideoFullscreenModelVideoElement::setVideoElement): Null-check m_videoFullscreenInterface.

Source/WebKit2:

The original assumption of WebVideoFullscreenManager and -Proxy was that the two classes would represent a
single video element and its full screen state. With multiple animations in and out of fullscreen combined with
multiple fullscreen modes, this assumption no longer holds true.

Rather than having a WebVideoFullscreenManager which /isa/ WebVideoFullscreenModelVideoElement, the manager now
/hasa/ WebVideoFullscreenModelVideoElement (or has many such models). Ditto for WebVideoFullscreenManager and
WebVideoFullscreenInterfaceAVKit. The WebVideoFullscreenInterfaceAVKit still needs a WebVideoFullscreenModel to
communicate with, so a new wrapper class is used for that purpose, WebVideoFullscreenModelContext. Ditto for
WebVideoFullscreenModelVideoElement and the new class WebVideoFullscreenInterfaceContext. These context classes
are paired and share a contextId, allowing the manager and its proxy to route messages between the UIProcess's
WebVideoFullscreenInterfaceAVKit to-and-from the WebProcess's WebVideoFullscreenModelVideoElement.

Both the WebVideoFullscreenModelContext and the WebVideoFullscreenInterfaceContext take a back-pointer to their
manager or manager proxy, and each method on the context simply calls the matching method on the manager and
passes its contextId as a parameter.

Both the WebVideoFullscreenManager and the WebVideoFullscreenManagerProxy pass that contextId in each of their
cross-process messages.

On the other side, the manager and proxy also have a map between contextIds and their matching
WebVideoFullscreenModelVideoElement (in the case of WebVideoFullscreenManager) or
WebVideoFullscreenInterfaceAVKit (in the case of WebVideoFullscreenManagerProxy).

While this change is large by LoC, it is almost entirely boilerplate. The new and interesting pieces are these:

  • UIProcess/ios/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenManagerProxy::WebVideoFullscreenManagerProxy): No longer a WebVideoFullscreenInterfaceAVKit.
(WebKit::WebVideoFullscreenManagerProxy::invalidate): Walk through the models and interfaces, invalidating each.
(WebKit::WebVideoFullscreenManagerProxy::createModelAndInterface): Added. Return a new model and interface tuple.
(WebKit::WebVideoFullscreenManagerProxy::ensureModelAndInterface): Added. Lazily create, and add to the m_contextMap

a new model and interface object.

(WebKit::WebVideoFullscreenManagerProxy::ensureModel): Return the model half of ensureModelAndInterface().
(WebKit::WebVideoFullscreenManagerProxy::ensureInterface): Return the interface half of ensureModelAndInterface().
(WebKit::WebVideoFullscreenManagerProxy::enterFullscreen): Walk through the outstanding interface objects, and if

any have a fullscreen mode which matches the about-to-be-fullscreen interface, request that that other interface
exit fullscreen.

  • WebProcess/ios/WebVideoFullscreenManager.mm:

(WebKit::nextContextId): Static, incrementing counter used as a contextId source.
(WebKit::WebVideoFullscreenManager::WebVideoFullscreenManager): No longer a WebVideoFullscreenModelVideoElement.
(WebKit::WebVideoFullscreenManager::~WebVideoFullscreenManager): Walk through the models and interfaces, invalidating each.
(WebKit::WebVideoFullscreenManager::ensureModelAndInterface): Added. Return a new model and interface tuple.
(WebKit::WebVideoFullscreenManager::ensureModelAndInterface): Added. Lazily create, and add to the m_contextMap

a new model and interface object.

(WebKit::WebVideoFullscreenManager::ensureModel): Return the model half of ensureModelAndInterface().
(WebKit::WebVideoFullscreenManager::ensureInterface): Return the interface half of ensureModelAndInterface().

New classes and methods which just forward on to their owning objects:

  • UIProcess/ios/WebVideoFullscreenManagerProxy.h:

(WebKit::WebVideoFullscreenModelContext::create):
(WebKit::WebVideoFullscreenModelContext::~WebVideoFullscreenModelContext):
(WebKit::WebVideoFullscreenModelContext::invalidate):
(WebKit::WebVideoFullscreenModelContext::layerHost):
(WebKit::WebVideoFullscreenModelContext::setLayerHost):
(WebKit::WebVideoFullscreenModelContext::setInitialVideoLayerFrame):
(WebKit::WebVideoFullscreenModelContext::WebVideoFullscreenModelContext):

  • UIProcess/ios/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenModelContext::play):
(WebKit::WebVideoFullscreenModelContext::pause):
(WebKit::WebVideoFullscreenModelContext::togglePlayState):
(WebKit::WebVideoFullscreenModelContext::beginScrubbing):
(WebKit::WebVideoFullscreenModelContext::endScrubbing):
(WebKit::WebVideoFullscreenModelContext::seekToTime):
(WebKit::WebVideoFullscreenModelContext::fastSeek):
(WebKit::WebVideoFullscreenModelContext::beginScanningForward):
(WebKit::WebVideoFullscreenModelContext::beginScanningBackward):
(WebKit::WebVideoFullscreenModelContext::endScanning):
(WebKit::WebVideoFullscreenModelContext::requestExitFullscreen):
(WebKit::WebVideoFullscreenModelContext::setVideoLayerFrame):
(WebKit::WebVideoFullscreenModelContext::videoLayerFrame):
(WebKit::WebVideoFullscreenModelContext::setVideoLayerGravity):
(WebKit::WebVideoFullscreenModelContext::videoLayerGravity):
(WebKit::WebVideoFullscreenModelContext::selectAudioMediaOption):
(WebKit::WebVideoFullscreenModelContext::selectLegibleMediaOption):
(WebKit::WebVideoFullscreenModelContext::fullscreenModeChanged):
(WebKit::WebVideoFullscreenModelContext::didSetupFullscreen):
(WebKit::WebVideoFullscreenModelContext::didEnterFullscreen):
(WebKit::WebVideoFullscreenModelContext::didExitFullscreen):
(WebKit::WebVideoFullscreenModelContext::didCleanupFullscreen):
(WebKit::WebVideoFullscreenModelContext::fullscreenMayReturnToInline):

  • WebProcess/ios/WebVideoFullscreenManager.h:

(WebKit::WebVideoFullscreenInterfaceContext::create):
(WebKit::WebVideoFullscreenInterfaceContext::invalidate):
(WebKit::WebVideoFullscreenInterfaceContext::layerHostingContext):
(WebKit::WebVideoFullscreenInterfaceContext::isAnimating):
(WebKit::WebVideoFullscreenInterfaceContext::setIsAnimating):
(WebKit::WebVideoFullscreenInterfaceContext::targetIsFullscreen):
(WebKit::WebVideoFullscreenInterfaceContext::setTargetIsFullscreen):
(WebKit::WebVideoFullscreenInterfaceContext::fullscreenMode):
(WebKit::WebVideoFullscreenInterfaceContext::setFullscreenMode):
(WebKit::WebVideoFullscreenInterfaceContext::isFullscreen):
(WebKit::WebVideoFullscreenInterfaceContext::setIsFullscreen):

  • WebProcess/ios/WebVideoFullscreenManager.mm:

(WebKit::WebVideoFullscreenInterfaceContext::WebVideoFullscreenInterfaceContext):
(WebKit::WebVideoFullscreenInterfaceContext::~WebVideoFullscreenInterfaceContext):
(WebKit::WebVideoFullscreenInterfaceContext::setLayerHostingContext):
(WebKit::WebVideoFullscreenInterfaceContext::resetMediaState):
(WebKit::WebVideoFullscreenInterfaceContext::setDuration):
(WebKit::WebVideoFullscreenInterfaceContext::setCurrentTime):
(WebKit::WebVideoFullscreenInterfaceContext::setBufferedTime):
(WebKit::WebVideoFullscreenInterfaceContext::setRate):
(WebKit::WebVideoFullscreenInterfaceContext::setVideoDimensions):
(WebKit::WebVideoFullscreenInterfaceContext::setSeekableRanges):
(WebKit::WebVideoFullscreenInterfaceContext::setCanPlayFastReverse):
(WebKit::WebVideoFullscreenInterfaceContext::setAudioMediaSelectionOptions):
(WebKit::WebVideoFullscreenInterfaceContext::setLegibleMediaSelectionOptions):
(WebKit::WebVideoFullscreenInterfaceContext::setExternalPlayback):

Cross-process methods which now take a contextId parameter:

  • UIProcess/ios/WebVideoFullscreenManagerProxy.messages.in:
  • UIProcess/ios/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenManagerProxy::setupFullscreenWithID):
(WebKit::WebVideoFullscreenManagerProxy::resetMediaState):
(WebKit::WebVideoFullscreenManagerProxy::setCurrentTime):
(WebKit::WebVideoFullscreenManagerProxy::setBufferedTime):
(WebKit::WebVideoFullscreenManagerProxy::setVideoDimensions):
(WebKit::WebVideoFullscreenManagerProxy::setSeekableRangesVector):
(WebKit::WebVideoFullscreenManagerProxy::setCanPlayFastReverse):
(WebKit::WebVideoFullscreenManagerProxy::setAudioMediaSelectionOptions):
(WebKit::WebVideoFullscreenManagerProxy::setLegibleMediaSelectionOptions):
(WebKit::WebVideoFullscreenManagerProxy::setExternalPlaybackProperties):
(WebKit::WebVideoFullscreenManagerProxy::setDuration):
(WebKit::WebVideoFullscreenManagerProxy::setRate):
(WebKit::WebVideoFullscreenManagerProxy::exitFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::cleanupFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::preparedToReturnToInline):
(WebKit::WebVideoFullscreenManagerProxy::play):
(WebKit::WebVideoFullscreenManagerProxy::pause):
(WebKit::WebVideoFullscreenManagerProxy::togglePlayState):
(WebKit::WebVideoFullscreenManagerProxy::beginScrubbing):
(WebKit::WebVideoFullscreenManagerProxy::endScrubbing):
(WebKit::WebVideoFullscreenManagerProxy::seekToTime):
(WebKit::WebVideoFullscreenManagerProxy::fastSeek):
(WebKit::WebVideoFullscreenManagerProxy::beginScanningForward):
(WebKit::WebVideoFullscreenManagerProxy::beginScanningBackward):
(WebKit::WebVideoFullscreenManagerProxy::endScanning):
(WebKit::WebVideoFullscreenManagerProxy::requestExitFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::didSetupFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::didExitFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::didEnterFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::didCleanupFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerFrame):
(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerGravity):
(WebKit::WebVideoFullscreenManagerProxy::selectAudioMediaOption):
(WebKit::WebVideoFullscreenManagerProxy::selectLegibleMediaOption):
(WebKit::WebVideoFullscreenManagerProxy::fullscreenModeChanged):
(WebKit::WebVideoFullscreenManagerProxy::fullscreenMayReturnToInline):
(WebKit::WebVideoFullscreenManagerProxy::videoLayerFrame): Deleted.
(WebKit::WebVideoFullscreenManagerProxy::videoLayerGravity): Deleted.

  • WebProcess/ios/WebVideoFullscreenManager.messages.in:
  • WebProcess/ios/WebVideoFullscreenManager.mm:

(WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement):
(WebKit::WebVideoFullscreenManager::exitVideoFullscreenForVideoElement):
(WebKit::WebVideoFullscreenManager::resetMediaState):
(WebKit::WebVideoFullscreenManager::setDuration):
(WebKit::WebVideoFullscreenManager::setCurrentTime):
(WebKit::WebVideoFullscreenManager::setBufferedTime):
(WebKit::WebVideoFullscreenManager::setRate):
(WebKit::WebVideoFullscreenManager::setVideoDimensions):
(WebKit::WebVideoFullscreenManager::setSeekableRanges):
(WebKit::WebVideoFullscreenManager::setCanPlayFastReverse):
(WebKit::WebVideoFullscreenManager::setAudioMediaSelectionOptions):
(WebKit::WebVideoFullscreenManager::setLegibleMediaSelectionOptions):
(WebKit::WebVideoFullscreenManager::setExternalPlayback):
(WebKit::WebVideoFullscreenManager::play):
(WebKit::WebVideoFullscreenManager::pause):
(WebKit::WebVideoFullscreenManager::togglePlayState):
(WebKit::WebVideoFullscreenManager::beginScrubbing):
(WebKit::WebVideoFullscreenManager::endScrubbing):
(WebKit::WebVideoFullscreenManager::seekToTime):
(WebKit::WebVideoFullscreenManager::fastSeek):
(WebKit::WebVideoFullscreenManager::beginScanningForward):
(WebKit::WebVideoFullscreenManager::beginScanningBackward):
(WebKit::WebVideoFullscreenManager::endScanning):
(WebKit::WebVideoFullscreenManager::requestExitFullscreen):
(WebKit::WebVideoFullscreenManager::selectAudioMediaOption):
(WebKit::WebVideoFullscreenManager::selectLegibleMediaOption):
(WebKit::WebVideoFullscreenManager::fullscreenModeChanged):
(WebKit::WebVideoFullscreenManager::didSetupFullscreen):
(WebKit::WebVideoFullscreenManager::didEnterFullscreen):
(WebKit::WebVideoFullscreenManager::didExitFullscreen):
(WebKit::WebVideoFullscreenManager::didCleanupFullscreen):
(WebKit::WebVideoFullscreenManager::setVideoLayerGravityEnum):
(WebKit::WebVideoFullscreenManager::fullscreenMayReturnToInline):
(WebKit::WebVideoFullscreenManager::setVideoLayerFrameFenced):
(WebKit::WebVideoFullscreenManager::exitVideoFullscreen): Deleted.

3:29 PM Changeset in webkit [182913] by Beth Dakin
  • 2 edits in trunk/LayoutTests

Forgot to edit this TestExpectation file for
http://trac.webkit.org/changeset/182912

  • platform/mac-wk1/TestExpectations:
3:18 PM Changeset in webkit [182912] by Beth Dakin
  • 38 edits
    6 adds in trunk

Force mouse events should go through normal mouse event handling code paths
https://bugs.webkit.org/show_bug.cgi?id=143749
-and corresponding-
rdar://problem/20472895

Reviewed by Dean Jackson.

Source/WebCore:

This patch moves all of the code to dispatch mouseforcedown, mouseforceup, and
mouseforcechanged into normal mouse event dispatching code. This patch leaves
behind the cancel and click events because we plan to remove those, and it also
leaves mouseforcewillbegin because that is necessarily a very different event more
tied to the NSImmediateActionGestureRecognizer than these other events which are
tied to NSResponder’s pressureChangeWithEvent.

New helper functions.

  • dom/Document.cpp:

(WebCore::Document::hasListenerTypeForEventType):

  • dom/Document.h:
  • dom/Element.cpp:

(WebCore::isForceEvent):

Move the code to ensure the force events have listeners in order to fire to
dispatchMouseEvent, and delete the old implementations.
(WebCore::Element::dispatchMouseEvent):
(WebCore::Element::dispatchMouseForceChanged): Deleted.
(WebCore::Element::dispatchMouseForceDown): Deleted.
(WebCore::Element::dispatchMouseForceUp): Deleted.

  • dom/Element.h:

Perform a hit test and pipe the events through dispatchMouseEvent().

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMouseForceEvent):

  • page/EventHandler.h:

New types for the new events.

  • platform/PlatformEvent.h:

Forward to EventHandler.

  • replay/UserInputBridge.cpp:

(WebCore::UserInputBridge::handleMouseForceEvent):

  • replay/UserInputBridge.h:

Source/WebKit2:

This patch makes pressureChangeWithEvent create NativeWebMouseEvents with the
NSEventTypePressures that is gets and sends those down to the web process.

Re-name pressureEvent to lastPressureEvent. Now that event can sometimes be an
NSEventTypePressure, the new name makes it clear how the second parameter differs
from the first.

  • Shared/NativeWebMouseEvent.h:

New event types for the new types of events.

  • Shared/WebEvent.h:
  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):

  • Shared/mac/NativeWebMouseEventMac.mm:

(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):

  • Shared/mac/WebEventFactory.h:

All of the square-peg, round-hole problems of massaging the NSEventTypePressures
events into WebMouseEvents is taken care of here.

  • Shared/mac/WebEventFactory.mm:

(WebKit::mouseButtonForEvent):
(WebKit::globalPointForEvent):
(WebKit::pointForEvent):
(WebKit::WebEventFactory::createWebMouseEvent):

Instead of calling the old inputDeviceForceDidChange, create a NativeWebMouseEvent
and handle it.

  • UIProcess/API/mac/WKView.mm:

(-[WKView pressureChangeWithEvent:]):

Handle the new types.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didReceiveEvent):

Can delete inputDeviceForceDidChange since it’s no longer used.
(WebKit::WebPageProxy::inputDeviceForceDidChange): Deleted.

  • UIProcess/WebPageProxy.h:

Handle the new types of mouse events properly.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::handleMouseEvent):

Delete inputDeviceForceDidChange() and m_lastForceStage.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::inputDeviceForceDidChange): Deleted.

Handle new WebEvent types.

  • WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:

Tools:

Add mouseForceDown/mouseForceUp/mouseForceChanged support to WebKitTestRunner.
Since there is not a way to create an NSEventTypePressure from scratch, we
subclass NSEvent and override all of the critical methods.

  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::EventSendingController::mouseForceDown):
(WTR::EventSendingController::mouseForceUp):
(WTR::EventSendingController::mouseForceChanged):

  • WebKitTestRunner/InjectedBundle/EventSendingController.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(-[EventSenderPressureEvent initAtLocation:globalLocation:stage:pressure:phase:time:eventNumber:]):
(-[EventSenderPressureEvent timestamp]):
(-[EventSenderPressureEvent type]):
(-[EventSenderPressureEvent locationInWindow]):
(-[EventSenderPressureEvent location]):
(-[EventSenderPressureEvent stage]):
(-[EventSenderPressureEvent pressure]):
(-[EventSenderPressureEvent phase]):
(-[EventSenderPressureEvent eventNumber]):
(WTR::EventSenderProxy::mouseForceDown):
(WTR::EventSenderProxy::mouseForceUp):
(WTR::EventSenderProxy::mouseForceChanged):

LayoutTests:

Just a few new tests. More to come.

  • fast/events/mouse-force-changed-expected.txt: Added.
  • fast/events/mouse-force-changed.html: Added.
  • fast/events/mouse-force-down-expected.txt: Added.
  • fast/events/mouse-force-down.html: Added.
  • fast/events/mouse-force-up-expected.txt: Added.
  • fast/events/mouse-force-up.html: Added.

Right now the new tests will only work on Mac 10.10.3 and beyond.

  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/mac-mavericks/TestExpectations:
  • platform/win/TestExpectations:
2:35 PM Changeset in webkit [182911] by Yusuke Suzuki
  • 18 edits
    2 adds
    6 deletes in trunk/Source/JavaScriptCore

[ES6] Use specific functions for @@iterator functions
https://bugs.webkit.org/show_bug.cgi?id=143838

Reviewed by Geoffrey Garen.

In ES6, some methods are defined with the different names.

For example,

Map.prototype[Symbol.iterator] === Map.prototype.entries
Set.prototype[Symbol.iterator] === Set.prototype.values
Array.prototype[Symbol.iterator] === Array.prototype.values
%Arguments%[Symbol.iterator] === Array.prototype.values

However, current implementation creates different function objects per name.
This patch fixes it by setting the object that is used for the other method to @@iterator.
e.g. Setting Array.prototype.values function object to Array.prototype[Symbol.iterator].

And we drop Arguments' iterator implementation and replace Argument[@@iterator] implementation
with Array.prototype.values to conform to the spec.

(Inspector::JSInjectedScriptHost::subtype):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::JSInjectedScriptHost::iteratorEntries):

  • runtime/ArgumentsIteratorConstructor.cpp: Removed.
  • runtime/ArgumentsIteratorConstructor.h: Removed.
  • runtime/ArgumentsIteratorPrototype.cpp: Removed.
  • runtime/ArgumentsIteratorPrototype.h: Removed.
  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

  • runtime/ArrayPrototype.h:
  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::getOwnPropertySlot):
(JSC::ClonedArguments::put):
(JSC::ClonedArguments::deleteProperty):
(JSC::ClonedArguments::defineOwnProperty):
(JSC::ClonedArguments::materializeSpecials):

  • runtime/ClonedArguments.h:
  • runtime/CommonIdentifiers.h:
  • runtime/DirectArguments.cpp:

(JSC::DirectArguments::overrideThings):

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::getOwnPropertySlot):
(JSC::GenericArguments<Type>::getOwnPropertyNames):
(JSC::GenericArguments<Type>::put):
(JSC::GenericArguments<Type>::deleteProperty):
(JSC::GenericArguments<Type>::defineOwnProperty):

  • runtime/JSArgumentsIterator.cpp: Removed.
  • runtime/JSArgumentsIterator.h: Removed.
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::arrayProtoValuesFunction):

  • runtime/MapPrototype.cpp:

(JSC::MapPrototype::finishCreation):

  • runtime/ScopedArguments.cpp:

(JSC::ScopedArguments::overrideThings):

  • runtime/SetPrototype.cpp:

(JSC::SetPrototype::finishCreation):

  • tests/stress/arguments-iterator.js: Added.

(test):
(testArguments):

  • tests/stress/iterator-functions.js: Added.

(test):
(argumentsTests):

2:24 PM Changeset in webkit [182910] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Sites with both width=device-width and height=device-height load zoomed out
https://bugs.webkit.org/show_bug.cgi?id=143795
<rdar://problem/20369671>

Reviewed by Ben Poulain.

  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::shouldIgnoreVerticalScalingConstraints):
Some sites specify both width=device-width and height=device-height, and
then lay out to device width but with a large amount of vertically scrollable content
(so, height=device-height was a lie).

In all other cases where we use device-width and device-height, we prefer
width=device-width over height=device-height, but in the code to ignore scaling constraints,
the two paths were completely separate. On sites that specify both, this
resulted in us attempting to zoom out to fit the entire height of the very tall page,
which isn't at all what we wanted. So, ignore height=device-height if a width is specified.

1:54 PM Changeset in webkit [182909] by Joseph Pecoraro
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: "Log Value" of a value inside of an array, does not log the innermost value
https://bugs.webkit.org/show_bug.cgi?id=143793

Reviewed by Brian Burg.

Context menu handlers were being handled in the capturing event phase, so
the outer most handler, instead of the inner most handler, was getting
first access. Change this so the events happen in the bubbling phase.

DOM Nodes may appear inside of Object Trees, for instance when shown
in a collection like an array or set. In an effort to standardize on
"inner most" behavior, change the DOMTreeOutline context handler
to also be in bubbling.

In the rare instances where a node object is in the console but
not displayed in an outline (console.dir(node)), then include a
Copy as HTML context menu like you would expect in a DOM tree.

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):

  • UserInterface/Views/GeneralTreeElement.js:

(WebInspector.GeneralTreeElement.prototype.onattach):
(WebInspector.GeneralTreeElement.prototype.ondetach):

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
(WebInspector.ObjectTreeBaseTreeElement):

1:40 PM Changeset in webkit [182908] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.27.1/Source/WebKit2

Merged r182904. rdar://problem/20575744

1:37 PM Changeset in webkit [182907] by bshafiei@apple.com
  • 5 edits in tags/Safari-601.1.27.1/Source

Versioning.

1:35 PM Changeset in webkit [182906] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.27.1

New tag.

1:32 PM Changeset in webkit [182905] by Joseph Pecoraro
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Allow toggling the edibility of a DOMTreeOutline
https://bugs.webkit.org/show_bug.cgi?id=143814

Reviewed by Brian Burg.

By default a DOMTreeOutline will not be editable, but it will
provide a setter to enable editability for DOMTreeContentViews.

  • UserInterface/Views/DOMTreeContentView.js:

(WebInspector.DOMTreeContentView):
Content Views always have editable DOM trees.

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement.prototype.get editable):
(WebInspector.DOMTreeElement.prototype.onattach):
(WebInspector.DOMTreeElement.prototype.ondelete):
(WebInspector.DOMTreeElement.prototype.onenter):
(WebInspector.DOMTreeElement.prototype.ondblclick):
(WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
(WebInspector.DOMTreeElement.prototype._populateTextContextMenu):
(WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
(WebInspector.DOMTreeElement.prototype._startEditing):
Do not provide editability options for shadow DOM or non-editable DOM tree.

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):
(WebInspector.DOMTreeOutline.prototype.get editable):
(WebInspector.DOMTreeOutline.prototype.set editable):
New state.

  • UserInterface/Views/FormattedValue.css:

(.formatted-node > .dom-tree-outline li):
Nodes inside object trees were showing text selection when you right
clicked them. Normal selection is not possible. So force no selection.

1:32 PM Changeset in webkit [182904] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

<rdar://problem/20575744> Also include a definition of NSd_{current deployment target} in WKFoundation.h.

Reviewed by Tim Horton.

  • WebKit2.xcodeproj/project.pbxproj:
12:59 PM Changeset in webkit [182903] by mark.lam@apple.com
  • 8 edits
    2 adds in trunk/Source/JavaScriptCore

Add JSC_functionOverrides=<overrides file> debugging tool.
https://bugs.webkit.org/show_bug.cgi?id=143717

Reviewed by Geoffrey Garen.

This tool allows us to do runtime replacement of function bodies with alternatives
for debugging purposes. For example, this is useful when we need to debug VM bugs
which manifest in scripts executing in webpages downloaded from remote servers
that we don't control. The tool allows us to augment those scripts with logging
or test code to help isolate the bugs.

This tool works by substituting the SourceCode at FunctionExecutable creation
time. It identifies which SourceCode to substitute by comparing the source
string against keys in a set of key value pairs.

The keys are function body strings defined by 'override' clauses in the overrides
file specified by in the JSC_functionOverrides option. The values are function
body strings defines by 'with' clauses in the overrides file.
See comment blob at top of FunctionOverrides.cpp on the formatting
of the overrides file.

At FunctionExecutable creation time, if the SourceCode string matches one of the
'override' keys from the overrides file, the tool will replace the SourceCode with
a new one based on the corresponding 'with' value string. The FunctionExecutable
will then be created with the new SourceCode instead.

Some design decisions:

  1. We opted to require that the 'with' clause appear on a separate line than the 'override' clause because this makes it easier to read and write when the 'override' clause's function body is single lined and long.
  1. The user can use any sequence of characters for the delimiter (except for '{', '}' and white space characters) because this ensures that there can always be some delimiter pattern that does not appear in the function body in the clause e.g. in the body of strings in the JS code.

'{' and '}' are disallowed because they are used to mark the boundaries of the
function body string. White space characters are disallowed because they can
be error prone (the user may not be able to tell between spaces and tabs).

  1. The start and end delimiter must be an identical sequence of characters.

I had considered allowing the use of complementary characters like <>, [], and
() for making delimiter pairs like:

[[ ... ?]]
<[([( ... )])]>

But in the end, decided against it because:

  1. These sequences of complementary characters can exists in JS code. In contrast, a repeating delimiter like %%%% is unlikely to appear in JS code.
  2. It can be error prone for the user to have to type the exact complement character for the end delimiter in reverse order. In contrast, a repeating delimiter like %%%% is much easier to type and less error prone. Even a sequence like @#$% is less error prone than a complementary sequence because it can be copy-pasted, and need not be typed in reverse order.
  3. It is easier to parse for the same delimiter string for both start and end.
  1. The tool does a lot of checks for syntax errors in the overrides file because we don't want any overrides to fail silently. If a syntax error is detected, the tool will print an error message and call exit(). This avoids the user wasting time doing debugging only to be surprised later that their specified overrides did not take effect because of some unnoticed typo.

(JSC::UnlinkedFunctionExecutable::link):

  • runtime/Executable.h:
  • runtime/Options.h:
  • tools/FunctionOverrides.cpp: Added.

(JSC::FunctionOverrides::overrides):
(JSC::FunctionOverrides::FunctionOverrides):
(JSC::initializeOverrideInfo):
(JSC::FunctionOverrides::initializeOverrideFor):
(JSC::hasDisallowedCharacters):
(JSC::parseClause):
(JSC::FunctionOverrides::parseOverridesInFile):

  • tools/FunctionOverrides.h: Added.
12:47 PM Changeset in webkit [182902] by Joseph Pecoraro
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Give DOM Nodes a Context Menu to Log Element to the console
https://bugs.webkit.org/show_bug.cgi?id=143813

Reviewed by Brian Burg.

Always give DOM Nodes a "Log Element" context menu to log it to the console.
This will give a $n reference, and is a convenient alternative to $0 or
the now removed $1-$9.

  • Localizations/en.lproj/localizedStrings.js:

New "Log Element" and "Selected Element" strings.

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):
(WebInspector.DOMTreeOutline.prototype._contextMenuEventFired):
(WebInspector.DOMTreeOutline.prototype._updateModifiedNodes):
(WebInspector.DOMTreeOutline.prototype._populateContextMenu.revealElement):
(WebInspector.DOMTreeOutline.prototype._populateContextMenu.logElement):
(WebInspector.DOMTreeOutline.prototype._populateContextMenu):
Always include the "Log Element" context menu/

  • UserInterface/Views/FormattedValue.js:

(WebInspector.FormattedValue.createElementForNode):
This uses all the defaults.

  • UserInterface/Views/DOMTreeContentView.js:

(WebInspector.DOMTreeContentView):
This enables all the extra behavior.

12:39 PM Changeset in webkit [182901] by Chris Dumez
  • 6 edits
    2 copies
    1 add in trunk

Regression(r182517): WebSocket::suspend() causes error event to be fired
https://bugs.webkit.org/show_bug.cgi?id=143806
<rdar://problem/20559812>

Reviewed by Alexey Proskuryakov.

Source/WebCore:

WebSocket::suspend() causes an error event to be fired after r182517.
This is not allowed as firing the event could trigger arbitrary JS
execution, which is no longer allowed at this point.

This patch delays the error event firing until after
WebSocket::resume() is called, similarly to what we already do for
the close event.

Also add assertions in WebSocket::suspend() / WebSocket::resume()
that will be hit if JS events are fired from within these functions.
The pre-existing closed-when-entering-page-cache.html test is hitting
one of these assertions without the fix above.

Tests:

  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html
  • http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler.html
  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::suspend):
(WebCore::WebSocket::resume):
(WebCore::WebSocket::resumeTimerFired):
(WebCore::WebSocket::stop):
(WebCore::WebSocket::didReceiveMessageError):
(WebCore::WebSocket::didClose):
(WebCore::WebSocket::dispatchOrQueueEvent):

  • Modules/websockets/WebSocket.h:

LayoutTests:

  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache-expected.txt:
  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html:

Extend WebSocket PageCache test to make sure that the error event is
fired after restoring the page from the PageCache and before the close
Event is fired.

  • http/tests/websocket/tests/hybi/resources/page-cache-websocket.html: Added.
  • http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler-expected.txt: Copied from LayoutTests/http/tests/websocket/tests/hybi/closed-when-entering-page-cache-expected.txt.
  • http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler.html: Copied from LayoutTests/http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html.

Add layout test to cover the case where WebSocket::stop() is called
while firing the pending events upon restoring the page from PageCache.

12:20 PM Changeset in webkit [182900] by roger_fong@apple.com
  • 3 edits in trunk/Source/WebCore

Adjustments to button graphics for media controls.
https://bugs.webkit.org/show_bug.cgi?id=143797.
<rdar://problem/20083708>

Reviewed by Dean Jackson.

These changes are visual in nature and mainly affect the buttons.
I've gotten rid of the text-shadow for all the buttons,
used plus-lighter blending mode and changed the button opacity to reflect the specs,
and made all the buttons turn opaque white when active.

  • Modules/mediacontrols/mediaControlsApple.css:

(audio::-webkit-media-controls-panel button):
(audio::-webkit-media-controls-rewind-button):
(audio::-webkit-media-controls-play-button):
(audio::-webkit-media-controls-play-button.paused):
(video::-webkit-media-controls-volume-max-button):
(video::-webkit-media-controls-volume-slider):
(video::-webkit-media-controls-volume-min-button):
(audio::-webkit-media-controls-wireless-playback-picker-button):
(audio::-webkit-media-controls-toggle-closed-captions-button):
(audio::-webkit-media-controls-closed-captions-container li.selected:hover::before):
(audio::-webkit-media-controls-fullscreen-button):
(audio::-webkit-media-controls-fullscreen-button.exit):
(audio::-webkit-media-controls-status-display):
(audio::-webkit-media-controls-timeline):
(audio::-webkit-media-controls-time-remaining-display):
(video:-webkit-full-screen::-webkit-media-controls-volume-max-button):
(video:-webkit-full-screen::-webkit-media-controls-volume-min-button):
(video:-webkit-full-screen::-webkit-media-controls-play-button):
(video:-webkit-full-screen::-webkit-media-controls-play-button.paused):
(video:-webkit-full-screen::-webkit-media-controls-seek-back-button):
(video:-webkit-full-screen::-webkit-media-controls-seek-forward-button):
(video::-webkit-media-controls-volume-max-button:active):
(video::-webkit-media-controls-volume-min-button:active):
(audio::-webkit-media-controls-toggle-closed-captions-button:active):
(audio::-webkit-media-controls-rewind-button:active):
(audio::-webkit-media-controls-play-button:active):
(video:-webkit-full-screen::-webkit-media-controls-volume-max-button:active):
(video:-webkit-full-screen::-webkit-media-controls-volume-min-button:active):
(video:-webkit-full-screen::-webkit-media-controls-play-button:active):
(video:-webkit-full-screen::-webkit-media-controls-seek-back-button:active):
(video:-webkit-full-screen::-webkit-media-controls-seek-forward-button:active):
(audio::-webkit-media-controls-fullscreen-button:active):

Using the pseudo id itself here currently does not work, which is why we rely on the button.* selector for these.
(video:-webkit-full-screen::-webkit-media-controls-panel button.paused:active):
(audio::-webkit-media-controls-panel button.paused:active):
(audio::-webkit-media-controls-panel button.exit:active):

Draw volume slider knob as opaque white when active.
Adjust colors of timeline and volume sliders now that we are using plus-lighter blending.

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller):
(Controller.prototype.createControls):
(Controller.prototype.handleVolumeSliderMouseDown):
(Controller.prototype.handleVolumeSliderMouseUp):
(Controller.prototype.drawTimelineBackground):
(Controller.prototype.drawVolumeBackground):

12:15 PM Changeset in webkit [182899] by commit-queue@webkit.org
  • 24 edits
    2 adds in trunk

Extract the allocation profile from JSFunction into a rare object
https://bugs.webkit.org/show_bug.cgi?id=143807
.:

Patch by Basile Clement <basile_clement@apple.com> on 2015-04-16
Reviewed by Filip Pizlo.

  • WebKit.xcworkspace/contents.xcworkspacedata:

Source/JavaScriptCore:

Patch by Basile Clement <basile_clement@apple.com> on 2015-04-16
Reviewed by Filip Pizlo.

The allocation profile is only needed for those functions that are used
to create objects with [new].
Extracting it into its own JSCell removes the need for JSFunction and
JSCallee to be JSDestructibleObjects, which should improve performances in most
cases at the cost of an extra pointer dereference when the allocation profile
is actually needed.

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGOperations.cpp:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_create_this):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_create_this):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/FunctionRareData.cpp: Added.

(JSC::FunctionRareData::create):
(JSC::FunctionRareData::destroy):
(JSC::FunctionRareData::createStructure):
(JSC::FunctionRareData::visitChildren):
(JSC::FunctionRareData::FunctionRareData):
(JSC::FunctionRareData::~FunctionRareData):
(JSC::FunctionRareData::finishCreation):

  • runtime/FunctionRareData.h: Added.

(JSC::FunctionRareData::offsetOfAllocationProfile):
(JSC::FunctionRareData::allocationProfile):
(JSC::FunctionRareData::allocationStructure):
(JSC::FunctionRareData::allocationProfileWatchpointSet):

  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::destroy): Deleted.

  • runtime/JSBoundFunction.h:
  • runtime/JSCallee.cpp:

(JSC::JSCallee::destroy): Deleted.

  • runtime/JSCallee.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::JSFunction):
(JSC::JSFunction::createRareData):
(JSC::JSFunction::visitChildren):
(JSC::JSFunction::put):
(JSC::JSFunction::defineOwnProperty):
(JSC::JSFunction::destroy): Deleted.
(JSC::JSFunction::createAllocationProfile): Deleted.

  • runtime/JSFunction.h:

(JSC::JSFunction::offsetOfRareData):
(JSC::JSFunction::rareData):
(JSC::JSFunction::allocationStructure):
(JSC::JSFunction::allocationProfileWatchpointSet):
(JSC::JSFunction::offsetOfAllocationProfile): Deleted.
(JSC::JSFunction::allocationProfile): Deleted.

  • runtime/JSFunctionInlines.h:

(JSC::JSFunction::JSFunction):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
11:47 AM Changeset in webkit [182898] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Pull emoji-position adjustment code into its own function
https://bugs.webkit.org/show_bug.cgi?id=143592

Reviewed by Myles C. Maxfield.

First step to cleaning up FontCascade::drawGlyphs(). Pull iOS-only code related to
emoji positioning into its own function.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::pointAdjustedForEmoji):
(WebCore::FontCascade::drawGlyphs):

11:31 AM Changeset in webkit [182897] by timothy_horton@apple.com
  • 7 edits in trunk/Source/WebKit2

Provide a mechanism through the legacy SPI to know when swipe gestures begin and end
https://bugs.webkit.org/show_bug.cgi?id=143740
<rdar://problem/20468540>

Reviewed by Dan Bernstein.

In the C SPI, add three WKPageLoaderClient callbacks for the three
navigation gesture events (did begin, will end, did end).

  • UIProcess/API/C/WKPageLoaderClient.h:

Add the callbacks.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::navigationGestureDidBegin):
(API::LoaderClient::navigationGestureWillEnd):
(API::LoaderClient::navigationGestureDidEnd):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::navigationGestureDidBegin):
(WebKit::WebPageProxy::navigationGestureWillEnd):
(WebKit::WebPageProxy::navigationGestureDidEnd):
Dispatch navigation gesture events to the loader client as well as
(after a bounce through the PageClient) the navigation delegate.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):
Call the callbacks.

  • UIProcess/mac/ViewGestureController.h:
  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::trackSwipeGesture):
(WebKit::ViewGestureController::willEndSwipeGesture):
While we were already informing WebPageProxy of 'did begin' and 'did end'
navigation gesture events, we were missing 'will end'. Add it.

11:25 AM Changeset in webkit [182896] by timothy_horton@apple.com
  • 8 edits in trunk/Source/WebKit2

Dispatching multiple asynchronous animated resizes in parallel causes page scale to detach from reality
https://bugs.webkit.org/show_bug.cgi?id=143812
<rdar://problem/19866038>

Reviewed by Simon Fraser.

  • Shared/VisibleContentRectUpdateInfo.h:

(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
No cats in transaction (more of these below, too).

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::dynamicViewportSizeUpdate):
(WebKit::WebPageProxy::dynamicViewportUpdateChangedTarget):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleTap):
(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::dynamicViewportSizeUpdate):
Add an incrementing ID to dynamicViewportSizeUpdates. The UI process keeps
the current ID, and it is bounced through the Web process (dynamicViewportSizeUpdates)
back to the UI process (dynamicViewportUpdateChangedTarget). If we have
dispatched another dynamicViewportSizeUpdate in the interim, ignore
the intermediate target.

10:44 AM Changeset in webkit [182895] by Antti Koivisto
  • 5 edits in trunk/Source/WTF

Use CommonCrypto for SHA1 and MD5
https://bugs.webkit.org/show_bug.cgi?id=143826

Reviewed by Anders Carlsson.

CommonCrypto SHA1 implementation is ~4x faster than the naive WTF one. Use it when available.

These are covered by existing API tests.

  • wtf/MD5.cpp:

(WTF::MD5::MD5):
(WTF::MD5::addBytes):
(WTF::MD5::checksum):

  • wtf/MD5.h:
  • wtf/SHA1.cpp:

(WTF::SHA1::SHA1):
(WTF::SHA1::addBytes):
(WTF::SHA1::computeHash):

Remove the side effect where computeHash resets the state. No one relies on it.

(WTF::SHA1::hexDigest):
(WTF::SHA1::computeHexDigest):

  • wtf/SHA1.h:
10:32 AM Changeset in webkit [182894] by mmaxfield@apple.com
  • 10 edits in trunk

[iOS] Delete hardcoded font fallback tables
https://bugs.webkit.org/show_bug.cgi?id=143583

Reviewed by Darin Adler

Source/WebCore:

Instead of hardcoding which font to use for a particular character, use
CTFontCreatePhysicalFontDescriptorForCharactersWithLanguage().

Updated test expected results:

editing/selection/vertical-rl-rtl-extend-line-backward-br.html
editing/selection/vertical-rl-rtl-extend-line-backward-p.html
editing/selection/vertical-rl-rtl-extend-line-forward-br.html
editing/selection/vertical-rl-rtl-extend-line-forward-p.html
fast/text/international/danda-space.html
fast/text/international/thai-baht-space.html

  • platform/graphics/ios/FontCacheIOS.mm:

(WebCore::FontCache::getSystemFontFallbackForCharacters):
(WebCore::FontCache::systemFallbackForCharacters):

  • platform/spi/cocoa/CoreTextSPI.h:

LayoutTests:

Updating expected results.

  • editing/selection/vertical-rl-rtl-extend-line-backward-br.html: Updating expected results
  • editing/selection/vertical-rl-rtl-extend-line-backward-p.html: Updating expected results
  • editing/selection/vertical-rl-rtl-extend-line-forward-br.html: Updating expected results
  • editing/selection/vertical-rl-rtl-extend-line-forward-p.html: Updating expected results
  • fast/text/international/danda-space.html: Updating expected results
  • fast/text/international/thai-baht-space.html: Updating expected results
10:30 AM Changeset in webkit [182893] by ap@apple.com
  • 12 edits in trunk/LayoutTests

More flaky tests in http/tests/security/mixedContent
https://bugs.webkit.org/show_bug.cgi?id=143804

Reviewed by Csaba Osztrogonác.

Start secondary window loading in onload, so that it doesn't race with main document
finishing to load.

  • http/tests/security/mixedContent/about-blank-iframe-in-main-frame-expected.txt:
  • http/tests/security/mixedContent/about-blank-iframe-in-main-frame.html:
  • http/tests/security/mixedContent/insecure-audio-video-in-main-frame.html:
  • http/tests/security/mixedContent/insecure-iframe-in-main-frame-expected.txt:
  • http/tests/security/mixedContent/insecure-iframe-in-main-frame.html:
  • http/tests/security/mixedContent/insecure-image-in-main-frame.html:
  • http/tests/security/mixedContent/insecure-xhr-in-main-frame.html:
  • http/tests/security/mixedContent/redirect-http-to-https-iframe-in-main-frame-expected.txt:
  • http/tests/security/mixedContent/redirect-http-to-https-iframe-in-main-frame.html:
  • http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame-expected.txt:
  • http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame.html:
10:28 AM Changeset in webkit [182892] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebKit2

Remove PluginController::isPluginVisible().
https://bugs.webkit.org/show_bug.cgi?id=143830

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-04-16
Reviewed by Darin Adler.

PluginController::isPluginVisible() was introduced by http://webkit.org/b/60285.
This method had been used only for WebKit2 on Windows, and no one uses it now.
So we can remove it.

No new tests, no behavior change.

  • PluginProcess/PluginControllerProxy.cpp:

(WebKit::PluginControllerProxy::isPluginVisible): Deleted.

  • PluginProcess/PluginControllerProxy.h:
  • WebProcess/Plugins/PluginController.h:
  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::isPluginVisible): Deleted.

  • WebProcess/Plugins/PluginView.h:
10:03 AM Changeset in webkit [182891] by peavo@outlook.com
  • 2 edits in trunk/Source/WebCore

[WinCairo] Compile error when environment variable WEBKITLIBRARIESDIR is not defined.
https://bugs.webkit.org/show_bug.cgi?id=143828

Reviewed by Brent Fulgham.

Python throws an exception when calling os.environWEBKITLIBRARIESDIR? and
WEBKITLIBRARIESDIR is not defined. WEBKITLIBRARIESDIR is obsolete, we can remove it.

  • AVFoundationSupport.py:

(lookFor):

9:53 AM Changeset in webkit [182890] by Csaba Osztrogonác
  • 4 edits in trunk/Source

Remove the unnecessary WTF_CHANGES define
https://bugs.webkit.org/show_bug.cgi?id=143825

Reviewed by Andreas Kling.

  • config.h:
9:19 AM Changeset in webkit [182889] by ap@apple.com
  • 4 edits in trunk/Source/WebCore

Minor AudioContext cleanup
https://bugs.webkit.org/show_bug.cgi?id=143816

Reviewed by Jer Noble.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::~AudioContext):
(WebCore::AudioContext::lazyInitialize):
(WebCore::AudioContext::stop):
(WebCore::AudioContext::derefNode):
(WebCore::AudioContext::scheduleNodeDeletion):
(WebCore::AudioContext::deleteMarkedNodes):
(WebCore::AudioContext::stopDispatch): Deleted.
(WebCore::AudioContext::deleteMarkedNodesDispatch): Deleted.

  • Modules/webaudio/AudioContext.h:
  • Modules/webaudio/AudioNode.cpp: (WebCore::AudioNode::~AudioNode):
8:43 AM Changeset in webkit [182888] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove unnecessary intermediate object from DOMTreeOutline
https://bugs.webkit.org/show_bug.cgi?id=143811

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-16
Reviewed by Brian Burg.

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):
(WebInspector.DOMTreeOutline.prototype._selectedNodeChanged):
(WebInspector.DOMTreeOutline.prototype.addEventListener): Deleted.
(WebInspector.DOMTreeOutline.prototype.removeEventListener): Deleted.
This object used to be used to handle event dispatching, but
TreeOutlines themselves are now WebInspector.Objects so we
can remove the intermediary.

8:18 AM Changeset in webkit [182887] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed attempt to fix Windows build after r182881.

Add missing header include.

  • page/PageConsoleClient.h:
6:55 AM Changeset in webkit [182886] by Gyuyoung Kim
  • 2 edits in trunk/Source/WebKit2

[EFL] Disable a flaky ewk_context_network_process_model() API test
https://bugs.webkit.org/show_bug.cgi?id=143824

Reviewed by Csaba Osztrogonác.

ewk_context_network_process_model has been often failed. Though Bug 142967
was filed to fix this issue, it is not solved yet. To maintain EFL bot, this patch
disables it until fixing it.

  • UIProcess/API/efl/tests/test_ewk2_context.cpp:

(TEST_F):

6:39 AM Changeset in webkit [182885] by Csaba Osztrogonác
  • 6 edits
    1 add
    2 deletes in trunk

[EFL] Bump LLVM to version 3.6.0 on X86_64
https://bugs.webkit.org/show_bug.cgi?id=143604

Reviewed by Gyuyoung Kim.

.:

  • Source/cmake/FindLLVM.cmake: Added version handling.
  • Source/cmake/OptionsEfl.cmake: Require LLVM 3.6.0 on X86_64 and patched LLVM 3.5.0 on AArch64.

Tools:

  • efl/jhbuild.modules:
  • efl/patches/llvm-elf-add-stackmaps-arm64.patch: Added the necessary part of llvm-elf-add-stackmaps.patch.
  • efl/patches/llvm-elf-add-stackmaps.patch: Removed, it is included in LLVM 3.6.0 release.
  • efl/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch: Removed, it is included in LLVM 3.6.0 release.
  • efl/patches/llvm-version-arm64.patch: Added. Set PACKAGE_VERSION to "3.5.0ftl" to be able to ensure we use patched LLVM on AArch64.
6:37 AM Changeset in webkit [182884] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[WK2] Forwarding headers generator shouldn't generate unnecessary headers
https://bugs.webkit.org/show_bug.cgi?id=143820

Reviewed by Carlos Garcia Campos.

  • Scripts/generate-forwarding-headers.pl:

(collectNeededHeaders):

6:27 AM Changeset in webkit [182883] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

[EFL] Remove an unnecessary workaround from jhbuildrc
https://bugs.webkit.org/show_bug.cgi?id=143823

Reviewed by Gyuyoung Kim.

  • efl/jhbuildrc:
4:46 AM Changeset in webkit [182882] by Csaba Osztrogonác
  • 5 edits in trunk

[GTK] Run forwarding headers generator unconditionally
https://bugs.webkit.org/show_bug.cgi?id=143819

Reviewed by Carlos Garcia Campos.

Source/WebKit2:

  • PlatformGTK.cmake:

Tools:

  • TestWebKitAPI/PlatformGTK.cmake:
  • WebKitTestRunner/PlatformGTK.cmake:
12:47 AM Changeset in webkit [182881] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Tests introduced in r182877 are flaky
https://bugs.webkit.org/show_bug.cgi?id=143784

Reviewed by Alexey Proskuryakov.

Tests introduced in r182877 are flaky as the line number sometimes
appears in the console messages. This patch updates the console
logging code so that no Document is provided when logging. Therefore,
no line number will ever be displayed. In this case, I don't think
having the line number is terribly useful anyway.

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):

Note: See TracTimeline for information about the timeline view.