Changeset 244621 in webkit
- Timestamp:
- Apr 24, 2019, 4:05:50 PM (7 years ago)
- Location:
- branches/safari-607-branch
- Files:
-
- 4 added
- 4 deleted
- 37 edited
-
ChangeLog (modified) (1 diff)
-
JSTests/ChangeLog (modified) (1 diff)
-
JSTests/stress/map-b3-licm-infinite-loop.js (added)
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/text/trailing-word-detection-expected.txt (added)
-
LayoutTests/fast/text/trailing-word-detection.html (added)
-
LayoutTests/fast/text/trailing-word-expected.html (deleted)
-
LayoutTests/fast/text/trailing-word.html (deleted)
-
LayoutTests/platform/gtk/TestExpectations (modified) (1 diff)
-
LayoutTests/platform/mac/fast/text/trailing-word-parse-expected.txt (deleted)
-
LayoutTests/platform/mac/fast/text/trailing-word-parse.html (deleted)
-
LayoutTests/platform/win/TestExpectations (modified) (1 diff)
-
PerformanceTests/ChangeLog (modified) (1 diff)
-
PerformanceTests/MotionMark/resources/debug-runner/motionmark.css (modified) (1 diff)
-
Source/JavaScriptCore/ChangeLog (modified) (1 diff)
-
Source/JavaScriptCore/Configurations/Version.xcconfig (modified) (1 diff)
-
Source/JavaScriptCore/b3/testb3.cpp (modified) (2 diffs)
-
Source/ThirdParty/libwebrtc/Configurations/Version.xcconfig (modified) (1 diff)
-
Source/WTF/ChangeLog (modified) (1 diff)
-
Source/WTF/WTF.xcodeproj/project.pbxproj (modified) (2 diffs)
-
Source/WTF/wtf/BackwardsGraph.h (modified) (3 diffs)
-
Source/WTF/wtf/SpanningTree.h (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Configurations/Version.xcconfig (modified) (1 diff)
-
Source/WebCore/PAL/ChangeLog (modified) (1 diff)
-
Source/WebCore/PAL/Configurations/Version.xcconfig (modified) (1 diff)
-
Source/WebCore/css/CSSProperties.json (modified) (1 diff)
-
Source/WebCore/page/DOMWindow.cpp (modified) (1 diff)
-
Source/WebCore/rendering/SimpleLineLayout.cpp (modified) (1 diff)
-
Source/WebCore/rendering/SimpleLineLayoutCoverage.cpp (modified) (1 diff)
-
Source/WebCore/rendering/SimpleLineLayoutCoverage.h (modified) (1 diff)
-
Source/WebCore/rendering/line/BreakingContext.h (modified) (23 diffs)
-
Source/WebCore/rendering/style/RenderStyle.h (modified) (2 diffs)
-
Source/WebCore/rendering/style/StyleRareInheritedData.cpp (modified) (3 diffs)
-
Source/WebCore/rendering/style/StyleRareInheritedData.h (modified) (1 diff)
-
Source/WebInspectorUI/ChangeLog (modified) (1 diff)
-
Source/WebInspectorUI/Configurations/Version.xcconfig (modified) (1 diff)
-
Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js (modified) (2 diffs)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/Configurations/Version.xcconfig (modified) (1 diff)
-
Source/WebKitLegacy/mac/ChangeLog (modified) (1 diff)
-
Source/WebKitLegacy/mac/Configurations/Version.xcconfig (modified) (1 diff)
-
Source/cmake/WebKitFeatures.cmake (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/Scripts/webkitperl/FeatureList.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-607-branch/ChangeLog
r244607 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244173. rdar://problem/281603964 5 1 2019-04-10 Alan Coon <alancoon@apple.com> 6 2 -
branches/safari-607-branch/JSTests/ChangeLog
r244608 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244122. rdar://problem/501326754 5 1 2019-04-09 Alan Coon <alancoon@apple.com> 6 2 -
branches/safari-607-branch/LayoutTests/ChangeLog
r244607 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244173. rdar://problem/281603964 5 2019-04-24 Alan Coon <alancoon@apple.com>6 7 Revert r244174. rdar://problem/281603968 9 1 2019-04-10 Alan Coon <alancoon@apple.com> 10 2 -
branches/safari-607-branch/LayoutTests/platform/gtk/TestExpectations
r244607 r244621 3159 3159 webkit.org/b/160248 fast/text/combining-mark-paint.html [ ImageOnlyFailure ] 3160 3160 webkit.org/b/160248 fast/text/synthetic-bold-transformed.html [ ImageOnlyFailure ] 3161 webkit.org/b/160248 fast/text/trailing-word .html [ ImageOnlyFailure ]3161 webkit.org/b/160248 fast/text/trailing-word-detection.html [ Failure ] 3162 3162 3163 3163 webkit.org/b/160249 fast/shrink-wrap/rect-shrink-wrap.html [ ImageOnlyFailure ] -
branches/safari-607-branch/LayoutTests/platform/win/TestExpectations
r244607 r244621 3001 3001 fast/text/combining-mark-paint.html [ ImageOnlyFailure ] 3002 3002 fast/text/synthetic-bold-transformed.html [ ImageOnlyFailure ] 3003 fast/text/trailing-word .html [ ImageOnlyFailure ]3003 fast/text/trailing-word-detection.html [ Failure ] 3004 3004 3005 3005 # TestRunner::addChromeInputField() and focusWebView() not implemented -
branches/safari-607-branch/PerformanceTests/ChangeLog
r244606 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244174. rdar://problem/281603964 5 1 2019-04-10 Alan Coon <alancoon@apple.com> 6 2 -
branches/safari-607-branch/PerformanceTests/MotionMark/resources/debug-runner/motionmark.css
r244606 r244621 210 210 color: hsl(11, 72%, 50%); 211 211 margin-bottom: 1em; 212 -apple-trailing-word: -apple-partially-balanced;213 212 } 214 213 -
branches/safari-607-branch/Source/JavaScriptCore/ChangeLog
r244608 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244122. rdar://problem/501326754 5 2019-04-24 Alan Coon <alancoon@apple.com>6 7 Revert r244173. rdar://problem/281603968 9 2019-04-24 Alan Coon <alancoon@apple.com>10 11 Revert r244174. rdar://problem/2816039612 13 1 2019-04-10 Alan Coon <alancoon@apple.com> 14 2 -
branches/safari-607-branch/Source/JavaScriptCore/Configurations/Version.xcconfig
r244605 r244621 23 23 24 24 MAJOR_VERSION = 607; 25 MINOR_VERSION = 2;26 TINY_VERSION = 6;25 MINOR_VERSION = 3; 26 TINY_VERSION = 1; 27 27 MICRO_VERSION = 0; 28 NANO_VERSION = 1;29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION) .$(MICRO_VERSION).$(NANO_VERSION);28 NANO_VERSION = 0; 29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION); 30 30 31 31 // The bundle version and short version string are set based on the current build configuration, see below. -
branches/safari-607-branch/Source/JavaScriptCore/b3/testb3.cpp
r244608 r244621 16326 16326 16327 16327 compileAndRun<void>(proc); 16328 } 16329 16330 void testInfiniteLoopDoesntCauseBadHoisting() 16331 { 16332 Procedure proc; 16333 if (proc.optLevel() < 2) 16334 return; 16335 BasicBlock* root = proc.addBlock(); 16336 BasicBlock* header = proc.addBlock(); 16337 BasicBlock* loadBlock = proc.addBlock(); 16338 BasicBlock* postLoadBlock = proc.addBlock(); 16339 16340 Value* arg = root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0); 16341 root->appendNewControlValue(proc, Jump, Origin(), header); 16342 16343 header->appendNewControlValue( 16344 proc, Branch, Origin(), 16345 header->appendNew<Value>(proc, Equal, Origin(), 16346 arg, 16347 header->appendNew<Const64Value>(proc, Origin(), 10)), header, loadBlock); 16348 16349 PatchpointValue* patchpoint = loadBlock->appendNew<PatchpointValue>(proc, Void, Origin()); 16350 patchpoint->effects = Effects::none(); 16351 patchpoint->effects.writesLocalState = true; // Don't DCE this. 16352 patchpoint->setGenerator( 16353 [&] (CCallHelpers& jit, const StackmapGenerationParams&) { 16354 // This works because we don't have callee saves. 16355 jit.emitFunctionEpilogue(); 16356 jit.ret(); 16357 }); 16358 16359 Value* badLoad = loadBlock->appendNew<MemoryValue>(proc, Load, Int64, Origin(), arg, 0); 16360 16361 loadBlock->appendNewControlValue( 16362 proc, Branch, Origin(), 16363 loadBlock->appendNew<Value>(proc, Equal, Origin(), 16364 badLoad, 16365 loadBlock->appendNew<Const64Value>(proc, Origin(), 45)), header, postLoadBlock); 16366 16367 postLoadBlock->appendNewControlValue(proc, Return, Origin(), badLoad); 16368 16369 // The patchpoint early ret() works because we don't have callee saves. 16370 auto code = compileProc(proc); 16371 RELEASE_ASSERT(!proc.calleeSaveRegisterAtOffsetList().size()); 16372 invoke<void>(*code, static_cast<uint64_t>(55)); // Shouldn't crash dereferncing 55. 16328 16373 } 16329 16374 … … 17899 17944 RUN(testLoopWithMultipleHeaderEdges()); 17900 17945 17946 RUN(testInfiniteLoopDoesntCauseBadHoisting()); 17947 17901 17948 if (isX86()) { 17902 17949 RUN(testBranchBitAndImmFusion(Identity, Int64, 1, Air::BranchTest32, Air::Arg::Tmp)); -
branches/safari-607-branch/Source/ThirdParty/libwebrtc/Configurations/Version.xcconfig
r244605 r244621 23 23 24 24 MAJOR_VERSION = 607; 25 MINOR_VERSION = 2;26 TINY_VERSION = 6;25 MINOR_VERSION = 3; 26 TINY_VERSION = 1; 27 27 MICRO_VERSION = 0; 28 NANO_VERSION = 1;29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION) .$(MICRO_VERSION).$(NANO_VERSION);28 NANO_VERSION = 0; 29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION); 30 30 31 31 // The bundle version and short version string are set based on the current build configuration, see below. -
branches/safari-607-branch/Source/WTF/ChangeLog
r244608 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244122. rdar://problem/501326754 5 1 2019-04-09 Alan Coon <alancoon@apple.com> 6 2 -
branches/safari-607-branch/Source/WTF/WTF.xcodeproj/project.pbxproj
r244608 r244621 389 389 70ECA60B1B02426800449739 /* SymbolImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolImpl.h; sourceTree = "<group>"; }; 390 390 70ECA60C1B02426800449739 /* UniquedStringImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniquedStringImpl.h; sourceTree = "<group>"; }; 391 79038E05224B05A7004C0738 /* SpanningTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpanningTree.h; sourceTree = "<group>"; }; 391 392 7936D6A91C99F8AE000D1AED /* SmallPtrSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SmallPtrSet.h; sourceTree = "<group>"; }; 392 393 793BFADD9CED44B8B9FBCA16 /* StdUnorderedMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StdUnorderedMap.h; sourceTree = "<group>"; }; … … 1078 1079 7936D6A91C99F8AE000D1AED /* SmallPtrSet.h */, 1079 1080 A30D412D1F0DE13F00B71954 /* SoftLinking.h */, 1081 79038E05224B05A7004C0738 /* SpanningTree.h */, 1080 1082 A8A4730D151A825B004123FF /* Spectrum.h */, 1081 1083 A8A4730E151A825B004123FF /* StackBounds.cpp */, -
branches/safari-607-branch/Source/WTF/wtf/BackwardsGraph.h
r244608 r244621 1 1 /* 2 * Copyright (C) 2016 Apple Inc. All rights reserved.2 * Copyright (C) 2016-2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 30 30 #include <wtf/Noncopyable.h> 31 31 #include <wtf/SingleRootGraph.h> 32 #include <wtf/SpanningTree.h> 32 33 #include <wtf/StdLibExtras.h> 33 34 … … 57 58 } 58 59 }; 60 61 { 62 // Loops are a form of terminality (you can loop forever). To have a loop, you need to 63 // have a back edge. An edge u->v is a back edge when u is a descendent of v in the 64 // DFS spanning tree of the Graph. 65 SpanningTree<Graph> spanningTree(graph); 66 for (unsigned i = 0; i < graph.numNodes(); ++i) { 67 if (typename Graph::Node node = graph.node(i)) { 68 for (typename Graph::Node successor : graph.successors(node)) { 69 if (spanningTree.isDescendent(node, successor)) { 70 addRootSuccessor(node); 71 break; 72 } 73 } 74 } 75 } 76 } 59 77 60 78 for (unsigned i = 0; i < graph.numNodes(); ++i) { -
branches/safari-607-branch/Source/WebCore/ChangeLog
r244609 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244120. rdar://problem/501326754 5 2019-04-24 Alan Coon <alancoon@apple.com>6 7 Revert r244173. rdar://problem/281603968 9 2019-04-24 Alan Coon <alancoon@apple.com>10 11 Revert r244174. rdar://problem/2816039612 13 1 2019-04-10 Alan Coon <alancoon@apple.com> 14 2 -
branches/safari-607-branch/Source/WebCore/Configurations/Version.xcconfig
r244605 r244621 23 23 24 24 MAJOR_VERSION = 607; 25 MINOR_VERSION = 2;26 TINY_VERSION = 6;25 MINOR_VERSION = 3; 26 TINY_VERSION = 1; 27 27 MICRO_VERSION = 0; 28 NANO_VERSION = 1;29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION) .$(MICRO_VERSION).$(NANO_VERSION);28 NANO_VERSION = 0; 29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION); 30 30 31 31 // The bundle version and short version string are set based on the current build configuration, see below. -
branches/safari-607-branch/Source/WebCore/PAL/ChangeLog
r244607 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244173. rdar://problem/281603964 5 2019-04-24 Alan Coon <alancoon@apple.com>6 7 Revert r244174. rdar://problem/281603968 9 1 2019-04-10 Alan Coon <alancoon@apple.com> 10 2 -
branches/safari-607-branch/Source/WebCore/PAL/Configurations/Version.xcconfig
r244605 r244621 23 23 24 24 MAJOR_VERSION = 607; 25 MINOR_VERSION = 2;26 TINY_VERSION = 6;25 MINOR_VERSION = 3; 26 TINY_VERSION = 1; 27 27 MICRO_VERSION = 0; 28 NANO_VERSION = 1;29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION) .$(MICRO_VERSION).$(NANO_VERSION);28 NANO_VERSION = 0; 29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION); 30 30 31 31 // The bundle version and short version string are set based on the current build configuration, see below. -
branches/safari-607-branch/Source/WebCore/css/CSSProperties.json
r244607 r244621 6710 6710 "enable-if": "ENABLE_CSS_TRAILING_WORD" 6711 6711 }, 6712 "status": "non-standard" 6712 "status": { 6713 "status": "non-standard", 6714 "comment": "Needed for feature-detecting the Safari browser. Implementation has no effect." 6715 } 6713 6716 }, 6714 6717 "-apple-pay-button-style": { -
branches/safari-607-branch/Source/WebCore/page/DOMWindow.cpp
r244609 r244621 489 489 if (m_performance) 490 490 m_performance->clearResourceTimings(); 491 492 JSDOMWindowBase::fireFrameClearedWatchpointsForWindow(this); 493 InspectorInstrumentation::frameWindowDiscarded(*frame(), this); 491 494 } 492 495 -
branches/safari-607-branch/Source/WebCore/rendering/SimpleLineLayout.cpp
r244607 r244621 241 241 if (style.nbspMode() != NBSPMode::Normal) 242 242 SET_REASON_AND_RETURN_IF_NEEDED(FlowHasWebKitNBSPMode, reasons, includeReasons); 243 #if ENABLE(CSS_TRAILING_WORD)244 if (style.trailingWord() != TrailingWord::Auto)245 SET_REASON_AND_RETURN_IF_NEEDED(FlowHasNonAutoTrailingWord, reasons, includeReasons);246 #endif247 243 if (style.hyphens() == Hyphens::Auto) { 248 244 auto textReasons = canUseForText(style.hyphenString(), style.fontCascade(), WTF::nullopt, false, includeReasons); -
branches/safari-607-branch/Source/WebCore/rendering/SimpleLineLayoutCoverage.cpp
r244607 r244621 136 136 stream << "line-break is not auto"; 137 137 break; 138 case FlowHasNonAutoTrailingWord:139 stream << "-apple-trailing-word is not auto";140 break;141 138 case FlowHasSVGFont: 142 139 stream << "SVG font"; -
branches/safari-607-branch/Source/WebCore/rendering/SimpleLineLayoutCoverage.h
r244607 r244621 67 67 FlowHasBorderFitLines = 1LLU << 29, 68 68 FlowHasNonAutoLineBreak = 1LLU << 30, 69 FlowHasNonAutoTrailingWord = 1LLU << 31,70 69 FlowHasSVGFont = 1LLU << 32, 71 70 FlowTextIsEmpty = 1LLU << 33, -
branches/safari-607-branch/Source/WebCore/rendering/line/BreakingContext.h
r244607 r244621 98 98 , m_resolver(resolver) 99 99 , m_current(resolver.position()) 100 #if ENABLE(CSS_TRAILING_WORD) 101 , m_lineBreakHistory(InlineIterator(resolver.position()), block.style().trailingWord() == TrailingWord::PartiallyBalanced ? 5 : 1) 102 #else 103 , m_lineBreakHistory(InlineIterator(resolver.position()), 1) 104 #endif 100 , m_lineBreak(resolver.position()) 105 101 , m_block(block) 106 102 , m_lastObject(m_current.renderer()) … … 135 131 136 132 RenderObject* currentObject() { return m_current.renderer(); } 137 InlineIterator lineBreak() { return m_lineBreak History.current(); }133 InlineIterator lineBreak() { return m_lineBreak; } 138 134 LineWidth& lineWidth() { return m_width; } 139 135 bool atEnd() { return m_atEnd; } … … 154 150 void commitAndUpdateLineBreakIfNeeded(); 155 151 InlineIterator handleEndOfLine(); 156 #if ENABLE(CSS_TRAILING_WORD)157 InlineIterator optimalLineBreakLocationForTrailingWord();158 #endif159 152 160 153 float computeAdditionalBetweenWordsWidth(RenderText&, TextLayout*, UChar, WordTrailingSpace&, HashSet<const Font*>& fallbackFonts, WordMeasurements&, const FontCascade&, bool isFixedPitch, unsigned lastSpace, float lastSpaceWordSpacing, float wordSpacingForWordMeasurement, unsigned offset); … … 163 156 { 164 157 if (m_width.fitsOnLine(ignoringTrailingSpace) || m_lastWS == WhiteSpace::NoWrap || m_hangsAtEnd) 165 m_lineBreak History.clear();158 m_lineBreak.clear(); 166 159 m_hangsAtEnd = false; 167 160 } … … 170 163 { 171 164 m_width.commit(); 172 m_lineBreak History.clear();165 m_lineBreak.clear(); 173 166 m_hangsAtEnd = false; 174 167 } … … 177 170 { 178 171 m_width.commit(); 179 m_lineBreak History.moveTo(object, offset, nextBreak);172 m_lineBreak.moveTo(object, offset, nextBreak); 180 173 m_hangsAtEnd = false; 181 174 } 182 175 183 176 private: 184 // This class keeps a sliding window of the past n locations for an InlineIterator.185 class InlineIteratorHistory : private Vector<InlineIterator, 1> {186 public:187 InlineIteratorHistory() = delete;188 InlineIteratorHistory(const InlineIterator& initial, size_t capacity)189 : m_capacity(capacity)190 {191 ASSERT(capacity > 0);192 this->append(initial);193 }194 195 void push(const WTF::Function<void(InlineIterator& modifyMe)>& updater)196 {197 ASSERT(!this->isEmpty());198 if (m_capacity != 1)199 this->insert(0, InlineIterator(this->at(0)));200 updater(this->at(0));201 if (m_capacity != 1)202 this->resize(m_capacity);203 }204 205 void update(const WTF::Function<void(InlineIterator& modifyMe)>& updater)206 {207 ASSERT(!this->isEmpty());208 updater(this->at(0));209 }210 211 RenderObject* renderer() const { return this->at(0).renderer(); }212 unsigned offset() const { return this->at(0).offset(); }213 Optional<unsigned> nextBreakablePosition() const { return this->at(0).nextBreakablePosition(); }214 bool atTextParagraphSeparator() const { return this->at(0).atTextParagraphSeparator(); }215 UChar previousInSameNode() const { return this->at(0).previousInSameNode(); }216 const InlineIterator& get(size_t i) const { return this->at(i); };217 const InlineIterator& current() const { return get(0); }218 size_t historyLength() const { return this->size(); }219 220 void moveTo(RenderObject& object, unsigned offset, Optional<unsigned> nextBreak = WTF::nullopt)221 {222 push([&](InlineIterator& modifyMe) {223 modifyMe.moveTo(object, offset, nextBreak);224 });225 }226 227 void increment()228 {229 update([](InlineIterator& modifyMe) {230 modifyMe.increment();231 });232 }233 234 void clear()235 {236 push([](InlineIterator& modifyMe) {237 modifyMe.clear();238 });239 }240 241 private:242 const size_t m_capacity;243 };244 245 177 LineBreaker& m_lineBreaker; 246 178 InlineBidiResolver& m_resolver; 247 179 248 180 InlineIterator m_current; 249 InlineIterator History m_lineBreakHistory;181 InlineIterator m_lineBreak; 250 182 InlineIterator m_startOfIgnoredSpaces; 251 183 … … 343 275 if (fitsOnLineOrHangsAtEnd()) { 344 276 RenderObject& br = *m_current.renderer(); 345 m_lineBreakHistory.push([&](InlineIterator& modifyMe) { 346 modifyMe.moveToStartOf(br); 347 modifyMe.increment(); 348 }); 277 m_lineBreak.moveToStartOf(br); 278 m_lineBreak.increment(); 349 279 350 280 // A <br> always breaks a line, so don't let the line be collapsed … … 465 395 if (m_floatsFitOnLine && m_width.fitsOnLineExcludingTrailingWhitespace(m_block.logicalWidthForFloat(floatingObject))) { 466 396 m_lineBreaker.positionNewFloatOnLine(floatingObject, m_lastFloatFromPreviousLine, m_lineInfo, m_width); 467 if (m_lineBreak History.renderer() == m_current.renderer()) {468 ASSERT(!m_lineBreak History.offset());469 m_lineBreak History.increment();397 if (m_lineBreak.renderer() == m_current.renderer()) { 398 ASSERT(!m_lineBreak.offset()); 399 m_lineBreak.increment(); 470 400 } 471 401 } else … … 753 683 combineRenderer.combineTextIfNeeded(); 754 684 // The length of the renderer's text may have changed. Increment stale iterator positions 755 if (iteratorIsBeyondEndOfRenderCombineText(m_lineBreak History.current(), combineRenderer)) {685 if (iteratorIsBeyondEndOfRenderCombineText(m_lineBreak, combineRenderer)) { 756 686 ASSERT(iteratorIsBeyondEndOfRenderCombineText(m_resolver.position(), combineRenderer)); 757 m_lineBreak History.increment();687 m_lineBreak.increment(); 758 688 m_resolver.increment(); 759 689 } … … 921 851 if (!m_width.fitsOnLineIncludingExtraWidth(charWidth)) { 922 852 lineWasTooWide = true; 923 m_lineBreakHistory.push([&](InlineIterator& modifyMe) { 924 modifyMe.moveTo(renderObject, m_current.offset(), m_current.nextBreakablePosition()); 925 m_lineBreaker.skipTrailingWhitespace(modifyMe, m_lineInfo); 926 }); 853 m_lineBreak.moveTo(renderObject, m_current.offset(), m_current.nextBreakablePosition()); 854 m_lineBreaker.skipTrailingWhitespace(m_lineBreak, m_lineInfo); 927 855 } 928 856 } … … 932 860 // bad so just don't allow it. 933 861 if (canHyphenate && !m_width.fitsOnLine() && (m_nextObject || !renderText.containsOnlyHTMLWhitespace(m_current.offset(), renderText.text().length() - m_current.offset()) || isLineEmpty)) { 934 m_lineBreakHistory.push([&](InlineIterator& modifyMe) { 935 tryHyphenating(renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.offset(), m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, modifyMe, m_current.nextBreakablePosition(), m_lineBreaker.m_hyphenated); 936 }); 862 tryHyphenating(renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.offset(), m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, m_lineBreak, m_current.nextBreakablePosition(), m_lineBreaker.m_hyphenated); 937 863 if (m_lineBreaker.m_hyphenated) { 938 864 m_atEnd = true; … … 940 866 } 941 867 } 942 if (m_lineBreak History.atTextParagraphSeparator()) {868 if (m_lineBreak.atTextParagraphSeparator()) { 943 869 if (!stoppedIgnoringSpaces && m_current.offset() > 0) 944 870 ensureCharacterGetsLineBox(m_lineWhitespaceCollapsingState, m_current); 945 m_lineBreak History.increment();871 m_lineBreak.increment(); 946 872 m_lineInfo.setPreviousLineBrokeCleanly(true); 947 wordMeasurement.endOffset = m_lineBreak History.offset();873 wordMeasurement.endOffset = m_lineBreak.offset(); 948 874 } 949 875 // Check if the last breaking position is a soft-hyphen. … … 951 877 Optional<unsigned> lastBreakingPositon; 952 878 const RenderObject* rendererAtBreakingPosition = nullptr; 953 if (m_lineBreak History.offset() || m_lineBreakHistory.nextBreakablePosition()) {954 lastBreakingPositon = m_lineBreak History.offset();955 rendererAtBreakingPosition = m_lineBreak History.renderer();879 if (m_lineBreak.offset() || m_lineBreak.nextBreakablePosition()) { 880 lastBreakingPositon = m_lineBreak.offset(); 881 rendererAtBreakingPosition = m_lineBreak.renderer(); 956 882 } else if (m_current.nextBreakablePosition() && m_current.nextBreakablePosition().value() <= m_current.offset()) { 957 883 // We might just be right after the soft-hyphen … … 974 900 } 975 901 } 976 if (m_lineBreak History.offset() && m_lineBreakHistory.offset() != (unsigned)wordMeasurement.endOffset && !wordMeasurement.width) {902 if (m_lineBreak.offset() && m_lineBreak.offset() != (unsigned)wordMeasurement.endOffset && !wordMeasurement.width) { 977 903 if (charWidth) { 978 wordMeasurement.endOffset = m_lineBreak History.offset();904 wordMeasurement.endOffset = m_lineBreak.offset(); 979 905 wordMeasurement.width = charWidth; 980 906 } … … 1000 926 ensureCharacterGetsLineBox(m_lineWhitespaceCollapsingState, m_current); 1001 927 commitLineBreakAtCurrentWidth(renderObject, m_current.offset(), m_current.nextBreakablePosition()); 1002 m_lineBreak History.increment();928 m_lineBreak.increment(); 1003 929 m_lineInfo.setPreviousLineBrokeCleanly(true); 1004 930 return true; … … 1017 943 // Remember this as a breakable position in case 1018 944 // adding the end width forces a break. 1019 m_lineBreak History.moveTo(renderObject, m_current.offset(), m_current.nextBreakablePosition());945 m_lineBreak.moveTo(renderObject, m_current.offset(), m_current.nextBreakablePosition()); 1020 946 midWordBreak &= (breakWords || breakAll); 1021 947 } … … 1082 1008 if (!m_currentCharacterIsWS && previousCharacterIsWS) { 1083 1009 if (m_autoWrap && m_currentStyle->breakOnlyAfterWhiteSpace()) 1084 m_lineBreak History.moveTo(renderObject, m_current.offset(), m_current.nextBreakablePosition());1010 m_lineBreak.moveTo(renderObject, m_current.offset(), m_current.nextBreakablePosition()); 1085 1011 } 1086 1012 … … 1125 1051 // no more content, and a hyphenated single word would end up on a line by itself. This looks 1126 1052 // bad so just don't allow it. 1127 if (canHyphenate && (m_nextObject || isLineEmpty)) { 1128 m_lineBreakHistory.push([&](InlineIterator& modifyMe) { 1129 tryHyphenating(renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.offset(), m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, modifyMe, m_current.nextBreakablePosition(), m_lineBreaker.m_hyphenated); 1130 }); 1131 } 1132 1133 if (!hyphenated && m_lineBreakHistory.previousInSameNode() == softHyphen && style.hyphens() != Hyphens::None) { 1053 if (canHyphenate && (m_nextObject || isLineEmpty)) 1054 tryHyphenating(renderText, font, style.locale(), consecutiveHyphenatedLines, m_blockStyle.hyphenationLimitLines(), style.hyphenationLimitBefore(), style.hyphenationLimitAfter(), lastSpace, m_current.offset(), m_width.currentWidth() - additionalTempWidth, m_width.availableWidth(), isFixedPitch, m_collapseWhiteSpace, lastSpaceWordSpacing, m_lineBreak, m_current.nextBreakablePosition(), m_lineBreaker.m_hyphenated); 1055 1056 if (!hyphenated && m_lineBreak.previousInSameNode() == softHyphen && style.hyphens() != Hyphens::None) { 1134 1057 hyphenated = true; 1135 1058 m_atEnd = true; … … 1255 1178 inline InlineIterator BreakingContext::handleEndOfLine() 1256 1179 { 1257 if (m_lineBreak History.current()== m_resolver.position()) {1258 if (!m_lineBreak History.renderer() || !m_lineBreakHistory.renderer()->isBR()) {1180 if (m_lineBreak == m_resolver.position()) { 1181 if (!m_lineBreak.renderer() || !m_lineBreak.renderer()->isBR()) { 1259 1182 // we just add as much as possible 1260 1183 if (m_blockStyle.whiteSpace() == WhiteSpace::Pre && !m_current.offset()) { … … 1263 1186 else 1264 1187 commitLineBreakClear(); 1265 } 1266 else if (m_lineBreakHistory.renderer()) { 1188 } else if (m_lineBreak.renderer()) { 1267 1189 // Don't ever break in the middle of a word if we can help it. 1268 1190 // There's no room at all. We just have to be on this line, … … 1272 1194 } 1273 1195 // make sure we consume at least one char/object. 1274 if (m_lineBreak History.current()== m_resolver.position())1275 m_lineBreak History.increment();1196 if (m_lineBreak == m_resolver.position()) 1197 m_lineBreak.increment(); 1276 1198 } else if (!m_current.offset() && !m_width.committedWidth() && m_width.uncommittedWidth() && !m_hadUncommittedWidthBeforeCurrent) { 1277 1199 // Do not push the current object to the next line, when this line has some content, but it is still considered empty. … … 1279 1201 // at the start of a line, if no width has been committed yet. 1280 1202 // Behave as if it was actually empty and consume at least one object. 1281 m_lineBreak History.increment();1203 m_lineBreak.increment(); 1282 1204 } 1283 1205 1284 1206 // Sanity check our whitespace collapsing transitions. 1285 TrailingObjects::CollapseFirstSpaceOrNot collapsed = checkWhitespaceCollapsingTransitions(m_lineWhitespaceCollapsingState, m_lineBreak History.current());1286 1287 m_trailingObjects.updateWhitespaceCollapsingTransitionsForTrailingBoxes(m_lineWhitespaceCollapsingState, m_lineBreak History.current(), collapsed);1207 TrailingObjects::CollapseFirstSpaceOrNot collapsed = checkWhitespaceCollapsingTransitions(m_lineWhitespaceCollapsingState, m_lineBreak); 1208 1209 m_trailingObjects.updateWhitespaceCollapsingTransitionsForTrailingBoxes(m_lineWhitespaceCollapsingState, m_lineBreak, collapsed); 1288 1210 1289 1211 // We might have made lineBreak an iterator that points past the end … … 1291 1213 // of the next object instead to avoid confusing the rest of the 1292 1214 // code. 1293 if (m_lineBreakHistory.offset()) { 1294 m_lineBreakHistory.update([](InlineIterator& modifyMe) { 1295 modifyMe.setOffset(modifyMe.offset() - 1); 1296 modifyMe.increment(); 1297 }); 1298 } 1299 1300 #if ENABLE(CSS_TRAILING_WORD) 1301 if (m_blockStyle.trailingWord() == TrailingWord::PartiallyBalanced) 1302 return optimalLineBreakLocationForTrailingWord(); 1303 #endif 1304 return m_lineBreakHistory.current(); 1305 } 1306 1307 #if ENABLE(CSS_TRAILING_WORD) 1308 inline InlineIterator BreakingContext::optimalLineBreakLocationForTrailingWord() 1309 { 1310 const unsigned longTrailingWordLength = 20; 1311 const float optimalTrailingLineRatio = 0.1; 1312 InlineIterator lineBreak = m_lineBreakHistory.current(); 1313 if (!lineBreak.renderer() || !m_lineInfo.isFirstLine() || bidiNextSkippingEmptyInlines(*lineBreak.root(), lineBreak.renderer()) || !is<RenderText>(lineBreak.renderer())) 1314 return lineBreak; 1315 RenderText& renderText = downcast<RenderText>(*lineBreak.renderer()); 1316 // Don't even bother measuring if our remaining line has many characters 1317 if (renderText.text().length() == lineBreak.offset() || renderText.text().length() - lineBreak.offset() > longTrailingWordLength) 1318 return lineBreak; 1319 bool canUseLineBreakShortcut = m_renderTextInfo.lineBreakIterator.mode() == LineBreakIteratorMode::Default; 1320 bool breakNBSP = m_autoWrap && m_currentStyle->nbspMode() == NBSPMode::Space; 1321 Optional<unsigned> nextBreakablePosition = lineBreak.nextBreakablePosition(); 1322 isBreakable(m_renderTextInfo.lineBreakIterator, lineBreak.offset() + 1, nextBreakablePosition, breakNBSP, canUseLineBreakShortcut, m_currentStyle->wordBreak() == WordBreak::KeepAll); 1323 if (!nextBreakablePosition || nextBreakablePosition.value() != renderText.text().length()) 1324 return lineBreak; 1325 const RenderStyle& style = lineStyle(renderText, m_lineInfo); 1326 const FontCascade& font = style.fontCascade(); 1327 HashSet<const Font*> dummyFonts; 1328 InlineIterator best = lineBreak; 1329 for (size_t i = 1; i < m_lineBreakHistory.historyLength(); ++i) { 1330 const InlineIterator& candidate = m_lineBreakHistory.get(i); 1331 if (candidate.renderer() != lineBreak.renderer()) 1332 return best; 1333 float width = textWidth(renderText, candidate.offset(), renderText.text().length() - candidate.offset(), font, 0, font.isFixedPitch(), m_collapseWhiteSpace, dummyFonts); 1334 if (width > m_width.availableWidth()) 1335 return best; 1336 if (width / m_width.availableWidth() > optimalTrailingLineRatio) // Subsequent line is long enough 1337 return candidate; 1338 best = candidate; 1339 } 1340 return best; 1341 } 1342 #endif 1343 1344 } 1215 if (m_lineBreak.offset()) { 1216 m_lineBreak.setOffset(m_lineBreak.offset() - 1); 1217 m_lineBreak.increment(); 1218 } 1219 1220 return m_lineBreak; 1221 } 1222 1223 } -
branches/safari-607-branch/Source/WebCore/rendering/style/RenderStyle.h
r244607 r244621 800 800 801 801 #if ENABLE(CSS_TRAILING_WORD) 802 TrailingWord trailingWord() const { return static_cast<TrailingWord>(m_rareInheritedData->trailingWord); }802 TrailingWord trailingWord() const { return TrailingWord::Auto; } 803 803 #endif 804 804 … … 1260 1260 1261 1261 #if ENABLE(CSS_TRAILING_WORD) 1262 void setTrailingWord(TrailingWord v) { SET_VAR(m_rareInheritedData, trailingWord, static_cast<unsigned>(v));}1262 void setTrailingWord(TrailingWord) { } 1263 1263 #endif 1264 1264 -
branches/safari-607-branch/Source/WebCore/rendering/style/StyleRareInheritedData.cpp
r244607 r244621 131 131 #if PLATFORM(IOS_FAMILY) 132 132 , touchCalloutEnabled(RenderStyle::initialTouchCalloutEnabled()) 133 #endif134 #if ENABLE(CSS_TRAILING_WORD)135 , trailingWord(static_cast<unsigned>(RenderStyle::initialTrailingWord()))136 133 #endif 137 134 , hangingPunctuation(RenderStyle::initialHangingPunctuation().toRaw()) … … 230 227 , touchCalloutEnabled(o.touchCalloutEnabled) 231 228 #endif 232 #if ENABLE(CSS_TRAILING_WORD)233 , trailingWord(o.trailingWord)234 #endif235 229 , hangingPunctuation(o.hangingPunctuation) 236 230 , paintOrder(o.paintOrder) … … 355 349 && lineSnap == o.lineSnap 356 350 && lineAlign == o.lineAlign 357 #if ENABLE(CSS_TRAILING_WORD)358 && trailingWord == o.trailingWord359 #endif360 351 && hangingPunctuation == o.hangingPunctuation 361 352 && paintOrder == o.paintOrder -
branches/safari-607-branch/Source/WebCore/rendering/style/StyleRareInheritedData.h
r244607 r244621 146 146 #endif 147 147 148 #if ENABLE(CSS_TRAILING_WORD)149 unsigned trailingWord : 1;150 #endif151 152 148 unsigned hangingPunctuation : 4; 153 149 -
branches/safari-607-branch/Source/WebInspectorUI/ChangeLog
r244607 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244173. rdar://problem/281603964 5 1 2019-04-10 Alan Coon <alancoon@apple.com> 6 2 -
branches/safari-607-branch/Source/WebInspectorUI/Configurations/Version.xcconfig
r244605 r244621 1 1 MAJOR_VERSION = 607; 2 MINOR_VERSION = 2;3 TINY_VERSION = 6;2 MINOR_VERSION = 3; 3 TINY_VERSION = 1; 4 4 MICRO_VERSION = 0; 5 NANO_VERSION = 1;6 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION) .$(MICRO_VERSION).$(NANO_VERSION);5 NANO_VERSION = 0; 6 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION); 7 7 8 8 // The system version prefix is based on the current system version. -
branches/safari-607-branch/Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js
r244607 r244621 156 156 // Compatibility (iOS 12): `inherited` didn't exist on `CSSPropertyInfo` 157 157 "-apple-color-filter", 158 "-apple-trailing-word",159 158 "-webkit-animation-trigger", 160 159 "-webkit-aspect-ratio", … … 788 787 "plain", "buy", "set-up", "donate", "check-out", "book", "subscribe", 789 788 ], 790 "-apple-trailing-word": [791 "auto", "-webkit-partially-balanced",792 ],793 789 "-webkit-alt": [ 794 790 "attr()", -
branches/safari-607-branch/Source/WebKit/ChangeLog
r244607 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244173. rdar://problem/281603964 5 2019-04-24 Alan Coon <alancoon@apple.com>6 7 Revert r244174. rdar://problem/281603968 9 1 2019-04-19 Kocsen Chung <kocsen_chung@apple.com> 10 2 -
branches/safari-607-branch/Source/WebKit/Configurations/Version.xcconfig
r244605 r244621 23 23 24 24 MAJOR_VERSION = 607; 25 MINOR_VERSION = 2;26 TINY_VERSION = 6;25 MINOR_VERSION = 3; 26 TINY_VERSION = 1; 27 27 MICRO_VERSION = 0; 28 NANO_VERSION = 1;29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION) .$(MICRO_VERSION).$(NANO_VERSION);28 NANO_VERSION = 0; 29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION); 30 30 31 31 // The bundle version and short version string are set based on the current build configuration, see below. -
branches/safari-607-branch/Source/WebKitLegacy/mac/ChangeLog
r244607 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244173. rdar://problem/281603964 5 2019-04-24 Alan Coon <alancoon@apple.com>6 7 Revert r244174. rdar://problem/281603968 9 1 2019-04-10 Alan Coon <alancoon@apple.com> 10 2 -
branches/safari-607-branch/Source/WebKitLegacy/mac/Configurations/Version.xcconfig
r244605 r244621 23 23 24 24 MAJOR_VERSION = 607; 25 MINOR_VERSION = 2;26 TINY_VERSION = 6;25 MINOR_VERSION = 3; 26 TINY_VERSION = 1; 27 27 MICRO_VERSION = 0; 28 NANO_VERSION = 1;29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION) .$(MICRO_VERSION).$(NANO_VERSION);28 NANO_VERSION = 0; 29 FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION); 30 30 31 31 // The bundle version and short version string are set based on the current build configuration, see below. -
branches/safari-607-branch/Source/cmake/WebKitFeatures.cmake
r244607 r244621 109 109 WEBKIT_OPTION_DEFINE(ENABLE_CSS_SCROLL_SNAP "Toggle CSS snap scroll support" PRIVATE OFF) 110 110 WEBKIT_OPTION_DEFINE(ENABLE_CSS_SELECTORS_LEVEL4 "Toggle CSS Selectors Level 4 support" PRIVATE ON) 111 WEBKIT_OPTION_DEFINE(ENABLE_CSS_TRAILING_WORD "Toggle CSS trailing word support" PRIVATE OFF)112 111 WEBKIT_OPTION_DEFINE(ENABLE_CURSOR_VISIBILITY "Toggle cursor visibility support" PRIVATE OFF) 113 112 WEBKIT_OPTION_DEFINE(ENABLE_CUSTOM_SCHEME_HANDLER "Toggle Custom Scheme Handler support" PRIVATE OFF) -
branches/safari-607-branch/Tools/ChangeLog
r244607 r244621 1 2019-04-24 Alan Coon <alancoon@apple.com>2 3 Revert r244173. rdar://problem/281603964 5 2019-04-24 Alan Coon <alancoon@apple.com>6 7 Revert r244174. rdar://problem/281603968 9 1 2019-04-17 Ryan Haddad <ryanhaddad@apple.com> 10 2 -
branches/safari-607-branch/Tools/Scripts/webkitperl/FeatureList.pm
r244607 r244621 263 263 define => "ENABLE_CSS_SELECTORS_LEVEL4", value => \$cssSelectorsLevel4Support }, 264 264 265 { option => "css-trailing-word", desc => "Toggle CSS trailing word support",266 define => "ENABLE_CSS_TRAILING_WORD", value => \$cssTrailingWordSupport },267 268 265 { option => "cursor-visibility", desc => "Toggle cursor visibility support", 269 266 define => "ENABLE_CURSOR_VISIBILITY", value => \$cursorVisibilitySupport },
Note:
See TracChangeset
for help on using the changeset viewer.