Timeline



Aug 18, 2015:

11:23 PM Changeset in webkit [188634] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

[Cocoa] Punctuation near Hindi text is garbled when styled with the system font
https://bugs.webkit.org/show_bug.cgi?id=148164

Reviewed by Brian Burg.

Source/WebCore:

Fonts cache whether or not they are the system font. This caching took place at the end of Font::platformInit().
However, in the middle of Font::platformInit(), we look up a glyph, which calls GlyphPage::fill() which consults
with this cache. However, at this point, the cache has not been constructed yet. The solution is just to
construct the cache earlier (at the beginning of the function).

Consulting with the cache before it is populated causes it to erroneously say that no fonts are system fonts.
Then, we use Core Graphics to ask for glyphs instead of Core Text. Core Graphics, however, is incapable of
handling the system font, and returns us garbled results. In particular, when the system language is set to
Japanese, the system font does not support punctuation, and Core Text tells us so. However, Core Graphics
erroneously tells us that the system font does support punctuation.

Then, if text is near the punctuation which causes us to take the complex text codepath (such as Hindi text),
we tell Core Text to explicitly lay out the punctuation using the system font (which does not support
punctuation). Core Text then replies that the provided font doesn't support the punctuation, and that we should
use LastResort with some other glyphs instead. WebKit then disregards the font CoreText told us to use (because
we are oh-so-sure that the font in question supports punctuation) and uses the LastResort glyph IDs with our
font, which causes arbitrary glyphs to be shown.

Test: fast/text/hindi-system-font-punctuation.html

  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::Font::platformInit):

LayoutTests:

This test is only relevant when the system font is set to Japanese or Simplified Chinese. In these
languages, the system font doesn't support punctuation, but CG will erroneously say that it does.

I intend to implement testing infrastructure which will allow us to mock the system language,
thereby allowing this test to be valid on all machines. The tracking bug for this effort is
https://bugs.webkit.org/show_bug.cgi?id=148168

  • fast/text/hindi-system-font-punctuation-expected.html: Added.
  • fast/text/hindi-system-font-punctuation.html: Added.
10:52 PM Changeset in webkit [188633] by zandobersek@gmail.com
  • 7 edits in trunk/Source

[GLib] GMainLoopSource should receive the std::function<> objects through rvalue references
https://bugs.webkit.org/show_bug.cgi?id=147981

Reviewed by Carlos Garcia Campos.

Source/WebKit2:

  • NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:

(WebKit::NetworkCache::runTaskInQueue): Move the std::function<> into the scheduling call.

Source/WTF:

Scheduling methods on GMainLoopSource and GThreadSafeMainLoopSource should
have the std::function<> objects passed through rvalue references, and should
move the passed-in objects forward when required.

  • wtf/glib/GMainLoopSource.cpp:

(WTF::GMainLoopSource::schedule):
(WTF::GMainLoopSource::scheduleAfterDelay):
(WTF::GMainLoopSource::scheduleAndDeleteOnDestroy):
(WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy):

  • wtf/glib/GMainLoopSource.h:
  • wtf/glib/GThreadSafeMainLoopSource.cpp:

(WTF::GThreadSafeMainLoopSource::schedule):
(WTF::GThreadSafeMainLoopSource::scheduleAfterDelay):

  • wtf/glib/GThreadSafeMainLoopSource.h:
10:09 PM Changeset in webkit [188632] by BJ Burg
  • 2 edits in trunk/LayoutTests

[Win] Test Gardening after r188598

Unreviewed. Really skip all inspector/ tests until the test harnesses are fixed.
This work is tracked by <https://bugs.webkit.org/show_bug.cgi?id=148025> and
<https://bugs.webkit.org/show_bug.cgi?id=148037>.

  • platform/win/TestExpectations:
10:00 PM Changeset in webkit [188631] by commit-queue@webkit.org
  • 14 edits
    4 adds in trunk

Web Inspector: Links for rules in <style> are incorrect, do not account for <style> offset in the document
https://bugs.webkit.org/show_bug.cgi?id=148141

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-08-18
Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/protocol/CSS.json:

Extend StyleSheetHeader to include start offset information and a bit
for whether or not this was an inline style tag created by the parser.
These match additions to Blink's protocol.

Source/WebCore:

Test: inspector/css/getAllStyleSheets.html

  • css/CSSStyleSheet.h:
  • css/CSSStyleSheet.cpp:

(WebCore::CSSStyleSheet::create):
(WebCore::CSSStyleSheet::createInline):
(WebCore::CSSStyleSheet::CSSStyleSheet):
Include the starting position when created by the Parser.
Default to the minimum position, which should never be
possible for an inline <style> because the "<style>" characters
themselves require at least some offset.

  • dom/InlineStyleSheetOwner.cpp:

(WebCore::InlineStyleSheetOwner::createSheet):
Provide the start position offset for this stylesheet if it was inline.

  • inspector/InspectorStyleSheet.cpp:

(WebCore::InspectorStyleSheet::buildObjectForStyleSheetInfo):
Include new protocol values for the style sheet.

Source/WebInspectorUI:

  • UserInterface/Controllers/CSSStyleManager.js:

(WebInspector.CSSStyleManager):
(WebInspector.CSSStyleManager.prototype.get styleSheets):
(WebInspector.CSSStyleManager.prototype.fetchStyleSheetsIfNeeded):
(WebInspector.CSSStyleManager.prototype.styleSheetForIdentifier):
(WebInspector.CSSStyleManager.prototype._mainResourceDidChange):
Update more information about a StyleSheet when fetched.

  • UserInterface/Models/CSSRule.js:

(WebInspector.CSSRule.prototype.update):
Eliminate usage of delete.

  • UserInterface/Models/CSSStyleSheet.js:

(WebInspector.CSSStyleSheet):
(WebInspector.CSSStyleSheet.prototype.get startLineNumber):
(WebInspector.CSSStyleSheet.prototype.get startColumnNumber):
(WebInspector.CSSStyleSheet.prototype.hasInfo):
(WebInspector.CSSStyleSheet.prototype.isInlineStyleTag):
(WebInspector.CSSStyleSheet.prototype.updateInfo):
Include more information about this stylesheet.

(WebInspector.CSSStyleSheet.prototype.offsetSourceCodeLocation):
Include helper API to offset a source code location by the startLine/Column
of this stylesheet itself, if it was an inline style.

(WebInspector.CSSStyleSheet.prototype.isInlineStyleAttributeStyleSheet):
(WebInspector.CSSStyleSheet.prototype.markAsInlineStyleAttributeStyleSheet):
(WebInspector.CSSStyleSheet.isInlineStyle): Deleted.
(WebInspector.CSSStyleSheet.prototype.markAsInlineStyle): Deleted.
Rename for clarity.

  • UserInterface/Models/DOMNodeStyles.js:

(WebInspector.DOMNodeStyles.prototype.refresh):
Fetch stylesheet header information eagerly, so we have them early on.

(WebInspector.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
(WebInspector.DOMNodeStyles.prototype._parseRulePayload):
Offset sourceCodeLocations for CSSRules based on the StyleSheet offset.

  • UserInterface/Models/SourceCodeLocation.js:

(WebInspector.SourceCodeLocation.prototype.update):
Improve coding style.

LayoutTests:

  • inspector/css/getAllStyleSheets-expected.txt: Added.
  • inspector/css/getAllStyleSheets.html: Added.
  • inspector/css/resources/external.css: Added.

(body):
Test for style sheet header information for external and inline stylesheets.

9:56 PM Changeset in webkit [188630] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Add proper formatting for editing styles in the Visual Panel
https://bugs.webkit.org/show_bug.cgi?id=148147

Reviewed by Timothy Hatcher.

Editing styles in the Visual styles panel now preserves whitespace in the related resource file.

  • UserInterface/Views/VisualStylePropertyCombiner.js:

(WebInspector.VisualStylePropertyCombiner):
(WebInspector.VisualStylePropertyCombiner.prototype.modifyPropertyText):

  • UserInterface/Views/VisualStylePropertyEditor.js:

(WebInspector.VisualStylePropertyEditor):
(WebInspector.VisualStylePropertyEditor.generateFormattedTextForNewProperty):
(WebInspector.VisualStylePropertyEditor.prototype.modifyPropertyText):

9:54 PM Changeset in webkit [188629] by Devin Rousso
  • 7 edits in trunk/Source/WebInspectorUI

Web Inspector: Add support for positioning Visual editors on non-retina displays
https://bugs.webkit.org/show_bug.cgi?id=148160

Reviewed by Timothy Hatcher.

Cleans up the positioning, dimensions, and widths of the
Visual editors on non-retina displays.

  • UserInterface/Views/VisualStyleColorPicker.css:

(.visual-style-property-container.input-color-picker > .visual-style-property-value-container > input):

  • UserInterface/Views/VisualStyleDetailsPanel.css:

(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row.visual-style-separated-row):
(@media (-webkit-min-device-pixel-ratio: 2)):

  • UserInterface/Views/VisualStyleDetailsPanel.js:

(WebInspector.VisualStyleDetailsPanel.prototype._clearModifiedSection):

  • UserInterface/Views/VisualStylePropertyEditorLink.css:

(.visual-style-property-editor-link):
(.visual-style-property-editor-link > .visual-style-property-editor-link-border.left):
(.visual-style-property-editor-link.link-all > .visual-style-property-editor-link-border.left):
(.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-border):
(.visual-style-property-editor-link > .visual-style-property-editor-link-icon):
(.visual-style-property-editor-link:not(.link-all) > .visual-style-property-editor-link-icon):
(@media (-webkit-min-device-pixel-ratio: 2)):
(.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-border.left):
(.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-icon:hover + .visual-style-property-editor-link-border.right): Deleted.
(.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-border.right): Deleted.
(.visual-style-property-editor-link.link-all > .visual-style-property-editor-link-icon): Deleted.

  • UserInterface/Views/VisualStyleSelectorTreeItem.css:

(.item.visual-style-selector-item > input[type="checkbox"]):
(.item.visual-style-selector-item > .icon):
(.item.visual-style-selector-item.selector-invalid > .titles > .title::before):
(@media (-webkit-min-device-pixel-ratio: 2)):
(.item.visual-style-selector-item > .titles):
(.item.visual-style-selector-item.selector-invalid > .icon): Deleted.

  • UserInterface/Views/VisualStyleTimingEditor.css:

(.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor):
(@media (-webkit-min-device-pixel-ratio: 2)):

9:50 PM Changeset in webkit [188628] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Show the computed value in an overlay for numerical Visual Editors
https://bugs.webkit.org/show_bug.cgi?id=148161

Reviewed by Timothy Hatcher.

Adds an "Unchanged" option to the number-based Visual editors that shows the
computed value if it is not a number (it would therefore be a keyword).

  • UserInterface/Views/VisualStyleNumberInputBox.css:

(.visual-style-property-container > .visual-style-property-value-container > .number-input-container):
(.visual-style-property-container > .visual-style-property-value-container > .number-input-container:not(.has-value) > span):

  • UserInterface/Views/VisualStyleNumberInputBox.js:

(WebInspector.VisualStyleNumberInputBox):
(WebInspector.VisualStyleNumberInputBox.prototype.set value):
(WebInspector.VisualStyleNumberInputBox.prototype.get units):
(WebInspector.VisualStyleNumberInputBox.prototype.set units):
(WebInspector.VisualStyleNumberInputBox.prototype.set placeholder):
(WebInspector.VisualStyleNumberInputBox.prototype.get synthesizedValue):
(WebInspector.VisualStyleNumberInputBox.prototype.set _unitsElementTextContent):
(WebInspector.VisualStyleNumberInputBox.prototype._markUnitsContainerIfInputHasValue):
(WebInspector.VisualStyleNumberInputBox.prototype._keywordChanged):
(WebInspector.VisualStyleNumberInputBox.prototype._valueNumberInputKeyDown):
(WebInspector.VisualStyleNumberInputBox.prototype._numberInputChanged):

9:50 PM Changeset in webkit [188627] by mitz@apple.com
  • 3 edits in trunk/Source/WebKit2

[iOS] Safari’s Web Content process crashes when decoding an NSError containing an identity
https://bugs.webkit.org/show_bug.cgi?id=148135

Reviewed by Sam Weinig.

  • Configurations/WebContent-iOS.entitlements: Added the com.apple.identities keychain access group. The Networking process already has it since r169655.
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitialize): Always allow the UI process to decode keys.

9:35 PM Changeset in webkit [188626] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Small Caps variant checkbox should be to the left of the Small Caps label
https://bugs.webkit.org/show_bug.cgi?id=148102

Reviewed by Timothy Hatcher.

  • UserInterface/Views/VisualStyleKeywordCheckbox.css:

(.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input): Deleted.
(.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input::after):
(.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input::before): Deleted.

9:23 PM Changeset in webkit [188625] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

[EFL] Web Inspector: make to use StringBuilder in inspectorBaseURL
https://bugs.webkit.org/show_bug.cgi?id=148126

Patch by Jincheol Jo <jincheol.jo@navercorp.com> on 2015-08-18
Reviewed by Gyuyoung Kim.

  • UIProcess/efl/WebInspectorProxyEfl.cpp:

(WebKit::WebInspectorProxy::inspectorBaseURL):
(WebKit::WebInspectorProxy::platformInspectedWindowHeight):

9:09 PM Changeset in webkit [188624] by benjamin@webkit.org
  • 20 edits
    6 adds in trunk

[JSC] Optimize more cases of something-compared-to-null/undefined
https://bugs.webkit.org/show_bug.cgi?id=148157

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-08-18
Reviewed by Geoffrey Garen and Filip Pizlo.

Source/JavaScriptCore:

CompareEq is fairly trivial if you assert one of the operands is either
null or undefined. Under those conditions, the only way to have "true"
is to have the other operand be null/undefined or have an object
that masquerades to undefined.

JSC already had a fast path in CompareEqConstant.
With this patch, I generalize this fast path to more cases and try
to eliminate the checks whenever possible.

CompareEq now does the job of CompareEqConstant. If any operand can
be proved to be undefined/other, its edge is set to OtherUse. Whenever
any edge is OtherUse, we generate the fast code we had for CompareEqConstant.

The AbstractInterpreter has additional checks to reduce the node to a constant
whenever possible.

There are two additional changes in this patch:
-The Fixup Phase tries to set edges to OtherUse early. This is done correctly

in ConstantFoldingPhase but setting it up early helps the phases relying
on Clobberize.

-The codegen for CompareEqConstant was improved. The reason is the comparison

for ObjectOrOther could be faster just because the codegen was better.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize): Deleted.

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC): Deleted.

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNode.h:

(JSC::DFG::Node::isUndefinedOrNullConstant):

  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate): Deleted.

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute): Deleted.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
(JSC::DFG::SpeculativeJIT::compare):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::isKnownNotOther):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull): Deleted.
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull): Deleted.
(JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull): Deleted.
(JSC::DFG::SpeculativeJIT::compile): Deleted.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull): Deleted.
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull): Deleted.
(JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull): Deleted.
(JSC::DFG::SpeculativeJIT::compile): Deleted.

  • dfg/DFGValidate.cpp:

(JSC::DFG::Validate::validate): Deleted.

  • dfg/DFGWatchpointCollectionPhase.cpp:

(JSC::DFG::WatchpointCollectionPhase::handle):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::compileCompareEq):
(JSC::FTL::DFG::LowerDFGToLLVM::compileNode): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::compileCompareEqConstant): Deleted.

  • tests/stress/compare-eq-on-null-and-undefined-non-peephole.js: Added.

(string_appeared_here.useForMath):
(testUseForMath):

  • tests/stress/compare-eq-on-null-and-undefined-optimized-in-constant-folding.js: Added.

(string_appeared_here.unreachableCodeTest):
(inlinedCompareToNull):
(inlinedComparedToUndefined):
(warmupInlineFunctions):
(testInlineFunctions):

  • tests/stress/compare-eq-on-null-and-undefined.js: Added.

(string_appeared_here.compareConstants):
(opaqueNull):
(opaqueUndefined):
(compareConstantsAndDynamicValues):
(compareDynamicValues):
(compareDynamicValueToItself):
(arrayTesting):
(opaqueCompare1):
(testNullComparatorUpdate):
(opaqueCompare2):
(testUndefinedComparatorUpdate):
(opaqueCompare3):
(testNullAndUndefinedComparatorUpdate):

LayoutTests:

  • js/dom/document-all-watchpoint-covers-eliminated-compare-eq-expected.txt: Added.
  • js/dom/document-all-watchpoint-covers-eliminated-compare-eq.html: Added.
  • js/dom/script-tests/document-all-watchpoint-covers-eliminated-compare-eq.js: Added.

(compareFunction):

9:03 PM WebInspectorDebugging edited by BJ Burg
add defaults key for inspecting the remote inspector. (diff)
7:09 PM Changeset in webkit [188623] by Wenson Hsieh
  • 3 edits
    1 copy
    2 moves in trunk/LayoutTests

Attempt to fix the failing search-padding-cancel-results-buttons.html test by making
platform-specific versions of the test.

  • TestExpectations: Added search-padding-cancel-results-buttons-expected.txt with a default [ Skip ].
  • fast/forms/search/search-padding-cancel-results-buttons-expected.txt: Copied from LayoutTests/platform/mac/fast/forms/search/search-padding-cancel-results-buttons-expected.txt.
  • fast/forms/search/search-padding-cancel-results-buttons.html: Renamed from LayoutTests/platform/mac/fast/forms/search/search-padding-cancel-results-buttons.html.
  • platform/mac-mavericks/fast/forms/search/search-padding-cancel-results-buttons-expected.txt: Renamed from LayoutTests/platform/mac/fast/forms/search/search-padding-cancel-results-buttons-expected.txt.
  • platform/mac/TestExpectations: Enable the test only for Mac platforms.
6:55 PM Changeset in webkit [188622] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Add null check in ImageBufferData::getData
https://bugs.webkit.org/show_bug.cgi?id=148156
<rdar://problem/22337157>

Reviewed by Simon Fraser.

We're getting a number of crash reports that suggest the allocation
of the result buffer has failed, but have been unable to reproduce.
This patch adds a null check to the allocation, and logs a message
to the system console. This might avoid the crashes, and hopefully
we'll see the message.

No new tests, since we're unable to reproduce this crash.

  • platform/graphics/cg/ImageBufferDataCG.cpp:

(WebCore::ImageBufferData::getData): Add a null-check and early
return.

6:41 PM Changeset in webkit [188621] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Visual editor links should unlink when switching styles
https://bugs.webkit.org/show_bug.cgi?id=148153

Reviewed by Timothy Hatcher.

Visual editor links are now deactivated when switching rules/nodes.

  • UserInterface/Images/VisualStylePropertyUnlinked.svg:
  • UserInterface/Views/VisualStyleDetailsPanel.js:

(WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
(WebInspector.VisualStyleDetailsPanel.prototype._generateMetricSectionRows):

  • UserInterface/Views/VisualStylePropertyEditorLink.js:

(WebInspector.VisualStylePropertyEditorLink.prototype.set linked):
(WebInspector.VisualStylePropertyEditorLink.prototype._iconClicked):
(WebInspector.VisualStylePropertyEditorLink):

6:37 PM Changeset in webkit [188620] by clopez@igalia.com
  • 2 edits in trunk/Tools

REGRESSION(r188548): [GTK] Build broken.
https://bugs.webkit.org/show_bug.cgi?id=148154

Reviewed by Martin Robinson.

  • WebKitTestRunner/gtk/TestControllerGtk.cpp:

(WTR::TestController::updatePlatformSpecificViewOptionsForTest):
Even if we don't need to add/override any settings in ViewOptions,
we need to define this as an empty function to make it build.

6:28 PM Changeset in webkit [188619] by Chris Dumez
  • 19 edits in trunk/Source/WebCore

Use CSSValuePool::singleton() instead of cssValuePool()
https://bugs.webkit.org/show_bug.cgi?id=148132

Reviewed by Simon Fraser.

Use CSSValuePool::singleton() instead of cssValuePool() to access the
global CSSValuePool instance, as per coding style.

6:25 PM Changeset in webkit [188618] by Gyuyoung Kim
  • 2 edits in trunk/Tools

Fix conversion-null warning in conversion.cpp of TestWebKitAPI
https://bugs.webkit.org/show_bug.cgi?id=148073

Reviewed by Alexey Proskuryakov.

  • TestWebKitAPI/Tests/WTF/Condition.cpp: Use EXPECT_FALSE instead of EXPECT_EQ.

(TestWebKitAPI::TEST):

6:22 PM Changeset in webkit [188617] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Consider showing style summary on collapsed visual sidebar sections
https://bugs.webkit.org/show_bug.cgi?id=148104

Reviewed by Timothy Hatcher.

The blue indicator dot on a section now means that that section has at least one set value.
If a section has been modified, it will display a trash can that will clear those modifications.

  • UserInterface/Views/VisualStyleDetailsPanel.css:

(.sidebar > .panel.details.css-style .visual > .details-section .details-section.has-set-property > .header > span::after):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section.modified > .header > span::after): Deleted.

  • UserInterface/Views/VisualStyleDetailsPanel.js:

(WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
(WebInspector.VisualStyleDetailsPanel.prototype._sectionModified):
(WebInspector.VisualStyleDetailsPanel.prototype._groupHasSetProperty):

6:18 PM Changeset in webkit [188616] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: round sub-pixel values we get from computed style in visual sidebar
https://bugs.webkit.org/show_bug.cgi?id=148105

Reviewed by Timothy Hatcher.

  • UserInterface/Views/VisualStyleNumberInputBox.js:

(WebInspector.VisualStyleNumberInputBox.prototype.set value):
(WebInspector.VisualStyleNumberInputBox.prototype.set placeholder):
Now rounds the value and placeholder to the nearest 100th.

6:04 PM Changeset in webkit [188615] by mrajca@apple.com
  • 4 edits in trunk/Source/WebCore

Media Session: don't begin listening for interruptions when an interruption provider is created
https://bugs.webkit.org/show_bug.cgi?id=148109

Reviewed by Eric Carlson.

If we call beginListeningForInterruption in MediaSessionInterruptionProvider's constructor, the current
class's implementation will get called, not implementations provided by subclasses (this makes sense since base
classes are initialized before derived classes). To fix this, we let clients of
MediaSessionInterruptionProvider start listening for interruptions instead. As a corollary of this, we can make
MediaSessionInterruptionProvider's methods pure virtual.

  • Modules/mediasession/MediaSessionManager.cpp:

(WebCore::MediaSessionManager::MediaSessionManager):

  • platform/mediasession/MediaSessionInterruptionProvider.h:
  • platform/mediasession/MediaSessionInterruptionProvider.cpp:

(WebCore::MediaSessionInterruptionProvider::MediaSessionInterruptionProvider):

5:56 PM Changeset in webkit [188614] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: transparent color swatches have lopsided checkered background on non-retina
https://bugs.webkit.org/show_bug.cgi?id=148150

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-08-18
Reviewed by Timothy Hatcher.

  • UserInterface/Views/CSSStyleDeclarationTextEditor.css:

(@media (-webkit-max-device-pixel-ratio: 1)):
Make color and bezier widgets slightly smaller, but evenly sized so the
checkered background is not lopsided and the curve is a little less blurry.

5:43 PM Changeset in webkit [188613] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Fix a rare flakiness in svg/animations/svgPreserveAspectRatio-animation-1.html
https://bugs.webkit.org/show_bug.cgi?id=148149

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-08-18
Reviewed by Tim Horton.

Do not sample the SVG animation at the middle of the animation period. At
that time, the SVG animation test script changes the value of the animated
attribute from the from-value to the to-value. It is safer to sample
immediately before and after the middle of the animation period.

  • svg/animations/script-tests/svgPreserveAspectRatio-animation-1.js:
  • svg/animations/svgPreserveAspectRatio-animation-1-expected.txt:
5:32 PM Changeset in webkit [188612] by eric.carlson@apple.com
  • 13 edits
    1 delete in trunk/Source

Remove "platform text track menu"
https://bugs.webkit.org/show_bug.cgi?id=148139

Reviewed by Jer Noble.

Source/WebCore:

No new tests, this patch removes unused code.

  • WebCore.xcodeproj/project.pbxproj: Remove PlatformTextTrackMenu.h.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::scheduleDelayedAction): Remove PLATFORM_TEXT_TRACK_MENU.
(WebCore::HTMLMediaElement::pendingActionTimerFired):
(WebCore::HTMLMediaElement::textTrackModeChanged):
(WebCore::HTMLMediaElement::mediaPlayerDidRemoveVideoTrack):
(WebCore::HTMLMediaElement::closeCaptionTracksChanged):
(WebCore::HTMLMediaElement::addAudioTrack):
(WebCore::HTMLMediaElement::clearMediaPlayer):
(WebCore::HTMLMediaElement::setSelectedTextTrack): Deleted.
(WebCore::HTMLMediaElement::platformTextTracks): Deleted.
(WebCore::HTMLMediaElement::notifyMediaPlayerOfTextTrackChanges): Deleted.
(WebCore::HTMLMediaElement::platformTextTrackMenu): Deleted.

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::player):

  • html/track/InbandTextTrack.h:
  • html/track/TextTrack.cpp:

(WebCore::TextTrack::hasCue):
(WebCore::TextTrack::isMainProgramContent):
(WebCore::TextTrack::platformTextTrack): Deleted.

  • html/track/TextTrack.h:

(WebCore::TextTrack::create):

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::resetMediaEngines):
(WebCore::MediaPlayer::implementsTextTrackControls): Deleted.
(WebCore::MediaPlayer::textTrackMenu): Deleted.

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::tracksChanged):
(WebCore::MediaPlayerPrivateInterface::simulateAudioInterruption):
(WebCore::MediaPlayerPrivateInterface::implementsTextTrackControls): Deleted.
(WebCore::MediaPlayerPrivateInterface::textTrackMenu): Deleted.

  • platform/graphics/PlatformTextTrack.h:
  • platform/graphics/PlatformTextTrackMenu.h: Removed.

Source/WTF:

  • wtf/Platform.h: Remove PLATFORM_TEXT_TRACK_MENU.
5:23 PM Changeset in webkit [188611] by Wenson Hsieh
  • 3 edits
    2 adds in trunk

Search input results and clear icons are misaligned when padding is added
https://bugs.webkit.org/show_bug.cgi?id=148146
<rdar://problem/22310951>

Reviewed by Zalan Bujtas.

Source/WebCore:

Use content box rect to determine where to draw the results and cancel buttons
of a search field that has -webkit-appearance: textfield. Previously, we used
the bounding box, which caused the buttons to render in the input's padding
region.

Test: platform/mac/fast/forms/search/search-padding-cancel-results-buttons.html

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::paintSearchFieldCancelButton): Use content box to

compute where to render cancel button.

(WebCore::RenderThemeMac::paintSearchFieldResultsButton): Use content box to

compute where to render results button.

LayoutTests:

Tests that for a search field with -webkit-appearance: textfield; and padding will not clip
its cancel and results buttons.

  • platform/mac/fast/forms/search/search-padding-cancel-results-buttons-expected.txt: Added.
  • platform/mac/fast/forms/search/search-padding-cancel-results-buttons.html: Added.
5:21 PM Changeset in webkit [188610] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

CAOpenGLLayer doesn't need an SPI declaration
https://bugs.webkit.org/show_bug.cgi?id=148151

Reviewed by Tim Horton.

Follow-up to https://trac.webkit.org/r188608.
The property is in the public SDK, so we don't need
to declare it.

  • platform/spi/cocoa/QuartzCoreSPI.h:
4:53 PM Changeset in webkit [188609] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[El Capitan] Fix the open source build
https://bugs.webkit.org/show_bug.cgi?id=148134

Reviewed by Anders Carlsson.

No new tests because there is no behavior change.

Need to declare CGFontRenderingStyle.

  • platform/spi/cocoa/CoreTextSPI.h:
4:47 PM Changeset in webkit [188608] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

CAOpenGLLayer needs a named class extension for non-internal installs
https://bugs.webkit.org/show_bug.cgi?id=148151
<rdar://problem/22335111>

Reviewed by Tim Horton.

In order to build using the public SDK on El Capitan, we can't
use a class extension to declare this SPI.

No change in behaviour, so no new tests.

  • platform/spi/cocoa/QuartzCoreSPI.h:
4:31 PM Changeset in webkit [188607] by andersca@apple.com
  • 2 edits in trunk/Tools

Fix test failure fallout from r188602 by using a V5 page ui client struct.

  • TestWebKitAPI/Tests/WebKit2/WKPageIsPlayingAudio.cpp:

(TestWebKitAPI::setUpClients):

3:52 PM Changeset in webkit [188606] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix build, and fix the version check.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

3:35 PM Changeset in webkit [188605] by fpizlo@apple.com
  • 2 edits in trunk/Source/WTF

WTF::Condition should have a fast path for notifyOne/notifyAll that avoids calling unparkOne/unparkAll
https://bugs.webkit.org/show_bug.cgi?id=148090

Reviewed by Geoffrey Garen.

This change makes notifyOne()/notifyAll() blazing fast when nobody is waiting, by using the
various hooks that ParkingLot gives us to maintain a m_hasWaiters variable. When it's false, it
means that any unpark operation would simply return immediately.

This is a 45% speed-up for the 1-producer/1-consumer scenario with a 100-element queue when you
use the notifyOne()-per-enqueue style. What's cool about this change is that you can now safely
call notifyOne() (or notifyAll()) out of paranoia, just in case someone might be waiting. It's
free to do so if nobody is waiting!

  • wtf/Condition.h:

(WTF::Condition::Condition):
(WTF::Condition::waitUntil):
(WTF::Condition::notifyOne):
(WTF::Condition::notifyAll):

3:35 PM Changeset in webkit [188604] by Simon Fraser
  • 7 edits in trunk

will-change: backface-visibility should not cause stacking context
https://bugs.webkit.org/show_bug.cgi?id=148091

Reviewed by Zalan Bujtas.

Source/WebCore:

Take CSSPropertyWebkitBackfaceVisibility out of the list of properties that causes
will-change to create stacking context, since no value of the property creates
stacking.

Move willChangeCreatesStackingContext() and shouldWillChangeCreateStackingContext()
into RenderInline since it's only called from there.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::shouldWillChangeCreateStackingContext): Deleted.

  • rendering/RenderElement.h:

(WebCore::RenderElement::willChangeCreatesStackingContext): Deleted.

  • rendering/RenderInline.h:

(WebCore::RenderInline::willChangeCreatesStackingContext):

  • rendering/style/WillChangeData.cpp:

(WebCore::propertyCreatesStackingContext): Deleted.

LayoutTests:

Test that will-change: -webkit-backface-visibility does not create
stacking context.

  • fast/css/will-change/resources/will-change-stacking-helper.js:
3:32 PM Changeset in webkit [188603] by Yusuke Suzuki
  • 9 edits in trunk/Source/JavaScriptCore

Introduce non-user-observable Promise functions to use Promises internally
https://bugs.webkit.org/show_bug.cgi?id=148118

Reviewed by Saam Barati.

To leverage the Promises internally (like ES6 Module Loaders), we add
the several non-user-observable private methods, like @then, @all. And
refactor the existing Promises implementation to make it easy to use
internally.

But still the trappable part remains. When resolving the promise with
the returned value, we look up the "then" function. So users can trap
by replacing "then" function of the Promise's prototype.
To avoid this situation, we'll introduce completely differnt promise
instances called InternalPromise in the subsequent patch[1].

No behavior change.

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

  • builtins/PromiseConstructor.js:

(privateAll.newResolveElement):
(privateAll):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren): Deleted.

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::promiseConstructor): Deleted.
(JSC::JSGlobalObject::promisePrototype): Deleted.
(JSC::JSGlobalObject::promiseStructure): Deleted.

  • runtime/JSPromiseConstructor.cpp:

(JSC::JSPromiseConstructor::finishCreation):

  • runtime/JSPromiseDeferred.cpp:

(JSC::callFunction):
(JSC::JSPromiseDeferred::resolve):
(JSC::JSPromiseDeferred::reject):

  • runtime/JSPromiseDeferred.h:
  • runtime/JSPromisePrototype.cpp:

(JSC::JSPromisePrototype::create):
(JSC::JSPromisePrototype::JSPromisePrototype):

  • runtime/JSPromisePrototype.h:
3:18 PM Changeset in webkit [188602] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

REGRESSION: Playing audio causes near-instant crash
https://bugs.webkit.org/show_bug.cgi?id=148059
rdar://problem/22282680

Reviewed by Sam Weinig.

The version of WebKit that Safari 6.2.8, 7.1.8 and 8.0.8 built against
had an ABI incompatible WKPageUIClientV4 struct. Thankfully we're not going to ship any
versions of Safari that use the "normal" WKPageUIClientV4 struct so just assume that it's always the
broken one and fix it up by converting it to a WKPageUIClientV5 struct and setting that as the page UI client.

  • UIProcess/API/C/WKPage.cpp:

(fixUpBotchedPageUIClient):
(WKPageSetPageUIClient):

3:11 PM Changeset in webkit [188601] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Modernize CSSStyleManager
https://bugs.webkit.org/show_bug.cgi?id=148143

Reviewed by Brian Burg.

  • UserInterface/Controllers/CSSStyleManager.js:
    • Eliminate delete operator use.
    • Move from using Objects as hashmaps to Map.
    • Fix typos.
3:05 PM Changeset in webkit [188600] by achristensen@apple.com
  • 3 edits in trunk/Source/WebCore

Unreviewed, fix the cairo build after r188594.

  • platform/network/curl/CurlDownload.h:
  • platform/network/curl/ResourceHandleManager.cpp:

Include Lock.h

2:54 PM Changeset in webkit [188599] by Simon Fraser
  • 2 edits in trunk/LayoutTests

Mark fast/css/will-change/will-change-creates-stacking-context.html as an image-only
failure. Filed webkit.org/b/148144 to track it.

  • platform/win/TestExpectations:
2:53 PM Changeset in webkit [188598] by BJ Burg
  • 32 edits
    2 moves in trunk

Web Inspector: load ProtocolTestStub from the WebInspectorUI bundle
https://bugs.webkit.org/show_bug.cgi?id=147955

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

Move ProtocolTestStub.{html,js} into the actual WebInspectorUI project.

  • UserInterface/Base/TestStub.js: Renamed from LayoutTests/http/tests/inspector/resources/ProtocolTestStub.js.
  • UserInterface/TestStub.html: Renamed from LayoutTests/http/tests/inspector/resources/ProtocolTestStub.html.

Tools:

To enable sharing of common test code between protocol and model tests,
start loading the protocol TestStub.js through the WebInspectorUI bundle.

This patch adds the read-only getter TestRunner.inspectorTestStubURL, which
protocol-test.js uses to load the inspector frontend stub into its iframe
from an arbitrary local file URL.

  • DumpRenderTree/TestRunner.cpp:

(getInspectorTestStubURLCallback):
(TestRunner::staticValues):

  • DumpRenderTree/TestRunner.h:
  • DumpRenderTree/mac/TestRunnerMac.mm:

(SOFT_LINK_STAGED_FRAMEWORK):
(TestRunner::inspectorTestStubURL):

  • DumpRenderTree/win/TestRunnerWin.cpp:

(TestRunner::inspectorTestStubURL):

  • WebKitTestRunner/Configurations/Base.xcconfig:

Since WebKitTestRunner now includes WebCore private headers, also search
for the WebCore framework inside the WebKit umbrella framework.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/InjectedBundle/efl/TestRunnerEfl.cpp:

(WTR::TestRunner::inspectorTestStubURL):

  • WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp:

(WTR::TestRunner::inspectorTestStubURL):

  • WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm:

(WTR::TestRunner::inspectorTestStubURL):

LayoutTests:

Since the inspector stub cannot open files that live in the LayoutTests
directory, adopt the test helper marshalling approach used by inspector.js.
Each helper must register its code for marshalling and explicitly put globals
on the window object.

Use script tags rather than importScript to include helpers in a test.

  • TestExpectations: For now, skip inspector http tests. These should be rewritten

to use inspector-test.js, which does not run into cross-origin problems.

Rebaseline some test results to account for shifted line numbers (yuck).

  • http/tests/inspector/dom/resources/InspectorDOMListener.js:
  • http/tests/inspector/resources/console-test.js:
  • http/tests/inspector/resources/probe-test.js:
  • http/tests/inspector/resources/protocol-test.js:

(ProtocolTestProxy.registerInitializer):
(log):
(runTest.runInitializationMethodsInFrontend):
(runTest.runTestMethodInFrontend):
(runTest):

  • inspector/console/console-message.html:
  • inspector/console/css-source-locations-expected.txt:
  • inspector/console/css-source-locations.html:
  • inspector/console/js-source-locations-expected.txt:
  • inspector/console/js-source-locations.html:
  • inspector/console/x-frame-options-message-expected.txt:
  • inspector/console/x-frame-options-message.html:
  • inspector/debugger/didSampleProbe-multiple-probes.html:
  • inspector/debugger/setBreakpoint-actions.html:
  • inspector/debugger/setBreakpoint-options-exception.html:
  • inspector/dom/dom-search-expected.txt:
  • inspector/dom/dom-search-with-context.html:
  • inspector/dom/dom-search.html:
  • inspector/dom/resources/dom-search-queries.js:
2:45 PM Changeset in webkit [188597] by mmaxfield@apple.com
  • 1 edit
    1 add in trunk/LayoutTests

[Win] Test gardening after r188591
https://bugs.webkit.org/show_bug.cgi?id=148119

Unreviewed.

  • platform/win/fast/text/trak-optimizeLegibility-expected.txt: Added.
2:28 PM Changeset in webkit [188596] by fpizlo@apple.com
  • 2 edits in trunk/Tools

Unreviewed, fix GTK build.

  • TestWebKitAPI/Tests/WTF/glib/WorkQueueGLib.cpp:

(TestWebKitAPI::TEST):

12:52 PM Changeset in webkit [188595] by fpizlo@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix the cairo build.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
12:31 PM Changeset in webkit [188594] by fpizlo@apple.com
  • 108 edits
    1 add in trunk

Replace all remaining uses of WTF::Mutex with WTF::Lock
https://bugs.webkit.org/show_bug.cgi?id=148089

Reviewed by Geoffrey Garen.

Source/WebCore:

No new tests because no new behavior.

  • Modules/webaudio/AsyncAudioDecoder.cpp:

(WebCore::AsyncAudioDecoder::AsyncAudioDecoder):
(WebCore::AsyncAudioDecoder::runLoop):

  • Modules/webaudio/AsyncAudioDecoder.h:
  • Modules/webaudio/AudioContext.h:
  • Modules/webaudio/MediaStreamAudioSource.cpp:

(WebCore::MediaStreamAudioSource::addAudioConsumer):
(WebCore::MediaStreamAudioSource::removeAudioConsumer):
(WebCore::MediaStreamAudioSource::setAudioFormat):
(WebCore::MediaStreamAudioSource::consumeAudio):

  • Modules/webaudio/MediaStreamAudioSource.h:
  • Modules/webdatabase/Database.cpp:

(WebCore::Database::close):
(WebCore::Database::runTransaction):
(WebCore::Database::inProgressTransactionCompleted):
(WebCore::Database::hasPendingTransaction):

  • Modules/webdatabase/Database.h:
  • Modules/webdatabase/DatabaseTask.cpp:

(WebCore::DatabaseTaskSynchronizer::taskCompleted):

  • Modules/webdatabase/DatabaseTask.h:
  • Modules/webdatabase/DatabaseThread.cpp:

(WebCore::DatabaseThread::start):
(WebCore::DatabaseThread::databaseThread):

  • Modules/webdatabase/DatabaseThread.h:
  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::setDatabaseDirectoryPath):
(WebCore::DatabaseTracker::canEstablishDatabase):
(WebCore::DatabaseTracker::retryCanEstablishDatabase):
(WebCore::DatabaseTracker::hasEntryForOrigin):
(WebCore::DatabaseTracker::getMaxSizeForDatabase):
(WebCore::DatabaseTracker::closeAllDatabases):
(WebCore::DatabaseTracker::fullPathForDatabase):
(WebCore::DatabaseTracker::origins):
(WebCore::DatabaseTracker::databaseNamesForOrigin):
(WebCore::DatabaseTracker::detailsForNameAndOrigin):
(WebCore::DatabaseTracker::setDatabaseDetails):
(WebCore::DatabaseTracker::doneCreatingDatabase):
(WebCore::DatabaseTracker::addOpenDatabase):
(WebCore::DatabaseTracker::removeOpenDatabase):
(WebCore::DatabaseTracker::getOpenDatabases):
(WebCore::DatabaseTracker::originLockFor):
(WebCore::DatabaseTracker::quotaForOrigin):
(WebCore::DatabaseTracker::setQuota):
(WebCore::DatabaseTracker::deleteOrigin):
(WebCore::DatabaseTracker::deleteDatabase):
(WebCore::DatabaseTracker::deleteDatabaseFile):
(WebCore::DatabaseTracker::removeDeletedOpenedDatabases):
(WebCore::DatabaseTracker::deleteDatabaseFileIfEmpty):
(WebCore::DatabaseTracker::openDatabaseMutex):
(WebCore::DatabaseTracker::setClient):
(WebCore::notificationMutex):
(WebCore::DatabaseTracker::scheduleNotifyDatabaseChanged):
(WebCore::DatabaseTracker::notifyDatabasesChanged):

  • Modules/webdatabase/DatabaseTracker.h:
  • Modules/webdatabase/OriginLock.h:
  • Modules/webdatabase/SQLCallbackWrapper.h:

(WebCore::SQLCallbackWrapper::clear):
(WebCore::SQLCallbackWrapper::unwrap):
(WebCore::SQLCallbackWrapper::hasCallback):

  • Modules/webdatabase/SQLTransactionBackend.cpp:

(WebCore::SQLTransactionBackend::doCleanup):
(WebCore::SQLTransactionBackend::enqueueStatementBackend):
(WebCore::SQLTransactionBackend::getNextStatement):

  • Modules/webdatabase/SQLTransactionBackend.h:
  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::scheduleExecutionTermination):
(WebCore::WorkerScriptController::isExecutionTerminating):

  • bindings/js/WorkerScriptController.h:
  • dom/default/PlatformMessagePortChannel.cpp:

(WebCore::MessagePortChannel::postMessageToRemote):
(WebCore::MessagePortChannel::tryGetMessageFromRemote):
(WebCore::MessagePortChannel::isConnectedTo):
(WebCore::MessagePortChannel::hasPendingActivity):
(WebCore::MessagePortChannel::locallyEntangledPort):
(WebCore::PlatformMessagePortChannel::setRemotePort):
(WebCore::PlatformMessagePortChannel::entangledChannel):
(WebCore::PlatformMessagePortChannel::closeInternal):

  • dom/default/PlatformMessagePortChannel.h:
  • loader/icon/IconDatabase.cpp:

(WebCore::IconDatabase::removeAllIcons):
(WebCore::IconDatabase::synchronousIconForPageURL):
(WebCore::IconDatabase::synchronousNativeIconForPageURL):
(WebCore::IconDatabase::synchronousIconURLForPageURL):
(WebCore::IconDatabase::retainIconForPageURL):
(WebCore::IconDatabase::performRetainIconForPageURL):
(WebCore::IconDatabase::releaseIconForPageURL):
(WebCore::IconDatabase::performReleaseIconForPageURL):
(WebCore::IconDatabase::setIconDataForIconURL):
(WebCore::IconDatabase::setIconURLForPageURL):
(WebCore::IconDatabase::synchronousLoadDecisionForIconURL):
(WebCore::IconDatabase::synchronousIconDataKnownForIconURL):
(WebCore::IconDatabase::pageURLMappingCount):
(WebCore::IconDatabase::retainedPageURLCount):
(WebCore::IconDatabase::iconRecordCount):
(WebCore::IconDatabase::iconRecordCountWithData):
(WebCore::IconDatabase::wakeSyncThread):
(WebCore::IconDatabase::scheduleOrDeferSyncTimer):
(WebCore::IconDatabase::isOpenBesidesMainThreadCallbacks):
(WebCore::IconDatabase::databasePath):
(WebCore::IconDatabase::getOrCreatePageURLRecord):
(WebCore::IconDatabase::iconDatabaseSyncThread):
(WebCore::IconDatabase::performOpenInitialization):
(WebCore::IconDatabase::performURLImport):
(WebCore::IconDatabase::syncThreadMainLoop):
(WebCore::IconDatabase::performPendingRetainAndReleaseOperations):
(WebCore::IconDatabase::readFromDatabase):
(WebCore::IconDatabase::writeToDatabase):
(WebCore::IconDatabase::pruneUnretainedIcons):
(WebCore::IconDatabase::cleanupSyncThread):

  • loader/icon/IconDatabase.h:
  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
(WebCore::ScrollingTree::commitNewTreeState):
(WebCore::ScrollingTree::setMainFramePinState):
(WebCore::ScrollingTree::mainFrameScrollPosition):
(WebCore::ScrollingTree::setMainFrameScrollPosition):
(WebCore::ScrollingTree::isPointInNonFastScrollableRegion):
(WebCore::ScrollingTree::isRubberBandInProgress):
(WebCore::ScrollingTree::setMainFrameIsRubberBanding):
(WebCore::ScrollingTree::isScrollSnapInProgress):
(WebCore::ScrollingTree::setMainFrameIsScrollSnapping):
(WebCore::ScrollingTree::setCanRubberBandState):
(WebCore::ScrollingTree::rubberBandsAtLeft):
(WebCore::ScrollingTree::rubberBandsAtRight):
(WebCore::ScrollingTree::rubberBandsAtBottom):
(WebCore::ScrollingTree::rubberBandsAtTop):
(WebCore::ScrollingTree::setScrollPinningBehavior):
(WebCore::ScrollingTree::scrollPinningBehavior):
(WebCore::ScrollingTree::willWheelEventStartSwipeGesture):
(WebCore::ScrollingTree::latchedNode):
(WebCore::ScrollingTree::setLatchedNode):
(WebCore::ScrollingTree::clearLatchedNode):

  • page/scrolling/ScrollingTree.h:
  • platform/MemoryPressureHandler.h:
  • platform/audio/HRTFDatabaseLoader.cpp:

(WebCore::HRTFDatabaseLoader::loadAsynchronously):
(WebCore::HRTFDatabaseLoader::waitForLoaderThreadCompletion):

  • platform/audio/HRTFDatabaseLoader.h:
  • platform/cocoa/MemoryPressureHandlerCocoa.mm:

(WebCore::MemoryPressureHandler::setReceivedMemoryPressure):
(WebCore::MemoryPressureHandler::clearMemoryPressure):
(WebCore::MemoryPressureHandler::shouldWaitForMemoryClearMessage):
(WebCore::MemoryPressureHandler::respondToMemoryPressureIfNeeded):

  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::displayDidRefresh):

  • platform/graphics/DisplayRefreshMonitor.h:

(WebCore::DisplayRefreshMonitor::setMonotonicAnimationStartTime):
(WebCore::DisplayRefreshMonitor::mutex):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::setDelayCallbacks):
(WebCore::MediaPlayerPrivateAVFoundation::clearMainThreadPendingFlag):
(WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::AVFWrapper::callbackContext):
(WebCore::AVFWrapper::~AVFWrapper):
(WebCore::AVFWrapper::mapLock):
(WebCore::AVFWrapper::addToMap):
(WebCore::AVFWrapper::removeFromMap):
(WebCore::AVFWrapper::periodicTimeObserverCallback):
(WebCore::AVFWrapper::processNotification):
(WebCore::AVFWrapper::loadPlayableCompletionCallback):
(WebCore::AVFWrapper::loadMetadataCompletionCallback):
(WebCore::AVFWrapper::seekCompletedCallback):
(WebCore::AVFWrapper::processCue):
(WebCore::AVFWrapper::legibleOutputCallback):
(WebCore::AVFWrapper::processShouldWaitForLoadingOfResource):
(WebCore::AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource):

  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:

(WebCore::InbandTextTrackPrivateGStreamer::handleSample):
(WebCore::InbandTextTrackPrivateGStreamer::notifyTrackOfSample):

  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h:
  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:

(WebCore::TrackPrivateBaseGStreamer::tagsChanged):
(WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged):

  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
  • platform/graphics/mac/DisplayRefreshMonitorMac.cpp:

(WebCore::DisplayRefreshMonitorMac::requestRefreshCallback):
(WebCore::DisplayRefreshMonitorMac::displayLinkFired):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::addListener):
(WebCore::MediaPlayerPrivateMediaFoundation::removeListener):
(WebCore::MediaPlayerPrivateMediaFoundation::notifyDeleted):
(WebCore::MediaPlayerPrivateMediaFoundation::AsyncCallback::Invoke):
(WebCore::MediaPlayerPrivateMediaFoundation::AsyncCallback::onMediaPlayerDeleted):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
  • platform/ios/LegacyTileCache.h:
  • platform/ios/LegacyTileCache.mm:

(WebCore::LegacyTileCache::setTilesOpaque):
(WebCore::LegacyTileCache::doLayoutTiles):
(WebCore::LegacyTileCache::setCurrentScale):
(WebCore::LegacyTileCache::commitScaleChange):
(WebCore::LegacyTileCache::layoutTilesNow):
(WebCore::LegacyTileCache::layoutTilesNowForRect):
(WebCore::LegacyTileCache::removeAllNonVisibleTiles):
(WebCore::LegacyTileCache::removeAllTiles):
(WebCore::LegacyTileCache::removeForegroundTiles):
(WebCore::LegacyTileCache::setContentReplacementImage):
(WebCore::LegacyTileCache::contentReplacementImage):
(WebCore::LegacyTileCache::tileCreationTimerFired):
(WebCore::LegacyTileCache::setNeedsDisplayInRect):
(WebCore::LegacyTileCache::updateTilingMode):
(WebCore::LegacyTileCache::setTilingMode):
(WebCore::LegacyTileCache::doPendingRepaints):
(WebCore::LegacyTileCache::flushSavedDisplayRects):
(WebCore::LegacyTileCache::prepareToDraw):

  • platform/ios/LegacyTileLayerPool.h:
  • platform/ios/LegacyTileLayerPool.mm:

(WebCore::LegacyTileLayerPool::addLayer):
(WebCore::LegacyTileLayerPool::takeLayerWithSize):
(WebCore::LegacyTileLayerPool::setCapacity):
(WebCore::LegacyTileLayerPool::prune):
(WebCore::LegacyTileLayerPool::drain):

  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownloadManager::add):
(WebCore::CurlDownloadManager::remove):
(WebCore::CurlDownloadManager::getActiveDownloadCount):
(WebCore::CurlDownloadManager::getPendingDownloadCount):
(WebCore::CurlDownloadManager::stopThreadIfIdle):
(WebCore::CurlDownloadManager::updateHandleList):
(WebCore::CurlDownload::~CurlDownload):
(WebCore::CurlDownload::init):
(WebCore::CurlDownload::getTempPath):
(WebCore::CurlDownload::getUrl):
(WebCore::CurlDownload::getResponse):
(WebCore::CurlDownload::closeFile):
(WebCore::CurlDownload::didReceiveHeader):
(WebCore::CurlDownload::didReceiveData):
(WebCore::CurlDownload::didFail):

  • platform/network/curl/CurlDownload.h:
  • platform/network/curl/ResourceHandleManager.cpp:

(WebCore::cookieJarPath):
(WebCore::sharedResourceMutex):
(WebCore::curl_lock_callback):
(WebCore::curl_unlock_callback):

  • platform/network/ios/QuickLook.mm:

(WebCore::QLDirectoryAttributes):
(qlPreviewConverterDictionaryMutex):
(WebCore::addQLPreviewConverterWithFileForURL):
(WebCore::qlPreviewConverterUTIForURL):
(WebCore::removeQLPreviewConverterForURL):
(WebCore::safeQLURLForDocumentURLAndResourceURL):

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::close):
(WebCore::SQLiteDatabase::maximumSize):
(WebCore::SQLiteDatabase::setMaximumSize):
(WebCore::SQLiteDatabase::pageSize):
(WebCore::SQLiteDatabase::freeSpaceSize):
(WebCore::SQLiteDatabase::totalSize):
(WebCore::SQLiteDatabase::runIncrementalVacuumCommand):
(WebCore::SQLiteDatabase::setAuthorizer):

  • platform/sql/SQLiteDatabase.h:

(WebCore::SQLiteDatabase::databaseMutex):

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::prepare):
(WebCore::SQLiteStatement::step):

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::start):
(WebCore::WorkerThread::workerThread):
(WebCore::WorkerThread::stop):

  • workers/WorkerThread.h:

Source/WebKit:

  • Storage/StorageAreaSync.cpp:

(WebCore::StorageAreaSync::syncTimerFired):
(WebCore::StorageAreaSync::markImported):
(WebCore::StorageAreaSync::blockUntilImportComplete):
(WebCore::StorageAreaSync::performSync):

  • Storage/StorageAreaSync.h:
  • Storage/StorageTracker.cpp:

(WebCore::StorageTracker::setDatabaseDirectoryPath):
(WebCore::StorageTracker::finishedImportingOriginIdentifiers):
(WebCore::StorageTracker::syncImportOriginIdentifiers):
(WebCore::StorageTracker::syncFileSystemAndTrackerDatabase):
(WebCore::StorageTracker::setOriginDetails):
(WebCore::StorageTracker::syncSetOriginDetails):
(WebCore::StorageTracker::origins):
(WebCore::StorageTracker::deleteAllOrigins):
(WebCore::StorageTracker::syncDeleteAllOrigins):
(WebCore::StorageTracker::deleteOrigin):
(WebCore::StorageTracker::syncDeleteOrigin):
(WebCore::StorageTracker::canDeleteOrigin):
(WebCore::StorageTracker::cancelDeletingOrigin):
(WebCore::StorageTracker::diskUsageForOrigin):

  • Storage/StorageTracker.h:

Source/WebKit/ios:

  • WebCoreSupport/WebFixedPositionContent.mm:

(WebFixedPositionContentDataLock):
(-[WebFixedPositionContent scrollOrZoomChanged:]):
(-[WebFixedPositionContent overflowScrollPositionForLayer:changedTo:]):
(-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]):
(-[WebFixedPositionContent hasFixedOrStickyPositionLayers]):
(-[WebFixedPositionContent minimumOffsetFromFixedPositionLayersToAnchorEdge:ofRect:inLayer:]):

Source/WebKit/mac:

  • Storage/WebDatabaseManager.mm:

(transactionBackgroundTaskIdentifierLock):
(+[WebDatabaseManager startBackgroundTask]):
(+[WebDatabaseManager endBackgroundTask]):

  • WebView/WebView.mm:

(-[WebView _synchronizeCustomFixedPositionLayoutRect]):
(-[WebView _setCustomFixedPositionLayoutRectInWebThread:synchronize:]):
(-[WebView _setCustomFixedPositionLayoutRect:]):
(-[WebView _fetchCustomFixedPositionLayoutRect:]):

  • WebView/WebViewData.h:

Source/WebKit/win:

  • Plugins/PluginMainThreadScheduler.cpp:

(WebCore::PluginMainThreadScheduler::scheduleCall):
(WebCore::PluginMainThreadScheduler::registerPlugin):
(WebCore::PluginMainThreadScheduler::unregisterPlugin):
(WebCore::PluginMainThreadScheduler::dispatchCallsForPlugin):

  • Plugins/PluginMainThreadScheduler.h:
  • WebIconDatabase.cpp:

(WebIconDatabase::didRemoveAllIcons):
(WebIconDatabase::didImportIconURLForPageURL):
(WebIconDatabase::deliverNotifications):

  • WebIconDatabase.h:
  • WebLocalizableStrings.cpp:

(mainBundleLocStrings):
(frameworkLocStringsMutex):
(findCachedString):
(cacheString):

Source/WebKit2:

  • DatabaseProcess/DatabaseProcess.cpp:

(WebKit::DatabaseProcess::postDatabaseTask):
(WebKit::DatabaseProcess::performNextDatabaseTask):

  • DatabaseProcess/DatabaseProcess.h:
  • DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:

(WebKit::UniqueIDBDatabase::shutdown):
(WebKit::UniqueIDBDatabase::postMainThreadTask):
(WebKit::UniqueIDBDatabase::performNextMainThreadTask):
(WebKit::UniqueIDBDatabase::postDatabaseTask):
(WebKit::UniqueIDBDatabase::performNextDatabaseTask):

  • DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:
  • Platform/IPC/Connection.cpp:

(IPC::Connection::sendSyncMessage):
(IPC::Connection::sendSyncMessageFromSecondaryThread):
(IPC::Connection::waitForSyncReply):
(IPC::Connection::processIncomingSyncReply):
(IPC::Connection::connectionDidClose):

  • Platform/IPC/Connection.h:
  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::appendUpdate):

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::createCompositingThread):
(WebKit::ThreadedCompositor::runCompositingThread):
(WebKit::ThreadedCompositor::terminateCompositingThread):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
  • Shared/Network/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm:

(WebKit::CustomProtocolManager::addCustomProtocol):
(WebKit::CustomProtocolManager::removeCustomProtocol):
(WebKit::CustomProtocolManager::registerScheme):
(WebKit::CustomProtocolManager::unregisterScheme):
(WebKit::CustomProtocolManager::supportsScheme):
(WebKit::CustomProtocolManager::protocolForID):

  • Shared/Network/CustomProtocols/CustomProtocolManager.h:
  • Shared/linux/SeccompFilters/SeccompBroker.cpp:
  • WebProcess/Plugins/PluginProcessConnectionManager.cpp:

(WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
(WebKit::PluginProcessConnectionManager::removePluginProcessConnection):
(WebKit::PluginProcessConnectionManager::pluginProcessCrashed):

  • WebProcess/Plugins/PluginProcessConnectionManager.h:
  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::addScrollingTreeForPage):
(WebKit::EventDispatcher::removeScrollingTreeForPage):
(WebKit::EventDispatcher::wheelEvent):

  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/soup/WebKitSoupRequestInputStream.cpp:

(webkitSoupRequestInputStreamReadAsync):
(webkitSoupRequestInputStreamAddData):

Source/WTF:

This also beefs up and rationalizes the Condition API, so that it can deal with units of time
other than just steady_clock. This makes it easier to port ThreadCondition and
std::condition_variable code over to Condition. This patch does not take a position on what
kind of time is best; from reading a lot of the uses in WebCore, it seems like our use of
double to measure seconds is often nicer than the many different classes in std::chrono.

Also added a Condition speed test, to make sure that all of this is a good idea. And indeed it
is. The 1-producer/1-consumer scenario with a 100-element queue runs 36x faster using
Lock/Condition than Mutex/ThreadCondition when you use the notifyOne()-per-enqueue style. It
runs 58x faster with Lock/Condition when you use the notifyAll()-at-boundary style. Note that
I have a bug open for making the notifyOne()-per-enqueue style even faster:
https://bugs.webkit.org/show_bug.cgi?id=148090. Also, the 10-consumer/10-producer scenario with
a 100-element queue runs 20x faster with Lock/Condition for notifyOne()-per-enqueue and 30x
faster with notifyAll()-at-boundary. The only way to tweak the test to get
Mutex/ThreadCondition to win is to have one producer, one consumer, a 1-element queue, and use
the notifyOne()-per-enqueue style. In that case, one of the two threads is going to be waiting
most of the time and the test basically measures wake-up latency and nothing else. Because
Condition::wait() does a little bit more work than ThreadCondition::wait(),
Mutex/ThreadCondition end up running 3% faster in this test case. But if you vary any of the
parameters of the test, Mutex/ThreadCondition ends up losing - all it takes is more threads or
a queue size of 5 or more. To my knowledge, we never do producer/consumer with a queue bounded
to one element precisely because that approach is the least efficient regardless of locking
algorithm. For example, neither WTF::MessageQueue nor DFG::Worklist have any bounds on their
queue size. So, it seems that replacing all uses of system mutexes and condition variables with
our own thing is a great idea.

  • benchmarks/LockSpeedTest.cpp:
  • benchmarks/ConditionSpeedTest.cpp: Added.
  • wtf/Condition.h:

(WTF::Condition::Condition):
(WTF::Condition::waitUntil):
(WTF::Condition::waitFor):
(WTF::Condition::wait):
(WTF::Condition::waitUntilWallClockSeconds):
(WTF::Condition::waitUntilMonotonicClockSeconds):
(WTF::Condition::notifyOne):
(WTF::Condition::notifyAll):
(WTF::Condition::waitForSecondsImpl):
(WTF::Condition::waitForImpl):
(WTF::Condition::absoluteFromRelative):

  • wtf/MessageQueue.h:

(WTF::MessageQueue::infiniteTime):
(WTF::MessageQueue<DataType>::append):
(WTF::MessageQueue<DataType>::appendAndKill):
(WTF::MessageQueue<DataType>::appendAndCheckEmpty):
(WTF::MessageQueue<DataType>::prepend):
(WTF::MessageQueue<DataType>::removeIf):
(WTF::MessageQueue<DataType>::isEmpty):
(WTF::MessageQueue<DataType>::kill):
(WTF::MessageQueue<DataType>::killed):

  • wtf/ParallelJobsGeneric.cpp:

(WTF::ParallelEnvironment::ThreadPrivate::execute):
(WTF::ParallelEnvironment::ThreadPrivate::waitForFinish):
(WTF::ParallelEnvironment::ThreadPrivate::workerThread):

  • wtf/ParallelJobsGeneric.h:
  • wtf/ParkingLot.cpp:

(WTF::ParkingLot::parkConditionally):

  • wtf/ParkingLot.h:

(WTF::ParkingLot::compareAndPark):

  • wtf/ThreadingPthreads.cpp:

(WTF::initializeThreading):

  • wtf/ThreadingWin.cpp:

(WTF::initializeThreading):

  • wtf/dtoa.cpp:

(WTF::pow5mult):

  • wtf/dtoa.h:

Tools:

  • DumpRenderTree/JavaScriptThreading.cpp:

(javaScriptThreadsMutex):
(runJavaScriptThread):
(startJavaScriptThreads):
(stopJavaScriptThreads):

  • TestWebKitAPI/Tests/WTF/Condition.cpp: Fixed a bug in the test that I found from turning the test into a benchmark.
  • TestWebKitAPI/Tests/WTF/WorkQueue.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/glib/WorkQueueGLib.cpp:

(TestWebKitAPI::TEST):

12:28 PM Changeset in webkit [188593] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Try to fix the CLOOP build.

Unreviewed.

  • bytecode/CodeBlock.cpp:
12:24 PM Changeset in webkit [188592] by Chris Dumez
  • 2 edits
    1 delete in trunk/LayoutTests

http/tests/navigation/page-cache-iframe-provisional-load.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=148133

Reviewed by Alexey Proskuryakov.

http/tests/navigation/page-cache-iframe-provisional-load.html would fail if
the slow load would finish before navigating away. To greatly reduce the
chances of it happening, increase the slow load delay from 100ms to 3s.

Also make the test faster by using page-cache-helper.html instead of
page-cache-helper-slow.html. The idea of using a slow helper was for the
load to potentially finish while the page was in the PageCache. However,
now that we've increased the slow load delay, this will no longer happen.

  • http/tests/navigation/page-cache-iframe-provisional-load.html:
  • http/tests/navigation/resources/page-cache-helper-slow.html: Removed.
12:19 PM Changeset in webkit [188591] by mmaxfield@apple.com
  • 14 edits
    3 adds in trunk

[Cocoa] Honor the 'trak' table by opting in via text-rendering: optimizeLegibility
https://bugs.webkit.org/show_bug.cgi?id=148119
<rdar://problem/22291561>

Reviewed by Tim Horton.

Source/WebCore:

When the author has opted in by specifying "text-rendering: optimizeLegibility;", we should
honor the font's 'trak' table. We do this by specifying kCTFontOpticalSizeAttribute at font
creation time, and by using CTFontGetAdvancesForGlyphs() instead of
CGFontGetGlyphAdvancesForStyle().

Test: fast/text/trak-optimizeLegibility.html

  • platform/graphics/FontCache.h:

(WebCore::FontDescriptionKey::makeFlagKey): Make our caches sensitive to TextRenderingMode.

  • platform/graphics/FontPlatformData.cpp:

(WebCore::FontPlatformData::FontPlatformData): Add a TextRenderingMode member variable.
(WebCore::FontPlatformData::operator=): Update to consult with the new member.

  • platform/graphics/FontPlatformData.h:

(WebCore::FontPlatformData::textRenderingMode): Getter.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::preparePlatformFont): Specify kCTFontOpticalSizeAttribute.
(WebCore::applyFontFeatureSettings): Deleted.

  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::canUseFastGlyphAdvanceGetter): Use CTFontGetAdvancesForGlyphs() if we are
optimizeLegibility.

  • platform/graphics/cocoa/FontPlatformDataCocoa.mm:

(WebCore::FontPlatformData::FontPlatformData): Pass the TextRenderingMode around.

  • platform/graphics/ios/FontCacheIOS.mm:

(WebCore::FontCache::getSystemFontFallbackForCharacters): Update to call renamed function.
(WebCore::FontCache::createFontPlatformData): Ditto.

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::fontWithFamily): Ditto.
(WebCore::FontCache::systemFallbackForCharacters): Ditto.
(WebCore::FontCache::createFontPlatformData): Ditto.

  • platform/graphics/mac/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::fontPlatformData): Ditto.

  • platform/spi/cocoa/CoreTextSPI.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::updateCachedSystemFontDescription): Ditto.

LayoutTests:

This test will fail until we stop mocking the system font on El Capitan. Until then,
this patch will commit the test failure as an expected result.

  • fast/text/trak-optimizeLegibility-expected.html: Added
  • fast/text/trak-optimizeLegibility.html: Added
12:15 PM Changeset in webkit [188590] by Chris Dumez
  • 23 edits
    1 copy
    8 adds in trunk

Make our bindings' GetOwnPropertySlot() behave according to specification
https://bugs.webkit.org/show_bug.cgi?id=148092

Reviewed by Geoffrey Garen.

Source/WebCore:

Make our bindings' GetOwnPropertySlot() behave according to
specification. In particular, our bindings use to do:

  1. Indexed getter
  2. Check static properties
  3. Prototype check
  4. Named getter
  5. Check own properties

According to the specification [1][2], we should do:

  • If the interface has [OverrideBuiltins]:
    1. Indexed getter
    2. Named getter
    3. Static / own properties
  • Otherwise:
    1. Indexed getter
    2. Static / own properties
    3. Prototype check
    4. Named getter

This patch adds support for the [OverrideBuiltins] IDL extended
attribute [3] and aligns our bindings implementation with the Web IDL
specification weither that IDL extended attribute is present or
not.

[1] https://heycam.github.io/webidl/#getownproperty-guts
[2] https://heycam.github.io/webidl/#dfn-named-property-visibility
[3] https://heycam.github.io/webidl/#OverrideBuiltins

Performance:

  • PerformanceTests/Bindings/childNodes-traversal.html: ~Same
  • PerformanceTests/Bindings/children-traversal.html: +104% :)

No new tests, covered by:
fast/dom/htmlcollection-getownproperty.html
fast/dom/collection-length-should-not-be-overridden.html
fast/forms/input-named-action-overrides-action-attribute.html

  • bindings/js/JSHTMLCollectionCustom.cpp:

(WebCore::JSHTMLCollection::nameGetter):
Add assertions to make sure we don't use HTMLCollection's namedGetter()
for HTMLFormControlsCollection / HTMLOptionsCollection subclasses.
We should use the subclasses' namedGetter() instead.

  • bindings/js/JSHTMLOptionsCollectionCustom.cpp:

(WebCore::JSHTMLOptionsCollection::canGetItemsForName):
(WebCore::JSHTMLOptionsCollection::nameGetter):
Add code for handling named getter requests on
HTMLOptionsCollection.

  • bindings/js/JSNodeListCustom.cpp:

(WebCore::JSNodeList::canGetItemsForName):
(WebCore::JSNodeList::nameGetter):
Refactor custom code for the NodeList named getter, now that the
IDL interface is using [CustomNamedGetter] instead of
[JSCustomGetOwnPropertySlotAndDescriptor].

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateGetOwnPropertySlotBody):
(GenerateHeaderContentHeader): Deleted.

  • Add support for the [OverrideBuiltins] IDL extended attribute and

update the generated getOwnPropertySlot() methods to match the
Web IDL specification.

  • Also drop the JSC::HasImpureGetOwnPropertySlot flag for interfaces

that have a named getter but NOT the [OverrideBuiltins] IDL extended
attribute. Without [OverrideBuiltins], named properties can no longer
shadow own properties so we no longer need to mark GetOwnPropertySlot
as impure. This allows caching of properties.

  • bindings/scripts/IDLAttributes.txt:

Add [OverrideBuiltins] IDL extended attribute [3].

  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:

(WebCore::JSTestActiveDOMObject::getOwnPropertySlot):

  • bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:

(WebCore::JSTestCustomNamedGetter::getOwnPropertySlot):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::getOwnPropertySlot):

  • bindings/scripts/test/JS/JSTestException.cpp:

(WebCore::JSTestException::getOwnPropertySlot):

  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::JSTestInterface::getOwnPropertySlot):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObj::getOwnPropertySlot):
Rebaseline the bindings tests as their getOwnPropertySlot() method
is now different.

  • bindings/scripts/test/GObject/WebKitDOMTestOverrideBuiltins.cpp: Added.
  • bindings/scripts/test/GObject/WebKitDOMTestOverrideBuiltins.h: Added.
  • bindings/scripts/test/GObject/WebKitDOMTestOverrideBuiltinsPrivate.h: Added.
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: Added.
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.h: Added.
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:
  • bindings/scripts/test/ObjC/DOMTestOverrideBuiltins.h: Added.
  • bindings/scripts/test/ObjC/DOMTestOverrideBuiltins.mm: Added.
  • bindings/scripts/test/ObjC/DOMTestOverrideBuiltinsInternal.h: Added.
  • bindings/scripts/test/TestOverrideBuiltins.idl: Added.

Add bindings test coverage for the new [OverrideBuiltins] IDL extended
attribute [3].

  • dom/DOMStringMap.idl:

Add [OverrideBuiltins] IDL extended attribute to match the specification:
https://html.spec.whatwg.org/multipage/infrastructure.html#domstringmap

  • dom/NodeList.idl:

Use CustomNamedGetter IDL extended attribute instead of
JSCustomGetOwnPropertySlotAndDescriptor as NodeList merely implements
a custom named getter. This makes sure that the order in which the
named getter is called is correct as per the Web IDL specification.

  • html/HTMLDocument.idl:

Add [OverrideBuiltins] IDL extended attribute to match the specification:
https://html.spec.whatwg.org/multipage/dom.html#the-document-object

  • html/HTMLFormElement.idl:

Add [OverrideBuiltins] IDL extended attribute to match the specification:
https://html.spec.whatwg.org/multipage/forms.html#the-form-element

  • html/HTMLOptionsCollection.idl:

Add missing 'getter' in front of the named getter, as the per the HTML
specification. Without this, HTMLOptionsCollection would not be
recognized as a named properties object, which means that we would not
check the HTMLOptionsCollection prototype before querying the named
getter on HTMLCollection. This used to work because the bindings
generator was hard-coding the prototype check for every HTML*Collection
IDL interface. In this patch, we generalized the check to every
interface that has a named getter.

LayoutTests:

  • fast/dom/childnode-item-after-itemname.html:

Update the test so the item's id in the NodeList is "testItem"
instead of "item". NodeList has a method called item() which now
takes priority over the name when accessing Nodelist.item, as per
the Web IDL specification.

  • fast/dom/htmlcollection-getownproperty-expected.txt:

Rebaseline test. This is a progression.

12:09 PM Changeset in webkit [188589] by achristensen@apple.com
  • 2 edits in trunk

[CMake] REGRESSION(r188540): WebKitTestRunner is not longer built and all the tests (layout and perf) fail.
https://bugs.webkit.org/show_bug.cgi?id=148127

Reviewed by Martin Robinson.

  • CMakeLists.txt:

TOOLS_DIR hasn't been set yet since its defining has been moved to WebKitFS.

12:03 PM Changeset in webkit [188588] by peavo@outlook.com
  • 2 edits in trunk/Source/WebCore

[Win] Popup menu displayed at incorrect position when page is scrolled and device scale factor != 1.
https://bugs.webkit.org/show_bug.cgi?id=148130

Reviewed by Alex Christensen.

Scale WebView coordinates with device scale factor.

  • platform/win/PopupMenuWin.cpp:

(WebCore::PopupMenuWin::calculatePositionAndSize):

11:51 AM Changeset in webkit [188587] by jhoneycutt@apple.com
  • 2 edits in trunk/LayoutTests

Remove failing expectations for some WK1 tests that have passed recent
builds.

  • platform/ios-simulator-wk1/TestExpectations:
11:47 AM Changeset in webkit [188586] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Better keyboard shortcut to focus on the console prompt
https://bugs.webkit.org/show_bug.cgi?id=147927

Reviewed by Brian Burg.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):
(WebInspector._focusConsolePrompt):
Added a Control-Tilde keyboard shortcut to focus the console prompt.

11:28 AM Changeset in webkit [188585] by ggaren@apple.com
  • 19 edits
    2 copies in trunk/Source/JavaScriptCore

Split InlineCallFrame into its own file
https://bugs.webkit.org/show_bug.cgi?id=148131

Reviewed by Saam Barati.

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CallLinkStatus.cpp:
  • bytecode/CodeBlock.h:

(JSC::ExecState::r):
(JSC::baselineCodeBlockForInlineCallFrame): Deleted.
(JSC::baselineCodeBlockForOriginAndBaselineCodeBlock): Deleted.

  • bytecode/CodeOrigin.cpp:

(JSC::CodeOrigin::inlineStack):
(JSC::CodeOrigin::codeOriginOwner):
(JSC::CodeOrigin::stackOffset):
(JSC::CodeOrigin::dump):
(JSC::CodeOrigin::dumpInContext):
(JSC::InlineCallFrame::calleeConstant): Deleted.
(JSC::InlineCallFrame::visitAggregate): Deleted.
(JSC::InlineCallFrame::calleeForCallFrame): Deleted.
(JSC::InlineCallFrame::hash): Deleted.
(JSC::InlineCallFrame::hashAsStringIfPossible): Deleted.
(JSC::InlineCallFrame::inferredName): Deleted.
(JSC::InlineCallFrame::baselineCodeBlock): Deleted.
(JSC::InlineCallFrame::dumpBriefFunctionInformation): Deleted.
(JSC::InlineCallFrame::dumpInContext): Deleted.
(JSC::InlineCallFrame::dump): Deleted.
(WTF::printInternal): Deleted.

  • bytecode/CodeOrigin.h:

(JSC::CodeOrigin::deletedMarker):
(JSC::CodeOrigin::hash):
(JSC::CodeOrigin::operator==):
(JSC::CodeOriginHash::hash):
(JSC::CodeOriginHash::equal):
(JSC::InlineCallFrame::kindFor): Deleted.
(JSC::InlineCallFrame::varargsKindFor): Deleted.
(JSC::InlineCallFrame::specializationKindFor): Deleted.
(JSC::InlineCallFrame::isVarargs): Deleted.
(JSC::InlineCallFrame::InlineCallFrame): Deleted.
(JSC::InlineCallFrame::specializationKind): Deleted.
(JSC::InlineCallFrame::setStackOffset): Deleted.
(JSC::InlineCallFrame::callerFrameOffset): Deleted.
(JSC::InlineCallFrame::returnPCOffset): Deleted.
(JSC::CodeOrigin::stackOffset): Deleted.
(JSC::CodeOrigin::codeOriginOwner): Deleted.

  • bytecode/InlineCallFrame.cpp: Copied from Source/JavaScriptCore/bytecode/CodeOrigin.cpp.

(JSC::InlineCallFrame::calleeConstant):
(JSC::CodeOrigin::inlineDepthForCallFrame): Deleted.
(JSC::CodeOrigin::inlineDepth): Deleted.
(JSC::CodeOrigin::isApproximatelyEqualTo): Deleted.
(JSC::CodeOrigin::approximateHash): Deleted.
(JSC::CodeOrigin::inlineStack): Deleted.
(JSC::CodeOrigin::dump): Deleted.
(JSC::CodeOrigin::dumpInContext): Deleted.

  • bytecode/InlineCallFrame.h: Copied from Source/JavaScriptCore/bytecode/CodeOrigin.h.

(JSC::InlineCallFrame::isVarargs):
(JSC::InlineCallFrame::InlineCallFrame):
(JSC::InlineCallFrame::specializationKind):
(JSC::baselineCodeBlockForInlineCallFrame):
(JSC::baselineCodeBlockForOriginAndBaselineCodeBlock):
(JSC::CodeOrigin::CodeOrigin): Deleted.
(JSC::CodeOrigin::isSet): Deleted.
(JSC::CodeOrigin::operator!): Deleted.
(JSC::CodeOrigin::isHashTableDeletedValue): Deleted.
(JSC::CodeOrigin::operator!=): Deleted.
(JSC::CodeOrigin::deletedMarker): Deleted.
(JSC::CodeOrigin::stackOffset): Deleted.
(JSC::CodeOrigin::hash): Deleted.
(JSC::CodeOrigin::operator==): Deleted.
(JSC::CodeOrigin::codeOriginOwner): Deleted.
(JSC::CodeOriginHash::hash): Deleted.
(JSC::CodeOriginHash::equal): Deleted.
(JSC::CodeOriginApproximateHash::hash): Deleted.
(JSC::CodeOriginApproximateHash::equal): Deleted.

  • bytecode/InlineCallFrameSet.cpp:
  • dfg/DFGCommonData.cpp:
  • dfg/DFGOSRExitBase.cpp:
  • dfg/DFGVariableEventStream.cpp:
  • ftl/FTLOperations.cpp:
  • interpreter/CallFrame.cpp:
  • interpreter/StackVisitor.cpp:
  • jit/AssemblyHelpers.h:
  • profiler/ProfilerOriginStack.cpp:
  • runtime/ClonedArguments.cpp:
10:56 AM Changeset in webkit [188584] by jeffm@apple.com
  • 3 edits in trunk/Source/WebKit/mac

Add a method to WebInspector to indicate whether the inspector is open
https://bugs.webkit.org/show_bug.cgi?id=148087

Reviewed by Joseph Pecoraro.

  • WebInspector/WebInspector.h:

Added open property.

  • WebInspector/WebInspector.mm:

(-isOpen):
Added, returns YES if we have a frontend.

10:37 AM Changeset in webkit [188583] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Removed an unused param in Interpreter::initialize().
https://bugs.webkit.org/show_bug.cgi?id=148129

Reviewed by Michael Saboff.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::~Interpreter):
(JSC::Interpreter::initialize):

  • interpreter/Interpreter.h:

(JSC::Interpreter::stack):

  • runtime/VM.cpp:

(JSC::VM::VM):

10:03 AM Changeset in webkit [188582] by jfernandez@igalia.com
  • 5 edits
    6 adds in trunk

[CSS Grid Layout] Do not stretch always grid items with auto width
https://bugs.webkit.org/show_bug.cgi?id=148069

Reviewed by Darin Adler.

Source/WebCore:

We assumed that any grid item with 'auto' width will be stretched
to fill all the available space in its grid area. We assumed this
because grid area acts as item's container.

However, Grid Layout specification states on its Alignment section
that items will be stretched by default, unless either
justify-self or align-self compute to a value other than stretch
or margins are auto. In those cases, grid items will auto-size to
fit their contents.

Tests:
fast/css-grid-layout/grid-align-justify-stretch.html
fast/css-grid-layout/grid-item-auto-margins-and-stretch.html
fast/css-grid-layout/grid-items-should-not-be-stretched-when-height-or-width-or-margin-change.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeLogicalWidthInRegion):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutGridItems):
(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):
(WebCore::RenderGrid::needToStretchChildLogicalHeight): Deleted.

  • rendering/RenderGrid.h:

LayoutTests:

New Layout tests to verify that grid stretching logic works as expected
when aligning both horizontally and vertically.

  • fast/css-grid-layout/grid-align-justify-stretch-expected.txt: Added.
  • fast/css-grid-layout/grid-align-justify-stretch.html: Added.
  • fast/css-grid-layout/grid-item-auto-margins-and-stretch-expected.txt: Added.
  • fast/css-grid-layout/grid-item-auto-margins-and-stretch.html: Added.
  • fast/css-grid-layout/grid-items-should-not-be-stretched-when-height-or-width-or-margin-change-expected.txt: Added.
  • fast/css-grid-layout/grid-items-should-not-be-stretched-when-height-or-width-or-margin-change.html: Added.
7:46 AM Changeset in webkit [188581] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Option-Enter should commit console command without erasing the prompt
https://bugs.webkit.org/show_bug.cgi?id=148123

Also, don't append a console command if it's the same as the last one.

Reviewed by Timothy Hatcher.

  • UserInterface/Controllers/JavaScriptLogViewController.js:

(WebInspector.JavaScriptLogViewController):

  • UserInterface/Views/ConsolePrompt.js:

(WebInspector.ConsolePrompt):
(WebInspector.ConsolePrompt.prototype._handleEnterKey.commitTextOrInsertNewLine):
(WebInspector.ConsolePrompt.prototype._handleEnterKey):
(WebInspector.ConsolePrompt.prototype._handleOptionEnterKey):
(WebInspector.ConsolePrompt.prototype._handleCommandOptionEnterKey):

1:25 AM Changeset in webkit [188580] by calvaris@igalia.com
  • 7 edits in trunk

[Streams API] Update implementation with the latest spec
https://bugs.webkit.org/show_bug.cgi?id=147978

Reviewed by Darin Adler.

Source/WebCore:

Changed the way the read and closed promises are resolved and the stream is released when an even closes or
errors the stream.

Current tests suffice after changing the order of the promise resolution according to the new spec.

  • Modules/streams/ReadableStream.cpp:

(WebCore::ReadableStream::releaseReader): Changed how the promises are resolved.
(WebCore::ReadableStream::changeStateToErrored): Changed how the promises are resolved and manually releasing
the stream instead of calling releaseReader according to the spec.

LayoutTests:

Changed tests about the order of the read and closed promise resolution.

  • streams/readable-stream-reader-read.html:
  • streams/reference-implementation/readable-stream-tee.html:
  • streams/reference-implementation/readable-stream-templated.html:
  • streams/reference-implementation/readable-stream.html:

Aug 17, 2015:

11:33 PM Changeset in webkit [188579] by commit-queue@webkit.org
  • 47 edits
    1 move
    2 adds
    1 delete in trunk

Unreviewed, rolling out r188539, r188544, r188552, and
r188564.
https://bugs.webkit.org/show_bug.cgi?id=148122

Broke tests and some build styles (Requested by ap on
#webkit).

Reverted changesets:

"Web Inspector: load ProtocolTestStub from the WebInspectorUI
bundle"
https://bugs.webkit.org/show_bug.cgi?id=147955
http://trac.webkit.org/changeset/188539

"Web Inspector: split TestStub.js into multiple files and
modernize it"
https://bugs.webkit.org/show_bug.cgi?id=148077
http://trac.webkit.org/changeset/188544

"Web Inspector: InspectorTest should be a subclass of
TestHarness"
https://bugs.webkit.org/show_bug.cgi?id=148079
http://trac.webkit.org/changeset/188552

"Unreviewed internal build fix attempt after r188539."
http://trac.webkit.org/changeset/188564

11:28 PM Changeset in webkit [188578] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Allow typing command when a console message is selected
https://bugs.webkit.org/show_bug.cgi?id=148121

Reviewed by Timothy Hatcher.

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView):
(WebInspector.LogContentView.prototype._keyPress):
Command-C should still copy the selected message.

11:03 PM Changeset in webkit [188577] by Alan Bujtas
  • 7 edits
    6 adds in trunk

Outline with auto style leaves bits behind when the the box is moved.
https://bugs.webkit.org/show_bug.cgi?id=148100

Reviewed by Simon Fraser.

Source/WebCore:

We paint the focus ring when 'outline-style: auto' is present, however
we don't take the focus ring width into account when the repaint rect
is computed.

Tests: fast/repaint/outline-with1px-auto-repaint-rect.html

fast/repaint/outline-with2px-auto-repaint-rect.html
fast/repaint/outline-with3px-auto-repaint-rect.html

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::adjustRectForOutlineAndShadow):

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::platformFocusRingMaxWidth): Deleted. : 0 as focus ring width is incorrect.
The reason why r169699 fixed the failing cases was because they all had outline width < 3 (but no auto outline style).
The correct fix is to check if the style requires focus ring painting and use the RenderTheme::platformFocusRingMaxWidth
accordingly.

LayoutTests:

Due to RenderView::maximalOutlineSize() each outline width need to be tested separately.

  • fast/repaint/outline-with1px-auto-repaint-rect-expected.txt: Added.
  • fast/repaint/outline-with1px-auto-repaint-rect.html: Added.
  • fast/repaint/outline-with2px-auto-repaint-rect-expected.txt: Added.
  • fast/repaint/outline-with2px-auto-repaint-rect.html: Added.
  • fast/repaint/outline-with3px-auto-repaint-rect-expected.txt: Added.
  • fast/repaint/outline-with3px-auto-repaint-rect.html: Added.
10:55 PM Changeset in webkit [188576] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Update slider styles
https://bugs.webkit.org/show_bug.cgi?id=148120

Reviewed by Timothy Hatcher.

  • UserInterface/Views/Main.css:

(input[type=range]):
(input[type=range]::-webkit-slider-runnable-track::before):

9:55 PM Changeset in webkit [188575] by mmaxfield@apple.com
  • 6 edits in trunk/Source/WebCore

[Cocoa] Address post-commit review
https://bugs.webkit.org/show_bug.cgi?id=147864

Reviewed by Darin Adler.

Create helper functions to cast between NSFont*s and CTFontRefs.

No new tests because there is no behavior change.

  • platform/graphics/FontPlatformData.h:

(WebCore::toCTFont):
(WebCore::toNSFont):

  • platform/graphics/cocoa/FontCacheCoreText.cpp:
  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::Font::platformCreateScaledFont):
(WebCore::Font::compositeFontReferenceFont):

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::FontCache::platformPurgeInactiveFontData):
(WebCore::lookupCTFont):
(WebCore::FontCache::systemFallbackForCharacters):
(WebCore::FontCache::createFontPlatformData):

  • platform/mac/DragImageMac.mm:

(WebCore::fontFromNSFont):
(WebCore::widthWithFont):
(WebCore::drawAtPoint):

  • platform/spi/mac/NSFontSPI.h:
9:13 PM Changeset in webkit [188574] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

WinCairo build fix after r188566

  • platform/graphics/win/FontPlatformDataCairoWin.cpp:

(WebCore::FontPlatformData::FontPlatformData):
Remove reference to removed m_isCompositeFontReference.

9:13 PM Changeset in webkit [188573] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: font-family list is backwards in visual sidebar
https://bugs.webkit.org/show_bug.cgi?id=148101

Reviewed by Timothy Hatcher.

  • UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:

(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._addCommaSeparatedKeyword):
Now appends new children if the current index is not set instead of inserting them.

9:12 PM Changeset in webkit [188572] by Devin Rousso
  • 7 edits in trunk/Source/WebInspectorUI

Web Inspector: Style changes to Visual sidebar selector items
https://bugs.webkit.org/show_bug.cgi?id=148114

Reviewed by Timothy Hatcher.

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

(WebInspector.GeneralTreeElement.prototype._updateTitleElements):
(WebInspector.GeneralTreeElement.prototype._updateTitleTooltip):
Moved the code to update the item tooltip to its own function.

  • UserInterface/Views/VisualStyleDetailsPanel.js:

(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.editorMouseover):
(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.editorMouseout):
(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners):
(WebInspector.VisualStyleDetailsPanel.prototype._generateMetricSectionRows):
(WebInspector.VisualStyleDetailsPanel.prototype._populateMarginSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populatePaddingSection):
(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.onEditorMouseover): Deleted.
(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.onEditorMouseout): Deleted.
Added on-hover node/selector highlighting to margin and padding editor links.

  • UserInterface/Views/VisualStyleNumberInputBox.js:

(WebInspector.VisualStyleNumberInputBox):
Replaced "No Units" with "Number" for better clarity.

  • UserInterface/Views/VisualStyleSelectorTreeItem.css:

(body:not(.window-inactive, .window-docked-inactive) .item.visual-style-selector-item.selected > input[type="checkbox"]:checked::before):
(.item.visual-style-selector-item.selected > input[type="checkbox"]::before): Deleted.
Removes the white border when the window is inactive and when the checkbox is unchecked.

  • UserInterface/Views/VisualStyleSelectorTreeItem.js:

(WebInspector.VisualStyleSelectorTreeItem.prototype._commitSelector):
Now updates the title of the item when the selector changes.

9:11 PM Changeset in webkit [188571] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: delete key should work on multi-values visual sidebar grid sections
https://bugs.webkit.org/show_bug.cgi?id=148110

Reviewed by Timothy Hatcher.

  • UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:

(WebInspector.VisualStyleCommaSeparatedKeywordEditor):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._listElementKeyDown):
If the backspace/delete key is pressed when focus is within the list element, delete
the selected list item if it is not currently being edited (if it has an editor).

  • UserInterface/Views/VisualStyleFontFamilyTreeElement.js:

(WebInspector.VisualStyleFontFamilyTreeElement.prototype.get currentlyEditing):

9:08 PM Changeset in webkit [188570] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: web fonts or unknown fonts show up as Times in visual sidebar
https://bugs.webkit.org/show_bug.cgi?id=148103

Reviewed by Timothy Hatcher.

  • UserInterface/Views/VisualStyleFontFamilyTreeElement.js:

(WebInspector.VisualStyleFontFamilyTreeElement.prototype.updateMainTitle):
Fonts now fall back to sans-serif and -apple-system if they do not exist.

7:44 PM Changeset in webkit [188569] by mmaxfield@apple.com
  • 1 edit in trunk/Source/WebCore/ChangeLog

Follow up patch after r188566

7:31 PM Changeset in webkit [188568] by msaboff@apple.com
  • 3 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: Stop saving and restoring all callee saves on vmEntry / exit for platforms with per function callee saves handling
https://bugs.webkit.org/show_bug.cgi?id=147747

Reviewed by Basile Clement.

Removed saving of callee save registers and materialization of special tag registers for
64 bit platforms.

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:
7:25 PM Changeset in webkit [188567] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Add const to content extension parser
https://bugs.webkit.org/show_bug.cgi?id=148044

Patch by Alex Christensen <achristensen@webkit.org> on 2015-08-17
Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

  • runtime/JSObject.h:

(JSC::JSObject::getIndexQuickly):
(JSC::JSObject::tryGetIndexQuickly):
(JSC::JSObject::getDirectIndex):
(JSC::JSObject::getIndex):
Added a few const keywords.

Source/WebCore:

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::containsOnlyASCIIWithNoUppercase):
(WebCore::ContentExtensions::getDomainList):
(WebCore::ContentExtensions::getTypeFlags):
(WebCore::ContentExtensions::loadTrigger):
(WebCore::ContentExtensions::loadAction):
(WebCore::ContentExtensions::loadRule):
(WebCore::ContentExtensions::loadEncodedRules):
Add const. No change in behavior.

7:07 PM Changeset in webkit [188566] by mmaxfield@apple.com
  • 18 edits
    13 deletes in trunk

[OS X] Remove support for composite fonts
https://bugs.webkit.org/show_bug.cgi?id=147920

Reviewed by Dan Bernstein.

Source/WebCore:

WebKit maintains a cache of code point to glyph mapping for a particular font. One of
the ways WebKit populates this cache is to create a string holding consecutive code
points, create a CTLineRef from the string, and use CTRunGetGlyphs() with
CTRunGetStringIndices() to map from the code points to the glyphs. This approach is
fundamentally incorrect, as it will combine consecutive code points together in the
string if possible to produce a glyph.

The only way WebKit will ever trigger this code path is if we are inspecting a
composite font, first introduced in [1]. These composite fonts are extremely rare
because:

  1. None of the preinstalled fonts on either OS X nor iOS are composite fonts,
  2. WebKit does not support loading web fonts from composite font files, and
  3. WebKit's support only ever existed on OS X (none of the other ports).

In fact, no one I've consulted with has ever seen any of these fonts used in the wild.
The fonts also require a fundamentally broken code path, and add complexity to WebKit.

[1] https://bugs.webkit.org/attachment.cgi?id=134923&action=review

No new tests.

  • platform/graphics/Font.h:
  • platform/graphics/FontPlatformData.cpp:

(WebCore::FontPlatformData::FontPlatformData): Deleted.
(WebCore::FontPlatformData::operator=): Deleted.

  • platform/graphics/FontPlatformData.h:

(WebCore::FontPlatformData::isCompositeFontReference): Deleted.
(WebCore::FontPlatformData::operator==): Deleted.

  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::Font::compositeFontReferenceFont): Deleted.

  • platform/graphics/cocoa/FontPlatformDataCocoa.mm:

(WebCore::FontPlatformData::FontPlatformData): Deleted.
(WebCore::FontPlatformData::setFont): Deleted.

  • platform/graphics/mac/GlyphPageMac.cpp:

(WebCore::shouldUseCoreText):
(WebCore::GlyphPage::fill):

Tools:

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • DumpRenderTree/fonts/SampleFont.sfont: Removed.
  • DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
  • DumpRenderTree/mac/Configurations/DumpRenderTreeApp.xcconfig:
  • DumpRenderTree/mac/DumpRenderTree.mm:

(allowedFontFamilySet): Deleted.
(activateTestingFonts): Deleted.

  • WebKitTestRunner/InjectedBundle/cocoa/ActivateFontsCocoa.mm:

(WTR::allowedFontFamilySet): Deleted.
(WTR::activateFonts): Deleted.

  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
  • WebKitTestRunner/fonts/SampleFont.sfont: Removed.
  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::allowedFontFamilySet): Deleted.

LayoutTests:

  • fast/text/international/text-spliced-font.html: Removed.
  • platform/efl/fast/text/international/text-spliced-font-expected.png: Removed.
  • platform/efl/fast/text/international/text-spliced-font-expected.txt: Removed.
  • platform/gtk/fast/text/international/text-spliced-font-expected.png: Removed.
  • platform/gtk/fast/text/international/text-spliced-font-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/text/international/text-spliced-font-expected.txt: Removed.
  • platform/ios-simulator/fast/text/international/text-spliced-font-expected.txt: Removed.
  • platform/mac/fast/text/international/text-spliced-font-expected.png: Removed.
  • platform/mac/fast/text/international/text-spliced-font-expected.txt: Removed.
  • platform/win/fast/text/international/text-spliced-font-expected.png: Removed.
  • platform/win/fast/text/international/text-spliced-font-expected.txt: Removed.
7:02 PM Changeset in webkit [188565] by timothy_horton@apple.com
  • 6 edits in trunk/Source/WebCore

Some functions on DictionaryLookup.h should just be generic functions elsewhere
https://bugs.webkit.org/show_bug.cgi?id=138567

Reviewed by Dean Jackson.

No new tests, just refactoring.

  • dom/Range.cpp:

(WebCore::Range::contains):

  • dom/Range.h:

Add a Range::contains(VisiblePosition).
It's simpler than the old thing from DictionaryLookup.mm, but does the same thing.
It's so simple that it doesn't necessarily need to exist, but it seems useful.

  • editing/VisiblePosition.cpp:

(WebCore::makeRange):
nullptrs

  • editing/mac/DictionaryLookup.h:
  • editing/mac/DictionaryLookup.mm:

(WebCore::selectionContainsPosition):
(WebCore::rangeForDictionaryLookupAtHitTestResult):
(WebCore::isPositionInRange): Deleted.
(WebCore::shouldUseSelection): Deleted.
Move isPositionInRange to Range.
Rename shouldUseSelection to what it really means.
I didn't move selectionContainsPosition to VisibleSelection because it
only handles Range selections, not any of the ohers, and thus isn't
generic enough to put there.

6:42 PM Changeset in webkit [188564] by jhoneycutt@apple.com
  • 2 edits in trunk/Tools

Unreviewed internal build fix attempt after r188539.

  • WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm:
6:38 PM Changeset in webkit [188563] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Speculative GTK build fix after r188553

  • CMakeLists.txt:

Added new files.

5:57 PM Changeset in webkit [188562] by mmaxfield@apple.com
  • 1 edit
    1 add in trunk/LayoutTests

