diff --git a/src/tests/perf_tests/DawnPerfTest.cpp b/src/tests/perf_tests/DawnPerfTest.cpp
index 8fd3ab8..3bd641b 100644
--- a/src/tests/perf_tests/DawnPerfTest.cpp
+++ b/src/tests/perf_tests/DawnPerfTest.cpp
@@ -381,30 +381,30 @@
                                    double value,
                                    const std::string& units,
                                    bool important) const {
-    const ::testing::TestInfo* const testInfo =
-        ::testing::UnitTest::GetInstance()->current_test_info();
-
-    const char* testName = testInfo->name();
-    const char* testSuite = testInfo->test_suite_name();
-
-    // The results are printed according to the format specified at
-    // [chromium]//build/scripts/slave/performance_log_processor.py
-    dawn::InfoLog() << (important ? "*" : "") << "RESULT " << testSuite << testName << ": " << trace
-                    << "= " << value << " " << units;
+    PrintResultImpl(trace, std::to_string(value), units, important);
 }
 
 void DawnPerfTestBase::PrintResult(const std::string& trace,
                                    unsigned int value,
                                    const std::string& units,
                                    bool important) const {
+    PrintResultImpl(trace, std::to_string(value), units, important);
+}
+
+void DawnPerfTestBase::PrintResultImpl(const std::string& trace,
+                                       const std::string& value,
+                                       const std::string& units,
+                                       bool important) const {
     const ::testing::TestInfo* const testInfo =
         ::testing::UnitTest::GetInstance()->current_test_info();
 
-    const char* testName = testInfo->name();
-    const char* testSuite = testInfo->test_suite_name();
+    std::string metric = std::string(testInfo->test_suite_name()) + "." + trace;
+
+    std::string story = testInfo->name();
+    std::replace(story.begin(), story.end(), '/', '_');
 
     // The results are printed according to the format specified at
-    // [chromium]//build/scripts/slave/performance_log_processor.py
-    dawn::InfoLog() << (important ? "*" : "") << "RESULT " << testSuite << testName << ": " << trace
-                    << "= " << value << " " << units;
+    // [chromium]//src/tools/perf/generate_legacy_perf_dashboard_json.py
+    dawn::InfoLog() << (important ? "*" : "") << "RESULT " << metric << ": " << story << "= "
+                    << value << " " << units;
 }
diff --git a/src/tests/perf_tests/DawnPerfTest.h b/src/tests/perf_tests/DawnPerfTest.h
index b514b1c..64ef6dc 100644
--- a/src/tests/perf_tests/DawnPerfTest.h
+++ b/src/tests/perf_tests/DawnPerfTest.h
@@ -91,6 +91,11 @@
     void DoRunLoop(double maxRunTime);
     void OutputResults();
 
+    void PrintResultImpl(const std::string& trace,
+                         const std::string& value,
+                         const std::string& units,
+                         bool important) const;
+
     virtual void Step() = 0;
 
     DawnTestBase* mTest;
