Timeline


and

02/14/16: Today

01:57 Changeset [196560] by antti@apple.com
  • 5 edits
    2 adds in trunk/Source/WebCore

Factor class change style invalidation code into a class
https://bugs.webkit.org/show_bug.cgi?id=154163

Reviewed by Andreas Kling.

Factor this piece of functionality out of Element and into ClassChangeInvalidation class.

  • CMakeLists.txt:
  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Element.cpp:

(WebCore::classStringHasClassName):
(WebCore::Element::classAttributeChanged):
(WebCore::collectClasses): Deleted.
(WebCore::computeClassChange): Deleted.
(WebCore::invalidateStyleForClassChange): Deleted.

  • style/ClassChangeInvalidation.cpp: Added.

(WebCore::Style::ClassChangeInvalidation::computeClassChange):
(WebCore::Style::ClassChangeInvalidation::invalidateStyle):

  • style/ClassChangeInvalidation.h: Added.

(WebCore::Style::ClassChangeInvalidation::needsInvalidation):
(WebCore::Style::ClassChangeInvalidation::ClassChangeInvalidation):
(WebCore::Style::ClassChangeInvalidation::~ClassChangeInvalidation):

02/13/16: Yesterday

18:20 Changeset [196559] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] [SVG -> OTF Converter] SVG fonts drawn into ImageBuffers are invisible
https://bugs.webkit.org/show_bug.cgi?id=154222

Reviewed by Antti Koivisto.

Windows ImageBuffer code is sensitive to broken bounding box and
descent code.

Covered by existing tests.

  • svg/SVGToOTFFontConversion.cpp:

(WebCore::SVGToOTFFontConverter::appendHHEATable):
(WebCore::SVGToOTFFontConverter::appendOS2Table):
(WebCore::SVGToOTFFontConverter::processGlyphElement):
(WebCore::SVGToOTFFontConverter::SVGToOTFFontConverter):

18:17 Changeset [196558] by mitz@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Removed the unused Frameworks group.

Rubber-stamped by Sam Weinig.

  • WebInspectorUI.xcodeproj/project.pbxproj:
17:47 Changeset [196557] by timothy@apple.com
  • 2 edits in trunk/Websites/webkit.org

Adjust the appearance of mattewhite figures that are not widescreen.

  • wp-content/themes/webkit/style.css:

(article .mattewhite:not(.widescreen):

14:48 Changeset [196556] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

v3 UI sometimes shows same dates twice on the x-axis of time series charts
https://bugs.webkit.org/show_bug.cgi?id=154210

Reviewed by Chris Dumez.

The bug was caused by the label generation code in TimeSeriesChart.computeTimeGrid never emitting hours.

Use hours instead of dates as labels when the current time's date is same as the previous label's date.
Always include dates before entering this mode to avoid just having hours as labels on the entire x-axis.

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart.prototype._renderXAxis): Slightly increase the "average" width of x-axis label.
(TimeSeriesChart.computeTimeGrid): See above. Also assert that the number of labels we generate never
exceeds maxLabels as a sanity check.
(TimeSeriesChart._timeIterators): Added an iterator that increments by two hours for zoomed graphs.

14:45 Changeset [196555] by antti@apple.com
  • 6 edits in trunk/Source/WebCore

Add version number for default stylesheet
https://bugs.webkit.org/show_bug.cgi?id=154220

Reviewed by Ryosuke Niwa.

We currently fail to update RuleFeatureSets for shadow trees when the default stylesheet grows
(for example when media controls stylesheet is initialized).

No test since this is not causing known bugs. It is blocking optimizations in shadow trees that
rely on rule features being up-to-date.

  • css/CSSDefaultStyleSheets.cpp:

(WebCore::CSSDefaultStyleSheets::loadSimpleDefaultStyle):
(WebCore::CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement):

Increment version number when the default stylesheet changes.

  • css/CSSDefaultStyleSheets.h:
  • css/DocumentRuleSets.cpp:

(WebCore::DocumentRuleSets::appendAuthorStyleSheets):
(WebCore::DocumentRuleSets::collectFeatures):

Store the current default stylesheet version number.

  • css/DocumentRuleSets.h:

(WebCore::DocumentRuleSets::features):

Collect features again if the default stylesheet has changed.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::styleForElement):

14:39 Changeset [196554] by mark.lam@apple.com
  • 3 edits in trunk/Source/WTF

Eliminate the need for WTFCrashImpl().
https://bugs.webkit.org/show_bug.cgi?id=154202

Reviewed by Alexey Proskuryakov.

  • wtf/Assertions.cpp:
  • wtf/Assertions.h:
13:30 Changeset [196553] by rniwa@webkit.org
  • 7 edits in trunk/Websites/perf.webkit.org

v3 UI should show status and associated bugs on analysis task pages
https://bugs.webkit.org/show_bug.cgi?id=154212

Reviewed by Chris Dumez.

Added the capability to see and modify the status and the list of associated of bugs on analysis task pages.

Also added the list of related tasks, which are analysis tasks associated with the same bug or have
overlapping time ranges with the same test metric but on a potentially different platform.

In addition, categorize analysis tasks with the status of "no change" or "inconclusive" as "closed" as no
further action can be taken (users can bring them back to non-closed state without any restrictions).

  • public/api/analysis-tasks.php:

(format_task): Categorize 'unchanged' and 'inconclusive' analysis tasks as closed.

  • public/privileged-api/associate-bug.php:

(main): Added shouldDelete as a new mechanism to disassociate a bug since v3 UI shares a single Bug object
between multiple analysis tasks (as it should have been in the first place).

  • public/v3/components/chart-pane-base.js:

(ChartPaneBase):
(ChartPaneBase.prototype._fetchAnalysisTasks): Since each analysis task's change type (status/result) could
change, we need to create annotation objects during each render() call.
(ChartPaneBase.prototype.render):
(ChartPaneBase.prototype._renderAnnotations): Extracted from ChartPaneBase.prototype._fetchAnalysisTasks to
do that. I was afraid of the perf impact of this but it doesn't seem to be an issue in my testing.
(ChartPaneBase.cssTemplate): Removed superfluous margins (moved to ChartPane.cssTemplate) around the charts
since they are only useful in the charts page.

  • public/v3/models/analysis-task.js:

(AnalysisTask):
(AnalysisTask.prototype.updateSingleton): Added a comment as to why object.result cannot be renamed to
object.changeType in the JSON API.
(AnalysisTask.prototype.updateName): Added.
(AnalysisTask.prototype.updateChangeType): Added.
(AnalysisTask.prototype._updateRemoteState): Added.
(AnalysisTask.prototype.associateBug): Added.
(AnalysisTask.prototype.disassociateBug): Added.
(AnalysisTask.fetchRelatedTasks): Added. See above for the criteria of related-ness.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage):
(AnalysisTaskPage.prototype.updateFromSerializedState):
(AnalysisTaskPage.prototype._fetchRelatedInfoForTaskId): Extracted from updateFromSerializedState.
(AnalysisTaskPage.prototype._didFetchRelatedAnalysisTasks): Added.
(AnalysisTaskPage.prototype.render): Render the list of associated bugs, the list of bug trackers (so that
users can use it to associate with a new bug), and the list of related analysis tasks.
(AnalysisTaskPage.prototype._renderTestGroupList): Extracted from render since it was getting too long.
(AnalysisTaskPage.prototype._renderTestGroupDetails): Ditto.
(AnalysisTaskPage.prototype._updateChangeType): Added.
(AnalysisTaskPage.prototype._associateBug): Added.
(AnalysisTaskPage.prototype._disassociateBug): Added.
(AnalysisTaskPage.htmlTemplate): Added various elements to show and modify the status, associate bugs,
and a list of related analysis tasks.
(AnalysisTaskPage.cssTemplate): Added various styles for those form controls.

  • public/v3/pages/chart-pane.js:

(ChartPane.cssTemplate): Moved the margins from ChartPaneBase.cssTemplate.

11:12 Changeset [196552] by commit-queue@webkit.org
  • 3 edits
    1 add in trunk/Source/WebCore

[cmake] Consolidate building of GStreamer and OpenWebRTC code.
https://bugs.webkit.org/show_bug.cgi?id=154116

Patch by Konstantin Tokarev <annulen@yandex.ru> on 2016-02-13
Reviewed by Michael Catanzaro.

No new tests needed.

  • PlatformEfl.cmake: Migrated shared code to GStreamer.cmake.
  • PlatformGTK.cmake: Ditto.
  • platform/GStreamer.cmake: Added.
09:41 Changeset [196551] by mark.lam@apple.com
  • 7 edits in trunk/Source

Add thread violation checks to WebView public APIs.
https://bugs.webkit.org/show_bug.cgi?id=154183

Reviewed by Timothy Hatcher.

Source/WebCore:

No new tests. Just adding a new thread violation round.

  • platform/ThreadCheck.h:
  • platform/mac/ThreadCheck.mm:
  • Adding WebCoreThreadViolationCheckRoundThree().

Source/WebKit/mac:

Re-landing r196527 with a newly added WebCoreThreadViolationCheckRoundThree().
Previously was using WebCoreThreadViolationCheckRoundTwo().

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

(-[WebFrameView initWithFrame:]):

  • WebView/WebView.mm:

(-[WebView setCustomTextEncodingName:]):
(-[WebView stringByEvaluatingJavaScriptFromString:]):
(-[WebView windowScriptObject]):
(-[WebView setGroupName:]):
(-[WebView setMainFrameURL:]):
(-[WebView mainFrameTitle]):
(-[WebView mainFrameIcon]):
(-[WebView setDrawsBackground:]):
(-[WebView setShouldUpdateWhileOffscreen:]):

05:38 Changeset [196550] by timothy@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix WebAssembly bug URL in the feature list.

  • features.json:
01:23 Changeset [196549] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: DataGrid Header Cells should have Context Menu for Sorting
https://bugs.webkit.org/show_bug.cgi?id=154050

Patch by Devin Rousso <dcrousso+webkit@gmail.com> on 2016-02-13
Reviewed by Joseph Pecoraro.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/DataGrid.js:

(WebInspector.DataGrid.prototype.set sortOrder):
(WebInspector.DataGrid.prototype._toggledSortOrder):
Returns the opposite sort order from the current order.

(WebInspector.DataGrid.prototype._selectSortColumnAndSetOrder):
Changes the selected column to the one with the specified identifier and
then switches the sort order to the given order.

(WebInspector.DataGrid.prototype._headerCellClicked):
Moved logic for switching cells/sort-order to a separate function for
better reusability.

(WebInspector.DataGrid.prototype._contextMenuInHeader):
Adds context menu items on DataGrid header items to change the current
sort order to the specified order. If the context menu is on the selected
header item, only show the sort order that is not currently applied.

00:49 Changeset [196548] by carlosgc@webkit.org
  • 4 edits in trunk/Source/WebKit2

Unreviewed. Fix GTK+ and hopefully EFL build after r196499.

  • UIProcess/Launcher/efl/ProcessLauncherEfl.cpp:

(WebKit::ProcessLauncher::launchProcess):

  • UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:

(WebKit::ProcessLauncher::launchProcess):

  • UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:

(WebKit::PluginProcessProxy::platformGetLaunchOptions):

02/12/16:

23:21 Changeset [196547] by sukolsak@gmail.com
  • 2 edits in trunk/Source/JavaScriptCore

Change the last RefPtr::get() to release() in String.prototype.normalize
https://bugs.webkit.org/show_bug.cgi?id=154211

Reviewed by Ryosuke Niwa.

Change the last RefPtr::get() to release() in String.prototype.normalize.

  • runtime/StringPrototype.cpp:

(JSC::normalize):

21:24 Changeset [196546] by n_wang@apple.com
  • 20 edits
    2 adds in trunk

AX: Implement paragraph related text marker functions using TextIterator
https://bugs.webkit.org/show_bug.cgi?id=154098
<rdar://problem/24269675>

Reviewed by Chris Fleizach.

Source/WebCore:

Using CharacterOffset to implement paragraph related text marker calls. Reused
logic from VisibleUnits class. And refactored textMarkerForCharacterOffset method
to get better performance. Also fixed an issue where we can't navigate through a text
node with line breaks in it using next/previousCharacterOffset call.

Test: accessibility/mac/text-marker-paragraph-nav.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::traverseToOffsetInRange):
(WebCore::AXObjectCache::startOrEndTextMarkerDataForRange):
(WebCore::AXObjectCache::characterOffsetForNodeAndOffset):
(WebCore::AXObjectCache::textMarkerDataForCharacterOffset):
(WebCore::AXObjectCache::textMarkerDataForNextCharacterOffset):
(WebCore::AXObjectCache::textMarkerDataForPreviousCharacterOffset):
(WebCore::AXObjectCache::nextNode):
(WebCore::AXObjectCache::textMarkerDataForVisiblePosition):
(WebCore::AXObjectCache::nextCharacterOffset):
(WebCore::AXObjectCache::previousCharacterOffset):
(WebCore::startWordBoundary):
(WebCore::AXObjectCache::startCharacterOffsetOfWord):
(WebCore::AXObjectCache::endCharacterOffsetOfWord):
(WebCore::AXObjectCache::previousWordStartCharacterOffset):
(WebCore::AXObjectCache::previousWordBoundary):
(WebCore::AXObjectCache::startCharacterOffsetOfParagraph):
(WebCore::AXObjectCache::endCharacterOffsetOfParagraph):
(WebCore::AXObjectCache::paragraphForCharacterOffset):
(WebCore::AXObjectCache::nextParagraphEndCharacterOffset):
(WebCore::AXObjectCache::previousParagraphStartCharacterOffset):
(WebCore::AXObjectCache::rootAXEditableElement):

  • accessibility/AXObjectCache.h:

(WebCore::CharacterOffset::remaining):
(WebCore::CharacterOffset::isNull):
(WebCore::CharacterOffset::isEqual):
(WebCore::AXObjectCache::isNodeInUse):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(+[WebAccessibilityTextMarker textMarkerWithCharacterOffset:cache:]):
(-[WebAccessibilityObjectWrapper nextMarkerForCharacterOffset:]):
(-[WebAccessibilityObjectWrapper previousMarkerForCharacterOffset:]):
(-[WebAccessibilityObjectWrapper rangeForTextMarkers:]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(startOrEndTextmarkerForRange):
(nextTextMarkerForCharacterOffset):
(previousTextMarkerForCharacterOffset):
(-[WebAccessibilityObjectWrapper nextTextMarkerForCharacterOffset:]):
(-[WebAccessibilityObjectWrapper previousTextMarkerForCharacterOffset:]):
(-[WebAccessibilityObjectWrapper textMarkerForCharacterOffset:]):
(textMarkerForCharacterOffset):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
(-[WebAccessibilityObjectWrapper nextTextMarkerForNode:offset:]): Deleted.
(-[WebAccessibilityObjectWrapper previousTextMarkerForNode:offset:]): Deleted.
(-[WebAccessibilityObjectWrapper textMarkerForNode:offset:ignoreStart:]): Deleted.
(-[WebAccessibilityObjectWrapper textMarkerForNode:offset:]): Deleted.

  • editing/VisibleUnits.cpp:

(WebCore::nextSentencePosition):
(WebCore::findStartOfParagraph):
(WebCore::findEndOfParagraph):
(WebCore::startOfParagraph):
(WebCore::endOfParagraph):

  • editing/VisibleUnits.h:

Tools:

  • DumpRenderTree/AccessibilityUIElement.cpp:

(nextWordEndTextMarkerForTextMarkerCallback):
(paragraphTextMarkerRangeForTextMarkerCallback):
(previousParagraphStartTextMarkerForTextMarkerCallback):
(nextParagraphEndTextMarkerForTextMarkerCallback):
(setSelectedVisibleTextRangeCallback):
(AccessibilityUIElement::nextWordEndTextMarkerForTextMarker):
(AccessibilityUIElement::paragraphTextMarkerRangeForTextMarker):
(AccessibilityUIElement::previousParagraphStartTextMarkerForTextMarker):
(AccessibilityUIElement::nextParagraphEndTextMarkerForTextMarker):
(AccessibilityUIElement::getJSClass):

  • DumpRenderTree/AccessibilityUIElement.h:
  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::nextWordEndTextMarkerForTextMarker):
(AccessibilityUIElement::paragraphTextMarkerRangeForTextMarker):
(AccessibilityUIElement::previousParagraphStartTextMarkerForTextMarker):
(AccessibilityUIElement::nextParagraphEndTextMarkerForTextMarker):

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::nextWordEndTextMarkerForTextMarker):
(AccessibilityUIElement::paragraphTextMarkerRangeForTextMarker):
(AccessibilityUIElement::previousParagraphStartTextMarkerForTextMarker):
(AccessibilityUIElement::nextParagraphEndTextMarkerForTextMarker):
(AccessibilityUIElement::supportedActions):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:

(WTR::AccessibilityUIElement::rightWordTextMarkerRangeForTextMarker):
(WTR::AccessibilityUIElement::previousWordStartTextMarkerForTextMarker):
(WTR::AccessibilityUIElement::nextWordEndTextMarkerForTextMarker):
(WTR::AccessibilityUIElement::paragraphTextMarkerRangeForTextMarker):
(WTR::AccessibilityUIElement::nextParagraphEndTextMarkerForTextMarker):
(WTR::AccessibilityUIElement::previousParagraphStartTextMarkerForTextMarker):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::nextWordEndTextMarkerForTextMarker):
(WTR::AccessibilityUIElement::paragraphTextMarkerRangeForTextMarker):
(WTR::AccessibilityUIElement::nextParagraphEndTextMarkerForTextMarker):
(WTR::AccessibilityUIElement::previousParagraphStartTextMarkerForTextMarker):
(WTR::AccessibilityUIElement::mathPostscriptsDescription):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::nextWordEndTextMarkerForTextMarker):
(WTR::AccessibilityUIElement::paragraphTextMarkerRangeForTextMarker):
(WTR::AccessibilityUIElement::previousParagraphStartTextMarkerForTextMarker):
(WTR::AccessibilityUIElement::nextParagraphEndTextMarkerForTextMarker):
(WTR::_convertMathMultiscriptPairsToString):

LayoutTests:

  • accessibility/mac/text-marker-paragraph-nav-expected.txt: Added.
  • accessibility/mac/text-marker-paragraph-nav.html: Added.
  • accessibility/text-marker/text-marker-previous-next-expected.txt:
  • accessibility/text-marker/text-marker-previous-next.html:
20:52 Changeset [196545] by sbarati@apple.com
  • 7 edits in trunk

[ES6] we have an incorrect syntax error when a callee of a function expression has the same name as a top-level lexical declaration
https://bugs.webkit.org/show_bug.cgi?id=154143

Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

We were raising syntax errors on the following type of programs when
we shouldn't have been.
`
(function foo() { const foo = 20; });
`

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseFunctionInfo):

  • parser/Parser.h:

(JSC::Scope::computeLexicallyCapturedVariablesAndPurgeCandidates):
(JSC::Scope::declareCallee):
(JSC::Scope::declareVariable):
(JSC::Scope::hasDeclaredVariable):
(JSC::Scope::hasLexicallyDeclaredVariable):
(JSC::Scope::hasDeclaredParameter):
(JSC::Scope::declareWrite):
(JSC::Scope::getCapturedVars):

LayoutTests:

  • js/basic-strict-mode-expected.txt:
  • js/let-syntax-expected.txt:
  • js/script-tests/let-syntax.js:
20:48 Changeset [196544] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] ZeroExtend and SignExtend use incorrect addressing on ARM64
https://bugs.webkit.org/show_bug.cgi?id=154208

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-02-12
Reviewed by Filip Pizlo.

When lowering:

@1 = Load32(@x)
@2 = SExt8(@1)

LowerToAir would see there is a form of SignExtend8To32 (an alias for Load8S)
and use that.

There are two problems with that:
1) If we have an Addr, it went through legalizeMemoryOffsets() for a 32bits

load. If used on an other kind of load, there is no guarantee the addressing
is still valid.

2) If we have an Index, it is computed for the 32bits MemoryValue.

The computed index is not valid for the 8bits load.

(2) could be fixed by changing LowerToAir to use the current instruction width
instead of the B3ValueWidth but that's a bit tricky. We should just embrace
that one of our target is a Load-Store architecture.

In this patch, I just disabled the faulty forms on ARM64. We still need those operations
to be fast, this will be addressed in: https://bugs.webkit.org/show_bug.cgi?id=154207

I also strengthened the m_allowScratchRegister assertion. The instructions that do not
invalidate the temporary did not run the assertion, making this harder to debug.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load8):
(JSC::MacroAssemblerARM64::store64):
(JSC::MacroAssemblerARM64::store32):
(JSC::MacroAssemblerARM64::loadDouble):
(JSC::MacroAssemblerARM64::storeDouble):
(JSC::MacroAssemblerARM64::branch32):
(JSC::MacroAssemblerARM64::branch64):
(JSC::MacroAssemblerARM64::getCachedDataTempRegisterIDAndInvalidate):
(JSC::MacroAssemblerARM64::getCachedMemoryTempRegisterIDAndInvalidate):
(JSC::MacroAssemblerARM64::dataMemoryTempRegister):
(JSC::MacroAssemblerARM64::cachedMemoryTempRegister):
(JSC::MacroAssemblerARM64::load):
(JSC::MacroAssemblerARM64::store):

  • b3/air/AirOpcode.opcodes:
19:18 Changeset [196543] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

19:13 Changeset [196542] by jond@apple.com
  • 2 edits in trunk/Websites/webkit.org

Add a CSS class to remove padding when using mattewhite class for figures
https://bugs.webkit.org/show_bug.cgi?id=154206

Reviewed by Filip Pizlo.

  • wp-content/themes/webkit/style.css:

(article .two-columns):
(article .two-columns h6):
(article .two-columns p):
(article .mattewhite):
(article .mattewhite.tightwad):
(article figure):

18:37 Changeset [196541] by msaboff@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

offlineasm: Emit Dwarf2 file and location directives to allow for debugging .asm files
https://bugs.webkit.org/show_bug.cgi?id=152703

Reviewed by Mark Lam.

Added support to output Dwarf2 .file and .loc assembler directives to provide the debugging
information needed to correlate the offline assembler generated code with the source lines
in the .asm files.

Changed the tracking of file data to include a file index that was provided to the .file
directive. That index is used when emitting the .loc directives.

  • offlineasm/arm.rb:
  • offlineasm/arm64.rb:
  • offlineasm/asm.rb:
  • offlineasm/backends.rb:
  • offlineasm/config.rb:
  • offlineasm/parser.rb:
  • offlineasm/x86.rb:
18:07 Changeset [196540] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.5.17

New tag.

18:00 Changeset [196539] by fpizlo@apple.com
  • 1 edit
    14 adds in trunk/Websites/webkit.org

Unreviewed, upload some blog files.

  • blog-files/compile-times.png: Added.
  • blog-files/fast-isel.png: Added.
  • blog-files/jetstream-latency.png: Added.
  • blog-files/jetstream-throughput.png: Added.
  • blog-files/jetstream.png: Added.
  • blog-files/kraken.png: Added.
  • blog-files/low-compile-times.png: Added.
  • blog-files/low-fast-isel.png: Added.
  • blog-files/low-jetstream-latency.png: Added.
  • blog-files/low-jetstream-throughput.png: Added.
  • blog-files/low-jetstream.png: Added.
  • blog-files/low-kraken.png: Added.
  • blog-files/low-octane.png: Added.
  • blog-files/octane.png: Added.
17:49 Changeset [196538] by jiewen_tan@apple.com
  • 3 edits in trunk/LayoutTests

Unreviewed, build fix after r196520

  • inspector/model/remote-object-get-properties-expected.txt:
  • platform/mac/inspector/model/remote-object-expected.txt:
17:39 Changeset [196537] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

17:10 Changeset [196536] by msaboff@apple.com
  • 5 edits in trunk/Source/bmalloc

BASSERTs added in r196421 are causing debug test failures
https://bugs.webkit.org/show_bug.cgi?id=154113

Reviewed by Geoffrey Garen.

In VMHeap::deallocateLargeObject(), we drop the lock to deallocate the physical pages.
If the scavenger thread is running at the same time a synchronous call to scavenge()
comes in, we could call VMHeap::deallocateLargeObject() for an adjacent object while the
lock in the other thread is dropped. We fix this by checking for adjacent objects we
can merge with and loop if we have one.

  • bmalloc/FreeList.h:

(bmalloc::FreeList::push): Added BASSERT to catch adding unmerged free objects

  • bmalloc/Heap.cpp:

(bmalloc::Heap::allocateLarge): Changed to use nextCanMerge().

  • bmalloc/LargeObject.h:

(bmalloc::LargeObject::prevCanMerge): Repurposed prevIsAllocated.
(bmalloc::LargeObject::nextCanMerge): Repurposed nextIsAllocated.
(bmalloc::LargeObject::prevIsAllocated): Deleted.
(bmalloc::LargeObject::nextIsAllocated): Deleted.

  • bmalloc/VMHeap.h:

(bmalloc::VMHeap::allocateLargeObject): Moved adding the extra object back to the free list
to after we set the object we'll return as being allocated.
(bmalloc::VMHeap::deallocateLargeObject):

17:05 Changeset [196535] by mark.lam@apple.com
  • 3 edits in trunk/Source/bmalloc

Make BCRASH() use breakpoint traps too for non-debug OS(DARWIN).
https://bugs.webkit.org/show_bug.cgi?id=154184

Reviewed by Saam Barati.

This makes it behave consistently with WTFCrash().

  • bmalloc/BAssert.h:
  • bmalloc/BPlatform.h:
16:42 Changeset [196534] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Rebaseline imported/w3c/web-platform-tests/html/dom/interfaces.html for ios-simulator after r196520

Unreviewed test gardening.

  • platform/ios-simulator/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt:
16:40 Changeset [196533] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.46.99

New tag.

16:36 Changeset [196532] by ryanhaddad@apple.com
  • 3 edits in trunk/Source/WebCore

Reset results for bindings tests after r196520

Unreviewed test gardening.

No new tests needed.

  • bindings/scripts/test/GObject/WebKitDOMTestEventTarget.cpp:

(webkit_dom_test_event_target_dispatch_event):

  • bindings/scripts/test/GObject/WebKitDOMTestNode.cpp:

(webkit_dom_test_node_dispatch_event):

16:36 Changeset [196531] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit/mac

Unreviewed, rolling out r196527.
https://bugs.webkit.org/show_bug.cgi?id=154204

"Need to redo as WebCoreThreadViolationCheckRoundThree"
(Requested by mlam on #webkit).

Reverted changeset:

"Add thread violation checks to WebView public APIs."
https://bugs.webkit.org/show_bug.cgi?id=154183
http://trac.webkit.org/changeset/196527

16:32 Changeset [196530] by sbarati@apple.com
  • 2 edits in trunk/Source/WebCore

Attempting build fix from https://bugs.webkit.org/show_bug.cgi?id=154144.

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::addBuiltinGlobals):

16:30 Changeset [196529] by bshafiei@apple.com
  • 15 edits in branches/safari-601-branch/Source

Merge patch for rdar://problem/24626412.

16:24 Changeset [196528] by dbates@webkit.org
  • 4 edits
    4 adds
    2 deletes in trunk

CSP: 'blob:' URLs should not match 'self' in CSP source expression lists.
https://bugs.webkit.org/show_bug.cgi?id=153158
<rdar://problem/24383264>

Reviewed by Brent Fulgham.

Source/WebCore:

A blob URL should not match source 'self' by section Security Considerations for GUID URL schemes
of the Content Security Policy 2.0 spec., <https://www.w3.org/TR/CSP2/> (21 July 2015).

Tests: http/tests/security/contentSecurityPolicy/blob-url-does-not-match-source-self.html

http/tests/security/contentSecurityPolicy/blob-url-matches-source-blob.html

  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::matches): Do not make a distinction between URLs that
