<!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>[195743] trunk</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/195743">195743</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2016-01-28 09:26:41 -0800 (Thu, 28 Jan 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
https://bugs.webkit.org/show_bug.cgi?id=153411

Reviewed by Ryosuke Niwa.

Source/WebCore:

Tests: fast/media/media-query-non-ASCII-case-folding.html
       fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding.html
       fast/xpath/xpath-non-ASCII-case-folding.html

No tests included that cover the minor behavior changes in Document::setDomain,
CSPSource::schemeMatches, CSPSource::hostMatches, OriginAccessEntry::operator==,
UserContentURLPattern::matches, UserContentURLPattern::matchesHost,
ContentFilterUnblockHandler::canHandleRequest. Would like to add tests for those
if possible, but it seems clear all are progressions.

For background on why this is the right thing to do in almost every case:

- MIME types are all ASCII and not case sensitive (details in RFC 2045)
  &lt;http://tools.ietf.org/html/rfc2045&gt;
- case insensitive comparisons in HTML are all &quot;ASCII case-insensitive&quot;
  https://www.w3.org/TR/html/infrastructure.html#ascii-case-insensitive
- same for CSS

* Modules/webdatabase/DatabaseAuthorizer.cpp:
(WebCore::DatabaseAuthorizer::denyBasedOnTableName): Use equalIgnoringASCIICase.
No change in behavior since the string we are comparing with is always
&quot;__WebKitDatabaseInfoTable__&quot; in practice.

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::siblingWithAriaRole): Changed argument type to take a const char*,
added some FIXMEs and use equalIgnoringCase. No change in behavior since the
strings we are comparing with are &quot;menu&quot; and &quot;menuitem&quot;.
(WebCore::AccessibilityNodeObject::menuElementForMenuButton): Updated to pass
arguments in reverse order.
(WebCore::AccessibilityNodeObject::menuItemElementForMenu): Ditto.

* css/CSSParser.cpp:
(WebCore::CSSParser::parseFontFaceValue): Use equalIgnoringASCIICase.
No change in behavior because the property names are all ASCII constants.

* css/CSSParserValues.h: Removed unused equalIgnoringCase function.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::mediaTypeMatch): Use equalIgnoringASCIICase.
Changes behavior: No non-ASCII case folding when matching media types.
Covered by new test.
(WebCore::MediaQueryEvaluator::mediaTypeMatchSpecific): Use equalIgnoringASCIICase.
No change in behavior since the only string this is ever called with is &quot;print&quot;.

* dom/DataTransfer.cpp:
(WebCore::DataTransfer::hasFileOfType): Use equalIgnoringASCIICase.
No change in behavior because local files will not have content types with
non-ASCII characters in them. In the extremely unlikely case that this is incorrect,
the change in behavior is a progression.

* dom/Document.cpp:
(WebCore::Document::setDomain): Use equalIgnoringASCIICase.
Changes behavior: Domains considered equal because of non-ASCII case folding
would get through without an error before, and now will properly throw an exception.

* dom/Element.cpp:
(WebCore::isStyleAttribute): Refactored into a helper function. Use
equalLettersIgnoringASCIICase. No change in behavior.
(WebCore::Element::synchronizeAttribute): Use isStyleAttribute.

* dom/TreeScope.cpp:
(WebCore::TreeScope::findAnchor): Use equalIgnoringASCIICase.
Changes behavior: Could go to an anchor and it would be considered a match because
of non-ASCII case folding. Covered by new test.

* html/HiddenInputType.cpp:
(WebCore::HiddenInputType::appendFormData): Use equalIgnoringASCIICase.
No change in behavior: comparing with an ASCII literal.
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::getExtension): Ditto.
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getExtension): Ditto.

* html/parser/CSSPreloadScanner.cpp:
(WebCore::CSSPreloadScanner::emitRule): Use equalLettersIgnoringASCIICase and
StringView to avoid needing a special ruleEqualIgnoringCase function.
No change in behavior.

* inspector/InspectorNodeFinder.cpp:
(WebCore::InspectorNodeFinder::matchesElement): Use equalIgnoringASCIICase.
Changes behavior, but it's an inspector UI thing, not a web behavior thing,
so I don't think a new regression test is needed.

* loader/HistoryController.cpp:
(WebCore::HistoryController::currentItemShouldBeReplaced): Use
equalIgnoringASCIICase. No change in behavior because we are comparing
with &quot;about:blank&quot;.

* loader/SubframeLoader.cpp:
(WebCore::findPluginMIMETypeFromURL): Use equalIgnoringASCIICase.
No change in behavior unless a plug-in claims an extension with non-ASCII
characters. I don't think a new regression test is needed.

* loader/appcache/ApplicationCacheHost.cpp:
(WebCore::ApplicationCacheHost::shouldLoadResourceFromApplicationCache):
Use equalIgnoringASCIICase. No change in behavior because both strings are
protocols from URLs and we don't parse non-ASCII characters into protocol strings;
non-ASCII are already encoding as punycode.
* loader/appcache/ManifestParser.cpp:
(WebCore::parseManifest): Ditto.

* page/ContentSecurityPolicy.cpp:
(WebCore::isExperimentalDirectiveName): Added. Used by isDirectiveName.
Uses equalLettersIgnoringASCIICase. No change in behavior.
(WebCore::isDirectiveName): Use equalLettersIgnoringASCIICase.
No change in behavior.
(WebCore::isSourceListNone): Use equalLettersIgnoringASCIICase. No
change in behavior.
(WebCore::CSPSource::schemeMatches): Use equalLettersIgnoringASCIICase
and equalIgnoringASCIICase. It's all about comparing URL protocols. The
old code might have done something strange if someone specified a protocol
with a non-ASCII character in it.
(WebCore::CSPSource::hostMatches): Use equalIgnoringASCIICase.
(WebCore::CSPSourceList::parseSource): Use equalLettersIgnoringASCIICase.
No change in behavior.
(WebCore::CSPDirectiveList::checkSourceAndReportViolation): Tweaked code
to do less unnecessary String allocation.
(WebCore::CSPDirectiveList::parseReflectedXSS): Use
equalLettersIgnoringASCIICase. No change in behavior.
(WebCore::CSPDirectiveList::addDirective): Ditto.
(WebCore::ContentSecurityPolicy::reportUnsupportedDirective): Use
equalLettersIgnoringASCIICase and remove unneeded global constant strings.
No change in behavior.
(WebCore::ContentSecurityPolicy::reportDirectiveAsSourceExpression):
Tweak code to eliminate unneeded local.
(WebCore::ContentSecurityPolicy::reportDuplicateDirective): Ditto.
(WebCore::ContentSecurityPolicy::reportInvalidSourceExpression): Use
equalLettersIgnoringASCIICase. No change in behavior.

* page/OriginAccessEntry.h:
(WebCore::operator==): Use equalLettersIgnoringASCIICase.

* page/Performance.cpp:
(WebCore::Performance::webkitGetEntriesByName): Use equalLettersIgnoringASCIICase.
No change in behavior.

* page/UserContentURLPattern.cpp:
(WebCore::UserContentURLPattern::matches): Use equalIgnoringASCIICase to match
schemes.
(WebCore::UserContentURLPattern::matchesHost): Use equalIgnoringASCIICase to
match host names.

* platform/URL.cpp:
(WebCore::URL::init): Use equalIgnoringASCIICase, and also use StringView to
avoid having to allocate a second string just for comparison purposes. Should be
better for efficiency with no change in behavior.

* platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:
(WebCore::ContentFilterUnblockHandler::canHandleRequest): Use equalIgnoringASCIICase
to compare hosts.

* platform/efl/PlatformSpeechSynthesisProviderEfl.cpp:
(WebCore::PlatformSpeechSynthesisProviderEfl::voiceName): Use StringView and
equalIgnoringASCIICase to compare language tags. No test needed because there are
no language tags with non-ASCII characters in them.

* platform/graphics/FontCache.cpp:
(WebCore::FontPlatformDataCacheKey::operator==): Changed to use the equal
function from CaseFoldingHash. In a subsequent patch we will change this to be
ASCIICaseFoldingHash since font names don't need to compare non-ASCII characters
in a case folding manner, but for now preserve behavior.
(WebCore::alternateFamilyName): Use equalLettersIgnoringASCIICase to avoid having
to use a special familyNameEqualIgnoringCase function. This does mean there will
be a null check and a length check that wasn't there before, but the actual
comparison function will be tighter. Guessing it will be a wash. Also improved
the comments and sorted the Windows cases in with the others. No behavior change.

* platform/graphics/FontCascade.cpp:
(WebCore::operator==): Changed to use the equal function from CaseFoldingHash.
Same rationale as above in FontPlatformDataCacheKey.

* platform/graphics/FontDescription.cpp:
(WebCore::FontCascadeDescription::familiesEqualForTextAutoSizing): Use
equalIgnoringASCIICase to compare font family names. Only possible change in
behavior would be if actual fonts with non-ASCII names but that were specified
with different case in style sheets. Highly unlikely this exists.

* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::supportsType): Use equalLettersIgnoringASCIICase.
No change in behavior.
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::keySystemIsSupported): Ditto.

* platform/graphics/freetype/FontCacheFreeType.cpp:
(WebCore::isCommonlyUsedGenericFamily): Added.
(WebCore::FontCache::createFontPlatformData): Moved code into the
isCommonlyUsedGenericFamily helper and used equalIgnoringASCIICase.

* platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:
(WebCore::FontCustomPlatformData::supportsFormat): Use
equalLettersIgnoringASCIICase. No change in behavior.
* platform/graphics/win/FontCacheWin.cpp:
(WebCore::adjustedGDIFontWeight): Ditto.
(WebCore::FontCache::createFontPlatformData): Ditto.
* platform/graphics/win/FontCustomPlatformData.cpp:
(WebCore::FontCustomPlatformData::supportsFormat): Ditto.
* platform/graphics/win/FontCustomPlatformDataCairo.cpp:
(WebCore::FontCustomPlatformData::supportsFormat): Ditto.

* platform/mac/PlatformSpeechSynthesizerMac.mm:
(-[WebSpeechSynthesisWrapper speakUtterance:]): Use equalIgnoringASCIICase to
compare languages. No change in behavior because languages have all-ASCII names.

* platform/network/CacheValidation.cpp:
(WebCore::shouldUpdateHeaderAfterRevalidation): Use equalIgnoringASCIICase.
No change in behavior since it's a fixed list of all ASCII headers.
* platform/network/curl/ResourceHandleManager.cpp:
(WebCore::isAppendableHeader): Ditto.

* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::willSendRequest): Use equalIgnoringASCIICase.
No change in behavior because HTTP methods are all ASCII letters.

* platform/text/mac/LocaleMac.mm:
(WebCore::determineLocale): Use equalIgnoringASCIICase. No change in behavior
because locale languages identifiers are all ASCII.
* platform/text/win/LocaleWin.cpp:
(WebCore::LCIDFromLocaleInternal): Ditto.

* svg/SVGToOTFFontConversion.cpp:
(WebCore::SVGToOTFFontConverter::appendArabicReplacementSubtable):
Use equalIgnoringASCIICase. No change in behavior because Arabic form attribute
values are all ASCII.

* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::uppercaseKnownHTTPMethod): Use equalIgnoringASCIICase.
No change in behavior because these are all fixed known ASCII HTTP method names.

* xml/XPathFunctions.cpp:
(WebCore::XPath::FunLang::evaluate): Use equalIgnoringASCIICase. Changes behavior
if specifying a non-ASCII character. Covered by new test.

* xml/XPathStep.cpp:
(WebCore::XPath::nodeMatchesBasicTest): Use equalIgnoringASCIICase. Changes
behavior if an element local name or XPath predicate has a non-ASCII character.
Covered by new test.

Source/WebKit/mac:

* WebCoreSupport/WebFrameLoaderClient.mm:
(parameterValue): Use equalIgnoringASCIICase. No behavior change because the
only name we ever search for with this is &quot;pluginspage&quot;.

Source/WebKit/win:

* Plugins/PluginDatabase.cpp:
(WebCore::PluginDatabase::MIMETypeForExtension): Use equalIgnoringASCIICase to compare
file extensions.
* Plugins/PluginDatabaseWin.cpp:
(WebCore::PluginDatabase::getPluginPathsInDirectories): Use equalLettersIgnoringASCIICase
to compare filenames.
* Plugins/PluginPackageWin.cpp:
(WebCore::PluginPackage::isPluginBlacklisted): Use equalLettersIgnoringASCIICase to
compare DLL filenames.
* Plugins/PluginStream.cpp:
(WebCore::PluginStream::destroyStream): Use equalLettersIgnoringASCIICase to check HTTP method.
* Plugins/PluginView.cpp:
(WebCore::PluginView::setParameters): Use equalLettersIgnoringASCIICase to check
plug-in parameter name.
* WebView.cpp:
(WebView::canHandleRequest): Use URL::protocolIs instead of equalIgnoringCase.

Source/WebKit2:

* Shared/API/c/WKString.cpp:
(WKStringIsEqualToUTF8CStringIgnoringCase): Use equalIgnoringASCIICase.
This is a change in behavior for callers who passed non-ASCII letters to
this function and expected case insensitive comparison.

* WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:
(WebKit::PDFPlugin::streamDidReceiveResponse): Use equalIgnoringASCIICase.
No change in behavior because this is just checking a fixed ASCII MIME type.
(WebKit::PDFPlugin::manualStreamDidReceiveResponse): Ditto.
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::streamDidReceiveResponse): Ditto.
(WebKit::PDFPlugin::manualStreamDidReceiveResponse): Ditto.

Source/WTF:

* wtf/text/AtomicString.h: Removed equalIgnoringCase.
Added some overloads for equalIgnoringASCIICase and moved the function bodies to
bottom of the file to make the function declarations easier to read and scan through.
I plan to do this for more of the functions in this class in the future.

* wtf/text/StringCommon.h: Added overloads for equalIgnoringASCIICase,
equalPossiblyIgnoringASCIICase, and a helper named equalIgnoringASCIICaseCommon.
Added an overload for equalLettersIgnoringASCIICase.

* wtf/text/StringImpl.cpp:
(WTF::equalIgnoringCase): Made the few remaining versions of this function private
to this file. Once we get done moving every client that should be using ASCII case
instead to new functions, these will almost certainly be deleted.
(WTF::equalIgnoringASCIICaseNonNull): Tweaked implementation a tiny bit.

* wtf/text/StringImpl.h: Sorted forward declarations at the top of the file.
Fixed some small formatting mistakes. Removed equalIgnoringCase, but left
equalIgnoringCaseNonNull behind for use by CaseFoldingHash until it is replaced
with ASCIICaseFoldingHash. Improved equalIgnoringASCIICase implementation.
Removed unneeded using for equalIgnoringASCIICase now that StringCommon.h takes
care of it.

* wtf/text/StringView.cpp:
(WTF::equalIgnoringASCIICase): Deleted. We no longer pass in the length for this,
so the arguments have changed and the implementation is also now in ASCIICommon.h
so it's an inline in the header file.

* wtf/text/StringView.h: Added an overload of equalIgnoringASCIICase,while
removing another.

* wtf/text/WTFString.h: Removed some unneeded forward delcarations. Fixed formatting
of the type name NSString *. Improved some comments. Removed equalIgnoringCase.
Separated declaration from implementation in a few cases to start making the
function declarations easier to read and scan through. I plan to do more in the future.

Tools:

* Scripts/do-webcore-rename: Removed rename of equalIgnoringCase since we
have removed the function instead.

* TestWebKitAPI/Tests/WTF/StringImpl.cpp:
(TestWebKitAPI::TEST): Updated test since nullptr is now ambiguous since we
added overloads for const char*.

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::isPressActionSupported): Use equalLettersIgnoringASCIICase.
(WTR::AccessibilityUIElement::hasPopup): Ditto.
* WebKitTestRunner/cocoa/CrashReporterInfo.mm:
(WTR::testPathFromURL): Ditto.

LayoutTests:

* fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding-expected.txt: Added.
* fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding.html: Added.
* fast/dom/HTMLAnchorElement/resources/iframe-with-non-ASCII-matching-anchor.html: Added.

* fast/media/media-query-non-ASCII-case-folding-expected.txt: Added.
* fast/media/media-query-non-ASCII-case-folding.html: Added.