[Win] Test gardening

Unreviewed.

  • platform/win/fast/text/system-font-punctuation-expected.txt: Added.
5:52 PM Changeset in webkit [188561] by mmaxfield@apple.com
  • 2 edits in trunk/Tools

Fix the build

Unreviewed.

  • TestWebKitAPI/Tests/WTF/StringHasher.cpp:
5:43 PM Changeset in webkit [188560] by achristensen@apple.com
  • 7 edits in trunk

[Win CMake] Allow WebKitLibraries directory to be set from the command line
https://bugs.webkit.org/show_bug.cgi?id=148112

Reviewed by Brent Fulgham.

.:

  • Source/cmake/OptionsWin.cmake:

Don't use an environment variable for WEBKIT_LIBRARIES_DIR.
Instead, use the default location if nothing is passed in from the command line.
This way we can set it from the command line for the AppleInternal build.
Also, set the output directories to be consistent between the old and new build systems (and ninja).

Source/WebCore:

  • PlatformAppleWin.cmake:
  • PlatformWinCairo.cmake:

Don't use an environment variable for WEBKIT_LIBRARIES_DIR.

Source/WebKit:

  • PlatformWin.cmake:

Don't use an environment variable for WEBKIT_LIBRARIES_DIR.

5:42 PM Changeset in webkit [188559] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[OS X] Migrate off of CTFontSetRenderingParameters()
https://bugs.webkit.org/show_bug.cgi?id=148113

Reviewed by Lucas Forschler.

Instead, use CTFontSetRenderingStyle().

No new tests because there is no behavior change.

  • platform/spi/cocoa/CoreTextSPI.h:
5:21 PM Changeset in webkit [188558] by achristensen@apple.com
  • 19 edits in trunk

Build Debug Suffix on Windows with CMake
https://bugs.webkit.org/show_bug.cgi?id=148083

Reviewed by Brent Fulgham.

.:

  • Source/cmake/OptionsWin.cmake:

Use debug libraries in debug suffix builds.

Source/JavaScriptCore:

  • CMakeLists.txt:
  • PlatformWin.cmake:
  • shell/CMakeLists.txt:
  • shell/PlatformWin.cmake:

Add DEBUG_SUFFIX

Source/WebCore:

  • CMakeLists.txt:
  • PlatformAppleWin.cmake:
  • PlatformWin.cmake:

Add DEBUG_SUFFIX

Source/WebKit:

  • CMakeLists.txt:
  • PlatformWin.cmake:

Add DEBUG_SUFFIX

Source/WTF:

  • wtf/PlatformWin.cmake:

Add DEBUG_SUFFIX

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/PlatformWin.cmake:

Add DEBUG_SUFFIX

4:59 PM Changeset in webkit [188557] by mmaxfield@apple.com
  • 21 edits
    1 move in trunk/Source

Implement IntegerHasher
https://bugs.webkit.org/show_bug.cgi?id=147866

Reviewed by Darin Adler and Anders Carlsson.

Source/WebCore:

Rename StringHasher.h to Hasher.

No new tests because there is no behavior difference.

  • contentextensions/DFAMinimizer.cpp: Use new #include.
  • contentextensions/HashableActionList.h: Ditto.
  • platform/graphics/FontFeatureSettings.cpp:

(WebCore::FontFeatureSettings::hash): Use new IntegerHasher class.
(WebCore::FontFeature::hash): Deleted.

  • platform/graphics/FontFeatureSettings.h: Remove unnecessary function.
  • platform/graphics/Gradient.cpp: Use new #include.
  • platform/graphics/WidthCache.h: Ditto.

Source/WebInspectorUI:

Update comment.

  • UserInterface/Base/Utilities.js:

Source/WebKit2:

Use new #include.

  • DatabaseProcess/IndexedDB/IDBIdentifier.h:
  • Platform/IPC/StringReference.cpp:

Source/WTF:

Rename StringHasher.h to Hasher.h, and include an IntegerHasher class.

  • WTF.vcxproj/WTF.vcxproj: Update to target new file.
  • WTF.vcxproj/WTF.vcxproj.filters: Ditto.
  • WTF.xcodeproj/project.pbxproj: Ditto.
  • wtf/CMakeLists.txt: Ditto.
  • wtf/Hasher.h: Renamed from Source/WTF/wtf/StringHasher.h.
  • wtf/text/CString.cpp: Use new #include
  • wtf/text/StringHash.h: Ditto.
  • wtf/text/StringImpl.h: Ditto.
  • wtf/unicode/UTF8.cpp: Ditto.
4:59 PM Changeset in webkit [188556] by msaboff@apple.com
  • 6 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: REGRESSION(r188071): Crash when handling exception in Release builds
https://bugs.webkit.org/show_bug.cgi?id=147759

Reviewed by Basile Clement.

Fix a couple of issue to properly save and unwind callee save registers.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::usedRegisters): Need to include the callee save registers in the
set of registers not availble for making thunks.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall): Need to restore callee save registers before making
a slow path tail call.

  • interpreter/Interpreter.cpp:

(JSC::UnwindFunctor::operator()): We need to copy the current frames callee saves to the VM
callee save register buffer when we have found the frame with the catch block.

  • jit/AssemblyHelpers.h: Changed to materialize the VM::calleeSaveRegsiterBuffer with one immediate move.
  • llint/LowLevelInterpreter64.asm:

(llint_throw_from_slow_path_trampoline): We need to the current callee saves registers to the
VM::calleeSaveRegsiterBuffer before we process the exception.

4:58 PM Changeset in webkit [188555] by msaboff@apple.com
  • 8 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: Handling exception in caller frame cannot unwind past VMEntry frame
https://bugs.webkit.org/show_bug.cgi?id=148076

Reviewed by Basile Clement.

When we are unwinding from our caller, we need to check if we are the top JavaScript entry frame.
If so, we don't need to unwind any further, we just process as an unhandled exception.
Moved the processing of "unwind from caller frame" into genericUnwind(). Added an enum parameter
to indicate whether or not we start unwinding from the current frame or caller's frame.
In the case of the LLInt, we now handle a stack overflow exception from the current frame and not
the caller's frame. This is needed because the unwind code needs to restore the callee saves
that the LLInt has saved, namely the PC register which is needed to make slow path calls.

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::callerFrameIsVMEntryFrame):

  • interpreter/CallFrame.h:

(JSC::CallFrame::callerFrameIsVMEntryFrame):
New helper function to determine if we are the top JavaScript frame.

  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITExceptions.h:

Added enum parameter to genericUnwind() to indicate if we are unwinding from the current or
caller frame.

  • jit/JITOperations.cpp:

(JSC:lookupExceptionHandlerFromCallerFrame): Moved the caller frame processing to genericUnwind().

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::llint_stack_check): Changed to process the exception in the current frame.

  • llint/LowLevelInterpreter.asm:

Made sure to account for calle save register space when making a call to llint_stack_check.

4:48 PM Changeset in webkit [188554] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.52

New tag.

4:39 PM Changeset in webkit [188553] by andersca@apple.com
  • 11 edits
    4 copies in trunk/Source/WebKit2

Add WKWindowFeaturesRef and a new modern createNewPage UI client callback
https://bugs.webkit.org/show_bug.cgi?id=147989

Reviewed by Tim Horton.

Re-land this and make sure we actually allocate a WKWindowFeatures object.

  • Platform/IPC/mac/ConnectionMac.mm:
  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • UIProcess/API/APIWindowFeatures.cpp: Added.
  • UIProcess/API/APIWindowFeatures.h: Added.
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/API/C/WKWindowFeaturesRef.cpp: Added.

(WKWindowFeaturesGetTypeID):

  • UIProcess/API/C/WKWindowFeaturesRef.h: Added.
  • UIProcess/API/Cocoa/WKWindowFeatures.mm:

(-[WKWindowFeatures dealloc]):
(-[WKWindowFeatures menuBarVisibility]):
(-[WKWindowFeatures statusBarVisibility]):
(-[WKWindowFeatures toolbarsVisibility]):
(-[WKWindowFeatures allowsResizing]):
(-[WKWindowFeatures x]):
(-[WKWindowFeatures y]):
(-[WKWindowFeatures width]):
(-[WKWindowFeatures height]):
(-[WKWindowFeatures _apiObject]):
(-[WKWindowFeatures _initWithWindowFeatures:]): Deleted.

  • UIProcess/API/Cocoa/WKWindowFeaturesInternal.h:

(WebKit::wrapper):

  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::UIClient::createNewPage):

  • WebKit2.xcodeproj/project.pbxproj:
4:37 PM Changeset in webkit [188552] by BJ Burg
  • 15 edits
    1 add in trunk

Web Inspector: InspectorTest should be a subclass of TestHarness
https://bugs.webkit.org/show_bug.cgi?id=148079

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

Extract the frontend test harness into a subclass. Delete some code that
is now redundant. Sprinkle some ES6 syntax where possible.

Rewrite the code that redirects the Inspector page's console messages to
the test page, since it didn't appear to work any more.

  • UserInterface/Test.html:
  • UserInterface/Test/FrontendTestHarness.js: Added.

(FrontendTestHarness):
(FrontendTestHarness.prototype.completeTest):
(FrontendTestHarness.prototype.addResult):
(FrontendTestHarness.prototype.debugLog):
(FrontendTestHarness.prototype.evaluateInPage):
(FrontendTestHarness.prototype.expectNoError):
(FrontendTestHarness.prototype.testPageDidLoad):
(FrontendTestHarness.prototype.reloadPage):
(FrontendTestHarness.prototype.redirectConsoleToTestOutput.createProxyConsoleHandler):
(FrontendTestHarness.prototype.redirectConsoleToTestOutput):
(FrontendTestHarness.prototype.reportUncaughtException):
(FrontendTestHarness.prototype._resendResults):

  • UserInterface/Test/Test.js:

(InspectorTest.EventDispatcher.prototype.dispatchEvent): Deleted.
(InspectorTest.EventDispatcher): Deleted.
(InspectorTest.log): Deleted.
(InspectorTest.assert): Deleted.
(InspectorTest.expectThat): Deleted.
(InspectorTest.debugLog): Deleted.
(InspectorTest.expectNoError): Deleted.
(InspectorTest.completeTest): Deleted.
(InspectorTest.evaluateInPage): Deleted.
(InspectorTest.addResult): Deleted.
(InspectorTest._resendResults): Deleted.
(InspectorTest.testPageDidLoad): Deleted.
(InspectorTest.reloadPage): Deleted.
(InspectorTest.reportUncaughtException): Deleted.

LayoutTests:

Rename InspectorTestProxy to TestPage.

  • http/tests/inspector/debugger/debugger-test.js:
  • http/tests/inspector/dom/shapes-test.js:
  • http/tests/inspector/replay/replay-test.js:
  • http/tests/inspector/resources/inspector-test.js:

(TestPage.registerInitializer):
(runTest):
(TestPage.completeTest):
(TestPage.debugLog):
(TestPage.addResult):
(TestPage.reportUncaughtException):
(InspectorTestProxy.registerInitializer): Deleted.
(InspectorTestProxy.completeTest): Deleted.
(InspectorTestProxy.debugLog): Deleted.
(InspectorTestProxy.addResult): Deleted.
(InspectorTestProxy.reportUncaughtException): Deleted.

  • inspector/debugger/breakpoint-action-eval.html:
  • inspector/debugger/resources/break-on-exception-tests.js:
  • inspector/debugger/resources/script-for-breakpoint-actions.js:

(breakpointActions):

  • inspector/debugger/search-scripts.html:
  • inspector/replay/window-navigator-plugins-memoized.html:
  • inspector/timeline/debugger-paused-while-recording.html:
  • inspector/timeline/exception-in-injected-script-while-recording.html:
4:03 PM Changeset in webkit [188551] by jhoneycutt@apple.com
  • 2 edits in trunk/LayoutTests

Remove failing expectations for some WK2 tests that have passed for the
last 15 builds.

  • platform/ios-simulator-wk2/TestExpectations:
3:57 PM Changeset in webkit [188550] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Log actual PageCache retrieval success rate using diagnostic logging
https://bugs.webkit.org/show_bug.cgi?id=147937

Reviewed by Antti Koivisto.

Log actual PageCache retrieval success rate using diagnostic logging.
Previously, we would only log how successful we are at saving entries
into the cache, which is not the most interesting metric.

  • history/PageCache.cpp:

(WebCore::canCachePage):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::canCacheKey):

  • page/DiagnosticLoggingKeys.h:
3:57 PM Changeset in webkit [188549] by commit-queue@webkit.org
  • 5 edits in trunk/Source

Web Inspector: Type profiler return types aren't showing up
https://bugs.webkit.org/show_bug.cgi?id=147348

Patch by Saam barati <sbarati@apple.com> on 2015-08-17
Reviewed by Brian Burg.

Bug #145995 changed the starting offset of a function to
be the open parenthesis of the function's parameter list.
Source/JavaScriptCore:

This broke JSC's type profiler protocol of communicating
return types of a function to the web inspector. This
is now fixed. The text offset used in the protocol is now
the first letter of the function/get/set/method name.
So "f" in "function a() {}", "s" in "set foo(){}", etc.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):

  • jsc.cpp:

(functionReturnTypeFor):

Source/WebInspectorUI:

This broke the type profiler's text offset based protocol with JSC.
The text offset used in the protocol is now the first letter of the
function/get/set/method name. So "f" in "function a() {}", "s" in "set foo(){}", etc.

  • UserInterface/Models/ScriptSyntaxTree.js:

(WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement):
(WebInspector.ScriptSyntaxTree.functionReturnDivot):

3:49 PM Changeset in webkit [188548] by andersca@apple.com
  • 6 edits in trunk/Tools

Simplify how PlatformWebViews are created when view options change
https://bugs.webkit.org/show_bug.cgi?id=148093

Reviewed by Sam Weinig.

Instead of letting each port dictate when the PlatformWebView should be recreated we now do the following:

TestController::ensureViewSupportsOptionsForTest gets the view options for a test by calling
TestController::viewOptionsForTest, which returns a filled in ViewOptions struct for a given test. It also allows
ports to add/override settings by calling TestController::updatePlatformSpecificViewOptionsForTest.

If the current PlatformWebView doesn't support the given view options, delete the web view and create a new one.

Also, get rid of the first call to TestController::createWebViewWithOptions in TestController::initialize and
always rely on TestController::ensureViewSupportsOptionsForTest creating a PlatformWebView for us.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::ensureViewSupportsOptionsForTest):
(WTR::shouldUseFixedLayout):
(WTR::TestController::viewOptionsForTest):
(WTR::TestController::updateWebViewSizeForTest):
(WTR::TestController::updateWindowScaleForTest):
(WTR::TestController::configureViewForTest):
(WTR::TestController::initialize): Deleted.
(WTR::TestController::ensureViewSupportsOptions): Deleted.
(WTR::TestController::updateLayoutTypeForTest): Deleted.
(WTR::TestController::platformConfigureViewForTest): Deleted.
(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.
(WTR::TestController::run): Deleted.

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/efl/TestControllerEfl.cpp:

(WTR::shouldUseFixedLayout):
(WTR::TestController::updatePlatformSpecificViewOptionsForTest):
(WTR::TestController::platformConfigureViewForTest):
(WTR::TestController::platformResetPreferencesToConsistentValues):

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::updatePlatformSpecificViewOptionsForTest):

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::updatePlatformSpecificViewOptionsForTest):
(WTR::TestController::platformConfigureViewForTest):

3:27 PM Changeset in webkit [188547] by Chris Dumez
  • 1 edit
    2 adds in trunk/PerformanceTests

Add performance tests for traversal of collections returned by getElementsByClassName() / getElementsByTagName()
https://bugs.webkit.org/show_bug.cgi?id=148080

Reviewed by Antti Koivisto.

Add performance tests for traversal of *uncached* collections returned
by getElementsByClassName() / getElementsByTagName(). These methods
will soon be updated to return an HTMLCollection instead of a
NodeList and we need to make sure we don't regress performance in the
process.

  • DOM/get-elements-by-class-name-traversal-uncached.html: Added.
  • DOM/get-elements-by-tag-name-traversal-uncached.html: Added.
3:27 PM Changeset in webkit [188546] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: spurious console.assert inside ResourceContentView._contentAvailable
https://bugs.webkit.org/show_bug.cgi?id=147886

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ResourceContentView.js:

(WebInspector.ResourceContentView.prototype._hasContent): Fix the style class name.

3:24 PM Changeset in webkit [188545] by commit-queue@webkit.org
  • 70 edits
    55 adds in trunk

[ES6] Implement ES6 arrow function syntax. Arrow function specific features. Lexical bind of this
https://bugs.webkit.org/show_bug.cgi?id=144956

Source/JavaScriptCore:

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

Added support of ES6 arrow function specific feature, lexical bind of this and no constructor. http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax
In patch were implemented the following cases:

this - variable |this| is point to the |this| of the function where arrow function is declared. Lexical bind of |this|
constructor - the using of the command |new| for arrow function leads to runtime error
call(), apply(), bind() - methods can only pass in arguments, but has no effect on |this|

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecode/ExecutableInfo.h:

(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::isArrowFunction):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::isArrowFunction):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
(JSC::UnlinkedFunctionExecutable::codeBlockFor):

  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitNewFunctionCommon):
(JSC::BytecodeGenerator::emitNewFunctionExpression):
(JSC::BytecodeGenerator::emitNewArrowFunctionExpression):
(JSC::BytecodeGenerator::emitLoadArrowFunctionThis):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ArrowFuncExprNode::emitBytecode):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertToPhantomNewFunction):
(JSC::DFG::Node::hasCellOperand):
(JSC::DFG::Node::isFunctionAllocation):

  • dfg/DFGNodeType.h:
  • dfg/DFGObjectAllocationSinkingPhase.cpp:
  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGPromotedHeapLocation.cpp:

(WTF::printInternal):

  • dfg/DFGPromotedHeapLocation.h:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileLoadArrowFunctionThis):
(JSC::DFG::SpeculativeJIT::compileNewFunctionCommon):
(JSC::DFG::SpeculativeJIT::compileNewFunction):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • dfg/DFGStructureRegistrationPhase.cpp:

(JSC::DFG::StructureRegistrationPhase::run):

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

(JSC::FTL::canCompile):

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

(JSC::FTL::DFG::LowerDFGToLLVM::compileNode):
(JSC::FTL::DFG::LowerDFGToLLVM::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToLLVM::compileLoadArrowFunctionThis):

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationMaterializeObjectInOSR):

  • interpreter/Interpreter.cpp:
  • interpreter/Interpreter.h:
  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState): Added 3 arguments version for windows build.

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITInlines.h:

(JSC::JIT::callOperation):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_load_arrowfunction_this):
(JSC::JIT::emit_op_new_func_exp):
(JSC::JIT::emitNewFuncExprCommon):
(JSC::JIT::emit_op_new_arrow_func_exp):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_load_arrowfunction_this):

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

(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::setUpCall):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createFunctionMetadata):
(JSC::ASTBuilder::createArrowFunctionExpr):

  • parser/NodeConstructors.h:

(JSC::BaseFuncExprNode::BaseFuncExprNode):
(JSC::FuncExprNode::FuncExprNode):
(JSC::ArrowFuncExprNode::ArrowFuncExprNode):

  • parser/Nodes.cpp:

(JSC::FunctionMetadataNode::FunctionMetadataNode):

  • parser/Nodes.h:

(JSC::ExpressionNode::isArrowFuncExprNode):

  • parser/Parser.cpp:

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

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createFunctionMetadata):

  • runtime/Executable.cpp:

(JSC::ScriptExecutable::newCodeBlockFor):

  • runtime/Executable.h:
  • runtime/JSArrowFunction.cpp: Added.

(JSC::JSArrowFunction::destroy):
(JSC::JSArrowFunction::create):
(JSC::JSArrowFunction::JSArrowFunction):
(JSC::JSArrowFunction::createWithInvalidatedReallocationWatchpoint):
(JSC::JSArrowFunction::visitChildren):
(JSC::JSArrowFunction::getConstructData):

  • runtime/JSArrowFunction.h: Added.

(JSC::JSArrowFunction::allocationSize):
(JSC::JSArrowFunction::createImpl):
(JSC::JSArrowFunction::boundThis):
(JSC::JSArrowFunction::createStructure):
(JSC::JSArrowFunction::offsetOfThisValue):

  • runtime/JSFunction.h:
  • runtime/JSFunctionInlines.h:

(JSC::JSFunction::JSFunction):

  • runtime/JSGlobalObject.cpp:

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

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::arrowFunctionStructure):

  • tests/stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js: Added.
  • tests/stress/arrowfunction-activation-sink-osrexit-default-value.js: Added.
  • tests/stress/arrowfunction-activation-sink-osrexit.js: Added.
  • tests/stress/arrowfunction-activation-sink.js: Added.
  • tests/stress/arrowfunction-bound.js: Added.
  • tests/stress/arrowfunction-call.js: Added.
  • tests/stress/arrowfunction-constructor.js: Added.
  • tests/stress/arrowfunction-lexical-bind-this-1.js: Added.
  • tests/stress/arrowfunction-lexical-bind-this-2.js: Added.
  • tests/stress/arrowfunction-lexical-bind-this-3.js: Added.
  • tests/stress/arrowfunction-lexical-bind-this-4.js: Added.
  • tests/stress/arrowfunction-lexical-bind-this-5.js: Added.
  • tests/stress/arrowfunction-lexical-bind-this-6.js: Added.
  • tests/stress/arrowfunction-lexical-this-activation-sink-osrexit.js: Added.
  • tests/stress/arrowfunction-lexical-this-activation-sink.js: Added.
  • tests/stress/arrowfunction-lexical-this-sinking-no-double-allocate.js: Added.
  • tests/stress/arrowfunction-lexical-this-sinking-osrexit.js: Added.
  • tests/stress/arrowfunction-lexical-this-sinking-put.js: Added.
  • tests/stress/arrowfunction-others.js: Added.
  • tests/stress/arrowfunction-run-10-1.js: Added.
  • tests/stress/arrowfunction-run-10-2.js: Added.
  • tests/stress/arrowfunction-run-10000-1.js: Added.
  • tests/stress/arrowfunction-run-10000-2.js: Added.
  • tests/stress/arrowfunction-sinking-no-double-allocate.js: Added.
  • tests/stress/arrowfunction-sinking-osrexit.js: Added.
  • tests/stress/arrowfunction-sinking-put.js: Added.
  • tests/stress/arrowfunction-tdz.js: Added.
  • tests/stress/arrowfunction-typeof.js: Added.

LayoutTests:

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

  • js/arrowfunction-bind-expected.txt: Added.
  • js/arrowfunction-bind.html: Added.
  • js/arrowfunction-call-expected.txt: Added.
  • js/arrowfunction-call.html: Added.
  • js/arrowfunction-constructor-expected.txt: Added.
  • js/arrowfunction-constructor.html: Added.
  • js/arrowfunction-lexical-bind-this-expected.txt: Added.
  • js/arrowfunction-lexical-bind-this.html: Added.
  • js/arrowfunction-others-expected.txt: Added.
  • js/arrowfunction-others.html: Added.
  • js/arrowfunction-tdz-expected.txt: Added.
  • js/arrowfunction-tdz.html: Added.
  • js/arrowfunction-typeof-expected.txt: Added.
  • js/arrowfunction-typeof.html: Added.
  • js/regress/arrowfunction-call-expected.txt: Added.
  • js/regress/arrowfunction-call.html: Added.
  • js/regress/script-tests/arrowfunction-call.js: Added.
  • js/regress/script-tests/function-call.js: Added.
  • js/script-tests/arrowfunction-bind.js: Added.
  • js/script-tests/arrowfunction-call.js: Added.
  • js/script-tests/arrowfunction-constructor.js: Added.
  • js/script-tests/arrowfunction-lexical-bind-this.js: Added.
  • js/script-tests/arrowfunction-others.js: Added.
  • js/script-tests/arrowfunction-tdz.js: Added.
  • js/script-tests/arrowfunction-typeof.js: Added.
2:51 PM Changeset in webkit [188544] by BJ Burg
  • 13 edits
    1 move
    6 adds
    1 delete in trunk

Web Inspector: split TestStub.js into multiple files and modernize it
https://bugs.webkit.org/show_bug.cgi?id=148077

Reviewed by Timothy Hatcher.
Source/WebInspectorUI:

Since we want to share files between the two harnesses, split some of the parts
into different files so not everything has to be included at once.

Rename InjectedTestHarness to just TestHarness. Update some code to use
ES6 features where appropriate. Put test classes into Test/ directory.

  • UserInterface/Base/TestStub.js: Removed.
  • UserInterface/Test.html:
  • UserInterface/Test/InspectorProtocol.js: Added.

(InspectorProtocol.sendCommand):
(InspectorProtocol.awaitCommand):
(InspectorProtocol.awaitEvent.):
(InspectorProtocol.awaitEvent):
(InspectorProtocol.addEventListener):
(InspectorProtocol.sendMessage):
(InspectorProtocol.checkForError):
(InspectorProtocol.dispatchMessageFromBackend):

  • UserInterface/Test/ProtocolTestHarness.js: Added.

(ProtocolTestHarness.prototype.completeTest):
(ProtocolTestHarness.prototype.addResult):
(ProtocolTestHarness.prototype.debugLog):
(ProtocolTestHarness.prototype.evaluateInPage):
(ProtocolTestHarness):

  • UserInterface/Test/Test.js: Renamed from Source/WebInspectorUI/UserInterface/Base/Test.js.

(WebInspector.loaded):
(WebInspector.contentLoaded):
(WebInspector.UIString):
(WebInspector.updateDockedState):
(WebInspector.updateDockingAvailability):
(InspectorTest.EventDispatcher.prototype.dispatchEvent):
(InspectorTest.EventDispatcher):
(InspectorTest.log):
(InspectorTest.assert):
(InspectorTest.expectThat):
(InspectorTest.debugLog):
(InspectorTest.expectNoError):
(InspectorTest.completeTest):
(InspectorTest.evaluateInPage):
(InspectorTest.addResult):
(InspectorTest._resendResults):
(InspectorTest.testPageDidLoad):
(InspectorTest.reloadPage):
(InspectorTest.reportUncaughtException):

  • UserInterface/Test/TestHarness.js: Added.

(TestHarness):
(TestHarness.prototype.completeTest):
(TestHarness.prototype.addResult):
(TestHarness.prototype.debugLog):
(TestHarness.prototype.evaluateInPage):
(TestHarness.prototype.createAsyncSuite):
(TestHarness.prototype.createSyncSuite):
(TestHarness.prototype.get logCount):
(TestHarness.prototype.log):
(TestHarness.prototype.assert):
(TestHarness.prototype.expectThat):

  • UserInterface/Test/TestStub.js: Added.
  • UserInterface/Test/TestSuite.js: Added.

(TestSuite):
(TestSuite.prototype.runTestCasesAndFinish):
(TestSuite.prototype.runTestCases):
(TestSuite.prototype.get passCount):
(TestSuite.prototype.get skipCount):
(TestSuite.prototype.addTestCase):
(AsyncTestSuite.prototype.runTestCasesAndFinish.finish):
(AsyncTestSuite.prototype.runTestCasesAndFinish):
(AsyncTestSuite.prototype.runTestCases):
(AsyncTestSuite):
(SyncTestSuite.prototype.runTestCasesAndFinish):
(SyncTestSuite.prototype.runTestCases):
(SyncTestSuite):

  • UserInterface/TestStub.html:

LayoutTests:

Add the prefix 'TestPage' to everything in protocol-test.js. Continue
exporting it to the global namespace for backwards compatibility, too.

Rename some things to match changes in the test harness. Tighten up
preconditions for test suite and test case names. Sprinkle some ES6.

  • http/tests/inspector/dom/resources/InspectorDOMListener.js:
  • http/tests/inspector/resources/console-test.js:
  • http/tests/inspector/resources/probe-test.js:
  • http/tests/inspector/resources/protocol-test.js:

(TestPage.registerInitializer):
(TestPage.debugLog.window.debugLog):
(TestPage.log.window.log):
(TestPage.closeTest.window.closeTest):
(TestPage.runTest.window.runTest):
(ProtocolTestProxy.registerInitializer): Deleted.
(debugLog): Deleted.
(log): Deleted.
(closeTest): Deleted.
(runTest): Deleted.

  • inspector/dom/resources/dom-search-queries.js:
  • inspector/unit-tests/async-test-suite.html:
  • inspector/unit-tests/sync-test-suite.html:
2:50 PM Changeset in webkit [188543] by weinig@apple.com
  • 7 edits in trunk

API::PageConfiguration's sessionID needs to be set whenever the API::WebsiteDataStore is set
https://bugs.webkit.org/show_bug.cgi?id=148097

Reviewed by Anders Carlsson.

Source/WebKit2:

We were getting an empty SessionID set on the WebPageProxy (and crashing asserting down the line)
when using a WKPageConfiguration with a WKWebsiteDataStore set on it.

Tests:

WebKit2.WKPageConfigurationBasicWithDataStore
WebKit2.WKPageConfigurationBasicWithNonPersistentDataStore

  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::setWebsiteDataStore):
Set the sessionID member whenever changing the WebsiteDataStore.

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreGetDefaultDataStore):
(WKWebsiteDataStoreCreateNonPersistentDataStore):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:

Expose functions for getting default and new non-persistent data stores via the C-SPI. Useful
for testing and transitioning users of the C-SPI to the new model.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView initWithFrame:configuration:]):
Remove explicit setting of the sessionID. This is handled by the above call to setWebsiteDataStore().

Tools:

  • TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp:

Add tests for WebsiteDataStores in the WKPageConfiguration.

2:40 PM Changeset in webkit [188542] by weinig@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

Cleanup the builtin JavaScript files
https://bugs.webkit.org/show_bug.cgi?id=147382

Reviewed by Geoffrey Garen.

  • builtins/Array.prototype.js:
  • builtins/ArrayConstructor.js:
  • builtins/ArrayIterator.prototype.js:
  • builtins/Function.prototype.js:
  • builtins/Iterator.prototype.js:
  • builtins/ObjectConstructor.js:
  • builtins/StringConstructor.js:
  • builtins/StringIterator.prototype.js:

Unify the style of the built JavaScript files.

1:39 PM Changeset in webkit [188541] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit2

Cannot change WKWebView scrollView deceleration rate
https://bugs.webkit.org/show_bug.cgi?id=148086
<rdar://problem/21893685>

Reviewed by Simon Fraser.

Updates the preferred scroll deceleration factor when the scrollView's decelerationRate is explicitly set by the
user, so when snap scrolling is inactive and [WKWebView scrollViewWillBeginDragging] sets its scrollView's
decelerationRate to the preferred decelerationRate, it will be set to the updated value.

  • UIProcess/ios/WKScrollView.mm:

(-[WKScrollView setDecelerationRate:]): Overrides setDecelerationRate to update _preferredScrollDecelerationFactor.

1:37 PM Changeset in webkit [188540] by achristensen@apple.com
  • 13 edits
    1 move
    1 add in trunk

Move some commands from ./CMakeLists.txt to Source/cmake
https://bugs.webkit.org/show_bug.cgi?id=148003

Reviewed by Brent Fulgham.

  • CMakeLists.txt:

.:

Moved functionality to WebKitCommon.cmake and WebKitFS.cmake and made conditional
so we can change directory structure from command line parameters.

  • Source/cmake/OptionsAppleWin.cmake:
  • Source/cmake/OptionsWin.cmake: Copied from Source/cmake/OptionsWindows.cmake.
  • Source/cmake/OptionsWinCairo.cmake:
  • Source/cmake/OptionsWindows.cmake: Removed.
  • Source/cmake/WebKitCommon.cmake: Added.
  • Source/cmake/WebKitFS.cmake:

Source/JavaScriptCore:

Added commands needed to build JSC by itself.

Source/WebCore:

Added commands needed to build WebCore by itself.

Source/WebKit:

Added some commands needed to build WebKit by itself.

Source/WTF:

Added commands needed to build WTF by itself.

1:33 PM Changeset in webkit [188539] by BJ Burg
  • 31 edits
    2 moves in trunk

Web Inspector: load ProtocolTestStub from the WebInspectorUI bundle
https://bugs.webkit.org/show_bug.cgi?id=147955

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