contain a nested URL (e.g. blob://http://www.example.com/...) and URLs that do not contain a nested
URL. The URL of the requested resource should be matched against the source list source expressions.

LayoutTests:

Add test http/tests/security/contentSecurityPolicy/blob-url-matches-source-blob.html to ensure that a
blob URL matches source "blob:".

Replaced text-only test http/tests/security/contentSecurityPolicy/blob-urls-match-self.html with an
analogous reference test http/tests/security/contentSecurityPolicy/blob-url-does-not-match-source-self.html
so as ensure that we do not regress the behavior that source 'self' should not match a blob URL
without considering the Content Security Policy violation message as part of the expected result.
The Content Security Policy violation message will differ between test runs because it references
the blob URL that triggered the violation, which is cryptographically random.

  • TestExpectations: Remove entry for test http/tests/security/contentSecurityPolicy/blob-urls-match-self.html as the analogous test

blob-url-does-not-match-source-self.htm now passes.

  • http/tests/security/contentSecurityPolicy/blob-url-does-not-match-source-self-expected.html: Added.
  • http/tests/security/contentSecurityPolicy/blob-url-does-not-match-source-self.html: Added.
  • http/tests/security/contentSecurityPolicy/blob-url-matches-source-blob-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/blob-url-matches-source-blob.html: Added.
  • http/tests/security/contentSecurityPolicy/blob-urls-match-self-expected.txt: Removed.
  • http/tests/security/contentSecurityPolicy/blob-urls-match-self.html: Removed. See the analogous test blob-url-does-not-match-source-self.html.
16:22 Changeset [196527] by mark.lam@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Add thread violation checks to WebView public APIs.
https://bugs.webkit.org/show_bug.cgi?id=154183

Reviewed by Geoffrey Garen.

This will help clients of the API detect the violations sooner rather than
having to debug mysterious crashes / failures later.

To that end, I've added thread violation checks to the following functions
because ...

  • WebView/WebView.mm:

(-[WebView setCustomTextEncodingName:]):

  • Uses the FrameLoader (which is for the main thread only).

(-[WebView stringByEvaluatingJavaScriptFromString:]):

  • Invokes JavaScript (which is for the main thread only).

(-[WebView windowScriptObject]):

  • Invokes ScriptController::windowScriptObject() which requires the JSLock.

(-[WebView setGroupName:]):

  • Manipulates the PageGroup and Page (which is for the main thread only).

(-[WebView setMainFrameURL:]):

  • Uses the FrameLoader (which is for the main thread only).

(-[WebView mainFrameTitle]):

  • Uses the FrameLoader::documentLoader() (via [WebFrame _dataSource]) which is RefPtr, and therefore not safe for other threads to access.

(-[WebView mainFrameIcon]):

  • Uses the FrameLoader::documentLoader() (via [WebFrame _dataSource]) which is RefPtr, and therefore not safe for other threads to access.
  • Uses [WebIconDatabase sharedIconDatabase] which does a singleton instantiation but is not protected by a lock.

(-[WebView setDrawsBackground:]):

  • Potentially manipulates a RenderView (via FrameView::setBaseBackgroundColor, via [WebFrame _updateBackgroundAndUpdatesWhileOffscreen]), and RenderView is for main thread only use.

(-[WebView setShouldUpdateWhileOffscreen:]):

  • Uses [WebFrame _updateBackgroundAndUpdatesWhileOffscreen]. Hence, for the main thread only.
16:18 Changeset [196526] by dbates@webkit.org
  • 34 edits
    5 copies
    5 adds
    4 deletes in trunk

CSP: Implement child-src directive
https://bugs.webkit.org/show_bug.cgi?id=153562
<rdar://problem/24610087>

Reviewed by Brent Fulgham.

Source/WebCore:

Add support for the child-src directive, <https://w3c.github.io/webappsec-csp/2/#child_src> (29 August 2015),
which formally replaces the deprecated frame-src directive as of the Content Security Policy 2.0 spec. The
child-src directive was first introduced in the Content Security Policy 1.1 spec, <https://www.w3.org/TR/2014/WD-CSP11-20140211/>.

As a side effect of this change, the script URL for a Web Worker is checked against the child-src directive
as opposed to the script-src directive. This is a backward incompatible change from the CSP 1.0 spec.

Tests: http/tests/security/contentSecurityPolicy/1.1/child-src/frame-fires-load-event-when-blocked.html

http/tests/security/contentSecurityPolicy/1.1/child-src/frame-fires-load-event-when-redirect-blocked.html
http/tests/security/contentSecurityPolicy/1.1/child-src/frame-src-takes-precedence-over-child-src.html
http/tests/security/contentSecurityPolicy/1.1/child-src/worker-redirect-blocked.html
http/tests/security/isolatedWorld/bypass-main-world-csp-worker-redirect.html

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::isAllowedByContentSecurityPolicy): Check child-src directive (if applicable).

  • loader/ThreadableLoader.h: Add enum value EnforceChildSrcDirective to enum class ContentSecurityPolicyEnforcement to

enforce the child-src directive on redirect.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allowChildContextFromSource): Added.

  • page/csp/ContentSecurityPolicy.h:
  • page/csp/ContentSecurityPolicyDirectiveList.cpp:

(WebCore::ContentSecurityPolicyDirectiveList::checkSourceAndReportViolation): Add message prefix for a child-src violation.
We use the same message prefix as used by Blink.
(WebCore::ContentSecurityPolicyDirectiveList::allowChildContextFromSource): Added.
(WebCore::ContentSecurityPolicyDirectiveList::allowChildFrameFromSource): Modified to check the frame-src
directive (if specified) before checking the child-src directive by <https://w3c.github.io/webappsec-csp/2/#directive-child-src-nested>.
(WebCore::ContentSecurityPolicyDirectiveList::addDirective): Parse the child-src directive.

  • page/csp/ContentSecurityPolicyDirectiveList.h:
  • workers/AbstractWorker.cpp:

(WebCore::AbstractWorker::resolveURL): Check if the script URL for the worker is allowed by the child-src directive
as opposed to the script-src directive. This is a backwards incompatible change from the CSP 1.0 spec.

  • workers/Worker.cpp:

(WebCore::Worker::create): Enforce the child-src directive on redirects (if applicable).

LayoutTests:

Add new tests, un-skip now passing tests and update incorrect expected result for test http/tests/security/contentSecurityPolicy/1.1/child-src/worker-blocked.html.

  • TestExpectations: Remove entry for test http/tests/security/contentSecurityPolicy/worker-script-src.html as it now passes.

Mark all tests in http/tests/security/contentSecurityPolicy/1.1/child-src as PASS so that we run them except for tests
frame-fires-load-event-when-blocked.html and frame-fires-load-event-when-redirect-blocked.html (formerly named frame-blocked.html
and frame-redirect-blocked.html, respectively) as they depend on the fix for <https://bugs.webkit.org/show_bug.cgi?id=153150>.
Skip all other CSP 1.1 tests until we fix <https://bugs.webkit.org/show_bug.cgi?id=85558>. Group some CSP 1.1 entries together.

  • fast/workers/worker-inherits-csp-blocks-eval-expected.txt: Update expected result based on change to worker-inherits-csp-blocks-eval.html.
  • fast/workers/worker-inherits-csp-blocks-eval.html: Remove source 'self' from script-src directive. This was needed as

a workaround for <https://bugs.webkit.org/show_bug.cgi?id=153158> when the script URL for a worker was checked against the
script-src directive. Now that the script URL is checked against the child-src directive we do not need this workaround.

  • fast/workers/worker-inherits-csp-blocks-xhr.html: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-about-blank-allowed.html: Use js-test-{pre, post}.js as opposed to

js-test.js to avoid duplicate "TEST COMPLETE" output.

  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-allowed.html: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-blocked-expected.txt: Update expected result based on changes to frame-blocked.html.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-blocked.html: Update test to work without the fix for <https://bugs.webkit.org/show_bug.cgi?id=153150>.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-fires-load-event-when-blocked-expected.txt: Copied from LayoutTests/http/tests/security/contentSecurityPolicy/1.1/child-src/frame-blocked-expected.txt.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-fires-load-event-when-blocked.html: Copied from LayoutTests/http/tests/security/contentSecurityPolicy/1.1/child-src/frame-blocked.html.

Keep a copy of the original test for when we fix <https://bugs.webkit.org/show_bug.cgi?id=153150>.

  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-fires-load-event-when-redirect-blocked-expected.txt: Copied from LayoutTests/http/tests/security/contentSecurityPolicy/1.1/child-src/frame-redirect-blocked-expected.txt.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-fires-load-event-when-redirect-blocked.html: Copied from LayoutTests/http/tests/security/contentSecurityPolicy/1.1/child-src/frame-redirect-blocked.html.

Keep a copy of the original test for when we fix <https://bugs.webkit.org/show_bug.cgi?id=153150>.

  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-redirect-blocked-expected.txt: Update expected result based on changes to frame-redirect-blocked.html.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-redirect-blocked.html: Update test to work without the fix for <https://bugs.webkit.org/show_bug.cgi?id=153150>.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-src-takes-precedence-over-child-src-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-src-takes-precedence-over-child-src.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-allowed.html: Use js-test-{pre, post}.js as opposed to

js-test.js to avoid duplicate "TEST COMPLETE" output.

  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-blocked-expected.txt: Update incorrect expected result to

reflect WebKit error message. The current result reflects the error message used by Blink.

  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-blocked.html: Use js-test-{pre, post}.js as opposed to

js-test.js to avoid duplicate "TEST COMPLETE" output.

  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-redirect-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-shared-allowed-expected.txt: Removed; WebKit does not support shared Web Workers.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-shared-allowed.html: Removed; WebKit does not support shared Web Workers.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-shared-blocked-expected.txt: Removed; WebKit does not support shared Web Workers.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/worker-shared-blocked.html: Removed; WebKit does not support shared Web Workers.
  • http/tests/security/contentSecurityPolicy/resources/child-src-test.js: Remove logic for testing shared Web Workers as WebKit does not support such workers.

(window.onload): Deleted.
(injectSharedWorker): Deleted.

  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-blocks-eval-expected.txt: Update expected result based on change to worker-blob-inherits-csp-blocks-eval.html.
  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-blocks-eval.html: Remove source 'self' from script-src directive.

This was needed as a workaround for <https://bugs.webkit.org/show_bug.cgi?id=153158> when the script URL for a worker was checked
against the script-src directive. Now that the script URL is checked against the child-src directive we do not need this workaround.

  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-importScripts-block-aborts-all-subsequent-imports-expected.txt: Update

expected result based on change to worker-blob-inherits-csp-importScripts-block-aborts-all-subsequent-imports.html.

  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-importScripts-block-aborts-all-subsequent-imports.html:

Remove source 'self' from script-src directive. This was needed as a workaround for <https://bugs.webkit.org/show_bug.cgi?id=153158> when
the script URL for a worker was checked against the script-src directive. Now that the script URL is checked against the child-src directive
we do not need this workaround.

  • http/tests/security/contentSecurityPolicy/worker-blob-inherits-csp-importScripts-redirect-cross-origin-blocked.html: Ditto.
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker.html: Add child-src 'none' and remove FIXME comment.
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker-redirect-expected.txt: Added.
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker-redirect.html: Added.
  • platform/ios-simulator/TestExpectations: Remove skip entry for tests in http/tests/security/contentSecurityPolicy/1.1 from this file.

Instead we will skip these tests from LayoutTests/TestExpectations since they fail for all ports.

  • platform/mac/TestExpectations: Ditto.
  • platform/win/TestExpectations: Ditto.
  • platform/wk2/TestExpectations: Ditto.
16:12 Changeset [196525] by sbarati@apple.com
  • 18 edits in trunk/Source

The parser doesn't properly protect against global variable references in builtins
https://bugs.webkit.org/show_bug.cgi?id=154144

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This patch fixes our global variable reference detection
algorithm that was broken. After fixing the algorithm, I
detected many places where we were incorrectly using global
variables. I've fixed all those.

  • builtins/BuiltinExecutables.cpp:

(JSC::createExecutableInternal):

  • builtins/NumberPrototype.js:

(toLocaleString):

  • builtins/PromiseConstructor.js:

(race):
(reject):
(resolve):

  • parser/Nodes.cpp:

(JSC::ProgramNode::ProgramNode):
(JSC::ModuleProgramNode::ModuleProgramNode):
(JSC::ProgramNode::setClosedVariables): Deleted.

  • parser/Nodes.h:

(JSC::ScopeNode::setClosedVariables): Deleted.
(JSC::ProgramNode::closedVariables): Deleted.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::didFinishParsing):

  • parser/Parser.h:

(JSC::Scope::setIsLexicalScope):
(JSC::Scope::isLexicalScope):
(JSC::Scope::closedVariableCandidates):
(JSC::Scope::declaredVariables):
(JSC::Scope::lexicalVariables):
(JSC::Scope::finalizeLexicalEnvironment):
(JSC::Parser::positionBeforeLastNewline):
(JSC::Parser::locationBeforeLastToken):
(JSC::Parser::isFunctionMetadataNode):
(JSC::parse):
(JSC::Parser::closedVariables): Deleted.

Source/WebCore:

Change JS builtins to no longer reference global variables.

No new tests because old tests cover the issues here.

  • Modules/mediastream/NavigatorUserMedia.js:

(webkitGetUserMedia):

  • Modules/mediastream/RTCPeerConnection.js:

(addIceCandidate):
(getStats):

  • Modules/mediastream/RTCPeerConnectionInternals.js:

(setLocalOrRemoteDescription):

  • Modules/plugins/QuickTimePluginReplacement.js:

(Replacement.prototype.handleEvent):

  • Modules/streams/ByteLengthQueuingStrategy.js:

(initializeByteLengthQueuingStrategy):

  • Modules/streams/CountQueuingStrategy.js:

(initializeCountQueuingStrategy):

  • Modules/streams/ReadableStreamInternals.js:

(teeReadableStream):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::addBuiltinGlobals):

  • bindings/js/WebCoreBuiltinNames.h:
16:07 Changeset [196524] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

JSObject::putByIndexBeyondVectorLengthWithoutAttributes needs to go to the sparse map based on MAX_STORAGE_VECTOR_INDEX
https://bugs.webkit.org/show_bug.cgi?id=154201
rdar://problem/24291387

Reviewed by Saam Barati.

I decided against adding a test for this, because it runs for a very long time.

  • runtime/JSObject.cpp:

(JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes): Fix the bug.

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncSplit): Fix a related bug: if this code creates an array that would have

hit the above bug, then it would probably manifest as a spin or as swapping.

16:06 Changeset [196523] by ryanhaddad@apple.com
  • 3 edits in trunk/LayoutTests

Re-enable skipped animations tests on ios-simulator.
https://bugs.webkit.org/show_bug.cgi?id=152131

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-simulator/TestExpectations:
15:34 Changeset [196522] by jond@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add WebAssembly to the status page
https://bugs.webkit.org/show_bug.cgi?id=154199

Reviewed by Timothy Hatcher.

  • features.json:
15:33 Changeset [196521] by rniwa@webkit.org
  • 10 edits
    2 adds in trunk/Websites/perf.webkit.org

Perf dashboard should allow renaming analysis tasks and test groups
https://bugs.webkit.org/show_bug.cgi?id=154200

Reviewed by Chris Dumez.

Allow editing names of analysis tasks and A/B testing groups in the v3 UI.

Added the support for updating the name to the privileged API at /privileged-api/update-analysis-task
and added a new prevailed API to update A/B testing groups at /privileged-api/update-test-group.

  • public/privileged-api/update-analysis-task.php: Added the support for renaming the analysis task.

(main):

  • public/privileged-api/update-test-group.php: Added. Supports updating the test group's name.

(main):

  • public/v3/components/editable-text.js: Added.

(EditableText): Added. A new editable text label control. It looks like a text node with "(Edit)" link
at the end which allow users to go into the "editing mode", which reveals an input element.
The user can exit the editing mode by either moving the focus away from the control or clicking on
"(Save)" at the end. It calls _updateCallback in the latter case.
(EditableText.prototype.editedText): Returns the current value of the input element user.
(EditableText.prototype.setText): Sets the label. This does not live-update the input element until
the user exists the current editing mode and re-enters it.
(EditableText.prototype.setStartedEditingCallback): Sets a callback which gets called when the user
requested to enter the editing mode. Since EditableText relies on AnalysisTaskPage to render, this
callback only exits to call EditableText.render() in AnalysisTask._didStartEditingTaskName.
(EditableText.prototype.setUpdateCallback): Sets a callback which gets called when the user exits
the editing mode by activating the "(Save)" link. This callback MUST return a promise upon resolution
of which the control gets out of the editing mode. While the promise is in flight, the input element
becomes readonly.
(EditableText.prototype.render): Updates various states of the elements. When _updatingPromise is not
falsy, we make the input element readonly and show '(...)' on the link. Don't show the action link
if the label is empty (e.g. analysis task or test group is still being fetched).
(EditableText.prototype._didClick): Called when the user clicked on the action link. Enter the editing
mode or save the edited label via _updateCallback.
(EditableText.prototype._didBlur): Exit the editing mode without saving if the input element is not
focused, there is no inflight promise returned by _updateCallback, and the action link "(Save)" does
not have the focus.
(EditableText.prototype._didUpdate): Called when exiting the editing mode.
(EditableText.htmlTemplate):
(EditableText.cssTemplate):

  • public/v3/index.html: Include newly added editable-text.js.
  • public/v3/models/analysis-task.js:

(AnalysisTask.prototype.updateSingleton): Added.
(AnalysisTask.prototype.updateName): Added. Uses PrivilegedAPI to update the name and re-fetches
the analysis task from the sever.
(AnalysisTask._constructAnalysisTasksFromRawData): Use ensureSingleton instead of manually calling
findById since we need to update the name of the singleton object we found (via updateSingleton).

  • public/v3/models/bug.js:

(Bug.ensureSingleton): Moved the code to compute the synthetic id from AnalysisTask's
_constructAnalysisTasksFromRawData.
(Bug.prototype.updateSingleton): Added. Just assert that nothing changes.

  • public/v3/models/build-request.js:

(BuildRequest.prototype.updateSingleton): Added. Assert that the intrinsic values of a build request
doesn't change and update status text, status url, and build id as they could change.

  • public/v3/models/commit-log.js:

(CommitLog): Made the constructor argument conform to the convention of id, object pair so that we can
use DataModelObject.ensureSingleton.
(CommitLog.ensureSingleton):
(CommitLog.prototype.updateSingleton): Extracted from CommitLog.ensureSingleton.

  • public/v3/models/data-model.js:

(DataModelObject.ensureSingleton): Call newly added updateSingleton.
(DataModelObject.prototype.updateSingleton):
(LabeledObject): Removed the name map since it's never used (findByName is never called anywhere).
(LabeledObject.prototype.updateSingleton): Added. Updates _name.
(LabeledObject.findByName): Deleted.

  • public/v3/models/test-group.js:

(TestGroup.prototype.updateName): Added. Uses PrivilegedAPI to update the name and re-fetches
the test group from the sever.
(TestGroup._createModelsFromFetchedTestGroups): Removed bogus code. A root set doesn't have a test
group associated with it since multiple test groups can share a single root set (this property doesn't
even exist).

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage): Removed useless _taskId and added this._testGroupLabelMap and this._taskNameLabel.
(AnalysisTaskPage.prototype.updateFromSerializedState): Cleanup.
(AnalysisTaskPage.prototype._didFetchTask): Assert that this function is called exactly once.
(AnalysisTaskPage.prototype.render): Use this._task.id() to show the v2 link. Use EditableText to show
the names of the analysis task and the associated test groups. Hide the overview chart and the list of
test groups (along with the retry/confirm button) when the analysis task failed to fetch. We always
update the names of the analysis task and the associated test groups since they could be updated by
the server.
(AnalysisTaskPage.prototype._didStartEditingTaskName): Added.
(AnalysisTaskPage.prototype._updateTaskName): Added.
(AnalysisTaskPage.prototype._updateTestGroupName): Added.
(AnalysisTaskPage.htmlTemplate): Updated the style.

15:25 Changeset [196520] by jiewen_tan@apple.com
  • 27 edits
    2 adds in trunk

WebKit should expose the DOM 4 Event.isTrusted property
https://bugs.webkit.org/show_bug.cgi?id=76121
<rdar://problem/22558494>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/dom/events/Event-constructors-expected.txt:
  • web-platform-tests/dom/events/Event-dispatch-redispatch-expected.txt:
  • web-platform-tests/dom/events/Event-initEvent-expected.txt:
  • web-platform-tests/dom/events/ProgressEvent-expected.txt:
  • web-platform-tests/dom/interfaces-expected.txt:
  • web-platform-tests/dom/nodes/Document-createEvent-expected.txt:
  • web-platform-tests/html/dom/interfaces-expected.txt:
  • web-platform-tests/html/semantics/forms/the-button-element/button-events-expected.txt:

Source/WebCore:

Implements Event.isTrusted. The implementation here is slitely different from and better than
the DOM specification. Here Event.isTrusted will be initialized differently depending on the
callers of the constructors/create methods. If the caller is from user agent, the isTrusted
will be true. Otherwise, it will be false. Since a user agent dispatched event can be catched
and re-initialized/redispatched by the bindings, the flag will be unset at *Event::init*Event
and EventTarget::dispatchEventForBindings. As currently there is no way to let user agent to
dispatch a bindings created event, therefore we ensure that the Event.isTrusted is set for
events dispatched by user agent, and unset for those by bindings.

EventTarget::dispatchEvent(Event*, ExceptionCode&) is renamed to EventTarget::dispatchEventForBindings
in this patch as well. So that, together with the improved design of the API, developers in
the future will be less likely using a wrong dispatchEvent method and setting Event.isTrusted
incorrectly comparing to the DOM design.

After this patch, all events that are created by user agent should be dispatched by
EventTarget::dispatchEvent, and those are created by bindings should be dispatched by
EventTarget::dispatchEventForBindings.

Some of the changes in this patch referred Blink r198996:
https://codereview.chromium.org/1241613004

Test: imported/blink/fast/events/event-trusted.html

  • bindings/scripts/CodeGeneratorGObject.pm:

(GenerateEventTargetIface):

  • dom/Event.cpp:

(WebCore::Event::Event):
(WebCore::Event::initEvent):

  • dom/Event.h:

(WebCore::Event::isTrusted):
(WebCore::Event::setUntrusted):

  • dom/Event.idl:
  • dom/EventTarget.cpp:

(WebCore::EventTarget::dispatchEventForBindings):
(WebCore::EventTarget::dispatchEvent): Deleted.

  • dom/EventTarget.h:
  • dom/EventTarget.idl:
  • page/DOMWindow.idl:
  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchDragEvent):

  • workers/WorkerGlobalScope.idl:

Source/WebKit/win:

  • DOMCoreClasses.cpp:

(DOMNode::dispatchEvent):
(DOMWindow::dispatchEvent):

LayoutTests:

  • fast/dom/unforgeable-attributes-expected.txt:
  • fast/xmlhttprequest/xmlhttprequest-get-expected.txt:
  • http/tests/workers/worker-importScriptsOnError-expected.txt:
  • imported/blink/fast/events/event-trusted-expected.txt: Added.
  • imported/blink/fast/events/event-trusted.html: Added.
  • platform/ios-simulator/TestExpectations:
15:16 Changeset [196519] by beidson@apple.com
  • 6 edits in trunk/Source/WebCore

Modern IDB: IDBObjectStore and IDBIndex need to be ActiveDOMObjects.
https://bugs.webkit.org/show_bug.cgi?id=154153

Reviewed by Alex Christensen.

No new tests (No testable change in behavior).

This is needed so that IDBObjectStore and IDBIndex JS wrappers are not garbage collected
while their IDBTransaction is still in progress.

  • Modules/indexeddb/client/IDBIndexImpl.cpp:

(WebCore::IDBClient::IDBIndex::IDBIndex):
(WebCore::IDBClient::IDBIndex::activeDOMObjectName):
(WebCore::IDBClient::IDBIndex::canSuspendForDocumentSuspension):
(WebCore::IDBClient::IDBIndex::hasPendingActivity):

  • Modules/indexeddb/client/IDBIndexImpl.h:
  • Modules/indexeddb/client/IDBObjectStoreImpl.cpp:

(WebCore::IDBClient::IDBObjectStore::create):
(WebCore::IDBClient::IDBObjectStore::IDBObjectStore):
(WebCore::IDBClient::IDBObjectStore::activeDOMObjectName):
(WebCore::IDBClient::IDBObjectStore::canSuspendForDocumentSuspension):
(WebCore::IDBClient::IDBObjectStore::hasPendingActivity):
(WebCore::IDBClient::IDBObjectStore::index):

  • Modules/indexeddb/client/IDBObjectStoreImpl.h:
  • Modules/indexeddb/client/IDBTransactionImpl.cpp:

(WebCore::IDBClient::IDBTransaction::objectStore):
(WebCore::IDBClient::IDBTransaction::createObjectStore):
(WebCore::IDBClient::IDBTransaction::createIndex):

15:01 Changeset [196518] by beidson@apple.com
  • 6 edits
    5 adds in trunk

Modern IDB: Simplify the relationship between IDBObjectStore and IDBIndex.
https://bugs.webkit.org/show_bug.cgi?id=154187

Reviewed by Alex Christensen.

Source/WebCore:

Tests: storage/indexeddb/modern/deleteindex-3-private.html

storage/indexeddb/modern/deleteindex-3.html

Instead of allowing IDBIndex to have two different lifecycle modes, it is now always
owned by an IDBObjectStore.

To support the case where an IDBIndex is deleted from its IDBObjectStore, the object
store simply hangs on to deleted indexes until it is destroyed itself.

  • Modules/indexeddb/client/IDBIndexImpl.cpp:

(WebCore::IDBClient::IDBIndex::markAsDeleted):
(WebCore::IDBClient::IDBIndex::ref):
(WebCore::IDBClient::IDBIndex::deref):

  • Modules/indexeddb/client/IDBIndexImpl.h:
  • Modules/indexeddb/client/IDBObjectStoreImpl.cpp:

(WebCore::IDBClient::IDBObjectStore::deleteIndex):

  • Modules/indexeddb/client/IDBObjectStoreImpl.h:

LayoutTests:

  • storage/indexeddb/modern/deleteindex-3-expected.txt: Added.
  • storage/indexeddb/modern/deleteindex-3-private-expected.txt: Added.
  • storage/indexeddb/modern/deleteindex-3-private.html: Added.
  • storage/indexeddb/modern/deleteindex-3.html: Added.
  • storage/indexeddb/modern/resources/deleteindex-3.js: Added.
14:44 Changeset [196517] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Rename domAgent to domTreeManager in DOMNode
https://bugs.webkit.org/show_bug.cgi?id=154194

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-02-12
Reviewed by Timothy Hatcher.

  • UserInterface/Models/DOMNode.js:

(WebInspector.DOMNode):

14:37 Changeset [196516] by jmarcell@apple.com
  • 2 edits in trunk/Tools

Open source bot watcher's dashboard fails assertion in BuildbotQueue.prototype.compareIterationsByRevisions
https://bugs.webkit.org/show_bug.cgi?id=154180

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js: Remove reference to Internal

repository.

14:35 Changeset [196515] by bburg@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

Web Inspector: disambiguate the various identifier and connection types in RemoteInspector
https://bugs.webkit.org/show_bug.cgi?id=154130

Reviewed by Joseph Pecoraro.

There are multiple identifier types:

  • connection identifier, a string UUID for a remote debugger process.
  • session identifier, a string UUID for a remote driver/debugger instance.
  • page/target identifier, a number unique within a single process.

There are multiple connection types:

  • RemoteInspectorXPCConnection, a connection from RemoteInspectorXPCConnectionor to a relay.
  • RemoteConnectionToTarget, a class that bridges to targets' dispatch queues.

Use consistent variable and getter names so that these don't get confused and
so that the code is easier to read. This is especially an improvement when working
with multiple target types or connection types within the same function.

  • inspector/remote/RemoteConnectionToTarget.h:
  • inspector/remote/RemoteConnectionToTarget.mm:

Remove the member for m_identifier since we can ask the target for its target identifier
or use a default value via WTF::Optional. There's no reason to cache the value.

(Inspector::RemoteTargetHandleRunSourceWithInfo):
(Inspector::RemoteConnectionToTarget::targetIdentifier):
(Inspector::RemoteConnectionToTarget::destination):
(Inspector::RemoteConnectionToTarget::setup):
(Inspector::RemoteConnectionToTarget::sendMessageToFrontend):
Bail out if the target pointer was somehow cleared and we can't get a useful target identifier.

(Inspector::RemoteConnectionToTarget::RemoteConnectionToTarget): Deleted.

  • inspector/remote/RemoteControllableTarget.h:
  • inspector/remote/RemoteInspectionTarget.cpp:

(Inspector::RemoteInspectionTarget::pauseWaitingForAutomaticInspection):
(Inspector::RemoteInspectionTarget::unpauseForInitializedInspector):

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/RemoteInspector.mm:

(Inspector::RemoteInspector::nextAvailableTargetIdentifier):
(Inspector::RemoteInspector::registerTarget):
(Inspector::RemoteInspector::unregisterTarget):
(Inspector::RemoteInspector::updateTarget):
(Inspector::RemoteInspector::updateAutomaticInspectionCandidate):
(Inspector::RemoteInspector::sendAutomaticInspectionCandidateMessage):
(Inspector::RemoteInspector::sendMessageToRemote):
(Inspector::RemoteInspector::setupFailed):
(Inspector::RemoteInspector::setupCompleted):
(Inspector::RemoteInspector::stopInternal):
(Inspector::RemoteInspector::setupXPCConnectionIfNeeded):
(Inspector::RemoteInspector::xpcConnectionFailed):
(Inspector::RemoteInspector::listingForInspectionTarget):
(Inspector::RemoteInspector::listingForAutomationTarget):
(Inspector::RemoteInspector::pushListingsNow):
(Inspector::RemoteInspector::pushListingsSoon):
(Inspector::RemoteInspector::updateHasActiveDebugSession):
(Inspector::RemoteInspector::receivedSetupMessage):
(Inspector::RemoteInspector::receivedDataMessage):
(Inspector::RemoteInspector::receivedDidCloseMessage):
(Inspector::RemoteInspector::receivedIndicateMessage):
(Inspector::RemoteInspector::receivedProxyApplicationSetupMessage):
(Inspector::RemoteInspector::receivedConnectionDiedMessage):
(Inspector::RemoteInspector::receivedAutomaticInspectionRejectMessage):
(Inspector::RemoteInspector::nextAvailableIdentifier): Deleted.

  • inspector/remote/RemoteInspectorConstants.h:
14:34 Changeset [196514] by bdakin@apple.com
  • 2 edits in trunk/Source/WebKit2