* fast/xpath/xpath-non-ASCII-case-folding-expected.txt: Added.
* fast/xpath/xpath-non-ASCII-case-folding.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFwtftextAtomicStringh">trunk/Source/WTF/wtf/text/AtomicString.h</a></li>
<li><a href="#trunkSourceWTFwtftextStringCommonh">trunk/Source/WTF/wtf/text/StringCommon.h</a></li>
<li><a href="#trunkSourceWTFwtftextStringHashh">trunk/Source/WTF/wtf/text/StringHash.h</a></li>
<li><a href="#trunkSourceWTFwtftextStringImplcpp">trunk/Source/WTF/wtf/text/StringImpl.cpp</a></li>
<li><a href="#trunkSourceWTFwtftextStringImplh">trunk/Source/WTF/wtf/text/StringImpl.h</a></li>
<li><a href="#trunkSourceWTFwtftextStringViewcpp">trunk/Source/WTF/wtf/text/StringView.cpp</a></li>
<li><a href="#trunkSourceWTFwtftextStringViewh">trunk/Source/WTF/wtf/text/StringView.h</a></li>
<li><a href="#trunkSourceWTFwtftextWTFStringh">trunk/Source/WTF/wtf/text/WTFString.h</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModuleswebdatabaseDatabaseAuthorizercpp">trunk/Source/WebCore/Modules/webdatabase/DatabaseAuthorizer.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityNodeObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParsercpp">trunk/Source/WebCore/css/CSSParser.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParserValuesh">trunk/Source/WebCore/css/CSSParserValues.h</a></li>
<li><a href="#trunkSourceWebCorecssMediaQueryEvaluatorcpp">trunk/Source/WebCore/css/MediaQueryEvaluator.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDataTransfercpp">trunk/Source/WebCore/dom/DataTransfer.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTreeScopecpp">trunk/Source/WebCore/dom/TreeScope.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHiddenInputTypecpp">trunk/Source/WebCore/html/HiddenInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGL2RenderingContextcpp">trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGLRenderingContextcpp">trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlparserCSSPreloadScannercpp">trunk/Source/WebCore/html/parser/CSSPreloadScanner.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorNodeFindercpp">trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderHistoryControllercpp">trunk/Source/WebCore/loader/HistoryController.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderSubframeLoadercpp">trunk/Source/WebCore/loader/SubframeLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheHostcpp">trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheManifestParsercpp">trunk/Source/WebCore/loader/appcache/ManifestParser.cpp</a></li>
<li><a href="#trunkSourceWebCorepageOriginAccessEntryh">trunk/Source/WebCore/page/OriginAccessEntry.h</a></li>
<li><a href="#trunkSourceWebCorepagePerformancecpp">trunk/Source/WebCore/page/Performance.cpp</a></li>
<li><a href="#trunkSourceWebCorepageUserContentURLPatterncpp">trunk/Source/WebCore/page/UserContentURLPattern.cpp</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicycpp">trunk/Source/WebCore/page/csp/ContentSecurityPolicy.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformURLcpp">trunk/Source/WebCore/platform/URL.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformcocoaContentFilterUnblockHandlerCocoamm">trunk/Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformeflPlatformSpeechSynthesisProviderEflcpp">trunk/Source/WebCore/platform/efl/PlatformSpeechSynthesisProviderEfl.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontCachecpp">trunk/Source/WebCore/platform/graphics/FontCache.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontCascadecpp">trunk/Source/WebCore/platform/graphics/FontCascade.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontDescriptioncpp">trunk/Source/WebCore/platform/graphics/FontDescription.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlayercpp">trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFcpp">trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfreetypeFontCacheFreeTypecpp">trunk/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfreetypeFontCustomPlatformDataFreeTypecpp">trunk/Source/WebCore/platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicswinFontCacheWincpp">trunk/Source/WebCore/platform/graphics/win/FontCacheWin.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicswinFontCustomPlatformDatacpp">trunk/Source/WebCore/platform/graphics/win/FontCustomPlatformData.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicswinFontCustomPlatformDataCairocpp">trunk/Source/WebCore/platform/graphics/win/FontCustomPlatformDataCairo.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmacPlatformSpeechSynthesizerMacmm">trunk/Source/WebCore/platform/mac/PlatformSpeechSynthesizerMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkCacheValidationcpp">trunk/Source/WebCore/platform/network/CacheValidation.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlResourceHandleManagercpp">trunk/Source/WebCore/platform/network/curl/ResourceHandleManager.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkmacResourceHandleMacmm">trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformtextmacLocaleMacmm">trunk/Source/WebCore/platform/text/mac/LocaleMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformtextwinLocaleWincpp">trunk/Source/WebCore/platform/text/win/LocaleWin.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGToOTFFontConversioncpp">trunk/Source/WebCore/svg/SVGToOTFFontConversion.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXMLHttpRequestcpp">trunk/Source/WebCore/xml/XMLHttpRequest.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathFunctionscpp">trunk/Source/WebCore/xml/XPathFunctions.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathStepcpp">trunk/Source/WebCore/xml/XPathStep.cpp</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebFrameLoaderClientmm">trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinPluginsPluginDatabasecpp">trunk/Source/WebKit/win/Plugins/PluginDatabase.cpp</a></li>
<li><a href="#trunkSourceWebKitwinPluginsPluginDatabaseWincpp">trunk/Source/WebKit/win/Plugins/PluginDatabaseWin.cpp</a></li>
<li><a href="#trunkSourceWebKitwinPluginsPluginPackageWincpp">trunk/Source/WebKit/win/Plugins/PluginPackageWin.cpp</a></li>
<li><a href="#trunkSourceWebKitwinPluginsPluginStreamcpp">trunk/Source/WebKit/win/Plugins/PluginStream.cpp</a></li>
<li><a href="#trunkSourceWebKitwinPluginsPluginViewcpp">trunk/Source/WebKit/win/Plugins/PluginView.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebViewcpp">trunk/Source/WebKit/win/WebView.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedAPIcWKStringcpp">trunk/Source/WebKit2/Shared/API/c/WKString.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFDeprecatedPDFPluginmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFPDFPluginmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptsdowebcorerename">trunk/Tools/Scripts/do-webcore-rename</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWTFStringImplcpp">trunk/Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleatkAccessibilityUIElementAtkcpp">trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnercocoaCrashReporterInfomm">trunk/Tools/WebKitTestRunner/cocoa/CrashReporterInfo.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastdomHTMLAnchorElementanchornonASCIIcasefoldingexpectedtxt">trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomHTMLAnchorElementanchornonASCIIcasefoldinghtml">trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding.html</a></li>
<li><a href="#trunkLayoutTestsfastdomHTMLAnchorElementresourcesiframewithnonASCIImatchinganchorhtml">trunk/LayoutTests/fast/dom/HTMLAnchorElement/resources/iframe-with-non-ASCII-matching-anchor.html</a></li>
<li><a href="#trunkLayoutTestsfastmediamediaquerynonASCIIcasefoldingexpectedtxt">trunk/LayoutTests/fast/media/media-query-non-ASCII-case-folding-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmediamediaquerynonASCIIcasefoldinghtml">trunk/LayoutTests/fast/media/media-query-non-ASCII-case-folding.html</a></li>
<li><a href="#trunkLayoutTestsfastxpathxpathnonASCIIcasefoldingexpectedtxt">trunk/LayoutTests/fast/xpath/xpath-non-ASCII-case-folding-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastxpathxpathnonASCIIcasefoldinghtml">trunk/LayoutTests/fast/xpath/xpath-non-ASCII-case-folding.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/LayoutTests/ChangeLog        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2016-01-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
+        https://bugs.webkit.org/show_bug.cgi?id=153411
+
+        Reviewed by Ryosuke Niwa.
+
+        * fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding-expected.txt: Added.
+        * fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding.html: Added.
+        * fast/dom/HTMLAnchorElement/resources/iframe-with-non-ASCII-matching-anchor.html: Added.
+
+        * fast/media/media-query-non-ASCII-case-folding-expected.txt: Added.
+        * fast/media/media-query-non-ASCII-case-folding.html: Added.
+
+        * fast/xpath/xpath-non-ASCII-case-folding-expected.txt: Added.
+        * fast/xpath/xpath-non-ASCII-case-folding.html: Added.
+
</ins><span class="cx"> 2016-01-28  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unexpected content wrapping at http://email.osh.com/H/2/v100000152474feb8ec7c1a1f4bbe5c7c0/HTML
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomHTMLAnchorElementanchornonASCIIcasefoldingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding-expected.txt (0 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding-expected.txt        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+This tests whether clicking on an anchor that only matches because of incorrect non-ASCII case folding will scroll to anchor. If clicking on the link below triggers a scroll, the test fails.
+
+PASS
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding-expected.txt
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsfastdomHTMLAnchorElementanchornonASCIIcasefoldinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding.html (0 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding.html                                (rev 0)
+++ trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding.html        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+&lt;p&gt;This tests whether clicking on an anchor that only matches because of incorrect non-ASCII case folding will scroll to anchor. If clicking on the link below triggers a scroll, the test fails.&lt;/p&gt;
+&lt;iframe src=&quot;resources/iframe-with-non-ASCII-matching-anchor.html&quot; width=&quot;100%&quot; height=&quot;2000&quot;&gt;&lt;/iframe&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsfastdomHTMLAnchorElementresourcesiframewithnonASCIImatchinganchorhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/HTMLAnchorElement/resources/iframe-with-non-ASCII-matching-anchor.html (0 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLAnchorElement/resources/iframe-with-non-ASCII-matching-anchor.html                                (rev 0)
+++ trunk/LayoutTests/fast/dom/HTMLAnchorElement/resources/iframe-with-non-ASCII-matching-anchor.html        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script&gt;
+
+function runTest()
+{
+    if (!window.testRunner)
+        return;
+    if (!window.eventSender)
+        return;
+
+    testRunner.waitUntilDone();
+    testRunner.dumpAsText();
+
+    var anchor = document.getElementById(&quot;start&quot;);
+    var x = frameElement.offsetLeft + anchor.offsetLeft + 2;
+    var y = frameElement.offsetTop + anchor.offsetTop + 2;
+    eventSender.mouseMoveTo(x, y);
+    eventSender.mouseDown();
+    eventSender.mouseUp();
+    setTimeout(finish, 1000);
+}
+
+function finish()
+{
+    var result;
+    if (top.scrollY == 0)
+        result = &quot;PASS&quot;;
+    else
+        result = &quot;FAIL: should not match the anchor and should not trigger a scroll&quot;;
+
+    top.document.body.appendChild(document.createTextNode(result));
+
+    testRunner.notifyDone();
+}
+
+&lt;/script&gt;
+&lt;body onload=&quot;runTest();&quot;&gt;
+    &lt;a id=&quot;start&quot; href=&quot;#scroll&quot;&gt;Go to anchor&lt;/a&gt;
+    &lt;div style=&quot;height: 1000px&quot;&gt;&lt;/div&gt;
+    &lt;a name=&quot;ſcroll&quot;&gt;Anchor&lt;/a&gt;
+&lt;/body&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/dom/HTMLAnchorElement/resources/iframe-with-non-ASCII-matching-anchor.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsfastmediamediaquerynonASCIIcasefoldingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/media/media-query-non-ASCII-case-folding-expected.txt (0 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/media/media-query-non-ASCII-case-folding-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/media/media-query-non-ASCII-case-folding-expected.txt        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+Test media queries to make sure only ASCII case is folded, and other non-ASCII case folding is not performed.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS matchMedia('screen').matches is true
+PASS matchMedia('SCREEN').matches is true
+PASS matchMedia('ſcreen').matches is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/media/media-query-non-ASCII-case-folding-expected.txt
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsfastmediamediaquerynonASCIIcasefoldinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/media/media-query-non-ASCII-case-folding.html (0 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/media/media-query-non-ASCII-case-folding.html                                (rev 0)
+++ trunk/LayoutTests/fast/media/media-query-non-ASCII-case-folding.html        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+    description(&quot;Test media queries to make sure only ASCII case is folded, and other non-ASCII case folding is not performed.&quot;);
+    shouldBeTrue(&quot;matchMedia('screen').matches&quot;);
+    shouldBeTrue(&quot;matchMedia('SCREEN').matches&quot;);
+    shouldBeFalse(&quot;matchMedia('ſcreen').matches&quot;);
+&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/media/media-query-non-ASCII-case-folding.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsfastxpathxpathnonASCIIcasefoldingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/xpath/xpath-non-ASCII-case-folding-expected.txt (0 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/xpath/xpath-non-ASCII-case-folding-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/xpath/xpath-non-ASCII-case-folding-expected.txt        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+Test XPath element tag and language matching to make sure only ASCII case is folded, and other non-ASCII case folding is not performed.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS document.evaluate('count(.//span[attribute::id])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
+PASS document.evaluate('count(.//ſpan[attribute::id])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue is 0
+PASS document.evaluate('count(.//p[lang(&quot;en&quot;)])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
+PASS document.evaluate('count(.//p[lang(&quot;sv&quot;)])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
+PASS document.evaluate('count(.//p[lang(&quot;SV&quot;)])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
+PASS document.evaluate('count(.//p[lang(&quot;ſv&quot;)])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/xpath/xpath-non-ASCII-case-folding-expected.txt
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsfastxpathxpathnonASCIIcasefoldinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/xpath/xpath-non-ASCII-case-folding.html (0 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/xpath/xpath-non-ASCII-case-folding.html                                (rev 0)
+++ trunk/LayoutTests/fast/xpath/xpath-non-ASCII-case-folding.html        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;
+&lt;div id=&quot;test&quot;&gt;
+    &lt;p id=&quot;English&quot;&gt;This paragraph is marked as being in English.&lt;/p&gt;
+    &lt;p id=&quot;Swedish&quot;&gt;This paragraph is marked as being in Swedish.&lt;/p&gt;
+    &lt;p&gt;&lt;span id=&quot;anything&quot;&gt;The span element containing the text in this paragraph has an ID specified on it.&lt;/span&gt;&lt;/p&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;script&gt;
+    description(&quot;Test XPath element tag and language matching to make sure only ASCII case is folded, and other non-ASCII case folding is not performed.&quot;);
+
+    document.getElementById(&quot;English&quot;).setAttributeNS(&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;lang&quot;, &quot;en&quot;);
+    document.getElementById(&quot;Swedish&quot;).setAttributeNS(&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;lang&quot;, &quot;sv&quot;);
+
+    shouldBe(&quot;document.evaluate('count(.//span[attribute::id])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue&quot;, &quot;1&quot;);
+    shouldBe(&quot;document.evaluate('count(.//ſpan[attribute::id])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue&quot;, &quot;0&quot;);
+
+    shouldBe(&quot;document.evaluate('count(.//p[lang(\&quot;en\&quot;)])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue&quot;, &quot;1&quot;);
+    shouldBe(&quot;document.evaluate('count(.//p[lang(\&quot;sv\&quot;)])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue&quot;, &quot;1&quot;);
+    shouldBe(&quot;document.evaluate('count(.//p[lang(\&quot;SV\&quot;)])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue&quot;, &quot;1&quot;);
+    shouldBe(&quot;document.evaluate('count(.//p[lang(\&quot;ſv\&quot;)])', document.body, null, XPathResult.NUMBER_TYPE, null).numberValue&quot;, &quot;0&quot;);
+
+    document.body.removeChild(document.getElementById(&quot;test&quot;));
+&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/xpath/xpath-non-ASCII-case-folding.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WTF/ChangeLog        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,3 +1,45 @@
</span><ins>+2016-01-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
+        https://bugs.webkit.org/show_bug.cgi?id=153411
+
+        Reviewed by Ryosuke Niwa.
+
+        * wtf/text/AtomicString.h: Removed equalIgnoringCase.
+        Added some overloads for equalIgnoringASCIICase and moved the function bodies to
+        bottom of the file to make the function declarations easier to read and scan through.
+        I plan to do this for more of the functions in this class in the future.
+
+        * wtf/text/StringCommon.h: Added overloads for equalIgnoringASCIICase,
+        equalPossiblyIgnoringASCIICase, and a helper named equalIgnoringASCIICaseCommon.
+        Added an overload for equalLettersIgnoringASCIICase.
+
+        * wtf/text/StringImpl.cpp:
+        (WTF::equalIgnoringCase): Made the few remaining versions of this function private
+        to this file. Once we get done moving every client that should be using ASCII case
+        instead to new functions, these will almost certainly be deleted.
+        (WTF::equalIgnoringASCIICaseNonNull): Tweaked implementation a tiny bit.
+
+        * wtf/text/StringImpl.h: Sorted forward declarations at the top of the file.
+        Fixed some small formatting mistakes. Removed equalIgnoringCase, but left
+        equalIgnoringCaseNonNull behind for use by CaseFoldingHash until it is replaced
+        with ASCIICaseFoldingHash. Improved equalIgnoringASCIICase implementation.
+        Removed unneeded using for equalIgnoringASCIICase now that StringCommon.h takes
+        care of it.
+
+        * wtf/text/StringView.cpp:
+        (WTF::equalIgnoringASCIICase): Deleted. We no longer pass in the length for this,
+        so the arguments have changed and the implementation is also now in ASCIICommon.h
+        so it's an inline in the header file.
+
+        * wtf/text/StringView.h: Added an overload of equalIgnoringASCIICase,while
+        removing another.
+
+        * wtf/text/WTFString.h: Removed some unneeded forward delcarations. Fixed formatting
+        of the type name NSString *. Improved some comments. Removed equalIgnoringCase.
+        Separated declaration from implementation in a few cases to start making the
+        function declarations easier to read and scan through. I plan to do more in the future.
+
</ins><span class="cx"> 2016-01-27  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         window.atob() should ignore spaces in input
</span></span></pre></div>
<a id="trunkSourceWTFwtftextAtomicStringh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/AtomicString.h (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/AtomicString.h        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WTF/wtf/text/AtomicString.h        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2004, 2005, 2006, 2008, 2014 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2004-2006, 2008, 2014-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * This library is free software; you can redistribute it and/or
</span><span class="cx">  * modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -215,18 +215,11 @@
</span><span class="cx"> inline bool operator!=(const String&amp; a, const AtomicString&amp; b) { return !equal(a.impl(), b.impl()); }
</span><span class="cx"> inline bool operator!=(const Vector&lt;UChar&gt;&amp; a, const AtomicString&amp; b) { return !(a == b); }
</span><span class="cx"> 
</span><del>-inline bool equalIgnoringCase(const AtomicString&amp; a, const AtomicString&amp; b) { return equalIgnoringCase(a.impl(), b.impl()); }
-inline bool equalIgnoringCase(const AtomicString&amp; a, const LChar* b) { return equalIgnoringCase(a.impl(), b); }
-inline bool equalIgnoringCase(const AtomicString&amp; a, const char* b) { return equalIgnoringCase(a.impl(), reinterpret_cast&lt;const LChar*&gt;(b)); }
-inline bool equalIgnoringCase(const AtomicString&amp; a, const String&amp; b) { return equalIgnoringCase(a.impl(), b.impl()); }
-inline bool equalIgnoringCase(const LChar* a, const AtomicString&amp; b) { return equalIgnoringCase(a, b.impl()); }
-inline bool equalIgnoringCase(const char* a, const AtomicString&amp; b) { return equalIgnoringCase(reinterpret_cast&lt;const LChar*&gt;(a), b.impl()); }
-inline bool equalIgnoringCase(const String&amp; a, const AtomicString&amp; b) { return equalIgnoringCase(a.impl(), b.impl()); }
</del><ins>+bool equalIgnoringASCIICase(const AtomicString&amp;, const AtomicString&amp;);
+bool equalIgnoringASCIICase(const AtomicString&amp;, const String&amp;);
+bool equalIgnoringASCIICase(const String&amp;, const AtomicString&amp;);
+bool equalIgnoringASCIICase(const AtomicString&amp;, const char*);
</ins><span class="cx"> 
</span><del>-inline bool equalIgnoringASCIICase(const AtomicString&amp; a, const AtomicString&amp; b) { return equalIgnoringASCIICase(a.impl(), b.impl()); }
-inline bool equalIgnoringASCIICase(const AtomicString&amp; a, const String&amp; b) { return equalIgnoringASCIICase(a.impl(), b.impl()); }
-inline bool equalIgnoringASCIICase(const String&amp; a, const AtomicString&amp; b) { return equalIgnoringASCIICase(a.impl(), b.impl()); }
-
</del><span class="cx"> template&lt;unsigned length&gt; bool equalLettersIgnoringASCIICase(const AtomicString&amp;, const char (&amp;lowercaseLetters)[length]);
</span><span class="cx"> 
</span><span class="cx"> inline AtomicString::AtomicString()
</span><span class="lines">@@ -344,6 +337,26 @@
</span><span class="cx">     return equalLettersIgnoringASCIICase(string.string(), lowercaseLetters);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline bool equalIgnoringASCIICase(const AtomicString&amp; a, const AtomicString&amp; b)
+{
+    return equalIgnoringASCIICase(a.string(), b.string());
+}
+
+inline bool equalIgnoringASCIICase(const AtomicString&amp; a, const String&amp; b)
+{
+    return equalIgnoringASCIICase(a.string(), b);
+}
+
+inline bool equalIgnoringASCIICase(const String&amp; a, const AtomicString&amp; b)
+{
+    return equalIgnoringASCIICase(a, b.string());
+}
+
+inline bool equalIgnoringASCIICase(const AtomicString&amp; a, const char* b)
+{
+    return equalIgnoringASCIICase(a.string(), b);
+}
+
</ins><span class="cx"> } // namespace WTF
</span><span class="cx"> 
</span><span class="cx"> #ifndef ATOMICSTRING_HIDE_GLOBALS
</span></span></pre></div>
<a id="trunkSourceWTFwtftextStringCommonh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/StringCommon.h (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/StringCommon.h        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WTF/wtf/text/StringCommon.h        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2015 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -31,7 +31,14 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WTF {
</span><span class="cx"> 
</span><ins>+template&lt;typename CharacterTypeA, typename CharacterTypeB&gt; bool equalIgnoringASCIICase(const CharacterTypeA*, const CharacterTypeB*, unsigned length);
+template&lt;typename CharacterTypeA, typename CharacterTypeB&gt; bool equalIgnoringASCIICase(const CharacterTypeA*, unsigned lengthA, const CharacterTypeB*, unsigned lengthB);
+
+template&lt;typename StringClassA, typename StringClassB&gt; bool equalIgnoringASCIICaseCommon(const StringClassA&amp;, const StringClassB&amp;);
+
</ins><span class="cx"> template&lt;typename CharacterType&gt; bool equalLettersIgnoringASCIICase(const CharacterType*, const char* lowercaseLetters, unsigned length);
</span><ins>+template&lt;typename CharacterType, unsigned lowercaseLettersLength&gt; bool equalLettersIgnoringASCIICase(const CharacterType*, unsigned charactersLength, const char (&amp;lowercaseLetters)[lowercaseLettersLength]);
+
</ins><span class="cx"> template&lt;typename StringClass, unsigned length&gt; bool equalLettersIgnoringASCIICaseCommon(const StringClass&amp;, const char (&amp;lowercaseLetters)[length]);
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename T&gt;
</span><span class="lines">@@ -326,6 +333,11 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename CharacterTypeA, typename CharacterTypeB&gt; inline bool equalIgnoringASCIICase(const CharacterTypeA* a, unsigned lengthA, const CharacterTypeB* b, unsigned lengthB)
+{
+    return lengthA == lengthB &amp;&amp; equalIgnoringASCIICase(a, b, lengthA);
+}
+
</ins><span class="cx"> template&lt;typename StringClassA, typename StringClassB&gt;
</span><span class="cx"> bool equalIgnoringASCIICaseCommon(const StringClassA&amp; a, const StringClassB&amp; b)
</span><span class="cx"> {
</span><span class="lines">@@ -346,6 +358,18 @@
</span><span class="cx">     return equalIgnoringASCIICase(a.characters16(), b.characters16(), length);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename StringClassA&gt; bool equalIgnoringASCIICaseCommon(const StringClassA&amp; a, const char* b)
+{
+    unsigned length = a.length();
+    if (length != strlen(b))
+        return false;
+
+    if (a.is8Bit())
+        return equalIgnoringASCIICase(a.characters8(), b, length);
+
+    return equalIgnoringASCIICase(a.characters16(), b, length);
+}
+
</ins><span class="cx"> template&lt;typename StringClassA, typename StringClassB&gt;
</span><span class="cx"> bool startsWith(const StringClassA&amp; reference, const StringClassB&amp; prefix)
</span><span class="cx"> {
</span><span class="lines">@@ -559,6 +583,13 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename CharacterType, unsigned lowercaseLettersLength&gt; inline bool equalLettersIgnoringASCIICase(const CharacterType* characters, unsigned charactersLength, const char (&amp;lowercaseLetters)[lowercaseLettersLength])
+{
+    ASSERT(strlen(lowercaseLetters) == lowercaseLettersLength - 1);
+    unsigned lowercaseLettersStringLength = lowercaseLettersLength - 1;
+    return charactersLength == lowercaseLettersStringLength &amp;&amp; equalLettersIgnoringASCIICase(characters, lowercaseLetters, lowercaseLettersStringLength);
+}
+
</ins><span class="cx"> // This is intentionally not marked inline because it's used often and is not speed-critical enough to want it inlined everywhere.
</span><span class="cx"> template&lt;typename StringClass&gt; bool equalLettersIgnoringASCIICaseCommonWithoutLength(const StringClass&amp; string, const char* lowercaseLetters)
</span><span class="cx"> {
</span><span class="lines">@@ -578,12 +609,14 @@
</span><span class="cx"> template&lt;typename StringClass, unsigned length&gt; inline bool equalLettersIgnoringASCIICaseCommon(const StringClass&amp; string, const char (&amp;lowercaseLetters)[length])
</span><span class="cx"> {
</span><span class="cx">     // Don't actually use the length; we are choosing code size over speed.
</span><ins>+    ASSERT(strlen(lowercaseLetters) == length - 1);
</ins><span class="cx">     const char* pointer = lowercaseLetters;
</span><span class="cx">     return equalLettersIgnoringASCIICaseCommonWithoutLength(string, pointer);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+using WTF::equalIgnoringASCIICase;
</ins><span class="cx"> using WTF::equalLettersIgnoringASCIICase;
</span><span class="cx"> 
</span><span class="cx"> #endif // StringCommon_h
</span></span></pre></div>
<a id="trunkSourceWTFwtftextStringHashh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/StringHash.h (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/StringHash.h        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WTF/wtf/text/StringHash.h        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx">         
</span><span class="cx">         static inline bool equal(const StringImpl* a, const StringImpl* b)
</span><span class="cx">         {
</span><del>-            return equalIgnoringCaseNonNull(a, b);
</del><ins>+            return equalCompatibiltyCaselessNonNull(a, b);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         static unsigned hash(const RefPtr&lt;StringImpl&gt;&amp; key) 
</span></span></pre></div>
<a id="trunkSourceWTFwtftextStringImplcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/StringImpl.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/StringImpl.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WTF/wtf/text/StringImpl.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -2,7 +2,7 @@
</span><span class="cx">  * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
</span><span class="cx">  *           (C) 1999 Antti Koivisto (koivisto@kde.org)
</span><span class="cx">  *           (C) 2001 Dirk Mueller ( mueller@kde.org )
</span><del>- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2013-2014 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2003-2009, 2013-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net)
</span><span class="cx">  *
</span><span class="cx">  * This library is free software; you can redistribute it and/or
</span><span class="lines">@@ -950,7 +950,7 @@
</span><span class="cx">     return charactersToFloat(characters16(), m_length, ok);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool equalIgnoringCase(const LChar* a, const LChar* b, unsigned length)
</del><ins>+static inline bool equalCompatibiltyCaseless(const LChar* a, const LChar* b, unsigned length)
</ins><span class="cx"> {
</span><span class="cx">     while (length--) {
</span><span class="cx">         if (StringImpl::latin1CaseFoldTable[*a++] != StringImpl::latin1CaseFoldTable[*b++])
</span><span class="lines">@@ -959,7 +959,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool equalIgnoringCase(const UChar* a, const LChar* b, unsigned length)
</del><ins>+static inline bool equalCompatibiltyCaseless(const UChar* a, const LChar* b, unsigned length)
</ins><span class="cx"> {
</span><span class="cx">     while (length--) {
</span><span class="cx">         if (u_foldCase(*a++, U_FOLD_CASE_DEFAULT) != StringImpl::latin1CaseFoldTable[*b++])
</span><span class="lines">@@ -968,6 +968,16 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline bool equalCompatibiltyCaseless(const LChar* a, const UChar* b, unsigned length)
+{
+    return equalCompatibiltyCaseless(b, a, length);
+}
+
+static inline bool equalCompatibiltyCaseless(const UChar* a, const UChar* b, unsigned length)
+{
+    return !u_memcasecmp(a, b, length, U_FOLD_CASE_DEFAULT);
+}
+
</ins><span class="cx"> size_t StringImpl::find(CharacterMatchFunctionPtr matchFunction, unsigned start)
</span><span class="cx"> {
</span><span class="cx">     if (is8Bit())
</span><span class="lines">@@ -1072,7 +1082,7 @@
</span><span class="cx">         const LChar* searchCharacters = characters8() + index;
</span><span class="cx"> 
</span><span class="cx">         unsigned i = 0;
</span><del>-        while (!equalIgnoringCase(searchCharacters + i, matchString, matchLength)) {
</del><ins>+        while (!equalCompatibiltyCaseless(searchCharacters + i, matchString, matchLength)) {
</ins><span class="cx">             if (i == delta)
</span><span class="cx">                 return notFound;
</span><span class="cx">             ++i;
</span><span class="lines">@@ -1083,7 +1093,7 @@
</span><span class="cx">     const UChar* searchCharacters = characters16() + index;
</span><span class="cx"> 
</span><span class="cx">     unsigned i = 0;
</span><del>-    while (!equalIgnoringCase(searchCharacters + i, matchString, matchLength)) {
</del><ins>+    while (!equalCompatibiltyCaseless(searchCharacters + i, matchString, matchLength)) {
</ins><span class="cx">         if (i == delta)
</span><span class="cx">             return notFound;
</span><span class="cx">         ++i;
</span><span class="lines">@@ -1147,7 +1157,7 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned i = 0;
</span><span class="cx">     // keep looping until we match
</span><del>-    while (!equalIgnoringCase(searchCharacters + i, matchCharacters, matchLength)) {
</del><ins>+    while (!equalCompatibiltyCaseless(searchCharacters + i, matchCharacters, matchLength)) {
</ins><span class="cx">         if (i == delta)
</span><span class="cx">             return notFound;
</span><span class="cx">         ++i;
</span><span class="lines">@@ -1288,7 +1298,7 @@
</span><span class="cx">     unsigned delta = std::min(index, length - matchLength);
</span><span class="cx"> 
</span><span class="cx">     // keep looping until we match
</span><del>-    while (!equalIgnoringCase(searchCharacters + delta, matchCharacters, matchLength)) {
</del><ins>+    while (!equalCompatibiltyCaseless(searchCharacters + delta, matchCharacters, matchLength)) {
</ins><span class="cx">         if (!delta)
</span><span class="cx">             return notFound;
</span><span class="cx">         --delta;
</span><span class="lines">@@ -1334,8 +1344,8 @@
</span><span class="cx">         return equal(stringImpl-&gt;characters16() + startOffset, reinterpret_cast&lt;const LChar*&gt;(matchString), matchLength);
</span><span class="cx">     }
</span><span class="cx">     if (stringImpl-&gt;is8Bit())
</span><del>-        return equalIgnoringCase(stringImpl-&gt;characters8() + startOffset, reinterpret_cast&lt;const LChar*&gt;(matchString), matchLength);
-    return equalIgnoringCase(stringImpl-&gt;characters16() + startOffset, reinterpret_cast&lt;const LChar*&gt;(matchString), matchLength);
</del><ins>+        return equalCompatibiltyCaseless(stringImpl-&gt;characters8() + startOffset, reinterpret_cast&lt;const LChar*&gt;(matchString), matchLength);
+    return equalCompatibiltyCaseless(stringImpl-&gt;characters16() + startOffset, reinterpret_cast&lt;const LChar*&gt;(matchString), matchLength);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ALWAYS_INLINE static bool equalInner(const StringImpl&amp; stringImpl, unsigned startOffset, const StringImpl&amp; matchString)
</span><span class="lines">@@ -1908,91 +1918,28 @@
</span><span class="cx">     return equalCommon(a, b);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool equalIgnoringCase(const StringImpl* a, const StringImpl* b)
</del><ins>+bool equalCompatibiltyCaselessNonNull(const StringImpl* a, const StringImpl* b)
</ins><span class="cx"> {
</span><ins>+    ASSERT(a);
+    ASSERT(b);
</ins><span class="cx">     if (a == b)
</span><span class="cx">         return true;
</span><del>-    if (!a || !b)
-        return false;
</del><span class="cx"> 
</span><del>-    return CaseFoldingHash::equal(a, b);
-}
-
-bool equalIgnoringCase(const StringImpl* a, const LChar* b)
-{
-    if (!a)
-        return !b;
-    if (!b)
-        return !a;
-
</del><span class="cx">     unsigned length = a-&gt;length();
</span><del>-
-    // Do a faster loop for the case where all the characters are ASCII.
-    UChar ored = 0;
-    bool equal = true;
-    if (a-&gt;is8Bit()) {
-        const LChar* as = a-&gt;characters8();
-        for (unsigned i = 0; i != length; ++i) {
-            LChar bc = b[i];
-            if (!bc)
-                return false;
-            UChar ac = as[i];
-            ored |= ac;
-            equal = equal &amp;&amp; (toASCIILower(ac) == toASCIILower(bc));
-        }
-        
-        // Do a slower implementation for cases that include non-ASCII characters.
-        if (ored &amp; ~0x7F) {
-            equal = true;
-            for (unsigned i = 0; i != length; ++i)
-                equal = equal &amp;&amp; u_foldCase(as[i], U_FOLD_CASE_DEFAULT) == u_foldCase(b[i], U_FOLD_CASE_DEFAULT);
-        }
-        
-        return equal &amp;&amp; !b[length];        
-    }
-
-    const UChar* as = a-&gt;characters16();
-    for (unsigned i = 0; i != length; ++i) {
-        LChar bc = b[i];
-        if (!bc)
-            return false;
-        UChar ac = as[i];
-        ored |= ac;
-        equal = equal &amp;&amp; (toASCIILower(ac) == toASCIILower(bc));
-    }
-
-    // Do a slower implementation for cases that include non-ASCII characters.
-    if (ored &amp; ~0x7F) {
-        equal = true;
-        for (unsigned i = 0; i != length; ++i) {
-            equal = equal &amp;&amp; u_foldCase(as[i], U_FOLD_CASE_DEFAULT) == u_foldCase(b[i], U_FOLD_CASE_DEFAULT);
-        }
-    }
-
-    return equal &amp;&amp; !b[length];
-}
-
-bool equalIgnoringCaseNonNull(const StringImpl* a, const StringImpl* b)
-{
-    ASSERT(a &amp;&amp; b);
-    if (a == b)
-        return true;
-
-    unsigned length = a-&gt;length();
</del><span class="cx">     if (length != b-&gt;length())
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     if (a-&gt;is8Bit()) {
</span><span class="cx">         if (b-&gt;is8Bit())
</span><del>-            return equalIgnoringCase(a-&gt;characters8(), b-&gt;characters8(), length);
</del><ins>+            return equalCompatibiltyCaseless(a-&gt;characters8(), b-&gt;characters8(), length);
</ins><span class="cx"> 
</span><del>-        return equalIgnoringCase(b-&gt;characters16(), a-&gt;characters8(), length);
</del><ins>+        return equalCompatibiltyCaseless(b-&gt;characters16(), a-&gt;characters8(), length);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (b-&gt;is8Bit())
</span><del>-        return equalIgnoringCase(a-&gt;characters16(), b-&gt;characters8(), length);
</del><ins>+        return equalCompatibiltyCaseless(a-&gt;characters16(), b-&gt;characters8(), length);
</ins><span class="cx"> 
</span><del>-    return equalIgnoringCase(a-&gt;characters16(), b-&gt;characters16(), length);
</del><ins>+    return equalCompatibiltyCaseless(a-&gt;characters16(), b-&gt;characters16(), length);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool equalIgnoringNullity(StringImpl* a, StringImpl* b)
</span><span class="lines">@@ -2004,13 +1951,8 @@
</span><span class="cx">     return equal(a, b);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool equalIgnoringASCIICase(const StringImpl&amp; a, const StringImpl&amp; b)
</del><ins>+bool equalIgnoringASCIICase(const StringImpl* a, const StringImpl* b)
</ins><span class="cx"> {
</span><del>-    return equalIgnoringASCIICaseCommon(a, b);
-}
-
-bool equalIgnoringASCIICase(const StringImpl* a, const StringImpl*b)
-{
</del><span class="cx">     if (a == b)
</span><span class="cx">         return true;
</span><span class="cx">     if (!a || !b)
</span><span class="lines">@@ -2018,22 +1960,11 @@
</span><span class="cx">     return equalIgnoringASCIICaseCommon(*a, *b);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool equalIgnoringASCIICase(const StringImpl&amp; a, const char* b, unsigned bLength)
-{
-    if (bLength != a.length())
-        return false;
-
-    if (a.is8Bit())
-        return equalIgnoringASCIICase(a.characters8(), b, bLength);
-
-    return equalIgnoringASCIICase(a.characters16(), b, bLength);
-}
-
</del><span class="cx"> bool equalIgnoringASCIICaseNonNull(const StringImpl* a, const StringImpl* b)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(a);
</span><span class="cx">     ASSERT(b);
</span><del>-    return equalIgnoringASCIICaseCommon(*a, *b);
</del><ins>+    return equalIgnoringASCIICase(*a, *b);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> UCharDirection StringImpl::defaultWritingDirection(bool* hasStrongDirectionality)
</span></span></pre></div>
<a id="trunkSourceWTFwtftextStringImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/StringImpl.h (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/StringImpl.h        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WTF/wtf/text/StringImpl.h        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
</span><del>- * Copyright (C) 2005-2010, 2013-2014 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2005-2010, 2013-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2009 Google Inc. All rights reserved.
</span><span class="cx">  *
</span><span class="cx">  * This library is free software; you can redistribute it and/or
</span><span class="lines">@@ -50,17 +50,21 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WTF {
</span><span class="cx"> 
</span><ins>+class SymbolImpl;
+class SymbolRegistry;
+
</ins><span class="cx"> struct CStringTranslator;
</span><del>-template&lt;typename CharacterType&gt; struct HashAndCharactersTranslator;
</del><ins>+struct CharBufferFromLiteralDataTranslator;
</ins><span class="cx"> struct HashAndUTF8CharactersTranslator;
</span><span class="cx"> struct LCharBufferTranslator;
</span><del>-struct CharBufferFromLiteralDataTranslator;
</del><ins>+struct StringHash;
</ins><span class="cx"> struct SubstringTranslator;
</span><span class="cx"> struct UCharBufferTranslator;
</span><ins>+
</ins><span class="cx"> template&lt;typename&gt; class RetainPtr;
</span><del>-class SymbolImpl;
-class SymbolRegistry;
</del><span class="cx"> 
</span><ins>+template&lt;typename&gt; struct HashAndCharactersTranslator;
+
</ins><span class="cx"> enum TextCaseSensitivity {
</span><span class="cx">     TextCaseSensitive,
</span><span class="cx">     TextCaseInsensitive
</span><span class="lines">@@ -751,7 +755,7 @@
</span><span class="cx">     RetainPtr&lt;CFStringRef&gt; createCFString();
</span><span class="cx"> #endif
</span><span class="cx"> #ifdef __OBJC__
</span><del>-    WTF_EXPORT_STRING_API operator NSString*();
</del><ins>+    WTF_EXPORT_STRING_API operator NSString *();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if STRING_STATS
</span><span class="lines">@@ -942,36 +946,19 @@
</span><span class="cx"> inline bool equal(const char* a, StringImpl* b) { return equal(b, reinterpret_cast&lt;const LChar*&gt;(a)); }
</span><span class="cx"> WTF_EXPORT_STRING_API bool equal(const StringImpl&amp; a, const StringImpl&amp; b);
</span><span class="cx"> 
</span><del>-WTF_EXPORT_STRING_API bool equalIgnoringCase(const StringImpl*, const StringImpl*);
-WTF_EXPORT_STRING_API bool equalIgnoringCase(const StringImpl*, const LChar*);
-inline bool equalIgnoringCase(const LChar* a, const StringImpl* b) { return equalIgnoringCase(b, a); }
-WTF_EXPORT_STRING_API bool equalIgnoringCase(const LChar*, const LChar*, unsigned);
-WTF_EXPORT_STRING_API bool equalIgnoringCase(const UChar*, const LChar*, unsigned);
-inline bool equalIgnoringCase(const UChar* a, const char* b, unsigned length) { return equalIgnoringCase(a, reinterpret_cast&lt;const LChar*&gt;(b), length); }
-inline bool equalIgnoringCase(const LChar* a, const UChar* b, unsigned length) { return equalIgnoringCase(b, a, length); }
-inline bool equalIgnoringCase(const char* a, const UChar* b, unsigned length) { return equalIgnoringCase(b, reinterpret_cast&lt;const LChar*&gt;(a), length); }
-inline bool equalIgnoringCase(const char* a, const LChar* b, unsigned length) { return equalIgnoringCase(b, reinterpret_cast&lt;const LChar*&gt;(a), length); }
-inline bool equalIgnoringCase(const UChar* a, const UChar* b, int length)
-{
-    ASSERT(length &gt;= 0);
-    return !u_memcasecmp(a, b, length, U_FOLD_CASE_DEFAULT);
-}
-WTF_EXPORT_STRING_API bool equalIgnoringCaseNonNull(const StringImpl*, const StringImpl*);
</del><ins>+// FIXME: Deprecated. Used only by CaseFoldingHash, which itself is soon to be deprecated and removed, replaced by ASCIICaseFoldingHash.
+WTF_EXPORT_STRING_API bool equalCompatibiltyCaselessNonNull(const StringImpl*, const StringImpl*);
</ins><span class="cx"> 
</span><span class="cx"> WTF_EXPORT_STRING_API bool equalIgnoringNullity(StringImpl*, StringImpl*);
</span><span class="cx"> WTF_EXPORT_STRING_API bool equalIgnoringNullity(const UChar*, size_t length, StringImpl*);
</span><span class="cx"> 
</span><del>-WTF_EXPORT_STRING_API bool equalIgnoringASCIICase(const StringImpl&amp;, const StringImpl&amp;);
</del><ins>+bool equalIgnoringASCIICase(const StringImpl&amp;, const StringImpl&amp;);
</ins><span class="cx"> WTF_EXPORT_STRING_API bool equalIgnoringASCIICase(const StringImpl*, const StringImpl*);
</span><del>-WTF_EXPORT_STRING_API bool equalIgnoringASCIICase(const StringImpl&amp; a, const char* b, unsigned bLength);
</del><ins>+WTF_EXPORT_STRING_API bool equalIgnoringASCIICase(const StringImpl&amp;, const char*);
+WTF_EXPORT_STRING_API bool equalIgnoringASCIICase(const StringImpl*, const char*);
+
</ins><span class="cx"> WTF_EXPORT_STRING_API bool equalIgnoringASCIICaseNonNull(const StringImpl*, const StringImpl*);
</span><span class="cx"> 
</span><del>-template&lt;unsigned charactersCount&gt;
-bool equalIgnoringASCIICase(const StringImpl* a, const char (&amp;b)[charactersCount])
-{
-    return a ? equalIgnoringASCIICase(*a, b, charactersCount - 1) : false;
-}
-
</del><span class="cx"> template&lt;unsigned length&gt; bool equalLettersIgnoringASCIICase(const StringImpl&amp;, const char (&amp;lowercaseLetters)[length]);
</span><span class="cx"> template&lt;unsigned length&gt; bool equalLettersIgnoringASCIICase(const StringImpl*, const char (&amp;lowercaseLetters)[length]);
</span><span class="cx"> 
</span><span class="lines">@@ -1179,8 +1166,6 @@
</span><span class="cx">     return create(m_data16, m_length);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-struct StringHash;
-
</del><span class="cx"> // StringHash is the default hash for StringImpl* and RefPtr&lt;StringImpl&gt;
</span><span class="cx"> template&lt;typename T&gt; struct DefaultHash;
</span><span class="cx"> template&lt;&gt; struct DefaultHash&lt;StringImpl*&gt; {
</span><span class="lines">@@ -1190,6 +1175,21 @@
</span><span class="cx">     typedef StringHash Hash;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+inline bool equalIgnoringASCIICase(const StringImpl&amp; a, const StringImpl&amp; b)
+{
+    return equalIgnoringASCIICaseCommon(a, b);
+}
+
+inline bool equalIgnoringASCIICase(const StringImpl&amp; a, const char* b)
+{
+    return equalIgnoringASCIICaseCommon(a, b);
+}
+
+inline bool equalIgnoringASCIICase(const StringImpl* a, const char* b)
+{
+    return a &amp;&amp; equalIgnoringASCIICase(*a, b);
+}
+
</ins><span class="cx"> template&lt;unsigned length&gt; inline bool equalLettersIgnoringASCIICase(const StringImpl&amp; string, const char (&amp;lowercaseLetters)[length])
</span><span class="cx"> {
</span><span class="cx">     return equalLettersIgnoringASCIICaseCommon(string, lowercaseLetters);
</span><span class="lines">@@ -1204,7 +1204,6 @@
</span><span class="cx"> 
</span><span class="cx"> using WTF::StringImpl;
</span><span class="cx"> using WTF::equal;
</span><del>-using WTF::equalIgnoringASCIICase;
</del><span class="cx"> using WTF::TextCaseSensitivity;
</span><span class="cx"> using WTF::TextCaseSensitive;
</span><span class="cx"> using WTF::TextCaseInsensitive;
</span></span></pre></div>
<a id="trunkSourceWTFwtftextStringViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/StringView.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/StringView.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WTF/wtf/text/StringView.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -77,17 +77,6 @@
</span><span class="cx">     return ::WTF::endsWithIgnoringASCIICase(*this, suffix);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool equalIgnoringASCIICase(StringView a, const char* b, unsigned bLength)
-{
-    if (bLength != a.length())
-        return false;
-
-    if (a.is8Bit())
-        return equalIgnoringASCIICase(a.characters8(), b, bLength);
-
-    return equalIgnoringASCIICase(a.characters16(), b, bLength);
-}
-
</del><span class="cx"> CString StringView::utf8(ConversionMode mode) const
</span><span class="cx"> {
</span><span class="cx">     if (isNull())
</span></span></pre></div>
<a id="trunkSourceWTFwtftextStringViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/StringView.h (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/StringView.h        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WTF/wtf/text/StringView.h        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -162,13 +162,9 @@
</span><span class="cx"> bool equal(StringView, StringView);
</span><span class="cx"> bool equal(StringView, const LChar*);
</span><span class="cx"> bool equal(StringView, const char*);
</span><ins>+
</ins><span class="cx"> bool equalIgnoringASCIICase(StringView, StringView);
</span><del>-WTF_EXPORT_STRING_API bool equalIgnoringASCIICase(StringView a, const char* b, unsigned bLength);
-template&lt;unsigned charactersCount&gt;
-bool equalIgnoringASCIICase(StringView a, const char (&amp;b)[charactersCount])
-{
-    return equalIgnoringASCIICase(a, b, charactersCount - 1);
-}
</del><ins>+bool equalIgnoringASCIICase(StringView, const char*);
</ins><span class="cx"> 
</span><span class="cx"> template&lt;unsigned length&gt; bool equalLettersIgnoringASCIICase(StringView, const char (&amp;lowercaseLetters)[length]);
</span><span class="cx"> 
</span><span class="lines">@@ -539,6 +535,11 @@
</span><span class="cx">     return equalIgnoringASCIICaseCommon(a, b);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline bool equalIgnoringASCIICase(StringView a, const char* b)
+{
+    return equalIgnoringASCIICaseCommon(a, b);
+}
+
</ins><span class="cx"> class StringView::CodePoints {
</span><span class="cx"> public:
</span><span class="cx">     explicit CodePoints(const StringView&amp;);
</span></span></pre></div>
<a id="trunkSourceWTFwtftextWTFStringh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/WTFString.h (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/WTFString.h        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WTF/wtf/text/WTFString.h        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * (C) 1999 Lars Knoll (knoll@kde.org)
</span><del>- * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2004-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * This library is free software; you can redistribute it and/or
</span><span class="cx">  * modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -34,9 +34,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WTF {
</span><span class="cx"> 
</span><del>-class CString;
-struct StringHash;
-
</del><span class="cx"> // Declarations of string operations
</span><span class="cx"> 
</span><span class="cx"> WTF_EXPORT_STRING_API int charactersToIntStrict(const LChar*, size_t, bool* ok = 0, int base = 10);
</span><span class="lines">@@ -406,7 +403,7 @@
</span><span class="cx">     WTF_EXPORT_STRING_API bool isSafeToSendToAnotherThread() const;
</span><span class="cx"> 
</span><span class="cx">     // Prevent Strings from being implicitly convertable to bool as it will be ambiguous on any platform that
</span><del>-    // allows implicit conversion to another pointer type (e.g., Mac allows implicit conversion to NSString*).
</del><ins>+    // allows implicit conversion to another pointer type (e.g., Mac allows implicit conversion to NSString *).
</ins><span class="cx">     typedef struct ImplicitConversionFromWTFStringToBoolDisallowedA* (String::*UnspecifiedBoolTypeA);
</span><span class="cx">     typedef struct ImplicitConversionFromWTFStringToBoolDisallowedB* (String::*UnspecifiedBoolTypeB);
</span><span class="cx">     operator UnspecifiedBoolTypeA() const;
</span><span class="lines">@@ -418,11 +415,12 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #ifdef __OBJC__
</span><del>-    WTF_EXPORT_STRING_API String(NSString*);
</del><ins>+    WTF_EXPORT_STRING_API String(NSString *);
</ins><span class="cx">     
</span><del>-    // This conversion maps NULL to &quot;&quot;, which loses the meaning of NULL, but we
-    // need this mapping because AppKit crashes when passed nil NSStrings.
-    operator NSString*() const { if (!m_impl) return @&quot;&quot;; return *m_impl; }
</del><ins>+    // This conversion converts the null string to an empty NSString rather than to nil.
+    // Given Cocoa idioms, this is a more useful default. Clients that need to preserve the
+    // null string can check isNull explicitly.
+    operator NSString *() const;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     WTF_EXPORT_STRING_API static String make8BitFrom16BitSource(const UChar*, size_t);
</span><span class="lines">@@ -505,17 +503,9 @@
</span><span class="cx"> template&lt;size_t inlineCapacity&gt; inline bool operator!=(const Vector&lt;char, inlineCapacity&gt;&amp; a, const String&amp; b) { return !(a == b); }
</span><span class="cx"> template&lt;size_t inlineCapacity&gt; inline bool operator!=(const String&amp; a, const Vector&lt;char, inlineCapacity&gt;&amp; b) { return b != a; }
</span><span class="cx"> 
</span><del>-inline bool equalIgnoringCase(const String&amp; a, const String&amp; b) { return equalIgnoringCase(a.impl(), b.impl()); }
-inline bool equalIgnoringCase(const String&amp; a, const LChar* b) { return equalIgnoringCase(a.impl(), b); }
-inline bool equalIgnoringCase(const String&amp; a, const char* b) { return equalIgnoringCase(a.impl(), reinterpret_cast&lt;const LChar*&gt;(b)); }
-inline bool equalIgnoringCase(const LChar* a, const String&amp; b) { return equalIgnoringCase(a, b.impl()); }
-inline bool equalIgnoringCase(const char* a, const String&amp; b) { return equalIgnoringCase(reinterpret_cast&lt;const LChar*&gt;(a), b.impl()); }
</del><ins>+bool equalIgnoringASCIICase(const String&amp;, const String&amp;);
+bool equalIgnoringASCIICase(const String&amp;, const char*);
</ins><span class="cx"> 
</span><del>-bool equalPossiblyIgnoringCase(const String&amp;, const String&amp;, bool ignoreCase);
-
-inline bool equalIgnoringASCIICase(const String&amp; a, const String&amp; b) { return equalIgnoringASCIICase(a.impl(), b.impl()); }
-template&lt;unsigned charactersCount&gt; inline bool equalIgnoringASCIICase(const String&amp; a, const char (&amp;b)[charactersCount]) { return equalIgnoringASCIICase&lt;charactersCount&gt;(a.impl(), b); }
-
</del><span class="cx"> template&lt;unsigned length&gt; bool equalLettersIgnoringASCIICase(const String&amp;, const char (&amp;lowercaseLetters)[length]);
</span><span class="cx"> 
</span><span class="cx"> inline bool equalIgnoringNullity(const String&amp; a, const String&amp; b) { return equalIgnoringNullity(a.impl(), b.impl()); }
</span><span class="lines">@@ -525,6 +515,13 @@
</span><span class="cx"> 
</span><span class="cx"> inline void swap(String&amp; a, String&amp; b) { a.swap(b); }
</span><span class="cx"> 
</span><ins>+#ifdef __OBJC__
+
+// Used in a small number of places where the long standing behavior has been &quot;nil if empty&quot;.
+NSString * nsStringNilIfEmpty(const String&amp;);
+
+#endif
+
</ins><span class="cx"> // Definitions of string operations
</span><span class="cx"> 
</span><span class="cx"> inline String::String(StringImpl&amp; impl)
</span><span class="lines">@@ -597,12 +594,22 @@
</span><span class="cx">     return !(ored &amp; 0xFF00);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#ifdef __OBJC__
</ins><span class="cx"> 
</span><del>-#ifdef __OBJC__
-// This is for situations in WebKit where the long standing behavior has been
-// &quot;nil if empty&quot;, so we try to maintain longstanding behavior for the sake of
-// entrenched clients
-inline NSString* nsStringNilIfEmpty(const String&amp; str) {  return str.isEmpty() ? nil : (NSString*)str; }
</del><ins>+inline String::operator NSString *() const
+{
+    if (!m_impl)
+        return @&quot;&quot;;
+    return *m_impl;
+}
+
+inline NSString * nsStringNilIfEmpty(const String&amp; string)
+{
+    if (string.isEmpty())
+        return nil;
+    return *string.impl();
+}
+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> inline bool String::containsOnlyASCII() const
</span><span class="lines">@@ -669,11 +676,6 @@
</span><span class="cx">     return WTF::isAllSpecialCharacters&lt;isSpecialCharacter, UChar&gt;(characters16(), len);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline bool equalPossiblyIgnoringCase(const String&amp; a, const String&amp; b, bool ignoreCase)
-{
-    return ignoreCase ? equalIgnoringCase(a, b) : (a == b);
-}
-
</del><span class="cx"> // StringHash is the default hash for String
</span><span class="cx"> template&lt;typename T&gt; struct DefaultHash;
</span><span class="cx"> template&lt;&gt; struct DefaultHash&lt;String&gt; {
</span><span class="lines">@@ -718,8 +720,18 @@
</span><span class="cx">     return equalLettersIgnoringASCIICase(string.impl(), lowercaseLetters);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline bool equalIgnoringASCIICase(const String&amp; a, const String&amp; b)
+{
+    return equalIgnoringASCIICase(a.impl(), b.impl());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline bool equalIgnoringASCIICase(const String&amp; a, const char* b)
+{
+    return equalIgnoringASCIICase(a.impl(), b);
+}
+
+}
+
</ins><span class="cx"> using WTF::CString;
</span><span class="cx"> using WTF::KeepTrailingZeros;
</span><span class="cx"> using WTF::String;
</span><span class="lines">@@ -739,8 +751,6 @@
</span><span class="cx"> using WTF::charactersToDouble;
</span><span class="cx"> using WTF::charactersToFloat;
</span><span class="cx"> using WTF::equal;
</span><del>-using WTF::equalIgnoringCase;
-using WTF::equalLettersIgnoringASCIICase;
</del><span class="cx"> using WTF::find;
</span><span class="cx"> using WTF::isAllSpecialCharacters;
</span><span class="cx"> using WTF::isSpaceOrNewline;
</span><span class="lines">@@ -749,4 +759,5 @@
</span><span class="cx"> using WTF::StringCapture;
</span><span class="cx"> 
</span><span class="cx"> #include &lt;wtf/text/AtomicString.h&gt;
</span><ins>+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/ChangeLog        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,3 +1,247 @@
</span><ins>+2016-01-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
+        https://bugs.webkit.org/show_bug.cgi?id=153411
+
+        Reviewed by Ryosuke Niwa.
+
+        Tests: fast/media/media-query-non-ASCII-case-folding.html
+               fast/dom/HTMLAnchorElement/anchor-non-ASCII-case-folding.html
+               fast/xpath/xpath-non-ASCII-case-folding.html
+
+        No tests included that cover the minor behavior changes in Document::setDomain,
+        CSPSource::schemeMatches, CSPSource::hostMatches, OriginAccessEntry::operator==,
+        UserContentURLPattern::matches, UserContentURLPattern::matchesHost,
+        ContentFilterUnblockHandler::canHandleRequest. Would like to add tests for those
+        if possible, but it seems clear all are progressions.
+
+        For background on why this is the right thing to do in almost every case:
+
+        - MIME types are all ASCII and not case sensitive (details in RFC 2045)
+          &lt;http://tools.ietf.org/html/rfc2045&gt;
+        - case insensitive comparisons in HTML are all &quot;ASCII case-insensitive&quot;
+          https://www.w3.org/TR/html/infrastructure.html#ascii-case-insensitive
+        - same for CSS
+
+        * Modules/webdatabase/DatabaseAuthorizer.cpp:
+        (WebCore::DatabaseAuthorizer::denyBasedOnTableName): Use equalIgnoringASCIICase.
+        No change in behavior since the string we are comparing with is always
+        &quot;__WebKitDatabaseInfoTable__&quot; in practice.
+
+        * accessibility/AccessibilityNodeObject.cpp:
+        (WebCore::siblingWithAriaRole): Changed argument type to take a const char*,
+        added some FIXMEs and use equalIgnoringCase. No change in behavior since the
+        strings we are comparing with are &quot;menu&quot; and &quot;menuitem&quot;.
+        (WebCore::AccessibilityNodeObject::menuElementForMenuButton): Updated to pass
+        arguments in reverse order.
+        (WebCore::AccessibilityNodeObject::menuItemElementForMenu): Ditto.
+
+        * css/CSSParser.cpp:
+        (WebCore::CSSParser::parseFontFaceValue): Use equalIgnoringASCIICase.
+        No change in behavior because the property names are all ASCII constants.
+
+        * css/CSSParserValues.h: Removed unused equalIgnoringCase function.
+
+        * css/MediaQueryEvaluator.cpp:
+        (WebCore::MediaQueryEvaluator::mediaTypeMatch): Use equalIgnoringASCIICase.
+        Changes behavior: No non-ASCII case folding when matching media types.
+        Covered by new test.
+        (WebCore::MediaQueryEvaluator::mediaTypeMatchSpecific): Use equalIgnoringASCIICase.
+        No change in behavior since the only string this is ever called with is &quot;print&quot;.
+
+        * dom/DataTransfer.cpp:
+        (WebCore::DataTransfer::hasFileOfType): Use equalIgnoringASCIICase.
+        No change in behavior because local files will not have content types with
+        non-ASCII characters in them. In the extremely unlikely case that this is incorrect,
+        the change in behavior is a progression.
+
+        * dom/Document.cpp:
+        (WebCore::Document::setDomain): Use equalIgnoringASCIICase.
+        Changes behavior: Domains considered equal because of non-ASCII case folding
+        would get through without an error before, and now will properly throw an exception.
+
+        * dom/Element.cpp:
+        (WebCore::isStyleAttribute): Refactored into a helper function. Use
+        equalLettersIgnoringASCIICase. No change in behavior.
+        (WebCore::Element::synchronizeAttribute): Use isStyleAttribute.
+
+        * dom/TreeScope.cpp:
+        (WebCore::TreeScope::findAnchor): Use equalIgnoringASCIICase.
+        Changes behavior: Could go to an anchor and it would be considered a match because
+        of non-ASCII case folding. Covered by new test.
+
+        * html/HiddenInputType.cpp:
+        (WebCore::HiddenInputType::appendFormData): Use equalIgnoringASCIICase.
+        No change in behavior: comparing with an ASCII literal.
+        * html/canvas/WebGL2RenderingContext.cpp:
+        (WebCore::WebGL2RenderingContext::getExtension): Ditto.
+        * html/canvas/WebGLRenderingContext.cpp:
+        (WebCore::WebGLRenderingContext::getExtension): Ditto.
+
+        * html/parser/CSSPreloadScanner.cpp:
+        (WebCore::CSSPreloadScanner::emitRule): Use equalLettersIgnoringASCIICase and
+        StringView to avoid needing a special ruleEqualIgnoringCase function.
+        No change in behavior.
+
+        * inspector/InspectorNodeFinder.cpp:
+        (WebCore::InspectorNodeFinder::matchesElement): Use equalIgnoringASCIICase.
+        Changes behavior, but it's an inspector UI thing, not a web behavior thing,
+        so I don't think a new regression test is needed.
+
+        * loader/HistoryController.cpp:
+        (WebCore::HistoryController::currentItemShouldBeReplaced): Use
+        equalIgnoringASCIICase. No change in behavior because we are comparing
+        with &quot;about:blank&quot;.
+
+        * loader/SubframeLoader.cpp:
+        (WebCore::findPluginMIMETypeFromURL): Use equalIgnoringASCIICase.
+        No change in behavior unless a plug-in claims an extension with non-ASCII
+        characters. I don't think a new regression test is needed.
+
+        * loader/appcache/ApplicationCacheHost.cpp:
+        (WebCore::ApplicationCacheHost::shouldLoadResourceFromApplicationCache):
+        Use equalIgnoringASCIICase. No change in behavior because both strings are
+        protocols from URLs and we don't parse non-ASCII characters into protocol strings;
+        non-ASCII are already encoding as punycode.
+        * loader/appcache/ManifestParser.cpp:
+        (WebCore::parseManifest): Ditto.
+
+        * page/ContentSecurityPolicy.cpp:
+        (WebCore::isExperimentalDirectiveName): Added. Used by isDirectiveName.
+        Uses equalLettersIgnoringASCIICase. No change in behavior.
+        (WebCore::isDirectiveName): Use equalLettersIgnoringASCIICase.
+        No change in behavior.
+        (WebCore::isSourceListNone): Use equalLettersIgnoringASCIICase. No
+        change in behavior.
+        (WebCore::CSPSource::schemeMatches): Use equalLettersIgnoringASCIICase
+        and equalIgnoringASCIICase. It's all about comparing URL protocols. The
+        old code might have done something strange if someone specified a protocol
+        with a non-ASCII character in it.
+        (WebCore::CSPSource::hostMatches): Use equalIgnoringASCIICase.
+        (WebCore::CSPSourceList::parseSource): Use equalLettersIgnoringASCIICase.
+        No change in behavior.
+        (WebCore::CSPDirectiveList::checkSourceAndReportViolation): Tweaked code
+        to do less unnecessary String allocation.
+        (WebCore::CSPDirectiveList::parseReflectedXSS): Use
+        equalLettersIgnoringASCIICase. No change in behavior.
+        (WebCore::CSPDirectiveList::addDirective): Ditto.
+        (WebCore::ContentSecurityPolicy::reportUnsupportedDirective): Use
+        equalLettersIgnoringASCIICase and remove unneeded global constant strings.
+        No change in behavior.
+        (WebCore::ContentSecurityPolicy::reportDirectiveAsSourceExpression):
+        Tweak code to eliminate unneeded local.
+        (WebCore::ContentSecurityPolicy::reportDuplicateDirective): Ditto.
+        (WebCore::ContentSecurityPolicy::reportInvalidSourceExpression): Use
+        equalLettersIgnoringASCIICase. No change in behavior.
+
+        * page/OriginAccessEntry.h:
+        (WebCore::operator==): Use equalLettersIgnoringASCIICase.
+
+        * page/Performance.cpp:
+        (WebCore::Performance::webkitGetEntriesByName): Use equalLettersIgnoringASCIICase.
+        No change in behavior.
+
+        * page/UserContentURLPattern.cpp:
+        (WebCore::UserContentURLPattern::matches): Use equalIgnoringASCIICase to match
+        schemes.
+        (WebCore::UserContentURLPattern::matchesHost): Use equalIgnoringASCIICase to
+        match host names.
+
+        * platform/URL.cpp:
+        (WebCore::URL::init): Use equalIgnoringASCIICase, and also use StringView to
+        avoid having to allocate a second string just for comparison purposes. Should be
+        better for efficiency with no change in behavior.
+
+        * platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:
+        (WebCore::ContentFilterUnblockHandler::canHandleRequest): Use equalIgnoringASCIICase
+        to compare hosts.
+
+        * platform/efl/PlatformSpeechSynthesisProviderEfl.cpp:
+        (WebCore::PlatformSpeechSynthesisProviderEfl::voiceName): Use StringView and
+        equalIgnoringASCIICase to compare language tags. No test needed because there are
+        no language tags with non-ASCII characters in them.
+
+        * platform/graphics/FontCache.cpp:
+        (WebCore::FontPlatformDataCacheKey::operator==): Changed to use the equal
+        function from CaseFoldingHash. In a subsequent patch we will change this to be
+        ASCIICaseFoldingHash since font names don't need to compare non-ASCII characters
+        in a case folding manner, but for now preserve behavior.
+        (WebCore::alternateFamilyName): Use equalLettersIgnoringASCIICase to avoid having
+        to use a special familyNameEqualIgnoringCase function. This does mean there will
+        be a null check and a length check that wasn't there before, but the actual
+        comparison function will be tighter. Guessing it will be a wash. Also improved
+        the comments and sorted the Windows cases in with the others. No behavior change.
+
+        * platform/graphics/FontCascade.cpp:
+        (WebCore::operator==): Changed to use the equal function from CaseFoldingHash.
+        Same rationale as above in FontPlatformDataCacheKey.
+
+        * platform/graphics/FontDescription.cpp:
+        (WebCore::FontCascadeDescription::familiesEqualForTextAutoSizing): Use
+        equalIgnoringASCIICase to compare font family names. Only possible change in
+        behavior would be if actual fonts with non-ASCII names but that were specified
+        with different case in style sheets. Highly unlikely this exists.
+
+        * platform/graphics/MediaPlayer.cpp:
+        (WebCore::MediaPlayer::supportsType): Use equalLettersIgnoringASCIICase.
+        No change in behavior.
+        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
+        (WebCore::keySystemIsSupported): Ditto.
+
+        * platform/graphics/freetype/FontCacheFreeType.cpp:
+        (WebCore::isCommonlyUsedGenericFamily): Added.
+        (WebCore::FontCache::createFontPlatformData): Moved code into the
+        isCommonlyUsedGenericFamily helper and used equalIgnoringASCIICase.
+
+        * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:
+        (WebCore::FontCustomPlatformData::supportsFormat): Use
+        equalLettersIgnoringASCIICase. No change in behavior.
+        * platform/graphics/win/FontCacheWin.cpp:
+        (WebCore::adjustedGDIFontWeight): Ditto.
+        (WebCore::FontCache::createFontPlatformData): Ditto.
+        * platform/graphics/win/FontCustomPlatformData.cpp:
+        (WebCore::FontCustomPlatformData::supportsFormat): Ditto.
+        * platform/graphics/win/FontCustomPlatformDataCairo.cpp:
+        (WebCore::FontCustomPlatformData::supportsFormat): Ditto.
+
+        * platform/mac/PlatformSpeechSynthesizerMac.mm:
+        (-[WebSpeechSynthesisWrapper speakUtterance:]): Use equalIgnoringASCIICase to
+        compare languages. No change in behavior because languages have all-ASCII names.
+
+        * platform/network/CacheValidation.cpp:
+        (WebCore::shouldUpdateHeaderAfterRevalidation): Use equalIgnoringASCIICase.
+        No change in behavior since it's a fixed list of all ASCII headers.
+        * platform/network/curl/ResourceHandleManager.cpp:
+        (WebCore::isAppendableHeader): Ditto.
+
+        * platform/network/mac/ResourceHandleMac.mm:
+        (WebCore::ResourceHandle::willSendRequest): Use equalIgnoringASCIICase.
+        No change in behavior because HTTP methods are all ASCII letters.
+
+        * platform/text/mac/LocaleMac.mm:
+        (WebCore::determineLocale): Use equalIgnoringASCIICase. No change in behavior
+        because locale languages identifiers are all ASCII.
+        * platform/text/win/LocaleWin.cpp:
+        (WebCore::LCIDFromLocaleInternal): Ditto.
+
+        * svg/SVGToOTFFontConversion.cpp:
+        (WebCore::SVGToOTFFontConverter::appendArabicReplacementSubtable):
+        Use equalIgnoringASCIICase. No change in behavior because Arabic form attribute
+        values are all ASCII.
+
+        * xml/XMLHttpRequest.cpp:
+        (WebCore::XMLHttpRequest::uppercaseKnownHTTPMethod): Use equalIgnoringASCIICase.
+        No change in behavior because these are all fixed known ASCII HTTP method names.
+
+        * xml/XPathFunctions.cpp:
+        (WebCore::XPath::FunLang::evaluate): Use equalIgnoringASCIICase. Changes behavior
+        if specifying a non-ASCII character. Covered by new test.
+
+        * xml/XPathStep.cpp:
+        (WebCore::XPath::nodeMatchesBasicTest): Use equalIgnoringASCIICase. Changes
+        behavior if an element local name or XPath predicate has a non-ASCII character.
+        Covered by new test.
+
</ins><span class="cx"> 2016-01-28  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unexpected content wrapping at http://email.osh.com/H/2/v100000152474feb8ec7c1a1f4bbe5c7c0/HTML
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebdatabaseDatabaseAuthorizercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webdatabase/DatabaseAuthorizer.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webdatabase/DatabaseAuthorizer.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/Modules/webdatabase/DatabaseAuthorizer.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -407,12 +407,14 @@
</span><span class="cx">         return SQLAuthAllow;
</span><span class="cx"> 
</span><span class="cx">     // Sadly, normal creates and drops end up affecting sqlite_master in an authorizer callback, so
</span><del>-    // it will be tough to enforce all of the following policies
-    //if (equalIgnoringCase(tableName, &quot;sqlite_master&quot;) || equalIgnoringCase(tableName, &quot;sqlite_temp_master&quot;) ||
-    //    equalIgnoringCase(tableName, &quot;sqlite_sequence&quot;) || equalIgnoringCase(tableName, Database::databaseInfoTableName()))
-    //        return SQLAuthDeny;
</del><ins>+    // it will be tough to enforce all of the following policies.
+    // if (equalIgnoringASCIICase(tableName, &quot;sqlite_master&quot;)
+    //      || equalIgnoringASCIICase(tableName, &quot;sqlite_temp_master&quot;)
+    //      || equalIgnoringASCIICase(tableName, &quot;sqlite_sequence&quot;)
+    //      || equalIgnoringASCIICase(tableName, Database::databaseInfoTableName()))
+    //    return SQLAuthDeny;
</ins><span class="cx"> 
</span><del>-    if (equalIgnoringCase(tableName, m_databaseInfoTableName))
</del><ins>+    if (equalIgnoringASCIICase(tableName, m_databaseInfoTableName))
</ins><span class="cx">         return SQLAuthDeny;
</span><span class="cx"> 
</span><span class="cx">     return SQLAuthAllow;
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityNodeObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1193,15 +1193,16 @@
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static Element* siblingWithAriaRole(String role, Node* node)
</del><ins>+static Element* siblingWithAriaRole(Node* node, const char* role)
</ins><span class="cx"> {
</span><ins>+    // FIXME: Either we should add a null check here or change the function to take a reference instead of a pointer.
</ins><span class="cx">     ContainerNode* parent = node-&gt;parentNode();
</span><span class="cx">     if (!parent)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; sibling : childrenOfType&lt;Element&gt;(*parent)) {
</span><del>-        const AtomicString&amp; siblingAriaRole = sibling.fastGetAttribute(roleAttr);
-        if (equalIgnoringCase(siblingAriaRole, role))
</del><ins>+        // FIXME: Should skip sibling that is the same as the node.
+        if (equalIgnoringASCIICase(sibling.fastGetAttribute(roleAttr), role))
</ins><span class="cx">             return &amp;sibling;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1213,7 +1214,7 @@
</span><span class="cx">     if (ariaRoleAttribute() != MenuButtonRole)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    return siblingWithAriaRole(&quot;menu&quot;, node());
</del><ins>+    return siblingWithAriaRole(node(), &quot;menu&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> AccessibilityObject* AccessibilityNodeObject::menuForMenuButton() const
</span><span class="lines">@@ -1228,7 +1229,7 @@
</span><span class="cx">     if (ariaRoleAttribute() != MenuRole)
</span><span class="cx">         return nullptr;
</span><span class="cx">     
</span><del>-    return siblingWithAriaRole(&quot;menuitem&quot;, node());    
</del><ins>+    return siblingWithAriaRole(node(), &quot;menuitem&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> AccessibilityObject* AccessibilityNodeObject::menuButtonForMenu() const
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/css/CSSParser.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1310,7 +1310,7 @@
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;CSSValue&gt; value;
</span><span class="cx">         for (auto propertyID : { CSSValueSerif, CSSValueSansSerif, CSSValueCursive, CSSValueFantasy, CSSValueMonospace, CSSValueWebkitBody }) {
</span><del>-            if (equalIgnoringCase(stripped, getValueName(propertyID))) {
</del><ins>+            if (equalIgnoringASCIICase(stripped, getValueName(propertyID))) {
</ins><span class="cx">                 value = cssValuePool.createIdentifierValue(propertyID);
</span><span class="cx">                 break;
</span><span class="cx">             }
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParserValuesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParserValues.h (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParserValues.h        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/css/CSSParserValues.h        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -89,13 +89,6 @@
</span><span class="cx">         return m_data.characters16[i];
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool equalIgnoringCase(const char* str) const
-    {
-        if (is8Bit())
-            return WTF::equalIgnoringCase(str, characters8(), length());
-        return WTF::equalIgnoringCase(str, characters16(), length());
-    }
-
</del><span class="cx">     operator String() const { return is8Bit() ? String(m_data.characters8, m_length) : String(m_data.characters16, m_length); }
</span><span class="cx">     operator AtomicString() const { return is8Bit() ? AtomicString(m_data.characters8, m_length) : AtomicString(m_data.characters16, m_length); }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssMediaQueryEvaluatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/MediaQueryEvaluator.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/MediaQueryEvaluator.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/css/MediaQueryEvaluator.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> {
</span><span class="cx">     return mediaTypeToMatch.isEmpty()
</span><span class="cx">         || equalLettersIgnoringASCIICase(mediaTypeToMatch, &quot;all&quot;)
</span><del>-        || equalIgnoringCase(mediaTypeToMatch, m_mediaType);
</del><ins>+        || equalIgnoringASCIICase(mediaTypeToMatch, m_mediaType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool MediaQueryEvaluator::mediaTypeMatchSpecific(const char* mediaTypeToMatch) const
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx">     ASSERT(mediaTypeToMatch);
</span><span class="cx">     ASSERT(mediaTypeToMatch[0] != '\0');
</span><span class="cx">     ASSERT(!equalLettersIgnoringASCIICase(StringView(mediaTypeToMatch), &quot;all&quot;));
</span><del>-    return equalIgnoringCase(mediaTypeToMatch, m_mediaType);
</del><ins>+    return equalIgnoringASCIICase(m_mediaType, mediaTypeToMatch);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool applyRestrictor(MediaQuery::Restrictor r, bool value)
</span></span></pre></div>
<a id="trunkSourceWebCoredomDataTransfercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DataTransfer.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DataTransfer.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/dom/DataTransfer.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -189,7 +189,7 @@
</span><span class="cx">     ASSERT_WITH_SECURITY_IMPLICATION(canReadTypes());
</span><span class="cx"> 
</span><span class="cx">     for (const String&amp; path : m_pasteboard-&gt;readFilenames()) {
</span><del>-        if (equalIgnoringCase(File::contentTypeForFile(path), type))
</del><ins>+        if (equalIgnoringASCIICase(File::contentTypeForFile(path), type))
</ins><span class="cx">             return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/dom/Document.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -3342,7 +3342,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     m_viewportArguments = ViewportArguments(origin);
</span><del>-    processArguments(features, (void*)&amp;m_viewportArguments, &amp;setViewportFeature);
</del><ins>+    processArguments(features, (void*)&amp;m_viewportArguments, setViewportFeature);
</ins><span class="cx"> 
</span><span class="cx">     updateViewportArguments();
</span><span class="cx"> }
</span><span class="lines">@@ -3361,6 +3361,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> // FIXME: Find a better place for this functionality.
</span><span class="cx"> void setParserFeature(const String&amp; key, const String&amp; value, Document* document, void*)
</span><span class="cx"> {
</span><span class="lines">@@ -3371,7 +3372,7 @@
</span><span class="cx"> void Document::processFormatDetection(const String&amp; features)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!features.isNull());
</span><del>-    processArguments(features, nullptr, &amp;setParserFeature);
</del><ins>+    processArguments(features, nullptr, setParserFeature);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Document::processWebAppOrientations()
</span><span class="lines">@@ -3379,6 +3380,7 @@
</span><span class="cx">     if (Page* page = this-&gt;page())
</span><span class="cx">         page-&gt;chrome().client().webAppOrientationsUpdated();
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void Document::processReferrerPolicy(const String&amp; policy)
</span><span class="lines">@@ -4394,7 +4396,7 @@
</span><span class="cx">     // assigns its current domain using document.domain, the page will
</span><span class="cx">     // allow other pages loaded on different ports in the same domain that
</span><span class="cx">     // have also assigned to access this page.
</span><del>-    if (equalIgnoringCase(domain(), newDomain)) {
</del><ins>+    if (equalIgnoringASCIICase(domain(), newDomain)) {
</ins><span class="cx">         securityOrigin()-&gt;setDomainFromDOM(newDomain);
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/dom/Element.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -438,19 +438,24 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static ALWAYS_INLINE bool isStyleAttribute(const Element&amp; element, const AtomicString&amp; attributeLocalName)
+{
+    if (shouldIgnoreAttributeCase(element))
+        return equalLettersIgnoringASCIICase(attributeLocalName, &quot;style&quot;);
+    return attributeLocalName == styleAttr.localName();
+}
+
</ins><span class="cx"> ALWAYS_INLINE void Element::synchronizeAttribute(const AtomicString&amp; localName) const
</span><span class="cx"> {
</span><span class="cx">     // This version of synchronizeAttribute() is streamlined for the case where you don't have a full QualifiedName,
</span><span class="cx">     // e.g when called from DOM API.
</span><span class="cx">     if (!elementData())
</span><span class="cx">         return;
</span><del>-    // FIXME: this should be comparing in the ASCII range.
-    if (elementData()-&gt;styleAttributeIsDirty() &amp;&amp; equalPossiblyIgnoringCase(localName, styleAttr.localName(), shouldIgnoreAttributeCase(*this))) {
</del><ins>+    if (elementData()-&gt;styleAttributeIsDirty() &amp;&amp; isStyleAttribute(*this, localName)) {
</ins><span class="cx">         ASSERT_WITH_SECURITY_IMPLICATION(isStyledElement());
</span><span class="cx">         static_cast&lt;const StyledElement*&gt;(this)-&gt;synchronizeStyleAttributeInternal();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-
</del><span class="cx">     if (elementData()-&gt;animatedSVGAttributesAreDirty()) {
</span><span class="cx">         // We're not passing a namespace argument on purpose. SVGNames::*Attr are defined w/o namespaces as well.
</span><span class="cx">         ASSERT_WITH_SECURITY_IMPLICATION(isSVGElement());
</span><span class="lines">@@ -2882,7 +2887,6 @@
</span><span class="cx">         return SpellcheckAttributeTrue;
</span><span class="cx">     if (equalLettersIgnoringASCIICase(value, &quot;false&quot;))
</span><span class="cx">         return SpellcheckAttributeFalse;
</span><del>-
</del><span class="cx">     return SpellcheckAttributeDefault;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomTreeScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TreeScope.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TreeScope.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/dom/TreeScope.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -270,8 +270,10 @@
</span><span class="cx">         return element;
</span><span class="cx">     for (auto&amp; anchor : descendantsOfType&lt;HTMLAnchorElement&gt;(m_rootNode)) {
</span><span class="cx">         if (m_rootNode.document().inQuirksMode()) {
</span><del>-            // Quirks mode, case insensitive comparison of names.
-            if (equalIgnoringCase(anchor.name(), name))
</del><ins>+            // Quirks mode, ASCII case-insensitive comparison of names.
+            // FIXME: This behavior is not mentioned in the HTML specification.
+            // We should either remove this or get this into the specification.
+            if (equalIgnoringASCIICase(anchor.name(), name))
</ins><span class="cx">                 return &amp;anchor;
</span><span class="cx">         } else {
</span><span class="cx">             // Strict mode, names need to match exactly.
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHiddenInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HiddenInputType.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HiddenInputType.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/html/HiddenInputType.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool HiddenInputType::appendFormData(FormDataList&amp; encoding, bool isMultipartForm) const
</span><span class="cx"> {
</span><del>-    if (equalIgnoringCase(element().name(), &quot;_charset_&quot;)) {
</del><ins>+    if (equalIgnoringASCIICase(element().name(), &quot;_charset_&quot;)) {
</ins><span class="cx">         encoding.appendData(element().name(), String(encoding.encoding().name()));
</span><span class="cx">         return true;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGL2RenderingContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -950,7 +950,7 @@
</span><span class="cx">     if (isContextLostOrPending())
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    if ((equalIgnoringCase(name, &quot;EXT_texture_filter_anisotropic&quot;) || equalIgnoringCase(name, &quot;WEBKIT_EXT_texture_filter_anisotropic&quot;))
</del><ins>+    if ((equalIgnoringASCIICase(name, &quot;EXT_texture_filter_anisotropic&quot;) || equalIgnoringASCIICase(name, &quot;WEBKIT_EXT_texture_filter_anisotropic&quot;))
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_EXT_texture_filter_anisotropic&quot;)) {
</span><span class="cx">         if (!m_extTextureFilterAnisotropic) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_EXT_texture_filter_anisotropic&quot;);
</span><span class="lines">@@ -958,7 +958,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_extTextureFilterAnisotropic.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_texture_float&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_texture_float&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_texture_float&quot;)) {
</span><span class="cx">         if (!m_oesTextureFloat) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_texture_float&quot;);
</span><span class="lines">@@ -966,7 +966,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesTextureFloat.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_texture_float_linear&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_texture_float_linear&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_texture_float_linear&quot;)) {
</span><span class="cx">         if (!m_oesTextureFloatLinear) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_texture_float_linear&quot;);
</span><span class="lines">@@ -974,7 +974,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesTextureFloatLinear.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_texture_half_float&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_texture_half_float&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_texture_half_float&quot;)) {
</span><span class="cx">         if (!m_oesTextureHalfFloat) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_texture_half_float&quot;);
</span><span class="lines">@@ -982,7 +982,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesTextureHalfFloat.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_texture_half_float_linear&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_texture_half_float_linear&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_texture_half_float_linear&quot;)) {
</span><span class="cx">         if (!m_oesTextureHalfFloatLinear) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_texture_half_float_linear&quot;);
</span><span class="lines">@@ -990,30 +990,30 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesTextureHalfFloatLinear.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_lose_context&quot;)) {
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_lose_context&quot;)) {
</ins><span class="cx">         if (!m_webglLoseContext)
</span><span class="cx">             m_webglLoseContext = std::make_unique&lt;WebGLLoseContext&gt;(this);
</span><span class="cx">         return m_webglLoseContext.get();
</span><span class="cx">     }
</span><del>-    if ((equalIgnoringCase(name, &quot;WEBKIT_WEBGL_compressed_texture_atc&quot;))
</del><ins>+    if ((equalIgnoringASCIICase(name, &quot;WEBKIT_WEBGL_compressed_texture_atc&quot;))
</ins><span class="cx">         &amp;&amp; WebGLCompressedTextureATC::supported(this)) {
</span><span class="cx">         if (!m_webglCompressedTextureATC)
</span><span class="cx">             m_webglCompressedTextureATC = std::make_unique&lt;WebGLCompressedTextureATC&gt;(this);
</span><span class="cx">         return m_webglCompressedTextureATC.get();
</span><span class="cx">     }
</span><del>-    if ((equalIgnoringCase(name, &quot;WEBKIT_WEBGL_compressed_texture_pvrtc&quot;))
</del><ins>+    if ((equalIgnoringASCIICase(name, &quot;WEBKIT_WEBGL_compressed_texture_pvrtc&quot;))
</ins><span class="cx">         &amp;&amp; WebGLCompressedTexturePVRTC::supported(this)) {
</span><span class="cx">         if (!m_webglCompressedTexturePVRTC)
</span><span class="cx">             m_webglCompressedTexturePVRTC = std::make_unique&lt;WebGLCompressedTexturePVRTC&gt;(this);
</span><span class="cx">         return m_webglCompressedTexturePVRTC.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_compressed_texture_s3tc&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_compressed_texture_s3tc&quot;)
</ins><span class="cx">         &amp;&amp; WebGLCompressedTextureS3TC::supported(this)) {
</span><span class="cx">         if (!m_webglCompressedTextureS3TC)
</span><span class="cx">             m_webglCompressedTextureS3TC = std::make_unique&lt;WebGLCompressedTextureS3TC&gt;(this);
</span><span class="cx">         return m_webglCompressedTextureS3TC.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_depth_texture&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_depth_texture&quot;)
</ins><span class="cx">         &amp;&amp; WebGLDepthTexture::supported(graphicsContext3D())) {
</span><span class="cx">         if (!m_webglDepthTexture) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_CHROMIUM_depth_texture&quot;);
</span><span class="lines">@@ -1021,12 +1021,12 @@
</span><span class="cx">         }
</span><span class="cx">         return m_webglDepthTexture.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_debug_renderer_info&quot;)) {
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_debug_renderer_info&quot;)) {
</ins><span class="cx">         if (!m_webglDebugRendererInfo)
</span><span class="cx">             m_webglDebugRendererInfo = std::make_unique&lt;WebGLDebugRendererInfo&gt;(this);
</span><span class="cx">         return m_webglDebugRendererInfo.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_debug_shaders&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_debug_shaders&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_ANGLE_translated_shader_source&quot;)) {
</span><span class="cx">         if (!m_webglDebugShaders)
</span><span class="cx">             m_webglDebugShaders = std::make_unique&lt;WebGLDebugShaders&gt;(this);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGLRenderingContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx">     if (isContextLostOrPending())
</span><span class="cx">         return nullptr;
</span><span class="cx">     
</span><del>-    if (equalIgnoringCase(name, &quot;EXT_blend_minmax&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;EXT_blend_minmax&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_EXT_blend_minmax&quot;)) {
</span><span class="cx">         if (!m_extBlendMinMax) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_EXT_blend_minmax&quot;);
</span><span class="lines">@@ -97,7 +97,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_extBlendMinMax.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;EXT_sRGB&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;EXT_sRGB&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_EXT_sRGB&quot;)) {
</span><span class="cx">         if (!m_extsRGB) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_EXT_sRGB&quot;);
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_extsRGB.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;EXT_frag_depth&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;EXT_frag_depth&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_EXT_frag_depth&quot;)) {
</span><span class="cx">         if (!m_extFragDepth) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_EXT_frag_depth&quot;);
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_extFragDepth.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;EXT_shader_texture_lod&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;EXT_shader_texture_lod&quot;)
</ins><span class="cx">         &amp;&amp; (m_context-&gt;getExtensions()-&gt;supports(&quot;GL_EXT_shader_texture_lod&quot;) || m_context-&gt;getExtensions()-&gt;supports(&quot;GL_ARB_shader_texture_lod&quot;))) {
</span><span class="cx">         if (!m_extShaderTextureLOD) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_EXT_shader_texture_lod&quot;);
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_extShaderTextureLOD.get();
</span><span class="cx">     }
</span><del>-    if ((equalIgnoringCase(name, &quot;EXT_texture_filter_anisotropic&quot;) || equalIgnoringCase(name, &quot;WEBKIT_EXT_texture_filter_anisotropic&quot;))
</del><ins>+    if ((equalIgnoringASCIICase(name, &quot;EXT_texture_filter_anisotropic&quot;) || equalIgnoringASCIICase(name, &quot;WEBKIT_EXT_texture_filter_anisotropic&quot;))
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_EXT_texture_filter_anisotropic&quot;)) {
</span><span class="cx">         if (!m_extTextureFilterAnisotropic) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_EXT_texture_filter_anisotropic&quot;);
</span><span class="lines">@@ -129,7 +129,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_extTextureFilterAnisotropic.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_standard_derivatives&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_standard_derivatives&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_standard_derivatives&quot;)) {
</span><span class="cx">         if (!m_oesStandardDerivatives) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_standard_derivatives&quot;);
</span><span class="lines">@@ -137,7 +137,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesStandardDerivatives.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_texture_float&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_texture_float&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_texture_float&quot;)) {
</span><span class="cx">         if (!m_oesTextureFloat) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_texture_float&quot;);
</span><span class="lines">@@ -145,7 +145,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesTextureFloat.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_texture_float_linear&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_texture_float_linear&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_texture_float_linear&quot;)) {
</span><span class="cx">         if (!m_oesTextureFloatLinear) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_texture_float_linear&quot;);
</span><span class="lines">@@ -153,7 +153,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesTextureFloatLinear.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_texture_half_float&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_texture_half_float&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_texture_half_float&quot;)) {
</span><span class="cx">         if (!m_oesTextureHalfFloat) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_texture_half_float&quot;);
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesTextureHalfFloat.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_texture_half_float_linear&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_texture_half_float_linear&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_texture_half_float_linear&quot;)) {
</span><span class="cx">         if (!m_oesTextureHalfFloatLinear) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_texture_half_float_linear&quot;);
</span><span class="lines">@@ -169,7 +169,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesTextureHalfFloatLinear.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_vertex_array_object&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_vertex_array_object&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_vertex_array_object&quot;)) {
</span><span class="cx">         if (!m_oesVertexArrayObject) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_vertex_array_object&quot;);
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesVertexArrayObject.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;OES_element_index_uint&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;OES_element_index_uint&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_element_index_uint&quot;)) {
</span><span class="cx">         if (!m_oesElementIndexUint) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_element_index_uint&quot;);
</span><span class="lines">@@ -185,30 +185,30 @@
</span><span class="cx">         }
</span><span class="cx">         return m_oesElementIndexUint.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_lose_context&quot;)) {
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_lose_context&quot;)) {
</ins><span class="cx">         if (!m_webglLoseContext)
</span><span class="cx">             m_webglLoseContext = std::make_unique&lt;WebGLLoseContext&gt;(this);
</span><span class="cx">         return m_webglLoseContext.get();
</span><span class="cx">     }
</span><del>-    if ((equalIgnoringCase(name, &quot;WEBKIT_WEBGL_compressed_texture_atc&quot;))
</del><ins>+    if ((equalIgnoringASCIICase(name, &quot;WEBKIT_WEBGL_compressed_texture_atc&quot;))
</ins><span class="cx">         &amp;&amp; WebGLCompressedTextureATC::supported(this)) {
</span><span class="cx">         if (!m_webglCompressedTextureATC)
</span><span class="cx">             m_webglCompressedTextureATC = std::make_unique&lt;WebGLCompressedTextureATC&gt;(this);
</span><span class="cx">         return m_webglCompressedTextureATC.get();
</span><span class="cx">     }
</span><del>-    if ((equalIgnoringCase(name, &quot;WEBKIT_WEBGL_compressed_texture_pvrtc&quot;))
</del><ins>+    if ((equalIgnoringASCIICase(name, &quot;WEBKIT_WEBGL_compressed_texture_pvrtc&quot;))
</ins><span class="cx">         &amp;&amp; WebGLCompressedTexturePVRTC::supported(this)) {
</span><span class="cx">         if (!m_webglCompressedTexturePVRTC)
</span><span class="cx">             m_webglCompressedTexturePVRTC = std::make_unique&lt;WebGLCompressedTexturePVRTC&gt;(this);
</span><span class="cx">         return m_webglCompressedTexturePVRTC.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_compressed_texture_s3tc&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_compressed_texture_s3tc&quot;)
</ins><span class="cx">         &amp;&amp; WebGLCompressedTextureS3TC::supported(this)) {
</span><span class="cx">         if (!m_webglCompressedTextureS3TC)
</span><span class="cx">             m_webglCompressedTextureS3TC = std::make_unique&lt;WebGLCompressedTextureS3TC&gt;(this);
</span><span class="cx">         return m_webglCompressedTextureS3TC.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_depth_texture&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_depth_texture&quot;)
</ins><span class="cx">         &amp;&amp; WebGLDepthTexture::supported(graphicsContext3D())) {
</span><span class="cx">         if (!m_webglDepthTexture) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_CHROMIUM_depth_texture&quot;);
</span><span class="lines">@@ -216,26 +216,26 @@
</span><span class="cx">         }
</span><span class="cx">         return m_webglDepthTexture.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_draw_buffers&quot;) &amp;&amp; supportsDrawBuffers()) {
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_draw_buffers&quot;) &amp;&amp; supportsDrawBuffers()) {
</ins><span class="cx">         if (!m_webglDrawBuffers) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_EXT_draw_buffers&quot;);
</span><span class="cx">             m_webglDrawBuffers = std::make_unique&lt;WebGLDrawBuffers&gt;(this);
</span><span class="cx">         }
</span><span class="cx">         return m_webglDrawBuffers.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;ANGLE_instanced_arrays&quot;) &amp;&amp; ANGLEInstancedArrays::supported(this)) {
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;ANGLE_instanced_arrays&quot;) &amp;&amp; ANGLEInstancedArrays::supported(this)) {
</ins><span class="cx">         if (!m_angleInstancedArrays) {
</span><span class="cx">             m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_ANGLE_instanced_arrays&quot;);
</span><span class="cx">             m_angleInstancedArrays = std::make_unique&lt;ANGLEInstancedArrays&gt;(this);
</span><span class="cx">         }
</span><span class="cx">         return m_angleInstancedArrays.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_debug_renderer_info&quot;)) {
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_debug_renderer_info&quot;)) {
</ins><span class="cx">         if (!m_webglDebugRendererInfo)
</span><span class="cx">             m_webglDebugRendererInfo = std::make_unique&lt;WebGLDebugRendererInfo&gt;(this);
</span><span class="cx">         return m_webglDebugRendererInfo.get();
</span><span class="cx">     }
</span><del>-    if (equalIgnoringCase(name, &quot;WEBGL_debug_shaders&quot;)
</del><ins>+    if (equalIgnoringASCIICase(name, &quot;WEBGL_debug_shaders&quot;)
</ins><span class="cx">         &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_ANGLE_translated_shader_source&quot;)) {
</span><span class="cx">         if (!m_webglDebugShaders)
</span><span class="cx">             m_webglDebugShaders = std::make_unique&lt;WebGLDebugShaders&gt;(this);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlparserCSSPreloadScannercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/parser/CSSPreloadScanner.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/parser/CSSPreloadScanner.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/html/parser/CSSPreloadScanner.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -195,25 +195,18 @@
</span><span class="cx">     return String(characters + offset, reducedLength);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-template&lt;unsigned referenceLength&gt;
-static inline bool ruleEqualIgnoringCase(const Vector&lt;UChar&gt;&amp; rule, const char (&amp;reference)[referenceLength])
-{
-    unsigned referenceCharactersLength = referenceLength - 1;
-    return rule.size() == referenceCharactersLength &amp;&amp; equalIgnoringCase(reference, rule.data(), referenceCharactersLength);
-}
-
</del><span class="cx"> void CSSPreloadScanner::emitRule()
</span><span class="cx"> {
</span><del>-    if (ruleEqualIgnoringCase(m_rule, &quot;import&quot;)) {
</del><ins>+    StringView rule(m_rule.data(), m_rule.size());
+    if (equalLettersIgnoringASCIICase(rule, &quot;import&quot;)) {
</ins><span class="cx">         String url = parseCSSStringOrURL(m_ruleValue.data(), m_ruleValue.size());
</span><span class="cx">         if (!url.isEmpty()) {
</span><del>-            URL baseElementURL; // FIXME: This should be passed in from the HTMLPreloadScaner via scan()!
-
</del><ins>+            URL baseElementURL; // FIXME: This should be passed in from the HTMLPreloadScanner via scan(): without it we will get relative URLs wrong.
</ins><span class="cx">             // FIXME: Should this be including the charset in the preload request?
</span><span class="cx">             m_requests-&gt;append(std::make_unique&lt;PreloadRequest&gt;(&quot;css&quot;, url, baseElementURL, CachedResource::CSSStyleSheet, String()));
</span><span class="cx">         }
</span><span class="cx">         m_state = Initial;
</span><del>-    } else if (ruleEqualIgnoringCase(m_rule, &quot;charset&quot;))
</del><ins>+    } else if (equalLettersIgnoringASCIICase(rule, &quot;charset&quot;))
</ins><span class="cx">         m_state = Initial;
</span><span class="cx">     else
</span><span class="cx">         m_state = DoneParsingImportRules;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorNodeFindercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx"> {
</span><span class="cx">     String nodeName = element.nodeName();
</span><span class="cx">     if ((!m_startTagFound &amp;&amp; !m_endTagFound &amp;&amp; (nodeName.findIgnoringCase(m_tagNameQuery) != notFound))
</span><del>-        || (m_startTagFound &amp;&amp; m_endTagFound &amp;&amp; equalIgnoringCase(nodeName, m_tagNameQuery))
</del><ins>+        || (m_startTagFound &amp;&amp; m_endTagFound &amp;&amp; equalIgnoringASCIICase(nodeName, m_tagNameQuery))
</ins><span class="cx">         || (m_startTagFound &amp;&amp; !m_endTagFound &amp;&amp; nodeName.startsWith(m_tagNameQuery, false))
</span><span class="cx">         || (!m_startTagFound &amp;&amp; m_endTagFound &amp;&amp; nodeName.endsWith(m_tagNameQuery, false)))
</span><span class="cx">         return true;
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderHistoryControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/HistoryController.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/HistoryController.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/loader/HistoryController.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -606,7 +606,7 @@
</span><span class="cx">     //  &quot;If the browsing context's session history contains only one Document,
</span><span class="cx">     //   and that was the about:blank Document created when the browsing context
</span><span class="cx">     //   was created, then the navigation must be done with replacement enabled.&quot;
</span><del>-    return m_currentItem &amp;&amp; !m_previousItem &amp;&amp; equalIgnoringCase(m_currentItem-&gt;urlString(), blankURL());
</del><ins>+    return m_currentItem &amp;&amp; !m_previousItem &amp;&amp; equalIgnoringASCIICase(m_currentItem-&gt;urlString(), blankURL());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HistoryController::clearPreviousItem()
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderSubframeLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/SubframeLoader.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/SubframeLoader.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/loader/SubframeLoader.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -173,7 +173,7 @@
</span><span class="cx">     pluginData.getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
</span><span class="cx">     for (auto&amp; mime : mimes) {
</span><span class="cx">         for (auto&amp; mimeExtension : mime.extensions) {
</span><del>-            if (equalIgnoringCase(extension, mimeExtension))
</del><ins>+            if (equalIgnoringASCIICase(extension, mimeExtension))
</ins><span class="cx">                 return mime.type;
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheApplicationCacheHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -378,7 +378,7 @@
</span><span class="cx"> 
</span><span class="cx">     // If the resource is not to be fetched using the HTTP GET mechanism or equivalent, or if its URL has a different
</span><span class="cx">     // &lt;scheme&gt; component than the application cache's manifest, then fetch the resource normally.
</span><del>-    if (!ApplicationCache::requestIsHTTPOrHTTPSGet(request) || !equalIgnoringCase(request.url().protocol(), cache-&gt;manifestResource()-&gt;url().protocol()))
</del><ins>+    if (!ApplicationCache::requestIsHTTPOrHTTPSGet(request) || !equalIgnoringASCIICase(request.url().protocol(), cache-&gt;manifestResource()-&gt;url().protocol()))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     // If the resource's URL is an master entry, the manifest, an explicit entry, or a fallback entry
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheManifestParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ManifestParser.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ManifestParser.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/loader/appcache/ManifestParser.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -122,7 +122,7 @@
</span><span class="cx">             if (url.hasFragmentIdentifier())
</span><span class="cx">                 url.removeFragmentIdentifier();
</span><span class="cx">             
</span><del>-            if (!equalIgnoringCase(url.protocol(), manifestURL.protocol()))
</del><ins>+            if (!equalIgnoringASCIICase(url.protocol(), manifestURL.protocol()))
</ins><span class="cx">                 continue;
</span><span class="cx">             
</span><span class="cx">             if (mode == Explicit &amp;&amp; manifestURL.protocolIs(&quot;https&quot;) &amp;&amp; !protocolHostAndPortAreEqual(manifestURL, url))
</span></span></pre></div>
<a id="trunkSourceWebCorepageOriginAccessEntryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/OriginAccessEntry.h (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/OriginAccessEntry.h        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/page/OriginAccessEntry.h        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline bool operator==(const OriginAccessEntry&amp; a, const OriginAccessEntry&amp; b)
</span><span class="cx"> {
</span><del>-    return equalIgnoringCase(a.protocol(), b.protocol()) &amp;&amp; equalIgnoringCase(a.host(), b.host()) &amp;&amp; a.subdomainSettings() == b.subdomainSettings();
</del><ins>+    return equalIgnoringASCIICase(a.protocol(), b.protocol()) &amp;&amp; equalIgnoringASCIICase(a.host(), b.host()) &amp;&amp; a.subdomainSettings() == b.subdomainSettings();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline bool operator!=(const OriginAccessEntry&amp; a, const OriginAccessEntry&amp; b)
</span></span></pre></div>
<a id="trunkSourceWebCorepagePerformancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Performance.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Performance.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/page/Performance.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -140,21 +140,22 @@
</span><span class="cx">     RefPtr&lt;PerformanceEntryList&gt; entries = PerformanceEntryList::create();
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(RESOURCE_TIMING)
</span><del>-    if (entryType.isNull() || equalIgnoringCase(entryType, &quot;resource&quot;))
</del><ins>+    if (entryType.isNull() || equalLettersIgnoringASCIICase(entryType, &quot;resource&quot;)) {
</ins><span class="cx">         for (auto&amp; resource : m_resourceTimingBuffer) {
</span><span class="cx">             if (resource-&gt;name() == name)
</span><span class="cx">                 entries-&gt;append(resource);
</span><span class="cx">         }
</span><del>-#endif // ENABLE(RESOURCE_TIMING)
</del><ins>+    }
+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(USER_TIMING)
</span><span class="cx">     if (m_userTiming) {
</span><del>-        if (entryType.isNull() || equalIgnoringCase(entryType, &quot;mark&quot;))
</del><ins>+        if (entryType.isNull() || equalLettersIgnoringASCIICase(entryType, &quot;mark&quot;))
</ins><span class="cx">             entries-&gt;appendAll(m_userTiming-&gt;getMarks(name));
</span><del>-        if (entryType.isNull() || equalIgnoringCase(entryType, &quot;measure&quot;))
</del><ins>+        if (entryType.isNull() || equalLettersIgnoringASCIICase(entryType, &quot;measure&quot;))
</ins><span class="cx">             entries-&gt;appendAll(m_userTiming-&gt;getMeasures(name));
</span><span class="cx">     }
</span><del>-#endif // ENABLE(USER_TIMING)
</del><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     entries-&gt;sort();
</span><span class="cx">     return entries;
</span></span></pre></div>
<a id="trunkSourceWebCorepageUserContentURLPatterncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/UserContentURLPattern.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/UserContentURLPattern.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/page/UserContentURLPattern.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx">     if (m_invalid)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (!equalIgnoringCase(test.protocol(), m_scheme))
</del><ins>+    if (!equalIgnoringASCIICase(test.protocol(), m_scheme))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     if (!equalLettersIgnoringASCIICase(m_scheme, &quot;file&quot;) &amp;&amp; !matchesHost(test))
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx"> bool UserContentURLPattern::matchesHost(const URL&amp; test) const
</span><span class="cx"> {
</span><span class="cx">     const String&amp; host = test.host();
</span><del>-    if (equalIgnoringCase(host, m_host))
</del><ins>+    if (equalIgnoringASCIICase(host, m_host))
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     if (!m_matchSubdomains)
</span></span></pre></div>
<a id="trunkSourceWebCorepagecspContentSecurityPolicycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/csp/ContentSecurityPolicy.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/csp/ContentSecurityPolicy.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/page/csp/ContentSecurityPolicy.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2011 Google, Inc. All rights reserved.
</span><del>- * Copyright (C) 2013 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2013, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -125,26 +125,39 @@
</span><span class="cx"> static const char reflectedXSS[] = &quot;reflected-xss&quot;;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSP_NEXT)
+
+static inline bool isExperimentalDirectiveName(const String&amp; name)
+{
+    return equalLettersIgnoringASCIICase(name, baseURI)
+        || equalLettersIgnoringASCIICase(name, formAction)
+        || equalLettersIgnoringASCIICase(name, pluginTypes)
+        || equalLettersIgnoringASCIICase(name, reflectedXSS);
+}
+
+#else
+
+static inline bool isExperimentalDirectiveName(const String&amp;)
+{
+    return false;
+}
+
+#endif
+
</ins><span class="cx"> bool isDirectiveName(const String&amp; name)
</span><span class="cx"> {
</span><del>-    return (equalIgnoringCase(name, connectSrc)
-        || equalIgnoringCase(name, defaultSrc)
-        || equalIgnoringCase(name, fontSrc)
-        || equalIgnoringCase(name, frameSrc)
-        || equalIgnoringCase(name, imgSrc)
-        || equalIgnoringCase(name, mediaSrc)
-        || equalIgnoringCase(name, objectSrc)
-        || equalIgnoringCase(name, reportURI)
-        || equalIgnoringCase(name, sandbox)
-        || equalIgnoringCase(name, scriptSrc)
-        || equalIgnoringCase(name, styleSrc)
-#if ENABLE(CSP_NEXT)
-        || equalIgnoringCase(name, baseURI)
-        || equalIgnoringCase(name, formAction)
-        || equalIgnoringCase(name, pluginTypes)
-        || equalIgnoringCase(name, reflectedXSS)
-#endif
-    );
</del><ins>+    return equalLettersIgnoringASCIICase(name, connectSrc)
+        || equalLettersIgnoringASCIICase(name, defaultSrc)
+        || equalLettersIgnoringASCIICase(name, fontSrc)
+        || equalLettersIgnoringASCIICase(name, frameSrc)
+        || equalLettersIgnoringASCIICase(name, imgSrc)
+        || equalLettersIgnoringASCIICase(name, mediaSrc)
+        || equalLettersIgnoringASCIICase(name, objectSrc)
+        || equalLettersIgnoringASCIICase(name, reportURI)
+        || equalLettersIgnoringASCIICase(name, sandbox)
+        || equalLettersIgnoringASCIICase(name, scriptSrc)
+        || equalLettersIgnoringASCIICase(name, styleSrc)
+        || isExperimentalDirectiveName(name);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace
</span><span class="lines">@@ -190,7 +203,7 @@
</span><span class="cx"> 
</span><span class="cx">     const UChar* position = begin;
</span><span class="cx">     skipWhile&lt;isSourceCharacter&gt;(position, end);
</span><del>-    if (!equalIgnoringCase(&quot;'none'&quot;, begin, position - begin))
</del><ins>+    if (!equalLettersIgnoringASCIICase(begin, position - begin, &quot;'none'&quot;))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     skipWhile&lt;isASCIISpace&gt;(position, end);
</span><span class="lines">@@ -228,18 +241,18 @@
</span><span class="cx">         if (m_scheme.isEmpty()) {
</span><span class="cx">             String protectedResourceScheme(m_policy-&gt;securityOrigin()-&gt;protocol());
</span><span class="cx"> #if ENABLE(CSP_NEXT)
</span><del>-            if (equalIgnoringCase(&quot;http&quot;, protectedResourceScheme))
</del><ins>+            if (equalLettersIgnoringASCIICase(protectedResourceScheme, &quot;http&quot;))
</ins><span class="cx">                 return url.protocolIsInHTTPFamily();
</span><span class="cx"> #endif
</span><del>-            return equalIgnoringCase(url.protocol(), protectedResourceScheme);
</del><ins>+            return equalIgnoringASCIICase(url.protocol(), protectedResourceScheme);
</ins><span class="cx">         }
</span><del>-        return equalIgnoringCase(url.protocol(), m_scheme);
</del><ins>+        return equalIgnoringASCIICase(url.protocol(), m_scheme);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool hostMatches(const URL&amp; url) const
</span><span class="cx">     {
</span><span class="cx">         const String&amp; host = url.host();
</span><del>-        if (equalIgnoringCase(host, m_host))
</del><ins>+        if (equalIgnoringASCIICase(host, m_host))
</ins><span class="cx">             return true;
</span><span class="cx">         return m_hostHasWildcard &amp;&amp; host.endsWith(&quot;.&quot; + m_host, false);
</span><span class="cx"> 
</span><span class="lines">@@ -393,14 +406,12 @@
</span><span class="cx"> //                   / ( [ scheme &quot;://&quot; ] host [ port ] [ path ] )
</span><span class="cx"> //                   / &quot;'self'&quot;
</span><span class="cx"> //
</span><del>-bool CSPSourceList::parseSource(const UChar* begin, const UChar* end,
-                                String&amp; scheme, String&amp; host, int&amp; port, String&amp; path,
-                                bool&amp; hostHasWildcard, bool&amp; portHasWildcard)
</del><ins>+bool CSPSourceList::parseSource(const UChar* begin, const UChar* end, String&amp; scheme, String&amp; host, int&amp; port, String&amp; path, bool&amp; hostHasWildcard, bool&amp; portHasWildcard)
</ins><span class="cx"> {
</span><span class="cx">     if (begin == end)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (equalIgnoringCase(&quot;'none'&quot;, begin, end - begin))
</del><ins>+    if (equalLettersIgnoringASCIICase(begin, end - begin, &quot;'none'&quot;))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     if (end - begin == 1 &amp;&amp; *begin == '*') {
</span><span class="lines">@@ -408,17 +419,17 @@
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (equalIgnoringCase(&quot;'self'&quot;, begin, end - begin)) {
</del><ins>+    if (equalLettersIgnoringASCIICase(begin, end - begin, &quot;'self'&quot;)) {
</ins><span class="cx">         addSourceSelf();
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (equalIgnoringCase(&quot;'unsafe-inline'&quot;, begin, end - begin)) {
</del><ins>+    if (equalLettersIgnoringASCIICase(begin, end - begin, &quot;'unsafe-inline'&quot;)) {
</ins><span class="cx">         addSourceUnsafeInline();
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (equalIgnoringCase(&quot;'unsafe-eval'&quot;, begin, end - begin)) {
</del><ins>+    if (equalLettersIgnoringASCIICase(begin, end - begin, &quot;'unsafe-eval'&quot;)) {
</ins><span class="cx">         addSourceUnsafeEval();
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -963,7 +974,7 @@
</span><span class="cx">     if (checkSource(directive, url))
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    String prefix;
</del><ins>+    const char* prefix;
</ins><span class="cx">     if (baseURI == effectiveDirective)
</span><span class="cx">         prefix = &quot;Refused to set the document's base URI to '&quot;;
</span><span class="cx">     else if (connectSrc == effectiveDirective)
</span><span class="lines">@@ -984,12 +995,14 @@
</span><span class="cx">         prefix = &quot;Refused to load the script '&quot;;
</span><span class="cx">     else if (styleSrc == effectiveDirective)
</span><span class="cx">         prefix = &quot;Refused to load the stylesheet '&quot;;
</span><ins>+    else
+        prefix = &quot;&quot;;
</ins><span class="cx"> 
</span><del>-    String suffix = String();
</del><ins>+    String suffix;
</ins><span class="cx">     if (directive == m_defaultSrc.get())
</span><span class="cx">         suffix = &quot; Note that '&quot; + effectiveDirective + &quot;' was not explicitly set, so 'default-src' is used as a fallback.&quot;;
</span><span class="cx"> 
</span><del>-    reportViolation(directive-&gt;text(), effectiveDirective, prefix + url.stringCenterEllipsizedToLength() + &quot;' because it violates the following Content Security Policy directive: \&quot;&quot; + directive-&gt;text() + &quot;\&quot;.&quot; + suffix + &quot;\n&quot;, url);
</del><ins>+    reportViolation(directive-&gt;text(), effectiveDirective, makeString(prefix, url.stringCenterEllipsizedToLength(), &quot;' because it violates the following Content Security Policy directive: \&quot;&quot;, directive-&gt;text(), &quot;\&quot;.&quot;, suffix, '\n'), url);
</ins><span class="cx">     return denyIfEnforcingPolicy();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1275,11 +1288,11 @@
</span><span class="cx"> 
</span><span class="cx">     // value1
</span><span class="cx">     //       ^
</span><del>-    if (equalIgnoringCase(&quot;allow&quot;, begin, position - begin))
</del><ins>+    if (equalLettersIgnoringASCIICase(begin, position - begin, &quot;allow&quot;))
</ins><span class="cx">         m_reflectedXSSDisposition = ContentSecurityPolicy::AllowReflectedXSS;
</span><del>-    else if (equalIgnoringCase(&quot;filter&quot;, begin, position - begin))
</del><ins>+    else if (equalLettersIgnoringASCIICase(begin, position - begin, &quot;filter&quot;))
</ins><span class="cx">         m_reflectedXSSDisposition = ContentSecurityPolicy::FilterReflectedXSS;
</span><del>-    else if (equalIgnoringCase(&quot;block&quot;, begin, position - begin))
</del><ins>+    else if (equalLettersIgnoringASCIICase(begin, position - begin, &quot;block&quot;))
</ins><span class="cx">         m_reflectedXSSDisposition = ContentSecurityPolicy::BlockReflectedXSS;
</span><span class="cx">     else {
</span><span class="cx">         m_reflectedXSSDisposition = ContentSecurityPolicy::ReflectedXSSInvalid;
</span><span class="lines">@@ -1301,37 +1314,37 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!name.isEmpty());
</span><span class="cx"> 
</span><del>-    if (equalIgnoringCase(name, defaultSrc))
</del><ins>+    if (equalLettersIgnoringASCIICase(name, defaultSrc))
</ins><span class="cx">         setCSPDirective&lt;SourceListDirective&gt;(name, value, m_defaultSrc);
</span><del>-    else if (equalIgnoringCase(name, scriptSrc))
</del><ins>+    else if (equalLettersIgnoringASCIICase(name, scriptSrc))
</ins><span class="cx">         setCSPDirective&lt;SourceListDirective&gt;(name, value, m_scriptSrc);
</span><del>-    else if (equalIgnoringCase(name, objectSrc))
</del><ins>+    else if (equalLettersIgnoringASCIICase(name, objectSrc))
</ins><span class="cx">         setCSPDirective&lt;SourceListDirective&gt;(name, value, m_objectSrc);
</span><del>-    else if (equalIgnoringCase(name, frameSrc))
</del><ins>+    else if (equalLettersIgnoringASCIICase(name, frameSrc))
</ins><span class="cx">         setCSPDirective&lt;SourceListDirective&gt;(name, value, m_frameSrc);
</span><del>-    else if (equalIgnoringCase(name, imgSrc))
</del><ins>+    else if (equalLettersIgnoringASCIICase(name, imgSrc))
</ins><span class="cx">         setCSPDirective&lt;SourceListDirective&gt;(name, value, m_imgSrc);
</span><del>-    else if (equalIgnoringCase(name, styleSrc))
</del><ins>+    else if (equalLettersIgnoringASCIICase(name, styleSrc))
</ins><span class="cx">         setCSPDirective&lt;SourceListDirective&gt;(name, value, m_styleSrc);
</span><del>-    else if (equalIgnoringCase(name, fontSrc))
</del><ins>+    else if (equalLettersIgnoringASCIICase(name, fontSrc))
</ins><span class="cx">         setCSPDirective&lt;SourceListDirective&gt;(name, value, m_fontSrc);
</span><del>-    else if (equalIgnoringCase(name, mediaSrc))
</del><ins>+    else if (equalLettersIgnoringASCIICase(name, mediaSrc))
</ins><span class="cx">         setCSPDirective&lt;SourceListDirective&gt;(name, value, m_mediaSrc);
</span><del>-    else if (equalIgnoringCase(name, connectSrc))
</del><ins>+    else if (equalLettersIgnoringASCIICase(name, connectSrc))
</ins><span class="cx">         setCSPDirective&lt;SourceListDirective&gt;(name, value, m_connectSrc);
</span><del>-    else if (equalIgnoringCase(name, sandbox))
</del><ins>+    else if (equalLettersIgnoringASCIICase(name, sandbox))
</ins><span class="cx">         applySandboxPolicy(name, value);
</span><del>-    else if (equalIgnoringCase(name, reportURI))
</del><ins>+    else if (equalLettersIgnoringASCIICase(name, reportURI))
</ins><span class="cx">         parseReportURI(name, value);
</span><span class="cx"> #if ENABLE(CSP_NEXT)
</span><span class="cx">     else if (m_policy-&gt;experimentalFeaturesEnabled()) {
</span><del>-        if (equalIgnoringCase(name, baseURI))
</del><ins>+        if (equalLettersIgnoringASCIICase(name, baseURI))
</ins><span class="cx">             setCSPDirective&lt;SourceListDirective&gt;(name, value, m_baseURI);
</span><del>-        else if (equalIgnoringCase(name, formAction))
</del><ins>+        else if (equalLettersIgnoringASCIICase(name, formAction))
</ins><span class="cx">             setCSPDirective&lt;SourceListDirective&gt;(name, value, m_formAction);
</span><del>-        else if (equalIgnoringCase(name, pluginTypes))
</del><ins>+        else if (equalLettersIgnoringASCIICase(name, pluginTypes))
</ins><span class="cx">             setCSPDirective&lt;MediaListDirective&gt;(name, value, m_pluginTypes);
</span><del>-        else if (equalIgnoringCase(name, reflectedXSS))
</del><ins>+        else if (equalLettersIgnoringASCIICase(name, reflectedXSS))
</ins><span class="cx">             parseReflectedXSS(name, value);
</span><span class="cx">         else
</span><span class="cx">             m_policy-&gt;reportUnsupportedDirective(name);
</span><span class="lines">@@ -1677,36 +1690,27 @@
</span><span class="cx"> 
</span><span class="cx"> void ContentSecurityPolicy::reportUnsupportedDirective(const String&amp; name) const
</span><span class="cx"> {
</span><del>-    static NeverDestroyed&lt;String&gt; allow(ASCIILiteral(&quot;allow&quot;));
-    static NeverDestroyed&lt;String&gt; options(ASCIILiteral(&quot;options&quot;));
-    static NeverDestroyed&lt;String&gt; policyURI(ASCIILiteral(&quot;policy-uri&quot;));
-    static NeverDestroyed&lt;String&gt; allowMessage(ASCIILiteral(&quot;The 'allow' directive has been replaced with 'default-src'. Please use that directive instead, as 'allow' has no effect.&quot;));
-    static NeverDestroyed&lt;String&gt; optionsMessage(ASCIILiteral(&quot;The 'options' directive has been replaced with 'unsafe-inline' and 'unsafe-eval' source expressions for the 'script-src' and 'style-src' directives. Please use those directives instead, as 'options' has no effect.&quot;));
-    static NeverDestroyed&lt;String&gt; policyURIMessage(ASCIILiteral(&quot;The 'policy-uri' directive has been removed from the specification. Please specify a complete policy via the Content-Security-Policy header.&quot;));
-
</del><span class="cx">     String message;
</span><del>-    if (equalIgnoringCase(name, allow))
-        message = allowMessage;
-    else if (equalIgnoringCase(name, options))
-        message = optionsMessage;
-    else if (equalIgnoringCase(name, policyURI))
-        message = policyURIMessage;
</del><ins>+    if (equalLettersIgnoringASCIICase(name, &quot;allow&quot;))
+        message = ASCIILiteral(&quot;The 'allow' directive has been replaced with 'default-src'. Please use that directive instead, as 'allow' has no effect.&quot;);
+    else if (equalLettersIgnoringASCIICase(name, &quot;options&quot;))
+        message = ASCIILiteral(&quot;The 'options' directive has been replaced with 'unsafe-inline' and 'unsafe-eval' source expressions for the 'script-src' and 'style-src' directives. Please use those directives instead, as 'options' has no effect.&quot;);
+    else if (equalLettersIgnoringASCIICase(name, &quot;policy-uri&quot;))
+        message = ASCIILiteral(&quot;The 'policy-uri' directive has been removed from the specification. Please specify a complete policy via the Content-Security-Policy header.&quot;);
</ins><span class="cx">     else
</span><del>-        message = makeString(&quot;Unrecognized Content-Security-Policy directive '&quot;, name, &quot;'.\n&quot;);
</del><ins>+        message = makeString(&quot;Unrecognized Content-Security-Policy directive '&quot;, name, &quot;'.\n&quot;); // FIXME: Why does this include a newline?
</ins><span class="cx"> 
</span><span class="cx">     logToConsole(message);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ContentSecurityPolicy::reportDirectiveAsSourceExpression(const String&amp; directiveName, const String&amp; sourceExpression) const
</span><span class="cx"> {
</span><del>-    String message = &quot;The Content Security Policy directive '&quot; + directiveName + &quot;' contains '&quot; + sourceExpression + &quot;' as a source expression. Did you mean '&quot; + directiveName + &quot; ...; &quot; + sourceExpression + &quot;...' (note the semicolon)?&quot;;
-    logToConsole(message);
</del><ins>+    logToConsole(&quot;The Content Security Policy directive '&quot; + directiveName + &quot;' contains '&quot; + sourceExpression + &quot;' as a source expression. Did you mean '&quot; + directiveName + &quot; ...; &quot; + sourceExpression + &quot;...' (note the semicolon)?&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ContentSecurityPolicy::reportDuplicateDirective(const String&amp; name) const
</span><span class="cx"> {
</span><del>-    String message = makeString(&quot;Ignoring duplicate Content-Security-Policy directive '&quot;, name, &quot;'.\n&quot;);
-    logToConsole(message);
</del><ins>+    logToConsole(makeString(&quot;Ignoring duplicate Content-Security-Policy directive '&quot;, name, &quot;'.\n&quot;));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ContentSecurityPolicy::reportInvalidPluginTypes(const String&amp; pluginType) const
</span><span class="lines">@@ -1752,7 +1756,7 @@
</span><span class="cx"> void ContentSecurityPolicy::reportInvalidSourceExpression(const String&amp; directiveName, const String&amp; source) const
</span><span class="cx"> {
</span><span class="cx">     String message = makeString(&quot;The source list for Content Security Policy directive '&quot;, directiveName, &quot;' contains an invalid source: '&quot;, source, &quot;'. It will be ignored.&quot;);
</span><del>-    if (equalIgnoringCase(source, &quot;'none'&quot;))
</del><ins>+    if (equalLettersIgnoringASCIICase(source, &quot;'none'&quot;))
</ins><span class="cx">         message = makeString(message, &quot; Note that 'none' has no effect unless it is the only expression in the source list.&quot;);
</span><span class="cx">     logToConsole(message);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformURLcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/URL.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/URL.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/URL.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -518,7 +518,7 @@
</span><span class="cx">             ++p;
</span><span class="cx">         }
</span><span class="cx">         if (*p == ':') {
</span><del>-            if (p[1] != '/' &amp;&amp; equalIgnoringCase(base.protocol(), String(str, p - str)) &amp;&amp; base.isHierarchical())
</del><ins>+            if (p[1] != '/' &amp;&amp; equalIgnoringASCIICase(base.protocol(), StringView(reinterpret_cast&lt;LChar*&gt;(str), p - str)) &amp;&amp; base.isHierarchical())
</ins><span class="cx">                 str = p + 1;
</span><span class="cx">             else
</span><span class="cx">                 absolute = true;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformcocoaContentFilterUnblockHandlerCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx"> #endif
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool isUnblockRequest = request.url().protocolIs(ContentFilter::urlScheme()) &amp;&amp; equalIgnoringCase(request.url().host(), m_unblockURLHost);
</del><ins>+    bool isUnblockRequest = request.url().protocolIs(ContentFilter::urlScheme()) &amp;&amp; equalIgnoringASCIICase(request.url().host(), m_unblockURLHost);
</ins><span class="cx"> #if !LOG_DISABLED
</span><span class="cx">     if (isUnblockRequest)
</span><span class="cx">         LOG(ContentFiltering, &quot;ContentFilterUnblockHandler will handle &lt;%s&gt; as an unblock request.\n&quot;, request.url().string().ascii().data());
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformeflPlatformSpeechSynthesisProviderEflcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/efl/PlatformSpeechSynthesisProviderEfl.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/efl/PlatformSpeechSynthesisProviderEfl.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/efl/PlatformSpeechSynthesisProviderEfl.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -74,9 +74,7 @@
</span><span class="cx">         const Vector&lt;RefPtr&lt;PlatformSpeechSynthesisVoice&gt;&gt;&amp; voiceList = m_platformSpeechSynthesizer-&gt;voiceList();
</span><span class="cx">         for (const auto&amp; voice : voiceList) {
</span><span class="cx">             // Espeak adds an empty character at the beginning of the language
</span><del>-            unsigned length = voice-&gt;lang().length();
-            String lang = voice-&gt;lang().substring(1, length);
-            if (equalIgnoringCase(language, lang))
</del><ins>+            if (equalIgnoringASCIICase(StringView(voice-&gt;lang()).substring(1), language))
</ins><span class="cx">                 return voice-&gt;name();
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FontCache.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FontCache.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/graphics/FontCache.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -113,7 +113,13 @@
</span><span class="cx"> 
</span><span class="cx">     bool operator==(const FontPlatformDataCacheKey&amp; other) const
</span><span class="cx">     {
</span><del>-        return equalIgnoringCase(m_family, other.m_family) &amp;&amp; m_fontDescriptionKey == other.m_fontDescriptionKey;
</del><ins>+        if (m_fontDescriptionKey != other.m_fontDescriptionKey)
+            return false;
+        if (m_family.impl() == other.m_family.impl())
+            return true;
+        if (m_family.isNull() || other.m_family.isNull())
+            return false;
+        return CaseFoldingHash::equal(m_family, other.m_family);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     FontDescriptionKey m_fontDescriptionKey;
</span><span class="lines">@@ -142,72 +148,60 @@
</span><span class="cx">     return cache;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool familyNameEqualIgnoringCase(const AtomicString&amp; familyName, const char* reference, unsigned length)
</del><ins>+static AtomicString alternateFamilyName(const AtomicString&amp; familyName)
</ins><span class="cx"> {
</span><del>-    ASSERT(length &gt; 0);
-    ASSERT(familyName.length() == length);
-    ASSERT(strlen(reference) == length);
-    const AtomicStringImpl* familyNameImpl = familyName.impl();
-    if (familyNameImpl-&gt;is8Bit())
-        return equalIgnoringCase(familyNameImpl-&gt;characters8(), reinterpret_cast&lt;const LChar*&gt;(reference), length);
-    return equalIgnoringCase(familyNameImpl-&gt;characters16(), reinterpret_cast&lt;const LChar*&gt;(reference), length);
-}
-
-template&lt;size_t length&gt;
-static inline bool familyNameEqualIgnoringCase(const AtomicString&amp; familyName, const char (&amp;reference)[length])
-{
-    return familyNameEqualIgnoringCase(familyName, reference, length - 1);
-}
-
-static const AtomicString alternateFamilyName(const AtomicString&amp; familyName)
-{
-    // Alias Courier and Courier New.
-    // Alias Times and Times New Roman.
-    // Alias Arial and Helvetica.
</del><span class="cx">     switch (familyName.length()) {
</span><span class="cx">     case 5:
</span><del>-        if (familyNameEqualIgnoringCase(familyName, &quot;Arial&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(familyName, &quot;arial&quot;))
</ins><span class="cx">             return AtomicString(&quot;Helvetica&quot;, AtomicString::ConstructFromLiteral);
</span><del>-        if (familyNameEqualIgnoringCase(familyName, &quot;Times&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(familyName, &quot;times&quot;))
</ins><span class="cx">             return AtomicString(&quot;Times New Roman&quot;, AtomicString::ConstructFromLiteral);
</span><span class="cx">         break;
</span><span class="cx">     case 7:
</span><del>-        if (familyNameEqualIgnoringCase(familyName, &quot;Courier&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(familyName, &quot;courier&quot;))
</ins><span class="cx">             return AtomicString(&quot;Courier New&quot;, AtomicString::ConstructFromLiteral);
</span><span class="cx">         break;
</span><ins>+#if OS(WINDOWS)
+    // On Windows, we don't support bitmap fonts, but legacy content expects support.
+    // Thus we allow Times New Roman as an alternative for the bitmap font MS Serif,
+    // even if the webpage does not specify fallback.
+    // FIXME: Seems unlikely this is still needed. If it was really needed, I think we
+    // would need it on other platforms too.
+    case 8:
+        if (equalLettersIgnoringASCIICase(familyName, &quot;ms serif&quot;))
+            return AtomicString(&quot;Times New Roman&quot;, AtomicString::ConstructFromLiteral);
+        break;
+#endif
</ins><span class="cx">     case 9:
</span><del>-        if (familyNameEqualIgnoringCase(familyName, &quot;Helvetica&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(familyName, &quot;helvetica&quot;))
</ins><span class="cx">             return AtomicString(&quot;Arial&quot;, AtomicString::ConstructFromLiteral);
</span><span class="cx">         break;
</span><span class="cx"> #if !OS(WINDOWS)
</span><del>-    // On Windows, Courier New (truetype font) is always present and
-    // Courier is a bitmap font. So, we don't want to map Courier New to
-    // Courier.
</del><ins>+    // On Windows, Courier New is a TrueType font that is always present and
+    // Courier is a bitmap font that we do not support. So, we don't want to map
+    // Courier New to Courier.
+    // FIXME: Not sure why this is harmful on Windows, since the alternative will
+    // only be tried if Courier New is not found.
</ins><span class="cx">     case 11:
</span><del>-        if (familyNameEqualIgnoringCase(familyName, &quot;Courier New&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(familyName, &quot;courier new&quot;))
</ins><span class="cx">             return AtomicString(&quot;Courier&quot;, AtomicString::ConstructFromLiteral);
</span><span class="cx">         break;
</span><del>-#endif // !OS(WINDOWS)
-    case 15:
-        if (familyNameEqualIgnoringCase(familyName, &quot;Times New Roman&quot;))
-            return AtomicString(&quot;Times&quot;, AtomicString::ConstructFromLiteral);
-        break;
</del><ins>+#endif
</ins><span class="cx"> #if OS(WINDOWS)
</span><del>-    // On Windows, bitmap fonts are blocked altogether so that we have to 
-    // alias MS Sans Serif (bitmap font) -&gt; Microsoft Sans Serif (truetype font)
</del><ins>+    // On Windows, we don't support bitmap fonts, but legacy content expects support.
+    // Thus we allow Microsoft Sans Serif as an alternative for the bitmap font MS Sans Serif,
+    // even if the webpage does not specify fallback.
+    // FIXME: Seems unlikely this is still needed. If it was really needed, I think we
+    // would need it on other platforms too.
</ins><span class="cx">     case 13:
</span><del>-        if (familyNameEqualIgnoringCase(familyName, &quot;MS Sans Serif&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(familyName, &quot;ms sans serif&quot;))
</ins><span class="cx">             return AtomicString(&quot;Microsoft Sans Serif&quot;, AtomicString::ConstructFromLiteral);
</span><span class="cx">         break;
</span><del>-
-    // Alias MS Serif (bitmap) -&gt; Times New Roman (truetype font). There's no 
-    // 'Microsoft Sans Serif-equivalent' for Serif.
-    case 8:
-        if (familyNameEqualIgnoringCase(familyName, &quot;MS Serif&quot;))
-            return AtomicString(&quot;Times New Roman&quot;, AtomicString::ConstructFromLiteral);
</del><ins>+#endif
+    case 15:
+        if (equalLettersIgnoringASCIICase(familyName, &quot;times new roman&quot;))
+            return AtomicString(&quot;Times&quot;, AtomicString::ConstructFromLiteral);
</ins><span class="cx">         break;
</span><del>-#endif // OS(WINDOWS)
-
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return nullAtom;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontCascadecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FontCascade.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FontCascade.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/graphics/FontCascade.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -201,7 +201,11 @@
</span><span class="cx">     if (a.families.size() != b.families.size())
</span><span class="cx">         return false;
</span><span class="cx">     for (unsigned i = 0; i &lt; a.families.size(); ++i) {
</span><del>-        if (!equalIgnoringCase(a.families[i].impl(), b.families[i].impl()))
</del><ins>+        auto* aImpl = a.families[i].impl();
+        auto* bImpl = b.families[i].impl();
+        if (aImpl == bImpl)
+            continue;
+        if (!aImpl || !bImpl || !CaseFoldingHash::equal(aImpl, bImpl))
</ins><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontDescriptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FontDescription.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FontDescription.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/graphics/FontDescription.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -142,6 +142,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(IOS_TEXT_AUTOSIZING)
</span><ins>+
</ins><span class="cx"> bool FontCascadeDescription::familiesEqualForTextAutoSizing(const FontCascadeDescription&amp; other) const
</span><span class="cx"> {
</span><span class="cx">     unsigned thisFamilyCount = familyCount();
</span><span class="lines">@@ -151,12 +152,13 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; thisFamilyCount; ++i) {
</span><del>-        if (!equalIgnoringCase(familyAt(i), other.familyAt(i)))
</del><ins>+        if (!equalIgnoringASCIICase(familyAt(i), other.familyAt(i)))
</ins><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif // ENABLE(IOS_TEXT_AUTOSIZING)
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -854,7 +854,7 @@
</span><span class="cx">     // slow connections. &lt;https://bugs.webkit.org/show_bug.cgi?id=86409&gt;
</span><span class="cx">     if (client &amp;&amp; client-&gt;mediaPlayerNeedsSiteSpecificHacks()) {
</span><span class="cx">         String host = client-&gt;mediaPlayerDocumentHost();
</span><del>-        if ((host.endsWith(&quot;.youtube.com&quot;, false) || equalIgnoringCase(&quot;youtube.com&quot;, host))
</del><ins>+        if ((host.endsWith(&quot;.youtube.com&quot;, false) || equalLettersIgnoringASCIICase(host, &quot;youtube.com&quot;))
</ins><span class="cx">             &amp;&amp; (parameters.type.startsWith(&quot;video/webm&quot;, false) || parameters.type.startsWith(&quot;video/x-flv&quot;, false)))
</span><span class="cx">             return IsNotSupported;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -873,12 +873,13 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_LOADER_DELEGATE) &amp;&amp; ENABLE(ENCRYPTED_MEDIA_V2)
</span><ins>+
</ins><span class="cx"> static bool keySystemIsSupported(const String&amp; keySystem)
</span><span class="cx"> {
</span><del>-    if (equalIgnoringCase(keySystem, &quot;com.apple.fps&quot;) || equalIgnoringCase(keySystem, &quot;com.apple.fps.1_0&quot;))
-        return true;
-    return false;
</del><ins>+    return equalLettersIgnoringASCIICase(keySystem, &quot;com.apple.fps&quot;)
+        || equalLettersIgnoringASCIICase(keySystem, &quot;com.apple.fps.1_0&quot;);
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> static const HashSet&lt;String&gt;&amp; avfMIMETypes()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfreetypeFontCacheFreeTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -316,6 +316,16 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline bool isCommonlyUsedGenericFamily(const String&amp; familyNameString)
+{
+    return equalLettersIgnoringASCIICase(familyNameString, &quot;sans&quot;)
+        || equalLettersIgnoringASCIICase(familyNameString, &quot;sans-serif&quot;)
+        || equalLettersIgnoringASCIICase(familyNameString, &quot;serif&quot;)
+        || equalLettersIgnoringASCIICase(familyNameString, &quot;monospace&quot;)
+        || equalLettersIgnoringASCIICase(familyNameString, &quot;fantasy&quot;)
+        || equalLettersIgnoringASCIICase(familyNameString, &quot;cursive&quot;);
+}
+
</ins><span class="cx"> std::unique_ptr&lt;FontPlatformData&gt; FontCache::createFontPlatformData(const FontDescription&amp; fontDescription, const AtomicString&amp; family)
</span><span class="cx"> {
</span><span class="cx">     // The CSS font matching algorithm (http://www.w3.org/TR/css3-fonts/#font-matching-algorithm)
</span><span class="lines">@@ -368,11 +378,7 @@
</span><span class="cx">     // and allow WebCore to give us the next font on the CSS fallback list. The exceptions are if
</span><span class="cx">     // this family name is a commonly-used generic family, or if the families are strongly-aliased.
</span><span class="cx">     // Checking for a strong alias comes last, since it is slow.
</span><del>-    if (!equalIgnoringCase(familyNameAfterConfiguration, familyNameAfterMatching)
-        &amp;&amp; !(equalIgnoringCase(familyNameString, &quot;sans&quot;) || equalIgnoringCase(familyNameString, &quot;sans-serif&quot;)
-          || equalIgnoringCase(familyNameString, &quot;serif&quot;) || equalIgnoringCase(familyNameString, &quot;monospace&quot;)
-          || equalIgnoringCase(familyNameString, &quot;fantasy&quot;) || equalIgnoringCase(familyNameString, &quot;cursive&quot;))
-        &amp;&amp; !areStronglyAliased(familyNameAfterConfiguration, familyNameAfterMatching))
</del><ins>+    if (!equalIgnoringASCIICase(familyNameAfterConfiguration, familyNameAfterMatching) &amp;&amp; !isCommonlyUsedGenericFamily(familyNameString) &amp;&amp; !areStronglyAliased(familyNameAfterConfiguration, familyNameAfterMatching))
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     // Verify that this font has an encoding compatible with Fontconfig. Fontconfig currently
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfreetypeFontCustomPlatformDataFreeTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -89,7 +89,9 @@
</span><span class="cx"> 
</span><span class="cx"> bool FontCustomPlatformData::supportsFormat(const String&amp; format)
</span><span class="cx"> {
</span><del>-    return equalIgnoringCase(format, &quot;truetype&quot;) || equalIgnoringCase(format, &quot;opentype&quot;) || equalIgnoringCase(format, &quot;woff&quot;);
</del><ins>+    return equalLettersIgnoringASCIICase(format, &quot;truetype&quot;)
+        || equalLettersIgnoringASCIICase(format, &quot;opentype&quot;)
+        || equalLettersIgnoringASCIICase(format, &quot;woff&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicswinFontCacheWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/win/FontCacheWin.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/win/FontCacheWin.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/graphics/win/FontCacheWin.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -403,8 +403,7 @@
</span><span class="cx"> 
</span><span class="cx"> static LONG adjustedGDIFontWeight(LONG gdiFontWeight, const String&amp; family)
</span><span class="cx"> {
</span><del>-    static AtomicString lucidaStr(&quot;Lucida Grande&quot;);
-    if (equalIgnoringCase(family, lucidaStr)) {
</del><ins>+    if (equalLettersIgnoringASCIICase(family, &quot;lucida grande&quot;)) {
</ins><span class="cx">         if (gdiFontWeight == FW_NORMAL)
</span><span class="cx">             return FW_MEDIUM;
</span><span class="cx">         if (gdiFontWeight == FW_BOLD)
</span><span class="lines">@@ -563,10 +562,7 @@
</span><span class="cx"> 
</span><span class="cx"> std::unique_ptr&lt;FontPlatformData&gt; FontCache::createFontPlatformData(const FontDescription&amp; fontDescription, const AtomicString&amp; family)
</span><span class="cx"> {
</span><del>-    bool isLucidaGrande = false;
-    static AtomicString lucidaStr(&quot;Lucida Grande&quot;);
-    if (equalIgnoringCase(family, lucidaStr))
-        isLucidaGrande = true;
</del><ins>+    bool isLucidaGrande = equalLettersIgnoringASCIICase(family, &quot;lucida grande&quot;);
</ins><span class="cx"> 
</span><span class="cx">     bool useGDI = fontDescription.renderingMode() == FontRenderingMode::Alternate &amp;&amp; !isLucidaGrande;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicswinFontCustomPlatformDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/win/FontCustomPlatformData.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/win/FontCustomPlatformData.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/graphics/win/FontCustomPlatformData.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -96,7 +96,9 @@
</span><span class="cx"> 
</span><span class="cx"> bool FontCustomPlatformData::supportsFormat(const String&amp; format)
</span><span class="cx"> {
</span><del>-    return equalIgnoringCase(format, &quot;truetype&quot;) || equalIgnoringCase(format, &quot;opentype&quot;) || equalIgnoringCase(format, &quot;woff&quot;);
</del><ins>+    return equalLettersIgnoringASCIICase(format, &quot;truetype&quot;)
+        || equalLettersIgnoringASCIICase(format, &quot;opentype&quot;)
+        || equalLettersIgnoringASCIICase(format, &quot;woff&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicswinFontCustomPlatformDataCairocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/win/FontCustomPlatformDataCairo.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/win/FontCustomPlatformDataCairo.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/graphics/win/FontCustomPlatformDataCairo.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -97,7 +97,9 @@
</span><span class="cx"> 
</span><span class="cx"> bool FontCustomPlatformData::supportsFormat(const String&amp; format)
</span><span class="cx"> {
</span><del>-    return equalIgnoringCase(format, &quot;truetype&quot;) || equalIgnoringCase(format, &quot;opentype&quot;) || equalIgnoringCase(format, &quot;woff&quot;);
</del><ins>+    return equalLettersIgnoringASCIICase(format, &quot;truetype&quot;)
+        || equalLettersIgnoringASCIICase(format, &quot;opentype&quot;)
+        || equalLettersIgnoringASCIICase(format, &quot;woff&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacPlatformSpeechSynthesizerMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/PlatformSpeechSynthesizerMac.mm (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/PlatformSpeechSynthesizerMac.mm        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/mac/PlatformSpeechSynthesizerMac.mm        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -97,16 +97,14 @@
</span><span class="cx">     // Find if we should use a specific voice based on the voiceURI in utterance.
</span><span class="cx">     // Otherwise, find the voice that matches the language. The Mac doesn't have a default voice per language, so the first
</span><span class="cx">     // one will have to do.
</span><del>-    Vector&lt;RefPtr&lt;WebCore::PlatformSpeechSynthesisVoice&gt;&gt; voiceList = m_synthesizerObject-&gt;voiceList();
-    size_t voiceListSize = voiceList.size();
</del><span class="cx">     
</span><span class="cx">     WebCore::PlatformSpeechSynthesisVoice* utteranceVoice = utterance-&gt;voice();
</span><span class="cx">     // If no voice was specified, try to match by language.
</span><span class="cx">     if (!utteranceVoice &amp;&amp; !utterance-&gt;lang().isEmpty()) {
</span><del>-        for (size_t k = 0; k &lt; voiceListSize; k++) {
-            if (equalIgnoringCase(utterance-&gt;lang(), voiceList[k]-&gt;lang())) {
-                utteranceVoice = voiceList[k].get();
-                if (voiceList[k]-&gt;isDefault())
</del><ins>+        for (auto&amp; voice : m_synthesizerObject-&gt;voiceList()) {
+            if (equalIgnoringASCIICase(utterance-&gt;lang(), voice-&gt;lang())) {
+                utteranceVoice = voice.get();
+                if (voice-&gt;isDefault())
</ins><span class="cx">                     break;
</span><span class="cx">             }
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkCacheValidationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/CacheValidation.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/CacheValidation.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/network/CacheValidation.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -62,8 +62,8 @@
</span><span class="cx"> 
</span><span class="cx"> static inline bool shouldUpdateHeaderAfterRevalidation(const String&amp; header)
</span><span class="cx"> {
</span><del>-    for (size_t i = 0; i &lt; WTF_ARRAY_LENGTH(headersToIgnoreAfterRevalidation); i++) {
-        if (equalIgnoringCase(header, headersToIgnoreAfterRevalidation[i]))
</del><ins>+    for (auto&amp; headerToIgnore : headersToIgnoreAfterRevalidation) {
+        if (equalIgnoringASCIICase(header, headerToIgnore))
</ins><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx">     for (size_t i = 0; i &lt; WTF_ARRAY_LENGTH(headerPrefixesToIgnoreAfterRevalidation); i++) {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkcurlResourceHandleManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/curl/ResourceHandleManager.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/curl/ResourceHandleManager.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/network/curl/ResourceHandleManager.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -368,17 +368,17 @@
</span><span class="cx">         &quot;vary&quot;,
</span><span class="cx">         &quot;via&quot;,
</span><span class="cx">         &quot;warning&quot;,
</span><del>-        &quot;www-authenticate&quot;,
-        0
</del><ins>+        &quot;www-authenticate&quot;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     // Custom headers start with 'X-', and need no further checking.
</span><span class="cx">     if (key.startsWith(&quot;x-&quot;, /* caseSensitive */ false))
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    for (unsigned i = 0; appendableHeaders[i]; ++i)
-        if (equalIgnoringCase(key, appendableHeaders[i]))
</del><ins>+    for (auto&amp; header : appendableHeaders) {
+        if (equalIgnoringASCIICase(key, header))
</ins><span class="cx">             return true;
</span><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     return false;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkmacResourceHandleMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -436,7 +436,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (redirectResponse.httpStatusCode() == 307) {
</span><span class="cx">         String lastHTTPMethod = d-&gt;m_lastHTTPMethod;
</span><del>-        if (!equalIgnoringCase(lastHTTPMethod, request.httpMethod())) {
</del><ins>+        if (!equalIgnoringASCIICase(lastHTTPMethod, request.httpMethod())) {
</ins><span class="cx">             request.setHTTPMethod(lastHTTPMethod);
</span><span class="cx">     
</span><span class="cx">             FormData* body = d-&gt;m_firstRequest.httpBody();
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextmacLocaleMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/mac/LocaleMac.mm (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/mac/LocaleMac.mm        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/text/mac/LocaleMac.mm        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">     RetainPtr&lt;NSLocale&gt; currentLocale = [NSLocale currentLocale];
</span><span class="cx">     String currentLocaleLanguage = languageFromLocale(String([currentLocale.get() localeIdentifier]));
</span><span class="cx">     String localeLanguage = languageFromLocale(locale);
</span><del>-    if (equalIgnoringCase(currentLocaleLanguage, localeLanguage))
</del><ins>+    if (equalIgnoringASCIICase(currentLocaleLanguage, localeLanguage))
</ins><span class="cx">         return currentLocale;
</span><span class="cx">     // It seems initWithLocaleIdentifier accepts dash-separated locale identifier.
</span><span class="cx">      return adoptNS([[NSLocale alloc] initWithLocaleIdentifier:locale]);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextwinLocaleWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/win/LocaleWin.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/win/LocaleWin.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/platform/text/win/LocaleWin.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -119,8 +119,7 @@
</span><span class="cx"> 
</span><span class="cx"> static LCID LCIDFromLocaleInternal(LCID userDefaultLCID, const String&amp; userDefaultLanguageCode, LocaleNameToLCIDPtr localeNameToLCID, String&amp; locale)
</span><span class="cx"> {
</span><del>-    String localeLanguageCode = extractLanguageCode(locale);
-    if (equalIgnoringCase(localeLanguageCode, userDefaultLanguageCode))
</del><ins>+    if (equalLettersIgnoringASCIICase(extractLanguageCode(locale), userDefaultLanguageCode))
</ins><span class="cx">         return userDefaultLCID;
</span><span class="cx">     return localeNameToLCID(locale.charactersWithNullTermination().data(), 0);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGToOTFFontConversioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGToOTFFontConversion.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGToOTFFontConversion.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/svg/SVGToOTFFontConversion.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -818,7 +818,7 @@
</span><span class="cx">     for (auto&amp; pair : m_codepointsToIndicesMap) {
</span><span class="cx">         for (auto glyphIndex : pair.value) {
</span><span class="cx">             auto&amp; glyph = m_glyphs[glyphIndex];
</span><del>-            if (glyph.glyphElement &amp;&amp; equalIgnoringCase(glyph.glyphElement-&gt;fastGetAttribute(SVGNames::arabic_formAttr), arabicForm))
</del><ins>+            if (glyph.glyphElement &amp;&amp; equalIgnoringASCIICase(glyph.glyphElement-&gt;fastGetAttribute(SVGNames::arabic_formAttr), arabicForm))
</ins><span class="cx">                 arabicFinalReplacements.append(std::make_pair(pair.value[0], glyphIndex));
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLHttpRequestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLHttpRequest.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLHttpRequest.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -405,7 +405,7 @@
</span><span class="cx"> {
</span><span class="cx">     const char* const methods[] = { &quot;DELETE&quot;, &quot;GET&quot;, &quot;HEAD&quot;, &quot;OPTIONS&quot;, &quot;POST&quot;, &quot;PUT&quot; };
</span><span class="cx">     for (auto* value : methods) {
</span><del>-        if (equalIgnoringCase(method, value)) {
</del><ins>+        if (equalIgnoringASCIICase(method, value)) {
</ins><span class="cx">             // Don't bother allocating a new string if it's already all uppercase.
</span><span class="cx">             if (method == value)
</span><span class="cx">                 break;
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathFunctionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathFunctions.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathFunctions.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/xml/XPathFunctions.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -596,7 +596,7 @@
</span><span class="cx"> 
</span><span class="cx">     String langValue = languageAttribute-&gt;value();
</span><span class="cx">     while (true) {
</span><del>-        if (equalIgnoringCase(langValue, lang))
</del><ins>+        if (equalIgnoringASCIICase(langValue, lang))
</ins><span class="cx">             return true;
</span><span class="cx"> 
</span><span class="cx">         // Remove suffixes one by one.
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathStepcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathStep.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathStep.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebCore/xml/XPathStep.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -204,7 +204,7 @@
</span><span class="cx">             if (is&lt;HTMLDocument&gt;(node.document())) {
</span><span class="cx">                 if (is&lt;HTMLElement&gt;(node)) {
</span><span class="cx">                     // Paths without namespaces should match HTML elements in HTML documents despite those having an XHTML namespace. Names are compared case-insensitively.
</span><del>-                    return equalIgnoringCase(downcast&lt;HTMLElement&gt;(node).localName(), name) &amp;&amp; (namespaceURI.isNull() || namespaceURI == node.namespaceURI());
</del><ins>+                    return equalIgnoringASCIICase(downcast&lt;HTMLElement&gt;(node).localName(), name) &amp;&amp; (namespaceURI.isNull() || namespaceURI == node.namespaceURI());
</ins><span class="cx">                 }
</span><span class="cx">                 // An expression without any prefix shouldn't match no-namespace nodes (because HTML5 says so).
</span><span class="cx">                 return downcast&lt;Element&gt;(node).hasLocalName(name) &amp;&amp; namespaceURI == node.namespaceURI() &amp;&amp; !namespaceURI.isNull();
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2016-01-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
+        https://bugs.webkit.org/show_bug.cgi?id=153411
+
+        Reviewed by Ryosuke Niwa.
+
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        (parameterValue): Use equalIgnoringASCIICase. No behavior change because the
+        only name we ever search for with this is &quot;pluginspage&quot;.
+
</ins><span class="cx"> 2016-01-27  Enrica Casucci  &lt;enrica@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Cache results of data detection in the UI process when load completes.
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebFrameLoaderClientmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1726,12 +1726,12 @@
</span><span class="cx">     return array;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static String parameterValue(const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, const String&amp; name)
</del><ins>+static String parameterValue(const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, const char* name)
</ins><span class="cx"> {
</span><span class="cx">     size_t size = paramNames.size();
</span><span class="cx">     ASSERT(size == paramValues.size());
</span><span class="cx">     for (size_t i = 0; i &lt; size; ++i) {
</span><del>-        if (equalIgnoringCase(paramNames[i], name))
</del><ins>+        if (equalIgnoringASCIICase(paramNames[i], name))
</ins><span class="cx">             return paramValues[i];
</span><span class="cx">     }
</span><span class="cx">     return String();
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit/win/ChangeLog        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2016-01-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
+        https://bugs.webkit.org/show_bug.cgi?id=153411
+
+        Reviewed by Ryosuke Niwa.
+
+        * Plugins/PluginDatabase.cpp:
+        (WebCore::PluginDatabase::MIMETypeForExtension): Use equalIgnoringASCIICase to compare
+        file extensions.
+        * Plugins/PluginDatabaseWin.cpp:
+        (WebCore::PluginDatabase::getPluginPathsInDirectories): Use equalLettersIgnoringASCIICase
+        to compare filenames.
+        * Plugins/PluginPackageWin.cpp:
+        (WebCore::PluginPackage::isPluginBlacklisted): Use equalLettersIgnoringASCIICase to
+        compare DLL filenames.
+        * Plugins/PluginStream.cpp:
+        (WebCore::PluginStream::destroyStream): Use equalLettersIgnoringASCIICase to check HTTP method.
+        * Plugins/PluginView.cpp:
+        (WebCore::PluginView::setParameters): Use equalLettersIgnoringASCIICase to check
+        plug-in parameter name.
+        * WebView.cpp:
+        (WebView::canHandleRequest): Use URL::protocolIs instead of equalIgnoringCase.
+
</ins><span class="cx"> 2016-01-22  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         document.createElement should be able to create a custom element
</span></span></pre></div>
<a id="trunkSourceWebKitwinPluginsPluginDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/Plugins/PluginDatabase.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/Plugins/PluginDatabase.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit/win/Plugins/PluginDatabase.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -248,7 +248,7 @@
</span><span class="cx">             const Vector&lt;String&gt;&amp; extensions = mime_it-&gt;value;
</span><span class="cx">             bool foundMapping = false;
</span><span class="cx">             for (unsigned i = 0; i &lt; extensions.size(); i++) {
</span><del>-                if (equalIgnoringCase(extensions[i], extension)) {
</del><ins>+                if (equalIgnoringASCIICase(extensions[i], extension)) {
</ins><span class="cx">                     PluginPackage* plugin = (*it).get();
</span><span class="cx"> 
</span><span class="cx">                     if (preferredPlugin &amp;&amp; PluginPackage::equal(*plugin, *preferredPlugin))
</span></span></pre></div>
<a id="trunkSourceWebKitwinPluginsPluginDatabaseWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/Plugins/PluginDatabaseWin.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/Plugins/PluginDatabaseWin.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit/win/Plugins/PluginDatabaseWin.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx"> 
</span><span class="cx">             String filename = String(findFileData.cFileName, wcslen(findFileData.cFileName));
</span><span class="cx">             if ((!filename.startsWith(&quot;np&quot;, false) || !filename.endsWith(&quot;dll&quot;, false)) &amp;&amp;
</span><del>-                (!equalIgnoringCase(filename, &quot;Plugin.dll&quot;) || !it-&gt;endsWith(&quot;Shockwave 10&quot;, false)))
</del><ins>+                (!equalLettersIgnoringASCIICase(filename, &quot;plugin.dll&quot;) || !it-&gt;endsWith(&quot;Shockwave 10&quot;, false)))
</ins><span class="cx">                 continue;
</span><span class="cx"> 
</span><span class="cx">             String fullPath = *it + &quot;\\&quot; + filename;
</span><span class="lines">@@ -103,9 +103,9 @@
</span><span class="cx"> 
</span><span class="cx">             paths.add(fullPath);
</span><span class="cx"> 
</span><del>-            if (equalIgnoringCase(filename, &quot;npdsplay.dll&quot;))
</del><ins>+            if (equalLettersIgnoringASCIICase(filename, &quot;npdsplay.dll&quot;))
</ins><span class="cx">                 oldWMPPluginPath = fullPath;
</span><del>-            else if (equalIgnoringCase(filename, &quot;np-mswmp.dll&quot;))
</del><ins>+            else if (equalLettersIgnoringASCIICase(filename, &quot;np-mswmp.dll&quot;))
</ins><span class="cx">                 newWMPPluginPath = fullPath;
</span><span class="cx"> 
</span><span class="cx">         } while (FindNextFileW(hFind, &amp;findFileData) != 0);
</span></span></pre></div>
<a id="trunkSourceWebKitwinPluginsPluginPackageWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/Plugins/PluginPackageWin.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/Plugins/PluginPackageWin.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit/win/Plugins/PluginPackageWin.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -71,10 +71,10 @@
</span><span class="cx"> 
</span><span class="cx">         if (compareFileVersion(slPluginMinRequired) &lt; 0)
</span><span class="cx">             return true;
</span><del>-    } else if (equalIgnoringCase(fileName(), &quot;npmozax.dll&quot;)) {
</del><ins>+    } else if (equalLettersIgnoringASCIICase(fileName(), &quot;npmozax.dll&quot;)) {
</ins><span class="cx">         // Bug 15217: Mozilla ActiveX control complains about missing xpcom_core.dll
</span><span class="cx">         return true;
</span><del>-    } else if (equalIgnoringCase(fileName(), &quot;npwpf.dll&quot;)) {
</del><ins>+    } else if (equalLettersIgnoringASCIICase(fileName(), &quot;npwpf.dll&quot;)) {
</ins><span class="cx">         // Bug 57119: Microsoft Windows Presentation Foundation (WPF) plug-in complains about missing xpcom.dll
</span><span class="cx">         return true;
</span><span class="cx">     } else if (name() == &quot;Yahoo Application State Plugin&quot;) {
</span></span></pre></div>
<a id="trunkSourceWebKitwinPluginsPluginStreamcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/Plugins/PluginStream.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/Plugins/PluginStream.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit/win/Plugins/PluginStream.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -294,7 +294,7 @@
</span><span class="cx">         if (m_loader)
</span><span class="cx">             m_loader-&gt;setDefersLoading(true);
</span><span class="cx">         if (!newStreamCalled &amp;&amp; m_quirks.contains(PluginQuirkFlashURLNotifyBug) &amp;&amp;
</span><del>-            equalIgnoringCase(m_resourceRequest.httpMethod(), &quot;POST&quot;)) {
</del><ins>+            equalLettersIgnoringASCIICase(m_resourceRequest.httpMethod(), &quot;post&quot;)) {
</ins><span class="cx">             m_transferMode = NP_NORMAL;
</span><span class="cx">             m_stream.url = &quot;&quot;;
</span><span class="cx">             m_stream.notifyData = m_notifyData;
</span></span></pre></div>
<a id="trunkSourceWebKitwinPluginsPluginViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/Plugins/PluginView.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/Plugins/PluginView.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit/win/Plugins/PluginView.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -715,7 +715,7 @@
</span><span class="cx">     m_paramValues = reinterpret_cast&lt;char**&gt;(fastMalloc(sizeof(char*) * size));
</span><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; size; i++) {
</span><del>-        if (m_plugin-&gt;quirks().contains(PluginQuirkRemoveWindowlessVideoParam) &amp;&amp; equalIgnoringCase(paramNames[i], &quot;windowlessvideo&quot;))
</del><ins>+        if (m_plugin-&gt;quirks().contains(PluginQuirkRemoveWindowlessVideoParam) &amp;&amp; equalLettersIgnoringASCIICase(paramNames[i], &quot;windowlessvideo&quot;))
</ins><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="cx">         if (paramNames[i] == &quot;pluginspage&quot;)
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebView.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebView.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit/win/WebView.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1365,16 +1365,12 @@
</span><span class="cx"> 
</span><span class="cx"> bool WebView::canHandleRequest(const WebCore::ResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    // On the mac there's an about url protocol implementation but CFNetwork doesn't have that.
-    if (equalIgnoringCase(String(request.url().protocol()), &quot;about&quot;))
-        return true;
-
</del><span class="cx"> #if USE(CFNETWORK)
</span><del>-    if (CFURLProtocolCanHandleRequest(request.cfURLRequest(UpdateHTTPBody)))
</del><ins>+    // On the Mac there's an about URL protocol implementation but Windows CFNetwork doesn't have that.
+    if (request.url().protocolIs(&quot;about&quot;))
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    // FIXME: Mac WebKit calls _representationExistsForURLScheme here
-    return false;
</del><ins>+    return CFURLProtocolCanHandleRequest(request.cfURLRequest(UpdateHTTPBody));
</ins><span class="cx"> #else
</span><span class="cx">     return true;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit2/ChangeLog        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2016-01-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
+        https://bugs.webkit.org/show_bug.cgi?id=153411
+
+        Reviewed by Ryosuke Niwa.
+
+        * Shared/API/c/WKString.cpp:
+        (WKStringIsEqualToUTF8CStringIgnoringCase): Use equalIgnoringASCIICase.
+        This is a change in behavior for callers who passed non-ASCII letters to
+        this function and expected case insensitive comparison.
+
+        * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:
+        (WebKit::PDFPlugin::streamDidReceiveResponse): Use equalIgnoringASCIICase.
+        No change in behavior because this is just checking a fixed ASCII MIME type.
+        (WebKit::PDFPlugin::manualStreamDidReceiveResponse): Ditto.
+        * WebProcess/Plugins/PDF/PDFPlugin.mm:
+        (WebKit::PDFPlugin::streamDidReceiveResponse): Ditto.
+        (WebKit::PDFPlugin::manualStreamDidReceiveResponse): Ditto.
+
</ins><span class="cx"> 2016-01-27  Alex Christensen  &lt;achristensen@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix CMake build after r195722.
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedAPIcWKStringcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/API/c/WKString.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/API/c/WKString.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit2/Shared/API/c/WKString.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -102,13 +102,16 @@
</span><span class="cx"> 
</span><span class="cx"> bool WKStringIsEqualToUTF8CString(WKStringRef aRef, const char* b)
</span><span class="cx"> {
</span><ins>+    // FIXME: Should we add a fast path that avoids memory allocation when the string is all ASCII?
+    // FIXME: We can do even the general case more efficiently if we write a function in StringView that understands UTF-8 C strings.
</ins><span class="cx">     return toImpl(aRef)-&gt;stringView() == WTF::String::fromUTF8(b);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WKStringIsEqualToUTF8CStringIgnoringCase(WKStringRef aRef, const char* b)
</span><span class="cx"> {
</span><del>-    // FIXME: Instead of copying the string here, we should add a version of equalIgnoringCase that takes StringViews.
-    return equalIgnoringCase(toImpl(aRef)-&gt;string(), WTF::String::fromUTF8(b));
</del><ins>+    // FIXME: Should we add a fast path that avoids memory allocation when the string is all ASCII?
+    // FIXME: We can do even the general case more efficiently if we write a function in StringView that understands UTF-8 C strings.
+    return equalIgnoringASCIICase(toImpl(aRef)-&gt;stringView(), WTF::String::fromUTF8(b));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WKStringRef WKStringCreateWithJSString(JSStringRef jsStringRef)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFDeprecatedPDFPluginmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -944,7 +944,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_suggestedFilename = suggestedFilename;
</span><span class="cx"> 
</span><del>-    if (equalIgnoringCase(mimeType, postScriptMIMEType))
</del><ins>+    if (equalIgnoringASCIICase(mimeType, postScriptMIMEType))
</ins><span class="cx">         m_isPostScript = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -977,7 +977,7 @@
</span><span class="cx"> {
</span><span class="cx">     m_suggestedFilename = suggestedFilename;
</span><span class="cx"> 
</span><del>-    if (equalIgnoringCase(mimeType, postScriptMIMEType))
</del><ins>+    if (equalIgnoringASCIICase(mimeType, postScriptMIMEType))
</ins><span class="cx">         m_isPostScript = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFPDFPluginmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -695,7 +695,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_suggestedFilename = suggestedFilename;
</span><span class="cx"> 
</span><del>-    if (equalIgnoringCase(mimeType, postScriptMIMEType))
</del><ins>+    if (equalIgnoringASCIICase(mimeType, postScriptMIMEType))
</ins><span class="cx">         m_isPostScript = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -728,7 +728,7 @@
</span><span class="cx"> {
</span><span class="cx">     m_suggestedFilename = suggestedFilename;
</span><span class="cx"> 
</span><del>-    if (equalIgnoringCase(mimeType, postScriptMIMEType))
</del><ins>+    if (equalIgnoringASCIICase(mimeType, postScriptMIMEType))
</ins><span class="cx">         m_isPostScript = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Tools/ChangeLog        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2016-01-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
+        https://bugs.webkit.org/show_bug.cgi?id=153411
+
+        Reviewed by Ryosuke Niwa.
+
+        * Scripts/do-webcore-rename: Removed rename of equalIgnoringCase since we
+        have removed the function instead.
+
+        * TestWebKitAPI/Tests/WTF/StringImpl.cpp:
+        (TestWebKitAPI::TEST): Updated test since nullptr is now ambiguous since we
+        added overloads for const char*.
+
+        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
+        (WTR::AccessibilityUIElement::isPressActionSupported): Use equalLettersIgnoringASCIICase.
+        (WTR::AccessibilityUIElement::hasPopup): Ditto.
+        * WebKitTestRunner/cocoa/CrashReporterInfo.mm:
+        (WTR::testPathFromURL): Ditto.
+
</ins><span class="cx"> 2016-01-28  Konstantin Tokarev  &lt;annulen@yandex.ru&gt;
</span><span class="cx"> 
</span><span class="cx">         [webkitdirs] Clarify logic behind is{PortName} functions.
</span></span></pre></div>
<a id="trunkToolsScriptsdowebcorerename"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/do-webcore-rename (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/do-webcore-rename        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Tools/Scripts/do-webcore-rename        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -128,8 +128,6 @@
</span><span class="cx">     &quot;runtime_object&quot; =&gt; &quot;BridgedObject&quot;,
</span><span class="cx">     &quot;objc_runtime&quot; =&gt; &quot;ObjCBridge&quot;,
</span><span class="cx"> 
</span><del>-    &quot;equalIgnoringCase&quot; =&gt; &quot;equalFoldingCase&quot;,
-
</del><span class="cx">     &quot;WTF_UNICODE_H&quot; =&gt; &quot;Unicode_h&quot;,
</span><span class="cx">     &quot;WTF_UNICODE_ICU_H&quot; =&gt; &quot;UnicodeICU_h&quot;,
</span><span class="cx">     &quot;UnicodeIcu&quot; =&gt; &quot;UnicodeICU&quot;,
</span></span></pre></div>
<a id="trunkToolsTestWebKitAPITestsWTFStringImplcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -140,9 +140,10 @@
</span><span class="cx"> TEST(WTF, StringImplEqualIgnoringASCIICaseWithNull)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;StringImpl&gt; reference = StringImpl::createFromLiteral(&quot;aBcDeFG&quot;);
</span><del>-    ASSERT_FALSE(equalIgnoringASCIICase(nullptr, reference.get()));
-    ASSERT_FALSE(equalIgnoringASCIICase(reference.get(), nullptr));
-    ASSERT_TRUE(equalIgnoringASCIICase(nullptr, nullptr));
</del><ins>+    StringImpl* nullStringImpl = nullptr;
+    ASSERT_FALSE(equalIgnoringASCIICase(nullStringImpl, reference.get()));
+    ASSERT_FALSE(equalIgnoringASCIICase(reference.get(), nullStringImpl));
+    ASSERT_TRUE(equalIgnoringASCIICase(nullStringImpl, nullStringImpl));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> TEST(WTF, StringImplEqualIgnoringASCIICaseWithEmpty)
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleatkAccessibilityUIElementAtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -317,17 +317,17 @@
</span><span class="cx"> #if ATK_CHECK_VERSION(2, 11, 3)
</span><span class="cx">     if (role == ATK_ROLE_LANDMARK) {
</span><span class="cx">         String xmlRolesValue = getAttributeSetValueForId(object, ObjectAttributeType, &quot;xml-roles&quot;);
</span><del>-        if (equalIgnoringCase(xmlRolesValue, &quot;banner&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(xmlRolesValue, &quot;banner&quot;))
</ins><span class="cx">             return landmarkStringBanner;
</span><del>-        if (equalIgnoringCase(xmlRolesValue, &quot;complementary&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(xmlRolesValue, &quot;complementary&quot;))
</ins><span class="cx">             return landmarkStringComplementary;
</span><del>-        if (equalIgnoringCase(xmlRolesValue, &quot;contentinfo&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(xmlRolesValue, &quot;contentinfo&quot;))
</ins><span class="cx">             return landmarkStringContentinfo;
</span><del>-        if (equalIgnoringCase(xmlRolesValue, &quot;main&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(xmlRolesValue, &quot;main&quot;))
</ins><span class="cx">             return landmarkStringMain;
</span><del>-        if (equalIgnoringCase(xmlRolesValue, &quot;navigation&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(xmlRolesValue, &quot;navigation&quot;))
</ins><span class="cx">             return landmarkStringNavigation;
</span><del>-        if (equalIgnoringCase(xmlRolesValue, &quot;search&quot;))
</del><ins>+        if (equalLettersIgnoringASCIICase(xmlRolesValue, &quot;search&quot;))
</ins><span class="cx">             return landmarkStringSearch;
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="lines">@@ -1350,7 +1350,7 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     const gchar* actionName = atk_action_get_name(ATK_ACTION(m_element.get()), 0);
</span><del>-    return equalIgnoringCase(actionName, String(&quot;press&quot;)) || equalIgnoringCase(actionName, String(&quot;jump&quot;));
</del><ins>+    return equalLettersIgnoringASCIICase(actionName, &quot;press&quot;) || equalLettersIgnoringASCIICase(actionName, &quot;jump&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool AccessibilityUIElement::isIncrementActionSupported()
</span><span class="lines">@@ -1788,7 +1788,7 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     String hasPopupValue = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, &quot;haspopup&quot;);
</span><del>-    return equalIgnoringCase(hasPopupValue, &quot;true&quot;);
</del><ins>+    return equalLettersIgnoringASCIICase(hasPopupValue, &quot;true&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void AccessibilityUIElement::takeFocus()
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnercocoaCrashReporterInfomm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/cocoa/CrashReporterInfo.mm (195742 => 195743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/cocoa/CrashReporterInfo.mm        2016-01-28 17:18:38 UTC (rev 195742)
+++ trunk/Tools/WebKitTestRunner/cocoa/CrashReporterInfo.mm        2016-01-28 17:26:41 UTC (rev 195743)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx">     String schemeString(schemeCFString.get());
</span><span class="cx">     String pathString(pathCFString.get());
</span><span class="cx">     
</span><del>-    if (equalIgnoringCase(schemeString, &quot;file&quot;)) {
</del><ins>+    if (equalLettersIgnoringASCIICase(schemeString, &quot;file&quot;)) {
</ins><span class="cx">         String layoutTests(&quot;/LayoutTests/&quot;);
</span><span class="cx">         size_t layoutTestsOffset = pathString.find(layoutTests);
</span><span class="cx">         if (layoutTestsOffset == notFound)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">         return pathString.substring(layoutTestsOffset + layoutTests.length());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!equalIgnoringCase(schemeString, &quot;http&quot;) &amp;&amp; !equalIgnoringCase(schemeString, &quot;https&quot;))
</del><ins>+    if (!equalLettersIgnoringASCIICase(schemeString, &quot;http&quot;) &amp;&amp; !equalLettersIgnoringASCIICase(schemeString, &quot;https&quot;))
</ins><span class="cx">         return String();
</span><span class="cx"> 
</span><span class="cx">     RetainPtr&lt;CFStringRef&gt; hostCFString = adoptCF(CFURLCopyHostName(cfURL.get()));
</span></span></pre>
</div>
</div>

</body>
</html>