Fix #3102 HtmlChart is uncolored
Closes #3697.
PiperOrigin-RevId: 168353082
diff --git a/src/main/java/com/google/devtools/build/lib/profiler/chart/HtmlChartVisitor.java b/src/main/java/com/google/devtools/build/lib/profiler/chart/HtmlChartVisitor.java
index 4649326..b64341a 100644
--- a/src/main/java/com/google/devtools/build/lib/profiler/chart/HtmlChartVisitor.java
+++ b/src/main/java/com/google/devtools/build/lib/profiler/chart/HtmlChartVisitor.java
@@ -16,6 +16,7 @@
import java.io.PrintStream;
import java.util.List;
+import java.util.Locale;
/**
* {@link ChartVisitor} that builds HTML from the visited chart and prints it
@@ -310,16 +311,15 @@
out.println("<a name='" + name + "'/>");
}
- /**
- * Formats the given {@link Color} to a css style color string.
- */
- private String formatColor(Color color) {
+ /** Formats the given {@link Color} to a css style color string. */
+ public static String formatColor(Color color) {
int r = color.getRed();
int g = color.getGreen();
int b = color.getBlue();
int a = color.getAlpha();
- return String.format("rgba(%d,%d,%d,%f)", r, g, b, (a / 255.0));
+ // US Locale is used to ensure a dot as decimal separator
+ return String.format(Locale.US, "rgba(%d,%d,%d,%f)", r, g, b, (a / 255.0));
}
/**
diff --git a/src/test/java/com/google/devtools/build/lib/profiler/ProfilerChartTest.java b/src/test/java/com/google/devtools/build/lib/profiler/ProfilerChartTest.java
index 0551881..e27ae16 100644
--- a/src/test/java/com/google/devtools/build/lib/profiler/ProfilerChartTest.java
+++ b/src/test/java/com/google/devtools/build/lib/profiler/ProfilerChartTest.java
@@ -29,12 +29,14 @@
import com.google.devtools.build.lib.profiler.chart.ChartVisitor;
import com.google.devtools.build.lib.profiler.chart.Color;
import com.google.devtools.build.lib.profiler.chart.DetailedChartCreator;
+import com.google.devtools.build.lib.profiler.chart.HtmlChartVisitor;
import com.google.devtools.build.lib.testutil.FoundationTestCase;
import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.testutil.Suite;
import com.google.devtools.build.lib.testutil.TestSpec;
import com.google.devtools.build.lib.vfs.Path;
import java.util.List;
+import java.util.Locale;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -230,6 +232,18 @@
assertThat(visitor.lineCount).isEqualTo(0);
}
+ @Test
+ public void testHtmlChartVisitorFormatColor() {
+ Locale defaultLocale = Locale.getDefault();
+
+ Locale.setDefault(Locale.GERMANY);
+ String black = HtmlChartVisitor.formatColor(Color.GRAY);
+ String[] grayComponents = black.split(",");
+ assertThat(grayComponents.length).isEqualTo(4);
+
+ Locale.setDefault(defaultLocale);
+ }
+
private ProfileInfo createProfileInfo(Runnable runnable, int noOfRows) throws Exception {
Scratch scratch = new Scratch();
Path cacheDir = scratch.dir("/tmp");