REGRESSION: Link preview is slow and unreliable
https://bugs.webkit.org/show_bug.cgi?id=154197
-and corresponding-
rdar://problem/24428064

Reviewed by Tim Horton.

This patch rolls http://trac.webkit.org/changeset/187471 back in. That was
how we fixed this problem ages ago. We rolled it out because it very
mysteriously seemed to cause a memory regression, but we want to track that
separately and not leave this performance regression in its place in the
meantime.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::updateViewState):
(WebKit::WebPageProxy::dispatchViewStateChange):
(WebKit::WebPageProxy::updateActivityToken):

14:32 Changeset [196513] by benjamin@webkit.org
  • 18 edits in trunk/Source/JavaScriptCore

[JSC] On x86, improve the selection of which value are selected for the UseDef part of commutative operations
https://bugs.webkit.org/show_bug.cgi?id=154151

Reviewed by Filip Pizlo.

Previously, when an instruction destroy an argument with
a UseDef use, we would try to pick a good target for the UseDef
while doing instruction selection.

For example:

@x = Add(@1, @2)

can be lowered to:

Move @1 Tmp3
Add @2 Tmp3

or

Move @2 Tmp3
Add @1 Tmp3

The choice of which value ends up copied is done by preferRightForResult()
at lowering time.

There are two common problems with the code we generate:
1) It is based on UseCount. If a value is at its last use,

it is a good target for coalescing even with a use-count > 1.

2) When both values are at their last use, the best choice

depends on the register pressure of each. We don't have that information
until we do register allocation.

This patch implements a simple idea to minimize how many of those Moves are needed.
Each commutative operation gets a 3 op variant. The register allocator then attempts
to alias *both* of them to the destination.
Since our aliasing is conservative, it removes as many copy as possible without causing
spilling.

There was an unexpected cool impovement too. If you have:

Move Tmp1, Tmp2
BranchAdd32 Tmp3, Tmp2

we would previously restore Tmp2 by substracting Tmp3 from the result.
We can now just use Tmp1. That removes quite a few Sub from the slow paths.

The problem is that simple idea uncoverred a bunch of issues that had to be fixed too.
I detail them inline below.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::and64):

  • assembler/MacroAssemblerX86Common.h:

Most addition are adding an Address version of the 3 operands opcodes.
The reason for this is allow the complex addressing forms of instructions
when spilling.

(JSC::MacroAssemblerX86Common::and32):
(JSC::MacroAssemblerX86Common::mul32):
(JSC::MacroAssemblerX86Common::or32):
(JSC::MacroAssemblerX86Common::xor32):
(JSC::MacroAssemblerX86Common::moveDouble):
This was an unexpected discovery: removing tons of Move32 made floating-point heavy
code much slower.

It turns out the MoveDouble we were using has partial register dependencies.

The x86 optimization manual, Chapter 3, section 3.4.1.13 lists the move instructions executed
directly on the frontend. That's what we use now.

(JSC::MacroAssemblerX86Common::addDouble):
(JSC::MacroAssemblerX86Common::addFloat):
(JSC::MacroAssemblerX86Common::mulDouble):
(JSC::MacroAssemblerX86Common::mulFloat):
(JSC::MacroAssemblerX86Common::andDouble):
(JSC::MacroAssemblerX86Common::andFloat):
(JSC::MacroAssemblerX86Common::xorDouble):
(JSC::MacroAssemblerX86Common::xorFloat):
If the destination is not aliased, the version taking an address
use LoadFloat/LoadDouble instead of direct addressing.

That is because this:

Move Tmp1, Tmp2
Op [Tmp3], Tmp2

is slower than

Move [Tmp3] Tmp2
Op Tmp1, Tmp2

(sometimes significantly).

I am not exactly sure why.

(JSC::MacroAssemblerX86Common::branchAdd32):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::and64):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::and64):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::and32):
(JSC::MacroAssemblerX86Common::mul32):
(JSC::MacroAssemblerX86Common::or32):
(JSC::MacroAssemblerX86Common::xor32):
(JSC::MacroAssemblerX86Common::moveDouble):
(JSC::MacroAssemblerX86Common::addDouble):
(JSC::MacroAssemblerX86Common::addFloat):
(JSC::MacroAssemblerX86Common::mulDouble):
(JSC::MacroAssemblerX86Common::mulFloat):
(JSC::MacroAssemblerX86Common::andDouble):
(JSC::MacroAssemblerX86Common::andFloat):
(JSC::MacroAssemblerX86Common::xorDouble):
(JSC::MacroAssemblerX86Common::xorFloat):
(JSC::MacroAssemblerX86Common::branchAdd32):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::and64):
(JSC::MacroAssemblerX86_64::mul64):
(JSC::MacroAssemblerX86_64::xor64):
(JSC::MacroAssemblerX86_64::branchAdd64):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::movapd_rr):
(JSC::X86Assembler::movaps_rr):

  • b3/B3CheckSpecial.cpp:

(JSC::B3::CheckSpecial::shouldTryAliasingDef):
(JSC::B3::CheckSpecial::generate):

  • b3/B3CheckSpecial.h:
  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::lower):

  • b3/air/AirCustom.h:

(JSC::B3::Air::PatchCustom::shouldTryAliasingDef):

  • b3/air/AirInst.h:
  • b3/air/AirInstInlines.h:

(JSC::B3::Air::Inst::shouldTryAliasingDef):

  • b3/air/AirIteratedRegisterCoalescing.cpp:

Aliasing the operands is done the same way as any coalescing.

There were problem with considering all those coalescing
as equivalent for the result.

Moves are mostly generated for Upsilon-Phis. Getting rid of
those tends to give better loops.

Sometimes, blocks have only Phis and a Jump. Coalescing
those moves gets rids of the block entirely.

Where it go interesting was that something like:

Move Tmp1, Tmp2
Op Tmp3, Tmp2

was significantly better than:

Op Tmp1, Tmp3
Move Tmp1, Tmp4

even in the same basic block.

To get back to the same performance when, I had to prioritize
regular Moves operations over argument coalescing.

Another argument for doing this is that the alias has a shorter
life in the hardware because the operation itself gets a new
virtual register from the bank.

  • b3/air/AirOpcode.opcodes:
  • b3/air/AirSpecial.cpp:

(JSC::B3::Air::Special::shouldTryAliasingDef):

  • b3/air/AirSpecial.h:
  • b3/testb3.cpp:

(JSC::B3::testCheckAddArgumentAliasing64):
(JSC::B3::testCheckAddArgumentAliasing32):
(JSC::B3::testCheckAddSelfOverflow64):
(JSC::B3::testCheckAddSelfOverflow32):
(JSC::B3::testCheckMulArgumentAliasing64):
(JSC::B3::testCheckMulArgumentAliasing32):
(JSC::B3::run):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::reifyInlinedCallFrames):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitSaveOrCopyCalleeSavesFor):
This ruined my week.

When regenerating the frame of an inlined function that
was called through a tail call, we were ignoring r13 for some reason.

Since this patch makes it more likely to increase the degree
of each Tmp, the number of register used increased and r13 was more
commonly used.

When getting out of OSRExit, we would have that value trashed :(

The fix is simply to restore it like the other two Baseline callee saved
register.

14:31 Changeset [196512] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Avoid including ESLint until it is used
https://bugs.webkit.org/show_bug.cgi?id=154196

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-02-12
Reviewed by Timothy Hatcher.

  • Scripts/copy-user-interface-resources.pl:

Do not include ESLint in optimized output yet.

  • UserInterface/Controllers/AnalyzerManager.js:

Do not reference eslint until we use it.

  • UserInterface/Main.html:

Remove include to ESLint until we need it.

14:30 Changeset [196511] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Get rid of a 6 year old compiler workaround
https://bugs.webkit.org/show_bug.cgi?id=154198

Reviewed by Sam Weinig.

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::connectToService):
(WebKit::createService):

14:22 Changeset [196510] by mmaxfield@apple.com
  • 12 edits
    3 adds in trunk/Source/WebCore

[CSS Font Loading] Implement CSSFontFace Boilerplate
https://bugs.webkit.org/show_bug.cgi?id=154145

Reviewed by Dean Jackson.

The CSS Font Loading spec[1] dictates that the FontFace object needs to have string
accessors and mutators for a bunch of properties. Our CSSFontFace object currently
contains this parsed information, but it isn't accessible via string-based methods.
This patch adds the necessary accessors and mutators, and migrates CSSFontSelector
to use these mutators where necessary.

There is more work to come on CSSFontFace; the next step is to create an .idl file
and hook it up to our CSSFontFace object. In this patch I have left some
unimplemented pieces (for example: where the spec dictates that some operation should
throw a JavaScript exception) which will be implemented in a follow-up patch. This
patch does not have any visible behavior change; I'm separating out the boilerplate
into this patch in order to ease reviewing burden.

This patch separates the externally-facing JavaScript API into a new class, FontFace.
This class owns a CSSFontFace, which provides the backing implementation. There will
be a system of shared ownership of these objects once FontFaceSet is implemented.

No new tests because there is no behavior change.

  • CMakeLists.txt: Add new files to CMake builds.
  • WebCore.vcxproj/WebCore.vcxproj: Ditto for Windows.
  • WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
  • WebCore.xcodeproj/project.pbxproj: Ditto for Cocoa.
  • css/CSSAllInOne.cpp: Ditto for All-In-One builds.
  • css/CSSFontFace.cpp: Move shared code from CSSFontSelector into CSSFontFace.

(WebCore::CSSFontFace::CSSFontFace):
(WebCore::CSSFontFace::~CSSFontFace):
(WebCore::CSSFontFace::setFamilies):
(WebCore::CSSFontFace::setStyle):
(WebCore::CSSFontFace::setWeight):
(WebCore::CSSFontFace::setUnicodeRange):
(WebCore::CSSFontFace::setVariantLigatures):
(WebCore::CSSFontFace::setVariantPosition):
(WebCore::CSSFontFace::setVariantCaps):
(WebCore::CSSFontFace::setVariantNumeric):
(WebCore::CSSFontFace::setVariantAlternates):
(WebCore::CSSFontFace::setVariantEastAsian):
(WebCore::CSSFontFace::setFeatureSettings):

  • css/CSSFontFace.h: Clean up.

(WebCore::CSSFontFace::create):
(WebCore::CSSFontFace::families):
(WebCore::CSSFontFace::traitsMask):
(WebCore::CSSFontFace::featureSettings):
(WebCore::CSSFontFace::variantSettings):
(WebCore::CSSFontFace::setVariantSettings):
(WebCore::CSSFontFace::setTraitsMask):
(WebCore::CSSFontFace::isLocalFallback):
(WebCore::CSSFontFace::addRange): Deleted.
(WebCore::CSSFontFace::insertFeature): Deleted.
(WebCore::CSSFontFace::setVariantCommonLigatures): Deleted.
(WebCore::CSSFontFace::setVariantDiscretionaryLigatures): Deleted.
(WebCore::CSSFontFace::setVariantHistoricalLigatures): Deleted.
(WebCore::CSSFontFace::setVariantContextualAlternates): Deleted.
(WebCore::CSSFontFace::setVariantPosition): Deleted.
(WebCore::CSSFontFace::setVariantCaps): Deleted.
(WebCore::CSSFontFace::setVariantNumericFigure): Deleted.
(WebCore::CSSFontFace::setVariantNumericSpacing): Deleted.
(WebCore::CSSFontFace::setVariantNumericFraction): Deleted.
(WebCore::CSSFontFace::setVariantNumericOrdinal): Deleted.
(WebCore::CSSFontFace::setVariantNumericSlashedZero): Deleted.
(WebCore::CSSFontFace::setVariantAlternates): Deleted.
(WebCore::CSSFontFace::setVariantEastAsianVariant): Deleted.
(WebCore::CSSFontFace::setVariantEastAsianWidth): Deleted.
(WebCore::CSSFontFace::setVariantEastAsianRuby): Deleted.
(WebCore::CSSFontFace::CSSFontFace): Deleted.

  • css/CSSFontSelector.cpp: Migrate shared code into CSSFontFace, and udpate

to use the new API.
(WebCore::appendSources):
(WebCore::registerLocalFontFacesForFamily):
(WebCore::CSSFontSelector::addFontFaceRule):
(WebCore::computeTraitsMask): Deleted.
(WebCore::createFontFace): Deleted.

  • css/FontFace.cpp: Added. External JavaScript API. Owns a CSSFontFace.

(WebCore::FontFace::FontFace):
(WebCore::FontFace::~FontFace):
(WebCore::parseString):
(WebCore::FontFace::setFamily):
(WebCore::FontFace::setStyle):
(WebCore::FontFace::setWeight):
(WebCore::FontFace::setStretch):
(WebCore::FontFace::setUnicodeRange):
(WebCore::FontFace::setVariant):
(WebCore::FontFace::setFeatureSettings):
(WebCore::FontFace::family):
(WebCore::FontFace::style):
(WebCore::FontFace::weight):
(WebCore::FontFace::stretch):
(WebCore::FontFace::unicodeRange):
(WebCore::FontFace::variant):
(WebCore::FontFace::featureSettings):

  • css/FontFace.h: Added. Ditto.

(WebCore::FontFace::create):

  • css/FontVariantBuilder.cpp: Added. Moved code here from FontVariantBuilder.h.

Refactored to support a new client (CSSFontFace).
(WebCore::extractFontVariantLigatures):
(WebCore::extractFontVariantNumeric):
(WebCore::extractFontVariantEastAsian):
(WebCore::computeFontVariant):

  • css/FontVariantBuilder.h: Moved code from here into FontVariantBuilder.cpp.

(WebCore::applyValueFontVariantLigatures): Deleted.
(WebCore::applyValueFontVariantNumeric): Deleted.
(WebCore::applyValueFontVariantEastAsian): Deleted.

  • css/StyleBuilderCustom.h: Update for new FontVariantBuilder API.

(WebCore::StyleBuilderCustom::applyValueFontVariantLigatures):
(WebCore::StyleBuilderCustom::applyValueFontVariantNumeric):
(WebCore::StyleBuilderCustom::applyValueFontVariantEastAsian):

  • platform/text/TextFlags.h: Provide convenience classes.

(WebCore::FontVariantLigaturesValues::FontVariantLigaturesValues):
(WebCore::FontVariantNumericValues::FontVariantNumericValues):
(WebCore::FontVariantEastAsianValues::FontVariantEastAsianValues):

14:17 Changeset [196509] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix after r196506; publish MediaResourceLoader.h as a private header so it can be used by
TestWebKitAPI.

  • WebCore.xcodeproj/project.pbxproj:
14:15 Changeset [196508] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Tabs: Conflicts with multiple Formatters per SourceCode
https://bugs.webkit.org/show_bug.cgi?id=144717
<rdar://problem/20845163>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-02-12
Reviewed by Timothy Hatcher.

The underlying issue here is that each tab may create its own ContentView,
and therefore SourceCodeTextEditor, per-SourceCode. Each SourceCodeTextEditor
was mutating the SourceCode's state without listening for or expecting
updates from the other. This causes a bunch of different issues:

  • editing in one tab does not get reflected in another tab for the same resource. This is common when using the Search tab to find and make an edit, then debug in another tab.
  • one tab may auto format (pretty print) a resource and set the formatter on the SourceCode to make SourceCodeLocations know about formatted locations. However, a jump to location that opens a new ContentView for the same Resource will start out un-formatted, and misunderstand the location. This often results in an unexpected jump to 0:0.

The solution taken by this change is to have a single ContentView
per represented object. When that ContentView gets shown in a new
ContentViewContainer it gets transferred, leaving a tombstone in the
previous ContentViewContainer that can be revived later. This keeps
back foward lists with expected values. It also means there is a
single ContentView that doesn't need to worry about having the
state of its represented object getting overrun.

Currently this makes the assumption that we won't ever show multiple
ContentViews for the same represented object at the same time. This
may need to change if we were to support split pane editor or
something like that.

This also makes the assumption that ContentViewContainer's showEntry
and hideEntry do not modify the back forward list. That has not been
the case, and I think it is safe to assume it will never be the case.

The contracts this patch maintains:

  • a ContentView is always owned by one ViewContainer. This ViewContainer is the one showing the ContentView.
  • when another ViewContainer wants to share the ContentView ownership is transferred. Creating tombstones in the old ViewContainer and Reviving tombstones in the new ViewContainer.
  • ViewContainer's have a tombstone per-BackForwardEntry that references the ContentView.
  • In order to ensure a ContentView always gets closed, when the owning ViewContainer would close the ContentView it checks if it should instead transfer ownership of the ContentView to another interested ViewContainer.

This also maintains the contract that a ContentView should only be
closed once. When the ContentView is transferred between two
ContentViewContainers it should hide/show from the old to the new.
The last ContentViewContainer to reference a ContentView should
be the one to close the ContentView.

  • UserInterface/Models/BackForwardEntry.js:

(WebInspector.BackForwardEntry):
(WebInspector.BackForwardEntry.prototype.get tombstone):
(WebInspector.BackForwardEntry.prototype.set tombstone):
(WebInspector.BackForwardEntry.prototype.prepareToShow):
(WebInspector.BackForwardEntry.prototype.prepareToHide):
Tombstone state and assertions that we don't show/hide tombstones,
that should all be done before a back forward entry has become a tombstone.

  • UserInterface/Views/ContentView.js:

(WebInspector.ContentView.contentViewForRepresentedObject):
(WebInspector.ContentView.closedContentViewForRepresentedObject):
(WebInspector.ContentView.resolvedRepresentedObjectForRepresentedObject):
Helpers for getting / creating / clearing the single ContentView that
is associated with a represented object.

  • UserInterface/Views/ContentViewContainer.js:

(WebInspector.ContentViewContainer.prototype.contentViewForRepresentedObject):
(WebInspector.ContentViewContainer.prototype.showContentView):
Eliminate code that dealt with multiple content views per represented object.
That is replaced by multiple ContentViewContainers per ContentView.

(WebInspector.ContentViewContainer.prototype.replaceContentView):
This is called in special places where we don't need to worry about a tombstone.
It is an in replace of a content view.

(WebInspector.ContentViewContainer.closeAllContentViewsOfPrototype):
(WebInspector.ContentViewContainer.prototype.closeContentView):
(WebInspector.ContentViewContainer.prototype.closeAllContentViews):
(WebInspector.ContentViewContainer.prototype._disassociateFromContentView):
Deal with closing BackForwardEntrys that are tombstones.

(WebInspector.ContentViewContainer.prototype._takeOwnershipOfContentView):
(WebInspector.ContentViewContainer.prototype._placeTombstonesForContentView):
(WebInspector.ContentViewContainer.prototype._clearTombstonesForContentView):
Helpers for transfering ownership of a ContentView to a ContentViewContainer.
There is always one owner of the ContentView. Non-owners have tombstone
BackForward entries.

(WebInspector.ContentViewContainer.prototype._showEntry):
If we are showing a tombstone, gain ownership.

(WebInspector.ContentViewContainer.prototype._hideEntry):
This may happen in closing, for simplicity we bail here instead of include
messy logic at the call site. We would have already hidden this entry
when making it a tombstone.

14:13 Changeset [196507] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix ASan build.

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::copyASanDynamicLibraryPath): Deleted.

14:13 Changeset [196506] by jer.noble@apple.com
  • 7 edits in trunk

[Mac] Adopt MediaResourceLoader (instead of CachedResourceLoader) in WebCoreNSURLSession.
https://bugs.webkit.org/show_bug.cgi?id=154136

Reviewed by Alex Christensen.

Source/WebCore:

MediaResourceLoader already supports using CORS attribute to verify CORS access requirements
when loading media resources, so use it, rather than CachedResourceLoader, as the backing for
WebCoreNSURLSession.

  • platform/network/cocoa/WebCoreNSURLSession.h:
  • platform/network/cocoa/WebCoreNSURLSession.mm:

(-[WebCoreNSURLSession delegateQueue]):
(-[WebCoreNSURLSession streamTaskWithNetService:]):
(-[WebCoreNSURLSession isKindOfClass:]):
(-[WebCoreNSURLSessionDataTask initWithSession:identifier:request:]):
(-[WebCoreNSURLSessionDataTask _restart]):
(-[WebCoreNSURLSessionDataTask _cancel]):
(-[WebCoreNSURLSessionDataTask resume]):
(-[WebCoreNSURLSessionDataTask _timingData]):
(-[WebCoreNSURLSessionDataTask resource:receivedResponse:]):
(-[WebCoreNSURLSessionDataTask resource:receivedData:length:]):
(-[WebCoreNSURLSession initWithResourceLoader:delegate:delegateQueue:]): Deleted.
(-[WebCoreNSURLSession loader]): Deleted.
(WebCore::WebCoreNSURLSessionDataTaskClient::dataSent): Deleted.
(WebCore::WebCoreNSURLSessionDataTaskClient::responseReceived): Deleted.
(WebCore::WebCoreNSURLSessionDataTaskClient::dataReceived): Deleted.
(WebCore::WebCoreNSURLSessionDataTaskClient::redirectReceived): Deleted.
(WebCore::WebCoreNSURLSessionDataTaskClient::notifyFinished): Deleted.
(-[WebCoreNSURLSessionDataTask initWithSession:identifier:URL:]): Deleted.
(-[WebCoreNSURLSessionDataTask _finish]): Deleted.
(-[WebCoreNSURLSessionDataTask _setDefersLoading:]): Deleted.
(-[WebCoreNSURLSessionDataTask resource:sentBytes:totalBytesToBeSent:]): Deleted.
(-[WebCoreNSURLSessionDataTask resource:receivedRedirect:request:]): Deleted.
(-[WebCoreNSURLSessionDataTask resourceFinished:]): Deleted.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):

Tools:

Use a MediaResourceLoader instead of a CachedResourceLoader for WebCoreNSURLSession.

Drive-by fix: generate USE and ENABLE macros for TestWebKitAPI by adding FEATURE_DEFINES
to GCC_PREPROCESSOR_DEFINES.

  • TestWebKitAPI/Configurations/Base.xcconfig:
  • TestWebKitAPI/Tests/WebCore/WebCoreNSURLSession.mm:

(TestWebKitAPI::WebCoreNSURLSessionTest::SetUp):
(TestWebKitAPI::WebCoreNSURLSessionTest::TearDown):
(TestWebKitAPI::TEST_F):

14:04 Changeset [196505] by andersca@apple.com
  • 15 edits
    3 deletes in trunk/Source/WebKit2

Remove NPAPI for showing preference panes
https://bugs.webkit.org/show_bug.cgi?id=154193

Reviewed by Dan Bernstein.

No plug-ins ended up adopting this API, so there's no point in keeping it around.

  • PluginProcess/PluginControllerProxy.h:
  • PluginProcess/mac/PluginControllerProxyMac.mm:

(WebKit::PluginControllerProxy::openPluginPreferencePane): Deleted.

  • Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:

(WebKit::NetscapePluginModule::getPluginInfo): Deleted.

  • Shared/Plugins/PluginModuleInfo.h:
  • UIProcess/Plugins/PluginProcessProxy.h:
  • UIProcess/Plugins/PluginProcessProxy.messages.in:
  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm:

(WebKit::PluginProcessProxy::openPluginPreferencePane): Deleted.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:

(WebKit::NPN_GetValue): Deleted.

  • WebProcess/Plugins/Netscape/NetscapePlugin.h:
  • WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:

(WebKit::NetscapePlugin::openPluginPreferencePane): Deleted.
(WebKit::NetscapePlugin::plugInContainer): Deleted.
(WebKit::NetscapePlugin::platformDestroy): Deleted.

  • WebProcess/Plugins/Netscape/mac/WKNPAPIPlugInContainer.h: Removed.
  • WebProcess/Plugins/Netscape/mac/WKNPAPIPlugInContainer.mm: Removed.

(-[WKNPAPIPlugInContainer dealloc]): Deleted.
(-[WKNPAPIPlugInContainer _invalidate]): Deleted.
(-[WKNPAPIPlugInContainer openPlugInPreferencePane]): Deleted.

  • WebProcess/Plugins/Netscape/mac/WKNPAPIPlugInContainerInternal.h: Removed.
  • WebProcess/Plugins/PluginController.h:
  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::openPluginPreferencePane): Deleted.

  • WebProcess/Plugins/PluginView.h:
13:54 Changeset [196504] by bshafiei@apple.com
  • 2 edits in tags/Safari-602.1.18.9/Source/WebKit

Merged r196502. rdar://problem/24635219

13:52 Changeset [196503] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix non-internal builds when using NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=152285

  • platform/spi/cf/CFNetworkSPI.h:

Add SPI declaration used in r194156.

13:43 Changeset [196502] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix internal Windows WebKit debug build.
rdar://problem/24635219

  • PlatformWin.cmake:

We were making WebKit.dll instead of WebKit_debug.dll.

13:39 Changeset [196501] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Remove PowerPC cruft
https://bugs.webkit.org/show_bug.cgi?id=154191

Reviewed by Dan Bernstein.

  • Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:

(WebKit::getPluginArchitecture): Deleted.

13:25 Changeset [196500] by andersca@apple.com
  • 11 edits
    1 delete in trunk/Source/WebKit2

Remove more unneeded process launching code
https://bugs.webkit.org/show_bug.cgi?id=154190

Reviewed by Tim Horton.

  • UIProcess/Databases/DatabaseProcessProxy.cpp:

(WebKit::DatabaseProcessProxy::getLaunchOptions): Deleted.

  • UIProcess/Databases/mac/DatabaseProcessProxyMac.mm: Removed.

(WebKit::DatabaseProcessProxy::platformGetLaunchOptions): Deleted.

  • UIProcess/Launcher/ProcessLauncher.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::getLaunchOptions): Deleted.

  • UIProcess/Network/mac/NetworkProcessProxyMac.mm:

(WebKit::NetworkProcessProxy::platformGetLaunchOptions): Deleted.

  • UIProcess/Plugins/PluginProcessProxy.h:
  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm:

(WebKit::PluginProcessProxy::pluginNeedsExecutableHeap): Deleted.
(WebKit::PluginProcessProxy::platformGetLaunchOptions): Deleted.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getLaunchOptions): Deleted.

  • UIProcess/mac/WebProcessProxyMac.mm:

(WebKit::WebProcessProxy::platformGetLaunchOptions): Deleted.

  • WebKit2.xcodeproj/project.pbxproj:
13:11 Changeset [196499] by andersca@apple.com
  • 8 edits in trunk/Source/WebKit2

Use different process types for 32-bit and 64-bit plug-ins
https://bugs.webkit.org/show_bug.cgi?id=154186

Reviewed by Tim Horton.

  • UIProcess/Databases/DatabaseProcessProxy.cpp:

(WebKit::DatabaseProcessProxy::getLaunchOptions):

  • UIProcess/Launcher/ProcessLauncher.h:
  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::serviceName):
(WebKit::shouldLeakBoost):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::getLaunchOptions):

  • UIProcess/Plugins/PluginProcessProxy.cpp:

(WebKit::PluginProcessProxy::getLaunchOptions): Deleted.

  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm:

(WebKit::PluginProcessProxy::platformGetLaunchOptions):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getLaunchOptions):

12:46 Changeset [196498] by utatane.tea@gmail.com
  • 20 edits
    4 adds in trunk

[ES6] Implement @@search
https://bugs.webkit.org/show_bug.cgi?id=143889

Reviewed by Darin Adler.

Source/JavaScriptCore:

Implement RegExp.prototype[@@search].
In ES6, String.prototype.search delegates the actual matching to it
instead of executing RegExp matching inside String.prototype.search method itself.
By customizing @@search method, we can change the behavior of String.prototype.search for
derived / customized RegExp object.

  • CMakeLists.txt:
  • DerivedSources.make:
  • builtins/BuiltinNames.h:

(JSC::BuiltinNames::BuiltinNames): Deleted.

  • builtins/BuiltinUtils.h:
  • builtins/StringPrototype.js:

(search):

  • bytecode/BytecodeIntrinsicRegistry.cpp:

(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):

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

(JSC::JSGlobalObject::init):

  • runtime/RegExpPrototype.cpp:

(JSC::RegExpPrototype::finishCreation):
(JSC::regExpProtoFuncSearch):

  • runtime/RegExpPrototype.h:

(JSC::RegExpPrototype::create):

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::getOwnPropertySlot):
(JSC::StringPrototype::finishCreation): Deleted.
(JSC::stringProtoFuncSearch): Deleted.

  • runtime/StringPrototype.h:
  • tests/es6.yaml:
  • tests/stress/regexp-search.js: Added.

(shouldBe):
(shouldThrow):
(errorKey.toString):
(primitive.of.primitives.shouldThrow):
(testRegExpSearch):
(testSearch):
(testBoth):
(alwaysUnmatch):

LayoutTests:

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/dom/string-prototype-properties-expected.txt:
  • js/regress/script-tests/v8-regexp-search.js: Added.

(runRegExpBenchmark.runBlock0):
(runRegExpBenchmark.runBlock1):
(runRegExpBenchmark):
(runRegExpBenchmark.runBlock3):
(runRegExpBenchmark.runBlock4):

  • js/regress/v8-regexp-search-expected.txt: Added.
  • js/regress/v8-regexp-search.html: Added.
  • js/script-tests/Object-getOwnPropertyNames.js:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T3-expected.txt:
12:44 Changeset [196497] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

AdaptiveInferredPropertyValueWatchpoint can trigger a GC that frees its CodeBlock and thus itself
https://bugs.webkit.org/show_bug.cgi?id=154146

