Part 1. Duplicate IsLocalRefURL to nsContentUtils to reuse this function.

`IsLocalRefURL` is originally designed to be used by URLValue only.
Since we need this function in SVGUseElement::LookupHref too, duplicate it to nsContentUtils as a util function.
This is a duplication because CSSValue uses stringbuffers and not nsStrings.
While Bug 1356060 - "Just use nsString in URLValueData" converts this use from stringbuffer to nsString, it builds on a bunch of vartype refactoring (nsString vs. nsAString, etc.) which is too much of a headache to deal with just to deduplicate this simple function.
This commit is contained in:
wolfbeast 2018-09-04 19:36:08 +02:00 committed by Roy Tam
commit b51651f769
2 changed files with 23 additions and 0 deletions

View file

@ -9787,3 +9787,19 @@ nsContentUtils::AttemptLargeAllocationLoad(nsIHttpChannel* aChannel)
return reloadSucceeded;
}
/* static */ bool
nsContentUtils::IsLocalRefURL(const nsString& aString)
{
// Find the first non-"C0 controls + space" character.
const char16_t* current = aString.get();
for (; *current != '\0'; current++) {
if (*current > 0x20) {
// if the first non-"C0 controls + space" character is '#', this is a
// local-ref URL.
return *current == '#';
}
}
return false;
}

View file

@ -2730,6 +2730,13 @@ public:
static bool AttemptLargeAllocationLoad(nsIHttpChannel* aChannel);
/**
* Detect whether a string is a (CSS) local-url.
* https://drafts.csswg.org/css-values/#local-urls
*/
static bool
IsLocalRefURL(const nsString& aString);
private:
static bool InitializeEventTable();