| Index: third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp | 
| diff --git a/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp b/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp | 
| index abc82dee2f29018b99e3da56fcc5dfa82b69e771..e05f7832d4f5128459ace432869976ce6e0b743a 100644 | 
| --- a/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp | 
| +++ b/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp | 
| @@ -58,85 +58,23 @@ void ListMarkerPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pai | 
| return; | 
| } | 
|  | 
| -    if (m_layoutListMarker.selectionState() != SelectionNone) { | 
| +    if (!RuntimeEnabledFeatures::selectionPaintingWithoutSelectionGapsEnabled() | 
| +        && m_layoutListMarker.selectionState() != SelectionNone) { | 
| LayoutRect selRect = m_layoutListMarker.localSelectionRect(); | 
| selRect.moveBy(boxOrigin); | 
| context->fillRect(pixelSnappedIntRect(selRect), m_layoutListMarker.listItem()->selectionBackgroundColor()); | 
| } | 
|  | 
| +    // TODO(wkorman): Do we still need all of these if we use pure text? | 
| const Color color(m_layoutListMarker.resolveColor(CSSPropertyColor)); | 
| context->setStrokeColor(color); | 
| context->setStrokeStyle(SolidStroke); | 
| context->setStrokeThickness(1.0f); | 
| context->setFillColor(color); | 
|  | 
| -    EListStyleType type = m_layoutListMarker.style()->listStyleType(); | 
| -    switch (type) { | 
| -    case Disc: | 
| -        context->fillEllipse(marker); | 
| +    EListStyleType listStyle = m_layoutListMarker.style()->listStyleType(); | 
| +    if (listStyle == NoneListStyle) | 
| return; | 
| -    case Circle: | 
| -        context->strokeEllipse(marker); | 
| -        return; | 
| -    case Square: | 
| -        context->fillRect(marker); | 
| -        return; | 
| -    case NoneListStyle: | 
| -        return; | 
| -    case ArabicIndic: | 
| -    case Armenian: | 
| -    case Bengali: | 
| -    case Cambodian: | 
| -    case CJKIdeographic: | 
| -    case CjkEarthlyBranch: | 
| -    case CjkHeavenlyStem: | 
| -    case DecimalLeadingZero: | 
| -    case DecimalListStyle: | 
| -    case Devanagari: | 
| -    case EthiopicHalehame: | 
| -    case EthiopicHalehameAm: | 
| -    case EthiopicHalehameTiEr: | 
| -    case EthiopicHalehameTiEt: | 
| -    case Georgian: | 
| -    case Gujarati: | 
| -    case Gurmukhi: | 
| -    case Hebrew: | 
| -    case Hangul: | 
| -    case HangulConsonant: | 
| -    case KoreanHangulFormal: | 
| -    case KoreanHanjaFormal: | 
| -    case KoreanHanjaInformal: | 
| -    case Hiragana: | 
| -    case HiraganaIroha: | 
| -    case Kannada: | 
| -    case Katakana: | 
| -    case KatakanaIroha: | 
| -    case Khmer: | 
| -    case Lao: | 
| -    case LowerAlpha: | 
| -    case LowerArmenian: | 
| -    case LowerGreek: | 
| -    case LowerLatin: | 
| -    case LowerRoman: | 
| -    case Malayalam: | 
| -    case Mongolian: | 
| -    case Myanmar: | 
| -    case Oriya: | 
| -    case Persian: | 
| -    case SimpChineseFormal: | 
| -    case SimpChineseInformal: | 
| -    case Telugu: | 
| -    case Thai: | 
| -    case Tibetan: | 
| -    case TradChineseFormal: | 
| -    case TradChineseInformal: | 
| -    case UpperAlpha: | 
| -    case UpperArmenian: | 
| -    case UpperLatin: | 
| -    case UpperRoman: | 
| -    case Urdu: | 
| -        break; | 
| -    } | 
| if (m_layoutListMarker.text().isEmpty()) | 
| return; | 
|  | 
| @@ -171,9 +109,18 @@ void ListMarkerPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pai | 
| textRun.setText(reversedText.toString()); | 
| } | 
|  | 
| -    const UChar suffix = m_layoutListMarker.listMarkerSuffix(type, m_layoutListMarker.listItem()->value()); | 
| -    UChar suffixStr[2] = { suffix, static_cast<UChar>(' ') }; | 
| -    TextRun suffixRun = constructTextRun(font, suffixStr, 2, m_layoutListMarker.styleRef(), m_layoutListMarker.style()->direction()); | 
| +    const UChar suffix = m_layoutListMarker.listMarkerSuffix(listStyle, m_layoutListMarker.listItem()->value()); | 
| +    UChar suffixStr[2]; | 
| +    suffixStr[0] = suffix; | 
| +    int suffixLength = 1; | 
| +    // For lists with symbol style, the suffix is a space. For language styles, the suffix is a | 
| +    // language-specific character which is then followed by an additional space. | 
| +    // TODO(wkorman): Review everywhere we do this and see if we can consolidate logic. | 
| +    if (m_layoutListMarker.simplifiedListStyle() == LayoutListMarker::LanguageSimpleStyle) { | 
| +        suffixStr[1] = static_cast<UChar>(' '); | 
| +        suffixLength = 2; | 
| +    } | 
| +    TextRun suffixRun = constructTextRun(font, suffixStr, suffixLength, m_layoutListMarker.styleRef(), m_layoutListMarker.style()->direction()); | 
| TextRunPaintInfo suffixRunInfo(suffixRun); | 
| suffixRunInfo.bounds = marker; | 
|  | 
|  |