Reviewed by Filip Pizlo.

Consider the following: there is some CodeBlock, C, that is watching some object, O, with a
structure, S, for replacements. Also, suppose that C has no references anymore and is due to
be GCed. Now, when some new property is added to O, S will create a new structure S' and
fire its transition watchpoints. Since C is watching S for replacements it will attempt to
have its AdaptiveInferredPropertyValueWatchpoint relocate itself to S'. To do so, it needs
it allocate RareData on S'. This allocation may cause a GC, which frees C while still
executing its watchpoint handler. The solution to this is to defer GC while running
AdaptiveInferredPropertyValueWatchpointBase handlers.

  • bytecode/AdaptiveInferredPropertyValueWatchpointBase.cpp:

(JSC::AdaptiveInferredPropertyValueWatchpointBase::fire):

12:31 Changeset [196496] by bdakin@apple.com
  • 5 edits in trunk/Source/WebKit2

Re-name isClickableElement in InteractionInformationAtPosition to isElement
https://bugs.webkit.org/show_bug.cgi?id=154179

Reviewed by Enrica Casucci.

The bool is set for all elements, so it’s just confusing to call it a
clickableElement instead of just element.

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode):
(WebKit::InteractionInformationAtPosition::decode):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView gestureRecognizerShouldBegin:]):
(-[WKContentView _highlightLongPressRecognized:]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPositionInformation):

12:22 Changeset [196495] by akling@apple.com
  • 2 edits in trunk/Source/WebCore

Throw out all live resource decoded data on memory pressure / suspension.
<https://webkit.org/b/154176>

Reviewed by Antti Koivisto.

When pruning live resource decoded data from the memory cache,
we normally avoid pruning anything that's been painted in the last second.
This is an optimization to avoid getting into image decoding loops.

For memory pressure / process suspension scenarios this doesn't really
make sense though:

  • In the pressure case, if we have to render again soon it'll likely be a new GIF frame which we have to decode anyway.
  • In the process suspension case, we might *never* render again, so we should be good citizens and drop all the decoded data we can.

This patch makes us drop all the decoded data, recently painted or not.

  • platform/MemoryPressureHandler.cpp:

(WebCore::MemoryPressureHandler::releaseCriticalMemory):

12:20 Changeset [196494] by barraclough@apple.com
  • 6 edits in trunk/Source

Separate out !allowsAccess path in JSDOMWindowCustom getOwnPropertySlot
https://bugs.webkit.org/show_bug.cgi?id=154156

Reviewed by Chris Dumez.

Source/JavaScriptCore:

  • runtime/CommonIdentifiers.h:
    • added new property names, needed by jsDOMWindowGetOwnPropertySlotDisallowAccess.

Source/WebCore:

JSDOMWindowCustom getOwnPropertySlot currently allows cross-origin access to all
static properties, relying on the property to perform the access check. This is
a little insecure, since it is error prone - someone could easily add a property
to the static table without realizing it would be automatcially exposed.

Instead, add a hard-coded filter to restrict access. As a future implementation
we might consider autogenerating this (the properties are already tagged in IDL,
we might be able to track this in a flag on the static table).

By separating out the handling of the same- and cross-origin access we can
simplify & make the policy being enforced much clearer.

  • bindings/js/JSDOMBinding.cpp:

(WebCore::objectToStringFunctionGetter): Deleted.

  • removed objectToStringFunctionGetter - this duplicated functionality of nonCachingStaticFunctionGetter.
  • bindings/js/JSDOMBinding.h:

(WebCore::objectToStringFunctionGetter): Deleted.

  • removed objectToStringFunctionGetter - this duplicated functionality of nonCachingStaticFunctionGetter.
  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowGetOwnPropertySlotDisallowAccess):

  • explicitly handle providing access to only the things we do want to allow cross-origin.

(WebCore::JSDOMWindow::getOwnPropertySlot):
(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):

  • push all !allowsAccess handling to jsDOMWindowGetOwnPropertySlotDisallowAccess

(WebCore::childFrameGetter): Deleted.

  • this was just a deoptimiztion - moving access into a callback saved very little & caused more work to be duplicated.
12:17 Changeset [196493] by andersca@apple.com
  • 3 edits in trunk/Source/WebKit2

Remove more unused process launcher code
https://bugs.webkit.org/show_bug.cgi?id=154181

Reviewed by Tim Horton.

  • UIProcess/Launcher/ProcessLauncher.cpp:

(WebKit::ProcessLauncher::processTypeAsString): Deleted.
(WebKit::ProcessLauncher::getProcessTypeFromString): Deleted.

  • UIProcess/Launcher/ProcessLauncher.h:
12:15 Changeset [196492] by sukolsak@gmail.com
  • 122 edits
    2 adds in trunk/Source

Update ICU header files to version 52
https://bugs.webkit.org/show_bug.cgi?id=154160

Reviewed by Alex Christensen.

Update ICU header files to version 52 to allow the use of newer APIs.

Source/JavaScriptCore:

  • icu/unicode/localpointer.h:
  • icu/unicode/platform.h:
  • icu/unicode/ptypes.h:
  • icu/unicode/putil.h:
  • icu/unicode/ucal.h:
  • icu/unicode/uchar.h:
  • icu/unicode/ucnv.h:
  • icu/unicode/ucol.h:
  • icu/unicode/uconfig.h:
  • icu/unicode/udat.h:
  • icu/unicode/udatpg.h:
  • icu/unicode/udisplaycontext.h: Added.
  • icu/unicode/uenum.h:
  • icu/unicode/uformattable.h: Added.
  • icu/unicode/uiter.h:
  • icu/unicode/uloc.h:
  • icu/unicode/umachine.h:
  • icu/unicode/unorm2.h:
  • icu/unicode/unum.h:
  • icu/unicode/urename.h:
  • icu/unicode/uscript.h:
  • icu/unicode/uset.h:
  • icu/unicode/ustring.h:
  • icu/unicode/utf.h:
  • icu/unicode/utf16.h:
  • icu/unicode/utf8.h:
  • icu/unicode/utf_old.h:
  • icu/unicode/utypes.h:
  • icu/unicode/uvernum.h:
  • icu/unicode/uversion.h:

Source/WebCore:

No new tests because there is no behavior change.

  • icu/unicode/bytestream.h:
  • icu/unicode/chariter.h:
  • icu/unicode/localpointer.h:
  • icu/unicode/platform.h:
  • icu/unicode/ptypes.h:
  • icu/unicode/putil.h:
  • icu/unicode/rep.h:

(Replaceable::Replaceable):

  • icu/unicode/std_string.h:
  • icu/unicode/strenum.h:
  • icu/unicode/stringpiece.h:
  • icu/unicode/ubrk.h:
  • icu/unicode/uchar.h:
  • icu/unicode/ucnv.h:
  • icu/unicode/ucol.h:
  • icu/unicode/ucoleitr.h:
  • icu/unicode/uconfig.h:
  • icu/unicode/ucsdet.h:
  • icu/unicode/uenum.h:
  • icu/unicode/uidna.h:
  • icu/unicode/uiter.h:
  • icu/unicode/uloc.h:
  • icu/unicode/umachine.h:
  • icu/unicode/unistr.h:

(UnicodeString::UnicodeString):
(UnicodeString::operator== ):
(UnicodeString::startsWith):
(UnicodeString::setTo):
(UnicodeString::remove):
(UnicodeString::replace): Deleted.
(UnicodeString::extract): Deleted.
(UnicodeString::char32At): Deleted.
(UnicodeString::getChar32Start): Deleted.
(UnicodeString::getChar32Limit): Deleted.
(UnicodeString::getTerminatedBuffer): Deleted.
(UnicodeString::append): Deleted.
(UnicodeString::truncate): Deleted.

  • icu/unicode/unorm2.h:
  • icu/unicode/uobject.h:
  • icu/unicode/urename.h:
  • icu/unicode/uscript.h:
  • icu/unicode/usearch.h:
  • icu/unicode/uset.h:
  • icu/unicode/ushape.h:
  • icu/unicode/ustring.h:
  • icu/unicode/utext.h:
  • icu/unicode/utf.h:
  • icu/unicode/utf16.h:
  • icu/unicode/utf8.h:
  • icu/unicode/utf_old.h:
  • icu/unicode/utypes.h:
  • icu/unicode/uvernum.h:
  • icu/unicode/uversion.h:

Source/WebKit/mac:

  • icu/unicode/localpointer.h:
  • icu/unicode/platform.h:
  • icu/unicode/ptypes.h:
  • icu/unicode/putil.h:
  • icu/unicode/uchar.h:
  • icu/unicode/uconfig.h:
  • icu/unicode/uidna.h:
  • icu/unicode/uiter.h:
  • icu/unicode/umachine.h:
  • icu/unicode/unorm2.h:
  • icu/unicode/urename.h:
  • icu/unicode/uscript.h:
  • icu/unicode/ustring.h:
  • icu/unicode/utf.h:
  • icu/unicode/utf16.h:
  • icu/unicode/utf8.h:
  • icu/unicode/utf_old.h:
  • icu/unicode/utypes.h:
  • icu/unicode/uvernum.h:
  • icu/unicode/uversion.h:

Source/WTF:

  • icu/unicode/bytestream.h:
  • icu/unicode/localpointer.h:
  • icu/unicode/platform.h:
  • icu/unicode/ptypes.h:
  • icu/unicode/putil.h:
  • icu/unicode/rep.h:

(Replaceable::Replaceable):

  • icu/unicode/std_string.h:
  • icu/unicode/strenum.h:
  • icu/unicode/stringpiece.h:
  • icu/unicode/uchar.h:
  • icu/unicode/ucnv.h:
  • icu/unicode/ucol.h:
  • icu/unicode/uconfig.h:
  • icu/unicode/uenum.h:
  • icu/unicode/uiter.h:
  • icu/unicode/uloc.h:
  • icu/unicode/umachine.h:
  • icu/unicode/unistr.h:

(UnicodeString::UnicodeString):
(UnicodeString::operator== ):
(UnicodeString::startsWith):
(UnicodeString::setTo):
(UnicodeString::remove):
(UnicodeString::replace): Deleted.
(UnicodeString::extract): Deleted.
(UnicodeString::char32At): Deleted.
(UnicodeString::getChar32Start): Deleted.
(UnicodeString::getChar32Limit): Deleted.
(UnicodeString::getTerminatedBuffer): Deleted.
(UnicodeString::append): Deleted.
(UnicodeString::truncate): Deleted.

  • icu/unicode/unorm2.h:
  • icu/unicode/uobject.h:
  • icu/unicode/urename.h:
  • icu/unicode/uscript.h:
  • icu/unicode/uset.h:
  • icu/unicode/ustring.h:
  • icu/unicode/utf.h:
  • icu/unicode/utf16.h:
  • icu/unicode/utf8.h:
  • icu/unicode/utf_old.h:
  • icu/unicode/utypes.h:
  • icu/unicode/uvernum.h:
  • icu/unicode/uversion.h:
11:58 Changeset [196491] by andersca@apple.com
  • 10 edits in trunk/Source/WebKit2

Remove more unused process launching code
https://bugs.webkit.org/show_bug.cgi?id=154178

Reviewed by Tim Horton.

  • UIProcess/Databases/mac/DatabaseProcessProxyMac.mm:

(WebKit::shouldUseXPC): Deleted.
(WebKit::DatabaseProcessProxy::platformGetLaunchOptions): Deleted.

  • UIProcess/Launcher/ProcessLauncher.h:
  • UIProcess/Launcher/mac/EnvironmentVariables.cpp:

(WebKit::EnvironmentVariables::preexistingProcessServiceNameKey): Deleted.
(WebKit::EnvironmentVariables::preexistingProcessTypeKey): Deleted.

  • UIProcess/Launcher/mac/EnvironmentVariables.h:
  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::launchProcess):
(WebKit::setUpTerminationNotificationHandler): Deleted.
(WebKit::addDYLDEnvironmentAdditions): Deleted.
(WebKit::tryPreexistingProcess): Deleted.
(WebKit::createProcess): Deleted.

  • UIProcess/Network/mac/NetworkProcessProxyMac.mm:

(WebKit::shouldUseXPC): Deleted.
(WebKit::NetworkProcessProxy::platformGetLaunchOptions): Deleted.

  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm:

(WebKit::PluginProcessProxy::platformGetLaunchOptions): Deleted.

  • UIProcess/ios/WebProcessProxyIOS.mm:

(WebKit::WebProcessProxy::platformGetLaunchOptions): Deleted.

  • UIProcess/mac/WebProcessProxyMac.mm:

(WebKit::shouldUseXPC): Deleted.
(WebKit::WebProcessProxy::platformGetLaunchOptions): Deleted.

11:50 Changeset [196490] by fpizlo@apple.com
  • 3 edits
    1 add in trunk/Source/JavaScriptCore

Fast path in JSObject::defineOwnIndexedProperty() forgets to check for the posibility of a descriptor that doesn't have a value
https://bugs.webkit.org/show_bug.cgi?id=154175
rdar://problem/24291497

Reviewed by Geoffrey Garen.

  • runtime/JSObject.cpp:

(JSC::JSObject::defineOwnIndexedProperty): Fix the bug.

  • runtime/SparseArrayValueMap.cpp:

(JSC::SparseArrayValueMap::putEntry): Catch the bug sooner in debug.
(JSC::SparseArrayValueMap::putDirect):

  • tests/stress/sparse-define-empty-descriptor.js: Added. This used to crash in release.
11:43 Changeset [196489] by bdakin@apple.com
  • 4 edits in trunk/Source/WebKit/mac

NSRangeIsRelativeTo should not have NS prefix
https://bugs.webkit.org/show_bug.cgi?id=154174

Reviewed by Tim Horton.

NSRangeIsRelativeTo -> WebRangeIsRelativeTo

  • WebView/WebFrame.mm:

(-[WebFrame _convertToDOMRange:]):
(-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]):

  • WebView/WebFrameInternal.h:
  • WebView/WebHTMLView.mm:

(-[WebHTMLView insertText:]):

11:28 Changeset [196488] by bburg@apple.com
  • 8 edits
    9 adds in trunk/Source/WebKit2

Add a WebKit SPI for creating an automation session and advertise the active session via RemoteInspector
https://bugs.webkit.org/show_bug.cgi?id=153934

Reviewed by Dan Bernstein and Joseph Pecoraro.

An automation session is the main place where WebKit support for user agent automation is implemented.
A session encapsulates the state (default timeouts, page identifier mappings), objects (active automation
WebPages) and logic (how to open a window, run JS, send user input, etc.) used to implement automation
commands.

A process pool can only have one session at a time. The session is created by the WebKit client in
response to a request that comes through _WKAutomationDelegate. When a session is set on the process pool,
it is advertised to remote drivers and debuggers as a RemoteControllableTarget. A remote driver can use
the existing RemoteInspector API to connect to the session and send it automation commands.

The session has a delegate so that WebKit clients can perform actions that are outside the scope of WebKit,
such as creating new tabs, enumerating windows, or sending native user inputs.

This patch adds AutomationSession classes at the API and implementation level in WebKit2. The
implementation class contains RemoteInspector support, which cannot be used directly by WebKit clients.
AutomationSessionDelegate classes exist at both the API and implementation level to bridge between
Objective-C delegates and C++ clients. All code related to RemoteInspector and RemoteAutomationTarget
must be guarded by ENABLE(REMOTE_INSPECTOR).

  • Shared/API/APIObject.h: Add new API type 'AutomationSession'.
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject): Allocate in the wrapper.

  • UIProcess/API/APIAutomationSessionClient.h: Added.

(API::AutomationSessionClient::~AutomationSessionClient):
(API::AutomationSessionClient::didRequestNewWindow): Delegate window creation to the client.

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _setAutomationSession:]): Keep at most one WebAutomationSession at a time.

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/API/Cocoa/_WKAutomationSession.h: Added.
  • UIProcess/API/Cocoa/_WKAutomationSession.mm: Added.

(-[_WKAutomationSession init]): Construct the API object in the implementation wrapper.
(-[_WKAutomationSession dealloc]): Clear the client before calling the implementation destructor.

(-[_WKAutomationSession sessionIdentifier]):
(-[_WKAutomationSession setSessionIdentifier:]):
Store the session identifier string in the implementation.

(-[_WKAutomationSession delegate]):
(-[_WKAutomationSession setDelegate:]):
Create an Objective-C adapter for the delegate if not nil and set it as the implementation's client.

(-[_WKAutomationSession _apiObject]):

  • UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h: Added.
  • UIProcess/API/Cocoa/_WKAutomationSessionInternal.h: Added.

(wrapper):

  • UIProcess/Cocoa/AutomationSessionClient.h: Added.

Set up the boilerplate for caching delegate method availability. It will include more methods later.

  • UIProcess/Cocoa/AutomationSessionClient.mm: Added. Forward requests to the SPI delegate.

(WebKit::AutomationSessionClient::AutomationSessionClient):
(WebKit::AutomationSessionClient::didRequestNewWindow): Delegate window creation to the client.

  • UIProcess/WebAutomationSession.cpp: Added.

(WebKit::WebAutomationSession::WebAutomationSession):
By default, a session should be available and not paired to any particular remote driver.

(WebKit::WebAutomationSession::~WebAutomationSession): Require callers to clear the client first.
(WebKit::WebAutomationSession::setClient):
(WebKit::WebAutomationSession::dispatchMessageFromRemote): Stub this out for now.

(WebKit::WebAutomationSession::connect):
(WebKit::WebAutomationSession::disconnect):
To prevent multiple connection attempts, mark the target as paired when a remote client has connected.

  • UIProcess/WebAutomationSession.h: Added.
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setAutomationSession):
Store the session object and tell it to register itself. Unregistering happens automatically
in RemoteControllableTarget::~RemoteControllableTarget.

  • UIProcess/WebProcessPool.h:
  • WebKit2.xcodeproj/project.pbxproj: Add files and headers.
11:18 Changeset [196487] by bshafiei@apple.com
  • 2 edits in tags/Safari-602.1.18.9/Source/WebKit

Merged r196462. rdar://problem/24622882

11:07 Changeset [196486] by bshafiei@apple.com
  • 3 edits in tags/Safari-602.1.18.9/Source/WebCore

Merged r196023. rdar://problem/24411911

11:06 Changeset [196485] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.18.9/Source

Versioning.

11:02 Changeset [196484] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.18.9

New tag.

10:34 Changeset [196483] by akling@apple.com
  • 9 edits in trunk/Source/WebCore

[Mac] BitmapImage::decodedDataIsPurgeable() is telling lies and causing massive memory usage.
<https://webkit.org/b/154172>

Reviewed by Antti Koivisto.

The underlying mechanism in CoreAnimation that made this work is no longer in place.

Instead of keeping purgeable frames and juggling volatility bits, we were simply caching
every single frame of large GIF animations, sometimes leading to monstrous memory usage.

Remove the code from WebCore since it's not doing at all what it means to.

Now iOS and Mac will behave the same again, and frame caching decisions will be
made by WebKit, based on total pixel byte size.

  • loader/cache/CachedImage.h:
  • loader/cache/CachedResource.h:

(WebCore::CachedResource::decodedDataIsPurgeable): Deleted.

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::pruneLiveResourcesToSize): Deleted.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::decodedDataIsPurgeable): Deleted.
(WebCore::BitmapImage::destroyDecodedDataIfNecessary): Deleted.

  • platform/graphics/BitmapImage.h:
  • platform/graphics/Image.h:

(WebCore::Image::decodedDataIsPurgeable): Deleted.

  • platform/graphics/cg/BitmapImageCG.cpp:

(WebCore::BitmapImage::decodedDataIsPurgeable): Deleted.

  • platform/graphics/cg/ImageSourceCG.cpp:

(WebCore::ImageSource::createFrameAtIndex): Deleted.

10:30 Changeset [196482] by beidson@apple.com
  • 16 edits
    1 add in trunk/Source/WebCore

Modern IDB: Ref cycle between IDBObjectStore and IDBIndex.
https://bugs.webkit.org/show_bug.cgi?id=154110

Reviewed by Darin Adler.

No new tests (Currently untestable).

The lifetime of IDBObjectStore and IDBIndex are closely intertwined, but we have to break the ref cycle.

This patch does a few semi-gnarly things:
1 - Makes both IDBIndex and IDBObjectStore have a custom marking function so they can add each other as

opaque roots.

2 - Adds a lock to protect IDBObjectStore's collection of referenced indexes to support #1, as GC marking

can happen on any thread.

3 - Makes IDBIndex not be traditionally RefCounted; Instead, IDBIndex::ref()/deref() simply ref()/deref()

the owning IDBObjectStore.

4 - ...Except when somebody deletes an IDBIndex from its IDBObjectStore. Once that happens, the object

store no longer has a reference back to the index, but the index still needs a reference back to the
object store. To support this, the IDBIndex becomes "traditionally RefCounted" while holding a ref to
its IDBObjectStore.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • Modules/indexeddb/IDBIndex.h:

(WebCore::IDBIndex::isModern):

  • Modules/indexeddb/IDBIndex.idl:
  • Modules/indexeddb/IDBObjectStore.h:

(WebCore::IDBObjectStore::isModern):

  • Modules/indexeddb/IDBObjectStore.idl:
  • Modules/indexeddb/client/IDBIndexImpl.cpp:

(WebCore::IDBClient::IDBIndex::objectStore):
(WebCore::IDBClient::IDBIndex::openCursor):
(WebCore::IDBClient::IDBIndex::doCount):
(WebCore::IDBClient::IDBIndex::openKeyCursor):
(WebCore::IDBClient::IDBIndex::doGet):
(WebCore::IDBClient::IDBIndex::doGetKey):
(WebCore::IDBClient::IDBIndex::markAsDeleted):
(WebCore::IDBClient::IDBIndex::ref):
(WebCore::IDBClient::IDBIndex::deref):
(WebCore::IDBClient::IDBIndex::create): Deleted.

  • Modules/indexeddb/client/IDBIndexImpl.h:

(WebCore::IDBClient::IDBIndex::modernObjectStore):

  • Modules/indexeddb/client/IDBObjectStoreImpl.cpp:

(WebCore::IDBClient::IDBObjectStore::createIndex):
(WebCore::IDBClient::IDBObjectStore::index):
(WebCore::IDBClient::IDBObjectStore::deleteIndex):
(WebCore::IDBClient::IDBObjectStore::visitReferencedIndexes):

  • Modules/indexeddb/client/IDBObjectStoreImpl.h:
  • Modules/indexeddb/client/IDBTransactionImpl.cpp:

(WebCore::IDBClient::IDBTransaction::createIndex):

  • Modules/indexeddb/client/IDBTransactionImpl.h:
  • Modules/indexeddb/legacy/LegacyIndex.cpp:

(WebCore::LegacyIndex::ref):
(WebCore::LegacyIndex::deref):

  • Modules/indexeddb/legacy/LegacyIndex.h:
  • bindings/js/JSIDBIndexCustom.cpp: Added.

(WebCore::JSIDBIndex::visitAdditionalChildren):

  • bindings/js/JSIDBObjectStoreCustom.cpp:

(WebCore::JSIDBObjectStore::visitAdditionalChildren):

09:33 Changeset [196481] by ossy@webkit.org
  • 8 edits in trunk

[EFL][GTK] Fix ENABLE(SVG_OTF_CONVERTER) build
https://bugs.webkit.org/show_bug.cgi?id=154165

Reviewed by Alex Christensen.

.:

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsGTK.cmake:

Source/WebCore:

  • CMakeLists.txt:
  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::font):

  • svg/SVGToOTFFontConversion.cpp:
  • svg/SVGToOTFFontConversion.h:
09:24 Changeset [196480] by andersca@apple.com
  • 3 edits in trunk/Source/WebKit2

Get rid of NetscapePluginModule::createPluginMIMETypesPreferences
https://bugs.webkit.org/show_bug.cgi?id=154173

Reviewed by Dan Bernstein.

  • Shared/Plugins/Netscape/NetscapePluginModule.h:
  • Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:

(WebKit::NetscapePluginModule::createPluginMIMETypesPreferences): Deleted.

09:23 Changeset [196479] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Rebaseline imported/w3c/web-platform-tests/html/dom/interfaces.html for ios-simulator after r196466

Unreviewed test gardening.

  • platform/ios-simulator/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt:
09:10 Changeset [196478] by andersca@apple.com
  • 2 edits
    6 deletes in trunk/Source/WebKit2

Remove legacy processes from WebKit2
https://bugs.webkit.org/show_bug.cgi?id=154119

Reviewed by Darin Adler.

  • Configurations/BaseLegacyProcess.xcconfig: Removed.
  • DatabaseProcess/EntryPoint/mac/LegacyProcess/DatabaseProcessMain.mm: Removed.

(DatabaseProcessMain): Deleted.

  • DatabaseProcess/EntryPoint/mac/LegacyProcess/Info.plist: Removed.
  • NetworkProcess/EntryPoint/mac/LegacyProcess/Info.plist: Removed.
  • NetworkProcess/EntryPoint/mac/LegacyProcess/NetworkProcessMain.mm: Removed.

(NetworkProcessMain): Deleted.

  • PluginProcess/EntryPoint/mac/LegacyProcess/Info.plist: Removed.
  • PluginProcess/EntryPoint/mac/LegacyProcess/PluginProcessMain.mm: Removed.

(WebKit::PluginProcessMainDelegate::PluginProcessMainDelegate): Deleted.
(PluginProcessMain): Deleted.

  • Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessEntryPoint.h: Removed.

(WebKit::ChildProcessMainDelegate::ChildProcessMainDelegate): Deleted.
(WebKit::ChildProcessMain): Deleted.

  • Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessEntryPoint.mm: Removed.

(WebKit::ChildProcessMainDelegate::~ChildProcessMainDelegate): Deleted.
(WebKit::ChildProcessMainDelegate::installSignalHandlers): Deleted.
(WebKit::ChildProcessMainDelegate::doPreInitializationWork): Deleted.
(WebKit::ChildProcessMainDelegate::getConnectionIdentifier): Deleted.
(WebKit::ChildProcessMainDelegate::getClientIdentifier): Deleted.
(WebKit::ChildProcessMainDelegate::getClientProcessName): Deleted.
(WebKit::ChildProcessMainDelegate::getExtraInitializationData): Deleted.
(WebKit::ChildProcessMainDelegate::startRunLoop): Deleted.
(WebKit::ChildProcessMainDelegate::doPostRunWork): Deleted.

  • Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessMain.mm: Removed.

(WebKit::closeUnusedFileDescriptors): Deleted.
(WebKit::BootstrapMain): Deleted.
(main): Deleted.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/EntryPoint/mac/LegacyProcess/Info.plist: Removed.
  • WebProcess/EntryPoint/mac/LegacyProcess/WebContentProcessMain.mm: Removed.

(WebKit::WebContentProcessMainDelegate::WebContentProcessMainDelegate): Deleted.
(WebContentProcessMain): Deleted.

09:00 Changeset [196477] by bshafiei@apple.com
  • 12 edits in branches/safari-601.1.46-branch

Merged r196401. rdar://problem/24611749

08:49 Changeset [196476] by cdumez@apple.com
  • 22 edits in trunk/Source/WebCore