Move ProtocolTestStub.{html,js} into the actual WebInspectorUI project.

  • UserInterface/Base/TestStub.js: Renamed from LayoutTests/http/tests/inspector/resources/ProtocolTestStub.js.
  • UserInterface/TestStub.html: Renamed from LayoutTests/http/tests/inspector/resources/ProtocolTestStub.html.

Tools:

To enable sharing of common test code between protocol and model tests,
start loading the protocol TestStub.js through the WebInspectorUI bundle.

This patch adds the read-only getter TestRunner.inspectorTestStubURL, which
protocol-test.js uses to load the inspector frontend stub into its iframe
from an arbitrary local file URL.

  • DumpRenderTree/TestRunner.cpp:

(getInspectorTestStubURLCallback):
(TestRunner::staticValues):

  • DumpRenderTree/TestRunner.h:
  • DumpRenderTree/mac/TestRunnerMac.mm:

(SOFT_LINK_STAGED_FRAMEWORK):
(TestRunner::inspectorTestStubURL):

  • DumpRenderTree/win/TestRunnerWin.cpp:

(TestRunner::inspectorTestStubURL):

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/InjectedBundle/efl/TestRunnerEfl.cpp:

(WTR::TestRunner::inspectorTestStubURL):

  • WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp:

(WTR::TestRunner::inspectorTestStubURL):

  • WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm:

(WTR::TestRunner::inspectorTestStubURL):

LayoutTests:

Since the inspector stub cannot open files that live in the LayoutTests
directory, adopt the test helper marshalling approach used by inspector.js.
Each helper must register its code for marshalling and explicitly put globals
on the window object.

Use script tags rather than importScript to include helpers in a test.

  • TestExpectations: For now, skip inspector http tests. These should be rewritten

to use inspector-test.js, which does not run into cross-origin problems.

Rebaseline some test results to account for shifted line numbers (yuck).

  • http/tests/inspector/dom/resources/InspectorDOMListener.js:
  • http/tests/inspector/resources/console-test.js:
  • http/tests/inspector/resources/probe-test.js:
  • http/tests/inspector/resources/protocol-test.js:

(ProtocolTestProxy.registerInitializer):
(log):
(runTest.runInitializationMethodsInFrontend):
(runTest.runTestMethodInFrontend):
(runTest):

  • inspector/console/console-message.html:
  • inspector/console/css-source-locations-expected.txt:
  • inspector/console/css-source-locations.html:
  • inspector/console/js-source-locations-expected.txt:
  • inspector/console/js-source-locations.html:
  • inspector/console/x-frame-options-message-expected.txt:
  • inspector/console/x-frame-options-message.html:
  • inspector/debugger/didSampleProbe-multiple-probes.html:
  • inspector/debugger/setBreakpoint-actions.html:
  • inspector/debugger/setBreakpoint-options-exception.html:
  • inspector/dom/dom-search-expected.txt:
  • inspector/dom/dom-search-with-context.html:
  • inspector/dom/dom-search.html:
  • inspector/dom/resources/dom-search-queries.js:
1:29 PM Changeset in webkit [188538] by saambarati1@gmail.com
  • 2 edits in trunk/Tools

Change email address from saambarati1@gmail.com to sbarati@apple.com

  • Scripts/webkitpy/common/config/contributors.json:
1:22 PM Changeset in webkit [188537] by peavo@outlook.com
  • 4 edits in trunk/Source/WebKit/win

[WinCairo] Accelerated compositing does not respect device scale factor.
https://bugs.webkit.org/show_bug.cgi?id=148085

Reviewed by Brent Fulgham.

Scale root layer's transformation matrix with device scale factor.

  • WebCoreSupport/AcceleratedCompositingContext.cpp:

(AcceleratedCompositingContext::initialize):
(AcceleratedCompositingContext::startedAnimation):
(AcceleratedCompositingContext::applyDeviceScaleFactor):
(AcceleratedCompositingContext::compositeLayersToContext):
(AcceleratedCompositingContext::resizeRootLayer):
(AcceleratedCompositingContext::flushAndRenderLayers):
(AcceleratedCompositingContext::paintContents):
(AcceleratedCompositingContext::deviceScaleFactor):

  • WebCoreSupport/AcceleratedCompositingContext.h:
  • WebView.cpp:

(WebView::repaint):

1:19 PM Changeset in webkit [188536] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Remove unused multisampling check
https://bugs.webkit.org/show_bug.cgi?id=148030

Patch by Alex Christensen <achristensen@webkit.org> on 2015-08-17
Reviewed by Dean Jackson.

No change in behavior.
Extensions3DOpenGLCommon.m_maySupportMultisampling is always true.

  • platform/graphics/Extensions3D.h:
  • platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:

(WebCore::Extensions3DOpenGLCommon::Extensions3DOpenGLCommon):

  • platform/graphics/opengl/Extensions3DOpenGLCommon.h:

(WebCore::Extensions3DOpenGLCommon::isImagination):
(WebCore::Extensions3DOpenGLCommon::vendor):
(WebCore::Extensions3DOpenGLCommon::requiresBuiltInFunctionEmulation):
(WebCore::Extensions3DOpenGLCommon::requiresRestrictedMaximumTextureSize):
(WebCore::Extensions3DOpenGLCommon::maySupportMultisampling): Deleted.

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::validateDepthStencil):

12:52 PM Changeset in webkit [188535] by matthew_hanson@apple.com
  • 3 edits in branches/safari-601.1-branch/Source/WebKit2

Merge r188365. rdar://problem/22254920

12:52 PM Changeset in webkit [188534] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1-branch/Source/WebCore

Merge r188531. rdar://problem/22308554

12:45 PM Changeset in webkit [188533] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Refactor BuildbotQueueView._presentPopoverForPendingCommits to work more generically with
repositories other than "openSource" and "internal".
https://bugs.webkit.org/show_bug.cgi?id=147961

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

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

(BuildbotQueueView.prototype._presentPopoverForPendingCommits): Refactored to work more
generically with repositories other than "openSource" and "internal".

11:56 AM Changeset in webkit [188532] by Yusuke Suzuki
  • 4 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Implement Reflect.get
https://bugs.webkit.org/show_bug.cgi?id=147925

Reviewed by Geoffrey Garen.

This patch implements Reflect.get API.
It can take the receiver object as the third argument.
When the receiver is specified and there's a getter for the given property name,
we call the getter with the receiver as the |this| value.

  • runtime/ReflectObject.cpp:

(JSC::reflectObjectGet):

  • runtime/SparseArrayValueMap.cpp:

(JSC::SparseArrayEntry::get): Deleted.

  • runtime/SparseArrayValueMap.h:
  • tests/stress/reflect-get.js: Added.

(shouldBe):
(shouldThrow):
(.get shouldThrow):
(.get var):
(get var.object.get hello):
(.get shouldBe):
(get var.object.set hello):

11:52 AM Changeset in webkit [188531] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r188486): Crash in SubresourceLoader::didReceiveResponse() when TemporaryChange goes out of scope
https://bugs.webkit.org/show_bug.cgi?id=148082

Reviewed by Alexey Proskuryakov.

Covered by existing tests run under ASan or Guard Malloc.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didReceiveResponse): Ensure that callingDidReceiveResponse is destroyed while the
SubresourceLoader is still alive by declaring it after protect.

11:32 AM Changeset in webkit [188530] by Simon Fraser
  • 18 edits
    4 adds in trunk

will-change should sometimes trigger compositing
https://bugs.webkit.org/show_bug.cgi?id=148072

Reviewed by Tim Horton.
Source/JavaScriptCore:

Include will-change as a reason for compositing.

  • inspector/protocol/LayerTree.json:

Source/WebCore:

Implement the compositing side-effects of will-change, if any of the
following properties are specified:

opacity
filter (as -webkit-filter)
backdrop-filter (as -webkit-backdrop-filter)
transform (on transformable elements only)

Tests: compositing/layer-creation/will-change-change.html

compositing/layer-creation/will-change-layer-creation.html

  • inspector/InspectorLayerTreeAgent.cpp:

(WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer): Tell the inspector
about will-change.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::adjustStyleDifference): Need to trigger a recomposite if
will-change includes a compositing trigger property. This gets called before and
after setting the style, so this checks both states.
(WebCore::RenderElement::shouldWillChangeCreateStackingContext):

  • rendering/RenderElement.h:

(WebCore::RenderElement::willChangeCreatesStackingContext): Helper function that
RenderInline uses to determine if it needs to create a RenderLayer, since RenderInline
doesn't get automatic layer RenderLayers as a side effect of having non-auto z-index
in the style.

  • rendering/RenderInline.h: Need to trigger a RenderLayer if will-change includes

a property that applies to inlines.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingLayer): Call requiresCompositingForWillChange().
(WebCore::RenderLayerCompositor::requiresOwnBackingStore): Call requiresCompositingForWillChange().
(WebCore::RenderLayerCompositor::reasonsForCompositing): Include requiresCompositingForWillChange().
(WebCore::RenderLayerCompositor::requiresCompositingForWillChange): If will-change contains a
property that would trigger compositing on this element, return true.

  • rendering/RenderLayerCompositor.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresLayout): Set ContextSensitivePropertyWillChange in
changedContextSensitiveProperties if will-change changes.

  • rendering/style/RenderStyle.h: Rename for clarity.
  • rendering/style/RenderStyleConstants.h: Add ContextSensitivePropertyWillChange.
  • rendering/style/WillChangeData.cpp:

(WebCore::propertyCreatesStackingContext): Subset of properties that create stacking
context on any element.
(WebCore::propertyCreatesStackingContextOnBoxesOnly): Additional properties that
create stacking context on boxes.
(WebCore::propertyTriggersCompositing): Properties that trigger compositing on
any element.
(WebCore::propertyTriggersCompositingOnBoxesOnly): Additional properties that
trigger compositing on boxes.
(WebCore::WillChangeData::addFeature): As features are added, manage a set of
flags to know if they trigger stacking context or compositing, on inlines and boxes.
(WebCore::WillChangeData::createsStackingContext): Deleted.

  • rendering/style/WillChangeData.h:

(WebCore::WillChangeData::canCreateStackingContext):
(WebCore::WillChangeData::canCreateStackingContextOnInline):
(WebCore::WillChangeData::canTriggerCompositing):
(WebCore::WillChangeData::canTriggerCompositingOnInline):

Source/WebInspectorUI:

Have the web inspector show a correct compositing reason for will-change.
This could be improved to indicate which specific value in will-change triggered
the compositing.

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

(WebInspector.LayerTreeDetailsSidebarPanel.prototype._populateListOfCompositingReasons):
(WebInspector.LayerTreeDetailsSidebarPanel):

LayoutTests:

  • compositing/layer-creation/will-change-change-expected.txt: Added.
  • compositing/layer-creation/will-change-change.html: Added.
  • compositing/layer-creation/will-change-layer-creation-expected.txt: Added.
  • compositing/layer-creation/will-change-layer-creation.html: Added.
11:28 AM Changeset in webkit [188529] by Yusuke Suzuki
  • 4 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Implement Reflect.getOwnPropertyDescriptor
https://bugs.webkit.org/show_bug.cgi?id=147929

Reviewed by Geoffrey Garen.

Implement Reflect.getOwnPropertyDescriptor.
The difference from the Object.getOwnPropertyDescriptor is
Reflect.getOwnPropertyDescriptor does not perform ToObject onto
the first argument. If the first argument is not an Object, it
immediately raises the TypeError.

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorGetOwnPropertyDescriptor):

  • runtime/ObjectConstructor.h:
  • runtime/ReflectObject.cpp:

(JSC::reflectObjectGetOwnPropertyDescriptor):

  • tests/stress/reflect-get-own-property.js: Added.

(shouldBe):
(shouldThrow):

11:18 AM Changeset in webkit [188528] by ap@apple.com
  • 2 edits in trunk/Tools

build.webkit.org/dashboard shows yellow when crash-only queues have too many failures
https://bugs.webkit.org/show_bug.cgi?id=148081

Reviewed by Tim Horton.

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

(BuildbotTesterQueueView.prototype.update.appendBuilderQueueStatus):

11:12 AM Changeset in webkit [188527] by timothy_horton@apple.com
  • 6 edits
    2 adds in trunk

Holes for find matches that span multiple lines are completely wrong
https://bugs.webkit.org/show_bug.cgi?id=148065
<rdar://problem/5305002>

Reviewed by Simon Fraser.

Test: fast/text/mark-matches-broken-line-rendering.html

Two big problems with find holes:

  • RenderedDocumentMarker only has one rect, but a marker can be painted by multiple text runs, each with their own rendered rect
  • paintTextMatchMarker does std::max((unsigned)a, (unsigned)0), which is obviously an overflow problem/not going to work if a is negative

The combination of these issues causes the holes for find matches to be
very broken: text that isn't part of the match is highlighted, and some
text that is part of the match isn't highlighted.

To fix, make RenderedDocumentMarker support multiple rects, and use signed
math (like paintDocumentMarker already did) when computing positions in paintTextMatchMarker.

  • dom/DocumentMarkerController.cpp:

(WebCore::DocumentMarkerController::addTextMatchMarker):
(WebCore::DocumentMarkerController::renderedRectsForMarkers):

  • dom/RenderedDocumentMarker.h:

(WebCore::RenderedDocumentMarker::RenderedDocumentMarker):
(WebCore::RenderedDocumentMarker::isRendered):
(WebCore::RenderedDocumentMarker::contains):
(WebCore::RenderedDocumentMarker::addRenderedRect):
(WebCore::RenderedDocumentMarker::renderedRects):
(WebCore::RenderedDocumentMarker::invalidate):
(WebCore::RenderedDocumentMarker::setRenderedRect): Deleted.
(WebCore::RenderedDocumentMarker::renderedRect): Deleted.
(WebCore::RenderedDocumentMarker::invalidMarkerRect): Deleted.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paintDocumentMarker):
(WebCore::InlineTextBox::paintTextMatchMarker):
(WebCore::InlineTextBox::computeRectForReplacementMarker):

  • rendering/svg/SVGInlineFlowBox.cpp:

(WebCore::SVGInlineFlowBox::computeTextMatchMarkerRectForRenderer):

  • fast/text/mark-matches-broken-line-rendering-expected.html: Added.
  • fast/text/mark-matches-broken-line-rendering.html: Added.

Add a test that ensures that we correctly mark test matches that cross
line breaks.

10:50 AM Changeset in webkit [188526] by timothy_horton@apple.com
  • 12 edits in trunk/Source

Adopt shrink-wrapping for TextIndicators on Mac
https://bugs.webkit.org/show_bug.cgi?id=148064

Reviewed by Beth Dakin.

Instead of indicating the bounding rect when there are multiple text rects,
use shrink-wrapping for TextIndicatorWindow (on Mac), like we do on iOS.

  • bindings/objc/DOM.mm:

(-[DOMNode getPreviewSnapshotImage:andRects:]):
Make getPreviewSnapshotImage use the same options that iOS WebKit2 uses.
This fixes a regression from r188420 where iOS WebKit1 TextIndicators lost
all of the relevant (previously hardcoded inside TextIndicator) options.

  • page/TextIndicator.cpp:

(WebCore::TextIndicator::createWithRange):
(WebCore::TextIndicator::createWithSelectionInFrame):
(WebCore::initializeIndicator):
Don't keep indicatesCurrentSelection in TextIndicatorData. Instead,
just pass it through to initializeIndicator. Add a flag which stops us
from zeroing out the margin if indicatesCurrentSelection is true.
Move default margins into TextIndicator so they can be applied to the stored rects
just like on iOS, instead of trying to apply them later like we used to on Mac.

  • page/TextIndicator.h:

(WebCore::TextIndicator::indicatesCurrentSelection): Deleted.

  • page/mac/TextIndicatorWindow.h:
  • page/mac/TextIndicatorWindow.mm:

(-[WebTextIndicatorView initWithFrame:textIndicator:margin:offset:]):
(WebCore::TextIndicatorWindow::setTextIndicator):
(outsetIndicatorRectIncludingShadow): Deleted.
(textIndicatorsForTextRectsOverlap): Deleted.
Make use of pathsWithShrinkWrappedRects for TextIndicatorWindow, instead
of just smushing all intersecting rects together. Use the computed path
for the shadows and to mask the yellow highlight and snapshot layer.

  • platform/graphics/PathUtilities.cpp:

(WebCore::PathUtilities::pathsWithShrinkWrappedRects):
(WebCore::PathUtilities::pathWithShrinkWrappedRects):

  • platform/graphics/PathUtilities.h:

Make it possible to retrieve each non-intersecting path individually, instead
of just a single giant Path, so that TextIndicatorWindow can make separate
layers for each one (so they can bounce separately).

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<TextIndicatorData>::encode): Deleted.
(IPC::ArgumentCoder<TextIndicatorData>::decode): Deleted.

  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::updateFindIndicator):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPositionInformation):
Use the new option, TextIndicatorOptionIncludeMarginIfRangeMatchesSelection,
for iOS and FindController, because we can keep the margins in these cases
because we don't have to animate to/from the blue highlight.

10:41 AM Changeset in webkit [188525] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit/win

[Win] Cleanups to PluginView::handleMouseEvent().
https://bugs.webkit.org/show_bug.cgi?id=148024

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-08-17
Reviewed by Alex Christensen.

  1. Replace the raw values identifying specific mouse buttons with WebCore::MouseButton enum values.
  2. Reindent if and switch statements.
  • Plugins/PluginViewWin.cpp:

(WebCore::PluginView::handleMouseEvent):

10:15 AM Changeset in webkit [188524] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Remove some includes from Node.cpp
https://bugs.webkit.org/show_bug.cgi?id=148000

Reviewed by Anders Carlsson.

No need for these includes.

  • dom/Node.cpp:
9:46 AM Changeset in webkit [188523] by Chris Dumez
  • 5 edits
    2 adds in trunk

Accessing HTMLCollection.length is slow
https://bugs.webkit.org/show_bug.cgi?id=148039

Reviewed by Ryosuke Niwa.

Source/WebCore:

Accessing was HTMLCollection.length is slow, much slower than accessing
NodeList.length. The reason is that HTMLCollection's bindings code is
slightly different. In particular, HTMLCollection's GetOwnPropertySlot()
has an extra check to see if the PropertyName is available on the
prototype before doing:

  1. Check static properties (getStaticValueSlotEntryWithoutCaching())
  2. Indexed getter
  3. Named getter
  4. Check own properties (getStaticValueSlot())

This means that everytime the JavaScript was accessing HTMLCollection.length
or HTMLCollection[index], we would check if length / index was present on the
prototype before calling HTMLCollection::length() / HTMLCollection::item(i).
The prototype check is fairly expensive and was making traversing an
HTMLCollection much slower than traversing a NodeList.

In this patch, I refactored GetOwnPropertySlot() to do:

  1. Indexed getter
  2. Check static properties
  3. Prototype check
  4. Named getter
  5. Check own properties

This way, the prototype check is no longer slowing down HTMLCollection
traversal. What matters is that we do the prototype check *before* calling
the named getter as we don't want named properties to mask properties on
the prototype.

Note that this patch takes the minimal approach to get the performance win
while limiting the risk of breakage. Indeed, the current behavior still
does not match the WebIDL specification, which seems to indicate the order
should be:

  1. Indexed getter
  2. Check static / own properties
  3. Prototype check
  4. Named getter

Once we match the specification, I believe we will be able to drop the
JSC::HasImpureGetOwnPropertySlot flag on HTMLCollection, which currently
makes HTMLCollection.length not cacheable. Right now, I believe we still
need this flag because named properties can still mask own properties.

Performance:
/Bindings/childNodes-traversal: 5597.54 +/- 0.7% -> 5572.10 +/- 0.4%
/Bindings/children-traversal: 3852.61 +/- 0.3% -> 4731.03 +/- 0.3% (~23% better)

Test: fast/dom/htmlcollection-getownproperty.html

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateGetOwnPropertySlotBody):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::getOwnPropertySlot):

LayoutTests:

  • fast/dom/htmlcollection-getownproperty-expected.txt: Added.
  • fast/dom/htmlcollection-getownproperty.html: Added.

Add new layout test covering the expected behavior of HTMLCollection's
GetOwnProperty?. A few checks are still failing as we don't entirely
match the specification yet.

  • fast/dom/wrapper-classes-expected.txt:

Rebaseline test as a few more checks are now passing.

8:36 AM Changeset in webkit [188522] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebCore

Fix possible EGL and GLX makeCurrent problem of GLPlatformContext and GLPlatformSurface
https://bugs.webkit.org/show_bug.cgi?id=147695

Patch by Jinyoung Hur <hur.ims@navercorp.com> on 2015-08-17
Reviewed by Gyuyoung Kim.

GLPLatformContext::makeCurrent is implemented to do no-op when it thinks, comparing with a static
variable declared in GLPlatformContext.cpp, there is no changes. This can lead to not-working
makeCurrent when other part of codes, e.g., Cairo-gl, change EGL or GLX current context by calling
something like eglMakeCurrent. So modify GLPLatformContext::makeCurrent to use the return value of
eglGetCurrentContext or glXGetCurrentContext as a comparing target rather than a static variable.
In addition, GLPlatformSurface::isCurrentDrawable is also modified to use eglGetCurrentSurface or
glXGetCurrentDrawable rather than a static variable.

There are no tests because already existing GL tests will verify this change.

  • platform/graphics/opengl/GLPlatformContext.cpp:

(WebCore::GLPlatformContext::makeCurrent):
(WebCore::GLPlatformContext::releaseCurrent):
(WebCore::GLCurrentContextWrapper::GLCurrentContextWrapper): Deleted.
(WebCore::GLPlatformContext::~GLPlatformContext): Deleted.
(WebCore::GLPlatformContext::isCurrentContext): Deleted.
(WebCore::GLPlatformContext::getCurrent): Deleted.

  • platform/graphics/opengl/GLPlatformContext.h:
  • platform/graphics/opengl/GLPlatformSurface.cpp:

(WebCore::GLPlatformSurface::~GLPlatformSurface): Deleted.
(WebCore::GLPlatformSurface::isCurrentDrawable): Deleted.
(WebCore::GLPlatformSurface::onMakeCurrent): Deleted.
(WebCore::GLPlatformSurface::destroy): Deleted.

  • platform/graphics/opengl/GLPlatformSurface.h:
  • platform/graphics/surfaces/egl/EGLSurface.cpp:

(WebCore::EGLTransportSurface::isCurrentDrawable):
(WebCore::EGLOffScreenSurface::isCurrentDrawable):

  • platform/graphics/surfaces/egl/EGLSurface.h:
  • platform/graphics/surfaces/glx/GLXSurface.cpp:

(WebCore::GLXTransportSurface::isCurrentContext):
(WebCore::GLXOffScreenSurface::isCurrentContext):

  • platform/graphics/surfaces/glx/GLXSurface.h:

Aug 16, 2015:

5:52 PM Changeset in webkit [188521] by timothy_horton@apple.com
  • 7 edits
    1 add in trunk/Source/WebKit2

Refactor ViewGestureController swipe snapshot removal to be more platform-independent
https://bugs.webkit.org/show_bug.cgi?id=148062

Reviewed by Dan Bernstein.

  • Platform/Logging.h:

Add a ViewGestures logging channel.

  • UIProcess/ViewGestureController.cpp: Added.

(viewGestureControllersForAllPages):
(WebKit::ViewGestureController::ViewGestureController):
(WebKit::ViewGestureController::~ViewGestureController):
(WebKit::ViewGestureController::gestureControllerForPage):
(WebKit::ViewGestureController::didFirstVisuallyNonEmptyLayoutForMainFrame):
(WebKit::ViewGestureController::didRepaintAfterNavigation):
(WebKit::ViewGestureController::didHitRenderTreeSizeThreshold):
(WebKit::ViewGestureController::didRestoreScrollPosition):
(WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
(WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
(WebKit::ViewGestureController::checkForActiveLoads):
(WebKit::ViewGestureController::SnapshotRemovalTracker::eventsDescription):
(WebKit::ViewGestureController::SnapshotRemovalTracker::SnapshotRemovalTracker):
(WebKit::ViewGestureController::SnapshotRemovalTracker::log):
(WebKit::ViewGestureController::SnapshotRemovalTracker::start):
(WebKit::ViewGestureController::SnapshotRemovalTracker::reset):
(WebKit::ViewGestureController::SnapshotRemovalTracker::eventOccurred):
(WebKit::ViewGestureController::SnapshotRemovalTracker::cancelOutstandingEvent):
(WebKit::ViewGestureController::SnapshotRemovalTracker::fireRemovalCallbackIfPossible):
(WebKit::ViewGestureController::SnapshotRemovalTracker::fireRemovalCallbackImmediately):
(WebKit::ViewGestureController::SnapshotRemovalTracker::watchdogTimerFired):
(WebKit::ViewGestureController::SnapshotRemovalTracker::startWatchdog):
Build a platform-independent SnapshotRemovalTracker, which keeps track of
various events that we wait for before removing the snapshot. This
is constructed from the union of ViewGestureController{IOS, Mac}'s snapshot
removal code, and each platform ViewGestureController can specify which
events to wait for (because this currently differs slightly).

Add logging to SnapshotRemovalTracker to make debugging snapshot removal
issues much easier.

  • UIProcess/mac/ViewGestureController.h:

(WebKit::ViewGestureController::backgroundColorForCurrentSnapshot):
(WebKit::ViewGestureController::didFinishLoadForMainFrame):
(WebKit::ViewGestureController::didFailLoadForMainFrame):

  • UIProcess/ios/ViewGestureControllerIOS.mm:

(WebKit::ViewGestureController::platformTeardown):
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::endSwipeGesture):
(WebKit::ViewGestureController::setRenderTreeSize):
(WebKit::ViewGestureController::willCommitPostSwipeTransitionLayerTree):
(WebKit::ViewGestureController::removeSwipeSnapshot):
(viewGestureControllersForAllPages): Deleted.
(WebKit::ViewGestureController::ViewGestureController): Deleted.
(WebKit::ViewGestureController::~ViewGestureController): Deleted.
(WebKit::ViewGestureController::didRestoreScrollPosition): Deleted.
(WebKit::ViewGestureController::mainFrameLoadDidReachTerminalState): Deleted.
(WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame): Deleted.
(WebKit::ViewGestureController::activeLoadMonitoringTimerFired): Deleted.
(WebKit::ViewGestureController::swipeSnapshotWatchdogTimerFired): Deleted.
(WebKit::ViewGestureController::removeSwipeSnapshotIfReady): Deleted.

  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::platformTeardown):
(WebKit::ViewGestureController::endSwipeGesture):
(WebKit::ViewGestureController::forceRepaintIfNeeded):
(WebKit::ViewGestureController::removeSwipeSnapshot):
(WebKit::ViewGestureController::ViewGestureController): Deleted.
(WebKit::ViewGestureController::~ViewGestureController): Deleted.
(WebKit::ViewGestureController::beginSwipeGesture): Deleted.
(WebKit::ViewGestureController::didHitRenderTreeSizeThreshold): Deleted.
(WebKit::ViewGestureController::didFirstVisuallyNonEmptyLayoutForMainFrame): Deleted.
(WebKit::ViewGestureController::mainFrameLoadDidReachTerminalState): Deleted.
(WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame): Deleted.
(WebKit::ViewGestureController::activeLoadMonitoringTimerFired): Deleted.
(WebKit::ViewGestureController::swipeSnapshotWatchdogTimerFired): Deleted.
(WebKit::ViewGestureController::removeSwipeSnapshotAfterRepaint): Deleted.
Move shareable snapshot removal code to a new platform-independent ViewGestureController file.
Move the ViewGestureController constructor/destructor to the platform-independent file.

  • UIProcess/mac/ViewGestureController.messages.in:
  • WebKit2.xcodeproj/project.pbxproj:
11:58 AM Changeset in webkit [188520] by Chris Dumez
  • 34 edits
    4 adds in trunk/Source/WebCore

Refactor HTMLCollection to be as fast as CachedLiveNodeList
https://bugs.webkit.org/show_bug.cgi?id=147979

Reviewed by Ryosuke Niwa and Antti Koivisto.

Refactor HTMLCollection to be as fast as CachedLiveNodeList. This is in
preparation of having getElementsByTagName*() / getElementsByClassName()
return an HTMLCollection instead of a NodeList, as per the
specification. Chrome and Firefox already match the specification in
this case.

Traversing an HTMLCollection was slow because of all the extra
branching it had compared to CachedLiveNodeList. To address the issue,
this patch introduces a new templated CachedHTMLCollection subclass,
which behaves in a similar way as CachedLiveNodeList. The 2 template
parameters are:

  1. The type of the subclass of CachedHTMLCollection, so we can call elementMatches() directly on the subclass, without needed any virtual function call or switch statement. This is the same approach as in CachedLiveNodeList.
  2. The type of tree traversal used (Descendants, ChildrenOnly, CustomForwardOnly). Unlike LiveNodeList, HTMLCollection needs to support these 3 types of tree traversal. These were causing extra branching for every item() call. We are now able to choose the right type of traversal for the CachedHTMLCollection at compile time.
  • WebCore.xcodeproj/project.pbxproj:

Add new files to the Project.

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::children):
(WebCore::ContainerNode::cachedHTMLCollection): Deleted.

  • dom/ContainerNode.h:

Drop ContainerNode::ensureCachedHTMLCollection() and use
NodeListsNodeData::addCachedCollection() directly at call sites
instead. We need access to the CollectionType at build-time so
we can resolve the CollectionTraversalType parameter for the
GenericCachedHTMLCollection using CollectionTypeTraits.

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

Update ensureCachedCollection() so the CollectionType is now a template
parameter instead of a method argument. We need to know the
CollectionType at build time to construct the GenericCachedHTMLCollection.

  • dom/ElementChildIterator.h:

(WebCore::ElementChildIterator<ElementType>::operator):
(WebCore::ElementChildConstIterator<ElementType>::operator):
Add support for decrementing an ElementChildIterator, for consistency
with ElementDescendantIterator. We need this to support backward
traversal in CachedHTMLCollections that use the 'ChildrenOnly' type
of traversal.

  • dom/LiveNodeList.h:

(WebCore::CachedLiveNodeList<NodeListType>::collectionBegin):
(WebCore::CachedLiveNodeList<NodeListType>::collectionLast):
(WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseForward):
(WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseBackward):
Move traversal implementation to CollectionTraversal.h, so it can be
shared with achedHTMLCollection.h.

  • html/CachedHTMLCollection.h: Added.

(WebCore::traversalType>::CachedHTMLCollection):
(WebCore::traversalType>::~CachedHTMLCollection):
(WebCore::traversalType>::CachedHTMLCollection::memoryCost):
(WebCore::traversalType>::collectionCanTraverseBackward):
(WebCore::traversalType>::collectionTraverseForward):
(WebCore::traversalType>::collectionTraverseBackward):
(WebCore::traversalType>::willValidateIndexCache):
(WebCore::traversalType>::length):
(WebCore::traversalType>::item):
(WebCore::traversalType>::invalidateCache):
(WebCore::traversalType>::elementMatches):
(WebCore::nameShouldBeVisibleInDocumentAll):
(WebCore::traversalType>::namedItem):

  • html/CollectionTraversal.h: Added.

Add new template class that provide the collection traversal code
needed by CollectionIndexCache. It has template specializations for
all 3 types of traversal: Descendants, ChildrenOnly, and
CustomForwardOnly.

  • html/CollectionType.h:

Add CollectionTypeTraits traits so we can resolve the
CollectionTraversalType used by a specific CollectionType at
compile-time. This is needed for the second template parameter of
CachedHTMLCollection.

  • html/GenericCachedHTMLCollection.cpp: Added.

(WebCore::GenericCachedHTMLCollection<traversalType>::elementMatches):

  • html/GenericCachedHTMLCollection.h: Added.

Add CachedHTMLCollection subclass is the generic one used for all
CollectionTypes that do not have their own subclass (e.g. NodeChildren).
This has an elementMatches() method with a switch() statement handling
all these CollectionTypes. Those are not normally not performance
sensitive.

  • html/HTMLAllCollection.cpp:

(WebCore::HTMLAllCollection::HTMLAllCollection):

  • html/HTMLAllCollection.h:

Subclass CachedHTMLCollection instead of HTMLCollection. Also provide
an elementMatches() method that simply returns true as we want to
match all elements.

  • html/HTMLCollection.cpp:

(WebCore::HTMLCollection::HTMLCollection):
Move CollectionIndexCache member to the subclass and drop the 2 other
members as they are replaced with the CollectionTraversalType template
parameter of CachedHTMLCollection.

(WebCore::HTMLCollection::~HTMLCollection):
Move Document::unregisterCollection() call to ~CachedHTMLCollection()
as we needed to check if the CollectionIndexCache was valid first.

(WebCore::HTMLCollection::updateNamedElementCache):
Move part of the implementation to the CachedHTMLCollection subclass
as it needs to know about the type of traversal and it needs to be
able to call elementMatches().

  • html/HTMLCollection.h:

(WebCore::HTMLCollection::rootNode):
Inline for performance reasons and consistency with CachedLiveNodeList.

(WebCore::HTMLCollection::memoryCost):
Make virtual and move part of the implementation to the
CachedHTMLCollection subclass to compute the cost of the
CollectionIndexCache.

(WebCore::HTMLCollection::invalidateCache):
Move part of the implementation to the subclass to invalidate the
CollectionIndexCache.

  • html/HTMLFieldSetElement.cpp:

(WebCore::HTMLFieldSetElement::elements):

  • html/HTMLFormControlsCollection.cpp:
  • html/HTMLFormControlsCollection.h:

Subclass CachedHTMLCollection instead of HTMLCollection.
customElementAfter() no longer needs to be virtual as it
is called directly by CachedHTMLCollection on the subclass.

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::elements):

  • html/HTMLMapElement.cpp:

(WebCore::HTMLMapElement::areas):
Call NodeListsNodeData::addCachedCollection() directly.

  • html/HTMLNameCollection.cpp:
  • html/HTMLNameCollection.h:

Subclass CachedHTMLCollection instead of HTMLCollection.

  • html/HTMLOptionsCollection.cpp:
  • html/HTMLOptionsCollection.h:

Subclass CachedHTMLCollection instead of HTMLCollection.

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::selectedOptions):
(WebCore::HTMLSelectElement::options):

  • html/HTMLTableElement.cpp:

(WebCore::HTMLTableElement::rows):
(WebCore::HTMLTableElement::tBodies):

  • html/HTMLTableRowElement.cpp:

(WebCore::HTMLTableRowElement::cells):
Call NodeListsNodeData::addCachedCollection() directly.

  • html/HTMLTableRowsCollection.cpp:
  • html/HTMLTableRowsCollection.h:

Subclass CachedHTMLCollection instead of HTMLCollection.
customElementAfter() no longer needs to be virtual as it
is called directly by CachedHTMLCollection on the subclass.

  • html/HTMLTableSectionElement.cpp:

(WebCore::HTMLTableSectionElement::rows):
Call NodeListsNodeData::addCachedCollection() directly.

1:13 AM Changeset in webkit [188519] by benjamin@webkit.org
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Use (x + x) instead of (x * 2) when possible
https://bugs.webkit.org/show_bug.cgi?id=148051

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-08-16
Reviewed by Michael Saboff.

When multiplying a number by 2, JSC was loading a constant "2"
in register and multiplying it with the first number:

mov $0x4000000000000000, %rcx
movd %rcx, %xmm0
mulsd %xmm0, %xmm1

This is a problem for a few reasons.
1) "movd %rcx, %xmm0" only set half of XMM0. This instruction

has to wait for any preceding instruction on XMM0 to finish
before executing.

2) The load and transform itself is large and unecessary.

To fix that, I added a StrengthReductionPhase to transform
multiplications by 2 into a addition.

Unfortunately, that turned the code into:

movsd %xmm0 %xmm1
mulsd %xmm1 %xmm0

The reason is GenerationInfo::canReuse() was not accounting
for nodes using other nodes multiple times.

After fixing that too, we now have the multiplications by 2
done as:

addsd %xmm0 %xmm0

  • dfg/DFGGenerationInfo.h:

(JSC::DFG::GenerationInfo::useCount):
(JSC::DFG::GenerationInfo::canReuse): Deleted.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::FPRTemporary::FPRTemporary):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::canReuse):
(JSC::DFG::GPRTemporary::GPRTemporary):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

Aug 15, 2015:

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

REGRESSION (r168327): ImageDocuments with margins zoom to the wrong position when clicked
https://bugs.webkit.org/show_bug.cgi?id=148063

Reviewed by Simon Fraser.

No new test because it doesn't seem possible to click on a window.open'd ImageDocument.

  • html/ImageDocument.cpp:

(WebCore::ImageEventListener::handleEvent):
Use <img>-relative coordinates, not document-relative coordinates,
because after r168327, the image can be centered.

8:29 PM Changeset in webkit [188517] by aestes@apple.com
  • 12 edits in trunk

[Cocoa] Add redirect support to CustomProtocolManager
https://bugs.webkit.org/show_bug.cgi?id=147871

Reviewed by Dan Bernstein.
Source/WebKit2:

NSURLProtocols have the ability to generate redirect responses. This change teaches CustomProtocolManager how to handle them.

  • Shared/Network/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm:

(WebKit::CustomProtocolManager::wasRedirectedToRequest): Called -URLProtocol:wasRedirectedToRequest:redirectResponse: on the NSURLProtocolClient.

  • Shared/Network/CustomProtocols/CustomProtocolManager.h:
  • Shared/Network/CustomProtocols/CustomProtocolManager.messages.in: Defined WasRedirectedToRequest.
  • Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:

(WebKit::CustomProtocolManager::wasRedirectedToRequest): Defined empty function.

  • UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:

(-[WKCustomProtocolLoader connection:willSendRequest:redirectResponse:]): If a redirect response is received, send WasRedirectedToRequest and return nil to ignore the redirect.

Tools:

Updated WebKit2CustomProtocolsTest.MainResource to generate a redirect response.

  • TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm:

(TestWebKitAPI::TEST): Unregesitered TestProtocol.

  • TestWebKitAPI/Tests/WebKit2/custom-protocol-sync-xhr.html: Changed scheme to http.
  • TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm:

(-[CustomProtocolsLoadDelegate browsingContextControllerDidStartProvisionalLoad:]): Expected a certain provisional URL.
(-[CustomProtocolsLoadDelegate browsingContextControllerDidReceiveServerRedirectForProvisionalLoad:]): Ditto.
(-[CustomProtocolsLoadDelegate browsingContextControllerDidCommitLoad:]): Expected a certain committed URL.
(-[CustomProtocolsLoadDelegate browsingContextControllerDidFinishLoad:]): Expected isLoading to be false.
(TestWebKitAPI::TEST): Used the new load delegate and unregistered TestProtocol.

  • TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm:

(TestWebKitAPI::TEST): Unregistered TestProtocol.

  • TestWebKitAPI/mac/TestProtocol.mm: Changed scheme to http.

(+[TestProtocol canInitWithRequest:]): Changed to use property syntax.
(-[TestProtocol startLoading]): Taught to handle redirect responses.

1:48 PM Changeset in webkit [188516] by ap@apple.com
  • 2 edits in branches/safari-601.1-branch/LayoutTests

Test result gardening. Removed obsolete expectations.

  • platform/mac/TestExpectations:
1:42 PM Changeset in webkit [188515] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Removed an expectation for http/tests/media/video-buffered-range-contains-currentTime.html,
which no longer times out. This expectation was conflicting with a correct one.

  • platform/mac/TestExpectations:
1:13 PM Changeset in webkit [188514] by Simon Fraser
  • 8 edits
    5 adds in trunk

Have will-change create stacking context when necessary
https://bugs.webkit.org/show_bug.cgi?id=148060

Reviewed by Zalan Bujtas.

Source/WebCore:

If will-change includes a property whose non-initial value can create
stacking context, create stacking context for that element.

Test: fast/css/will-change/will-change-creates-stacking-context.html

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyle):

  • rendering/style/RenderStyle.h: Add willChangeCreatesStackingContext(),

which on most cases is a fast, inlined 'return false'. Otherwise ask
the WillChangeData.

  • rendering/style/WillChangeData.cpp:

(WebCore::propertyCreatesStackingContext):
(WebCore::WillChangeData::createsStackingContext):

  • rendering/style/WillChangeData.h:

LayoutTests:

Ref test for will-change creating stacking context.

  • fast/css/will-change/resources/will-change-stacking-helper.js: Added.

(makeStackingBlock):

  • fast/css/will-change/will-change-creates-stacking-context-expected.html: Added.
  • fast/css/will-change/will-change-creates-stacking-context.html: Added.
  • platform/efl/TestExpectations: Mark image failure on EFL, since some CSS

properties in the test are disabled there.

11:09 AM Changeset in webkit [188513] by commit-queue@webkit.org
  • 31 edits
    4 deletes in trunk/Source/WebCore

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

Caused 10 tests to crash (Requested by smfr on #webkit).

Reverted changeset:

"Refactor HTMLCollection to be as fast as CachedLiveNodeList"
https://bugs.webkit.org/show_bug.cgi?id=147979
http://trac.webkit.org/changeset/188508

10:59 AM Changeset in webkit [188512] by Simon Fraser
  • 18 edits
    4 adds in trunk

Implement parsing for CSS will-change
https://bugs.webkit.org/show_bug.cgi?id=148052

Reviewed by Dean Jackson.

Source/WebCore:

Syntax is

will-change: auto | <animateable-feature>#

where

<animateable-feature> = scroll-position | contents | <custom-ident>

To support this, add WillChangeData which stores a vector of "feature"
and CSS property squished into 16 bits. This is stored in rareNonInheritedData.
If null or an empty list, the property value is 'auto'. The list preserves
unknown properties.

Test: fast/css/will-change-parsing.html

  • CMakeLists.txt:
  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.vcxproj/WebCore.vcxproj.filters:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::getWillChangePropertyValue):
(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseValue):
(WebCore::isValidGridPositionCustomIdent): Renamed from isValidCustomIdent(),
since it's grid-specific.
(WebCore::CSSParser::parseIntegerOrCustomIdentFromGridPosition):
(WebCore::valueIsCSSKeyword): Returns true for the "CSS-wide" keywords like
"initial", "inherit" and "default".
(WebCore::CSSParser::parseFontFamily):
(WebCore::isValidWillChangeAnimatableFeature):
(WebCore::CSSParser::parseWillChange):
(WebCore::isValidCustomIdent): Deleted.

  • css/CSSParser.h:
  • css/CSSPrimitiveValue.h:

(WebCore::CSSPrimitiveValue::isPropertyID): New utility function.

  • css/CSSPropertyNames.in:
  • css/CSSValueKeywords.in:
  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderCustom::applyValueWillChange):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setWillChange):

  • rendering/style/RenderStyle.h:
  • rendering/style/StyleAllInOne.cpp:
  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
(WebCore::StyleRareNonInheritedData::willChangeDataEquivalent):

  • rendering/style/StyleRareNonInheritedData.h:
  • rendering/style/WillChangeData.cpp: Added.

(WebCore::WillChangeData::operator==):
(WebCore::WillChangeData::containsScrollPosition):
(WebCore::WillChangeData::containsContents):
(WebCore::WillChangeData::containsProperty):
(WebCore::WillChangeData::addFeature):
(WebCore::WillChangeData::featureAt):

  • rendering/style/WillChangeData.h: Added.

(WebCore::WillChangeData::create):
(WebCore::WillChangeData::operator!=):
(WebCore::WillChangeData::isAuto):
(WebCore::WillChangeData::numFeatures):
(WebCore::WillChangeData::WillChangeData):
(WebCore::WillChangeData::AnimatableFeature::feature):
(WebCore::WillChangeData::AnimatableFeature::property):
(WebCore::WillChangeData::AnimatableFeature::featurePropertyPair):
(WebCore::WillChangeData::AnimatableFeature::AnimatableFeature):
(WebCore::WillChangeData::AnimatableFeature::operator==):

LayoutTests:

will-change parsing test.

  • fast/css/will-change-parsing-expected.txt: Added.
  • fast/css/will-change-parsing.html: Added.
10:57 AM Changeset in webkit [188511] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Build fix after r188510

  • platform/mac/ThemeMac.mm:

(WebCore::paintToggleButton): Pass a raw pointer to drawCellOrFocusRingWithViewIntoContext.

10:50 AM Changeset in webkit [188510] by Wenson Hsieh
  • 5 edits in trunk/Source/WebCore

Search fields should scale when rendering while zoomed
https://bugs.webkit.org/show_bug.cgi?id=147867

Reviewed by Daniel Bates.

When rendering zoomed search fields, draw to an image buffer instead of drawing directly into the context. This
allows us to scale the image buffer up before rendering. Also refactors common logic used to draw both selects
(paintMenuList) and search fields into the new private method paintCellAndSetFocusedElementNeedsRepaintIfNecessary.

  • rendering/RenderThemeMac.h: Changed drawCellOrFocusRingWithViewIntoContext to take a raw pointer.
  • rendering/RenderThemeMac.mm:

(WebCore::paintToggleButton): Passes a raw pointer to drawCellOrFocusRingWithViewIntoContext.
(WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext): Changed to take a raw pointer.

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::paintMenuList): Refactored to use paintCellAndSetFocusedElementNeedsRepaintIfNecessary.
(WebCore::RenderThemeMac::paintCellAndSetFocusedElementNeedsRepaintIfNecessary): Contains logic common to painting

both selects and search fields.

(WebCore::RenderThemeMac::paintSearchField): Use ThemeMac::drawCellOrFocusRingWithViewIntoContext

to render search fields, utilizing an offscreen image buffer only when necessary.

Aug 14, 2015:

10:51 PM Changeset in webkit [188509] by ap@apple.com
  • 23 edits in trunk/LayoutTests

Clean up js-test use in scroll-snap tests
https://bugs.webkit.org/show_bug.cgi?id=148046

Reviewed by Brent Fulgham.

  • tiled-drawing/scrolling/scroll-snap/scroll-snap-iframe-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-iframe.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-2d-overflow-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-2d-overflow.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-horizontal-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-horizontal.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-vertical-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-vertical.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow-stateless-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow-stateless.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-padding-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-padding.html:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-rotated-expected.txt:
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-rotated.html:
10:44 PM Changeset in webkit [188508] by Chris Dumez
  • 31 edits
    4 adds in trunk/Source/WebCore

Refactor HTMLCollection to be as fast as CachedLiveNodeList
https://bugs.webkit.org/show_bug.cgi?id=147979

Reviewed by Ryosuke Niwa.

Refactor HTMLCollection to be as fast as CachedLiveNodeList. This is in
preparation of having getElementsByTagName*() / getElementsByClassName()
return an HTMLCollection instead of a NodeList, as per the
specification. Chrome and Firefox already match the specification in
this case.

Traversing an HTMLCollection was slow because of all the extra
branching it had compared to CachedLiveNodeList. To address the issue,
this patch introduces a new templated CachedHTMLCollection subclass,
which behaves in a similar way as CachedLiveNodeList. The 2 template
parameters are:

  1. The type of the subclass of CachedHTMLCollection, so we can call elementMatches() directly on the subclass, without needed any virtual function call or switch statement. This is the same approach as in CachedLiveNodeList.
  2. The type of tree traversal used (Descendants, ChildrenOnly, CustomForwardOnly). Unlike LiveNodeList, HTMLCollection needs to support these 3 types of tree traversal. These were causing extra branching for every item() call. We are now able to choose the right type of traversal for the CachedHTMLCollection at compile time.
  • WebCore.xcodeproj/project.pbxproj:

Add new files to the Project.

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::children):
(WebCore::ContainerNode::cachedHTMLCollection): Deleted.

  • dom/ContainerNode.h:

Drop ContainerNode::ensureCachedHTMLCollection() and use
NodeListsNodeData::addCachedCollection() directly at call sites
instead. We need access to the CollectionType at build-time so
we can resolve the CollectionTraversalType parameter for the
GenericCachedHTMLCollection using CollectionTypeTraits.

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

Update ensureCachedCollection() so the CollectionType is now a template
parameter instead of a method argument. We need to know the
CollectionType at build time to construct the GenericCachedHTMLCollection.

  • dom/ElementChildIterator.h:

(WebCore::ElementChildIterator<ElementType>::operator):
(WebCore::ElementChildConstIterator<ElementType>::operator):
Add support for decrementing an ElementChildIterator, for consistency
with ElementDescendantIterator. We need this to support backward
traversal in CachedHTMLCollections that use the 'ChildrenOnly' type
of traversal.

  • dom/LiveNodeList.h:

(WebCore::CachedLiveNodeList<NodeListType>::collectionBegin):
(WebCore::CachedLiveNodeList<NodeListType>::collectionLast):
(WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseForward):
(WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseBackward):
Move traversal implementation to CollectionTraversal.h, so it can be
shared with achedHTMLCollection.h.

  • html/CachedHTMLCollection.h: Added.

(WebCore::traversalType>::CachedHTMLCollection):
(WebCore::traversalType>::~CachedHTMLCollection):
(WebCore::traversalType>::CachedHTMLCollection::memoryCost):
(WebCore::traversalType>::collectionCanTraverseBackward):
(WebCore::traversalType>::collectionTraverseForward):
(WebCore::traversalType>::collectionTraverseBackward):
(WebCore::traversalType>::willValidateIndexCache):
(WebCore::traversalType>::length):
(WebCore::traversalType>::item):
(WebCore::traversalType>::invalidateCache):
(WebCore::traversalType>::elementMatches):
(WebCore::nameShouldBeVisibleInDocumentAll):
(WebCore::traversalType>::namedItem):

  • html/CollectionTraversal.h: Added.

Add new template class that provide the collection traversal code
needed by CollectionIndexCache. It has template specializations for
all 3 types of traversal: Descendants, ChildrenOnly, and
CustomForwardOnly.

  • html/CollectionType.h:

Add CollectionTypeTraits traits so we can resolve the
CollectionTraversalType used by a specific CollectionType at
compile-time. This is needed for the second template parameter of
CachedHTMLCollection.

  • html/GenericCachedHTMLCollection.cpp: Added.

(WebCore::GenericCachedHTMLCollection<traversalType>::elementMatches):

  • html/GenericCachedHTMLCollection.h: Added.

Add CachedHTMLCollection subclass is the generic one used for all
CollectionTypes that do not have their own subclass (e.g. NodeChildren).
This has an elementMatches() method with a switch() statement handling
all these CollectionTypes. Those are not normally not performance
sensitive.

  • html/HTMLAllCollection.cpp:

(WebCore::HTMLAllCollection::HTMLAllCollection):

  • html/HTMLAllCollection.h:

Subclass CachedHTMLCollection instead of HTMLCollection. Also provide
an elementMatches() method that simply returns true as we want to
match all elements.

  • html/HTMLCollection.cpp:

(WebCore::HTMLCollection::HTMLCollection):
Move CollectionIndexCache member to the subclass and drop the 2 other
members as they are replaced with the CollectionTraversalType template
parameter of CachedHTMLCollection.

(WebCore::HTMLCollection::~HTMLCollection):
Move Document::unregisterCollection() call to ~CachedHTMLCollection()
as we needed to check if the CollectionIndexCache was valid first.

(WebCore::HTMLCollection::updateNamedElementCache):
Move part of the implementation to the CachedHTMLCollection subclass
as it needs to know about the type of traversal and it needs to be
able to call elementMatches().

  • html/HTMLCollection.h:

(WebCore::HTMLCollection::rootNode):
Inline for performance reasons and consistency with CachedLiveNodeList.

(WebCore::HTMLCollection::memoryCost):
Make virtual and move part of the implementation to the
CachedHTMLCollection subclass to compute the cost of the
CollectionIndexCache.

(WebCore::HTMLCollection::invalidateCache):
Move part of the implementation to the subclass to invalidate the
CollectionIndexCache.

  • html/HTMLFieldSetElement.cpp:

(WebCore::HTMLFieldSetElement::elements):

  • html/HTMLFormControlsCollection.cpp:
  • html/HTMLFormControlsCollection.h:

Subclass CachedHTMLCollection instead of HTMLCollection.
customElementAfter() no longer needs to be virtual as it
is called directly by CachedHTMLCollection on the subclass.

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::elements):

  • html/HTMLMapElement.cpp:

(WebCore::HTMLMapElement::areas):
Call NodeListsNodeData::addCachedCollection() directly.

  • html/HTMLNameCollection.cpp:
  • html/HTMLNameCollection.h:

Subclass CachedHTMLCollection instead of HTMLCollection.

  • html/HTMLOptionsCollection.cpp:
  • html/HTMLOptionsCollection.h:

Subclass CachedHTMLCollection instead of HTMLCollection.

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::selectedOptions):
(WebCore::HTMLSelectElement::options):

  • html/HTMLTableElement.cpp:

(WebCore::HTMLTableElement::rows):
(WebCore::HTMLTableElement::tBodies):

  • html/HTMLTableRowElement.cpp:

(WebCore::HTMLTableRowElement::cells):
Call NodeListsNodeData::addCachedCollection() directly.

  • html/HTMLTableRowsCollection.cpp:
  • html/HTMLTableRowsCollection.h:

Subclass CachedHTMLCollection instead of HTMLCollection.
customElementAfter() no longer needs to be virtual as it
is called directly by CachedHTMLCollection on the subclass.

  • html/HTMLTableSectionElement.cpp:

(WebCore::HTMLTableSectionElement::rows):
Call NodeListsNodeData::addCachedCollection() directly.

10:00 PM Changeset in webkit [188507] by basile_clement@apple.com
  • 3 edits
    1 add in trunk/Source/JavaScriptCore

Occasional failure in v8-v6/v8-raytrace.js.ftl-eager
https://bugs.webkit.org/show_bug.cgi?id=147165

Reviewed by Saam Barati.

The object allocation sinking phase was not properly checking that a
MultiGetByOffset was safe to lower before lowering it.
This makes it so that we only lower MultiGetByOffset if it only loads
from direct properties of the object, and considers it as an escape in
any other case (e.g. a load from the prototype).

It also ensure proper conversion of MultiGetByOffset into
CheckStructureImmediate when needed.

  • dfg/DFGObjectAllocationSinkingPhase.cpp:
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::checkStructure):

We were not compiling properly CheckStructure and
CheckStructureImmediate nodes with an empty StructureSet.

  • tests/stress/sink-multigetbyoffset.js: Regression test.
8:47 PM Changeset in webkit [188506] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: NavigationBar.updateLayoutSoon should use requestAnimationFrame
https://bugs.webkit.org/show_bug.cgi?id=148010

Reviewed by Brian Burg.

NavigationBar.updateLayoutSoon now uses requestAnimationFrame instead of setTimeout.

  • UserInterface/Views/NavigationBar.js:

(WebInspector.NavigationBar):
(WebInspector.NavigationBar.prototype.updateLayoutSoon.update):
(WebInspector.NavigationBar.prototype.updateLayoutSoon):
(WebInspector.NavigationBar.prototype.updateLayout):

8:24 PM Changeset in webkit [188505] by jhoneycutt@apple.com
  • 13 edits
    12 moves
    3 adds in trunk/LayoutTests

Rebase some WK2 test results to include the frame scroll pos. Move the
cross-platform test results to the WK1 directory.

  • platform/ios-simulator-wk1/fast/multicol/pagination/BottomToTop-bt-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/BottomToTop-bt-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/pagination/BottomToTop-lr-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/BottomToTop-lr-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/pagination/BottomToTop-rl-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/BottomToTop-rl-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/pagination/BottomToTop-tb-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/BottomToTop-tb-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/pagination/RightToLeft-bt-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/RightToLeft-bt-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/pagination/RightToLeft-lr-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/RightToLeft-lr-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/pagination/RightToLeft-rl-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/RightToLeft-rl-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/pagination/RightToLeft-tb-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/RightToLeft-tb-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/vertical-rl/column-rules-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/vertical-rl/column-rules-expected.txt.
  • platform/ios-simulator-wk1/fast/multicol/vertical-rl/float-paginate-complex-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/vertical-rl/float-paginate-complex-expected.txt.
  • platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-bt-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-lr-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-rl-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-tb-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-bt-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-lr-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-rl-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-tb-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/vertical-rl/column-rules-expected.txt:
  • platform/ios-simulator-wk2/fast/multicol/vertical-rl/float-paginate-complex-expected.txt:
6:35 PM Changeset in webkit [188504] by jhoneycutt@apple.com
  • 3 edits in trunk/LayoutTests

iOS test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-simulator/js/dom/constructor-length-expected.txt:
6:07 PM Changeset in webkit [188503] by Devin Rousso
  • 5 edits
    2 adds in trunk/Source/WebInspectorUI

Web Inspector: Add VisualStyleDetailsPanel
https://bugs.webkit.org/show_bug.cgi?id=147570

Reviewed by Timothy Hatcher.

Added VisualStyleDetailsPanel and inclusions to forthcoming classes
that will be used in this visual sidebar panel.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:

Added files for all new classes used in the VisualStyleDetailsPanel.

  • UserInterface/Views/CSSStyleDetailsSidebarPanel.js:

(WebInspector.CSSStyleDetailsSidebarPanel):

  • UserInterface/Views/DetailsSection.js:

(WebInspector.DetailsSection):
(WebInspector.DetailsSection.prototype.set collapsed):
(WebInspector.DetailsSection.prototype.get expandedByUser):
(WebInspector.DetailsSection.prototype._headerElementClicked):
Track whether or not the expanded state was caused by the user.

  • UserInterface/Views/VisualStyleDetailsPanel.css: Added.

(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > .visual-style-section-clear):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section:not(.modified) > .header > .visual-style-section-clear):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > span):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section.modified > .header > span::after):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row:last-child):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row.visual-style-separated-row):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row > .visual-style-property-container > .visual-style-property-title):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row > .visual-style-property-container:not(.layout-reversed):last-child):
(.sidebar > .panel.details.css-style .visual.disabled > .details-section:not(.visual-style-selector-section)):
(.sidebar > .panel.details.css-style .visual.disabled > .details-section:not(.visual-style-selector-section) input):

  • UserInterface/Views/VisualStyleDetailsPanel.js: Added.

(WebInspector.VisualStyleDetailsPanel):
(WebInspector.VisualStyleDetailsPanel.prototype.refresh):
(WebInspector.VisualStyleDetailsPanel.prototype._generateSection.replaceDashWithCapital):
(WebInspector.VisualStyleDetailsPanel.prototype._generateSection.createOptionsElement):
(WebInspector.VisualStyleDetailsPanel.prototype._generateSection):
(WebInspector.VisualStyleDetailsPanel.prototype._prepareForChange):
(WebInspector.VisualStyleDetailsPanel.prototype._updateSections):
(WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
(WebInspector.VisualStyleDetailsPanel.prototype._updateAutocompleteCompatiblePropertyEditor):
(WebInspector.VisualStyleDetailsPanel.prototype._sectionModified):
(WebInspector.VisualStyleDetailsPanel.prototype._clearModifiedSection):
(WebInspector.VisualStyleDetailsPanel.prototype.get _initialTextList):
(WebInspector.VisualStyleDetailsPanel.prototype._initialPropertyTextModified):
(WebInspector.VisualStyleDetailsPanel.prototype._populateSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateDisplaySection):
(WebInspector.VisualStyleDetailsPanel.prototype._generateMetricSectionRows):
(WebInspector.VisualStyleDetailsPanel.prototype._populatePositionSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateFloatSection):
(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.onEditorMouseover):
(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.onEditorMouseout):
(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners):
(WebInspector.VisualStyleDetailsPanel.prototype._populateDimensionsSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateMarginSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populatePaddingSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateFlexboxSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTextStyleSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateFontSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTextSpacingSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTextShadowSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBackgroundStyleSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBorderSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateOutlineSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.noRemainingTreeItems):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.selectedBoxShadowItemValueChanged):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.boxShadowItemSelected):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.noRemainingTreeItems):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.selectedtransitionItemValueChanged):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.transitionItemSelected):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection):

5:58 PM Changeset in webkit [188502] by jhoneycutt@apple.com
  • 1 edit
    11 deletes in trunk/LayoutTests

iOS test gardening.

  • platform/ios-simulator-wk2/fast/ruby/bopomofo-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/ruby/bopomofo-letter-spacing-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/ruby/bopomofo-rl-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/text/international/plane2-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/text/international/synthesized-italic-vertical-latin-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/writing-mode/japanese-lr-text-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/writing-mode/japanese-rl-text-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/writing-mode/japanese-ruby-horizontal-bt-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/writing-mode/japanese-ruby-vertical-lr-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/writing-mode/japanese-ruby-vertical-rl-expected.txt: Removed.
  • platform/ios-simulator-wk2/fast/writing-mode/vertical-align-table-baseline-expected.txt: Removed.
5:51 PM Changeset in webkit [188501] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1-branch/Source

Versioning.

5:39 PM Changeset in webkit [188500] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.51

New tag.

5:14 PM Changeset in webkit [188499] by fpizlo@apple.com
  • 35 edits in trunk/Source

Use WTF::Lock and WTF::Condition instead of WTF::Mutex, WTF::ThreadCondition, std::mutex, and std::condition_variable
https://bugs.webkit.org/show_bug.cgi?id=147999

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  • API/JSVirtualMachine.mm:

(initWrapperCache):
(+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]):
(+[JSVMWrapperCache wrapperForJSContextGroupRef:]):
(wrapperCacheMutex): Deleted.

  • bytecode/SamplingTool.cpp:

(JSC::SamplingTool::doRun):
(JSC::SamplingTool::notifyOfScope):

  • bytecode/SamplingTool.h:
  • dfg/DFGThreadData.h:
  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::~Worklist):
(JSC::DFG::Worklist::isActiveForVM):
(JSC::DFG::Worklist::enqueue):
(JSC::DFG::Worklist::compilationState):
(JSC::DFG::Worklist::waitUntilAllPlansForVMAreReady):
(JSC::DFG::Worklist::removeAllReadyPlansForVM):
(JSC::DFG::Worklist::completeAllReadyPlansForVM):
(JSC::DFG::Worklist::visitWeakReferences):
(JSC::DFG::Worklist::removeDeadPlans):
(JSC::DFG::Worklist::queueLength):
(JSC::DFG::Worklist::dump):
(JSC::DFG::Worklist::runThread):

  • dfg/DFGWorklist.h:
  • disassembler/Disassembler.cpp:
  • heap/CopiedSpace.cpp:

(JSC::CopiedSpace::doneFillingBlock):
(JSC::CopiedSpace::doneCopying):

  • heap/CopiedSpace.h:
  • heap/CopiedSpaceInlines.h:

(JSC::CopiedSpace::recycleBorrowedBlock):
(JSC::CopiedSpace::allocateBlockForCopyingPhase):

  • heap/GCThread.cpp:

(JSC::GCThread::waitForNextPhase):
(JSC::GCThread::gcThreadMain):

  • heap/GCThreadSharedData.cpp:

(JSC::GCThreadSharedData::GCThreadSharedData):
(JSC::GCThreadSharedData::~GCThreadSharedData):
(JSC::GCThreadSharedData::startNextPhase):
(JSC::GCThreadSharedData::endCurrentPhase):
(JSC::GCThreadSharedData::didStartMarking):
(JSC::GCThreadSharedData::didFinishMarking):

  • heap/GCThreadSharedData.h:
  • heap/HeapTimer.h:
  • heap/MachineStackMarker.cpp:

(JSC::ActiveMachineThreadsManager::Locker::Locker):
(JSC::ActiveMachineThreadsManager::add):
(JSC::ActiveMachineThreadsManager::remove):
(JSC::ActiveMachineThreadsManager::ActiveMachineThreadsManager):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::removeThreadIfFound):
(JSC::MachineThreads::tryCopyOtherThreadStack):
(JSC::MachineThreads::tryCopyOtherThreadStacks):
(JSC::MachineThreads::gatherConservativeRoots):

  • heap/MachineStackMarker.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::donateKnownParallel):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::drainFromShared):
(JSC::SlotVisitor::mergeOpaqueRoots):

  • heap/SlotVisitorInlines.h:

(JSC::SlotVisitor::containsOpaqueRootTriState):

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

