<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[165848] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/165848">165848</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2014-03-18 14:57:44 -0700 (Tue, 18 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Reduce use of deprecatedCharacters in WebCore
https://bugs.webkit.org/show_bug.cgi?id=130318

Reviewed by Andreas Kling.

Source/WebCore:

* Modules/indexeddb/IDBKeyPath.cpp:
(WebCore::IDBKeyPathLexer::IDBKeyPathLexer): Use StringView for parsing.
(WebCore::IDBKeyPathLexer::lex): Ditto.
(WebCore::IDBKeyPathLexer::lexIdentifier): Ditto.

* Modules/indexeddb/leveldb/IDBLevelDBCoding.cpp:
(WebCore::IDBLevelDBCoding::encodeString): Index directly into string instead of
using deprecatedCharacters.

* Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:
(WebCore::ThreadableWebSocketChannelClientWrapper::setSubprotocol): Use
StringView::getCharactersWithUpconvert.
(WebCore::ThreadableWebSocketChannelClientWrapper::setExtensions): Ditto.

* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper arrayOfTextForTextMarkers:attributed:]):
Use operator NSString * instead of explicitly creating an NSString.

* bindings/js/SerializedScriptValue.cpp:
(WebCore::writeLittleEndianUInt16): Added.
(WebCore::CloneSerializer::serialize): Added a separate code path for 8-bit strings.
(WebCore::CloneSerializer::write): Ditto.

* bindings/objc/WebScriptObject.mm:
(+[WebScriptObject _convertValueToObjcValue:JSC::originRootObject:rootObject:]):
Use operator NSString * instead of explicitly creating an NSString.

* dom/Document.cpp:
(WebCore::Document::parseQualifiedName): Index directly into string instead of
using deprecatedCharacters.
* editing/CompositeEditCommand.cpp:
(WebCore::containsOnlyWhitespace): Ditto.
* editing/SmartReplace.cpp:
(WebCore::addAllCodePoints): Ditto.
(WebCore::getSmartSet): Use StringView::upconvertedCharacters.

* editing/TextIterator.cpp:
(WebCore::foldQuoteMarksAndSoftHyphens): Changed to return a value so it can be
used in initialization rather than assignment.
(WebCore::SearchBuffer::SearchBuffer): Use StringView::upconvertedCharacters.

* editing/TypingCommand.cpp:
(WebCore::TypingCommand::insertText): Index directly into string instead of using
deprecatedCharacters.
* editing/VisiblePosition.cpp:
(WebCore::VisiblePosition::characterAfter): Ditto.
* editing/VisibleUnits.cpp:
(WebCore::startOfParagraph): Ditto.
(WebCore::endOfParagraph): Ditto.

* fileapi/WebKitBlobBuilder.cpp:
(WebCore::BlobBuilder::append): Pass a StringView to TextEncoding::encode.

* html/BaseDateAndTimeInputType.cpp:
(WebCore::BaseDateAndTimeInputType::parseToDateComponents): Use
StringView::upconvertedCharacters.

* html/FormDataList.cpp:
(WebCore::FormDataList::appendString): Pass a StringView to TextEncoding::encode.

* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::normalizeSpaces): Use StringView::getCharactersWithUpconvert.

* html/parser/HTMLParserIdioms.cpp:
(WebCore::stripLeadingAndTrailingHTMLSpaces): Use characters16 for a code path
that already handled 8-bit characters separately.
(WebCore::parseHTMLNonNegativeInteger): Ditto.
(WebCore::parseDescriptors): Added an 8-bit code path.

* inspector/InspectorStyleSheet.cpp:
(WebCore::InspectorStyle::newLineAndWhitespaceDelimiters): Index directly into
string instead of using deprecatedCharacters.
* inspector/InspectorStyleTextEditor.cpp:
(WebCore::InspectorStyleTextEditor::insertProperty): Ditto.
(WebCore::InspectorStyleTextEditor::internalReplaceProperty): Ditto.

* page/ContentSecurityPolicy.cpp:
(WebCore::isSourceListNone): Use StringView::upconvertedCharacters.
(WebCore::CSPSourceList::parse): Ditto.
(WebCore::NonceDirective::parse): Ditto.
(WebCore::MediaListDirective::parse): Ditto.
(WebCore::CSPDirectiveList::parse): Ditto.
(WebCore::CSPDirectiveList::parseReportURI): Ditto.
(WebCore::CSPDirectiveList::parseReflectedXSS): Ditto.
(WebCore::ContentSecurityPolicy::didReceiveHeader): Ditto.

* page/PageSerializer.cpp:
(WebCore::PageSerializer::serializeFrame): Pass a StringView into
TextEncoding::encode.
(WebCore::PageSerializer::serializeCSSStyleSheet): Ditto.

* platform/Length.cpp:
(WebCore::countCharacter): Index directly into string instead of using
deprecatedCharacters. Also changed to take a StringImpl&amp;.
(WebCore::newCoordsArray): Ditto. Call countCharacter the new way, and
use StringView::upconvertedCharacters.
(WebCore::newLengthArray): Ditto.

* platform/LinkHash.cpp:
(WebCore::visitedLinkHash): Use characters16 for the 16-bit path.
Also removed unused visitedURL function.
* platform/LinkHash.h: Removed unused visitedURL function.

* platform/SharedBuffer.cpp:
(WebCore::utf8Buffer): Added an 8-bit code path.
* platform/URL.cpp:
(WebCore::URL::port): Ditto.
(WebCore::encodeRelativeString): Use StringView to call TextEncoding::encode.

* platform/graphics/Color.cpp:
(WebCore::Color::parseHexColor): Use characters16 in the 16-bit path.
(WebCore::Color::Color): Ditto.

* platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:
(WebCore::harfBuzzGetGlyph): Use StringView to call TextEncoding::encode.

* platform/graphics/StringTruncator.cpp:
(WebCore::centerTruncateToBuffer): Use StringView::getCharactersWithUpconvert.
(WebCore::rightTruncateToBuffer): Ditto.
(WebCore::rightClipToCharacterBuffer): Ditto.
(WebCore::rightClipToWordBuffer): Ditto.
(WebCore::leftTruncateToBuffer): Ditto.
(WebCore::truncateString): Ditto.

* platform/graphics/TextRun.h:
(WebCore::TextRun::TextRun): Use characters16 in the 16-bit code path.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
Use StringView::upconvertedCharacters.

* platform/network/DataURL.cpp:
(WebCore::handleDataURL): Use StringView to call TextEncoding::encode.
* platform/network/FormDataBuilder.cpp:
(WebCore::FormDataBuilder::addFilenameToMultiPartHeader): Ditto.

* platform/sql/SQLiteStatement.cpp:
(WebCore::SQLiteStatement::bindBlob): Use StringView::upconvertedCharacters.
(WebCore::SQLiteStatement::bindText): Ditto.

* platform/text/DecodeEscapeSequences.h:
(WebCore::Unicode16BitEscapeSequence::decodeRun): Changed to take a StringView.
(WebCore::URLEscapeSequence::decodeRun): Ditto.
(WebCore::decodeEscapeSequences): Pass StringView to decodeRun.

* platform/text/Hyphenation.cpp:
(WebCore::lastHyphenLocation): Take a StringView.
* platform/text/Hyphenation.h: Make lastHyphenLocation take a StringView.

* platform/text/TextBreakIterator.cpp:
(WebCore::initializeIteratorWithRules): Use StringView::upconvertedCharacters.

* platform/text/TextEncoding.cpp:
(WebCore::TextEncoding::encode): Use StringView::upconvertedCharacters.
Change argument type to StringView.
* platform/text/TextEncoding.h: Ditto.

* platform/text/TextEncodingRegistry.cpp:
(WebCore::atomicCanonicalTextEncodingName): Use characters16 for the 16-bit path.

* platform/text/cf/HyphenationCF.cpp:
(WebCore::lastHyphenLocation): Use StringView::text.createCFStringWithoutCopying.
Change argument type to StringView.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::constructTextRun): Use characters16 for the 16-bit path.

* rendering/RenderCombineText.cpp:
(WebCore::RenderCombineText::width): Removed check for null characters pointer,
since the pointer will never be null, and even if it was there would be no need
for an early exit.

* rendering/RenderText.cpp:
(WebCore::maxWordFragmentWidth): Take a StringView.
(WebCore::RenderText::computePreferredLogicalWidths): Pass in a StringView.
* rendering/line/BreakingContextInlineHeaders.h:
(WebCore::tryHyphenating): Ditto.

* rendering/svg/SVGTextLayoutEngine.cpp:
(WebCore::SVGTextLayoutEngine::layoutTextOnLineOrPath): Use
StringView::upconvertedCharacters.

* rendering/svg/SVGTextMetrics.cpp:
(WebCore::SVGTextMetrics::SVGTextMetrics): Use String::substring.

* svg/SVGAngle.cpp:
(WebCore::SVGAngle::setValueAsString): Use StringView::upconvertedCharacters.
* svg/SVGAnimateMotionElement.cpp:
(WebCore::parsePoint): Ditto.
* svg/SVGAnimationElement.cpp:
(WebCore::parseKeySplines): Ditto.
* svg/SVGFitToViewBox.cpp:
(WebCore::SVGFitToViewBox::parseViewBox): Ditto.

* svg/SVGFontData.cpp:
(WebCore::SVGFontData::applySVGGlyphSelection): Pass StringView to
createStringWIthMirroredCharacters.
(WebCore::createStringWithMirroredCharacters): Changed to use StringView and
use indexing into that instead of a characters pointer.

* svg/SVGFontData.h: Removed createStringWithMirroredCharacters member function,
since it has nothing to do with the SVGFontData object. Now it's just a private
helper function in the SVGFontData.cpp source file.

* svg/SVGFontElement.cpp:
(WebCore::SVGFontElement::registerLigaturesInGlyphCache): Index into the string
instead of using deprecatedCharacters.

* svg/SVGGlyphMap.h:
(WebCore::SVGGlyphMap::addGlyph): Use StringView::upconvertedCharacters.
(WebCore::SVGGlyphMap::collectGlyphsForString): Ditto.
* svg/SVGGlyphRefElement.cpp:
(WebCore::SVGGlyphRefElement::parseAttribute): Ditto.
* svg/SVGLength.cpp:
(WebCore::SVGLength::setValueAsString): Ditto.
* svg/SVGLengthList.cpp:
(WebCore::SVGLengthList::parse): Ditto.
* svg/SVGNumberList.cpp:
(WebCore::SVGNumberList::parse): Ditto.
* svg/SVGParserUtilities.cpp:
(WebCore::parseNumberFromString): Ditto.
(WebCore::parseNumberOptionalNumber): Ditto.
(WebCore::parseRect): Ditto.
(WebCore::pointsListFromSVGData): Ditto.
(WebCore::parseGlyphName): Ditto.
(WebCore::parseKerningUnicodeString): Ditto.
(WebCore::parseDelimitedString): Ditto.
* svg/SVGPreserveAspectRatio.cpp:
(WebCore::SVGPreserveAspectRatio::parse): Ditto.
* svg/SVGStringList.cpp:
(WebCore::SVGStringList::parse): Ditto.
* svg/SVGTransformList.cpp:
(WebCore::SVGTransformList::parse): Ditto.
* svg/SVGTransformable.cpp:
(WebCore::SVGTransformable::parseTransformType): Ditto.
* svg/SVGViewSpec.cpp:
(WebCore::SVGViewSpec::parseViewSpec): Ditto.
* svg/SVGZoomAndPan.h:
(WebCore::SVGZoomAndPan::parseAttribute): Ditto.

* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::send): Pass a StringView to TextEncoding::encode.

* xml/XSLStyleSheetLibxslt.cpp:
(WebCore::XSLStyleSheet::parseString): Use StringView::upconvertedCharacters.

Source/WTF:

* wtf/text/WTFString.h: Export another overload of charactersToFloat since it's used
in WebCore now.

* wtf/text/cf/StringViewCF.cpp: Change so this can build on Windows.

