Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(794)

Unified Diff: third_party/WebKit/Source/modules/canvas2d/CanvasStyle.cpp

Issue 1863793003: Make CSSValuePool thread local to ensure correct parsing in colors on workers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase with master Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/canvas2d/CanvasStyle.cpp
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasStyle.cpp b/third_party/WebKit/Source/modules/canvas2d/CanvasStyle.cpp
index d7f716a57c61e533a4dc748e27aba1a225947de6..6118e179ed6483edab7b2e6351ed4685997d02f9 100644
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasStyle.cpp
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasStyle.cpp
@@ -40,36 +40,36 @@ namespace blink {
enum ColorParseResult { ParsedRGBA, ParsedCurrentColor, ParsedSystemColor, ParseFailed };
-static ColorParseResult parseColor(Color& parsedColor, const String& colorString)
+static ColorParseResult parseColor(Color& parsedColor, const String& colorString, CSSValuePool* localCssValuePool)
{
if (equalIgnoringCase(colorString, "currentcolor"))
return ParsedCurrentColor;
const bool useStrictParsing = true;
- if (CSSParser::parseColor(parsedColor, colorString, useStrictParsing))
+ if (CSSParser::parseColor(parsedColor, colorString, localCssValuePool, useStrictParsing))
return ParsedRGBA;
if (CSSParser::parseSystemColor(parsedColor, colorString))
return ParsedSystemColor;
return ParseFailed;
}
-static Color currentColor(HTMLCanvasElement* canvas)
+static Color currentColor(HTMLCanvasElement* canvas, CSSValuePool* localCssValuePool)
{
- if (!canvas || !canvas->inDocument() || !canvas->inlineStyle())
+ if (!localCssValuePool && (!canvas || !canvas->inDocument() || !canvas->inlineStyle()))
return Color::black;
Color color = Color::black;
- CSSParser::parseColor(color, canvas->inlineStyle()->getPropertyValue(CSSPropertyColor));
+ CSSParser::parseColor(color, canvas->inlineStyle()->getPropertyValue(CSSPropertyColor), localCssValuePool);
return color;
}
-bool parseColorOrCurrentColor(Color& parsedColor, const String& colorString, HTMLCanvasElement* canvas)
+bool parseColorOrCurrentColor(Color& parsedColor, const String& colorString, HTMLCanvasElement* canvas, CSSValuePool* localCssValuePool)
{
- ColorParseResult parseResult = parseColor(parsedColor, colorString);
+ ColorParseResult parseResult = parseColor(parsedColor, colorString, localCssValuePool);
switch (parseResult) {
case ParsedRGBA:
case ParsedSystemColor:
return true;
case ParsedCurrentColor:
- parsedColor = canvas ? currentColor(canvas) : Color::black;
+ parsedColor = currentColor(canvas, localCssValuePool);
return true;
case ParseFailed:
return false;

Powered by Google App Engine
This is Rietveld 408576698