(Inspector::RemoteInspectorHandleRunSourceGlobal):
(Inspector::RemoteInspectorQueueTaskOnGlobalQueue):
(Inspector::RemoteInspectorInitializeGlobalQueue):
(Inspector::RemoteInspectorHandleRunSourceWithInfo):
(Inspector::RemoteInspectorDebuggableConnection::setup):
(Inspector::RemoteInspectorDebuggableConnection::closeFromDebuggable):
(Inspector::RemoteInspectorDebuggableConnection::close):
(Inspector::RemoteInspectorDebuggableConnection::sendMessageToBackend):
(Inspector::RemoteInspectorDebuggableConnection::queueTaskOnPrivateRunLoop):

  • interpreter/JSStack.cpp:

(JSC::JSStack::JSStack):
(JSC::JSStack::releaseExcessCapacity):
(JSC::JSStack::addToCommittedByteCount):
(JSC::JSStack::committedByteCount):
(JSC::stackStatisticsMutex): Deleted.
(JSC::JSStack::initializeThreading): Deleted.

  • interpreter/JSStack.h:

(JSC::JSStack::gatherConservativeRoots):
(JSC::JSStack::sanitizeStack):
(JSC::JSStack::size):
(JSC::JSStack::initializeThreading): Deleted.

  • jit/ExecutableAllocator.cpp:

(JSC::DemandExecutableAllocator::DemandExecutableAllocator):
(JSC::DemandExecutableAllocator::~DemandExecutableAllocator):
(JSC::DemandExecutableAllocator::bytesAllocatedByAllAllocators):
(JSC::DemandExecutableAllocator::bytesCommittedByAllocactors):
(JSC::DemandExecutableAllocator::dumpProfileFromAllAllocators):
(JSC::DemandExecutableAllocator::allocators):
(JSC::DemandExecutableAllocator::allocatorsMutex):

  • jit/JITThunks.cpp:

(JSC::JITThunks::ctiStub):

  • jit/JITThunks.h:
  • profiler/ProfilerDatabase.cpp:

(JSC::Profiler::Database::ensureBytecodesFor):
(JSC::Profiler::Database::notifyDestruction):

  • profiler/ProfilerDatabase.h:
  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

  • runtime/JSLock.cpp:

(JSC::GlobalJSLock::GlobalJSLock):
(JSC::GlobalJSLock::~GlobalJSLock):
(JSC::JSLockHolder::JSLockHolder):
(JSC::GlobalJSLock::initialize): Deleted.

  • runtime/JSLock.h:

Source/WTF:

Relanding after fixing a deadlock on Linux.

  • wtf/Condition.h: "using WTF::Condition".
  • wtf/Lock.h:

(WTF::LockBase::lock):
(WTF::LockBase::tryLock): Add tryLock() because it turns out that we use it sometimes.
(WTF::LockBase::try_lock): unique_lock needs this.
(WTF::LockBase::unlock):

  • wtf/ParkingLot.cpp:

(WTF::ParkingLot::parkConditionally): Work around a Linux C++ bug where wait_until with time_point::max() immediately returns and doesn't flash the lock.

4:50 PM Changeset in webkit [188498] by rniwa@webkit.org
  • 26 edits in trunk

ES6 class syntax should allow computed name method
https://bugs.webkit.org/show_bug.cgi?id=142690

Reviewed by Saam Barati.

Source/JavaScriptCore:

Added a new "attributes" attribute to op_put_getter_by_id, op_put_setter_by_id, op_put_getter_setter to specify
the property descriptor options so that we can use use op_put_setter_by_id and op_put_getter_setter to define
getters and setters for classes. Without this, getters and setters could erroneously override methods.

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitDirectPutById):
(JSC::BytecodeGenerator::emitPutGetterById):
(JSC::BytecodeGenerator::emitPutSetterById):
(JSC::BytecodeGenerator::emitPutGetterSetter):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::PropertyListNode::emitBytecode): Always use emitPutGetterSetter to emit getters and setters for classes
as done for object literals.
(JSC::PropertyListNode::emitPutConstantProperty):
(JSC::ClassExprNode::emitBytecode):

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState):

  • jit/JIT.h:
  • jit/JITInlines.h:

(JSC::JIT::callOperation):

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter):
(JSC::JIT::emit_op_del_by_id):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter):
(JSC::JIT::emit_op_del_by_id):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter.asm:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createProperty):
(JSC::ASTBuilder::createPropertyList):

  • parser/NodeConstructors.h:

(JSC::PropertyNode::PropertyNode):

  • parser/Nodes.h:

(JSC::PropertyNode::expressionName):
(JSC::PropertyNode::name):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass): Added the support for computed property name. We don't support computed names
for getters and setters.

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createProperty):

  • runtime/JSObject.cpp:

(JSC::JSObject::allowsAccessFrom):
(JSC::JSObject::putGetter):
(JSC::JSObject::putSetter):

  • runtime/JSObject.h:
  • runtime/PropertyDescriptor.h:

LayoutTests:

Added test cases for computed method names.

  • js/class-syntax-method-names-expected.txt:
  • js/script-tests/class-syntax-method-names.js:
3:24 PM Changeset in webkit [188497] by Yusuke Suzuki
  • 9 edits
    3 adds in trunk/Source/JavaScriptCore

Add InspectorInstrumentation builtin object to instrument the code in JS builtins like Promises
https://bugs.webkit.org/show_bug.cgi?id=147942

Reviewed by Geoffrey Garen.

This patch adds new private global object, @InspectorInstrumentation.
It is intended to be used as the namespace object (like Reflect/Math) for Inspector's
instrumentation system and it is used to instrument the builtin JS code, like Promises.

  • CMakeLists.txt:
  • DerivedSources.make:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/InspectorInstrumentationObject.js: Added.

(debug):
(promiseFulfilled):
(promiseRejected):

  • builtins/Operations.Promise.js:

(rejectPromise):
(fulfillPromise):

  • runtime/CommonIdentifiers.h:
  • runtime/InspectorInstrumentationObject.cpp: Added.

(JSC::InspectorInstrumentationObject::InspectorInstrumentationObject):
(JSC::InspectorInstrumentationObject::finishCreation):
(JSC::InspectorInstrumentationObject::getOwnPropertySlot):
(JSC::InspectorInstrumentationObject::isEnabled):
(JSC::InspectorInstrumentationObject::enable):
(JSC::InspectorInstrumentationObject::disable):
(JSC::inspectorInstrumentationObjectDataLogImpl):

  • runtime/InspectorInstrumentationObject.h: Added.

(JSC::InspectorInstrumentationObject::create):
(JSC::InspectorInstrumentationObject::createStructure):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

3:19 PM Changeset in webkit [188496] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Highlight DOM node attribute changes in parallel, not sequentially
https://bugs.webkit.org/show_bug.cgi?id=148019

Reviewed by Brian Burg.

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement.prototype._markNodeChanged):
(WebInspector.DOMTreeElement.prototype._nodeChangedAnimationEnd):
Now removes the animated element from the updated list once the animation ends.

3:19 PM Changeset in webkit [188495] by ap@apple.com
  • 3 edits in branches/safari-601.1-branch

Test result gardening. Merged r188488, and unmarked canvas tests that no longer fail.

  • platform/mac/TestExpectations:
3:15 PM Changeset in webkit [188494] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Long delay when row selection changes in timeline data grids
https://bugs.webkit.org/show_bug.cgi?id=148005

Reviewed by Brian Burg.

Selecting a tree element in the Timelines sidebar generates multiple
WebInspector.ContentView.SelectionPathComponentsDidChange events, each of which
causes NavigationBar to update its layout (which is extremely expensive).

  • UserInterface/Views/ContentBrowser.js:

(WebInspector.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
Call updateLayoutSoon instead of updateLayout to coalesce layout requests.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView.prototype._recordSelected):
When the selected record changes in the overview graph, make sure the record's tree element
isn't already selected. Reselecting the tree element results in an extra NavigationBar layout.

3:11 PM Changeset in webkit [188493] by mdaiter@apple.com
  • 7 edits in trunk/Source/WebCore

Implementing enumerateDevices
https://bugs.webkit.org/show_bug.cgi?id=146426
<rdar://problem/21599847>

Reviewed by Eric Carlson.

  • CMakeLists.txt:
  • Modules/mediastream/MediaDeviceInfo.idl:
  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::enumerateDevices):

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediastream/MediaDevicesPrivate.cpp:

(WebCore::MediaDevicesPrivate::create):
(WebCore::MediaDevicesPrivate::MediaDevicesPrivate):
(WebCore::MediaDevicesPrivate::didCompleteRequest):
(WebCore::MediaDevicesPrivate::availableMediaDevices):

  • platform/mediastream/MediaDevicesPrivate.h:

(WebCore::MediaDevicesPrivate::~MediaDevicesPrivate):
(WebCore::MediaDevicesPrivate::capturedDevices):

3:11 PM Changeset in webkit [188492] by Chris Dumez
  • 1 edit
    2 adds in trunk/PerformanceTests

Add performance tests for NodeList and HTMLCollection traversal
https://bugs.webkit.org/show_bug.cgi?id=148043

Reviewed by Gavin Barraclough.

Add performance tests for NodeList and HTMLCollection traversal.
Ideally, those 2 tests should be as fast. However, due to inefficiencies
in our HTMLCollection bindings code, the HTMLCollection tests is ~30%
slower. This will be addressed in the near future.

  • Bindings/childNodes-traversal.html: Added.
  • Bindings/children-traversal.html: Added.
3:08 PM Changeset in webkit [188491] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION (r188396): Rendering Frames timeline ruler dividers are off by 1px
https://bugs.webkit.org/show_bug.cgi?id=148040

Reviewed by Brian Burg.

  • UserInterface/Views/TimelineOverview.css:

(.timeline-overview.frames > .timeline-ruler > .markers > .divider):
(.timeline-overview.frames > .timeline-ruler > .header > .divider): Deleted.
All ruler dividers should be translated by the same amount.

3:04 PM Changeset in webkit [188490] by Devin Rousso
  • 9 edits in trunk/Source/WebInspectorUI

Web Inspector: Style changes to Visual sidebar editors
https://bugs.webkit.org/show_bug.cgi?id=148021

Reviewed by Brian Burg.

Various style fixes and feature enhancements in some of the Visual style property editors.

  • UserInterface/Views/VisualStyleColorPicker.css:

(.visual-style-property-container.input-color-picker > .visual-style-property-value-container > .color-swatch):
(.visual-style-property-container.input-color-picker > .visual-style-property-value-container > input):
(.visual-style-property-container.input-color-picker.multiple > .visual-style-property-value-container > .visual-style-multiple-property-placeholder):

  • UserInterface/Views/VisualStyleKeywordCheckbox.css:

(.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input):
(.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input::before):
(.visual-style-property-container.keyword-checkbox > .visual-style-property-value-container > input): Deleted.
(.visual-style-property-container.keyword-checkbox > .visual-style-property-value-container > div): Deleted.
Replaced the SVG image before the checkbox with a :before pseudo-element with content.

  • UserInterface/Views/VisualStyleKeywordCheckbox.js:

(WebInspector.VisualStyleKeywordCheckbox):
Removed the SVG image before the checkbox.

  • UserInterface/Views/VisualStyleKeywordPicker.js:

(WebInspector.VisualStyleKeywordPicker.prototype.get value):
(WebInspector.VisualStyleKeywordPicker.prototype.set value):
(WebInspector.VisualStyleKeywordPicker.prototype.set placeholder):
(WebInspector.VisualStyleKeywordPicker.prototype.get synthesizedValue):
(WebInspector.VisualStyleKeywordPicker.prototype._getValue):
(WebInspector.VisualStyleKeywordPicker.prototype._setValue):
(WebInspector.VisualStyleKeywordPicker.prototype._generateSynthesizedValue):
(WebInspector.VisualStyleKeywordPicker.prototype._handleKeywordChanged):
Due to a current bug (https://webkit.org/b/147064), you cannot extend ES6 getters/setters. In order to work
around this, a member function was added that performs the same action as the getter/setter, but can be extended.

  • UserInterface/Views/VisualStylePropertyEditorLink.css:

(.visual-style-property-editor-link.linked > .visual-style-property-editor-link-border):
(.visual-style-property-editor-link > .visual-style-property-editor-link-icon > .unlinked-icon):

  • UserInterface/Views/VisualStyleRelativeNumberSlider.js:

(WebInspector.VisualStyleRelativeNumberSlider):
(WebInspector.VisualStyleRelativeNumberSlider.prototype._resetSlider):
(WebInspector.VisualStyleRelativeNumberSlider.prototype._sliderChanged):

  • UserInterface/Views/VisualStyleSelectorTreeItem.css:

(.item.visual-style-selector-item > input[type="checkbox"]):
(.item.visual-style-selector-item.selected > input[type="checkbox"]::before):
(.item.visual-style-selector-item.modified > .icon):
(.item.visual-style-selector-item:not(.dom-element-icon).editable > .titles > .title:focus):

  • UserInterface/Views/VisualStyleSelectorTreeItem.js:

(WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent):
(WebInspector.VisualStyleSelectorTreeItem.prototype._handleMainTitleMouseDown):
Added another context menu item to show the source location for the selected rule.

3:01 PM Changeset in webkit [188489] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

cryptographicallyRandomValuesFromOS should use arc4random_buf on Darwin.
https://bugs.webkit.org/show_bug.cgi?id=148038

Patch by Keith Miller <keith_miller@apple.com> on 2015-08-14
Reviewed by Geoffrey Garen.

Currently, we open a file descriptor to /dev/urandom, which can sometimes
fail to open. Using arc4random_buf instead should get around this issue.

  • wtf/OSRandomSource.cpp:

(WTF::cryptographicallyRandomValuesFromOS):

2:55 PM Changeset in webkit [188488] by eric.carlson@apple.com
  • 2 edits in trunk/LayoutTests

[Mac] video-buffered-range-contains-currentTime.html is flakey after r188390
https://bugs.webkit.org/show_bug.cgi?id=148042

  • platform/mac/TestExpectations: Mark the test as flakey.
2:44 PM Changeset in webkit [188487] by bshafiei@apple.com
  • 17 edits in branches/safari-601.1-branch

Merged r188486. rdar://problem/22222453

2:08 PM Changeset in webkit [188486] by aestes@apple.com
  • 17 edits in trunk

[Cocoa] Downloads do not start if policy decision is made asynchronously
https://bugs.webkit.org/show_bug.cgi?id=147985

Reviewed by Brady Eidson.

Source/WebCore:

It's only possible to convert a NSURLConnection to a download while the connection delegate's
-connection:didReceiveResponse: is being called. However, WebKit clients can decide content policy
asynchronously. If a client chooses to download a response asynchronously, we can no longer convert the
connection to a download, so we should start a new download instead.

New API test: _WKDownload.AsynchronousDownloadPolicy

  • dom/Document.cpp: Updated to include SubresourceLoader.h.
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::mainResourceLoader): Updated to return a SubresourceLoader.
(WebCore::DocumentLoader::continueAfterContentPolicy): Cast mainResourceLoader() to a ResourceLoader since
didFail() is private in SubresourceLoader.

  • loader/DocumentLoader.h:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::SubresourceLoader): Initialized m_callingDidReceiveResponse to false.
(WebCore::SubresourceLoader::didReceiveResponse): Used TemporaryChange<> to set m_callingDidReceiveResponse to true.

  • loader/SubresourceLoader.h:
  • loader/appcache/ApplicationCacheHost.cpp: Updated to include SubresourceLoader.h.
  • loader/mac/DocumentLoaderMac.cpp: Ditto.

Source/WebKit/mac:

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::convertMainResourceLoadToDownload): Started a new download if the main resource loader is not calling didReceiveResponse.

Source/WebKit/win:

  • WebCoreSupport/WebFrameLoaderClient.cpp: Updated to include SubresourceLoader.h.

Source/WebKit2:

  • WebProcess/Network/WebResourceLoader.cpp: Updated to include SubresourceLoader.h.
  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::convertMainResourceLoadToDownload): Started a new download if the main resource loader is not calling didReceiveResponse.

Tools:

Added a new API test.

  • TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:

(-[AsynchronousDownloadNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[AsynchronousDownloadDelegate _downloadDidStart:]):
(TEST):

1:27 PM Changeset in webkit [188485] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RenderBlock::simplifiedLayout should pop LayoutStateMaintainer when early returns.
https://bugs.webkit.org/show_bug.cgi?id=148031

Reviewed by Simon Fraser.

LayoutStateMaintainer push/pop calls need to be balanced to ensure layout consistency.

Unable to make a test case for this.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::simplifiedLayout):

  • rendering/RenderView.h:

(WebCore::LayoutStateMaintainer::~LayoutStateMaintainer): ASSERT the state properly.
(WebCore::LayoutStateMaintainer::push):
(WebCore::LayoutStateMaintainer::pop):
(WebCore::LayoutStateMaintainer::didPush):
(WebCore::LayoutStateMaintainer::LayoutStateMaintainer): Deleted.

1:07 PM Changeset in webkit [188484] by Devin Rousso
  • 1 edit
    5 adds in trunk/Source/WebInspectorUI

Web Inspector: Add visual editors for CSS properties
https://bugs.webkit.org/show_bug.cgi?id=147576

Added parent class for property editors in the Visual style
details panel in the CSS sidebar.

Reviewed by Timothy Hatcher.

  • UserInterface/Views/VisualStylePropertyCombiner.js: Added.

(WebInspector.VisualStylePropertyCombiner):
(WebInspector.VisualStylePropertyCombiner.prototype.get style):
(WebInspector.VisualStylePropertyCombiner.prototype.get synthesizedValue):
(WebInspector.VisualStylePropertyCombiner.prototype.modifyPropertyText):
(WebInspector.VisualStylePropertyCombiner.prototype.update):
(WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText.updateCompatibleEditor):
(WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText):
(WebInspector.VisualStylePropertyCombiner.prototype.propertyMissing):
(WebInspector.VisualStylePropertyCombiner.prototype.resetEditorValues):
(WebInspector.VisualStylePropertyCombiner.prototype._markEditors):
(WebInspector.VisualStylePropertyCombiner.prototype._handlePropertyEditorValueChanged):

  • UserInterface/Views/VisualStylePropertyEditor.css: Added.

(.visual-style-property-container):
(.visual-style-property-container > .visual-style-property-title):
(.visual-style-property-container > .visual-style-property-title > .property-reference-info):
(.visual-style-property-container.disabled > .visual-style-property-title > :not(.property-reference-info)):
(.visual-style-property-container > .visual-style-property-value-container):
(.visual-style-property-container.disabled > .visual-style-property-value-container):
(.visual-style-property-container > .visual-style-property-value-container select):
(.visual-style-property-container > .visual-style-property-value-container input):
(.visual-style-property-container.disabled > .visual-style-property-value-container input):
(.visual-style-property-container.layout-reversed > .visual-style-property-title):
(.visual-style-property-container > .visual-style-property-value-container > .visual-style-special-property-placeholder):
(.visual-style-property-info-popover):
(.visual-style-property-info-popover > h3):

  • UserInterface/Views/VisualStylePropertyEditor.js: Added.

(WebInspector.VisualStylePropertyEditor.canonicalizeValues):
(WebInspector.VisualStylePropertyEditor):
(WebInspector.VisualStylePropertyEditor.prototype.get element):
(WebInspector.VisualStylePropertyEditor.prototype.get style):
(WebInspector.VisualStylePropertyEditor.prototype.get value):
(WebInspector.VisualStylePropertyEditor.prototype.set value):
(WebInspector.VisualStylePropertyEditor.prototype.get units):
(WebInspector.VisualStylePropertyEditor.prototype.set units):
(WebInspector.VisualStylePropertyEditor.prototype.get placeholder):
(WebInspector.VisualStylePropertyEditor.prototype.set placeholder):
(WebInspector.VisualStylePropertyEditor.prototype.get synthesizedValue):
(WebInspector.VisualStylePropertyEditor.prototype.set suppressStyleTextUpdate):
(WebInspector.VisualStylePropertyEditor.prototype.set masterProperty):
(WebInspector.VisualStylePropertyEditor.prototype.get masterProperty):
(WebInspector.VisualStylePropertyEditor.prototype.set optionalProperty):
(WebInspector.VisualStylePropertyEditor.prototype.get optionalProperty):
(WebInspector.VisualStylePropertyEditor.prototype.set colorProperty):
(WebInspector.VisualStylePropertyEditor.prototype.get colorProperty):
(WebInspector.VisualStylePropertyEditor.prototype.get propertyReferenceName):
(WebInspector.VisualStylePropertyEditor.prototype.set propertyReferenceName):
(WebInspector.VisualStylePropertyEditor.prototype.set disabled):
(WebInspector.VisualStylePropertyEditor.prototype.get disabled):
(WebInspector.VisualStylePropertyEditor.prototype.update):
(WebInspector.VisualStylePropertyEditor.prototype.updateEditorValues):
(WebInspector.VisualStylePropertyEditor.prototype.resetEditorValues):
(WebInspector.VisualStylePropertyEditor.prototype.modifyPropertyText):
(WebInspector.VisualStylePropertyEditor.prototype.getValuesFromText):
(WebInspector.VisualStylePropertyEditor.prototype.propertyMissing):
(WebInspector.VisualStylePropertyEditor.prototype.valueIsCompatible):
(WebInspector.VisualStylePropertyEditor.prototype.valueIsSupportedKeyword):
(WebInspector.VisualStylePropertyEditor.prototype.valueIsSupportedUnit):
(WebInspector.VisualStylePropertyEditor.prototype.get contentElement):
(WebInspector.VisualStylePropertyEditor.prototype.get specialPropertyPlaceholderElement):
(WebInspector.VisualStylePropertyEditor.prototype.parseValue):
(WebInspector.VisualStylePropertyEditor.prototype._valueIsSupportedAdvancedKeyword):
(WebInspector.VisualStylePropertyEditor.prototype._valueIsSupportedAdvancedUnit):
(WebInspector.VisualStylePropertyEditor.prototype._canonicalizedKeywordForKey):
(WebInspector.VisualStylePropertyEditor.prototype._keyForKeyword):
(WebInspector.VisualStylePropertyEditor.prototype._valueDidChange):
(WebInspector.VisualStylePropertyEditor.prototype._replaceShorthandPropertyWithLonghandProperties):
(WebInspector.VisualStylePropertyEditor.prototype._titleElementPrepareForClick):
(WebInspector.VisualStylePropertyEditor.prototype._titleElementMouseOver):
(WebInspector.VisualStylePropertyEditor.prototype._titleElementMouseOut):
(WebInspector.VisualStylePropertyEditor.prototype._titleElementClick):
(WebInspector.VisualStylePropertyEditor.prototype._hasMultipleConflictingValues):
(WebInspector.VisualStylePropertyEditor.prototype._showPropertyInfoPopover):
(WebInspector.VisualStylePropertyEditor.prototype._toggleTabbingOfSelectableElements):

  • UserInterface/Views/VisualStyleTabbedPropertiesRow.css: Added.

(.visual-style-tabbed-properties-row ~ :not(.visible)):
(.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container):
(.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container > button):
(.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container > button.selected):
(.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container > button:not(.selected):hover):

  • UserInterface/Views/VisualStyleTabbedPropertiesRow.js: Added.

(WebInspector.VisualStyleTabbedPropertiesRow):
(WebInspector.VisualStyleTabbedPropertiesRow.prototype._handleButtonClicked):

1:05 PM Changeset in webkit [188483] by Devin Rousso
  • 2 edits
    5 adds in trunk/Source/WebInspectorUI

Web Inspector: Add Visual editors for CSS properties with comma separated values
https://bugs.webkit.org/show_bug.cgi?id=147578

Reviewed by Timothy Hatcher.

Displays comma separated CSS property values as a tree outline list.

  • UserInterface/Images/Minus.svg: Added.
  • UserInterface/Views/TreeOutline.js:

(WebInspector.TreeOutline.prototype.get selectedTreeElementIndex):
(WebInspector.TreeOutline):

  • UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css: Added.

(.visual-style-property-container.comma-separated-keyword-editor):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item:nth-child(odd)):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.selected):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > :matches(button, img)):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item.selected:not(.editor-hidden) > .titles > *):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item > .visual-style-comma-separated-keyword-item-editor):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item.editor-hidden > .visual-style-comma-separated-keyword-item-editor):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles > .subtitle):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item:not(.no-value) > .titles > .subtitle):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-controls):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-controls > div):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-controls > .visual-style-remove-comma-separated-keyword):

  • UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js: Added.

(WebInspector.VisualStyleCommaSeparatedKeywordEditor):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.set selectedTreeElementValue):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.get value):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.set value):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.get synthesizedValue):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._treeElementSelected):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._treeItemIsEmpty):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._addEmptyCommaSeparatedKeyword):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._removeSelectedCommaSeparatedKeyword):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._removeEmptyCommaSeparatedKeywords):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._addCommaSeparatedKeyword):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._removeCommaSeparatedKeyword):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._createNewTreeElement):

  • UserInterface/Views/VisualStyleFontFamilyListEditor.js: Added.

(WebInspector.VisualStyleFontFamilyListEditor):
(WebInspector.VisualStyleFontFamilyListEditor.prototype.visualStyleCompletionsControllerCustomizeCompletionElement):
(WebInspector.VisualStyleFontFamilyListEditor.prototype.get hasCompletions):
(WebInspector.VisualStyleFontFamilyListEditor.prototype.set completions):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._modifyCommaSeparatedKeyword):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._addCommaSeparatedKeyword):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._addEmptyCommaSeparatedKeyword):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._completionClicked):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._treeElementKeyDown):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._treeElementKeywordChanged):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._hideCompletions):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._createNewTreeElement):

  • UserInterface/Views/VisualStyleFontFamilyTreeElement.js: Added.

(WebInspector.VisualStyleFontFamilyTreeElement):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.editorBounds):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.updateMainTitle):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.showKeywordEditor):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.hideKeywordEditor):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.get keywordEditorHidden):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.onattach):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.ondeselect):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype._keywordEditorKeyDown):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype._keywordEditorKeyUp):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype._keywordEditorBlurred):

12:15 PM Changeset in webkit [188482] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Remove a few includes from RenderObject.h
https://bugs.webkit.org/show_bug.cgi?id=148007

Reviewed by Tim Horton.

Shrink down the RenderObject.h includes a little.

  • rendering/RenderElement.h:
  • rendering/RenderObject.h:
  • rendering/RenderText.h:
11:48 AM Changeset in webkit [188481] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

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

webkit-patch generates incorrect patches that cannot be
applied (Requested by dydz on #webkit).

Reverted changeset:

"Call fixChangeLogPatch when generating patches from webkit-
patch"
https://bugs.webkit.org/show_bug.cgi?id=147248
http://trac.webkit.org/changeset/187357

11:43 AM Changeset in webkit [188480] by Devin Rousso
  • 3 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Add autocomplete controller for Visual property editors
https://bugs.webkit.org/show_bug.cgi?id=147579

Reviewed by Timothy Hatcher.

  • UserInterface/Controllers/VisualStyleCompletionsController.js: Added.

(WebInspector.VisualStyleCompletionsController):
Takes in a CSSCompletions and displays a list of suggestions based on a given prefix in a popover.
(WebInspector.VisualStyleCompletionsController.prototype.get visible):
(WebInspector.VisualStyleCompletionsController.prototype.get hasCompletions):
(WebInspector.VisualStyleCompletionsController.prototype.get currentCompletion):
(WebInspector.VisualStyleCompletionsController.prototype.set completions):
(WebInspector.VisualStyleCompletionsController.prototype.completionSuggestionsViewCustomizeCompletionElement):
(WebInspector.VisualStyleCompletionsController.prototype.previous):
(WebInspector.VisualStyleCompletionsController.prototype.next):
(WebInspector.VisualStyleCompletionsController.prototype.update):
(WebInspector.VisualStyleCompletionsController.prototype.show):
(WebInspector.VisualStyleCompletionsController.prototype.hide):

  • UserInterface/Models/CSSKeywordCompletions.js:

(WebInspector.CSSKeywordCompletions.forProperty):
Make sure that the cssNameCompletions exist before trying to add them.

  • UserInterface/Views/CompletionSuggestionsView.js:

(WebInspector.CompletionSuggestionsView.prototype.update):
Allow the delegate to modify the newly created completion suggestion item.

11:31 AM Changeset in webkit [188479] by Devin Rousso
  • 1 edit
    2 adds in trunk/Source/WebInspectorUI

Web Inspector: Add a visual editor for timing functions
https://bugs.webkit.org/show_bug.cgi?id=148022

Reviewed by Timothy Hatcher.

Uses the existing bezier editor and the Visual keyword picker to make an editor for timing functions.

  • UserInterface/Views/VisualStyleTimingEditor.css: Added.

(.visual-style-property-container.timing-editor > .visual-style-property-value-container):
(.visual-style-property-container.timing-editor > .visual-style-property-value-container > .keyword-picker-select):
(.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor):
(.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor:hover):
(.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor:active):

  • UserInterface/Views/VisualStyleTimingEditor.js: Added.

(WebInspector.VisualStyleTimingEditor):
(WebInspector.VisualStyleTimingEditor.prototype.parseValue):
(WebInspector.VisualStyleTimingEditor.prototype.get bezierValue):
(WebInspector.VisualStyleTimingEditor.prototype.set bezierValue):
(WebInspector.VisualStyleTimingEditor.prototype._getValue):
(WebInspector.VisualStyleTimingEditor.prototype._setValue):
(WebInspector.VisualStyleTimingEditor.prototype._generateSynthesizedValue):
(WebInspector.VisualStyleTimingEditor.prototype._bezierMarkerClicked):
(WebInspector.VisualStyleTimingEditor.prototype._handleKeywordChanged):

11:06 AM Changeset in webkit [188478] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Refactor BuildbotQueueView._appendPendingRevisionCount to work more generically with repositories
other than "openSource" and "internal".
https://bugs.webkit.org/show_bug.cgi?id=147938

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

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

(BuildbotQueueView.prototype._appendPendingRevisionCount): Refactored to work more generically with
repositories other than "openSource" and "internal".

10:43 AM Changeset in webkit [188477] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the Mavericks build.

  • platform/spi/mac/LookupSPI.h:
10:09 AM Changeset in webkit [188476] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Frequent assertions on animations/restart-after-scroll.html
https://bugs.webkit.org/show_bug.cgi?id=148026

9:53 AM Changeset in webkit [188475] by commit-queue@webkit.org
  • 34 edits in trunk/Source

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

Broke GTK and EFL (see bug #148027) (Requested by philn on
#webkit).

Reverted changeset:

"Use WTF::Lock and WTF::Condition instead of WTF::Mutex,
WTF::ThreadCondition, std::mutex, and std::condition_variable"
https://bugs.webkit.org/show_bug.cgi?id=147999
http://trac.webkit.org/changeset/188444

9:49 AM Changeset in webkit [188474] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

Speculative fix for iOS build failure.

  • Shared/mac/RemoteLayerTreeTransaction.h:
9:48 AM Changeset in webkit [188473] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the build.

  • platform/spi/mac/LookupSPI.h:
9:31 AM Changeset in webkit [188472] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] Handle missing plugins better at runtime
https://bugs.webkit.org/show_bug.cgi?id=146999

Reviewed by Carlos Garcia Campos.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createAudioSink): Warn the
user if autoaudiosink wasn't found at runtime. In that case
playbin will try to be smart by itself, hopefully. Also moved a
couple GST_WARNING calls to WARN_MEDIA_MESSAGE.
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Use
WARN_MEDIA_MESSAGE here as well.

9:30 AM Changeset in webkit [188471] by Philippe Normand
  • 2 edits in trunk/Source/WebKit2

Unreviewed, remove dead code after r188385.

  • UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:

(webkitUserMediaPermissionRequestAllow): Deleted.

8:27 AM Changeset in webkit [188470] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.9.90

WebKitGTK+ 2.9.90

8:26 AM Changeset in webkit [188469] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.10

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.9.90 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.9.90.
7:08 AM Changeset in webkit [188468] by Antti Koivisto
  • 27 edits in trunk

Cover memory cache subresource validation policy with cache tests
https://bugs.webkit.org/show_bug.cgi?id=147830

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Existing tests under http/tests/cache/disk-cache currently cover disk and XHR memory cache validation behaviors.
They can be extended to cover the regular subresource policy too.

Add window.internals API to disable CachedRawResource validation behavior. This makes XHR validate like
other resources and allows existing tests (that use XHR) to cover normal subresource policy .