* WTF.vcxproj/WTF.vcxproj: Added StringViewCF.cpp.
* WTF.vcxproj/WTF.vcxproj.filters: Added StringViewCF.cpp.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFWTFvcxprojWTFvcxproj">trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj</a></li>
<li><a href="#trunkSourceWTFWTFvcxprojWTFvcxprojfilters">trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters</a></li>
<li><a href="#trunkSourceWTFwtftextWTFStringh">trunk/Source/WTF/wtf/text/WTFString.h</a></li>
<li><a href="#trunkSourceWTFwtftextcfStringViewCFcpp">trunk/Source/WTF/wtf/text/cf/StringViewCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBKeyPathcpp">trunk/Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbleveldbIDBLevelDBCodingcpp">trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBLevelDBCoding.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelClientWrappercpp">trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityiosWebAccessibilityObjectWrapperIOSmm">trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm</a></li>
<li><a href="#trunkSourceWebCorebindingsjsSerializedScriptValuecpp">trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsobjcWebScriptObjectmm">trunk/Source/WebCore/bindings/objc/WebScriptObject.mm</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingCompositeEditCommandcpp">trunk/Source/WebCore/editing/CompositeEditCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingSmartReplacecpp">trunk/Source/WebCore/editing/SmartReplace.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingTextIteratorcpp">trunk/Source/WebCore/editing/TextIterator.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingTypingCommandcpp">trunk/Source/WebCore/editing/TypingCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingVisiblePositioncpp">trunk/Source/WebCore/editing/VisiblePosition.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingVisibleUnitscpp">trunk/Source/WebCore/editing/VisibleUnits.cpp</a></li>
<li><a href="#trunkSourceWebCorefileapiWebKitBlobBuildercpp">trunk/Source/WebCore/fileapi/WebKitBlobBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlBaseDateAndTimeInputTypecpp">trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlFormDataListcpp">trunk/Source/WebCore/html/FormDataList.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dcpp">trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlparserHTMLParserIdiomscpp">trunk/Source/WebCore/html/parser/HTMLParserIdioms.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorStyleSheetcpp">trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorStyleTextEditorcpp">trunk/Source/WebCore/inspector/InspectorStyleTextEditor.cpp</a></li>
<li><a href="#trunkSourceWebCorepageContentSecurityPolicycpp">trunk/Source/WebCore/page/ContentSecurityPolicy.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePageSerializercpp">trunk/Source/WebCore/page/PageSerializer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformLengthcpp">trunk/Source/WebCore/platform/Length.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformLinkHashcpp">trunk/Source/WebCore/platform/LinkHash.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformLinkHashh">trunk/Source/WebCore/platform/LinkHash.h</a></li>
<li><a href="#trunkSourceWebCoreplatformSharedBuffercpp">trunk/Source/WebCore/platform/SharedBuffer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformURLcpp">trunk/Source/WebCore/platform/URL.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsColorcpp">trunk/Source/WebCore/platform/graphics/Color.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsStringTruncatorcpp">trunk/Source/WebCore/platform/graphics/StringTruncator.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsTextRunh">trunk/Source/WebCore/platform/graphics/TextRun.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsharfbuzzHarfBuzzFaceCairocpp">trunk/Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkDataURLcpp">trunk/Source/WebCore/platform/network/DataURL.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkFormDataBuildercpp">trunk/Source/WebCore/platform/network/FormDataBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformsqlSQLiteStatementcpp">trunk/Source/WebCore/platform/sql/SQLiteStatement.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformtextDecodeEscapeSequencesh">trunk/Source/WebCore/platform/text/DecodeEscapeSequences.h</a></li>
<li><a href="#trunkSourceWebCoreplatformtextHyphenationcpp">trunk/Source/WebCore/platform/text/Hyphenation.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformtextHyphenationh">trunk/Source/WebCore/platform/text/Hyphenation.h</a></li>
<li><a href="#trunkSourceWebCoreplatformtextTextBreakIteratorcpp">trunk/Source/WebCore/platform/text/TextBreakIterator.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformtextTextEncodingcpp">trunk/Source/WebCore/platform/text/TextEncoding.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformtextTextEncodingh">trunk/Source/WebCore/platform/text/TextEncoding.h</a></li>
<li><a href="#trunkSourceWebCoreplatformtextTextEncodingRegistrycpp">trunk/Source/WebCore/platform/text/TextEncodingRegistry.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformtextcfHyphenationCFcpp">trunk/Source/WebCore/platform/text/cf/HyphenationCF.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockcpp">trunk/Source/WebCore/rendering/RenderBlock.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderCombineTextcpp">trunk/Source/WebCore/rendering/RenderCombineText.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTextcpp">trunk/Source/WebCore/rendering/RenderText.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderinglineBreakingContextInlineHeadersh">trunk/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgSVGTextLayoutEnginecpp">trunk/Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgSVGTextMetricscpp">trunk/Source/WebCore/rendering/svg/SVGTextMetrics.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnglecpp">trunk/Source/WebCore/svg/SVGAngle.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimateMotionElementcpp">trunk/Source/WebCore/svg/SVGAnimateMotionElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimationElementcpp">trunk/Source/WebCore/svg/SVGAnimationElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFitToViewBoxcpp">trunk/Source/WebCore/svg/SVGFitToViewBox.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFontDatacpp">trunk/Source/WebCore/svg/SVGFontData.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFontDatah">trunk/Source/WebCore/svg/SVGFontData.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFontElementcpp">trunk/Source/WebCore/svg/SVGFontElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGlyphMaph">trunk/Source/WebCore/svg/SVGGlyphMap.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGlyphRefElementcpp">trunk/Source/WebCore/svg/SVGGlyphRefElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLengthcpp">trunk/Source/WebCore/svg/SVGLength.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLengthListcpp">trunk/Source/WebCore/svg/SVGLengthList.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGNumberListcpp">trunk/Source/WebCore/svg/SVGNumberList.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGParserUtilitiescpp">trunk/Source/WebCore/svg/SVGParserUtilities.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPreserveAspectRatiocpp">trunk/Source/WebCore/svg/SVGPreserveAspectRatio.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGStringListcpp">trunk/Source/WebCore/svg/SVGStringList.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTransformListcpp">trunk/Source/WebCore/svg/SVGTransformList.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTransformablecpp">trunk/Source/WebCore/svg/SVGTransformable.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGViewSpeccpp">trunk/Source/WebCore/svg/SVGViewSpec.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGZoomAndPanh">trunk/Source/WebCore/svg/SVGZoomAndPan.h</a></li>
<li><a href="#trunkSourceWebCorexmlXMLHttpRequestcpp">trunk/Source/WebCore/xml/XMLHttpRequest.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXSLStyleSheetLibxsltcpp">trunk/Source/WebCore/xml/XSLStyleSheetLibxslt.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WTF/ChangeLog        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2014-03-18  Darin Adler  &lt;darin@apple.com&gt;
+
+        Reduce use of deprecatedCharacters in WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=130318
+
+        Reviewed by Andreas Kling.
+
+        * wtf/text/WTFString.h: Export another overload of charactersToFloat since it's used
+        in WebCore now.
+
+        * wtf/text/cf/StringViewCF.cpp: Change so this can build on Windows.
+
+        * WTF.vcxproj/WTF.vcxproj: Added StringViewCF.cpp.
+        * WTF.vcxproj/WTF.vcxproj.filters: Added StringViewCF.cpp.
+
</ins><span class="cx"> 2014-03-18  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         More FTL enabling.
</span></span></pre></div>
<a id="trunkSourceWTFWTFvcxprojWTFvcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -129,6 +129,7 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\text\cf\AtomicStringCF.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\text\cf\StringCF.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\text\cf\StringImplCF.cpp&quot; /&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\wtf\text\cf\StringViewCF.cpp&quot; /&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\Threading.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\ThreadingWin.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\threadspecificWin.cpp&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceWTFWTFvcxprojWTFvcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -84,6 +84,12 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\text\cf\StringCF.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;text&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\wtf\text\cf\StringImplCF.cpp&quot;&gt;
+      &lt;Filter&gt;text&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\wtf\text\cf\StringViewCF.cpp&quot;&gt;
+      &lt;Filter&gt;text&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\win\MainThreadWin.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;win&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -237,9 +243,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\win\RunLoopWin.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;win&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\wtf\text\cf\StringImplCF.cpp&quot;&gt;
-      &lt;Filter&gt;text&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\wtf\FastBitVector.cpp&quot; /&gt;
</span><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span></span></pre></div>
<a id="trunkSourceWTFwtftextWTFStringh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/WTFString.h (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/WTFString.h        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WTF/wtf/text/WTFString.h        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx"> // It would be better if these were more consistent with the above functions instead.
</span><span class="cx"> WTF_EXPORT_STRING_API double charactersToDouble(const LChar*, size_t, bool* ok = 0);
</span><span class="cx"> WTF_EXPORT_STRING_API double charactersToDouble(const UChar*, size_t, bool* ok = 0);
</span><del>-float charactersToFloat(const LChar*, size_t, bool* ok = 0);
</del><ins>+WTF_EXPORT_STRING_API float charactersToFloat(const LChar*, size_t, bool* ok = 0);
</ins><span class="cx"> WTF_EXPORT_STRING_API float charactersToFloat(const UChar*, size_t, bool* ok = 0);
</span><span class="cx"> WTF_EXPORT_STRING_API float charactersToFloat(const LChar*, size_t, size_t&amp; parsedLength);
</span><span class="cx"> WTF_EXPORT_STRING_API float charactersToFloat(const UChar*, size_t, size_t&amp; parsedLength);
</span></span></pre></div>
<a id="trunkSourceWTFwtftextcfStringViewCFcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/cf/StringViewCF.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/cf/StringViewCF.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WTF/wtf/text/cf/StringViewCF.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -23,11 +23,14 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#import &quot;config.h&quot;
-#import &quot;StringView.h&quot;
</del><ins>+#include &quot;config.h&quot;
+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><del>-#import &quot;RetainPtr.h&quot;
</del><ins>+#if USE(CF)
</ins><span class="cx"> 
</span><ins>+#include &lt;CoreFoundation/CoreFoundation.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
</ins><span class="cx"> namespace WTF {
</span><span class="cx"> 
</span><span class="cx"> RetainPtr&lt;CFStringRef&gt; StringView::createCFStringWithoutCopying() const
</span><span class="lines">@@ -35,7 +38,9 @@
</span><span class="cx">     if (is8Bit())
</span><span class="cx">         return adoptCF(CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, characters8(), length(), kCFStringEncodingISOLatin1, false, kCFAllocatorNull));
</span><span class="cx"> 
</span><del>-    return adoptCF(CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, characters16(), length(), kCFAllocatorNull));
</del><ins>+    return adoptCF(CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, reinterpret_cast&lt;const UniChar*&gt;(characters16()), length(), kCFAllocatorNull));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span><ins>+
+#endif // USE(CF)
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/ChangeLog        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -1,3 +1,256 @@
</span><ins>+2014-03-18  Darin Adler  &lt;darin@apple.com&gt;
+
+        Reduce use of deprecatedCharacters in WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=130318
+
+        Reviewed by Andreas Kling.
+
+        * Modules/indexeddb/IDBKeyPath.cpp:
+        (WebCore::IDBKeyPathLexer::IDBKeyPathLexer): Use StringView for parsing.
+        (WebCore::IDBKeyPathLexer::lex): Ditto.
+        (WebCore::IDBKeyPathLexer::lexIdentifier): Ditto.
+
+        * Modules/indexeddb/leveldb/IDBLevelDBCoding.cpp:
+        (WebCore::IDBLevelDBCoding::encodeString): Index directly into string instead of
+        using deprecatedCharacters.
+
+        * Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:
+        (WebCore::ThreadableWebSocketChannelClientWrapper::setSubprotocol): Use
+        StringView::getCharactersWithUpconvert.
+        (WebCore::ThreadableWebSocketChannelClientWrapper::setExtensions): Ditto.
+
+        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+        (-[WebAccessibilityObjectWrapper arrayOfTextForTextMarkers:attributed:]):
+        Use operator NSString * instead of explicitly creating an NSString.
+
+        * bindings/js/SerializedScriptValue.cpp:
+        (WebCore::writeLittleEndianUInt16): Added.
+        (WebCore::CloneSerializer::serialize): Added a separate code path for 8-bit strings.
+        (WebCore::CloneSerializer::write): Ditto.
+
+        * bindings/objc/WebScriptObject.mm:
+        (+[WebScriptObject _convertValueToObjcValue:JSC::originRootObject:rootObject:]):
+        Use operator NSString * instead of explicitly creating an NSString.
+
+        * dom/Document.cpp:
+        (WebCore::Document::parseQualifiedName): Index directly into string instead of
+        using deprecatedCharacters.
+        * editing/CompositeEditCommand.cpp:
+        (WebCore::containsOnlyWhitespace): Ditto.
+        * editing/SmartReplace.cpp:
+        (WebCore::addAllCodePoints): Ditto.
+        (WebCore::getSmartSet): Use StringView::upconvertedCharacters.
+
+        * editing/TextIterator.cpp:
+        (WebCore::foldQuoteMarksAndSoftHyphens): Changed to return a value so it can be
+        used in initialization rather than assignment.
+        (WebCore::SearchBuffer::SearchBuffer): Use StringView::upconvertedCharacters.
+
+        * editing/TypingCommand.cpp:
+        (WebCore::TypingCommand::insertText): Index directly into string instead of using
+        deprecatedCharacters.
+        * editing/VisiblePosition.cpp:
+        (WebCore::VisiblePosition::characterAfter): Ditto.
+        * editing/VisibleUnits.cpp:
+        (WebCore::startOfParagraph): Ditto.
+        (WebCore::endOfParagraph): Ditto.
+
+        * fileapi/WebKitBlobBuilder.cpp:
+        (WebCore::BlobBuilder::append): Pass a StringView to TextEncoding::encode.
+
+        * html/BaseDateAndTimeInputType.cpp:
+        (WebCore::BaseDateAndTimeInputType::parseToDateComponents): Use
+        StringView::upconvertedCharacters.
+
+        * html/FormDataList.cpp:
+        (WebCore::FormDataList::appendString): Pass a StringView to TextEncoding::encode.
+
+        * html/canvas/CanvasRenderingContext2D.cpp:
+        (WebCore::normalizeSpaces): Use StringView::getCharactersWithUpconvert.
+
+        * html/parser/HTMLParserIdioms.cpp:
+        (WebCore::stripLeadingAndTrailingHTMLSpaces): Use characters16 for a code path
+        that already handled 8-bit characters separately.
+        (WebCore::parseHTMLNonNegativeInteger): Ditto.
+        (WebCore::parseDescriptors): Added an 8-bit code path.
+
+        * inspector/InspectorStyleSheet.cpp:
+        (WebCore::InspectorStyle::newLineAndWhitespaceDelimiters): Index directly into
+        string instead of using deprecatedCharacters.
+        * inspector/InspectorStyleTextEditor.cpp:
+        (WebCore::InspectorStyleTextEditor::insertProperty): Ditto.
+        (WebCore::InspectorStyleTextEditor::internalReplaceProperty): Ditto.
+
+        * page/ContentSecurityPolicy.cpp:
+        (WebCore::isSourceListNone): Use StringView::upconvertedCharacters.
+        (WebCore::CSPSourceList::parse): Ditto.
+        (WebCore::NonceDirective::parse): Ditto.
+        (WebCore::MediaListDirective::parse): Ditto.
+        (WebCore::CSPDirectiveList::parse): Ditto.
+        (WebCore::CSPDirectiveList::parseReportURI): Ditto.
+        (WebCore::CSPDirectiveList::parseReflectedXSS): Ditto.
+        (WebCore::ContentSecurityPolicy::didReceiveHeader): Ditto.
+
+        * page/PageSerializer.cpp:
+        (WebCore::PageSerializer::serializeFrame): Pass a StringView into
+        TextEncoding::encode.
+        (WebCore::PageSerializer::serializeCSSStyleSheet): Ditto.
+
+        * platform/Length.cpp:
+        (WebCore::countCharacter): Index directly into string instead of using
+        deprecatedCharacters. Also changed to take a StringImpl&amp;.
+        (WebCore::newCoordsArray): Ditto. Call countCharacter the new way, and
+        use StringView::upconvertedCharacters.
+        (WebCore::newLengthArray): Ditto.
+
+        * platform/LinkHash.cpp:
+        (WebCore::visitedLinkHash): Use characters16 for the 16-bit path.
+        Also removed unused visitedURL function.
+        * platform/LinkHash.h: Removed unused visitedURL function.
+
+        * platform/SharedBuffer.cpp:
+        (WebCore::utf8Buffer): Added an 8-bit code path.
+        * platform/URL.cpp:
+        (WebCore::URL::port): Ditto.
+        (WebCore::encodeRelativeString): Use StringView to call TextEncoding::encode.
+
+        * platform/graphics/Color.cpp:
+        (WebCore::Color::parseHexColor): Use characters16 in the 16-bit path.
+        (WebCore::Color::Color): Ditto.
+
+        * platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:
+        (WebCore::harfBuzzGetGlyph): Use StringView to call TextEncoding::encode.
+
+        * platform/graphics/StringTruncator.cpp:
+        (WebCore::centerTruncateToBuffer): Use StringView::getCharactersWithUpconvert.
+        (WebCore::rightTruncateToBuffer): Ditto.
+        (WebCore::rightClipToCharacterBuffer): Ditto.
+        (WebCore::rightClipToWordBuffer): Ditto.
+        (WebCore::leftTruncateToBuffer): Ditto.
+        (WebCore::truncateString): Ditto.
+
+        * platform/graphics/TextRun.h:
+        (WebCore::TextRun::TextRun): Use characters16 in the 16-bit code path.
+
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
+        Use StringView::upconvertedCharacters.
+
+        * platform/network/DataURL.cpp:
+        (WebCore::handleDataURL): Use StringView to call TextEncoding::encode.
+        * platform/network/FormDataBuilder.cpp:
+        (WebCore::FormDataBuilder::addFilenameToMultiPartHeader): Ditto.
+
+        * platform/sql/SQLiteStatement.cpp:
+        (WebCore::SQLiteStatement::bindBlob): Use StringView::upconvertedCharacters.
+        (WebCore::SQLiteStatement::bindText): Ditto.
+
+        * platform/text/DecodeEscapeSequences.h:
+        (WebCore::Unicode16BitEscapeSequence::decodeRun): Changed to take a StringView.
+        (WebCore::URLEscapeSequence::decodeRun): Ditto.
+        (WebCore::decodeEscapeSequences): Pass StringView to decodeRun.
+
+        * platform/text/Hyphenation.cpp:
+        (WebCore::lastHyphenLocation): Take a StringView.
+        * platform/text/Hyphenation.h: Make lastHyphenLocation take a StringView.
+
+        * platform/text/TextBreakIterator.cpp:
+        (WebCore::initializeIteratorWithRules): Use StringView::upconvertedCharacters.
+
+        * platform/text/TextEncoding.cpp:
+        (WebCore::TextEncoding::encode): Use StringView::upconvertedCharacters.
+        Change argument type to StringView.
+        * platform/text/TextEncoding.h: Ditto.
+
+        * platform/text/TextEncodingRegistry.cpp:
+        (WebCore::atomicCanonicalTextEncodingName): Use characters16 for the 16-bit path.
+
+        * platform/text/cf/HyphenationCF.cpp:
+        (WebCore::lastHyphenLocation): Use StringView::text.createCFStringWithoutCopying.
+        Change argument type to StringView.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::constructTextRun): Use characters16 for the 16-bit path.
+
+        * rendering/RenderCombineText.cpp:
+        (WebCore::RenderCombineText::width): Removed check for null characters pointer,
+        since the pointer will never be null, and even if it was there would be no need
+        for an early exit.
+
+        * rendering/RenderText.cpp:
+        (WebCore::maxWordFragmentWidth): Take a StringView.
+        (WebCore::RenderText::computePreferredLogicalWidths): Pass in a StringView.
+        * rendering/line/BreakingContextInlineHeaders.h:
+        (WebCore::tryHyphenating): Ditto.
+
+        * rendering/svg/SVGTextLayoutEngine.cpp:
+        (WebCore::SVGTextLayoutEngine::layoutTextOnLineOrPath): Use
+        StringView::upconvertedCharacters.
+
+        * rendering/svg/SVGTextMetrics.cpp:
+        (WebCore::SVGTextMetrics::SVGTextMetrics): Use String::substring.
+
+        * svg/SVGAngle.cpp:
+        (WebCore::SVGAngle::setValueAsString): Use StringView::upconvertedCharacters.
+        * svg/SVGAnimateMotionElement.cpp:
+        (WebCore::parsePoint): Ditto.
+        * svg/SVGAnimationElement.cpp:
+        (WebCore::parseKeySplines): Ditto.
+        * svg/SVGFitToViewBox.cpp:
+        (WebCore::SVGFitToViewBox::parseViewBox): Ditto.
+
+        * svg/SVGFontData.cpp:
+        (WebCore::SVGFontData::applySVGGlyphSelection): Pass StringView to
+        createStringWIthMirroredCharacters.
+        (WebCore::createStringWithMirroredCharacters): Changed to use StringView and
+        use indexing into that instead of a characters pointer.
+
+        * svg/SVGFontData.h: Removed createStringWithMirroredCharacters member function,
+        since it has nothing to do with the SVGFontData object. Now it's just a private
+        helper function in the SVGFontData.cpp source file.
+
+        * svg/SVGFontElement.cpp:
+        (WebCore::SVGFontElement::registerLigaturesInGlyphCache): Index into the string
+        instead of using deprecatedCharacters.
+
+        * svg/SVGGlyphMap.h:
+        (WebCore::SVGGlyphMap::addGlyph): Use StringView::upconvertedCharacters.
+        (WebCore::SVGGlyphMap::collectGlyphsForString): Ditto.
+        * svg/SVGGlyphRefElement.cpp:
+        (WebCore::SVGGlyphRefElement::parseAttribute): Ditto.
+        * svg/SVGLength.cpp:
+        (WebCore::SVGLength::setValueAsString): Ditto.
+        * svg/SVGLengthList.cpp:
+        (WebCore::SVGLengthList::parse): Ditto.
+        * svg/SVGNumberList.cpp:
+        (WebCore::SVGNumberList::parse): Ditto.
+        * svg/SVGParserUtilities.cpp:
+        (WebCore::parseNumberFromString): Ditto.
+        (WebCore::parseNumberOptionalNumber): Ditto.
+        (WebCore::parseRect): Ditto.
+        (WebCore::pointsListFromSVGData): Ditto.
+        (WebCore::parseGlyphName): Ditto.
+        (WebCore::parseKerningUnicodeString): Ditto.
+        (WebCore::parseDelimitedString): Ditto.
+        * svg/SVGPreserveAspectRatio.cpp:
+        (WebCore::SVGPreserveAspectRatio::parse): Ditto.
+        * svg/SVGStringList.cpp:
+        (WebCore::SVGStringList::parse): Ditto.
+        * svg/SVGTransformList.cpp:
+        (WebCore::SVGTransformList::parse): Ditto.
+        * svg/SVGTransformable.cpp:
+        (WebCore::SVGTransformable::parseTransformType): Ditto.
+        * svg/SVGViewSpec.cpp:
+        (WebCore::SVGViewSpec::parseViewSpec): Ditto.
+        * svg/SVGZoomAndPan.h:
+        (WebCore::SVGZoomAndPan::parseAttribute): Ditto.
+
+        * xml/XMLHttpRequest.cpp:
+        (WebCore::XMLHttpRequest::send): Pass a StringView to TextEncoding::encode.
+
+        * xml/XSLStyleSheetLibxslt.cpp:
+        (WebCore::XSLStyleSheet::parseString): Use StringView::upconvertedCharacters.
+
</ins><span class="cx"> 2014-03-18  Bem Jones-Bey  &lt;bjonesbe@adobe.com&gt;
</span><span class="cx"> 
</span><span class="cx">         LayoutBox is a terrible name
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBKeyPathcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -45,8 +45,7 @@
</span><span class="cx"> 
</span><span class="cx">     explicit IDBKeyPathLexer(const String&amp; s)
</span><span class="cx">         : m_string(s)
</span><del>-        , m_ptr(s.deprecatedCharacters())
-        , m_end(s.deprecatedCharacters() + s.length())
</del><ins>+        , m_remainingText(s)
</ins><span class="cx">         , m_currentTokenType(TokenError)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="lines">@@ -64,23 +63,23 @@
</span><span class="cx"> private:
</span><span class="cx">     TokenType lex(String&amp;);
</span><span class="cx">     TokenType lexIdentifier(String&amp;);
</span><ins>+
</ins><span class="cx">     String m_currentElement;
</span><del>-    String m_string;
-    const UChar* m_ptr;
-    const UChar* m_end;
</del><ins>+    const String m_string;
+    StringView m_remainingText;
</ins><span class="cx">     TokenType m_currentTokenType;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> IDBKeyPathLexer::TokenType IDBKeyPathLexer::lex(String&amp; element)
</span><span class="cx"> {
</span><del>-    if (m_ptr &gt;= m_end)
</del><ins>+    if (m_remainingText.isEmpty())
</ins><span class="cx">         return TokenEnd;
</span><del>-    ASSERT_WITH_SECURITY_IMPLICATION(m_ptr &lt; m_end);
</del><span class="cx"> 
</span><del>-    if (*m_ptr == '.') {
-        ++m_ptr;
</del><ins>+    if (m_remainingText[0] == '.') {
+        m_remainingText = m_remainingText.substring(1);
</ins><span class="cx">         return TokenDot;
</span><span class="cx">     }
</span><ins>+
</ins><span class="cx">     return lexIdentifier(element);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -108,16 +107,16 @@
</span><span class="cx"> 
</span><span class="cx"> IDBKeyPathLexer::TokenType IDBKeyPathLexer::lexIdentifier(String&amp; element)
</span><span class="cx"> {
</span><del>-    const UChar* start = m_ptr;
-    if (m_ptr &lt; m_end &amp;&amp; isIdentifierStartCharacter(*m_ptr))
-        ++m_ptr;
</del><ins>+    StringView start = m_remainingText;
+    if (!m_remainingText.isEmpty() &amp;&amp; isIdentifierStartCharacter(m_remainingText[0]))
+        m_remainingText = m_remainingText.substring(1);
</ins><span class="cx">     else
</span><span class="cx">         return TokenError;
</span><span class="cx"> 
</span><del>-    while (m_ptr &lt; m_end &amp;&amp; isIdentifierCharacter(*m_ptr))
-        ++m_ptr;
</del><ins>+    while (!m_remainingText.isEmpty() &amp;&amp; isIdentifierCharacter(m_remainingText[0]))
+        m_remainingText = m_remainingText.substring(1);
</ins><span class="cx"> 
</span><del>-    element = String(start, m_ptr - start);
</del><ins>+    element = start.substring(0, start.length() - m_remainingText.length()).toString();
</ins><span class="cx">     return TokenIdentifier;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbleveldbIDBLevelDBCodingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBLevelDBCoding.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBLevelDBCoding.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBLevelDBCoding.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -297,10 +297,9 @@
</span><span class="cx">     size_t length = s.length();
</span><span class="cx">     Vector&lt;char&gt; ret(length * sizeof(UChar));
</span><span class="cx"> 
</span><del>-    const UChar* src = s.deprecatedCharacters();
</del><span class="cx">     UChar* dst = reinterpret_cast&lt;UChar*&gt;(ret.data());
</span><span class="cx">     for (unsigned i = 0; i &lt; length; ++i)
</span><del>-        *dst++ = htons(*src++);
</del><ins>+        *dst++ = htons(s[i]);
</ins><span class="cx"> 
</span><span class="cx">     return ret;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelClientWrappercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> #include &quot;WebSocketChannelClient.h&quot;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -110,8 +111,7 @@
</span><span class="cx"> {
</span><span class="cx">     unsigned length = subprotocol.length();
</span><span class="cx">     m_subprotocol.resize(length);
</span><del>-    if (length)
-        memcpy(m_subprotocol.data(), subprotocol.deprecatedCharacters(), sizeof(UChar) * length);
</del><ins>+    StringView(subprotocol).getCharactersWithUpconvert(m_subprotocol.data());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String ThreadableWebSocketChannelClientWrapper::extensions() const
</span><span class="lines">@@ -125,8 +125,7 @@
</span><span class="cx"> {
</span><span class="cx">     unsigned length = extensions.length();
</span><span class="cx">     m_extensions.resize(length);
</span><del>-    if (length)
-        memcpy(m_extensions.data(), extensions.deprecatedCharacters(), sizeof(UChar) * length);
</del><ins>+    StringView(extensions).getCharactersWithUpconvert(m_extensions.data());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ThreadableWebSocketChannel::SendResult ThreadableWebSocketChannelClientWrapper::sendRequestResult() const
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityiosWebAccessibilityObjectWrapperIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -1660,7 +1660,7 @@
</span><span class="cx">                 String listMarkerText = m_object-&gt;listMarkerTextForNodeAndPosition(node, VisiblePosition(it.range()-&gt;startPosition())); 
</span><span class="cx">                 
</span><span class="cx">                 if (!listMarkerText.isEmpty()) 
</span><del>-                    [array addObject:[NSString stringWithCharacters:listMarkerText.deprecatedCharacters() length:listMarkerText.length()]];
</del><ins>+                    [array addObject:listMarkerText];
</ins><span class="cx">                 // There was not an element representation, so just return the text.
</span><span class="cx">                 [array addObject:it.text().createNSString().get()];
</span><span class="cx">             }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsSerializedScriptValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -447,6 +447,19 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static bool writeLittleEndianUInt16(Vector&lt;uint8_t&gt;&amp; buffer, const LChar* values, uint32_t length)
+{
+    if (length &gt; std::numeric_limits&lt;uint32_t&gt;::max() / 2)
+        return false;
+
+    for (unsigned i = 0; i &lt; length; ++i) {
+        buffer.append(values[i]);
+        buffer.append(0);
+    }
+
+    return true;
+}
+
</ins><span class="cx"> template &lt;&gt; bool writeLittleEndian&lt;uint8_t&gt;(Vector&lt;uint8_t&gt;&amp; buffer, const uint8_t* values, uint32_t length)
</span><span class="cx"> {
</span><span class="cx">     buffer.append(values, length);
</span><span class="lines">@@ -472,7 +485,9 @@
</span><span class="cx">         }
</span><span class="cx">         writeLittleEndian&lt;uint8_t&gt;(out, StringTag);
</span><span class="cx">         writeLittleEndian(out, s.length());
</span><del>-        return writeLittleEndian(out, s.impl()-&gt;deprecatedCharacters(), s.length());
</del><ins>+        if (s.is8Bit())
+            return writeLittleEndianUInt16(out, s.characters8(), s.length());
+        return writeLittleEndian(out, s.characters16(), s.length());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     static void serializeUndefined(Vector&lt;uint8_t&gt;&amp; out)
</span><span class="lines">@@ -969,21 +984,28 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        unsigned length = str.length();
+
</ins><span class="cx">         // This condition is unlikely to happen as they would imply an ~8gb
</span><span class="cx">         // string but we should guard against it anyway
</span><del>-        if (str.length() &gt;= StringPoolTag) {
</del><ins>+        if (length &gt;= StringPoolTag) {
</ins><span class="cx">             fail();
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // Guard against overflow
</span><del>-        if (str.length() &gt; (std::numeric_limits&lt;uint32_t&gt;::max() - sizeof(uint32_t)) / sizeof(UChar)) {
</del><ins>+        if (length &gt; (std::numeric_limits&lt;uint32_t&gt;::max() - sizeof(uint32_t)) / sizeof(UChar)) {
</ins><span class="cx">             fail();
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        writeLittleEndian&lt;uint32_t&gt;(m_buffer, str.length());
-        if (!writeLittleEndian&lt;uint16_t&gt;(m_buffer, reinterpret_cast&lt;const uint16_t*&gt;(str.deprecatedCharacters()), str.length()))
</del><ins>+        writeLittleEndian&lt;uint32_t&gt;(m_buffer, length);
+        if (!length || str.is8Bit()) {
+            if (!writeLittleEndianUInt16(m_buffer, str.characters8(), length))
+                fail();
+            return;
+        }
+        if (!writeLittleEndian(m_buffer, str.characters16(), length))
</ins><span class="cx">             fail();
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsobjcWebScriptObjectmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/objc/WebScriptObject.mm (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/objc/WebScriptObject.mm        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/bindings/objc/WebScriptObject.mm        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -546,11 +546,8 @@
</span><span class="cx">         return [WebScriptObject scriptObjectForJSObject:toRef(object) originRootObject:originRootObject rootObject:rootObject];
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (value.isString()) {
-        ExecState* exec = rootObject-&gt;globalObject()-&gt;globalExec();
-        const String&amp; u = asString(value)-&gt;value(exec);
-        return [NSString stringWithCharacters:u.deprecatedCharacters() length:u.length()];
-    }
</del><ins>+    if (value.isString())
+        return asString(value)-&gt;value(rootObject-&gt;globalObject()-&gt;globalExec());
</ins><span class="cx"> 
</span><span class="cx">     if (value.isNumber())
</span><span class="cx">         return [NSNumber numberWithDouble:value.asNumber()];
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/dom/Document.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -3972,10 +3972,9 @@
</span><span class="cx">     bool sawColon = false;
</span><span class="cx">     int colonPos = 0;
</span><span class="cx"> 
</span><del>-    const UChar* s = qualifiedName.deprecatedCharacters();
</del><span class="cx">     for (unsigned i = 0; i &lt; length;) {
</span><span class="cx">         UChar32 c;
</span><del>-        U16_NEXT(s, i, length, c)
</del><ins>+        U16_NEXT(qualifiedName, i, length, c)
</ins><span class="cx">         if (c == ':') {
</span><span class="cx">             if (sawColon) {
</span><span class="cx">                 ec = NAMESPACE_ERR;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingCompositeEditCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/CompositeEditCommand.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -667,7 +667,7 @@
</span><span class="cx"> static inline bool containsOnlyWhitespace(const String&amp; text)
</span><span class="cx"> {
</span><span class="cx">     for (unsigned i = 0; i &lt; text.length(); ++i) {
</span><del>-        if (!isWhitespace(text.deprecatedCharacters()[i]))
</del><ins>+        if (!isWhitespace(text[i]))
</ins><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingSmartReplacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/SmartReplace.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/SmartReplace.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/editing/SmartReplace.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -34,15 +34,14 @@
</span><span class="cx"> 
</span><span class="cx"> #include &lt;unicode/uset.h&gt;
</span><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static void addAllCodePoints(USet* smartSet, const String&amp; string)
</span><span class="cx"> {
</span><del>-    const UChar* characters = string.deprecatedCharacters();
</del><span class="cx">     for (size_t i = 0; i &lt; string.length(); i++)
</span><del>-        uset_add(smartSet, characters[i]);
</del><ins>+        uset_add(smartSet, string[i]);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // This is mostly a port of the code in WebCore/editing/SmartReplaceCF.cpp
</span><span class="lines">@@ -56,7 +55,7 @@
</span><span class="cx">         // Whitespace and newline (kCFCharacterSetWhitespaceAndNewline)
</span><span class="cx">         UErrorCode ec = U_ZERO_ERROR;
</span><span class="cx">         String whitespaceAndNewline = ASCIILiteral(&quot;[[:WSpace:] [\\u000A\\u000B\\u000C\\u000D\\u0085]]&quot;);
</span><del>-        smartSet = uset_openPattern(whitespaceAndNewline.deprecatedCharacters(), whitespaceAndNewline.length(), &amp;ec);
</del><ins>+        smartSet = uset_openPattern(StringView(whitespaceAndNewline).upconvertedCharacters(), whitespaceAndNewline.length(), &amp;ec);
</ins><span class="cx">         ASSERT(U_SUCCESS(ec));
</span><span class="cx"> 
</span><span class="cx">         // CJK ranges
</span><span class="lines">@@ -83,7 +82,7 @@
</span><span class="cx">             // Punctuation (kCFCharacterSetPunctuation)
</span><span class="cx">             UErrorCode ec = U_ZERO_ERROR;
</span><span class="cx">             String punctuationClass = ASCIILiteral(&quot;[:P:]&quot;);
</span><del>-            USet* icuPunct = uset_openPattern(punctuationClass.deprecatedCharacters(), punctuationClass.length(), &amp;ec);
</del><ins>+            USet* icuPunct = uset_openPattern(StringView(punctuationClass).upconvertedCharacters(), punctuationClass.length(), &amp;ec);
</ins><span class="cx">             ASSERT(U_SUCCESS(ec));
</span><span class="cx">             uset_addAll(smartSet, icuPunct);
</span><span class="cx">             uset_close(icuPunct);
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingTextIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/TextIterator.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/TextIterator.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/editing/TextIterator.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -92,7 +92,8 @@
</span><span class="cx">     bool isBadMatch(const UChar*, size_t length) const;
</span><span class="cx">     bool isWordStartMatch(size_t start, size_t length) const;
</span><span class="cx"> 
</span><del>-    String m_target;
</del><ins>+    const String m_target;
+    const StringView::UpconvertedCharacters m_targetCharacters;
</ins><span class="cx">     FindOptions m_options;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;UChar&gt; m_buffer;
</span><span class="lines">@@ -101,7 +102,7 @@
</span><span class="cx">     bool m_atBreak;
</span><span class="cx">     bool m_needsMoreContext;
</span><span class="cx"> 
</span><del>-    bool m_targetRequiresKanaWorkaround;
</del><ins>+    const bool m_targetRequiresKanaWorkaround;
</ins><span class="cx">     Vector&lt;UChar&gt; m_normalizedTarget;
</span><span class="cx">     mutable Vector&lt;UChar&gt; m_normalizedMatch;
</span><span class="cx"> 
</span><span class="lines">@@ -1649,17 +1650,22 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline void foldQuoteMarksAndSoftHyphens(String&amp; s)
</del><ins>+// FIXME: We'd like to tailor the searcher to fold quote marks for us instead
+// of doing it in a separate replacement pass here, but ICU doesn't offer a way
+// to add tailoring on top of the locale-specific tailoring as of this writing.
+static inline String foldQuoteMarksAndSoftHyphens(String string)
</ins><span class="cx"> {
</span><del>-    s.replace(hebrewPunctuationGeresh, '\'');
-    s.replace(hebrewPunctuationGershayim, '&quot;');
-    s.replace(leftDoubleQuotationMark, '&quot;');
-    s.replace(leftSingleQuotationMark, '\'');
-    s.replace(rightDoubleQuotationMark, '&quot;');
-    s.replace(rightSingleQuotationMark, '\'');
-    // Replace soft hyphen with an ignorable character so that their presence or absence will
-    // not affect string comparison.
-    s.replace(softHyphen, 0);
</del><ins>+    string.replace(hebrewPunctuationGeresh, '\'');
+    string.replace(hebrewPunctuationGershayim, '&quot;');
+    string.replace(leftDoubleQuotationMark, '&quot;');
+    string.replace(leftSingleQuotationMark, '\'');
+    string.replace(rightDoubleQuotationMark, '&quot;');
+    string.replace(rightSingleQuotationMark, '\'');
+
+    // Replace soft hyphens with an ignorable character so that presence or absence will not affect string comparison.
+    string.replace(softHyphen, 0);
+
+    return string;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !UCONFIG_NO_COLLATION
</span><span class="lines">@@ -1943,7 +1949,8 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline SearchBuffer::SearchBuffer(const String&amp; target, FindOptions options)
</span><del>-    : m_target(target)
</del><ins>+    : m_target(foldQuoteMarksAndSoftHyphens(target))
+    , m_targetCharacters(StringView(m_target).upconvertedCharacters())
</ins><span class="cx">     , m_options(options)
</span><span class="cx">     , m_prefixLength(0)
</span><span class="cx">     , m_atBreak(true)
</span><span class="lines">@@ -1952,11 +1959,6 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_target.isEmpty());
</span><span class="cx"> 
</span><del>-    // FIXME: We'd like to tailor the searcher to fold quote marks for us instead
-    // of doing it in a separate replacement pass here, but ICU doesn't offer a way
-    // to add tailoring on top of the locale-specific tailoring as of this writing.
-    foldQuoteMarksAndSoftHyphens(m_target);
-
</del><span class="cx">     size_t targetLength = m_target.length();
</span><span class="cx">     m_buffer.reserveInitialCapacity(std::max(targetLength * 8, minimumSearchBufferSize));
</span><span class="cx">     m_overlap = m_buffer.capacity() / 4;
</span><span class="lines">@@ -2000,12 +2002,12 @@
</span><span class="cx">     usearch_setAttribute(searcher, USEARCH_ELEMENT_COMPARISON, comparator, &amp;status);
</span><span class="cx">     ASSERT(status == U_ZERO_ERROR);
</span><span class="cx"> 
</span><del>-    usearch_setPattern(searcher, m_target.deprecatedCharacters(), targetLength, &amp;status);
</del><ins>+    usearch_setPattern(searcher, m_targetCharacters, targetLength, &amp;status);
</ins><span class="cx">     ASSERT(status == U_ZERO_ERROR);
</span><span class="cx"> 
</span><span class="cx">     // The kana workaround requires a normalized copy of the target string.
</span><span class="cx">     if (m_targetRequiresKanaWorkaround)
</span><del>-        normalizeCharacters(m_target.deprecatedCharacters(), m_target.length(), m_normalizedTarget);
</del><ins>+        normalizeCharacters(m_targetCharacters, targetLength, m_normalizedTarget);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline SearchBuffer::~SearchBuffer()
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingTypingCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/TypingCommand.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/TypingCommand.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/editing/TypingCommand.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx">     ASSERT(frame);
</span><span class="cx"> 
</span><span class="cx">     if (!text.isEmpty())
</span><del>-        frame-&gt;editor().updateMarkersForWordsAffectedByEditing(isSpaceOrNewline(text.deprecatedCharacters()[0]));
</del><ins>+        frame-&gt;editor().updateMarkersForWordsAffectedByEditing(isSpaceOrNewline(text[0]));
</ins><span class="cx">     
</span><span class="cx">     insertText(document, text, frame-&gt;selection().selection(), options, composition);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingVisiblePositioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/VisiblePosition.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/VisiblePosition.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/editing/VisiblePosition.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -590,8 +590,7 @@
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     UChar32 ch;
</span><del>-    const UChar* characters = textNode-&gt;data().deprecatedCharacters();
-    U16_NEXT(characters, offset, length, ch);
</del><ins>+    U16_NEXT(textNode-&gt;data(), offset, length, ch);
</ins><span class="cx">     return ch;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingVisibleUnitscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/VisibleUnits.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/VisibleUnits.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/editing/VisibleUnits.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -1155,13 +1155,13 @@
</span><span class="cx">             ASSERT_WITH_SECURITY_IMPLICATION(n-&gt;isTextNode());
</span><span class="cx">             type = Position::PositionIsOffsetInAnchor;
</span><span class="cx">             if (style.preserveNewline()) {
</span><del>-                const UChar* chars = toRenderText(r)-&gt;deprecatedCharacters();
-                int i = toRenderText(r)-&gt;textLength();
</del><ins>+                StringImpl&amp; text = *toRenderText(r)-&gt;text();
+                int i = text.length();
</ins><span class="cx">                 int o = offset;
</span><span class="cx">                 if (n == startNode &amp;&amp; o &lt; i)
</span><span class="cx">                     i = std::max(0, o);
</span><span class="cx">                 while (--i &gt;= 0) {
</span><del>-                    if (chars[i] == '\n')
</del><ins>+                    if (text[i] == '\n')
</ins><span class="cx">                         return VisiblePosition(Position(toText(n), i + 1), DOWNSTREAM);
</span><span class="cx">                 }
</span><span class="cx">             }
</span><span class="lines">@@ -1236,13 +1236,13 @@
</span><span class="cx">         // FIXME: We avoid returning a position where the renderer can't accept the caret.
</span><span class="cx">         if (r-&gt;isText() &amp;&amp; toRenderText(r)-&gt;hasRenderedText()) {
</span><span class="cx">             ASSERT_WITH_SECURITY_IMPLICATION(n-&gt;isTextNode());
</span><del>-            int length = toRenderText(r)-&gt;textLength();
</del><span class="cx">             type = Position::PositionIsOffsetInAnchor;
</span><span class="cx">             if (style.preserveNewline()) {
</span><del>-                const UChar* chars = toRenderText(r)-&gt;deprecatedCharacters();
</del><ins>+                StringImpl&amp; text = *toRenderText(r)-&gt;text();
</ins><span class="cx">                 int o = n == startNode ? offset : 0;
</span><ins>+                int length = text.length();
</ins><span class="cx">                 for (int i = o; i &lt; length; ++i) {
</span><del>-                    if (chars[i] == '\n')
</del><ins>+                    if (text[i] == '\n')
</ins><span class="cx">                         return VisiblePosition(Position(toText(n), i), DOWNSTREAM);
</span><span class="cx">                 }
</span><span class="cx">             }
</span></span></pre></div>
<a id="trunkSourceWebCorefileapiWebKitBlobBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/fileapi/WebKitBlobBuilder.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/fileapi/WebKitBlobBuilder.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/fileapi/WebKitBlobBuilder.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -44,6 +44,7 @@
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/AtomicString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -71,7 +72,7 @@
</span><span class="cx"> 
</span><span class="cx"> void BlobBuilder::append(const String&amp; text, const String&amp; endingType)
</span><span class="cx"> {
</span><del>-    CString utf8Text = UTF8Encoding().encode(text.deprecatedCharacters(), text.length(), EntitiesForUnencodables);
</del><ins>+    CString utf8Text = UTF8Encoding().encode(text, EntitiesForUnencodables);
</ins><span class="cx"> 
</span><span class="cx">     Vector&lt;char&gt;&amp; buffer = getBuffer();
</span><span class="cx">     size_t oldSize = buffer.size();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlBaseDateAndTimeInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx">     DateComponents ignoredResult;
</span><span class="cx">     if (!out)
</span><span class="cx">         out = &amp;ignoredResult;
</span><del>-    return parseToDateComponentsInternal(source.deprecatedCharacters(), source.length(), out);
</del><ins>+    return parseToDateComponentsInternal(source.upconvertedCharacters(), source.length(), out);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String BaseDateAndTimeInputType::serialize(const Decimal&amp; value) const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlFormDataListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/FormDataList.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/FormDataList.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/html/FormDataList.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -22,6 +22,7 @@
</span><span class="cx"> #include &quot;FormDataList.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;LineEnding.h&quot;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -32,7 +33,7 @@
</span><span class="cx"> 
</span><span class="cx"> void FormDataList::appendString(const String&amp; s)
</span><span class="cx"> {
</span><del>-    CString cstr = m_encoding.encode(s.deprecatedCharacters(), s.length(), EntitiesForUnencodables);
</del><ins>+    CString cstr = m_encoding.encode(s, EntitiesForUnencodables);
</ins><span class="cx">     m_items.append(normalizeLineEndingsToCRLF(cstr));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -2167,7 +2167,7 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned textLength = text.length();
</span><span class="cx">     Vector&lt;UChar&gt; charVector(textLength);
</span><del>-    memcpy(charVector.data(), text.deprecatedCharacters(), textLength * sizeof(UChar));
</del><ins>+    StringView(text).getCharactersWithUpconvert(charVector.data());
</ins><span class="cx"> 
</span><span class="cx">     charVector[i++] = ' ';
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlparserHTMLParserIdiomscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/parser/HTMLParserIdioms.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/parser/HTMLParserIdioms.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/html/parser/HTMLParserIdioms.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx">     if (string.is8Bit())
</span><span class="cx">         return stripLeadingAndTrailingHTMLSpaces(string, string.characters8(), length);
</span><span class="cx"> 
</span><del>-    return stripLeadingAndTrailingHTMLSpaces(string, string.deprecatedCharacters(), length);
</del><ins>+    return stripLeadingAndTrailingHTMLSpaces(string, string.characters16(), length);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String serializeForNumberType(const Decimal&amp; number)
</span><span class="lines">@@ -267,12 +267,12 @@
</span><span class="cx">     // Step 1
</span><span class="cx">     // Step 2
</span><span class="cx">     unsigned length = input.length();
</span><del>-    if (length &amp;&amp; input.is8Bit()) {
</del><ins>+    if (!length || input.is8Bit()) {
</ins><span class="cx">         const LChar* start = input.characters8();
</span><span class="cx">         return parseHTMLNonNegativeIntegerInternal(start, start + length, value);
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    const UChar* start = input.deprecatedCharacters();
</del><ins>+    const UChar* start = input.characters16();
</ins><span class="cx">     return parseHTMLNonNegativeIntegerInternal(start, start + length, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -326,7 +326,10 @@
</span><span class="cx">         if (isFoundScaleFactor)
</span><span class="cx">             return false;
</span><span class="cx"> 
</span><del>-        imageScaleFactor = charactersToFloat(attribute.deprecatedCharacters() + descriptorStart, descriptorEnd - descriptorStart, &amp;isValid);
</del><ins>+        if (attribute.is8Bit())
+            imageScaleFactor = charactersToFloat(attribute.characters8() + descriptorStart, descriptorEnd - descriptorStart, &amp;isValid);
+        else
+            imageScaleFactor = charactersToFloat(attribute.characters16() + descriptorStart, descriptorEnd - descriptorStart, &amp;isValid);
</ins><span class="cx">         isFoundScaleFactor = true;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorStyleSheetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -712,14 +712,13 @@
</span><span class="cx">     int propertyIndex = 0;
</span><span class="cx">     bool isFullPrefixScanned = false;
</span><span class="cx">     bool lineFeedTerminated = false;
</span><del>-    const UChar* characters = text.deprecatedCharacters();
</del><span class="cx">     while (propertyIndex &lt; propertyCount) {
</span><span class="cx">         const WebCore::CSSPropertySourceData&amp; currentProperty = sourcePropertyData-&gt;at(propertyIndex++);
</span><span class="cx"> 
</span><span class="cx">         bool processNextProperty = false;
</span><span class="cx">         int scanEnd = currentProperty.range.start;
</span><span class="cx">         for (int i = scanStart; i &lt; scanEnd; ++i) {
</span><del>-            UChar ch = characters[i];
</del><ins>+            UChar ch = text[i];
</ins><span class="cx">             bool isLineFeed = isHTMLLineBreak(ch);
</span><span class="cx">             if (isLineFeed) {
</span><span class="cx">                 if (!lineFeedTerminated)
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorStyleTextEditorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorStyleTextEditor.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorStyleTextEditor.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/inspector/InspectorStyleTextEditor.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -82,12 +82,10 @@
</span><span class="cx">     if (insertLast &amp;&amp; !insertFirstInSource) {
</span><span class="cx">         propertyStart = styleBodyLength;
</span><span class="cx">         if (propertyStart &amp;&amp; textToSet.length()) {
</span><del>-            const UChar* characters = m_styleText.deprecatedCharacters();
-
</del><span class="cx">             long curPos = propertyStart - 1; // The last position of style declaration, since propertyStart points past one.
</span><del>-            while (curPos &amp;&amp; isHTMLSpace(characters[curPos]))
</del><ins>+            while (curPos &amp;&amp; isHTMLSpace(m_styleText[curPos]))
</ins><span class="cx">                 --curPos;
</span><del>-            if (curPos &amp;&amp; characters[curPos] != ';') {
</del><ins>+            if (curPos &amp;&amp; m_styleText[curPos] != ';') {
</ins><span class="cx">                 // Prepend a &quot;;&quot; to the property text if appending to a style declaration where
</span><span class="cx">                 // the last property has no trailing &quot;;&quot;.
</span><span class="cx">                 textToSet.insert(&quot;;&quot;, 0);
</span><span class="lines">@@ -230,7 +228,6 @@
</span><span class="cx">     const SourceRange&amp; range = property.sourceData.range;
</span><span class="cx">     long replaceRangeStart = range.start;
</span><span class="cx">     long replaceRangeEnd = range.end;
</span><del>-    const UChar* characters = m_styleText.deprecatedCharacters();
</del><span class="cx">     long newTextLength = newText.length();
</span><span class="cx">     String finalNewText = newText;
</span><span class="cx"> 
</span><span class="lines">@@ -241,14 +238,14 @@
</span><span class="cx">         if (replaceRangeStart &gt;= fullPrefixLength &amp;&amp; m_styleText.substring(replaceRangeStart - fullPrefixLength, fullPrefixLength) == fullPrefix)
</span><span class="cx">             replaceRangeStart -= fullPrefixLength;
</span><span class="cx">     } else if (newTextLength) {
</span><del>-        if (isHTMLLineBreak(newText.deprecatedCharacters()[newTextLength - 1])) {
</del><ins>+        if (isHTMLLineBreak(newText[newTextLength - 1])) {
</ins><span class="cx">             // Coalesce newlines of the original and new property values (to avoid a lot of blank lines while incrementally applying property values).
</span><span class="cx">             bool foundNewline = false;
</span><span class="cx">             bool isLastNewline = false;
</span><span class="cx">             int i;
</span><span class="cx">             int textLength = m_styleText.length();
</span><del>-            for (i = replaceRangeEnd; i &lt; textLength &amp;&amp; isSpaceOrNewline(characters[i]); ++i) {
-                isLastNewline = isHTMLLineBreak(characters[i]);
</del><ins>+            for (i = replaceRangeEnd; i &lt; textLength &amp;&amp; isSpaceOrNewline(m_styleText[i]); ++i) {
+                isLastNewline = isHTMLLineBreak(m_styleText[i]);
</ins><span class="cx">                 if (isLastNewline)
</span><span class="cx">                     foundNewline = true;
</span><span class="cx">                 else if (foundNewline &amp;&amp; !isLastNewline) {
</span></span></pre></div>
<a id="trunkSourceWebCorepageContentSecurityPolicycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ContentSecurityPolicy.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ContentSecurityPolicy.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/page/ContentSecurityPolicy.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -47,7 +47,6 @@
</span><span class="cx"> #include &lt;inspector/ScriptCallStackFactory.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/text/TextPosition.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><span class="cx"> 
</span><span class="cx"> using namespace Inspector;
</span><span class="cx"> 
</span><span class="lines">@@ -189,8 +188,9 @@
</span><span class="cx"> 
</span><span class="cx"> static bool isSourceListNone(const String&amp; value)
</span><span class="cx"> {
</span><del>-    const UChar* begin = value.deprecatedCharacters();
-    const UChar* end = value.deprecatedCharacters() + value.length();
</del><ins>+    auto characters = StringView(value).upconvertedCharacters();
+    const UChar* begin = characters;
+    const UChar* end = characters + value.length();
</ins><span class="cx">     skipWhile&lt;isASCIISpace&gt;(begin, end);
</span><span class="cx"> 
</span><span class="cx">     const UChar* position = begin;
</span><span class="lines">@@ -339,7 +339,8 @@
</span><span class="cx">     // We represent 'none' as an empty m_list.
</span><span class="cx">     if (isSourceListNone(value))
</span><span class="cx">         return;
</span><del>-    parse(value.deprecatedCharacters(), value.deprecatedCharacters() + value.length());
</del><ins>+    auto characters = StringView(value).upconvertedCharacters();
+    parse(characters, characters + value.length());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool CSPSourceList::matches(const URL&amp; url)
</span><span class="lines">@@ -680,7 +681,8 @@
</span><span class="cx">     void parse(const String&amp; value)
</span><span class="cx">     {
</span><span class="cx">         String nonce;
</span><del>-        const UChar* position = value.deprecatedCharacters();
</del><ins>+        auto characters = StringView(value).upconvertedCharacters();
+        const UChar* position = characters;
</ins><span class="cx">         const UChar* end = position + value.length();
</span><span class="cx"> 
</span><span class="cx">         skipWhile&lt;isASCIISpace&gt;(position, end);
</span><span class="lines">@@ -723,7 +725,8 @@
</span><span class="cx"> private:
</span><span class="cx">     void parse(const String&amp; value)
</span><span class="cx">     {
</span><del>-        const UChar* begin = value.deprecatedCharacters();
</del><ins>+        auto characters = StringView(value).upconvertedCharacters();
+        const UChar* begin = characters;
</ins><span class="cx">         const UChar* position = begin;
</span><span class="cx">         const UChar* end = begin + value.length();
</span><span class="cx"> 
</span><span class="lines">@@ -1211,7 +1214,8 @@
</span><span class="cx">     if (policy.isEmpty())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    const UChar* position = policy.deprecatedCharacters();
</del><ins>+    auto characters = StringView(policy).upconvertedCharacters();
+    const UChar* position = characters;
</ins><span class="cx">     const UChar* end = position + policy.length();
</span><span class="cx"> 
</span><span class="cx">     while (position &lt; end) {
</span><span class="lines">@@ -1290,7 +1294,9 @@
</span><span class="cx">         m_policy-&gt;reportDuplicateDirective(name);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    const UChar* position = value.deprecatedCharacters();
</del><ins>+
+    auto characters = StringView(value).upconvertedCharacters();
+    const UChar* position = characters;
</ins><span class="cx">     const UChar* end = position + value.length();
</span><span class="cx"> 
</span><span class="cx">     while (position &lt; end) {
</span><span class="lines">@@ -1344,7 +1350,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    const UChar* position = value.deprecatedCharacters();
</del><ins>+    auto characters = StringView(value).upconvertedCharacters();
+    const UChar* position = characters;
</ins><span class="cx">     const UChar* end = position + value.length();
</span><span class="cx"> 
</span><span class="cx">     skipWhile&lt;isASCIISpace&gt;(position, end);
</span><span class="lines">@@ -1443,7 +1450,8 @@
</span><span class="cx">     // RFC2616, section 4.2 specifies that headers appearing multiple times can
</span><span class="cx">     // be combined with a comma. Walk the header string, and parse each comma
</span><span class="cx">     // separated chunk as a separate header.
</span><del>-    const UChar* begin = header.deprecatedCharacters();
</del><ins>+    auto characters = StringView(header).upconvertedCharacters();
+    const UChar* begin = characters;
</ins><span class="cx">     const UChar* position = begin;
</span><span class="cx">     const UChar* end = begin + header.length();
</span><span class="cx">     while (position &lt; end) {
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageSerializercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PageSerializer.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PageSerializer.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/page/PageSerializer.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -216,7 +216,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     String text = accumulator.serializeNodes(*document-&gt;documentElement(), 0, IncludeNode);
</span><del>-    CString frameHTML = textEncoding.encode(text.deprecatedCharacters(), text.length(), EntitiesForUnencodables);
</del><ins>+    CString frameHTML = textEncoding.encode(text, EntitiesForUnencodables);
</ins><span class="cx">     m_resources-&gt;append(Resource(url, document-&gt;suggestedMIMEType(), SharedBuffer::create(frameHTML.data(), frameHTML.length())));
</span><span class="cx">     m_resourceURLs.add(url);
</span><span class="cx"> 
</span><span class="lines">@@ -283,7 +283,7 @@
</span><span class="cx">         TextEncoding textEncoding(styleSheet-&gt;contents().charset());
</span><span class="cx">         ASSERT(textEncoding.isValid());
</span><span class="cx">         String textString = cssText.toString();
</span><del>-        CString text = textEncoding.encode(textString.deprecatedCharacters(), textString.length(), EntitiesForUnencodables);
</del><ins>+        CString text = textEncoding.encode(textString, EntitiesForUnencodables);
</ins><span class="cx">         m_resources-&gt;append(Resource(url, String(&quot;text/css&quot;), SharedBuffer::create(text.data(), text.length())));
</span><span class="cx">         m_resourceURLs.add(url);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformLengthcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/Length.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/Length.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/Length.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringBuffer.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> using namespace WTF;
</span><span class="cx"> 
</span><span class="lines">@@ -77,21 +77,21 @@
</span><span class="cx">     return Length(0, Relative);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static int countCharacter(const UChar* data, unsigned length, UChar character)
</del><ins>+static unsigned countCharacter(StringImpl&amp; string, UChar character)
</ins><span class="cx"> {
</span><del>-    int count = 0;
-    for (int i = 0; i &lt; static_cast&lt;int&gt;(length); ++i)
-        count += data[i] == character;
</del><ins>+    unsigned count = 0;
+    unsigned length = string.length();
+    for (unsigned i = 0; i &lt; length; ++i)
+        count += string[i] == character;
</ins><span class="cx">     return count;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> std::unique_ptr&lt;Length[]&gt; newCoordsArray(const String&amp; string, int&amp; len)
</span><span class="cx"> {
</span><span class="cx">     unsigned length = string.length();
</span><del>-    const UChar* data = string.deprecatedCharacters();
</del><span class="cx">     StringBuffer&lt;UChar&gt; spacified(length);
</span><span class="cx">     for (unsigned i = 0; i &lt; length; i++) {
</span><del>-        UChar cc = data[i];
</del><ins>+        UChar cc = string[i];
</ins><span class="cx">         if (cc &gt; '9' || (cc &lt; '0' &amp;&amp; cc != '-' &amp;&amp; cc != '*' &amp;&amp; cc != '.'))
</span><span class="cx">             spacified[i] = ' ';
</span><span class="cx">         else
</span><span class="lines">@@ -101,18 +101,19 @@
</span><span class="cx"> 
</span><span class="cx">     str = str-&gt;simplifyWhiteSpace();
</span><span class="cx"> 
</span><del>-    len = countCharacter(str-&gt;deprecatedCharacters(), str-&gt;length(), ' ') + 1;
</del><ins>+    len = countCharacter(*str, ' ') + 1;
</ins><span class="cx">     auto r = std::make_unique&lt;Length[]&gt;(len);
</span><span class="cx"> 
</span><span class="cx">     int i = 0;
</span><span class="cx">     unsigned pos = 0;
</span><span class="cx">     size_t pos2;
</span><span class="cx"> 
</span><ins>+    auto upconvertedCharacters = StringView(str.get()).upconvertedCharacters();
</ins><span class="cx">     while ((pos2 = str-&gt;find(' ', pos)) != notFound) {
</span><del>-        r[i++] = parseLength(str-&gt;deprecatedCharacters() + pos, pos2 - pos);
</del><ins>+        r[i++] = parseLength(upconvertedCharacters + pos, pos2 - pos);
</ins><span class="cx">         pos = pos2+1;
</span><span class="cx">     }
</span><del>-    r[i] = parseLength(str-&gt;deprecatedCharacters() + pos, str-&gt;length() - pos);
</del><ins>+    r[i] = parseLength(upconvertedCharacters + pos, str-&gt;length() - pos);
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(i == len - 1);
</span><span class="cx"> 
</span><span class="lines">@@ -127,15 +128,16 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    len = countCharacter(str-&gt;deprecatedCharacters(), str-&gt;length(), ',') + 1;
</del><ins>+    len = countCharacter(*str, ',') + 1;
</ins><span class="cx">     auto r = std::make_unique&lt;Length[]&gt;(len);
</span><span class="cx"> 
</span><span class="cx">     int i = 0;
</span><span class="cx">     unsigned pos = 0;
</span><span class="cx">     size_t pos2;
</span><span class="cx"> 
</span><ins>+    auto upconvertedCharacters = StringView(str.get()).upconvertedCharacters();
</ins><span class="cx">     while ((pos2 = str-&gt;find(',', pos)) != notFound) {
</span><del>-        r[i++] = parseLength(str-&gt;deprecatedCharacters() + pos, pos2 - pos);
</del><ins>+        r[i++] = parseLength(upconvertedCharacters + pos, pos2 - pos);
</ins><span class="cx">         pos = pos2+1;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -143,7 +145,7 @@
</span><span class="cx"> 
</span><span class="cx">     // IE Quirk: If the last comma is the last char skip it and reduce len by one.
</span><span class="cx">     if (str-&gt;length()-pos &gt; 0)
</span><del>-        r[i] = parseLength(str-&gt;deprecatedCharacters() + pos, str-&gt;length() - pos);
</del><ins>+        r[i] = parseLength(upconvertedCharacters + pos, str-&gt;length() - pos);
</ins><span class="cx">     else
</span><span class="cx">         len--;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformLinkHashcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/LinkHash.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/LinkHash.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/LinkHash.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -214,10 +214,9 @@
</span><span class="cx"> LinkHash visitedLinkHash(const String&amp; url)
</span><span class="cx"> {
</span><span class="cx">     unsigned length = url.length();
</span><del>-
-    if (length &amp;&amp; url.is8Bit())
</del><ins>+    if (!length || url.is8Bit())
</ins><span class="cx">         return visitedLinkHashInline(url.characters8(), length);
</span><del>-    return visitedLinkHashInline(url.deprecatedCharacters(), length);
</del><ins>+    return visitedLinkHashInline(url.characters16(), length);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> LinkHash visitedLinkHash(const UChar* url, unsigned length)
</span><span class="lines">@@ -284,11 +283,6 @@
</span><span class="cx">     return;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void visitedURL(const URL&amp; base, const AtomicString&amp; attributeURL, Vector&lt;UChar, 512&gt;&amp; buffer)
-{
-    return visitedURLInline(base, attributeURL.string().deprecatedCharacters(), attributeURL.length(), buffer);
-}
-
</del><span class="cx"> LinkHash visitedLinkHash(const URL&amp; base, const AtomicString&amp; attributeURL)
</span><span class="cx"> {
</span><span class="cx">     if (attributeURL.isEmpty())
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformLinkHashh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/LinkHash.h (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/LinkHash.h        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/LinkHash.h        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -63,12 +63,6 @@
</span><span class="cx"> // look like a relative URL.
</span><span class="cx"> LinkHash visitedLinkHash(const URL&amp; base, const AtomicString&amp; attributeURL);
</span><span class="cx"> 
</span><del>-// Resolves the potentially relative URL &quot;attributeURL&quot; relative to the given
-// base URL, and returns the hash of the string that will be used for visited.
-// It will return an empty Vector in case of errors.
-void visitedURL(const URL&amp; base, const AtomicString&amp; attributeURL, Vector&lt;UChar, 512&gt;&amp;);
-
-
</del><span class="cx"> }  // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif  // LinkHash_h
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformSharedBuffercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/SharedBuffer.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/SharedBuffer.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/SharedBuffer.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -522,10 +522,18 @@
</span><span class="cx"> 
</span><span class="cx">     // Convert to runs of 8-bit characters.
</span><span class="cx">     char* p = buffer.data();
</span><del>-    const UChar* d = string.deprecatedCharacters();
-    WTF::Unicode::ConversionResult result = WTF::Unicode::convertUTF16ToUTF8(&amp;d, d + length, &amp;p, p + buffer.size(), true);
-    if (result != WTF::Unicode::conversionOK)
-        return 0;
</del><ins>+    WTF::Unicode::ConversionResult result;
+    if (length) {
+        if (string.is8Bit()) {
+            const LChar* d = string.characters8();
+            result = WTF::Unicode::convertLatin1ToUTF8(&amp;d, d + length, &amp;p, p + buffer.size());
+        } else {
+            const UChar* d = string.characters16();
+            result = WTF::Unicode::convertUTF16ToUTF8(&amp;d, d + length, &amp;p, p + buffer.size(), true);
+        }
+        if (result != WTF::Unicode::conversionOK)
+            return nullptr;
+    }
</ins><span class="cx"> 
</span><span class="cx">     buffer.shrink(p - buffer.data());
</span><span class="cx">     return SharedBuffer::adoptVector(buffer);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformURLcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/URL.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/URL.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/URL.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -588,7 +588,11 @@
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     bool ok = false;
</span><del>-    unsigned number = charactersToUIntStrict(m_string.deprecatedCharacters() + m_hostEnd + 1, m_portEnd - m_hostEnd - 1, &amp;ok);
</del><ins>+    unsigned number;
+    if (m_string.is8Bit())
+        number = charactersToUIntStrict(m_string.characters8() + m_hostEnd + 1, m_portEnd - m_hostEnd - 1, &amp;ok);
+    else
+        number = charactersToUIntStrict(m_string.characters16() + m_hostEnd + 1, m_portEnd - m_hostEnd - 1, &amp;ok);
</ins><span class="cx">     if (!ok || number &gt; maximumValidPortNumber)
</span><span class="cx">         return invalidPortNumber;
</span><span class="cx">     return number;
</span><span class="lines">@@ -1666,14 +1670,14 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (pathEnd == -1) {
</span><del>-        CString decoded = pathEncoding.encode(s.data(), s.size(), URLEncodedEntitiesForUnencodables);
</del><ins>+        CString decoded = pathEncoding.encode(StringView(s.data(), s.size()), URLEncodedEntitiesForUnencodables);
</ins><span class="cx">         output.resize(decoded.length());
</span><span class="cx">         memcpy(output.data(), decoded.data(), decoded.length());
</span><span class="cx">     } else {
</span><del>-        CString pathDecoded = pathEncoding.encode(s.data(), pathEnd, URLEncodedEntitiesForUnencodables);
</del><ins>+        CString pathDecoded = pathEncoding.encode(StringView(s.data(), pathEnd), URLEncodedEntitiesForUnencodables);
</ins><span class="cx">         // Unencodable characters in URLs are represented by converting
</span><span class="cx">         // them to XML entities and escaping non-alphanumeric characters.
</span><del>-        CString otherDecoded = encoding.encode(s.data() + pathEnd, s.size() - pathEnd, URLEncodedEntitiesForUnencodables);
</del><ins>+        CString otherDecoded = encoding.encode(StringView(s.data() + pathEnd, s.size() - pathEnd), URLEncodedEntitiesForUnencodables);
</ins><span class="cx"> 
</span><span class="cx">         output.resize(pathDecoded.length() + otherDecoded.length());
</span><span class="cx">         memcpy(output.data(), pathDecoded.data(), pathDecoded.length());
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsColorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/Color.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/Color.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/graphics/Color.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx">         return false;
</span><span class="cx">     if (name.is8Bit())
</span><span class="cx">         return parseHexColor(name.characters8(), name.length(), rgb);
</span><del>-    return parseHexColor(name.deprecatedCharacters(), name.length(), rgb);
</del><ins>+    return parseHexColor(name.characters16(), name.length(), rgb);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int differenceSquared(const Color&amp; c1, const Color&amp; c2)
</span><span class="lines">@@ -182,7 +182,7 @@
</span><span class="cx">         if (name.is8Bit())
</span><span class="cx">             m_valid = parseHexColor(name.characters8() + 1, name.length() - 1, m_color);
</span><span class="cx">         else
</span><del>-            m_valid = parseHexColor(name.deprecatedCharacters() + 1, name.length() - 1, m_color);
</del><ins>+            m_valid = parseHexColor(name.characters16() + 1, name.length() - 1, m_color);
</ins><span class="cx">     } else
</span><span class="cx">         setNamedColor(name);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsStringTruncatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/StringTruncator.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/StringTruncator.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/graphics/StringTruncator.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -89,12 +89,10 @@
</span><span class="cx">     unsigned truncatedLength = shouldInsertEllipsis ? omitStart + 1 + (length - omitEnd) : length - (omitEnd - omitStart);
</span><span class="cx">     ASSERT(truncatedLength &lt;= length);
</span><span class="cx"> 
</span><del>-    memcpy(buffer, string.deprecatedCharacters(), sizeof(UChar) * omitStart);
-    if (shouldInsertEllipsis) {
-        buffer[omitStart] = horizontalEllipsis;
-        memcpy(&amp;buffer[omitStart + 1], &amp;string.deprecatedCharacters()[omitEnd], sizeof(UChar) * (length - omitEnd));
-    } else
-        memcpy(&amp;buffer[omitStart], &amp;string.deprecatedCharacters()[omitEnd], sizeof(UChar) * (length - omitEnd));
</del><ins>+    StringView(string).substring(0, omitStart).getCharactersWithUpconvert(buffer);
+    if (shouldInsertEllipsis)
+        buffer[omitStart++] = horizontalEllipsis;
+    StringView(string).substring(omitEnd, length - omitEnd).getCharactersWithUpconvert(&amp;buffer[omitStart + 1]);
</ins><span class="cx">     return truncatedLength;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -119,7 +117,7 @@
</span><span class="cx">     unsigned keepLength = textBreakAtOrPreceding(it, keepCount);
</span><span class="cx">     unsigned truncatedLength = shouldInsertEllipsis ? keepLength + 1 : keepLength;
</span><span class="cx"> 
</span><del>-    memcpy(buffer, string.deprecatedCharacters(), sizeof(UChar) * keepLength);
</del><ins>+    StringView(string).substring(0, keepLength).getCharactersWithUpconvert(buffer);
</ins><span class="cx">     if (shouldInsertEllipsis)
</span><span class="cx">         buffer[keepLength] = horizontalEllipsis;
</span><span class="cx"> 
</span><span class="lines">@@ -133,7 +131,7 @@
</span><span class="cx"> 
</span><span class="cx">     NonSharedCharacterBreakIterator it(StringView(string).substring(0, length));
</span><span class="cx">     unsigned keepLength = textBreakAtOrPreceding(it, keepCount);
</span><del>-    memcpy(buffer, string.deprecatedCharacters(), sizeof(UChar) * keepLength);
</del><ins>+    StringView(string).substring(0, keepLength).getCharactersWithUpconvert(buffer);
</ins><span class="cx"> 
</span><span class="cx">     return keepLength;
</span><span class="cx"> }
</span><span class="lines">@@ -145,7 +143,7 @@
</span><span class="cx"> 
</span><span class="cx">     TextBreakIterator* it = wordBreakIterator(StringView(string).substring(0, length));
</span><span class="cx">     unsigned keepLength = textBreakAtOrPreceding(it, keepCount);
</span><del>-    memcpy(buffer, string.deprecatedCharacters(), sizeof(UChar) * keepLength);
</del><ins>+    StringView(string).substring(0, keepLength).getCharactersWithUpconvert(buffer);
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     // FIXME: We should guard this code behind an editing behavior. Then we can remove the PLATFORM(IOS)-guard.
</span><span class="lines">@@ -178,10 +176,10 @@
</span><span class="cx"> 
</span><span class="cx">     if (shouldInsertEllipsis) {
</span><span class="cx">         buffer[0] = horizontalEllipsis;
</span><del>-        memcpy(&amp;buffer[1], &amp;string.deprecatedCharacters()[adjustedStartIndex], sizeof(UChar) * (length - adjustedStartIndex + 1));
</del><ins>+        StringView(string).substring(adjustedStartIndex, length - adjustedStartIndex + 1).getCharactersWithUpconvert(&amp;buffer[1]);
</ins><span class="cx">         return length - adjustedStartIndex + 1;
</span><span class="cx">     }
</span><del>-    memcpy(&amp;buffer[0], &amp;string.deprecatedCharacters()[adjustedStartIndex], sizeof(UChar) * (length - adjustedStartIndex + 1));
</del><ins>+    StringView(string).substring(adjustedStartIndex, length - adjustedStartIndex + 1).getCharactersWithUpconvert(&amp;buffer[0]);
</ins><span class="cx">     return length - adjustedStartIndex;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -218,7 +216,7 @@
</span><span class="cx">         truncatedLength = centerTruncateToBuffer(string, length, keepCount, stringBuffer, shouldInsertEllipsis);
</span><span class="cx">     } else {
</span><span class="cx">         keepCount = length;
</span><del>-        memcpy(stringBuffer, string.deprecatedCharacters(), sizeof(UChar) * length);
</del><ins>+        StringView(string).getCharactersWithUpconvert(stringBuffer);
</ins><span class="cx">         truncatedLength = length;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsTextRunh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/TextRun.h (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/TextRun.h        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/graphics/TextRun.h        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -116,11 +116,11 @@
</span><span class="cx">         , m_disableSpacing(false)
</span><span class="cx">         , m_tabSize(0)
</span><span class="cx">     {
</span><del>-        if (m_charactersLength &amp;&amp; s.is8Bit()) {
</del><ins>+        if (!m_charactersLength || s.is8Bit()) {
</ins><span class="cx">             m_data.characters8 = s.characters8();
</span><span class="cx">             m_is8Bit = true;
</span><span class="cx">         } else {
</span><del>-            m_data.characters16 = s.deprecatedCharacters();
</del><ins>+            m_data.characters16 = s.characters16();
</ins><span class="cx">             m_is8Bit = false;
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -1246,7 +1246,7 @@
</span><span class="cx">         initDataView-&gt;set&lt;uint32_t&gt;(0, keyURISize, true);
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;Uint16Array&gt; keyURIArray = Uint16Array::create(initDataBuffer, 4, keyURI.length());
</span><del>-        keyURIArray-&gt;setRange(keyURI.deprecatedCharacters(), keyURI.length() / sizeof(unsigned char), 0);
</del><ins>+        keyURIArray-&gt;setRange(StringView(keyURI).upconvertedCharacters(), keyURI.length() / sizeof(unsigned char), 0);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(ENCRYPTED_MEDIA)
</span><span class="cx">         if (!player()-&gt;keyNeeded(&quot;com.apple.lskd&quot;, emptyString(), static_cast&lt;const unsigned char*&gt;(initDataBuffer-&gt;data()), initDataBuffer-&gt;byteLength()))
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsharfbuzzHarfBuzzFaceCairocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -44,6 +44,7 @@
</span><span class="cx"> #include FT_TRUETYPE_TABLES_H
</span><span class="cx"> #include &lt;hb.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -112,7 +113,7 @@
</span><span class="cx">     if (result.isNewEntry) {
</span><span class="cx">         cairo_glyph_t* glyphs = 0;
</span><span class="cx">         int numGlyphs = 0;
</span><del>-        CString utf8Codepoint = UTF8Encoding().encode(reinterpret_cast&lt;UChar*&gt;(&amp;unicode), 1, QuestionMarksForUnencodables);
</del><ins>+        CString utf8Codepoint = UTF8Encoding().encode(StringView(reinterpret_cast&lt;UChar*&gt;(&amp;unicode), 1), QuestionMarksForUnencodables);
</ins><span class="cx">         if (cairo_scaled_font_text_to_glyphs(scaledFont, 0, 0, utf8Codepoint.data(), utf8Codepoint.length(), &amp;glyphs, &amp;numGlyphs, 0, 0, 0) != CAIRO_STATUS_SUCCESS)
</span><span class="cx">             return false;
</span><span class="cx">         if (!numGlyphs)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkDataURLcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/DataURL.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/DataURL.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/network/DataURL.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> #include &quot;TextEncoding.h&quot;
</span><span class="cx"> #include &lt;wtf/text/Base64.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -84,7 +85,7 @@
</span><span class="cx">         data = decodeURLEscapeSequences(data, encoding);
</span><span class="cx">         handle-&gt;client()-&gt;didReceiveResponse(handle, response);
</span><span class="cx"> 
</span><del>-        CString encodedData = encoding.encode(data.deprecatedCharacters(), data.length(), URLEncodedEntitiesForUnencodables);
</del><ins>+        CString encodedData = encoding.encode(data, URLEncodedEntitiesForUnencodables);
</ins><span class="cx">         response.setExpectedContentLength(encodedData.length());
</span><span class="cx">         if (encodedData.length())
</span><span class="cx">             handle-&gt;client()-&gt;didReceiveData(handle, encodedData.data(), encodedData.length(), 0);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkFormDataBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/FormDataBuilder.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/FormDataBuilder.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/network/FormDataBuilder.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #include &quot;Blob.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;TextEncoding.h&quot;
</span><del>-
</del><span class="cx"> #include &lt;limits&gt;
</span><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="cx"> #include &lt;wtf/HexNumber.h&gt;
</span><del>-#include &lt;wtf/text/CString.h&gt;
</del><span class="cx"> #include &lt;wtf/RandomNumber.h&gt;
</span><ins>+#include &lt;wtf/text/CString.h&gt;
+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -61,12 +61,11 @@
</span><span class="cx">     size_t length = string.length();
</span><span class="cx">     for (size_t i = 0; i &lt; length; ++i) {
</span><span class="cx">         char c = string.data()[i];
</span><del>-
</del><span class="cx">         switch (c) {
</span><del>-        case  0x0a:
</del><ins>+        case 0xA:
</ins><span class="cx">             append(buffer, &quot;%0A&quot;);
</span><span class="cx">             break;
</span><del>-        case 0x0d:
</del><ins>+        case 0xD:
</ins><span class="cx">             append(buffer, &quot;%0D&quot;);
</span><span class="cx">             break;
</span><span class="cx">         case '&quot;':
</span><span class="lines">@@ -86,11 +85,9 @@
</span><span class="cx">     Vector&lt;String&gt; charsets;
</span><span class="cx">     normalizedAcceptCharset.split(' ', charsets);
</span><span class="cx"> 
</span><del>-    TextEncoding encoding;
-
-    Vector&lt;String&gt;::const_iterator end = charsets.end();
-    for (Vector&lt;String&gt;::const_iterator it = charsets.begin(); it != end; ++it) {
-        if ((encoding = TextEncoding(*it)).isValid())
</del><ins>+    for (auto&amp; charset : charsets) {
+        TextEncoding encoding(charset);
+        if (encoding.isValid())
</ins><span class="cx">             return encoding;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -165,7 +162,7 @@
</span><span class="cx">     // FIXME: This loses data irreversibly if the filename includes characters you can't encode
</span><span class="cx">     // in the website's character set.
</span><span class="cx">     append(buffer, &quot;; filename=\&quot;&quot;);
</span><del>-    appendQuotedString(buffer, encoding.encode(filename.deprecatedCharacters(), filename.length(), QuestionMarksForUnencodables));
</del><ins>+    appendQuotedString(buffer, encoding.encode(filename, QuestionMarksForUnencodables));
</ins><span class="cx">     append(buffer, '&quot;');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformsqlSQLiteStatementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/sql/SQLiteStatement.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/sql/SQLiteStatement.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/sql/SQLiteStatement.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> #include &quot;SQLValue.h&quot;
</span><span class="cx"> #include &lt;sqlite3.h&gt;
</span><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><del>-#include &lt;wtf/text/StringImpl.h&gt;
</del><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> // SQLite 3.6.16 makes sqlite3_prepare_v2 automatically retry preparing the statement
</span><span class="cx"> // once if the database scheme has changed. We rely on this behavior.
</span><span class="lines">@@ -177,12 +177,13 @@
</span><span class="cx"> {
</span><span class="cx">     // String::characters() returns 0 for the empty string, which SQLite
</span><span class="cx">     // treats as a null, so we supply a non-null pointer for that case.
</span><ins>+    auto upconvertedCharacters = StringView(text).upconvertedCharacters();
</ins><span class="cx">     UChar anyCharacter = 0;
</span><span class="cx">     const UChar* characters;
</span><span class="cx">     if (text.isEmpty() &amp;&amp; !text.isNull())
</span><span class="cx">         characters = &amp;anyCharacter;
</span><span class="cx">     else
</span><del>-        characters = text.deprecatedCharacters();
</del><ins>+        characters = upconvertedCharacters;
</ins><span class="cx"> 
</span><span class="cx">     return bindBlob(index, characters, text.length() * sizeof(UChar));
</span><span class="cx"> }
</span><span class="lines">@@ -195,12 +196,13 @@
</span><span class="cx"> 
</span><span class="cx">     // String::characters() returns 0 for the empty string, which SQLite
</span><span class="cx">     // treats as a null, so we supply a non-null pointer for that case.
</span><ins>+    auto upconvertedCharacters = StringView(text).upconvertedCharacters();
</ins><span class="cx">     UChar anyCharacter = 0;
</span><span class="cx">     const UChar* characters;
</span><span class="cx">     if (text.isEmpty() &amp;&amp; !text.isNull())
</span><span class="cx">         characters = &amp;anyCharacter;
</span><span class="cx">     else
</span><del>-        characters = text.deprecatedCharacters();
</del><ins>+        characters = upconvertedCharacters;
</ins><span class="cx"> 
</span><span class="cx">     return sqlite3_bind_text16(m_statement, index, characters, sizeof(UChar) * text.length(), SQLITE_TRANSIENT);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextDecodeEscapeSequencesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/DecodeEscapeSequences.h (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/DecodeEscapeSequences.h        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/text/DecodeEscapeSequences.h        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -51,19 +51,19 @@
</span><span class="cx">         }
</span><span class="cx">         return runEnd;
</span><span class="cx">     }
</span><del>-    static String decodeRun(const UChar* run, size_t runLength, const TextEncoding&amp;)
</del><ins>+    static String decodeRun(StringView run, const TextEncoding&amp;)
</ins><span class="cx">     {
</span><span class="cx">         // Each %u-escape sequence represents a UTF-16 code unit.
</span><span class="cx">         // See &lt;http://www.w3.org/International/iri-edit/draft-duerst-iri.html#anchor29&gt;.
</span><span class="cx">         // For 16-bit escape sequences, we know that findEndOfRun() has given us a contiguous run of sequences
</span><span class="cx">         // without any intervening characters, so decode the run without additional checks.
</span><del>-        size_t numberOfSequences = runLength / sequenceSize;
</del><ins>+        auto numberOfSequences = run.length() / sequenceSize;
</ins><span class="cx">         StringBuilder builder;
</span><span class="cx">         builder.reserveCapacity(numberOfSequences);
</span><span class="cx">         while (numberOfSequences--) {
</span><span class="cx">             UChar codeUnit = (toASCIIHexValue(run[2]) &lt;&lt; 12) | (toASCIIHexValue(run[3]) &lt;&lt; 8) | (toASCIIHexValue(run[4]) &lt;&lt; 4) | toASCIIHexValue(run[5]);
</span><span class="cx">             builder.append(codeUnit);
</span><del>-            run += sequenceSize;
</del><ins>+            run = run.substring(sequenceSize);
</ins><span class="cx">         }
</span><span class="cx">         return builder.toString();
</span><span class="cx">     }
</span><span class="lines">@@ -96,21 +96,20 @@
</span><span class="cx">         }
</span><span class="cx">         return runEnd;
</span><span class="cx">     }
</span><del>-    static String decodeRun(const UChar* run, size_t runLength, const TextEncoding&amp; encoding)
</del><ins>+    static String decodeRun(StringView run, const TextEncoding&amp; encoding)
</ins><span class="cx">     {
</span><span class="cx">         // For URL escape sequences, we know that findEndOfRun() has given us a run where every %-sign introduces
</span><span class="cx">         // a valid escape sequence, but there may be characters between the sequences.
</span><span class="cx">         Vector&lt;char, 512&gt; buffer;
</span><del>-        buffer.resize(runLength); // Unescaping hex sequences only makes the length smaller.
</del><ins>+        buffer.resize(run.length()); // Unescaping hex sequences only makes the length smaller.
</ins><span class="cx">         char* p = buffer.data();
</span><del>-        const UChar* runEnd = run + runLength;
-        while (run &lt; runEnd) {
</del><ins>+        while (!run.isEmpty()) {
</ins><span class="cx">             if (run[0] == '%') {
</span><span class="cx">                 *p++ = (toASCIIHexValue(run[1]) &lt;&lt; 4) | toASCIIHexValue(run[2]);
</span><del>-                run += sequenceSize;
</del><ins>+                run = run.substring(sequenceSize);
</ins><span class="cx">             } else {
</span><span class="cx">                 *p++ = run[0];
</span><del>-                run += 1;
</del><ins>+                run = run.substring(1);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         ASSERT(buffer.size() &gt;= static_cast&lt;size_t&gt;(p - buffer.data())); // Prove buffer not overrun.
</span><span class="lines">@@ -134,7 +133,7 @@
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        String decoded = EscapeSequence::decodeRun(string.deprecatedCharacters() + encodedRunPosition, encodedRunEnd - encodedRunPosition, encoding);
</del><ins>+        String decoded = EscapeSequence::decodeRun(StringView(string).substring(encodedRunPosition, encodedRunEnd - encodedRunPosition), encoding);
</ins><span class="cx">         if (decoded.isEmpty())
</span><span class="cx">             continue;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextHyphenationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/Hyphenation.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/Hyphenation.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/text/Hyphenation.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include &quot;Hyphenation.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;NotImplemented.h&quot;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -35,7 +36,7 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-size_t lastHyphenLocation(const UChar* /* characters */, size_t /* length */, size_t /* beforeIndex */, const AtomicString&amp; /* localeIdentifier */)
</del><ins>+size_t lastHyphenLocation(StringView, size_t /* beforeIndex */, const AtomicString&amp; /* localeIdentifier */)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="cx">     return 0;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextHyphenationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/Hyphenation.h (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/Hyphenation.h        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/text/Hyphenation.h        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> bool canHyphenate(const AtomicString&amp; localeIdentifier);
</span><del>-size_t lastHyphenLocation(const UChar*, size_t length, size_t beforeIndex, const AtomicString&amp; localeIdentifier);
</del><ins>+size_t lastHyphenLocation(StringView, size_t beforeIndex, const AtomicString&amp; localeIdentifier);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextTextBreakIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/TextBreakIterator.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/TextBreakIterator.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/text/TextBreakIterator.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> #include &lt;mutex&gt;
</span><span class="cx"> #include &lt;wtf/Atomics.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringView.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -43,18 +42,21 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> static TextBreakIterator* initializeIteratorWithRules(const char* breakRules)
</span><span class="cx"> {
</span><span class="cx">     UParseError parseStatus;
</span><span class="cx">     UErrorCode openStatus = U_ZERO_ERROR;
</span><del>-    String rules(breakRules);
-    TextBreakIterator* iterator = reinterpret_cast&lt;TextBreakIterator*&gt;(ubrk_openRules(rules.deprecatedCharacters(), rules.length(), 0, 0, &amp;parseStatus, &amp;openStatus));
</del><ins>+    unsigned length = strlen(breakRules);
+    auto upconvertedCharacters = StringView(reinterpret_cast&lt;const LChar*&gt;(breakRules), length).upconvertedCharacters();
+    TextBreakIterator* iterator = reinterpret_cast&lt;TextBreakIterator*&gt;(ubrk_openRules(upconvertedCharacters, length, 0, 0, &amp;parseStatus, &amp;openStatus));
</ins><span class="cx">     ASSERT_WITH_MESSAGE(U_SUCCESS(openStatus), &quot;ICU could not open a break iterator: %s (%d)&quot;, u_errorName(openStatus), openStatus);
</span><span class="cx">     return iterator;
</span><span class="cx"> }
</span><del>-#endif // !PLATFORM(IOS)
</del><span class="cx"> 
</span><ins>+#endif
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx"> // Iterator text setting
</span><span class="cx"> 
</span><span class="cx"> static TextBreakIterator* setTextForIterator(TextBreakIterator&amp; iterator, StringView string)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextTextEncodingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/TextEncoding.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/TextEncoding.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/text/TextEncoding.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -64,38 +64,41 @@
</span><span class="cx">     return newTextCodec(*this)-&gt;decode(data, length, true, stopOnError, sawError);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-CString TextEncoding::encode(const UChar* characters, size_t length, UnencodableHandling handling) const
</del><ins>+CString TextEncoding::encode(StringView text, UnencodableHandling handling) const
</ins><span class="cx"> {
</span><span class="cx">     if (!m_name)
</span><span class="cx">         return CString();
</span><span class="cx"> 
</span><del>-    if (!length)
</del><ins>+    if (text.isEmpty())
</ins><span class="cx">         return &quot;&quot;;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: What's the right place to do normalization?
</span><span class="cx">     // It's a little strange to do it inside the encode function.
</span><span class="cx">     // Perhaps normalization should be an explicit step done before calling encode.
</span><span class="cx"> 
</span><del>-    const UChar* source = characters;
-    size_t sourceLength = length;
</del><ins>+    auto upconvertedCharacters = text.upconvertedCharacters();
</ins><span class="cx"> 
</span><ins>+    const UChar* source = upconvertedCharacters;
+    size_t sourceLength = text.length();
+
</ins><span class="cx">     Vector&lt;UChar&gt; normalizedCharacters;
</span><span class="cx"> 
</span><span class="cx">     UErrorCode err = U_ZERO_ERROR;
</span><span class="cx">     if (unorm_quickCheck(source, sourceLength, UNORM_NFC, &amp;err) != UNORM_YES) {
</span><span class="cx">         // First try using the length of the original string, since normalization to NFC rarely increases length.
</span><span class="cx">         normalizedCharacters.grow(sourceLength);
</span><del>-        int32_t normalizedLength = unorm_normalize(source, length, UNORM_NFC, 0, normalizedCharacters.data(), length, &amp;err);
</del><ins>+        int32_t normalizedLength = unorm_normalize(source, sourceLength, UNORM_NFC, 0, normalizedCharacters.data(), sourceLength, &amp;err);
</ins><span class="cx">         if (err == U_BUFFER_OVERFLOW_ERROR) {
</span><span class="cx">             err = U_ZERO_ERROR;
</span><span class="cx">             normalizedCharacters.resize(normalizedLength);
</span><del>-            normalizedLength = unorm_normalize(source, length, UNORM_NFC, 0, normalizedCharacters.data(), normalizedLength, &amp;err);
</del><ins>+            normalizedLength = unorm_normalize(source, sourceLength, UNORM_NFC, 0, normalizedCharacters.data(), normalizedLength, &amp;err);
</ins><span class="cx">         }
</span><span class="cx">         ASSERT(U_SUCCESS(err));
</span><span class="cx"> 
</span><span class="cx">         source = normalizedCharacters.data();
</span><span class="cx">         sourceLength = normalizedLength;
</span><span class="cx">     }
</span><ins>+
</ins><span class="cx">     return newTextCodec(*this)-&gt;encode(source, sourceLength, handling);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextTextEncodingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/TextEncoding.h (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/TextEncoding.h        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/text/TextEncoding.h        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">             return decode(str, length, false, ignored);
</span><span class="cx">         }
</span><span class="cx">         String decode(const char*, size_t length, bool stopOnError, bool&amp; sawError) const;
</span><del>-        CString encode(const UChar*, size_t length, UnencodableHandling) const;
</del><ins>+        CString encode(StringView, UnencodableHandling) const;
</ins><span class="cx"> 
</span><span class="cx">         UChar backslashAsCurrencySymbol() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextTextEncodingRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/TextEncodingRegistry.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/TextEncodingRegistry.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/text/TextEncodingRegistry.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -336,12 +336,12 @@
</span><span class="cx"> const char* atomicCanonicalTextEncodingName(const String&amp; alias)
</span><span class="cx"> {
</span><span class="cx">     if (!alias.length())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     if (alias.is8Bit())
</span><del>-        return atomicCanonicalTextEncodingName&lt;LChar&gt;(alias.characters8(), alias.length());
</del><ins>+        return atomicCanonicalTextEncodingName(alias.characters8(), alias.length());
</ins><span class="cx"> 
</span><del>-    return atomicCanonicalTextEncodingName&lt;UChar&gt;(alias.deprecatedCharacters(), alias.length());
</del><ins>+    return atomicCanonicalTextEncodingName(alias.characters16(), alias.length());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool noExtendedTextEncodingNameUsed()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextcfHyphenationCFcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/cf/HyphenationCF.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/cf/HyphenationCF.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/platform/text/cf/HyphenationCF.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include &quot;TextBreakIteratorInternalICU.h&quot;
</span><span class="cx"> #include &lt;wtf/ListHashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -73,15 +74,13 @@
</span><span class="cx"> #endif // PLATFORM(IOS)
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-size_t lastHyphenLocation(const UChar* characters, size_t length, size_t beforeIndex, const AtomicString&amp; localeIdentifier)
</del><ins>+size_t lastHyphenLocation(StringView text, size_t beforeIndex, const AtomicString&amp; localeIdentifier)
</ins><span class="cx"> {
</span><del>-    RetainPtr&lt;CFStringRef&gt; string = adoptCF(CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, reinterpret_cast&lt;const UniChar*&gt;(characters), length, kCFAllocatorNull));
-
</del><span class="cx">     RetainPtr&lt;CFLocaleRef&gt; locale = cfLocaleCache().get(localeIdentifier);
</span><span class="cx">     ASSERT(locale);
</span><span class="cx"> 
</span><span class="cx">     CFOptionFlags searchAcrossWordBoundaries = 1;
</span><del>-    CFIndex result = CFStringGetHyphenationLocationBeforeIndex(string.get(), beforeIndex, CFRangeMake(0, length), searchAcrossWordBoundaries, locale.get(), 0);
</del><ins>+    CFIndex result = CFStringGetHyphenationLocationBeforeIndex(text.createCFStringWithoutCopying().get(), beforeIndex, CFRangeMake(0, text.length()), searchAcrossWordBoundaries, locale.get(), 0);
</ins><span class="cx">     return result == kCFNotFound ? 0 : result;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlock.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -5277,9 +5277,9 @@
</span><span class="cx"> {
</span><span class="cx">     unsigned length = string.length();
</span><span class="cx"> 
</span><del>-    if (length &amp;&amp; string.is8Bit())
</del><ins>+    if (!length || string.is8Bit())
</ins><span class="cx">         return constructTextRunInternal(context, font, string.characters8(), length, style, expansion, flags);
</span><del>-    return constructTextRunInternal(context, font, string.deprecatedCharacters(), length, style, expansion, flags);
</del><ins>+    return constructTextRunInternal(context, font, string.characters16(), length, style, expansion, flags);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderBlock* RenderBlock::createAnonymousWithParentRendererAndDisplay(const RenderObject* parent, EDisplay display)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderCombineTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderCombineText.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderCombineText.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/rendering/RenderCombineText.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -60,9 +60,6 @@
</span><span class="cx"> 
</span><span class="cx"> float RenderCombineText::width(unsigned from, unsigned length, const Font&amp; font, float xPosition, HashSet&lt;const SimpleFontData*&gt;* fallbackFonts, GlyphOverflow* glyphOverflow) const
</span><span class="cx"> {
</span><del>-    if (!deprecatedCharacters())
-        return 0;
-
</del><span class="cx">     if (m_isCombined)
</span><span class="cx">         return font.size();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderText.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderText.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/rendering/RenderText.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -624,15 +624,15 @@
</span><span class="cx">     return font.width(RenderBlock::constructTextRun(renderer, font, style.hyphenString().string(), style));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static float maxWordFragmentWidth(RenderText* renderer, const RenderStyle&amp; style, const Font&amp; font, const UChar* word, int wordLength, int minimumPrefixLength, int minimumSuffixLength, int&amp; suffixStart, HashSet&lt;const SimpleFontData*&gt;&amp; fallbackFonts, GlyphOverflow&amp; glyphOverflow)
</del><ins>+static float maxWordFragmentWidth(RenderText* renderer, const RenderStyle&amp; style, const Font&amp; font, StringView word, int minimumPrefixLength, unsigned minimumSuffixLength, int&amp; suffixStart, HashSet&lt;const SimpleFontData*&gt;&amp; fallbackFonts, GlyphOverflow&amp; glyphOverflow)
</ins><span class="cx"> {
</span><span class="cx">     suffixStart = 0;
</span><del>-    if (wordLength &lt;= minimumSuffixLength)
</del><ins>+    if (word.length() &lt;= minimumSuffixLength)
</ins><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;int, 8&gt; hyphenLocations;
</span><del>-    int hyphenLocation = wordLength - minimumSuffixLength;
-    while ((hyphenLocation = lastHyphenLocation(word, wordLength, hyphenLocation, style.locale())) &gt;= minimumPrefixLength)
</del><ins>+    int hyphenLocation = word.length() - minimumSuffixLength;
+    while ((hyphenLocation = lastHyphenLocation(word, hyphenLocation, style.locale())) &gt;= minimumPrefixLength)
</ins><span class="cx">         hyphenLocations.append(hyphenLocation);
</span><span class="cx"> 
</span><span class="cx">     if (hyphenLocations.isEmpty())
</span><span class="lines">@@ -645,7 +645,7 @@
</span><span class="cx">     for (size_t k = 0; k &lt; hyphenLocations.size(); ++k) {
</span><span class="cx">         int fragmentLength = hyphenLocations[k] - suffixStart;
</span><span class="cx">         StringBuilder fragmentWithHyphen;
</span><del>-        fragmentWithHyphen.append(word + suffixStart, fragmentLength);
</del><ins>+        fragmentWithHyphen.append(word.substring(suffixStart, fragmentLength));
</ins><span class="cx">         fragmentWithHyphen.append(style.hyphenString());
</span><span class="cx"> 
</span><span class="cx">         TextRun run = RenderBlock::constructTextRun(renderer, font, fragmentWithHyphen.deprecatedCharacters(), fragmentWithHyphen.length(), style);
</span><span class="lines">@@ -797,7 +797,7 @@
</span><span class="cx"> 
</span><span class="cx">             if (w &gt; maxWordWidth) {
</span><span class="cx">                 int suffixStart;
</span><del>-                float maxFragmentWidth = maxWordFragmentWidth(this, style, font, deprecatedCharacters() + i, wordLen, minimumPrefixLength, minimumSuffixLength, suffixStart, fallbackFonts, glyphOverflow);
</del><ins>+                float maxFragmentWidth = maxWordFragmentWidth(this, style, font, StringView(m_text).substring(i, wordLen), minimumPrefixLength, minimumSuffixLength, suffixStart, fallbackFonts, glyphOverflow);
</ins><span class="cx"> 
</span><span class="cx">                 if (suffixStart) {
</span><span class="cx">                     float suffixWidth;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderinglineBreakingContextInlineHeadersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -597,11 +597,11 @@
</span><span class="cx">     if (prefixLength &lt; minimumPrefixLength)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    prefixLength = lastHyphenLocation(text-&gt;deprecatedCharacters() + lastSpace, pos - lastSpace, std::min(prefixLength, pos - lastSpace - minimumSuffixLength) + 1, localeIdentifier);
</del><ins>+    prefixLength = lastHyphenLocation(StringView(text-&gt;text()).substring(lastSpace, pos - lastSpace), std::min(prefixLength, pos - lastSpace - minimumSuffixLength) + 1, localeIdentifier);
</ins><span class="cx">     if (!prefixLength || prefixLength &lt; minimumPrefixLength)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // When lastSapce is a space, which it always is except sometimes at the beginning of a line or after collapsed
</del><ins>+    // When lastSpace is a space, which it always is except sometimes at the beginning of a line or after collapsed
</ins><span class="cx">     // space, it should not count towards hyphenate-limit-before.
</span><span class="cx">     if (prefixLength == minimumPrefixLength) {
</span><span class="cx">         UChar characterAtLastSpace = text-&gt;characterAt(lastSpace);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgSVGTextLayoutEnginecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -436,7 +436,8 @@
</span><span class="cx">     Vector&lt;SVGTextMetrics&gt;&amp; visualMetricsValues = text-&gt;layoutAttributes()-&gt;textMetricsValues();
</span><span class="cx">     ASSERT(!visualMetricsValues.isEmpty());
</span><span class="cx"> 
</span><del>-    const UChar* characters = text-&gt;deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(text-&gt;text()).upconvertedCharacters();
+    const UChar* characters = upconvertedCharacters;
</ins><span class="cx">     const Font&amp; font = style-&gt;font();
</span><span class="cx"> 
</span><span class="cx">     SVGTextLayoutEngineSpacing spacingLayout(font);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgSVGTextMetricscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/SVGTextMetrics.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/SVGTextMetrics.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/rendering/svg/SVGTextMetrics.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx">     m_height = text-&gt;scaledFont().fontMetrics().floatHeight() / scalingFactor;
</span><span class="cx">     if (needsContext) {
</span><span class="cx">         m_glyph.isValid = true;
</span><del>-        m_glyph.unicodeString = String(text-&gt;deprecatedCharacters() + position, length);
</del><ins>+        m_glyph.unicodeString = text-&gt;text()-&gt;substring(position, length);
</ins><span class="cx">         m_glyph.name = glyphName;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnglecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAngle.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAngle.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGAngle.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -140,7 +140,8 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     float valueInSpecifiedUnits = 0;
</span><del>-    const UChar* ptr = value.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(value).upconvertedCharacters();
+    const UChar* ptr = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = ptr + value.length();
</span><span class="cx"> 
</span><span class="cx">     if (!parseNumber(ptr, end, valueInSpecifiedUnits, false)) {
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimateMotionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimateMotionElement.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimateMotionElement.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGAnimateMotionElement.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> #include &quot;SVGTransformList.h&quot;
</span><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx">     
</span><span class="lines">@@ -156,7 +157,8 @@
</span><span class="cx"> {
</span><span class="cx">     if (s.isEmpty())
</span><span class="cx">         return false;
</span><del>-    const UChar* cur = s.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(s).upconvertedCharacters();
+    const UChar* cur = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = cur + s.length();
</span><span class="cx">     
</span><span class="cx">     if (!skipOptionalSVGSpaces(cur, end))
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimationElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimationElement.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimationElement.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGAnimationElement.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -92,7 +93,9 @@
</span><span class="cx">     result.clear();
</span><span class="cx">     if (parse.isEmpty())
</span><span class="cx">         return;
</span><del>-    const UChar* cur = parse.deprecatedCharacters();
</del><ins>+
+    auto upconvertedCharacters = StringView(parse).upconvertedCharacters();
+    const UChar* cur = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = cur + parse.length();
</span><span class="cx"> 
</span><span class="cx">     skipOptionalSVGSpaces(cur, end);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFitToViewBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFitToViewBox.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFitToViewBox.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGFitToViewBox.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -29,15 +29,15 @@
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><span class="cx"> #include &quot;SVGPreserveAspectRatio.h&quot;
</span><del>-#include &lt;wtf/text/StringImpl.h&gt;
</del><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> bool SVGFitToViewBox::parseViewBox(Document* doc, const String&amp; s, FloatRect&amp; viewBox)
</span><span class="cx"> {
</span><del>-    const UChar* c = s.deprecatedCharacters();
-    const UChar* end = c + s.length();
-    return parseViewBox(doc, c, end, viewBox, true);
</del><ins>+    auto upconvertedCharacters = StringView(s).upconvertedCharacters();
+    const UChar* characters = upconvertedCharacters;
+    return parseViewBox(doc, characters, characters + s.length(), viewBox, true);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFitToViewBox::parseViewBox(Document* doc, const UChar*&amp; c, const UChar* end, FloatRect&amp; viewBox, bool validate)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFontDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFontData.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFontData.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGFontData.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -41,6 +41,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+static String createStringWithMirroredCharacters(StringView);
+
</ins><span class="cx"> SVGFontData::SVGFontData(SVGFontFaceElement* fontFaceElement)
</span><span class="cx">     : m_svgFontFaceElement(fontFaceElement)
</span><span class="cx">     , m_horizontalOriginX(fontFaceElement-&gt;horizontalOriginX())
</span><span class="lines">@@ -146,7 +148,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (mirror)
</span><del>-        remainingTextInRun = createStringWithMirroredCharacters(remainingTextInRun.deprecatedCharacters(), remainingTextInRun.length());
</del><ins>+        remainingTextInRun = createStringWithMirroredCharacters(remainingTextInRun);
</ins><span class="cx">     if (!currentCharacter &amp;&amp; arabicForms.isEmpty())
</span><span class="cx">         arabicForms = charactersWithArabicForm(remainingTextInRun, mirror);
</span><span class="cx"> 
</span><span class="lines">@@ -287,18 +289,16 @@
</span><span class="cx">     return haveGlyphs;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String SVGFontData::createStringWithMirroredCharacters(const UChar* characters, unsigned length) const
</del><ins>+String createStringWithMirroredCharacters(StringView string)
</ins><span class="cx"> {
</span><ins>+    unsigned length = string.length();
</ins><span class="cx">     StringBuilder mirroredCharacters;
</span><span class="cx">     mirroredCharacters.reserveCapacity(length);
</span><del>-
-    unsigned i = 0;
-    while (i &lt; length) {
</del><ins>+    for (unsigned i = 0; i &lt; length; ) {
</ins><span class="cx">         UChar32 character;
</span><del>-        U16_NEXT(characters, i, length, character);
</del><ins>+        U16_NEXT(string, i, length, character);
</ins><span class="cx">         mirroredCharacters.append(u_charMirror(character));
</span><span class="cx">     }
</span><del>-
</del><span class="cx">     return mirroredCharacters.toString();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFontDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFontData.h (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFontData.h        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGFontData.h        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -52,8 +52,6 @@
</span><span class="cx">     bool fillBMPGlyphs(SVGFontElement*, GlyphPage* , unsigned offset, unsigned length, UChar* buffer, const SimpleFontData*) const;
</span><span class="cx">     bool fillNonBMPGlyphs(SVGFontElement*, GlyphPage* , unsigned offset, unsigned length, UChar* buffer, const SimpleFontData*) const;
</span><span class="cx"> 
</span><del>-    String createStringWithMirroredCharacters(const UChar* characters, unsigned length) const;
-
</del><span class="cx">     // Ths SVGFontFaceElement is kept alive --
</span><span class="cx">     // 1) in the external font case: by the CSSFontFaceSource, which holds a reference to the external SVG document
</span><span class="cx">     //    containing the element;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFontElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFontElement.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFontElement.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGFontElement.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -94,9 +94,9 @@
</span><span class="cx">         unsigned unicodeLength = unicode.length();
</span><span class="cx">         ASSERT(unicodeLength &gt; 1);
</span><span class="cx"> 
</span><del>-        const UChar* characters = unicode.deprecatedCharacters();
</del><span class="cx">         for (unsigned i = 0; i &lt; unicodeLength; ++i) {
</span><del>-            String lookupString(characters + i, 1);
</del><ins>+            UChar character = unicode[i];
+            String lookupString(&amp;character, 1);
</ins><span class="cx">             m_glyphMap.collectGlyphsForString(lookupString, glyphs);
</span><span class="cx">             if (!glyphs.isEmpty()) {
</span><span class="cx">                 glyphs.clear();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGlyphMaph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGlyphMap.h (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGlyphMap.h        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGGlyphMap.h        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -21,11 +21,12 @@
</span><span class="cx"> #define SVGGlyphMap_h
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SVG_FONTS)
</span><ins>+
</ins><span class="cx"> #include &quot;SurrogatePairAwareTextIterator.h&quot;
</span><span class="cx"> #include &quot;SVGGlyph.h&quot;
</span><del>-
</del><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -68,7 +69,8 @@
</span><span class="cx"> 
</span><span class="cx">         UChar32 character = 0;
</span><span class="cx">         unsigned clusterLength = 0;
</span><del>-        SurrogatePairAwareTextIterator textIterator(unicodeString.deprecatedCharacters(), 0, length, length);
</del><ins>+        auto upconvertedCharacters = StringView(unicodeString).upconvertedCharacters();
+        SurrogatePairAwareTextIterator textIterator(upconvertedCharacters, 0, length, length);
</ins><span class="cx">         while (textIterator.consume(character, clusterLength)) {
</span><span class="cx">             node = currentLayer-&gt;get(character);
</span><span class="cx">             if (!node) {
</span><span class="lines">@@ -113,12 +115,12 @@
</span><span class="cx">     {
</span><span class="cx">         GlyphMapLayer* currentLayer = &amp;m_rootLayer;
</span><span class="cx"> 
</span><del>-        const UChar* characters = string.deprecatedCharacters();
</del><ins>+        auto upconvertedCharacters = StringView(string).upconvertedCharacters();
</ins><span class="cx">         size_t length = string.length();
</span><span class="cx"> 
</span><span class="cx">         UChar32 character = 0;
</span><span class="cx">         unsigned clusterLength = 0;
</span><del>-        SurrogatePairAwareTextIterator textIterator(characters, 0, length, length);
</del><ins>+        SurrogatePairAwareTextIterator textIterator(upconvertedCharacters, 0, length, length);
</ins><span class="cx">         while (textIterator.consume(character, clusterLength)) {
</span><span class="cx">             RefPtr&lt;GlyphMapNode&gt; node = currentLayer-&gt;get(character);
</span><span class="cx">             if (!node)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGlyphRefElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGlyphRefElement.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGlyphRefElement.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGGlyphRefElement.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><span class="cx"> #include &quot;XLinkNames.h&quot;
</span><span class="cx"> #include &lt;wtf/text/AtomicString.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -66,7 +67,8 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGGlyphRefElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    const UChar* startPtr = value.string().deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(value.string()).upconvertedCharacters();
+    const UChar* startPtr = upconvertedCharacters;
</ins><span class="cx">     const UChar* endPtr = startPtr + value.length();
</span><span class="cx"> 
</span><span class="cx">     // FIXME: We need some error handling here.
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLengthcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLength.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLength.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGLength.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -29,9 +29,8 @@
</span><span class="cx"> #include &quot;FloatConversion.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><del>-
</del><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -224,7 +223,8 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     float convertedNumber = 0;
</span><del>-    const UChar* ptr = string.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(string).upconvertedCharacters();
+    const UChar* ptr = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = ptr + string.length();
</span><span class="cx"> 
</span><span class="cx">     if (!parseNumber(ptr, end, convertedNumber, false)) {
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLengthListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLengthList.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLengthList.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGLengthList.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -31,7 +31,8 @@
</span><span class="cx">     clear();
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx"> 
</span><del>-    const UChar* ptr = value.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(value).upconvertedCharacters();
+    const UChar* ptr = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = ptr + value.length();
</span><span class="cx">     while (ptr &lt; end) {
</span><span class="cx">         const UChar* start = ptr;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGNumberListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGNumberList.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGNumberList.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGNumberList.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -31,7 +31,8 @@
</span><span class="cx">     clear();
</span><span class="cx"> 
</span><span class="cx">     float number = 0;
</span><del>-    const UChar* ptr = value.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(value).upconvertedCharacters();
+    const UChar* ptr = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = ptr + value.length();
</span><span class="cx"> 
</span><span class="cx">     // The spec strangely doesn't allow leading whitespace.  We might choose to violate that intentionally. (section 4.1)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGParserUtilitiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGParserUtilities.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGParserUtilities.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGParserUtilities.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -26,9 +26,9 @@
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;FloatRect.h&quot;
</span><span class="cx"> #include &quot;SVGPointList.h&quot;
</span><del>-
</del><span class="cx"> #include &lt;limits&gt;
</span><span class="cx"> #include &lt;wtf/ASCIICType.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -164,7 +164,8 @@
</span><span class="cx"> 
</span><span class="cx"> bool parseNumberFromString(const String&amp; string, float&amp; number, bool skip)
</span><span class="cx"> {
</span><del>-    const UChar* ptr = string.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(string).upconvertedCharacters();
+    const UChar* ptr = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = ptr + string.length();
</span><span class="cx">     return genericParseNumber(ptr, end, number, skip) &amp;&amp; ptr == end;
</span><span class="cx"> }
</span><span class="lines">@@ -203,7 +204,9 @@
</span><span class="cx"> {
</span><span class="cx">     if (s.isEmpty())
</span><span class="cx">         return false;
</span><del>-    const UChar* cur = s.deprecatedCharacters();
</del><ins>+
+    auto upconvertedCharacters = StringView(s).upconvertedCharacters();
+    const UChar* cur = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = cur + s.length();
</span><span class="cx"> 
</span><span class="cx">     if (!parseNumber(cur, end, x))
</span><span class="lines">@@ -219,7 +222,8 @@
</span><span class="cx"> 
</span><span class="cx"> bool parseRect(const String&amp; string, FloatRect&amp; rect)
</span><span class="cx"> {
</span><del>-    const UChar* ptr = string.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(string).upconvertedCharacters();
+    const UChar* ptr = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = ptr + string.length();
</span><span class="cx">     skipOptionalSVGSpaces(ptr, end);
</span><span class="cx">     
</span><span class="lines">@@ -236,7 +240,8 @@
</span><span class="cx"> {
</span><span class="cx">     if (points.isEmpty())
</span><span class="cx">         return true;
</span><del>-    const UChar* cur = points.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(points).upconvertedCharacters();
+    const UChar* cur = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = cur + points.length();
</span><span class="cx"> 
</span><span class="cx">     skipOptionalSVGSpaces(cur, end);
</span><span class="lines">@@ -270,7 +275,8 @@
</span><span class="cx">     // FIXME: Parsing error detection is missing.
</span><span class="cx">     values.clear();
</span><span class="cx"> 
</span><del>-    const UChar* ptr = input.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(input).upconvertedCharacters();
+    const UChar* ptr = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = ptr + input.length();
</span><span class="cx">     skipOptionalSVGSpaces(ptr, end);
</span><span class="cx"> 
</span><span class="lines">@@ -367,7 +373,8 @@
</span><span class="cx"> bool parseKerningUnicodeString(const String&amp; input, UnicodeRanges&amp; rangeList, HashSet&lt;String&gt;&amp; stringList)
</span><span class="cx"> {
</span><span class="cx">     // FIXME: Parsing error detection is missing.
</span><del>-    const UChar* ptr = input.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(input).upconvertedCharacters();
+    const UChar* ptr = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = ptr + input.length();
</span><span class="cx"> 
</span><span class="cx">     while (ptr &lt; end) {
</span><span class="lines">@@ -394,7 +401,8 @@
</span><span class="cx"> {
</span><span class="cx">     Vector&lt;String&gt; values;
</span><span class="cx"> 
</span><del>-    const UChar* ptr = input.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(input).upconvertedCharacters();
+    const UChar* ptr = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = ptr + input.length();
</span><span class="cx">     skipOptionalSVGSpaces(ptr, end);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPreserveAspectRatiocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPreserveAspectRatio.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPreserveAspectRatio.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGPreserveAspectRatio.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;FloatRect.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -58,7 +58,8 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGPreserveAspectRatio::parse(const String&amp; value)
</span><span class="cx"> {
</span><del>-    const UChar* begin = value.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(value).upconvertedCharacters();
+    const UChar* begin = upconvertedCharacters;
</ins><span class="cx">     parseInternal(begin, begin + value.length(), true);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGStringListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGStringList.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGStringList.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGStringList.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -48,7 +48,8 @@
</span><span class="cx">     // TODO : more error checking/reporting
</span><span class="cx">     clear();
</span><span class="cx"> 
</span><del>-    const UChar* ptr = data.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(data).upconvertedCharacters();
+    const UChar* ptr = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = ptr + data.length();
</span><span class="cx">     while (ptr &lt; end) {
</span><span class="cx">         const UChar* start = ptr;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTransformListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTransformList.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTransformList.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGTransformList.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -74,7 +74,8 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGTransformList::parse(const String&amp; transform)
</span><span class="cx"> {
</span><del>-    const UChar* start = transform.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(transform).upconvertedCharacters();
+    const UChar* start = upconvertedCharacters;
</ins><span class="cx">     if (!SVGTransformable::parseTransformAttribute(*this, start, start + transform.length()))
</span><span class="cx">         clear();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTransformablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTransformable.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTransformable.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGTransformable.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><span class="cx"> #include &quot;SVGTransformList.h&quot;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -171,7 +172,8 @@
</span><span class="cx"> SVGTransform::SVGTransformType SVGTransformable::parseTransformType(const String&amp; typeString)
</span><span class="cx"> {
</span><span class="cx">     unsigned short type = SVGTransform::SVG_TRANSFORM_UNKNOWN;
</span><del>-    const UChar* characters = typeString.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(typeString).upconvertedCharacters();
+    const UChar* characters = upconvertedCharacters;
</ins><span class="cx">     parseAndSkipType(characters, characters + typeString.length(), type);
</span><span class="cx">     return static_cast&lt;SVGTransform::SVGTransformType&gt;(type);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGViewSpeccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGViewSpec.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGViewSpec.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGViewSpec.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -207,7 +207,8 @@
</span><span class="cx"> 
</span><span class="cx"> bool SVGViewSpec::parseViewSpec(const String&amp; viewSpec)
</span><span class="cx"> {
</span><del>-    const UChar* currViewSpec = viewSpec.deprecatedCharacters();
</del><ins>+    auto upconvertedCharacters = StringView(viewSpec).upconvertedCharacters();
+    const UChar* currViewSpec = upconvertedCharacters;
</ins><span class="cx">     const UChar* end = currViewSpec + viewSpec.length();
</span><span class="cx"> 
</span><span class="cx">     if (currViewSpec &gt;= end || !m_contextElement)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGZoomAndPanh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGZoomAndPan.h (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGZoomAndPan.h        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/svg/SVGZoomAndPan.h        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -24,6 +24,7 @@
</span><span class="cx"> #include &quot;QualifiedName.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -59,7 +60,8 @@
</span><span class="cx">     {
</span><span class="cx">         ASSERT(target);
</span><span class="cx">         if (name == SVGNames::zoomAndPanAttr) {
</span><del>-            const UChar* start = value.string().deprecatedCharacters();
</del><ins>+            auto upconvertedCharacters = StringView(value.string()).upconvertedCharacters();
+            const UChar* start = upconvertedCharacters;
</ins><span class="cx">             const UChar* end = start + value.length();
</span><span class="cx">             SVGZoomAndPanType zoomAndPan = SVGZoomAndPanUnknown;
</span><span class="cx">             parseZoomAndPan(start, end, zoomAndPan);
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLHttpRequestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLHttpRequest.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLHttpRequest.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -619,7 +619,7 @@
</span><span class="cx"> 
</span><span class="cx">         // FIXME: this should use value of document.inputEncoding to determine the encoding to use.
</span><span class="cx">         TextEncoding encoding = UTF8Encoding();
</span><del>-        m_requestEntityBody = FormData::create(encoding.encode(body.deprecatedCharacters(), body.length(), EntitiesForUnencodables));
</del><ins>+        m_requestEntityBody = FormData::create(encoding.encode(body, EntitiesForUnencodables));
</ins><span class="cx">         if (m_upload)
</span><span class="cx">             m_requestEntityBody-&gt;setAlwaysStream(true);
</span><span class="cx">     }
</span><span class="lines">@@ -646,7 +646,7 @@
</span><span class="cx">             m_requestHeaders.set(&quot;Content-Type&quot;, contentType);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        m_requestEntityBody = FormData::create(UTF8Encoding().encode(body.deprecatedCharacters(), body.length(), EntitiesForUnencodables));
</del><ins>+        m_requestEntityBody = FormData::create(UTF8Encoding().encode(body, EntitiesForUnencodables));
</ins><span class="cx">         if (m_upload)
</span><span class="cx">             m_requestEntityBody-&gt;setAlwaysStream(true);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXSLStyleSheetLibxsltcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XSLStyleSheetLibxslt.cpp (165847 => 165848)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XSLStyleSheetLibxslt.cpp        2014-03-18 21:53:35 UTC (rev 165847)
+++ trunk/Source/WebCore/xml/XSLStyleSheetLibxslt.cpp        2014-03-18 21:57:44 UTC (rev 165848)
</span><span class="lines">@@ -33,7 +33,6 @@
</span><span class="cx"> #include &quot;XMLDocumentParserScope.h&quot;
</span><span class="cx"> #include &quot;XSLImportRule.h&quot;
</span><span class="cx"> #include &quot;XSLTProcessor.h&quot;
</span><del>-
</del><span class="cx"> #include &lt;libxml/uri.h&gt;
</span><span class="cx"> #include &lt;libxslt/xsltutils.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -148,7 +147,8 @@
</span><span class="cx"> 
</span><span class="cx">     XMLDocumentParserScope scope(cachedResourceLoader(), XSLTProcessor::genericErrorFunc, XSLTProcessor::parseErrorFunc, console);
</span><span class="cx"> 
</span><del>-    const char* buffer = reinterpret_cast&lt;const char*&gt;(string.deprecatedCharacters());
</del><ins>+    auto upconvertedCharacters = StringView(string).upconvertedCharacters();
+    const char* buffer = reinterpret_cast&lt;const char*&gt;(upconvertedCharacters.get());
</ins><span class="cx">     int size = string.length() * sizeof(UChar);
</span><span class="cx"> 
</span><span class="cx">     xmlParserCtxtPtr ctxt = xmlCreateMemoryParserCtxt(buffer, size);
</span></span></pre>
</div>
</div>

</body>
</html>