Unreviewed nit fixes after r196466.

  • Modules/speech/SpeechSynthesisUtterance.idl: Fix curly bracket placement.
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader): Use wrappableObject instead of domObject.

  • bindings/scripts/test/*: Rebaseline.
  • dom/WebKitNamedFlow.idl: Drop unnecessary #if case.
08:40 Changeset [196475] by carlosgc@webkit.org
  • 2 edits in trunk/Source/WebKit2

[GTK] HTTP auth dialog incorrectly rendered with Accelerated Compositing enabled
https://bugs.webkit.org/show_bug.cgi?id=154159

Reviewed by Michael Catanzaro.

There are two problems here, first we are changing the cairo
operator when rendering the xcomposite window pixmap without a
proper save/restore, so it affects the drawing that happens after
that, and second problem is that we are not rendering the gray
background in AC mode because we are returning earlier.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewRenderAcceleratedCompositingResults):
(webkitWebViewBaseDraw):

08:37 Changeset [196474] by carlosgc@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK] Properly handle classes inheriting from EventTarget
https://bugs.webkit.org/show_bug.cgi?id=154158

Reviewed by Michael Catanzaro.

Instead of removing its parent we now handle the case of classes
having EventTarget as parent to make them implement the interface
instead.

  • bindings/scripts/CodeGeneratorGObject.pm:

(ShouldBeExposedAsInterface): Whether the parent given class
should be exposed as an interface instead of a parent class.
(GetParentClassName): Return Object as parent for classes having
a parent that should be exposed as an interface.
(GetParentImplClassName): Ditto.
(GetBaseClass): Ditto.
(GetParentGObjType): Ditto.
(SkipFunction): Add FIXME comment.
(ImplementsInterface): Helper function to check if a class
implements the given interface.
(GenerateCFile): Check whether the class implements EventTarget to
generate the interface implementation.
(GenerateInterface): Do not remove the parent class when it's EventTarget.

07:49 Changeset [196473] by commit-queue@webkit.org
  • 5 edits
    2 deletes in trunk/Source/WebCore

Unreviewed, rolling out r196470.
https://bugs.webkit.org/show_bug.cgi?id=154167

Broke some tests (Requested by anttik on #webkit).

Reverted changeset:

"Factor class change style invalidation code into a class"
https://bugs.webkit.org/show_bug.cgi?id=154163
http://trac.webkit.org/changeset/196470

07:37 Changeset [196472] by matthew_hanson@apple.com
  • 3 edits in branches/safari-601-branch/Source/WebInspectorUI

Merge r196362. rdar://problem/24611811

07:37 Changeset [196471] by matthew_hanson@apple.com
  • 12 edits in branches/safari-601-branch

Merge r196401. rdar://problem/24611749

07:05 Changeset [196470] by antti@apple.com
  • 5 edits
    2 adds in trunk/Source/WebCore

Factor class change style invalidation code into a class
https://bugs.webkit.org/show_bug.cgi?id=154163

Reviewed by Andreas Kling.

Factor this piece of functionality out of Element and into ClassChangeInvalidation class.

  • CMakeLists.txt:
  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Element.cpp:

(WebCore::classStringHasClassName):
(WebCore::Element::classAttributeChanged):
(WebCore::collectClasses): Deleted.
(WebCore::computeClassChange): Deleted.
(WebCore::invalidateStyleForClassChange): Deleted.

  • style/ClassChangeInvalidation.cpp: Added.

(WebCore::Style::ClassChangeInvalidation::computeClassChange):
(WebCore::Style::ClassChangeInvalidation::invalidateStyle):

  • style/ClassChangeInvalidation.h: Added.

(WebCore::Style::ClassChangeInvalidation::needsInvalidation):
(WebCore::Style::ClassChangeInvalidation::ClassChangeInvalidation):
(WebCore::Style::ClassChangeInvalidation::~ClassChangeInvalidation):

05:52 Changeset [196469] by ossy@webkit.org
  • 2 edits in trunk/Source/WebCore

GCC buildfix in Source/WebCore/svg/SVGToOTFFontConversion.cpp
https://bugs.webkit.org/show_bug.cgi?id=154162

Reviewed by Andreas Kling.

  • svg/SVGToOTFFontConversion.cpp:

(WebCore::SVGToOTFFontConverter::finishAppendingKERNSubtable):

04:39 Changeset [196468] by akling@apple.com
  • 2 edits in trunk/Source/WebCore

Don't invalidate the FontCache on memory pressure.
<https://webkit.org/b/154161>

Reviewed by Antti Koivisto.

Invalidating the FontCache does more harm than good:

  • Anything that's still in the cache at this point is also referenced outside the cache, thus will not actually get deleted.
  • Future deduplication will fail, leading to more objects.
  • The global FontCache generation gets bumped, causing future style recalcs to be less efficient and breaking style sharing.
  • All FontSelector invalidation callbacks will fire, potentially causing forced full-document style recalcs.

In fact, the only win from invalidating the FontCache comes from some
minor shrinkage in the containers that make up the cache itself.

  • platform/MemoryPressureHandler.cpp:

(WebCore::MemoryPressureHandler::releaseCriticalMemory): Deleted.

03:37 Changeset [196467] by clopez@igalia.com
  • 2 edits in trunk/Source/WebKit2

[GTK] Allow applications to disable Accelerated Compositing mode.
https://bugs.webkit.org/show_bug.cgi?id=154147

Reviewed by Carlos Garcia Campos.

  • UIProcess/gtk/WebPreferencesGtk.cpp:

(WebKit::WebPreferences::platformInitializeStore): if the environment
variable WEBKIT_DISABLE_COMPOSITING_MODE is defined, then disable AC.

02/11/16:

23:28 Changeset [196466] by cdumez@apple.com
  • 88 edits in trunk

[Web IDL] interfaces should inherit EventTarget instead of duplicating the EventTarget API
https://bugs.webkit.org/show_bug.cgi?id=154121
<rdar://problem/24613234>

Reviewed by Gavin Barraclough.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

  • web-platform-tests/dom/interfaces-expected.txt:
  • web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

Interfaces should inherit EventTarget instead of duplicating the
EventTarget API in their IDL. Not only the duplication is ugly and
error-prone, but this also does not match the specifications and
have subtle web-exposed differences.

This patch takes care of all interfaces except for DOMWindow and
WorkerGlobalScope. Those will be updated in the follow-up patch
as they will require a little bit more work and testing.

We should also be able to get rid of the [EventTarget] WebKit IDL
attribute in a follow-up.

No new tests, already covered by existing tests.

  • Modules/battery/BatteryManager.idl:
  • Modules/encryptedmedia/MediaKeySession.idl:
  • Modules/indexeddb/IDBDatabase.h:
  • Modules/indexeddb/IDBDatabase.idl:
  • Modules/indexeddb/IDBRequest.h:
  • Modules/indexeddb/IDBRequest.idl:
  • Modules/indexeddb/IDBTransaction.h:
  • Modules/indexeddb/IDBTransaction.idl:
  • Modules/mediasession/MediaRemoteControls.idl:
  • Modules/mediasource/MediaSource.h:
  • Modules/mediasource/MediaSource.idl:
  • Modules/mediasource/SourceBuffer.h:
  • Modules/mediasource/SourceBuffer.idl:
  • Modules/mediasource/SourceBufferList.h:
  • Modules/mediasource/SourceBufferList.idl:
  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStream.idl:
  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/mediastream/MediaStreamTrack.idl:
  • Modules/mediastream/RTCDTMFSender.h:
  • Modules/mediastream/RTCDTMFSender.idl:
  • Modules/mediastream/RTCDataChannel.h:
  • Modules/mediastream/RTCDataChannel.idl:
  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/notifications/Notification.idl:
  • Modules/speech/SpeechSynthesisUtterance.idl:
  • Modules/webaudio/AudioContext.idl:
  • Modules/webaudio/AudioNode.idl:
  • Modules/websockets/WebSocket.idl:
  • css/FontLoader.idl:
  • dom/EventTarget.h:
  • dom/MessagePort.idl:
  • dom/Node.h:
  • dom/Node.idl:
  • dom/WebKitNamedFlow.idl:
  • fileapi/FileReader.idl:
  • html/MediaController.idl:
  • html/track/AudioTrackList.idl:
  • html/track/TextTrack.idl:
  • html/track/TextTrackCue.idl:
  • html/track/TextTrackList.idl:
  • html/track/VideoTrackList.idl:
  • loader/appcache/DOMApplicationCache.h:
  • loader/appcache/DOMApplicationCache.idl:
  • page/EventSource.idl:
  • page/Performance.h:
  • page/Performance.idl:
  • workers/Worker.idl:
  • xml/XMLHttpRequest.h:
  • xml/XMLHttpRequest.idl:
  • xml/XMLHttpRequestUpload.idl:
  • Drop hardcoded EventTarget operations and inherit EventTarget instead.
  • Drop JSGenerateToNativeObject / JSGenerateToJSObject IDL extended attributes for interfaces inheriting the EventTarget interface as the bindings generator now does this automatically for us.
  • On native side, have EventTarget subclass ScriptWrappable instead of each of its subclasses doing so. The issue was that EventTargetOwner::finalize() was calling uncacheWrapper() with an EventTarget*, which would not clear inlined cached wrapped (see clearInlineCachedWrapper()) because EventTarget did not subclass ScriptWrappable. However, cacheWrapper() is called is a specific subtype pointer (e.g. Node*) and we would decide to create an inline cached wrapper because Node subclassed ScriptWrappable (as well as EventTarget).
  • WebCore.xcodeproj/project.pbxproj:

Export JSEventTarget.h as private header to fix the build.

  • bindings/js/JSDOMBinding.h:

(WebCore::wrapperKey):
(WebCore::getCachedWrapper):
(WebCore::cacheWrapper):
(WebCore::uncacheWrapper):
Use new wrapperKey() function that is generated for each bindings
class that also has wrapperOwner(). This is used instead of the
C cast to void* in order to cast to the base wrapped type to fix
issues with multiple inheritance. The issue was that cacheWrapper()
was getting called with a DOM object subtype pointer (e.g.
AudioContext*) but uncacheWrapper() was getting called with a base
wrapped type pointer (e.g. EventTarget*). Most of our DOM classes
use multiple inheritance and thus the pointer values (used as keys
in the weak map) may differ.

  • bindings/js/JSTrackCustom.cpp:

(WebCore::toJS):
Call CREATE_DOM_WRAPPER() with an actual wrapped type (e.g. AudioTrack)
instead of TrackBase type. TrackBase does not have corresponding
generated bindings and therefore does not have a wrapperKey()
function.

  • bindings/scripts/CodeGeneratorJS.pm:

(ShouldGenerateToWrapped):
(ShouldGenerateToJSDeclaration):
(GenerateHeader):

  • Generate a wrapperKey() utility function along-side wrapperOwner() to help cast to the base wrapped type.
  • Generate toWrapped() / toJS() utility functions for interfaces that inherit EventTarget as those are required by our implementation and this avoids having to explicitly have them in the IDL.
  • bindings/scripts/test/*:

Rebaseline bindings tests.

LayoutTests:

Rebaseline a couple of layout tests now that interfaces inherit EventTarget
instead of duplicating the EventTarget API in their IDL.

  • fast/dom/Window/window-properties-performance-expected.txt:
  • fast/dom/prototype-chain-expected.txt:
21:21 Changeset [196465] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Land the change that was supposed to be the part of r196463.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage.prototype._didFetchTestGroups): Select the latest test group by default.

21:17 Changeset [196464] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: SourceCodeTextEditor close() generates removeEventListener warnings
https://bugs.webkit.org/show_bug.cgi?id=154150

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-02-11
Reviewed by Timothy Hatcher.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype.close):
Remove the event listeners in the cases that we would have added them.
If we have SourceMap information we should remove the key listener,
and if we don't we should remove the SourceMapAdded listener.

21:14 Changeset [196463] by rniwa@webkit.org
  • 7 edits in trunk/Websites/perf.webkit.org

Refine v3 UI's analysis task page
https://bugs.webkit.org/show_bug.cgi?id=154152

Reviewed by Chris Dumez.

This patch makes the following refinements to the analysis task page:

  • Always show the relative different of in-progress A/B testing.
  • Make the annotations (colored bars) in the chart open other analysis tasks.
  • Order the A/B testing groups in the reverse chronological order.
  • Select the time range corresponding to the current test group.
  • public/v3/components/analysis-results-viewer.js:

(AnalysisResultsViewer.cssTemplate): Fixed the bug that pending and running testing groups are no longer
colored after r196440. Use a slightly more opaque color for currently running groups compared to pending ones.

  • public/v3/components/chart-pane-base.js:

(ChartPaneBase.prototype.setMainSelection): Added.
(ChartPaneBase.prototype._openAnalysisTask): Moved the code from ChartPane._openAnalysisTask so that it can be
reused in both AnalysisTaskChartPane and ChartPane (in charts page).
(ChartPaneBase.prototype.router): Added. Overridden by each subclass.

  • public/v3/components/test-group-results-table.js:

(TestGroupResultsTable.prototype.buildRowGroups): Always show the summary (relative difference of A to B) as
long as there are some results in each set.

  • public/v3/models/test-group.js:

(TestGroup.prototype.compareTestResults): Always set .label and .fullLabel with the relative change as long as
there are some values. Keep using "pending" and "running" in .status since that would determine the color of
stacking blocks representing those A/B testing groups.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskChartPane):
(AnalysisTaskChartPane.prototype.setPage): Added.
(AnalysisTaskChartPane.prototype.router): Added.
(AnalysisTaskPage):
(AnalysisTaskPage.prototype.render): Show the list of A/B testing groups in the reverse chronological order.
Also set the main chart's selection to the time range of the current test group.

  • public/v3/pages/chart-pane.js:

(ChartPane.prototype.router): Added.
(ChartPane.prototype._openAnalysisTask): Moved to ChartPaneBase.prototype._openAnalysisTask.

19:24 Changeset [196462] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix internal Windows build.
rdar://problem/24622882

  • WebKit.vcxproj/WebKit.proj:

Don't define DEBUG_SUFFIX in release builds.

17:30 Changeset [196461] by ryanhaddad@apple.com
  • 11 edits
    2 deletes in trunk/Source/WebKit2

Unreviewed, rolling out r196453.
https://bugs.webkit.org/show_bug.cgi?id=154142

This change broke internal iOS builds (Requested by ryanhaddad
on #webkit).

Reverted changeset:

"Move Download authentication code to AuthenticationManager"
https://bugs.webkit.org/show_bug.cgi?id=154132
http://trac.webkit.org/changeset/196453

Patch by Commit Queue <commit-queue@webkit.org> on 2016-02-11

17:05 Changeset [196460] by bfulgham@apple.com
  • 3 edits in trunk/Source/WebCore

Optimize texture-complete checks
https://bugs.webkit.org/show_bug.cgi?id=98308

Reviewed by Dean Jackson.

No new tests: No change in behavior.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::initializeNewContext): Initially consider all
textures as suspect.
(WebCore::WebGLRenderingContextBase::extensions): New helper function.
(WebCore::WebGLRenderingContextBase::reshape): Mark textures as invalid when appropriate.
(WebCore::WebGLRenderingContextBase::bindTexture): Identify invalid textures and mark
them for later fix-up. Likewise, remove 'known good' textures from the fix-up pass.
(WebCore::WebGLRenderingContextBase::deleteTexture): Remove instances of the deleted texture
from our set of invalid textures.
(WebCore::WebGLRenderingContextBase::checkTextureCompleteness): Only iterate through
the 'bad' textures, rather than checking every single texture.

  • html/canvas/WebGLRenderingContextBase.h:
17:05 Changeset [196459] by rniwa@webkit.org
  • 2 edits
    1 add in trunk/Websites/perf.webkit.org

Add a script to process backlogs created while perf dashboard was in the maintenance mode
https://bugs.webkit.org/show_bug.cgi?id=154140

Reviewed by Chris Dumez.

Added a script to process the backlog JSONs created while the perf dashboard was put in the maintenance mode.
It re-submits each JSON file to the perf dashboard using the same server config file used by syncing scripts.

  • public/include/report-processor.php:

(TestRunsGenerator::test_value_list_to_values_by_iterations): Fixed a bug in the error message code. It was
referencing an undeclared variable.

  • tools/process-maintenance-backlog.py: Added.
16:59 Changeset [196458] by mark.lam@apple.com
  • 3 edits in trunk/Source/WTF

Need WTFCrash workaround for shipping SafariForWebKitDevelopment binaries.
https://bugs.webkit.org/show_bug.cgi?id=154125

Reviewed by Joseph Pecoraro.

Presently shipping SafariForWebKitDevelopment binaries still expect to link to a
WTFCrash function. We need to provide this function as a workaround until we can
update SafariForWebKitDevelopment to use the new inlined version.

We do this by doing:

  1. Make WTFCrashImpl() the sole function for implementing a crash. The CRASH() macro is now defined to be WTFCrashImpl() instead of WTFCrash().
  2. Renamed the legacy WTFCrash() to WTFCrashImpl() for debug or non-Darwin builds. For (non-debug && OS(DARWIN)) builds, WTFCrashImpl() will be an inlined function with an asm statement that issues a breakpoint trap.
  3. Implement WTFCrash() as a function that calls CRASH(). This satisfies the need of shipping SafariForWebKitDevelopment binaries.
  4. Change WTFCrashWithSecurityImplication() to call CRASH(). This ensures that we have a consistent implementation of how we crash.
  5. Changed WTFLogAlwaysAndCrash() to call CRASH() instead of WTFCrash(). This is just to have consistency in that all code in the WebKit project now crashes by calling CRASH(), not WTFCrash().
  • wtf/Assertions.cpp:
  • wtf/Assertions.h:
16:40 Changeset [196457] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Use the system PluginProcess.app for generating plug-in MIME type preferences
https://bugs.webkit.org/show_bug.cgi?id=154139

Reviewed by Dan Bernstein.

  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm:

(WebKit::PluginProcessProxy::createPropertyListFile):

16:31 Changeset [196456] by bdakin@apple.com
  • 10 edits in trunk/Source

EditingRangeIsRelativeTo::Document and NSRangeIsRelativeTo::Document should
be called EditableRoot instead
https://bugs.webkit.org/show_bug.cgi?id=154138

Reviewed by Alexey Proskuryakov.

EditableRoot is much more accurate than Document.
Source/WebKit/mac:

  • WebView/WebFrame.mm:

(-[WebFrame _convertToDOMRange:]):
(-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]):

  • WebView/WebFrameInternal.h:
  • WebView/WebHTMLView.mm:

(-[WebHTMLView insertText:]):

Source/WebKit2:

  • Shared/EditingRange.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::insertText):
(WebKit::WebViewImpl::selectedRangeWithCompletionHandler):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::rangeFromEditingRange):

  • WebProcess/WebPage/WebPage.h:
16:17 Changeset [196455] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Assert that IDBTransaction::transitionedToFinishing transitions to finishing.
https://bugs.webkit.org/show_bug.cgi?id=154061

  • Modules/indexeddb/client/IDBTransactionImpl.cpp:

(WebCore::IDBClient::IDBTransaction::transitionedToFinishing):
Added assertion that we are transitioning to a finished or finishing state, based on Darin's feedback.

16:02 Changeset [196454] by bburg@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Web Inspector: RemoteInspector's listings should include whether an AutomationTarget is paired
https://bugs.webkit.org/show_bug.cgi?id=154077
<rdar://problem/24589133>

Reviewed by Joseph Pecoraro.

Instead of not generating a listing for the target when it is occupied,
generate the listing with a 'paired' flag. The old flag was redundant
because a _WKAutomationDelegate will not create a session if it doesn't
support automation or it already has an active session.

  • inspector/remote/RemoteAutomationTarget.cpp:

(Inspector::RemoteAutomationTarget::setIsPaired):
(Inspector::RemoteAutomationTarget::setAutomationAllowed): Deleted.

  • inspector/remote/RemoteAutomationTarget.h:

Return false for remoteControlAllowed() if the target is already paired.
This function is used by RemoteInspector to deny incoming connections.

  • inspector/remote/RemoteInspector.mm:

(Inspector::RemoteInspector::listingForAutomationTarget):

  • inspector/remote/RemoteInspectorConstants.h:
16:02 Changeset [196453] by achristensen@apple.com
  • 11 edits
    4 adds in trunk/Source/WebKit2

Move Download authentication code to AuthenticationManager
https://bugs.webkit.org/show_bug.cgi?id=154132

Reviewed by Sam Weinig.

When a video element makes a request that receives an authentication challenge, the
AuthenticationManager receives an AuthenticationChallenge without an AuthenticationClient.
As a result, Download::receivedCredential and other functions were being called, which
sent a message to the challenge's sender. This functionality is not specific to downloads,
so I moved it from Download to AuthenticationManager.

This fixes http/tests/media/video-auth.html when using NetworkSession
because I use AuthenticationManager::receivedCredential if there is no AuthenticationClient
instead of improperly asserting that there is always an AuthenticationClient if there is no
completionHandler.

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/ios/DownloadIOS.mm:

(WebKit::Download::platformDidFinish):
(WebKit::Download::receivedCredential): Deleted.
(WebKit::Download::receivedRequestToContinueWithoutCredential): Deleted.
(WebKit::Download::receivedCancellation): Deleted.
(WebKit::Download::receivedRequestToPerformDefaultHandling): Deleted.
(WebKit::Download::receivedChallengeRejection): Deleted.

  • NetworkProcess/Downloads/mac/DownloadMac.mm:

(WebKit::Download::platformDidFinish):
(WebKit::Download::receivedCredential): Deleted.
(WebKit::Download::receivedRequestToContinueWithoutCredential): Deleted.
(WebKit::Download::receivedCancellation): Deleted.
(WebKit::Download::receivedRequestToPerformDefaultHandling): Deleted.
(WebKit::Download::receivedChallengeRejection): Deleted.

  • NetworkProcess/Downloads/soup/DownloadSoup.cpp:

(WebKit::Download::platformDidFinish):
(WebKit::Download::receivedCredential): Deleted.
(WebKit::Download::receivedRequestToContinueWithoutCredential): Deleted.
(WebKit::Download::receivedCancellation): Deleted.
(WebKit::Download::continueWithoutCredential): Deleted.
(WebKit::Download::useCredential): Deleted.
(WebKit::Download::cancelAuthenticationChallenge): Deleted.
(WebKit::Download::receivedRequestToPerformDefaultHandling): Deleted.
(WebKit::Download::receivedChallengeRejection): Deleted.

  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • PlatformMac.cmake:
  • Shared/Authentication/AuthenticationManager.cpp:

(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):
(WebKit::AuthenticationManager::useCredentialForSingleChallenge):
(WebKit::AuthenticationManager::continueWithoutCredentialForChallenge):
(WebKit::AuthenticationManager::continueWithoutCredentialForSingleChallenge):
(WebKit::AuthenticationManager::cancelChallenge):
(WebKit::AuthenticationManager::cancelSingleChallenge):
(WebKit::AuthenticationManager::performDefaultHandling):
(WebKit::AuthenticationManager::performDefaultHandlingForSingleChallenge):
(WebKit::AuthenticationManager::rejectProtectionSpaceAndContinue):
(WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge):

  • Shared/Authentication/AuthenticationManager.h:

(WebKit::AuthenticationManager::outstandingAuthenticationChallengeCount):

  • Shared/Authentication/cocoa: Added.
  • Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm: Added.

(WebKit::AuthenticationManager::receivedCredential):
(WebKit::AuthenticationManager::receivedRequestToContinueWithoutCredential):
(WebKit::AuthenticationManager::receivedCancellation):
(WebKit::AuthenticationManager::receivedRequestToPerformDefaultHandling):
(WebKit::AuthenticationManager::receivedChallengeRejection):

  • Shared/Authentication/soup: Added.
  • Shared/Authentication/soup/AuthenticationManagerSoup.cpp: Added.

(WebKit::AuthenticationManager::receivedCredential):
(WebKit::AuthenticationManager::receivedRequestToContinueWithoutCredential):
(WebKit::AuthenticationManager::receivedCancellation):
(WebKit::AuthenticationManager::receivedRequestToPerformDefaultHandling):
(WebKit::AuthenticationManager::receivedChallengeRejection):

  • WebKit2.xcodeproj/project.pbxproj:
15:39 Changeset [196452] by bdakin@apple.com
  • 18 edits in trunk/Source

Soft spaces are often tracked in the wrong spot
https://bugs.webkit.org/show_bug.cgi?id=154127
-and corresponding-
rdar://problem/24493140

Reviewed by Sam Weinig.

Soft spaces are in the wrong space now for two reasons. First of all, the
NSRange we get from the accepted candidate is relative to the paragraph
start, so without this patch, soft spaces are only ever right for the first
paragraph. Secondly, if focus changes for any reason other than text
insertion, soft spaces are also wrong because they need to be re-set.

Source/WebKit/mac:

New version of _convertToDOMRange takes a NSRangeIsRelativeTo so that it can
handle ranges relative to both the document and the paragraph.

  • WebView/WebFrame.mm:

(-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]):
(-[WebFrame _convertNSRangeToDOMRange:]):

New enum NSRangeIsRelativeTo.

  • WebView/WebFrameInternal.h:

Re-set the softSpaceRange on selection changes so long as the WebCore::Editor
is not currently handling an accepted candidate.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _selectionChanged]):

If needToRemoveSoftSpace is true, then the replacementRange is
relative to the paragraph.
(-[WebHTMLView insertText:]):

Source/WebKit2:

New enum can be used to indicate what an EditingRange is relative to.

  • Shared/EditingRange.h:

(WebKit::EditingRange::EditingRange):

didHandleAcceptedCandidate is a new message that gets sent from the
WebProcess. This lets us track a bool m_isHandlingAcceptedCandidate.

  • UIProcess/Cocoa/WebViewImpl.h:

(WebKit::WebViewImpl::didHandleAcceptedCandidate):

Re-set the m_softSpaceRange on selection changes so long as
m_isHandlingAcceptedCandidate is false.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::selectionDidChange):

Set m_isHandlingAcceptedCandidate to true.
(WebKit::WebViewImpl::handleAcceptedCandidate):

Set m_isHandlingAcceptedCandidate to false.
(WebKit::WebViewImpl::didHandleAcceptedCandidate):

insertTextAsync takes a new parameter indicating what the replacementRange is
relative to. If needToRemoveSoftSpace is true, then the replacementRange is
relative to the paragraph.
(WebKit::WebViewImpl::insertText):

Pipe didHandleAcceptedCandidate through to WebViewImpl.

  • UIProcess/PageClient.h:

insertTextAsync takes an EditingRangeIsRelativeTo.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::insertTextAsync):

Pipe didHandleAcceptedCandidate through to WebViewImpl.
(WebKit::WebPageProxy::didHandleAcceptedCandidate):

  • UIProcess/WebPageProxy.h:

New message lets the WebProcess tell the UIProcess when the candidate has
been accepted.

  • UIProcess/WebPageProxy.messages.in:

Pipe didHandleAcceptedCandidate through to WebViewImpl.

  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::didHandleAcceptedCandidate):

insertTextAsync takes an EditingRangeIsRelativeTo. Pass that through to
rangeFromEditingRange to get the correct range.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::insertTextAsync):

Use the EditingRangeIsRelativeTo to find the right WebCore::Range.
(WebKit::WebPage::rangeFromEditingRange):

Take EditingRangeIsRelativeTo in a few places.

  • WebProcess/WebPage/WebPage.h:

InsertTextAsync takes a EditingRangeIsRelativeTo.

  • WebProcess/WebPage/WebPage.messages.in:

Send didHandleAccpetedCandidate to the UIProcess

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::handleAcceptedCandidate):

15:17 Changeset [196451] by bshafiei@apple.com
  • 2 edits in tags/Safari-602.1.18.0.4/Source/WebCore

Merged r196445. rdar://problem/24511860

15:13 Changeset [196450] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.18.8/Source

Versioning.

15:12 Changeset [196449] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.18.0.4/Source

Versioning.

15:11 Changeset [196448] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.18.8

New tag.

15:07 Changeset [196447] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.18.0.4

New tag.

15:06 Changeset [196446] by fpizlo@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

DFG::ByteCodeParser needs to null check the result of presenceLike()
https://bugs.webkit.org/show_bug.cgi?id=154135
rdar://problem/24291586

Reviewed by Geoffrey Garen.

ByteCodeParser::presenceLike() could return a null object property condition if it detects a
contradiction. That could happen due to bogus profiling. It's totally OK - we just need to
bail from using a property condition when that happens.

  • bytecode/ObjectPropertyCondition.h:

(JSC::ObjectPropertyCondition::equivalence):
(JSC::ObjectPropertyCondition::operator bool):
(JSC::ObjectPropertyCondition::object):
(JSC::ObjectPropertyCondition::condition):
(JSC::ObjectPropertyCondition::operator!): Deleted.

  • bytecode/PropertyCondition.h:

(JSC::PropertyCondition::equivalence):
(JSC::PropertyCondition::operator bool):
(JSC::PropertyCondition::kind):
(JSC::PropertyCondition::uid):
(JSC::PropertyCondition::operator!): Deleted.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::check):
(JSC::DFG::ByteCodeParser::load):

15:04 Changeset [196445] by enrica@apple.com
  • 2 edits in trunk/Source/WebCore

WebContent process crashes when performing data detection on content with existing data detector links.
https://bugs.webkit.org/show_bug.cgi?id=154118
rdar://problem/24511860

Reviewed by Tim Horton.

The DOM mutation caused by removing the existing links, can shift the range endpoints.
We now save the range enpoints as positions so that we can recreate the ranges,
if a DOM mutation occurred.

  • editing/cocoa/DataDetection.mm:

(WebCore::removeResultLinksFromAnchor):
(WebCore::searchForLinkRemovingExistingDDLinks):
(WebCore::DataDetection::detectContentInRange):

15:01 Changeset [196444] by benjamin@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] SqrtFloat and CeilFloat also suffer from partial register stalls
https://bugs.webkit.org/show_bug.cgi?id=154131

Reviewed by Filip Pizlo.

Looks like I forgot to update this when adding Float support.
Credit to Filip for finding this issue.

  • b3/air/AirFixPartialRegisterStalls.cpp:
14:52 Changeset [196443] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

AnalysisResultsViewer never uses this._smallerIsBetter
https://bugs.webkit.org/show_bug.cgi?id=154134

Reviewed by Chris Dumez.

Removed the unused instance variable _smallerIsBetter from AnalysisResultsViewer and TestGroupStackingBlock.

  • public/v3/components/analysis-results-viewer.js:

(AnalysisResultsViewer): Removed the unused _smallerIsBetter.
(AnalysisResultsViewer.prototype.setSmallerIsBetter): Deleted.
(AnalysisResultsViewer.prototype.buildRowGroups):
(AnalysisResultsViewer.TestGroupStackingBlock): Removed the unused _smallerIsBetter.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage.prototype._didFetchTask):

14:34 Changeset [196442] by jer.noble@apple.com
  • 9 edits in trunk/Source/WebCore

Make MediaResourceLoader behave more like a CachedResourceLoader.
https://bugs.webkit.org/show_bug.cgi?id=154117

Reviewed by Alex Christensen.

MediaResourceLoader currently can only handle a single request at a time. Split the class
into two, MediaResourceLoader and MediaResource, effectively wrapping CachedResourceLoader
and CachedRawResource respectively. With this devision, the same loader can be used to issue
multiple simultaneous resource requests.

This necessecitates splitting PlatformMediaResource into two classes as well. To simplify
the HTMLMediaElement, MediaPlayer, and MediaPlayerClient APIs, do not require a client
object when creating the loader; instead, the client is required to create the resource.
This also matches the CachedRawResource API.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerCreateResourceLoader): Remove the client parameter.

  • html/HTMLMediaElement.h:
  • loader/MediaResourceLoader.cpp:

(WebCore::MediaResourceLoader::MediaResourceLoader):
(WebCore::MediaResourceLoader::~MediaResourceLoader):
(WebCore::MediaResourceLoader::requestResource): Renamed from start().
(WebCore::MediaResourceLoader::removeResource): Remove resource from live resource list.
(WebCore::MediaResource::create): Utility factory.
(WebCore::MediaResource::MediaResource):
(WebCore::MediaResource::~MediaResource):
(WebCore::MediaResource::stop): Moved from MediaResourceLoader.
(WebCore::MediaResource::setDefersLoading): Ditto.
(WebCore::MediaResource::responseReceived): Ditto.
(WebCore::MediaResource::redirectReceived): Ditto.
(WebCore::MediaResource::dataSent): Ditto.
(WebCore::MediaResource::dataReceived): Ditto.
(WebCore::MediaResource::notifyFinished): Ditto.
(WebCore::MediaResource::getOrCreateReadBuffer): Ditto.

  • loader/MediaResourceLoader.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::createResourceLoader):

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerCreateResourceLoader):

  • platform/graphics/PlatformMediaResourceLoader.h:

(WebCore::PlatformMediaResourceClient::~PlatformMediaResourceClient): Renamed from PlatformMediaResourceLoaderClient.
(WebCore::PlatformMediaResourceClient::responseReceived): Client methods now take a reference to the resource.
(WebCore::PlatformMediaResourceClient::redirectReceived): Ditto.
(WebCore::PlatformMediaResourceClient::dataSent): Ditto.
(WebCore::PlatformMediaResourceClient::dataReceived): Ditto.
(WebCore::PlatformMediaResourceClient::accessControlCheckFailed): Ditto.
(WebCore::PlatformMediaResourceClient::loadFailed): Ditto.
(WebCore::PlatformMediaResourceClient::loadFinished): Ditto.
(WebCore::PlatformMediaResourceClient::getOrCreateReadBuffer): Ditto.
(WebCore::PlatformMediaResourceLoader::PlatformMediaResourceLoader): Ditto.
(WebCore::PlatformMediaResource::PlatformMediaResource):
(WebCore::PlatformMediaResource::~PlatformMediaResource):
(WebCore::PlatformMediaResource::setClient):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcStart):
(webKitWebSrcNeedData):
(webKitWebSrcEnoughData):
(CachedResourceStreamingClient::getOrCreateReadBuffer):
(CachedResourceStreamingClient::responseReceived):
(CachedResourceStreamingClient::dataReceived):
(CachedResourceStreamingClient::accessControlCheckFailed):
(CachedResourceStreamingClient::loadFailed):
(CachedResourceStreamingClient::loadFinished):

14:28 Changeset [196441] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Build fix after r196440.

  • public/v3/models/test-group.js:

(TestGroup.prototype.addBuildRequest): Clear the map instead of setting the property to null.

14:17 Changeset [196440] by rniwa@webkit.org
  • 9 edits in trunk/Websites/perf.webkit.org

Perf dashboard should have UI to retry A/B testing
https://bugs.webkit.org/show_bug.cgi?id=154090

Reviewed by Chris Dumez.

Added a button to re-try an existing A/B testing group with a custom repetition count. The same button functions
as a way of confirming the progression/regression when there have been no A/B testing scheduled in the task.

Also fixed the bug that A/B testing groups that have been waiting for other test groups will be shown as "running".

  • public/v3/components/results-table.js:

(ResultsTable.cssTemplate): Don't pad the list of extra repositories when it's empty.

  • public/v3/components/test-group-results-table.js:

(TestGroupResultsTable.prototype.buildRowGroups): Use TestGroup.labelForRootSet instead of manually
computing the letter for each configuration set.

  • public/v3/models/build-request.js:

(BuildRequest.prototype.hasStarted): Added.

  • public/v3/models/data-model.js:

(DataModelObject.ensureSingleton): Added.
(DataModelObject.cachedFetch): Added noCache option. This is used when re-fetching the test groups after
creating one.

  • public/v3/models/measurement-cluster.js:

(MeasurementCluster.prototype.startTime): Added.

  • public/v3/models/measurement-set.js:

(MeasurementSet.prototype.hasFetchedRange): Added. Returns true only if there are no "holes" (cluster
yet to be fetched) between the specified time range. This was added to fix a bug in AnalysisTaskPage's
_didFetchMeasurement.

  • public/v3/models/test-group.js:

(TestGroup): Added this._rootSetToLabel.
(TestGroup.prototype.addBuildRequest): Reset this._rootSetToLabel along with this._requestedRootSets.
(TestGroup.prototype.repetitionCount): Added. Returns the number of iterations executed per set. We assume that
every root set in the test group shares a single repetition count.
(TestGroup.prototype.requestedRootSets): Now populates this._rootSetToLabel for labelForRootSet.
(TestGroup.prototype.labelForRootSet): Added.
(TestGroup.prototype.hasStarted): Added.
(TestGroup.prototype.compareTestResults): Use 'running' and 'pending' to differentiate test groups that are waiting
for other groups to finish running from the ones that are actually running ('incomplete' before this patch).
(TestGroup.fetchByTask):
(TestGroup.createAndRefetchTestGroups): Added. Creates a new test group using the privileged-api/create-test-group
and fetches the list of test groups for the specified analysis task.
(TestGroup._createModelsFromFetchedTestGroups): Extracted from TestGroup.fetchByTask.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage): Initialize _renderedCurrentTestGroup to undefined so that we'd always can differentiate
the initial call to AnalysisTaskPage.render and subsequent calls in which it's identical to _currentTestGroup.
(AnalysisTaskPage.prototype._didFetchMeasurement): Fixed a bug that we don't exit early even when some
clusters in between startPoint and endPoint are still being fetched via newly added hasFetchedRange.
(AnalysisTaskPage.prototype.render): Update the default repetition count based on the current test group.
Also update the label of the button to "Confirm the change" if there is no A/B testing in this task.
(AnalysisTaskPage.prototype._retryCurrentTestGroup): Added. Re-triggers an existing A/B testing group or creates
the A/B testing for the entire range of the analysis task.
(AnalysisTaskPage.prototype._hasDuplicateTestGroupName): Added.
(AnalysisTaskPage.prototype._createRetryNameForTestGroup): Added.
(AnalysisTaskPage.htmlTemplate): Added form controls to re-trigger A/B testing.
(AnalysisTaskPage.cssTemplate): Updated the style.

14:15 Changeset [196439] by zalan@apple.com
  • 37 edits in trunk

Subpixel rendering: Make focusring painting subpixel aware.
https://bugs.webkit.org/show_bug.cgi?id=154111

Reviewed by David Hyatt.

Do not integral snap focusring rects while collecting them (use device pixel snapping instead
right before passing them to GraphicsContext::drawFocusRing).

Source/WebCore:

Unable to test.

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawFocusRingRects::create):
(WebCore::DisplayList::DrawFocusRingRects::rects):
(WebCore::DisplayList::DrawFocusRingRects::DrawFocusRingRects):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::drawFocusRing):

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/mac/GraphicsContextMac.mm:

(WebCore::GraphicsContext::drawFocusRing):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::addFocusRingRectsForInlineChildren):
(WebCore::RenderBlock::addFocusRingRects):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::addFocusRingRectsForInlineChildren):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::addFocusRingRects):

  • rendering/RenderBox.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::paintFocusRing):
(WebCore::RenderElement::issueRepaintForOutlineAuto):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::absoluteRects):
(WebCore::RenderInline::addFocusRingRects):

  • rendering/RenderInline.h:
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::addFocusRingRects):

  • rendering/RenderListBox.h:
  • rendering/RenderObject.cpp:

(WebCore::RenderObject::addPDFURLRect):
(WebCore::RenderObject::absoluteFocusRingQuads):

  • rendering/RenderObject.h:

(WebCore::RenderObject::addFocusRingRects):

  • rendering/RenderTextControl.cpp:

(WebCore::RenderTextControl::addFocusRingRects):

  • rendering/RenderTextControl.h:
  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::addFocusRingRects):

  • rendering/svg/RenderSVGContainer.h:
  • rendering/svg/RenderSVGImage.cpp:

(WebCore::RenderSVGImage::addFocusRingRects):

  • rendering/svg/RenderSVGImage.h:
  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::addFocusRingRects):

  • rendering/svg/RenderSVGShape.h:

LayoutTests:

  • platform/mac/accessibility/image-link-expected.txt:
  • platform/mac/accessibility/mac/aria-columnrowheaders-expected.txt: Copied from LayoutTests/platform/mac/accessibility/table-cells-expected.txt.
  • platform/mac/accessibility/mac/document-links-expected.txt: Added.
  • platform/mac/accessibility/table-attributes-expected.txt:
  • platform/mac/accessibility/table-cells-expected.txt:
  • platform/mac/accessibility/table-sections-expected.txt:
  • platform/mac/accessibility/table-with-rules-expected.txt:
14:12 Changeset [196438] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

Addressing post-review comments after r196393

Unreviewed.

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::getFontFace):

  • css/CSSSegmentedFontFace.h:
14:09 Changeset [196437] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Cannot call initializeIndex() if we didn't create the array using tryCreateUninitialized()
https://bugs.webkit.org/show_bug.cgi?id=154126

Reviewed by Saam Barati.

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncSplice):

13:45 Changeset [196436] by dburkart@apple.com
  • 2 edits in trunk/Tools

Large logs can bring down the webkit master
https://bugs.webkit.org/show_bug.cgi?id=122112

Reviewed by Lucas Forschler.

Implement the suggested fix of throwing away stdout / stderr.

  • BuildSlaveSupport/build.webkit.org-config/master.cfg:

(RunWebKit1LeakTests):

13:43 Changeset [196435] by antti@apple.com
  • 2 edits in trunk/Source/WebKit/win

Try to fix windows build.

  • DOMCoreClasses.cpp:

(DOMElement::style):
(DOMElement::offsetLeft):

13:24 Changeset [196434] by sukolsak@gmail.com
  • 11 edits in trunk

[INTL] Implement Intl.NumberFormat.prototype.resolvedOptions ()
https://bugs.webkit.org/show_bug.cgi?id=147602

Reviewed by Darin Adler.

Source/JavaScriptCore:

This patch implements Intl.NumberFormat.prototype.resolvedOptions() according
to the ECMAScript 2015 Internationalization API spec (ECMA-402 2nd edition.)

  • runtime/IntlDateTimeFormat.cpp:

(JSC::localeData):

  • runtime/IntlNumberFormat.cpp:

(JSC::localeData):
(JSC::computeCurrencySortKey):
(JSC::extractCurrencySortKey):
(JSC::computeCurrencyDigits):
(JSC::IntlNumberFormat::initializeNumberFormat):
(JSC::IntlNumberFormat::styleString):
(JSC::IntlNumberFormat::currencyDisplayString):
(JSC::IntlNumberFormat::resolvedOptions):
(JSC::IntlNumberFormat::setBoundFormat):

  • runtime/IntlNumberFormat.h:
  • runtime/IntlNumberFormatConstructor.cpp:

(JSC::constructIntlNumberFormat):
(JSC::callIntlNumberFormat):

  • runtime/IntlNumberFormatPrototype.cpp:

(JSC::IntlNumberFormatPrototypeFuncResolvedOptions):

  • runtime/IntlObject.cpp:

(JSC::intlNumberOption):
(JSC::numberingSystemsForLocale):
(JSC::getNumberingSystemsForLocale): Deleted.

  • runtime/IntlObject.h:

LayoutTests:

  • js/intl-numberformat-expected.txt:
  • js/script-tests/intl-numberformat.js:

(testNumberFormat):

13:22 Changeset [196433] by fpizlo@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

MacroAssemblerX86 should be happy with shift(cx, cx)
https://bugs.webkit.org/show_bug.cgi?id=154124

Reviewed by Saam Barati.

Prior to this change the assembler asserted that shift_amount and dest cannot be the same.
That's a good assertion for when shift_amount is not in cx. But if it's in cx already then
it's OK for them to be the same. Air will sometimes do shift(cx, cx) if you do "x << x" and
the coalescing got particularly clever.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::lshift32):
(JSC::MacroAssemblerX86Common::rshift32):
(JSC::MacroAssemblerX86Common::urshift32):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::lshift64):
(JSC::MacroAssemblerX86_64::rshift64):
(JSC::MacroAssemblerX86_64::urshift64):

  • b3/testb3.cpp:

(JSC::B3::testLShiftSelf32):
(JSC::B3::testRShiftSelf32):
(JSC::B3::testURShiftSelf32):
(JSC::B3::testLShiftSelf64):
(JSC::B3::testRShiftSelf64):
(JSC::B3::testURShiftSelf64):
(JSC::B3::run):

13:04 Changeset [196432] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

The sampling profiler's stack walker methods should be marked with SUPPRESS_ASAN
https://bugs.webkit.org/show_bug.cgi?id=154123

Reviewed by Mark Lam.

The entire premise of the sampling profiler is to load from
another thread's memory. We should SUPPRESS_ASAN on the
methods that do this.

  • runtime/SamplingProfiler.cpp:

(JSC::FrameWalker::FrameWalker):
(JSC::FrameWalker::walk):
(JSC::FrameWalker::advanceToParentFrame):
(JSC::FrameWalker::isAtTop):
(JSC::FrameWalker::resetAtMachineFrame):

12:50 Changeset [196431] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Rebaseline imported/w3c/web-platform-tests/html/dom/interfaces.html for ios-simulator after r196423

Unreviewed test gardening.

  • platform/ios-simulator/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt:
12:33 Changeset [196430] by antti@apple.com
  • 12 edits in trunk/Source/WebCore

Rename Element::style() to Element::cssomStyle()
https://bugs.webkit.org/show_bug.cgi?id=154107

Reviewed by Alex Christensen.

It implements the IDL "style" attribute that returns a CSSOM object.
Inside WebCore "style" generally refers to a RenderStyle.

  • dom/Element.cpp:

(WebCore::Element::hasAttributeNS):
(WebCore::Element::cssomStyle):
(WebCore::Element::focus):
(WebCore::Element::style): Deleted.

  • dom/Element.h:

(WebCore::Element::tagQName):

  • dom/Element.idl:
  • dom/StyledElement.cpp:

(WebCore::StyledElement::~StyledElement):
(WebCore::StyledElement::cssomStyle):
(WebCore::StyledElement::style): Deleted.

  • dom/StyledElement.h:

(WebCore::StyledElement::synchronizeStyleAttributeInternal):
(WebCore::StyledElement::collectStyleForPresentationAttribute):

  • editing/Editor.cpp:

(WebCore::Editor::applyEditingStyleToElement):

  • inspector/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::getMatchedStylesForNode):
(WebCore::InspectorCSSAgent::getInlineStylesForNode):
(WebCore::InspectorCSSAgent::asInspectorStyleSheet):

  • inspector/InspectorStyleSheet.cpp:

(WebCore::InspectorStyleSheetForInlineStyle::didModifyElementAttribute):
(WebCore::InspectorStyleSheetForInlineStyle::inlineStyle):
(WebCore::InspectorStyleSheetForInlineStyle::elementStyleText):

  • svg/SVGElement.idl:
11:52 Changeset [196429] by commit-queue@webkit.org
  • 8 edits
    1 add in trunk

[cmake] Consolidate TextureMapper file and include dir lists.
https://bugs.webkit.org/show_bug.cgi?id=154106

Patch by Konstantin Tokarev <annulen@yandex.ru> on 2016-02-11
Reviewed by Michael Catanzaro.

.:

  • Source/cmake/OptionsEfl.cmake: Expose USE_TEXTURE_MAPPER_GL to

CMake code.

  • Source/cmake/OptionsWinCairo.cmake: Ditto.

Source/WebCore:

No new tests needed.

  • CMakeLists.txt: Moved texmap include dir and source list to

TextureMapper.cmake, removed non-existent include dir "filters/texmap".

  • PlatformEfl.cmake: Moved texmap and coordinatedgraphics include

dirs and source list to TextureMapper.cmake.

  • PlatformGTK.cmake: Ditto, also removed non-existent include dir

"texmap/threadedcompositor"

  • PlatformWinCairo.cmake: Moved texmap files to TextureMapper.cmake.
  • platform/TextureMapper.cmake: Added.
11:49 Changeset [196428] by achristensen@apple.com
  • 6 edits in trunk/Source/WebKit2

Use BlobResourceHandle when loading blob urls, even when using NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=154096

Reviewed by Brady Eidson.

This fixes at least http/tests/xmlhttprequest/blob-request-byte-range.html.

  • NetworkProcess/NetworkDataTask.h:

Renamed NetworkDataTaskClient::didReceiveResponse to didReceiveResponseNetworkSession
to avoid conflicting with ResourceHandleClient::didReceiveResponse.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad):
Make a BlobResourceHandle instead of a NetworkDataTask if we have a request for a blob url.
(WebKit::NetworkLoad::~NetworkLoad):
(WebKit::NetworkLoad::setDefersLoading):
(WebKit::NetworkLoad::cancel):
(WebKit::NetworkLoad::continueWillSendRequest):
(WebKit::NetworkLoad::continueDidReceiveResponse):
(WebKit::NetworkLoad::sharedDidReceiveResponse):
(WebKit::NetworkLoad::convertTaskToDownload):
(WebKit::NetworkLoad::setPendingDownloadID):
(WebKit::NetworkLoad::didReceiveChallenge):
(WebKit::NetworkLoad::didReceiveResponseNetworkSession):
(WebKit::NetworkLoad::cannotShowURL):
(WebKit::NetworkLoad::didReceiveResponseAsync):
(WebKit::NetworkLoad::willSendRequestAsync):
(WebKit::NetworkLoad::canAuthenticateAgainstProtectionSpaceAsync):
(WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace):
(WebKit::NetworkLoad::supportsDataArray):
(WebKit::NetworkLoad::didReceiveDataArray):
(WebKit::NetworkLoad::didSendData):
(WebKit::NetworkLoad::receivedCancellation):
(WebKit::NetworkLoad::didReceiveResponse): Deleted.
Compile ResourceHandleClient when using NetworkSession because it is used for blobs now.
Also, add null checks because we now have NetworkLoads where either m_task or m_handle is always null.

  • NetworkProcess/NetworkLoad.h:

(WebKit::NetworkLoad::pendingDownloadID):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):

  • NetworkProcess/mac/NetworkLoadMac.mm:

(WebKit::NetworkLoad::willCacheResponseAsync):

11:43 Changeset [196427] by bshafiei@apple.com
  • 2 edits in tags/Safari-602.1.18.7/Source/WebKit/win

Merged r195828. rdar://problem/24611721

11:39 Changeset [196426] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.18.7/Source

Versioning.

11:36 Changeset [196425] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.18.7

New tag.

10:51 Changeset [196424] by msaboff@apple.com
  • 2 edits in trunk/Source/bmalloc

Unreviewed build fix after r196421.

Removed BASSERTs that are firing to eliminate Debug build crashes. I'll debug locally and
enable or alter after the issue is understood.

  • bmalloc/LargeObject.h:

(bmalloc::LargeObject::merge): Removed BASSERTs that are firing.

10:23 Changeset [196423] by cdumez@apple.com
  • 40 edits in trunk

Move 'length' property to the prototype
https://bugs.webkit.org/show_bug.cgi?id=154051
<rdar://problem/24577385>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

  • web-platform-tests/dom/collections/HTMLCollection-supported-property-names-expected.txt:
  • web-platform-tests/dom/collections/namednodemap-supported-property-names-expected.txt:
  • web-platform-tests/dom/interfaces-expected.txt:
  • web-platform-tests/dom/nodes/Element-children-expected.txt:
  • web-platform-tests/dom/nodes/Element-getElementsByTagName-expected.txt:
  • web-platform-tests/dom/nodes/attributes-expected.txt:
  • web-platform-tests/html/dom/documents/dom-tree-accessors/document.forms-expected.txt:
  • web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

Move 'length' property to the prototype, where it should be. We used to
keep it on the instance because our implementation of
getOwnPropertySlot() was wrong for interfaces with a named property
getter. However, our implementation of getOwnPropertySlot() is now
spec-compliant so this should be OK.

Moving 'length' to the prototype is also a little bit risky in terms of
performance, especially for HTMLCollection / NodeList. However, I did
not see an impact on realistic benchmarks like Speedometer and only saw
a small impact (< 5%) on micro-benchmarks. I propose we make our behavior
correct and monitor performance. If we see any benchmark we care about
regress then we should try and optimize while keeping the attribute on
the prototype.

No new tests, already covered by existing tests.

  • bindings/js/JSDOMBinding.h:

(WebCore::getStaticValueSlotEntryWithoutCaching):

  • bindings/js/JSHTMLDocumentCustom.cpp:

(WebCore::JSHTMLDocument::getOwnPropertySlot):
(WebCore::JSHTMLDocument::nameGetter): Deleted.

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::putDelegate):

  • bindings/js/JSPluginElementFunctions.h:

(WebCore::pluginElementCustomGetOwnPropertySlot):

  • bindings/js/JSStorageCustom.cpp:

(WebCore::JSStorage::deleteProperty):
(WebCore::JSStorage::deletePropertyByIndex):
(WebCore::JSStorage::putDelegate):
Leverage the new hasStaticPropertyTable static property in the
generated bindings for performance.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
Generate a "hasStaticPropertyTable" static const boolean property
for each bindings class so we can check at build time if
ClassInfo::staticPropHashTable is null.

(AttributeShouldBeOnInstance):
Move "length" to the prototype.

  • bindings/scripts/test/JS/JSTestActiveDOMObject.h:
  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
  • bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
  • bindings/scripts/test/JS/JSTestEventConstructor.h:
  • bindings/scripts/test/JS/JSTestEventTarget.h:
  • bindings/scripts/test/JS/JSTestException.h:
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:
  • bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
  • bindings/scripts/test/JS/JSTestNamedConstructor.h:
  • bindings/scripts/test/JS/JSTestNode.h:
  • bindings/scripts/test/JS/JSTestNondeterministic.h:
  • bindings/scripts/test/JS/JSTestObj.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
  • bindings/scripts/test/JS/JSTestTypedefs.h:
  • bindings/scripts/test/JS/JSattribute.h:
  • bindings/scripts/test/JS/JSreadonly.h:

Rebaseline bindings tests.

LayoutTests:

Rebaseline a couple of existing layout tests now that 'length' is
on the prototype.

  • fast/dom/htmlcollection-getownpropertynames-expected.txt:
  • storage/domstorage/localstorage/delete-defineproperty-removal-expected.txt:
10:19 Changeset [196422] by ossy@webkit.org
  • 2 edits in trunk/Source/WebCore
Fix the !(ENABLE(SHADOW_DOM)
ENABLE(DETAILS_ELEMENT)) after r196281

https://bugs.webkit.org/show_bug.cgi?id=154035

Reviewed by Antti Koivisto.

Follow-up fix after r196365. Removed guards around slotNodeIndex.

  • dom/ComposedTreeIterator.h:

(WebCore::ComposedTreeIterator::Context::Context):

08:01 Changeset [196421] by msaboff@apple.com
  • 4 edits in trunk/Source/bmalloc

bmalloc: large aligned allocations will put 1 or 2 free object on free list without merging with free neighbors
https://bugs.webkit.org/show_bug.cgi?id=154091

Reviewed by Geoffrey Garen.

If we split off any unused free object in the aligned version of Heap::allocateLarge(), we merge them with
free neighbors before putting them back on the free list. Added helpers to verify that when we
add LargeObjects to the free list their neighbors are allocated.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::allocateLarge): Deleted private helper version and rolled it into the two the
two public versions of allocateLarge().

  • bmalloc/Heap.h:
  • bmalloc/LargeObject.h:

(bmalloc::LargeObject::prevIsAllocated): New helper.
(bmalloc::LargeObject::nextIsAllocated): New helper.
(bmalloc::LargeObject::merge): Check that the merge object has allocated neighbors.

06:30 Changeset [196420] by fred.wang@free.fr
  • 3 edits in trunk/Source/WebKit2

Bug 154103 - [GTK] Build error after bug 154046
https://bugs.webkit.org/show_bug.cgi?id=154103

Reviewed by Carlos Garcia Campos.

  • UIProcess/API/gtk/WebKitUserContent.cpp:

(_WebKitUserStyleSheet::_WebKitUserStyleSheet):
(webkitUserStyleSheetGetUserStyleSheet):

  • UIProcess/API/gtk/WebKitUserContentPrivate.h:
03:52 Changeset [196419] by ossy@webkit.org
  • 6 edits in trunk/Source/JavaScriptCore

Unreviewed typo fix after r190063.

  • dfg/DFGSpeculativeJIT.cpp: Removed property svn:executable.
  • dfg/DFGSpeculativeJIT.h: Removed property svn:executable.
  • jit/JIT.h: Removed property svn:executable.
  • jit/JITInlines.h: Removed property svn:executable.
  • jit/JITOpcodes.cpp: Removed property svn:executable.
03:49 Changeset [196418] by ossy@webkit.org
  • 1 edit in trunk/Source/JavaScriptCore/ChangeLog

Unreviewed typo fix after r190063.

  • dfg/DFGSpeculativeJIT.cpp: Removed property svn:executable.
  • dfg/DFGSpeculativeJIT.h: Removed property svn:executable.
  • jit/JIT.h: Removed property svn:executable.
  • jit/JITInlines.h: Removed property svn:executable.
  • jit/JITOpcodes.cpp: Removed property svn:executable.
02:40 Changeset [196417] by fred.wang@free.fr
  • 11 edits in trunk/LayoutTests

Use Testharness.js for the MathML script tests
https://bugs.webkit.org/show_bug.cgi?id=154065

Reviewed by Darin Adler.

  • mathml/opentype/large-operators-munderover-expected.txt:
  • mathml/opentype/large-operators-munderover.html:
  • mathml/presentation/inferred-mrow-baseline-expected.txt:
  • mathml/presentation/inferred-mrow-baseline.html:
  • mathml/presentation/inferred-mrow-stretchy-expected.txt:
  • mathml/presentation/inferred-mrow-stretchy.html:
  • mathml/presentation/stretchy-depth-height-expected.txt:
  • mathml/presentation/stretchy-depth-height-symmetric-expected.txt:
  • mathml/presentation/stretchy-depth-height-symmetric.html:
  • mathml/presentation/stretchy-depth-height.html:
00:11 Changeset [196416] by jonlee@apple.com
  • 2 edits in trunk/PerformanceTests

Fix a missing refactoring.

  • Animometer/tests/master/resources/multiply.js:

(animate): Move to Utilities.lerp.
(_lerp): Deleted.

02/10/16:

23:42 Changeset [196415] by jonlee@apple.com
  • 6 edits
    6 adds in trunk/PerformanceTests

Add new benchmark tests.
https://bugs.webkit.org/show_bug.cgi?id=154063

Provisionally reviewed by Said Abou-Hallawa.

Add tests for get/put image data, filters, opacity, and css transforms.

  • Animometer/resources/runner/benchmark-runner.js:

(_runBenchmarkAndRecordResults): Update the body background color to match that of
the stage.
(this._runNextIteration): Clear the background color style for the results page.

  • Animometer/resources/runner/tests.js:
  • Animometer/tests/master/focus.html: Added.
  • Animometer/tests/master/image-data.html: Added.
  • Animometer/tests/master/multiply.html: Added.
  • Animometer/tests/master/resources/focus.js: Added.
  • Animometer/tests/master/resources/image-data.js: Added.
  • Animometer/tests/master/resources/multiply.js: Added.
  • Animometer/tests/master/resources/stage.css: Move common styles out.
  • Animometer/tests/resources/main.js: Update Stage.randomBool to use Math.random.

Add Stage.randomSign for randomly setting a direction. Add the notion of the
current timestamp of the test to Benchmark, since some animations cycle through
colors and rely on an incremental counter like the time.

20:06 Changeset [196414] by keith_miller@apple.com
  • 11 edits
    1 add in trunk/Source/JavaScriptCore

Symbol.species accessors on builtin constructors should be configurable
https://bugs.webkit.org/show_bug.cgi?id=154097

Reviewed by Benjamin Poulain.

We did not have the Symbol.species accessors on our builtin constructors
marked as configurable. This does not accurately follow the ES6 spec as
the ES6 spec states that all default accessors on builtins should be
configurable. This means that we need an additional watchpoint on
ArrayConstructor to make sure that no users re-configures Symbol.species.

  • runtime/ArrayConstructor.cpp:

(JSC::ArrayConstructor::finishCreation):

  • runtime/ArrayPrototype.cpp:

(JSC::speciesConstructArray):
(JSC::ArrayPrototype::setConstructor):
(JSC::ArrayPrototypeAdaptiveInferredPropertyWatchpoint::handleFire):

  • runtime/ArrayPrototype.h:

(JSC::ArrayPrototype::didChangeConstructorOrSpeciesProperties):
(JSC::ArrayPrototype::didChangeConstructorProperty): Deleted.

  • runtime/JSArrayBufferConstructor.cpp:

(JSC::JSArrayBufferConstructor::finishCreation):

  • runtime/JSPromiseConstructor.cpp:

(JSC::JSPromiseConstructor::finishCreation):

  • runtime/JSTypedArrayViewConstructor.cpp:

(JSC::JSTypedArrayViewConstructor::finishCreation):

  • runtime/MapConstructor.cpp:

(JSC::MapConstructor::finishCreation):

  • runtime/RegExpConstructor.cpp:

(JSC::RegExpConstructor::finishCreation):

  • runtime/SetConstructor.cpp:

(JSC::SetConstructor::finishCreation):

  • tests/stress/array-species-config-array-constructor.js: Added.

(A):

  • tests/stress/symbol-species.js:

(testSymbolSpeciesOnConstructor):

19:20 Changeset [196413] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

19:20 Changeset [196412] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

18:21 Changeset [196411] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.46.98

New tag.

18:21 Changeset [196410] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.5.16

New tag.

17:35 Changeset [196409] by benjamin@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] The destination of Sqrt should be Def, not UseDef
https://bugs.webkit.org/show_bug.cgi?id=154086

Reviewed by Geoffrey Garen.

An unfortunate copy-paste: the destination of SqrtDouble and SqrtFloat
was defined as UseDef. As a result, the argument would be interfering
with everything defined prior.

  • b3/air/AirOpcode.opcodes:
17:18 Changeset [196408] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Removing deleted tests from ios-simulator TestExpectations

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
17:00 Changeset [196407] by ryanhaddad@apple.com
  • 2 edits in trunk/Source/WebCore

Updating bindings test reference file for JSTestEventConstructor.cpp after r196400

Unreviewed test gardening.

No new tests needed.

  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:

(WebCore::JSTestEventConstructorConstructor::construct):

16:52 Changeset [196406] by timothy@apple.com
  • 2 edits
    1 add
    2 deletes in trunk/Source/WebInspectorUI

Web Inspector: Add new icon for the Timeline Recording navigation bar item
https://bugs.webkit.org/show_bug.cgi?id=154089
rdar://problem/24595652

Reviewed by Brian Burg.

  • UserInterface/Images/Stopwatch.png: Removed.
  • UserInterface/Images/Stopwatch@2x.png: Removed.
  • UserInterface/Images/Stopwatch.svg: Added.
  • UserInterface/Views/TimelineIcons.css:

(.stopwatch-icon .icon): Use Stopwatch.svg.
(body:not(.mac-platform, .windows-platform) .stopwatch-icon .icon): Added for GTK+.

16:44 Changeset [196405] by ryanhaddad@apple.com
  • 1 edit
    1 add in trunk/LayoutTests

Adding an ios-simulator expectation for fast/dom/event-handler-attributes.html
https://bugs.webkit.org/show_bug.cgi?id=153763

Unreviewed test gardening.

  • platform/ios-simulator/fast/dom/event-handler-attributes-expected.txt: Added.
16:32 Changeset [196404] by mattbaker@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Switching actions in Edit Breakpoint popover causes a jerk
https://bugs.webkit.org/show_bug.cgi?id=154093
<rdar://problem/24597869>

Reviewed by Timothy Hatcher.

Adjusted CodeMirror eval editor styles to match vanilla input field.

  • UserInterface/Views/BreakpointActionView.css:

(.breakpoint-action-eval-editor):

16:29 Changeset [196403] by jmarcell@apple.com
  • 6 edits in trunk/Tools

Remove calls to parseInt in order to work with non-integer revisions
https://bugs.webkit.org/show_bug.cgi?id=153820

Reviewed by Daniel Bates.

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

(BuildbotIteration.prototype.sourceStampChanges): Remove calls to parseInt in order to work with non-integer
revisions.
(BuildbotIteration.prototype._parseData): Ditto.

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

(BuildbotQueue.prototype.update): Ditto.

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

(MockBuildbotQueueView.prototype._latestProductiveIteration): Change integers to strings in test code.

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

(MockTrac.prototype.get oldestRecordedRevisionNumber): Ditto.
(MockTrac.prototype.get latestRecordedRevisionNumber): Ditto.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/tests/tests.js: Ditto.
16:29 Changeset [196402] by jmarcell@apple.com
  • 5 edits in trunk/Tools

Teach dashboard code to compare non-integer revisions
https://bugs.webkit.org/show_bug.cgi?id=152345

Reviewed by Daniel Bates.

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

(BuildbotQueue.prototype.compareIterationsByRevisions): Compare non-integer revisions.

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

(BuildbotQueueView.prototype._appendPendingRevisionCount): Use Trac.indexOfRevision in order to compare non-integer
revisions. Also uses new Trac.commitsOnBranchLaterThanRevision method.
(BuildbotQueueView.prototype._popoverLinesForCommitRange): Ditto.
(BuildbotQueueView.prototype._presentPopoverForPendingCommits): Use Trac.indexOfRevision in order to compare non-integer
revisions. Also uses new Trac.nextRevision method to calculate a revision range.
(BuildbotQueueView.prototype._revisionContentWithPopoverForIteration): Ditto.

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

(Trac.prototype._commitsOnBranch): Renamed this to indicate that it should be a private method used by the latter two new
methods.
(Trac.prototype.commitsOnBranchLaterThanRevision): Finds revisions on a branch later than the specified revision.
(Trac.prototype.commitsOnBranchInRevisionRange): Finds revisions on a branch within a specified range.
(Trac.prototype.nextRevision): Finds the next revision after a given revision on a specific branch.
(Trac.prototype.indexOfRevision): Finds the index of a given revision within the recordedCommits array.
(Trac.prototype.commitsOnBranch): Deleted. Renamed to _commitsOnBranch.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/tests/tests.js: Added unit tests.
16:10 Changeset [196401] by eric.carlson@apple.com
  • 12 edits in trunk

Update "manual" caption track logic
https://bugs.webkit.org/show_bug.cgi?id=154084
<rdar://problem/24530516>

Reviewed by Dean Jackson.

No new tests, media/track/track-manual-mode.html was updated.

  • English.lproj/Localizable.strings: Add new string.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::addTextTrack): track.setManualSelectionMode is no more.
(WebCore::HTMLMediaElement::configureTextTrackGroup): Never enable a track automatically when

in manual selection mode.

(WebCore::HTMLMediaElement::captionPreferencesChanged): track.setManualSelectionMode is no more.

  • html/track/TextTrack.cpp:

(WebCore::TextTrack::containsOnlyForcedSubtitles): Return true for forced tracks.
(WebCore::TextTrack::kind): Deleted.

  • html/track/TextTrack.h:
  • html/track/TrackBase.h:

(WebCore::TrackBase::kind): De-virtualize, nobody overrides it.

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::trackDisplayName): Include "forced" in the name of forced tracks.

  • platform/LocalizedStrings.cpp:

(WebCore::forcedTrackMenuItemText): New.

  • platform/LocalizedStrings.h:
16:03 Changeset [196400] by jiewen_tan@apple.com
  • 100 edits in trunk/Source

Rename *Event::create* which creates events for bindings to *Event::createForBindings* and cleanup corresponding paths
https://bugs.webkit.org/show_bug.cgi?id=153903
<rdar://problem/24518146>

Reviewed by Darin Adler.

Source/WebCore:

Rename Event::create(const AtomicString&, const EventInit&) to Event::createForBindings
(const AtomicString&, const EventInit&) and for all the subclasses as well in order to
support Event.isTrusted. Besides, some of the subclasses use the create method for bindings
to create events not for bindings and vice versa. Therefore, this patch also cleanup
corresponding paths to ensure no misuse of the create mehtod. The same for Event::create()
as it is combined with Event::initEvent to create an event for bindings for legacy content.

After this patch, all call sites of *Event::create* are supposed to use *Event::create
to create events for user agent and *Event::createForBindings for bindings.

No change in behavior.

  • Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.h:

(WebCore::WebKitPlaybackTargetAvailabilityEvent::create):
(WebCore::WebKitPlaybackTargetAvailabilityEvent::createForBindings):
(WebCore::WebKitPlaybackTargetAvailabilityEventInit::WebKitPlaybackTargetAvailabilityEventInit): Deleted.

  • Modules/encryptedmedia/MediaKeyMessageEvent.cpp:

(WebCore::MediaKeyMessageEvent::MediaKeyMessageEvent):
(WebCore::MediaKeyMessageEventInit::MediaKeyMessageEventInit): Deleted.

  • Modules/encryptedmedia/MediaKeyMessageEvent.h:

(WebCore::MediaKeyMessageEvent::create):
(WebCore::MediaKeyMessageEvent::createForBindings):

  • Modules/encryptedmedia/MediaKeyNeededEvent.cpp:

(WebCore::MediaKeyNeededEvent::MediaKeyNeededEvent):
(WebCore::MediaKeyNeededEventInit::MediaKeyNeededEventInit): Deleted.

  • Modules/encryptedmedia/MediaKeyNeededEvent.h:

(WebCore::MediaKeyNeededEvent::create):
(WebCore::MediaKeyNeededEvent::createForBindings):

  • Modules/encryptedmedia/MediaKeySession.cpp:

(WebCore::MediaKeySession::sendMessage):

  • Modules/gamepad/GamepadEvent.h:

(WebCore::GamepadEvent::create):
(WebCore::GamepadEvent::createForBindings):
(WebCore::GamepadEventInit::GamepadEventInit): Deleted.

  • Modules/indieui/UIRequestEvent.cpp:

(WebCore::UIRequestEvent::createForBindings):
(WebCore::UIRequestEvent::UIRequestEvent):
(WebCore::UIRequestEventInit::UIRequestEventInit): Deleted.
(WebCore::UIRequestEvent::create): Deleted.

  • Modules/indieui/UIRequestEvent.h:
  • Modules/mediastream/MediaStreamEvent.cpp:

(WebCore::MediaStreamEvent::createForBindings):
(WebCore::MediaStreamEventInit::MediaStreamEventInit): Deleted.
(WebCore::MediaStreamEvent::create): Deleted.

  • Modules/mediastream/MediaStreamEvent.h:
  • Modules/mediastream/MediaStreamTrackEvent.cpp:

(WebCore::MediaStreamTrackEvent::createForBindings):
(WebCore::MediaStreamTrackEventInit::MediaStreamTrackEventInit): Deleted.
(WebCore::MediaStreamTrackEvent::create): Deleted.

  • Modules/mediastream/MediaStreamTrackEvent.h:
  • Modules/mediastream/RTCDTMFToneChangeEvent.cpp:

(WebCore::RTCDTMFToneChangeEvent::createForBindings):
(WebCore::RTCDTMFToneChangeEvent::create): Deleted.

  • Modules/mediastream/RTCDTMFToneChangeEvent.h:
  • Modules/mediastream/RTCDataChannelEvent.cpp:

(WebCore::RTCDataChannelEvent::createForBindings):
(WebCore::RTCDataChannelEvent::create): Deleted.

  • Modules/mediastream/RTCDataChannelEvent.h:
  • Modules/mediastream/RTCIceCandidateEvent.cpp:

(WebCore::RTCIceCandidateEvent::createForBindings):
(WebCore::RTCIceCandidateEvent::create): Deleted.

  • Modules/mediastream/RTCIceCandidateEvent.h:
  • Modules/mediastream/RTCTrackEvent.cpp:

(WebCore::RTCTrackEvent::createForBindings):
(WebCore::RTCTrackEventInit::RTCTrackEventInit): Deleted.
(WebCore::RTCTrackEvent::create): Deleted.

  • Modules/mediastream/RTCTrackEvent.h:
  • Modules/speech/SpeechSynthesisEvent.cpp:

(WebCore::SpeechSynthesisEvent::createForBindings):
(WebCore::SpeechSynthesisEvent::create):
(WebCore::SpeechSynthesisEvent::SpeechSynthesisEvent):

  • Modules/speech/SpeechSynthesisEvent.h:
  • Modules/webaudio/AudioProcessingEvent.cpp:

(WebCore::AudioProcessingEvent::create): Deleted.

  • Modules/webaudio/AudioProcessingEvent.h:

(WebCore::AudioProcessingEvent::create):
(WebCore::AudioProcessingEvent::createForBindings):

  • Modules/webaudio/OfflineAudioCompletionEvent.cpp:

(WebCore::OfflineAudioCompletionEvent::createForBindings):
(WebCore::OfflineAudioCompletionEvent::create): Deleted.

  • Modules/webaudio/OfflineAudioCompletionEvent.h:
  • Modules/websockets/CloseEvent.h:

(WebCore::CloseEvent::create):
(WebCore::CloseEvent::createForBindings):
(WebCore::CloseEvent::CloseEvent):
(WebCore::CloseEventInit::CloseEventInit): Deleted.

  • bindings/objc/DOM.mm:

(-[DOMNode nextFocusNode]):
(-[DOMNode previousFocusNode]):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateConstructorDefinition):

  • dom/AnimationEvent.cpp:

(WebCore::AnimationEventInit::AnimationEventInit): Deleted.

  • dom/AnimationEvent.h:
  • dom/BeforeLoadEvent.h:

(WebCore::BeforeLoadEventInit::BeforeLoadEventInit): Deleted.

  • dom/ClipboardEvent.h:
  • dom/CompositionEvent.cpp:

(WebCore::CompositionEventInit::CompositionEventInit): Deleted.

  • dom/CompositionEvent.h:
  • dom/CustomEvent.cpp:

(WebCore::CustomEventInit::CustomEventInit): Deleted.

  • dom/CustomEvent.h:
  • dom/DeviceMotionEvent.h:
  • dom/DeviceOrientationEvent.h:
  • dom/Document.cpp:

(WebCore::Document::createEvent):

  • dom/Element.cpp:

(WebCore::Element::dispatchMouseEvent):

  • dom/ErrorEvent.cpp:

(WebCore::ErrorEventInit::ErrorEventInit): Deleted.

  • dom/ErrorEvent.h:
  • dom/Event.cpp:

(WebCore::EventInit::EventInit): Deleted.

  • dom/Event.h:

(WebCore::Event::createForBindings):
(WebCore::Event::create): Deleted.

  • dom/FocusEvent.cpp:

(WebCore::FocusEventInit::FocusEventInit): Deleted.

  • dom/FocusEvent.h:
  • dom/HashChangeEvent.h:

(WebCore::HashChangeEventInit::HashChangeEventInit): Deleted.

  • dom/KeyboardEvent.cpp:

(WebCore::KeyboardEvent::KeyboardEvent):
(WebCore::KeyboardEventInit::KeyboardEventInit): Deleted.

  • dom/KeyboardEvent.h:
  • dom/MessageEvent.cpp:

(WebCore::MessageEvent::MessageEvent):
(WebCore::MessageEventInit::MessageEventInit): Deleted.

  • dom/MessageEvent.h:
  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::createForBindings):
(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):
(WebCore::MouseEvent::cloneFor):
(WebCore::MouseEventInit::MouseEventInit): Deleted.

  • dom/MouseEvent.h:

(WebCore::MouseEvent::createForBindings):
(WebCore::MouseEvent::create): Deleted.

  • dom/MouseRelatedEvent.cpp:

(WebCore::MouseRelatedEvent::MouseRelatedEvent):
(WebCore::MouseRelatedEvent::init):

  • dom/MouseRelatedEvent.h:

(WebCore::MouseRelatedEvent::screenX):
(WebCore::MouseRelatedEvent::screenY):
(WebCore::MouseRelatedEvent::screenLocation):
(WebCore::MouseRelatedEvent::clientX):
(WebCore::MouseRelatedEvent::clientY):
(WebCore::MouseRelatedEvent::movementX):
(WebCore::MouseRelatedEvent::movementY):
(WebCore::MouseRelatedEvent::clientLocation):
(WebCore::MouseRelatedEvent::isSimulated):
(WebCore::MouseRelatedEvent::absoluteLocation):
(WebCore::MouseRelatedEvent::setAbsoluteLocation):

  • dom/MutationEvent.h:
  • dom/OverflowEvent.cpp:

(WebCore::OverflowEvent::OverflowEvent):
(WebCore::OverflowEvent::initOverflowEvent):
(WebCore::OverflowEventInit::OverflowEventInit): Deleted.

  • dom/OverflowEvent.h:
  • dom/PageTransitionEvent.cpp:

(WebCore::PageTransitionEventInit::PageTransitionEventInit): Deleted.

  • dom/PageTransitionEvent.h:
  • dom/PopStateEvent.cpp:

(WebCore::PopStateEvent::createForBindings):
(WebCore::PopStateEventInit::PopStateEventInit): Deleted.
(WebCore::PopStateEvent::PopStateEvent): Deleted.
(WebCore::PopStateEvent::create): Deleted.

  • dom/PopStateEvent.h:
  • dom/ProgressEvent.cpp:

(WebCore::ProgressEventInit::ProgressEventInit): Deleted.

  • dom/ProgressEvent.h:

(WebCore::ProgressEvent::createForBindings):
(WebCore::ProgressEvent::create): Deleted.

  • dom/SecurityPolicyViolationEvent.h:

(WebCore::SecurityPolicyViolationEventInit::SecurityPolicyViolationEventInit): Deleted.

  • dom/TextEvent.cpp:

(WebCore::TextEvent::createForBindings):
(WebCore::TextEvent::create): Deleted.

  • dom/TextEvent.h:
  • dom/TouchEvent.h:
  • dom/TransitionEvent.cpp:

(WebCore::TransitionEventInit::TransitionEventInit): Deleted.

  • dom/TransitionEvent.h:
  • dom/UIEvent.cpp:

(WebCore::UIEventInit::UIEventInit): Deleted.

  • dom/UIEvent.h:

(WebCore::UIEvent::createForBindings):
(WebCore::UIEvent::create): Deleted.

  • dom/UIEventWithKeyState.h:

(WebCore::UIEventWithKeyState::ctrlKey):
(WebCore::UIEventWithKeyState::shiftKey):
(WebCore::UIEventWithKeyState::altKey):
(WebCore::UIEventWithKeyState::metaKey):
(WebCore::UIEventWithKeyState::UIEventWithKeyState):

  • dom/WebKitAnimationEvent.cpp:

(WebCore::WebKitAnimationEventInit::WebKitAnimationEventInit): Deleted.

  • dom/WebKitAnimationEvent.h:
  • dom/WebKitTransitionEvent.cpp:

(WebCore::WebKitTransitionEventInit::WebKitTransitionEventInit): Deleted.

  • dom/WebKitTransitionEvent.h:
  • dom/WheelEvent.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerKeyAdded):
(WebCore::HTMLMediaElement::mediaPlayerKeyError):
(WebCore::HTMLMediaElement::mediaPlayerKeyMessage):
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):

  • html/MediaKeyEvent.cpp:

(WebCore::MediaKeyEvent::MediaKeyEvent):
(WebCore::MediaKeyEventInit::MediaKeyEventInit): Deleted.

  • html/MediaKeyEvent.h:
  • html/canvas/WebGLContextEvent.cpp:

(WebCore::WebGLContextEventInit::WebGLContextEventInit): Deleted.

  • html/canvas/WebGLContextEvent.h:
  • html/track/TrackEvent.cpp:

(WebCore::TrackEvent::TrackEvent):
(WebCore::TrackEventInit::TrackEventInit): Deleted.

  • html/track/TrackEvent.h:
  • html/track/TrackListBase.cpp:

(TrackListBase::scheduleTrackEvent):
(TrackListBase::scheduleChangeEvent):

  • page/EventSource.cpp:

(WebCore::EventSource::createMessageEvent):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation):
(WebCore::gatherSecurityPolicyViolationEventData): Deleted.

  • storage/StorageEvent.cpp:

(WebCore::StorageEvent::createForBindings):
(WebCore::StorageEventInit::StorageEventInit): Deleted.
(WebCore::StorageEvent::create): Deleted.

  • storage/StorageEvent.h:
  • svg/SVGZoomEvent.h:

(WebCore::SVGZoomEvent::createForBindings):
(WebCore::SVGZoomEvent::create): Deleted.

  • xml/XMLHttpRequestProgressEvent.h:

(WebCore::XMLHttpRequestProgressEvent::createForBindings):
(WebCore::XMLHttpRequestProgressEvent::create): Deleted.

Source/WebKit2:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::nextAssistableElement):

15:57 Changeset [196399] by andersca@apple.com
  • 8 edits in trunk/Source/WebKit2

Add SPI to remove individual user scripts or user style sheets
https://bugs.webkit.org/show_bug.cgi?id=154046
rdar://problem/23596352

Reviewed by Sam Weinig.

  • UIProcess/API/Cocoa/WKUserContentController.mm:

(-[WKUserContentController _removeUserScript:]):
(-[WKUserContentController _userStyleSheets]):
(-[WKUserContentController _addUserStyleSheet:]):
(-[WKUserContentController _removeUserStyleSheet:]):

  • UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::WebUserContentControllerProxy):
(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::removeUserScript):
(WebKit::WebUserContentControllerProxy::addUserStyleSheet):
(WebKit::WebUserContentControllerProxy::removeUserStyleSheet):
(WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets):

  • UIProcess/UserContent/WebUserContentControllerProxy.h:

(WebKit::WebUserContentControllerProxy::userStyleSheets):

  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::removeUserScript):
(WebKit::WebUserContentController::removeUserStyleSheet):

  • WebProcess/UserContent/WebUserContentController.h:
  • WebProcess/UserContent/WebUserContentController.messages.in:
15:31 Changeset [196398] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Rebaseline imported/w3c/web-platform-tests/html/dom/interfaces.html for ios-simulator after 196392

Unreviewed test gardening.

  • platform/ios-simulator/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt:
15:02 Changeset [196397] by mark.lam@apple.com
  • 3 edits in trunk/Source/WTF

Changed WTFCrash to not trash the crash site register state.
https://bugs.webkit.org/show_bug.cgi?id=153996

Reviewed by Geoffrey Garen.

When doing post-mortem crash site analysis using data from crash reports, it is
immensely valuable to be able to infer the crashing program's state from the
register values at crash time. However, for RELEASE_ASSERT failures, we crash
using WTFCrash(), and WTFCrash() is currently implemented as a function call
that, in turn, calls a lot of other functions to do crash handling before
actually crashing. As a result, the register values captured in the crash
reports are not likely to still contain the values used by the caller function
that failed the RELEASE_ASSERT.

This patch aims to remedy this issue for non-debug builds on OS(DARWIN) ports.
It does so by changing WTFCrash() into an inlined function that has an inlined
asm statement to issues the CPU specific breakpoint trap instruction. As a
result, for non-debug OS(DARWIN) builds, crashes due to failed RELEASE_ASSERTs
will now show up in crash reports as crashing due to EXC_BREAKPOINT (SIGTRAP)
instead of a EXC_BAD_ACCESS (SIGSEGV) on address 0xbbadbeef.

For debug and non-DARWIN builds, WTFCrash() behavior currently remains unchanged.

  • wtf/Assertions.cpp:
  • wtf/Assertions.h:
14:50 Changeset [196396] by ryanhaddad@apple.com
  • 22 edits in trunk/Source/WebCore

Rebaselining bindings tests

Unreviewed test gardening.

No new tests needed.

  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
  • bindings/scripts/test/JS/JSTestCallback.cpp:
  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
  • bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:
  • bindings/scripts/test/JS/JSTestEventTarget.cpp:
  • bindings/scripts/test/JS/JSTestException.cpp:
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
  • bindings/scripts/test/JS/JSTestInterface.cpp:
  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
  • bindings/scripts/test/JS/JSTestNondeterministic.cpp:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:
  • bindings/scripts/test/JS/JSattribute.cpp:
  • bindings/scripts/test/JS/JSreadonly.cpp:
14:16 Changeset [196395] by mark.lam@apple.com
  • 2 edits in trunk/Source/WebKit/mac

WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture: should assert that it is being called from the "main" thread.
https://bugs.webkit.org/show_bug.cgi?id=154059

Reviewed by Geoffrey Garen.

This makes it so that misbehaving clients which call it (indirectly) from another
thread (not the main thread) will fail faster. Otherwise, we get potential
memory corruption that results in strange crashes elsewhere later.

  • WebView/WebFrame.mm:

(-[WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture:]):

14:01 Changeset [196394] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk/Source/WebCore

[cmake] Consolidate CMake code related to image decoders.
https://bugs.webkit.org/show_bug.cgi?id=154074

Patch by Konstantin Tokarev <annulen@yandex.ru> on 2016-02-10
Reviewed by Alex Christensen.

Common image decoder sources, includes and libs are moved to
platform/ImageDecoders.cmake.

Also, added include directories of libjpeg and libpng to
WebCore_SYSTEM_INCLUDE_DIRECTORIES.

No new tests needed.

  • CMakeLists.txt: Moved common include paths to ImageDecoders.cmake.
  • PlatformEfl.cmake: Moved common sources and libs to ImageDecoders.cmake.
  • PlatformGTK.cmake: Ditto.
  • PlatformWinCairo.cmake: Moved common sources to ImageDecoders.cmake.
  • platform/ImageDecoders.cmake: Added.
13:57 Changeset [196393] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebCore

CSSSegmentedFontFace does not need to be reference counted
https://bugs.webkit.org/show_bug.cgi?id=154083

Reviewed by Antti Koivisto.

...There is only ever a single reference to one.

No new tests because there is no behavior change.

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::getFontFace):

  • css/CSSFontSelector.h:
  • css/CSSSegmentedFontFace.h:

(WebCore::CSSSegmentedFontFace::create): Deleted.

13:51 Changeset [196392] by cdumez@apple.com
  • 107 edits
    2 adds in trunk

[Web IDL] interface objects should be Function objects
https://bugs.webkit.org/show_bug.cgi?id=154038
<rdar://problem/24569358>

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline W3C tests now that more checks are passing. Some checks still
fail because a lot of our interfaces should inherit EventTarget and
currently don't (they duplicate the EventTarget API instead).

Also, as per WebIDL, window.NodeFilter's proto should be ObjectPrototype
instead of FunctionPrototype but this is an exceptional case and our new
behavior is consistent with Firefox and Chrome.

  • web-platform-tests/XMLHttpRequest/interfaces-expected.txt:
  • web-platform-tests/dom/events/Event-constructors-expected.txt:
  • web-platform-tests/dom/historical-expected.txt:
  • web-platform-tests/dom/interfaces-expected.txt:
  • web-platform-tests/fetch/api/headers/headers-idl-expected.txt:
  • web-platform-tests/fetch/api/request/request-idl-expected.txt:
  • web-platform-tests/html/dom/interfaces-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-audio-element/audio_constructor-expected.txt:

Source/JavaScriptCore:

Update functionProtoFuncToString() to handle JSObjects that
have the TypeOfShouldCallGetCallData flag and are callable,
as these behave like functions and use ClassInfo::className()
as function name in this case.

  • runtime/FunctionPrototype.cpp:

(JSC::functionProtoFuncToString):

Source/WebCore:

interface objects should be Function objects as per Web IDL:

So window.Event should be a Function object for e.g. but in WebKit it
is a regular EventConstructor JSObject.
Firefox and Chrome match the specification.

Test: js/interface-objects.html

  • bindings/js/JSDOMBinding.cpp:

(WebCore::callThrowTypeError):
(WebCore::DOMConstructorObject::getCallData):
When calling the interface object as a function, we throw a TypeError
with a message asking to use the 'new' operator to match the behavior
of Firefox and Chrome.

  • bindings/js/JSDOMBinding.h:

Add JSC::TypeOfShouldCallGetCallData structure flag and implement
getCallData() so that typeof returns "function", as per the
specification and the behavior of other browsers.

(WebCore::DOMConstructorObject::className):
Implement className() and return "Function" to match the specification and
other browsers. Otherwise, it would fall back to using ClassInfo::className
which os the function name and interface name (e.g. "Event").

  • bindings/js/JSDOMConstructor.h:

(WebCore::JSDOMConstructorNotConstructable::callThrowTypeError):
(WebCore::JSDOMConstructorNotConstructable::getCallData):
As per the specification, interfaces that do not have a [Constructor]
should throw a TypeError when called as a function. Use the "Illegal
constructor" error message to match Firefox and Chrome.

  • bindings/js/JSDOMGlobalObject.h:

(WebCore::getDOMConstructor):
Instead of using objectPrototype as prototype for all DOM constructors,
we now call the prototypeForStructure() static function that is
generated for each bindings class. As per the Web IDL specification,
The Prototype? internal property of an interface object for a
non-callback interface is determined as follows:

  1. If the interface inherits from some other interface, the value of Prototype? is the interface object for that other interface.
  2. If the interface doesn't inherit from any other interface, the value of Prototype? is %FunctionPrototype% ([ECMA-262], section 6.1.7.4).
  • bindings/js/JSImageConstructor.cpp:

(WebCore::JSImageConstructor::prototypeForStructure):
Have the Image's interface object use HTMLElement's interface object
as prototype as HTMLImageElement inherits HTMLElement.

  • bindings/scripts/CodeGenerator.pm:

(getInterfaceExtendedAttributesFromName):
Add a utility function to cheaply retrieve an interface's IDL extended
attributes without actually parsing the IDL. This is used to check if
an interface's parent is marked as [NoInterfaceObject] currently.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):
(GenerateCallbackHeader):
(GenerateCallbackImplementation):
Mark JSGlobalObject* parameter as const as the implementation does not
alter the globalObject.

(GenerateConstructorHelperMethods):

  • Generate prototypeForStructure() function for each bindings class that is not marked as [NoInterfaceObject] so getDOMConstructor() knows which prototype to use for the interface object / constructor when constructing it.
  • Use the interface name for the interface object, without the "Constructor" suffix, to match the behavior of Firefox and Chrome.
  • bindings/scripts/test/*:

Rebaseline bindings tests.

LayoutTests:

Rebaseline / update existing layout tests now that interface objects
are now Function objects. Also add a layout test to cover various
aspects of interface objects.

  • css3/blending/background-blend-mode-property-parsing-expected.txt:
  • css3/blending/blend-mode-property-parsing-expected.txt:
  • css3/blending/script-tests/background-blend-mode-property-parsing.js:

(shouldBeType):

  • css3/blending/script-tests/blend-mode-property-parsing.js:

(shouldBeType):

  • css3/filters/backdrop/backdropfilter-property-parsing-expected.txt:
  • css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js:

(shouldBeType):

  • css3/filters/filter-property-parsing-expected.txt:
  • css3/filters/script-tests/filter-property-parsing.js:

(shouldBeType):

  • fast/css/image-set-parsing-expected.txt:
  • fast/css/script-tests/image-set-parsing.js:

(shouldBeType):

  • fast/dom/DOMException/XPathException-expected.txt:
  • fast/dom/DOMException/prototype-object-expected.txt:
  • fast/dom/DOMException/prototype-object.html:
  • fast/dom/DOMException/resources/XPathException.js:
  • fast/dom/MutationObserver/mutation-record-constructor-expected.txt:
  • fast/dom/MutationObserver/mutation-record-constructor.html:
  • fast/dom/Window/element-constructors-on-window-expected.txt:
  • fast/dom/call-a-constructor-as-a-function-expected.txt:
  • fast/dom/constructor-proto-expected.txt:
  • fast/dom/constructor-proto.html:
  • fast/dom/wrapper-classes-expected.txt:
  • fast/dom/wrapper-classes.html:
  • fast/mediastream/MediaStreamConstructor-expected.txt:
  • fast/mediastream/MediaStreamConstructor.html:
  • fast/workers/constructor-proto-expected.txt:
  • fast/workers/worker-location-expected.txt:
  • http/tests/xmlhttprequest/XMLHttpRequestException-expected.txt:
  • http/tests/xmlhttprequest/XMLHttpRequestException.html:
  • js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
  • js/dom/script-tests/global-constructors-attributes-idb.js:

(constructorPropertiesOnGlobalObject):

  • js/dom/script-tests/global-constructors-attributes.js:

(constructorPropertiesOnGlobalObject):

  • js/interface-objects-expected.txt: Added.
  • js/interface-objects.html: Added.
  • media/encrypted-media/encrypted-media-v2-syntax-expected.txt:
  • media/encrypted-media/encrypted-media-v2-syntax.html:
  • media/track/track-vttcue-expected.txt:
  • platform/mac/fast/dom/Window/window-lookup-precedence-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • svg/custom/SVGException-expected.txt:
  • svg/custom/global-constructors-expected.txt:
  • svg/custom/script-tests/SVGException.js:
  • svg/custom/script-tests/global-constructors.js:

(shouldBeDefined):

  • transforms/2d/transform-value-types-expected.txt:
  • transforms/2d/transform-value-types.html:
13:45 Changeset [196391] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac] Graphical corruption in videos when enabling custom loading path
https://bugs.webkit.org/show_bug.cgi?id=154044

Reviewed by Alex Christensen.

Revert the "Drive-by fix" in r196345 as it breaks the WebCoreNSURLSessionTests.BasicOperation API test.

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(-[WebCoreNSURLSessionDataTask resource:receivedData:length:]):

13:18 Changeset [196390] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Removed the duplicated definition of ChartPaneBase.

  • public/v3/components/chart-pane-base.js:
13:10 Changeset [196389] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking fast/css-generated-content/details-summary-before-after.html as failing on ios-simulator
https://bugs.webkit.org/show_bug.cgi?id=153029

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
13:07 Changeset [196388] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebCore

CSSSegmentedFontFace does not need to be reference counted
https://bugs.webkit.org/show_bug.cgi?id=154083

Reviewed by Antti Koivisto.

...There is only ever a single reference to one.

No new tests because there is no behavior change.

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::getFontFace):

  • css/CSSFontSelector.h:
  • css/CSSSegmentedFontFace.h:

(WebCore::CSSSegmentedFontFace::create): Deleted.

13:07 Changeset [196387] by rniwa@webkit.org
  • 9 edits
    1 move
    1 add in trunk/Websites/perf.webkit.org

Analysis task page on v3 UI should show charts
https://bugs.webkit.org/show_bug.cgi?id=154057

Reviewed by Chris Dumez.

Extracted ChartPaneBase out of ChartPane and added an instance of its new subclass, AnalysisTaskChartPane,
to the analysis task page. The main difference is that ChartPaneBase doesn't depend on the presence of
this._chartsPage unlike ChartPane. It also doesn't have the header with toolbar (to show breakdown, etc...).

  • public/v3/components/base.js:

(ComponentBase.prototype._constructShadowTree): Call htmlTemplate() and cssTemplate() with the right "this".

  • public/v3/components/chart-pane-base.js: Added.

(ChartPaneBase): Extracted from ChartPane.
(ChartPaneBase.prototype.configure): Extracted from the constructor. Separating this function allows the
component to be instantiated inside a HTML template.
(ChartPaneBase.prototype._fetchAnalysisTasks): Moved from ChartPane._fetchAnalysisTasks.
(ChartPaneBase.prototype.platformId): Ditto.
(ChartPaneBase.prototype.metricId): Ditto.
(ChartPaneBase.prototype.setOverviewDomain): Ditto.
(ChartPaneBase.prototype.setMainDomain): Ditto.
(ChartPaneBase.prototype._overviewSelectionDidChange): Extracted from the constructor. This is overridden in
ChartPane and unused in AnalysisTaskChartPane.
(ChartPaneBase.prototype._mainSelectionDidChange): Extracted from ChartPane._mainSelectionDidChange.
(ChartPaneBase.prototype._mainSelectionDidZoom): Extracted from ChartPane._mainSelectionDidZoom.
(ChartPaneBase.prototype._indicatorDidChange): Extracted from ChartPane._indicatorDidChange.
(ChartPaneBase.prototype._didFetchData): Moved from ChartPane._fetchAnalysisTasks.
(ChartPaneBase.prototype._openAnalysisTask): Ditto.
(ChartPaneBase.prototype._openCommitViewer): Ditto. Also fixed a bug that we don't show the spinner while
waiting for the data to be fetched by calling this.render() here.
(ChartPaneBase.prototype._keyup): Moved from ChartPane._keyup. Also fixed the bug that the revisions list
doesn't update by calling this.render() here.
(ChartPaneBase.prototype.render): Extracted from ChartPane.render.
(ChartPaneBase.htmlTemplate): Extracted from ChartPane.htmlTemplate.
(ChartPaneBase.paneHeaderTemplate): Added. This is overridden in ChartPane and unused in AnalysisTaskChartPane.
(ChartPaneBase.cssTemplate): Extracted from ChartPane.htmlTemplate.

  • public/v3/components/chart-styles.js: Renamed from public/v3/pages/page-with-charts.js.

(PageWithCharts): Renamed from PageWithCharts since it no longer extends PageWithHeading.
(ChartStyles.createChartSourceList):

  • public/v3/components/commit-log-viewer.js:

(CommitLogViewer.prototype.view): Set this._repository right away instead of waiting for the fetched data
so that spinner will be shown while the data is being fetched.

  • public/v3/index.html:
  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskChartPane): Added extends ChartPaneBase.
(AnalysisTaskPage): Added. this._chartPane.
(AnalysisTaskPage.prototype._didFetchTask): Initialize this._chartPane with a domain.
(AnalysisTaskPage.prototype.render): Render this._chartPane.
(AnalysisTaskPage.htmlTemplate):

  • public/v3/pages/chart-pane-status-view.js:

(ChartPaneStatusView): Removed the unused router from the argument list.
(ChartPaneStatusView.prototype.pointsRangeForAnalysis): Renamed from analyzeData() since it was ambiguous.
(ChartPaneStatusView.prototype.moveRepositoryWithNotification): Fixed the bug that we don't update the list
of the revisions here.
(ChartPaneStatusView.prototype.computeChartStatusLabels):

  • public/v3/pages/chart-pane.js:

(ChartPane): Now extends ChartPaneBase.
(ChartPane.prototype._overviewSelectionDidChange): Extracted from the constructor.
(ChartPane.prototype._mainSelectionDidChange):
(ChartPane.prototype._mainSelectionDidZoom):
(ChartPane.prototype._indicatorDidChange):
(ChartPane.prototype.render):
(ChartPane.prototype._renderActionToolbar):
(ChartPane.paneHeaderTemplate): Extracted from htmlTemplate.
(ChartPane.cssTemplate):
(ChartPane.overviewOptions.selection.onchange): Deleted.
(ChartPane.prototype._fetchAnalysisTasks): Deleted.
(ChartPane.prototype.platformId): Deleted.
(ChartPane.prototype.metricId): Deleted.
(ChartPane.prototype.setOverviewDomain): Deleted.
(ChartPane.prototype.setMainDomain): Deleted.
(ChartPane.prototype._openCommitViewer): Deleted.
(ChartPane.prototype._didFetchData): Deleted.
(ChartPane.prototype._keyup): Deleted.

  • public/v3/pages/charts-page.js:

(ChartsPage):
(ChartsPage.createDomainForAnalysisTask): Extracted by createDomainForAnalysisTask; used to set the domain
of the charts in the analysis task page.
(ChartsPage.createStateForAnalysisTask):

  • public/v3/pages/dashboard-page.js:

(DashboardPage):
(DashboardPage.prototype._createChartForCell):

13:05 Changeset [196386] by rniwa@webkit.org
  • 4 edits in trunk/Websites/perf.webkit.org

Add the support for maintenance mode
https://bugs.webkit.org/show_bug.cgi?id=154072

Reviewed by Chris Dumez.

Added the crude support for maintenance mode whereby which the reports are stored in the filesystem
instead of the database.

  • config.json: Added maintenanceMode and maintenanceDirectory as well as forgotten siteTitle and

remoteServer.httpdMutexDir.

  • public/api/report.php:

(main): Don't connect to the database or modify database when maintenanceMode is set.

  • public/include/json-header.php:

(ensure_privileged_api_data): Exit with InMaintenanceMode when maintenanceMode is set. This prevents
privileged API such as creating analysis tasks and new A/B testing groups from modifying the database.

12:56 Changeset [196385] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Reaseline imported/w3c/web-platform-tests/html/dom/interfaces.html for ios-simulator after r196374

Unreviewed test gardening.

  • platform/ios-simulator/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt:
12:56 Changeset [196384] by achristensen@apple.com
  • 8 edits in trunk/Source/WebKit2

Fix assertions when loading from WebProcess
https://bugs.webkit.org/show_bug.cgi?id=154079

Reviewed by Anders Carlsson.

Assertions were failing, mostly when using NetworkProcess, and mostly involving Top Sites.
When we do loading from the WebProcess (which we should eventually not allow), we were sometimes
using a private browsing session that did not exist because the UIProcess had told the NetworkProcess
to create a private browsing session with the given SessionID, but the WebProcess was not told about
the private browsing session.
Also, sometimes we were calling NetworkProcess::singleton() from the WebProcess, which caused problems
with the PlatformStrategies object being reset. This prevents that, too.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad):
Added an assertion that we have a network session when we have just made a NetworkingContext with the given SessionID.

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSession::defaultSession):
(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
Call NetworkProcess::singleton only when we know we are in the network process.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy):

  • WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:

(WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
Tell the WebProcesses about the new private session, too. Sometimes they use the new private session.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensurePrivateBrowsingSession):
(WebKit::WebProcess::destroyPrivateBrowsingSession):
Removed useless macros that were always true for all WK2 clients.

12:47 Changeset [196383] by antti@apple.com
  • 13 edits in trunk/Source/WebCore

Optimize style invalidation after class attribute change
https://bugs.webkit.org/show_bug.cgi?id=154075
rdar://problem/12526450

Reviewed by Andreas Kling.

Currently a class attribute change invalidates style for the entire element subtree for any class found in the
active stylesheet set.

This patch optimizes class changes by building a new optimization structure called ancestorClassRules. It contains
rules that have class selectors in the portion of the complex selector that matches ancestor elements. The sets
of rules are hashes by the class name.

On class attribute change the existing StyleInvalidationAnalysis mechanism is used with ancestorClassRules to invalidate
exactly those descendants that are affected by the addition or removal of the class name. This is fast because the CSS JIT
makes selector matching cheap and the number of relevant rules is typically small.

This optimization is very effective on many dynamic pages. For example when focusing and unfocusing the web inspector it
cuts down the number of resolved elements from ~1000 to ~50. Even in PLT it reduces the number of resolved elements by ~11%.

  • css/DocumentRuleSets.cpp:

(WebCore::DocumentRuleSets::collectFeatures):
(WebCore::DocumentRuleSets::ancestorClassRules):

Create optimization RuleSets on-demand when there is an actual dynamic class change.

  • css/DocumentRuleSets.h:

(WebCore::DocumentRuleSets::features):
(WebCore::DocumentRuleSets::sibling):
(WebCore::DocumentRuleSets::uncommonAttribute):

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::ElementRuleCollector):

Add a new constructor that doesn't requires DocumentRuleSets. Only the user and author style is required.

(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchUserRules):

  • css/ElementRuleCollector.h:
  • css/RuleFeature.cpp:

(WebCore::RuleFeatureSet::recursivelyCollectFeaturesFromSelector):

Collect class names that show up in the ancestor portion of the selector.
Make this a member.

(WebCore::RuleFeatureSet::collectFeatures):

Move this code from RuleData.
Add the rule to ancestorClassRules if needed.

(WebCore::RuleFeatureSet::add):
(WebCore::RuleFeatureSet::clear):
(WebCore::RuleFeatureSet::shrinkToFit):
(WebCore::recursivelyCollectFeaturesFromSelector): Deleted.
(WebCore::RuleFeatureSet::collectFeaturesFromSelector): Deleted.

  • css/RuleFeature.h:

(WebCore::RuleFeature::RuleFeature):
(WebCore::RuleFeatureSet::RuleFeatureSet): Deleted.

  • css/RuleSet.cpp:

(WebCore::RuleData::RuleData):
(WebCore::RuleSet::RuleSet):
(WebCore::RuleSet::~RuleSet):
(WebCore::RuleSet::addToRuleSet):
(WebCore::RuleSet::addRule):
(WebCore::RuleSet::addRulesFromSheet):
(WebCore::collectFeaturesFromRuleData): Deleted.

  • css/RuleSet.h:

(WebCore::RuleSet::tagRules):
(WebCore::RuleSet::RuleSet): Deleted.

  • css/StyleInvalidationAnalysis.cpp:

(WebCore::shouldDirtyAllStyle):
(WebCore::StyleInvalidationAnalysis::StyleInvalidationAnalysis):

Add a new constructor that takes a ready made RuleSet instead of a stylesheet.

(WebCore::StyleInvalidationAnalysis::invalidateIfNeeded):
(WebCore::StyleInvalidationAnalysis::invalidateStyleForTree):
(WebCore::StyleInvalidationAnalysis::invalidateStyle):
(WebCore::StyleInvalidationAnalysis::invalidateStyle):

New function for invalidating a subtree instead of the whole document.

  • css/StyleInvalidationAnalysis.h:

(WebCore::StyleInvalidationAnalysis::dirtiesAllStyle):
(WebCore::StyleInvalidationAnalysis::hasShadowPseudoElementRulesInAuthorSheet):

  • dom/Element.cpp:

(WebCore::classStringHasClassName):
(WebCore::collectClasses):
(WebCore::computeClassChange):

Factor to return the changed classes.

(WebCore::invalidateStyleForClassChange):

First filter out classes that don't show up in stylesheets. If something remains invalidate the current
element for inline style change (that is a style change that doesn't affect descendants).

Next check if there are any ancestorClassRules for the changed class. If so use the StyleInvalidationAnalysis
to find any affected descendants and invalidate them with inline style change as well.

(WebCore::Element::classAttributeChanged):

Invalidate for removed classes before setting new attribute value, invalidate for added classes afterwards.

(WebCore::Element::absoluteLinkURL):
(WebCore::checkSelectorForClassChange): Deleted.

  • dom/ElementData.h:

(WebCore::ElementData::setClassNames):
(WebCore::ElementData::classNames):
(WebCore::ElementData::classNamesMemoryOffset):
(WebCore::ElementData::clearClass): Deleted.
(WebCore::ElementData::setClass): Deleted.

12:46 Changeset [196382] by bshafiei@apple.com
  • 2 edits in tags/Safari-602.1.18.6/Source/WebKit

Merged r196377. rdar://problem/24584417

12:45 Changeset [196381] by said@apple.com
  • 6 edits in trunk/PerformanceTests

Add internal benchmark tests for CSS mix-blend-modes and filters
https://bugs.webkit.org/show_bug.cgi?id=154058

Provisionally reviewed by Jon Lee.

  • Animometer/resources/debug-runner/tests.js: Include the new tests in the

"HTML suite" of the debug runner.

  • Animometer/resources/extensions.js:

(Utilities.browserPrefix):
(Utilities.setElementPrefixedProperty): Utility functions to allow setting
prefixed style properties.

  • Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:

Set the mix-blend-mode and the filter to some random values if the options
of the test requested that.

  • Animometer/tests/bouncing-particles/resources/bouncing-particles.js:

(parseShapeParameters): Parse the url options "blend" and "filter" and set
the corresponding flags.

  • Animometer/tests/resources/main.js:

(randomStyleMixBlendMode):
(randomStyleFilter): Return random mix-blend-mode and filter.

12:33 Changeset [196380] by matthew_hanson@apple.com
  • 3 edits in branches/safari-601-branch/Source/WebCore

Merge r196226. rdar://problem/24417430

12:33 Changeset [196379] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebCore

Merge r196208. rdar://problem/24417430

12:33 Changeset [196378] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebCore

Merge r196206. rdar://problem/24417430

11:56 Changeset [196377] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix internal Windows build
https://bugs.webkit.org/show_bug.cgi?id=154080
rdar://problem/24584417

Reviewed by Brent Fulgham.

  • CMakeLists.txt:

Explicitly make WebKit dependent on WebKitGUID so that WebKit will not start building
before WebKitGUID is finished generating and copying all headers, including WebKit/WebKit.h.

11:54 Changeset [196376] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

Addressing post-review comments after r196322

Unreviwed.

  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::font):

  • css/CSSFontFaceSource.h:
11:53 Changeset [196375] by bshafiei@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebInspectorUI

Merge patch for rdar://problem/24267980.

11:47 Changeset [196374] by cdumez@apple.com
  • 17 edits
    5 adds in trunk

Attributes on the Window instance should be configurable unless [Unforgeable]
https://bugs.webkit.org/show_bug.cgi?id=153920
<rdar://problem/24563211>

Reviewed by Darin Adler.

Source/JavaScriptCore:

Marking the Window instance attributes as configurable but cause
getOwnPropertyDescriptor() to report them as configurable, as
expected. However, trying to delete them would actually lead to
unexpected behavior because:

  • We did not reify custom accessor properties (most of the Window properties are custom accessors) upon deletion.
  • For non-reified static properties marked as configurable, JSObject::deleteProperty() would attempt to call the property setter with undefined. As a result, calling delete window.name would cause window.name to become the string "undefined" instead of the undefined value.
  • runtime/JSObject.cpp:

(JSC::getClassPropertyNames):
Now that we reify ALL properties, we only need to check the property table
if we have not reified. As a result, I dropped the 'didReify' parameter for
this function and instead only call this function if we have not yet reified.

(JSC::JSObject::putInlineSlow):
Only call putEntry() if we have not reified: Drop the

'
!(entry->attributes() & BuiltinOrFunctionOrAccessor)'

check as such properties now get reified as well.

(JSC::JSObject::deleteProperty):

  • Call reifyAllStaticProperties() instead of reifyStaticFunctionsForDelete() so that we now reify all properties upon deletion, including the custom accessors. reifyStaticFunctionsForDelete() is now removed and the same reification function is now used by: deletion, getOwnPropertyDescriptor() and eager reification of the prototype objects in the bindings.
  • Drop code that falls back to calling the static property setter with undefined if we cannot find the property in the property storage. As we now reify ALL properties, the code removing the property from the property storage should succeed, provided that the property actually exists.

(JSC::JSObject::getOwnNonIndexPropertyNames):
Only call getClassPropertyNames() if we have not reified. We should no longer
check the static property table after reifying now that we reify all
properties.

(JSC::JSObject::reifyAllStaticProperties):
Merge with reifyStaticFunctionsForDelete(). The only behavior change is the
flattening to an uncacheable dictionary, like reifyStaticFunctionsForDelete()
used to do.

  • runtime/JSObject.h:

Source/WebCore:

Attributes on the Window instance should be configurable unless [Unforgeable]:

  1. 'constructor' property:
  2. Constructor properties (e.g. window.Node):
  3. IDL attributes:

Firefox complies with the WebIDL specification but WebKit does not for 1. and 3.

Test: fast/dom/Window/window-properties-configurable.html

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::getOwnPropertySlot):
For known Window properties (i.e. properties in the static property table),
if we have reified and this is same-origin access, then call
Base::getOwnPropertySlot() to get the property from the local property
storage. If we have not reified yet, or this is cross-origin access, query
the static property table. This is to match the behavior of Firefox and
Chrome which seem to keep returning the original properties upon cross
origin access, even if those were deleted or redefined.

(WebCore::JSDOMWindow::put):
The previous code used to call the static property setter for properties in
the static table. However, this does not do the right thing if properties
were reified. For example, deleting window.name and then trying to set it
again would not work. Therefore, update this code to only do this if the
properties have not been reified, similarly to what is done in
JSObject::putInlineSlow().

  • bindings/scripts/CodeGeneratorJS.pm:

(ConstructorShouldBeOnInstance):
Add a FIXME comment indicating that window.constructor should be on
the prototype as per the Web IDL specification.

(GenerateAttributesHashTable):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
  • bindings/scripts/test/JS/JSTestException.cpp:
  • bindings/scripts/test/JS/JSTestObj.cpp:

Rebaseline bindings tests.

LayoutTests:

  • fast/dom/Window/window-properties-configurable-expected.txt: Added.
  • fast/dom/Window/window-properties-configurable.html: Added.

Add a test to check that Window properties are reported as configurable
unless the [Unforgeable] ones and that deleting them actually works.

  • fast/dom/global-constructors.html:

Update test so it no longer expects window.Node to be shadowable. As per
the specification, the "Node" property is on the window instance, not its
prototype. Therefore, it should cannot be shadowed and setting it to
something actually overwites the previous value, given that the property
is writable as per:

I have verified that the new behavior is consistent with Firefox.

  • http/tests/security/cross-origin-reified-window-property-access-expected.txt: Added.
  • http/tests/security/cross-origin-reified-window-property-access.html: Added.
  • http/tests/security/resources/reify-window.html: Added.

Add a test case to cover cross-origin access of Window properties after
reification.

  • js/getOwnPropertyDescriptor-unforgeable-attributes-expected.txt:
  • js/getOwnPropertyDescriptor-unforgeable-attributes.html:

Drop window.self from the list of unforgeable attributes. This attribute
is not unforgeable in our implementation or in the specification:

  • js/getOwnPropertyDescriptor-window-attributes-expected.txt:
  • js/getOwnPropertyDescriptor-window-attributes.html:
  • Add coverage for window.self which is a regular Window property.
  • Add coverage for window.Node which is a constructor property
  • Add coverage for window.constructor. It should really be on the prototype as per the specification but this at least checks that the property is configurable, as per the specification.
  • Rebaseline the test as more checks are passing now that Window properties are marked as configurable.
11:27 Changeset [196373] by beidson@apple.com
  • 3 edits in trunk/Source/WebCore

Modern IDB: Ref cycle between IDBObjectStore and IDBTransaction.
https://bugs.webkit.org/show_bug.cgi?id=154061

Reviewed by Alex Christensen.

No new tests (Currently untestable).

  • Modules/indexeddb/client/IDBTransactionImpl.cpp:

(WebCore::IDBClient::IDBTransaction::transitionedToFinishing): Make sure the new state makes sense,

set the new state, and then clear the set of referenced object stores which is no longer needed.

(WebCore::IDBClient::IDBTransaction::abort):
(WebCore::IDBClient::IDBTransaction::commit):

  • Modules/indexeddb/client/IDBTransactionImpl.h:
11:22 Changeset [196372] by jonlee@apple.com
  • 9 edits in trunk/PerformanceTests

Add a ramp controller
https://bugs.webkit.org/show_bug.cgi?id=154028

Provisionally reviewed by Said Abou-Hallawa.

Enhance the graph to include a complexity-fps graph, in addition
to the time graph.

  • Animometer/developer.html: Add a ramp option.
  • Animometer/resources/debug-runner/animometer.css: Update the style.
  • Animometer/resources/strings.js: Flatten the Strings.text constants.
  • Animometer/resources/debug-runner/animometer.js:

(ResultsTable.call._addGraphButton): Refactor.
(ResultsTable.call._addTest): Add regression data.
(benchmarkController): Add a form that allows the user to switch between the two forms,
Add a form that allows the user to toggle different data. Hide certain header columns
depending on the selected controller.

  • Animometer/resources/debug-runner/graph.js: Add the complexity regressions.
  • Animometer/resources/debug-runner/tests.js: Add headers for the ramp results.
  • Animometer/resources/runner/animometer.js:

(ResultsTable): If a header is disabled don't include them in _flattenedHeaders.

  • Animometer/tests/resources/main.js:

(Controller): Allow options to specify the capacity for sample arrays.
(Regression): A piecewise regression that tries to fit a slope and a flat profile.
(_calculateRegression): Options can fix the slope and bias when calculating the minimal
error. Sweep across the samples in time (which could be backward depending on the controller)
and calculate the intersection point.
(RampController): This controller assumes that the target frame rate is below
58 FPS. It runs in two stages. The first stage quickly determines the order of
magnitude of objects needed to stress the system by the setting the complexity
to increasingly difficult tiers. Perform a series of ramps descending from a
high-water mark of complexity. The complexity needed to reach the target frame
length is done by performing a piecewise regression on each ramp, and track a
running average of these values. For the next ramp, make that running average
the center of the ramp. With a minimum complexity of 0, the high-water mark is
twice that average. The score is based on the highest complexity that can
reach 60 fps.

11:22 Changeset [196371] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Skop fast/regions/text-break-properties.html on ios-simulator
https://bugs.webkit.org/show_bug.cgi?id=153762

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
10:20 Changeset [196370] by mitz@apple.com
  • 4 edits in trunk/Source/WebKit2

[Mac] Stop installing the legacy processes
https://bugs.webkit.org/show_bug.cgi?id=154062

Reviewed by Anders Carlsson.

  • Configurations/All.xcconfig: Removed the legacy processes from EXCLUDED_SOURCE_FILE_NAMES for iOS, now that they are no longer included in a Copy Files build phase.
  • Configurations/BaseLegacyProcess.xcconfig: Set SKIP_INSTALL to YES for OS X as well.
  • WebKit2.xcodeproj/project.pbxproj: Removed the Copy Files build phase that copied the processes into the framework in engineering builds. Renamed the “Add current version symlinks” script build phase to “Add XPCServices symlink”, and changed it to do just that.
10:13 Changeset [196369] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r196251.
https://bugs.webkit.org/show_bug.cgi?id=154078

Large regression on Dromaeo needs explanation (Requested by
kling on #webkit).

Reverted changeset:

"Visiting a WeakBlock should report bytes visited, since we
reported them allocated."
https://bugs.webkit.org/show_bug.cgi?id=153978
http://trac.webkit.org/changeset/196251

09:50 Changeset [196368] by ossy@webkit.org
  • 5 edits in trunk/Source/JavaScriptCore

REGRESSION(r196331): It made ~180 JSC tests crash on ARMv7 Linux
https://bugs.webkit.org/show_bug.cgi?id=154064

Reviewed by Mark Lam.

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::generate): Added EABI_32BIT_DUMMY_ARG where it is necessary.

  • dfg/DFGSpeculativeJIT.h: Fixed the comment.
  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState): Added.

  • wasm/WASMFunctionCompiler.h: Fixed the comment.
09:23 Changeset [196367] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r195770): Use-after-free in ResourceLoaderOptions::cachingPolicy
https://bugs.webkit.org/show_bug.cgi?id=153727
<rdar://problem/24429886>

Reviewed by Darin Adler.

Follow-up after r195965. Only protect those parts of CachedResource::removeClient() which
affect the MemoryCache when allowsCaching() is false.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::removeClient):

08:53 Changeset [196366] by bshafiei@apple.com
  • 6 edits
    2 copies in branches/safari-601-branch/Source/JavaScriptCore

Merged r196179. rdar://problem/24574519

02:28 Changeset [196365] by ossy@webkit.org
  • 2 edits in trunk/Source/WebCore
Fix the !(ENABLE(SHADOW_DOM)
ENABLE(DETAILS_ELEMENT)) after r196281

https://bugs.webkit.org/show_bug.cgi?id=154035

Reviewed by Antti Koivisto.

  • dom/ComposedTreeIterator.h:

(WebCore::ComposedTreeIterator::Context::Context):

Note: See TracTimeline for information about the timeline view.