Test results reveal some bugs. For example subresources in memory cache don't respect Vary header.

It is generally bad that we have a separate XHR-and-main-resource validation policy in memory cache. Network cache
doesn't have one.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::clearTestingOverrides):
(WebCore::FrameLoader::applyShouldOpenExternalURLsPolicyToNewDocumentLoader):

  • loader/FrameLoader.h:

(WebCore::FrameLoader::setOverrideCachePolicyForTesting):
(WebCore::FrameLoader::setOverrideResourceLoadPriorityForTesting):
(WebCore::FrameLoader::setStrictRawResourceValidationPolicyDisabledForTesting):
(WebCore::FrameLoader::isStrictRawResourceValidationPolicyDisabledForTesting):
(WebCore::FrameLoader::provisionalLoadErrorBeingHandledURL):

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

(WebCore::CachedResource::setLoadFinishTime):
(WebCore::CachedResource::loadFinishTime):
(WebCore::CachedResource::canReuse): Deleted.

Made canReuse non-virtual and removed it from the base. Only CachedRawResource has implementation.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::determineRevalidationPolicy):

  • testing/Internals.cpp:

(WebCore::Internals::setOverrideResourceLoadPriority):
(WebCore::Internals::setStrictRawResourceValidationPolicyDisabled):
(WebCore::Internals::clearMemoryCache):

  • testing/Internals.h:

LayoutTests:

Add another test round using subresource validation policy.

  • http/tests/cache/disk-cache/disk-cache-204-status-code-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-302-status-code-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-307-status-code-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-404-status-code-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-disable-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-media-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-range-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-request-headers-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-request-max-stale-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-revalidation-new-expire-header-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-validation-attachment-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-validation-back-navigation-policy-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-validation-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-validation-no-body-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-vary-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-vary-no-body-expected.txt:
  • http/tests/cache/disk-cache/resources/cache-test.js:

(loadResourcesWithOptions):
(.):
(runTests):

5:34 AM Changeset in webkit [188467] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Tools

Merge r188445 - Unreviewed, shorten another test that is timing out.

  • TestWebKitAPI/Tests/WTF/Lock.cpp:

(TestWebKitAPI::TEST):

5:32 AM Changeset in webkit [188466] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Tools

Merge r188387 - Unreviewed, shorten another test. It's timing out in debug on some bot.

  • TestWebKitAPI/Tests/WTF/Lock.cpp:

(TestWebKitAPI::TEST):

5:28 AM Changeset in webkit [188465] by Carlos Garcia Campos
  • 15 edits in releases/WebKitGTK/webkit-2.10/Source

Merge r188386 - Use WTF::Optional in WindowFeatures
https://bugs.webkit.org/show_bug.cgi?id=147956

Reviewed by Sam Weinig.

Source/WebCore:

  • loader/FrameLoader.cpp:

(WebCore::createWindow):

  • page/WindowFeatures.cpp:

(WebCore::WindowFeatures::WindowFeatures):
(WebCore::WindowFeatures::setWindowFeature):
(WebCore::WindowFeatures::boolFeature):
(WebCore::WindowFeatures::floatFeature):
(WebCore::WindowFeatures::parseDialogFeatures):

  • page/WindowFeatures.h:

(WebCore::WindowFeatures::WindowFeatures):

Source/WebKit/mac:

  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::createWindow):

Source/WebKit/win:

  • WebCoreSupport/WebChromeClient.cpp:

(createWindowFeaturesPropertyBag):

Source/WebKit2:

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<WindowFeatures>::encode): Deleted.
(IPC::ArgumentCoder<WindowFeatures>::decode): Deleted.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/Cocoa/WKWindowFeatures.mm:

(-[WKWindowFeatures _initWithWindowFeatures:]):

Source/WTF:

Add new operators to WTF::Optional to make it more like std::optional.

  • wtf/Optional.h:

(WTF::Optional::operator->):
(WTF::Optional::operator*):

Unreviewed. Fix GTK+ build after r188386.

  • UIProcess/API/gtk/WebKitWindowProperties.cpp:

(webkitWindowPropertiesUpdateFromWebWindowFeatures):

5:01 AM Changeset in webkit [188464] by Carlos Garcia Campos
  • 13 edits
    8 adds in releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore

Merge r188432 - [JSC] Add support for GetByVal on arrays of Undecided shape
https://bugs.webkit.org/show_bug.cgi?id=147814

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-08-13
Reviewed by Filip Pizlo.

Previously, GetByVal on Array::Undecided would just take
the generic path. The problem is the generic path is so
slow that it could take a significant amount of time
even for unfrequent accesses.

With this patch, if the following conditions are met,
the GetByVal just returns a "undefined" constant:
-The object is an OriginalArray.
-The prototype chain is sane.
-The index is an integer.
-The integer is positive (runtime check).

Ideally, the 4th conditions should be removed
deducing a compile-time constant gives us so much better
opportunities at getting rid of this code.

There are two cases where this patch removes the runtime
check:
-If the index is constant (uncommon but easy)
-If the index is within a range known to be positive.

(common case and made possible with DFGIntegerRangeOptimizationPhase).

When we get into those cases, DFG just nukes everything
and all we have left is a structure check :)

This patch is a 14% improvement on audio-beat-detection,
a few percent faster here and there and no regression.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
If the index is a positive constant, we can get rid of the GetByVal
entirely. :)

  • dfg/DFGArrayMode.cpp:

(JSC::DFG::ArrayMode::fromObserved):
The returned type is now Array::Undecided + profiling information.
The useful type is set in ArrayMode::refine().

(JSC::DFG::ArrayMode::refine):
If we meet the particular set conditions, we speculate an Undecided
array type with sane chain. Anything else comes back to Generic.

(JSC::DFG::ArrayMode::originalArrayStructure):
To enable the structure check for Undecided array.

(JSC::DFG::ArrayMode::alreadyChecked):

  • dfg/DFGArrayMode.h:

(JSC::DFG::ArrayMode::withProfile):
(JSC::DFG::ArrayMode::canCSEStorage):
(JSC::DFG::ArrayMode::benefitsFromOriginalArray):
(JSC::DFG::ArrayMode::lengthNeedsStorage): Deleted.
(JSC::DFG::ArrayMode::isSpecific): Deleted.A

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsic): Deleted.
This is somewhat unrelated.

Having Array::Undecided on ArrayPush was impossible before
since ArrayMode::fromObserved() used to return Array::Generic.

Now that Array::Undecided is possible, we must make sure not
to provide it to ArrayPush since there is no code to handle it
properly.

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):
The operation only depends on the index, it is pure.

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode): Deleted.

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::jumpSlowForUnwantedArrayMode):
(JSC::DFG::SpeculativeJIT::checkArray):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::compileGetByVal):

  • tests/stress/get-by-val-on-undecided-array-type.js: Added.
  • tests/stress/get-by-val-on-undecided-sane-chain-1.js: Added.
  • tests/stress/get-by-val-on-undecided-sane-chain-2.js: Added.
  • tests/stress/get-by-val-on-undecided-sane-chain-3.js: Added.
  • tests/stress/get-by-val-on-undecided-sane-chain-4.js: Added.
  • tests/stress/get-by-val-on-undecided-sane-chain-5.js: Added.
  • tests/stress/get-by-val-on-undecided-sane-chain-6.js: Added.
4:46 AM Changeset in webkit [188463] by Carlos Garcia Campos
  • 20 edits in releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore

Merge r188417 - Unify JSParserCodeType, FunctionParseMode and ModuleParseMode into SourceParseMode
https://bugs.webkit.org/show_bug.cgi?id=147353

Reviewed by Saam Barati.

This is the follow-up patch after r188355.
It includes the following changes.

  • Unify JSParserCodeType, FunctionParseMode and ModuleParseMode into SourceParseMode
  • Make SourceParseMode to C++ strongly-typed enum.
  • Fix the comments.
  • Rename ModuleSpecifier to ModuleName.
  • Add the type name ImportEntry before the C++11 uniform initialization.
  • Fix the thrown message for duplicate 'default' names.
  • Assert the all statements in the top-level source elements are the module declarations under the module analyzer phase.
  • API/JSScriptRef.cpp:

(parseScript):

  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createExecutableInternal):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateFunctionCodeBlock):

  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::makeFunction):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createFunctionMetadata):
(JSC::ASTBuilder::createModuleName):
(JSC::ASTBuilder::createImportDeclaration):
(JSC::ASTBuilder::createExportAllDeclaration):
(JSC::ASTBuilder::createExportNamedDeclaration):
(JSC::ASTBuilder::createModuleSpecifier): Deleted.

  • parser/ModuleAnalyzer.cpp:

(JSC::ModuleAnalyzer::analyze):

  • parser/NodeConstructors.h:

(JSC::ModuleNameNode::ModuleNameNode):
(JSC::ImportDeclarationNode::ImportDeclarationNode):
(JSC::ExportAllDeclarationNode::ExportAllDeclarationNode):
(JSC::ExportNamedDeclarationNode::ExportNamedDeclarationNode):
(JSC::ModuleSpecifierNode::ModuleSpecifierNode): Deleted.

  • parser/Nodes.cpp:

(JSC::FunctionMetadataNode::FunctionMetadataNode):

  • parser/Nodes.h:

(JSC::StatementNode::isModuleDeclarationNode):
(JSC::ModuleDeclarationNode::isModuleDeclarationNode):
(JSC::ImportDeclarationNode::moduleName):
(JSC::ExportAllDeclarationNode::moduleName):
(JSC::ExportNamedDeclarationNode::moduleName):
(JSC::ImportDeclarationNode::moduleSpecifier): Deleted.
(JSC::ExportAllDeclarationNode::moduleSpecifier): Deleted.
(JSC::ExportNamedDeclarationNode::moduleSpecifier): Deleted.

  • parser/NodesAnalyzeModule.cpp:

(JSC::SourceElements::analyzeModule):
(JSC::ImportDeclarationNode::analyzeModule):
(JSC::ExportAllDeclarationNode::analyzeModule):
(JSC::ExportNamedDeclarationNode::analyzeModule):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseModuleSourceElements):
(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::stringForFunctionMode):
(JSC::Parser<LexerType>::parseFunctionParameters):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseFunctionDeclaration):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseModuleName):
(JSC::Parser<LexerType>::parseImportDeclaration):
(JSC::Parser<LexerType>::parseExportDeclaration):
(JSC::Parser<LexerType>::parsePropertyMethod):
(JSC::Parser<LexerType>::parseGetterSetter):
(JSC::Parser<LexerType>::parsePrimaryExpression):
(JSC::Parser<LexerType>::parseArrowFunctionExpression):
(JSC::Parser<LexerType>::parseModuleSpecifier): Deleted.

  • parser/Parser.h:

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

  • parser/ParserModes.h:

(JSC::isFunctionParseMode):
(JSC::isModuleParseMode):
(JSC::isProgramParseMode):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createFunctionMetadata):
(JSC::SyntaxChecker::createModuleName):
(JSC::SyntaxChecker::createImportDeclaration):
(JSC::SyntaxChecker::createExportAllDeclaration):
(JSC::SyntaxChecker::createExportNamedDeclaration):
(JSC::SyntaxChecker::createModuleSpecifier): Deleted.

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getFunctionExecutableFromGlobalCode):

  • runtime/Completion.cpp:

(JSC::checkSyntax):
(JSC::checkModuleSyntax):

  • runtime/Executable.cpp:

(JSC::ProgramExecutable::checkSyntax):

  • tests/stress/modules-syntax-error-with-names.js:
4:33 AM Changeset in webkit [188462] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore

Merge r188401 - Periodic code deletion should delete RegExp code
https://bugs.webkit.org/show_bug.cgi?id=147990

Reviewed by Filip Pizlo.

The RegExp code cache was created for the sake of simple loops that
re-created the same RegExps. It's reasonable to delete it periodically.

  • heap/Heap.cpp:

(JSC::Heap::deleteOldCode):

4:30 AM Changeset in webkit [188461] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore

Merge r188397 - RegExpCache::finalize should not delete code
https://bugs.webkit.org/show_bug.cgi?id=147987

Reviewed by Mark Lam.

The RegExp object already knows how to delete its own code in its
destructor. Our job is just to clear our stale pointer.

  • runtime/RegExpCache.cpp:

(JSC::RegExpCache::finalize):
(JSC::RegExpCache::addToStrongCache):

4:28 AM Changeset in webkit [188460] by Carlos Garcia Campos
  • 17 edits in releases/WebKitGTK/webkit-2.10/Source

Merge r188394 - Standardize on the phrase "delete code"
https://bugs.webkit.org/show_bug.cgi?id=147984

Reviewed by Mark Lam.

Source/JavaScriptCore:

Use "delete" when we talk about throwing away code, as opposed to
"invalidate" or "discard".

  • debugger/Debugger.cpp:

(JSC::Debugger::forEachCodeBlock):
(JSC::Debugger::setSteppingMode):
(JSC::Debugger::recompileAllJSFunctions):

  • heap/Heap.cpp:

(JSC::Heap::deleteAllCompiledCode):

  • inspector/agents/InspectorRuntimeAgent.cpp:

(Inspector::recompileAllJSFunctionsForTypeProfiling):

  • runtime/RegExp.cpp:

(JSC::RegExp::match):
(JSC::RegExp::deleteCode):
(JSC::RegExp::invalidateCode): Deleted.

  • runtime/RegExp.h:
  • runtime/RegExpCache.cpp:

(JSC::RegExpCache::finalize):
(JSC::RegExpCache::addToStrongCache):
(JSC::RegExpCache::deleteAllCode):
(JSC::RegExpCache::invalidateCode): Deleted.

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

(JSC::VM::stopSampling):
(JSC::VM::prepareToDeleteCode):
(JSC::VM::deleteAllCode):
(JSC::VM::setEnabledProfiler):
(JSC::VM::prepareToDiscardCode): Deleted.
(JSC::VM::discardAllCode): Deleted.

  • runtime/VM.h:

(JSC::VM::apiLock):
(JSC::VM::codeCache):

  • runtime/Watchdog.cpp:

(JSC::Watchdog::setTimeLimit):

Source/WebCore:

Use "delete" when we talk about throwing away code, as opposed to
"invalidate" or "discard".

  • bindings/js/GCController.cpp:

(WebCore::GCController::setJavaScriptGarbageCollectorTimerEnabled):
(WebCore::GCController::deleteAllCode):
(WebCore::GCController::discardAllCompiledCode): Deleted.

  • bindings/js/GCController.h:
  • platform/MemoryPressureHandler.cpp:

(WebCore::MemoryPressureHandler::releaseCriticalMemory):

Source/WebKit/mac:

  • WebView/WebView.mm:

(+[WebView discardAllCompiledCode]):
(+[WebView isCharacterSmartReplaceExempt:isPreviousCharacter:]):

4:00 AM Changeset in webkit [188459] by Carlos Garcia Campos
  • 4 edits
    1 add in releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore

Merge r188384 - X.SetPrototypeOf?(Y) should succeed if X.Prototype? is already Y even if X is not extensible
https://bugs.webkit.org/show_bug.cgi?id=147930

Reviewed by Saam Barati.

When the passed prototype object to be set is the same to the existing
prototype object, SetPrototypeOf? just finishes its operation even
if the extensibility of the target object is false.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncProtoSetter):

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorSetPrototypeOf):

  • runtime/ReflectObject.cpp:

(JSC::reflectObjectSetPrototypeOf):

  • tests/stress/set-same-prototype.js: Added.

(shouldBe):
(shouldThrow):

3:47 AM Changeset in webkit [188458] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebInspectorUI

Merge r188442 - Web Inspector: Can't resize split console when window is too narrow
https://bugs.webkit.org/show_bug.cgi?id=147924

Make some items inside of the navigation bar click-through to incsease
the draggable area.

Reviewed by Timothy Hatcher.

  • UserInterface/Views/Main.css:

(#split-content-browser > .navigation-bar > :matches(.hierarchical-path, .log-search-bar, .log-scope-bar)):
(#split-content-browser > .navigation-bar > :matches(.log-search-bar, .log-scope-bar) > :matches(li, input)):

3:46 AM Changeset in webkit [188457] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.10/Source/WebInspectorUI

Merge r188429 - Web Inspector: Flash DOM node attribute on change
https://bugs.webkit.org/show_bug.cgi?id=147973

Reviewed by Timothy Hatcher.

Whenever an attribute on a DOM node changes, flash the attribute value.
If that value doesn't exist, flash the attribute name instead.

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement):
(WebInspector.DOMTreeElement.prototype.nodeChanged):
(WebInspector.DOMTreeElement.prototype._buildAttributeDOM):
If the node has been marked with a general change, mark the attribute element for animation.
(WebInspector.DOMTreeElement.prototype._markNodeChanged.animationEnd):
(WebInspector.DOMTreeElement.prototype._markNodeChanged):
Adds a class to the given element that applies a simple background flash animation.
(WebInspector.DOMTreeElement.prototype._fireDidChange):
Add the animation class once all building of the represented DOM object for that node is done.

  • UserInterface/Views/DOMTreeOutline.css:

(@keyframes node-state-changed):
Applies a semi-transparent background that fades to default.
(.node-state-changed):

  • UserInterface/Views/DOMTreeUpdater.js:

(WebInspector.DOMTreeUpdater.prototype._attributesUpdated):
Now passes along the name of the modified attribute.
(WebInspector.DOMTreeUpdater.prototype._updateModifiedNodes):
If the modified node object has an attribute member, mark the node as being generally changed.

3:44 AM Changeset in webkit [188456] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebInspectorUI

Merge r188427 - REGRESSION (r184000): Web Inspector: Stripped whitespace after editing CSS in Styles sidebar
https://bugs.webkit.org/show_bug.cgi?id=145679

Reviewed by Timothy Hatcher.

The formatter will now calculate the number of beginning spaces before the first line in a rule
and duplicate them in front of every other line. If there is no new line at the beginning or are
no spaces, assume 4 spaces and a new line for each property.
Also cleaned up the code for _resetContent a bit.

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

(WebInspector.CSSStyleDeclarationTextEditor):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update.set get this):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update.get this):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent):

3:42 AM Changeset in webkit [188455] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/LayoutTests

Merge r188426 - Web Inspector: Reduce flakiness of inspector/indexeddb/requestDatabaseNames
https://bugs.webkit.org/show_bug.cgi?id=148008

Reviewed by Timothy Hatcher.

  • inspector/indexeddb/requestDatabaseNames.html:

Follow-up fix to reduce flakiness in the test caused by other tests
creating IndexedDB databases.

3:41 AM Changeset in webkit [188454] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.10/Source/WebInspectorUI

Merge r188408 - Web Inspector: Skip rendering frame records without children
https://bugs.webkit.org/show_bug.cgi?id=147993

Reviewed by Reviewed by Joseph Pecoraro.

This became an issue for frames which include an IndexedDB "success" event. This caused the
payload to pass the "has children" test, but resulted in model objects with no child records.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.prototype.eventRecorded):
Fixed record type check and moved rendering frame index assignment.

  • UserInterface/Models/RenderingFrameTimelineRecord.js:

(WebInspector.RenderingFrameTimelineRecord):
(WebInspector.RenderingFrameTimelineRecord.prototype.setupFrameIndex):
Frame index is now set externally, and can only be set once.

  • UserInterface/Views/RenderingFrameTimelineView.js:

(WebInspector.RenderingFrameTimelineView.prototype._renderingFrameTimelineRecordAdded):
Added assertion.

3:40 AM Changeset in webkit [188453] by Carlos Garcia Campos
  • 10 edits
    3 adds in releases/WebKitGTK/webkit-2.10

Merge r188407 - Web Inspector: Watch Expressions
https://bugs.webkit.org/show_bug.cgi?id=147904

Reviewed by Brian Burg.

Source/WebInspectorUI:

  • UserInterface/Protocol/RemoteObject.js:

(WebInspector.RemoteObject):
A RemoteObject's description string is optional, but we always
assume it exists and is a string, so default to the empty string.

  • UserInterface/Controllers/RuntimeManager.js:

(WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow.evalCallback):
Include the object group in the DidEvaluate event.

(WebInspector.RemoteObject.fakeRemoteObject):
(WebInspector.RemoteObject.prototype.getDisplayablePropertyDescriptors):
(WebInspector.RemoteObject.prototype.deprecatedGetDisplayableProperties.get return):
(WebInspector.RemoteObject.prototype.deprecatedGetDisplayableProperties):
(WebInspector.RemoteObject.prototype._isFakeObject):
(WebInspector.RemoteObject.prototype._getPropertyDescriptors):
(WebInspector.RemoteObject.prototype._deprecatedGetProperties):
Support a fake RemoteObject. We use this fake RemoteObject to
back a ObjectTreeView where we add custom Properties which are of the form
"Expressions => RemoteObject" instead of "Object Property => RemoteObject".
Ensure a fake remote object is not used in unexpected ways.

  • UserInterface/Views/Popover.js:

(WebInspector.Popover.prototype.update):
Default a popover update to animate, but allow not animating.

(WebInspector.Popover.prototype.handleEvent):
Vend a class that other content can use so that the Popover won't
dismiss if content with that class is scrolled. For example, a
completions list may be showing over a popover, if that scrolls
it should not dismiss the popover.

  • UserInterface/Views/CompletionSuggestionsView.js:

(WebInspector.CompletionSuggestionsView):
Adopt the Popover ignore class so a popover won't dismiss if the
completion suggestions view is scrolled.

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement.get return):
(WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement):
Allow modifying the context menu on an ObjectTreeView by looking for a delegate
on the TreeOutline.

  • UserInterface/Views/ScopeChainDetailsSidebarPanel.css: Added.

(.details-section.watch-expressions .options > *):
(.details-section.watch-expressions .options > *:active):
(.details-section.watch-expressions .options > .watch-expression-add):
(.details-section.watch-expressions .options > .watch-expression-clear):
(.details-section.watch-expressions .options > .watch-expression-refresh):
(.popover .watch-expression):
(.watch-expression-editor):
(.watch-expression-editor > .CodeMirror):
(.watch-expression-editor > .CodeMirror-scroll):
Styles for the new Watch Expressions section, buttons, popover, and editor.

  • UserInterface/Views/ScopeChainDetailsSidebarPanel.js:

(WebInspector.ScopeChainDetailsSidebarPanel):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype.inspect):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype.refresh):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateWatchExpressionsSection):
Because we update the UI after a delay, to allow ObjectTreeView's to asynchronously
expand and fetch their list of properties, we convert updating the watch expression
and call frame sections asynchronously and return a promise. This lets us visually
update the UI after both sections have updated.

(WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpression):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._removeWatchExpression):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._clearAllWatchExpressions):
Modify the saved list of watch expressions.

(WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked.presentPopoverOverTargetElement):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked.this._codeMirror.addKeyMap):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype.willDismissPopover):
Handle presenting and dismissing the add watch expression popover.

(WebInspector.ScopeChainDetailsSidebarPanel.prototype._refreshAllWatchExpressionsButtonClicked):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._clearAllWatchExpressionsButtonClicked):
Other button handlers.

(WebInspector.ScopeChainDetailsSidebarPanel.prototype._mainResourceDidChange):
Refresh the sidebar on navigation, as the watch expressions may change value (location.href).

(WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeElementAddContextMenuItems):
Add our own context menu items to watch expression ObjectTreeView tree elements to
allow removing a watch expression.

(WebInspector.ScopeChainDetailsSidebarPanel.prototype._propertyPathIdentifierForTreeElement):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeAddHandler):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeExpandHandler):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeCollapseHandler):
Convert code to use let.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:

Misc. changes.

LayoutTests:

  • inspector/model/remote-object-fake-object-expected.txt: Added.
  • inspector/model/remote-object-fake-object.html: Added.
3:38 AM Changeset in webkit [188452] by Carlos Garcia Campos
  • 14 edits in releases/WebKitGTK/webkit-2.10/LayoutTests

Merge r188406 - Web Inspector: refactor ProtocolTest to be an InjectedTestHarness subclass
https://bugs.webkit.org/show_bug.cgi?id=147954

Reviewed by Joseph Pecoraro.

In preparation for sharing the same test harness API between protocol tests
and frontend tests, this patch refactors ProtocolTest into the desired
class structure. Each type of test (currently: protocol, frontend) extends
InjectedTestHarness and fills in a few key methods for communicating with
the test page-side code.

This patch standardizes on assert() only logging when the condition is false.
Update protocol tests to use ProtocolTestHarness.expectThat, rather than assert.

  • http/tests/inspector/resources/ProtocolTestStub.js:

(window.InjectedTestHarness):
(window.InjectedTestHarness.prototype.createAsyncSuite):
(window.InjectedTestHarness.prototype.createSyncSuite):
(window.InjectedTestHarness.prototype.completeTest):
(window.InjectedTestHarness.prototype.addResult):
(window.InjectedTestHarness.prototype.debugLog):
(window.InjectedTestHarness.prototype.evaluateInPage):
(window.InjectedTestHarness.prototype.importScript):
(window.InjectedTestHarness.prototype.get logCount):
(window.InjectedTestHarness.prototype.log):
(window.InjectedTestHarness.prototype.assert):
(window.InjectedTestHarness.prototype.expectThat):

(InjectedTestHarness.AsyncTestSuite): Use a stored reference to the harness
rather than hardcoding a specific InjectedTestHarness instance.

(InjectedTestHarness.AsyncTestSuite.prototype.runTestCasesAndFinish.finish):
(InjectedTestHarness.AsyncTestSuite.prototype.runTestCasesAndFinish):
(InjectedTestHarness.AsyncTestSuite.prototype.runTestCases):

(InjectedTestHarness.SyncTestSuite): Use a stored reference to the harness
rather than hardcoding a specific InjectedTestHarness instance.

(InjectedTestHarness.SyncTestSuite.prototype.runTestCasesAndFinish):
(InjectedTestHarness.SyncTestSuite.prototype.runTestCases):

(ProtocolTestHarness.prototype.completeTest):
(ProtocolTestHarness.prototype.addResult):
(ProtocolTestHarness.prototype.debugLog):
(ProtocolTestHarness.prototype.evaluateInPage):
(ProtocolTestHarness):
(InspectorProtocol.sendCommand):
(InspectorProtocol.awaitCommand):
(InspectorProtocol.awaitEvent.):
(InspectorProtocol.awaitEvent):
(InspectorProtocol.addEventListener):
(InspectorProtocol.sendMessage):
(InspectorProtocol.checkForError):
(InspectorFrontendAPI.dispatchMessageAsync):
(ProtocolTest.AsyncTestSuite): Moved.
(ProtocolTest.AsyncTestSuite.prototype.runTestCasesAndFinish.finish): Moved.
(ProtocolTest.AsyncTestSuite.prototype.runTestCasesAndFinish): Moved.
(ProtocolTest.AsyncTestSuite.prototype.runTestCases): Moved.
(ProtocolTest.SyncTestSuite): Moved.
(ProtocolTest.SyncTestSuite.prototype.runTestCasesAndFinish): Moved.
(ProtocolTest.SyncTestSuite.prototype.runTestCases): Moved.
(ProtocolTest.log): Moved.
(ProtocolTest.assert): Moved.
(ProtocolTest.debugLog): Moved.
(ProtocolTest.completeTest): Moved.
(ProtocolTest.importScript): Moved.

  • http/tests/inspector/resources/console-test.js:

(.suite.addTestCase.):
(.suite.addTestCase):
(ProtocolTest.Console.addTestCase):

  • http/tests/inspector/resources/protocol-test.js:

(closeTest):

  • inspector/console/console-message.html:
  • inspector/console/x-frame-options-message.html:
  • inspector/debugger/didSampleProbe-multiple-probes.html:
  • inspector/dom-debugger/node-removed.html:
  • inspector/dom/dom-remove-events.html:
  • inspector/runtime/getProperties.html:
  • inspector/unit-tests/async-test-suite-expected.txt:
  • inspector/unit-tests/async-test-suite.html:
  • inspector/unit-tests/sync-test-suite-expected.txt:
  • inspector/unit-tests/sync-test-suite.html:
3:36 AM Changeset in webkit [188451] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.10

Merge r188403 - Web Inspector: A {Map, WeakMap, Set, WeakSet} object contains itself will hang the console
https://bugs.webkit.org/show_bug.cgi?id=147966

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-08-13
Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/InjectedScriptSource.js:

(InjectedScript.prototype._initialPreview):
Renamed to initial preview. This is not a complete preview for
this object, and it needs some processing in order to be a
complete accurate preview.

(InjectedScript.RemoteObject.prototype._emptyPreview):
This attempts to be an accurate empty preview for the given object.
For types with entries, it adds an empty entries list and updates
the overflow and lossless properties.

(InjectedScript.RemoteObject.prototype._createObjectPreviewForValue):
Take a generatePreview parameter to generate a full preview or empty preview.

(InjectedScript.RemoteObject.prototype._appendPropertyPreviews):
(InjectedScript.RemoteObject.prototype._appendEntryPreviews):
(InjectedScript.RemoteObject.prototype._isPreviewableObject):
Take care to avoid cycles.

Source/WebInspectorUI:

  • UserInterface/Views/ObjectPreviewView.js:

(WebInspector.ObjectPreviewView.prototype._appendEntryPreviews):
(WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
For empty overflow previews, don't show ", ..." if we didn't show any
values; just show "..." in these cases.

LayoutTests:

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

Add tests for a cylic array, set, and map.

3:34 AM Changeset in webkit [188450] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.10/Source/WebInspectorUI

Merge r188398 - Web Inspector: Hide child rows for filtered tasks in the Rendering Frames data grid
https://bugs.webkit.org/show_bug.cgi?id=147960

Reviewed by Timothy Hatcher.

  • UserInterface/Models/RenderingFrameTimelineRecord.js:

(WebInspector.RenderingFrameTimelineRecord.taskTypeForTimelineRecord):
New static method for mapping TimelineRecords to rendering frame tasks.
(WebInspector.RenderingFrameTimelineRecord.prototype.durationForTask):
Refactored to use taskTypeForTimelineRecord.

  • UserInterface/Views/TimelineSidebarPanel.js:

(WebInspector.TimelineSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
Task filtering is applied to children of the frame record only. Parent frame
record is hidden by default, and visible by virtue of having unfiltered children.

3:32 AM Changeset in webkit [188449] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebInspectorUI

Merge r188396 - Web Inspector: Clearing frames timeline doesn't remove current time marker
https://bugs.webkit.org/show_bug.cgi?id=147650

Reviewed by Timothy Hatcher.

The rendering frames timeline offsets all markers by 1px to align them on frame
boundaries, which causes the current time marker to be visible even with left: 0px.
We can exclude the current time marker without it being noticable during recording.

  • UserInterface/Views/TimelineOverview.css:
3:30 AM Changeset in webkit [188448] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebInspectorUI

Merge r188382 - REGRESSION (r188325): Web Inspector: Fix vertical spacing in CodeMirror
https://bugs.webkit.org/show_bug.cgi?id=147971

r188325 inceased line-height by 2px. Remove top and bottom 1px padding
to compensate for line-height changes.

In the feature we may highlight the backgroud of text tokens (e.g. for the
heatmap profiler) so we would want to get rid of the gaps between the lines
(caused by the paddind) regardless of this regression.

Reviewed by Timothy Hatcher.

  • UserInterface/Views/CodeMirrorOverrides.css:

(.CodeMirror pre):

1:47 AM Changeset in webkit [188447] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Fix the build with !ENABLE(MEDIA_STREAM) after r188385.

  • UIProcess/API/C/WKUserMediaPermissionRequest.cpp:

(WKUserMediaPermissionRequestDeviceNamesVideo):
(WKUserMediaPermissionRequestDeviceNamesAudio):

1:45 AM Changeset in webkit [188446] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Fix GTK+ build after r188386.

  • UIProcess/API/gtk/WebKitWindowProperties.cpp:

(webkitWindowPropertiesUpdateFromWebWindowFeatures):

12:30 AM Changeset in webkit [188445] by fpizlo@apple.com
  • 2 edits in trunk/Tools

Unreviewed, shorten another test that is timing out.

  • TestWebKitAPI/Tests/WTF/Lock.cpp:

(TestWebKitAPI::TEST):

Note: See TracTimeline for information about the timeline view.