| Index: trace_event/trace_config_unittest.cc
 | 
| diff --git a/trace_event/trace_config_unittest.cc b/trace_event/trace_config_unittest.cc
 | 
| index a2a3703ea3aaa05a1f525a5f04d0c0560331498b..7d8881da3e1338c4a9d438df4edc4b4da2df9b23 100644
 | 
| --- a/trace_event/trace_config_unittest.cc
 | 
| +++ b/trace_event/trace_config_unittest.cc
 | 
| @@ -2,6 +2,7 @@
 | 
|  // Use of this source code is governed by a BSD-style license that can be
 | 
|  // found in the LICENSE file.
 | 
|  
 | 
| +#include "base/trace_event/memory_dump_manager.h"
 | 
|  #include "base/trace_event/trace_config.h"
 | 
|  #include "testing/gtest/include/gtest/gtest.h"
 | 
|  
 | 
| @@ -19,6 +20,44 @@ const char kDefaultTraceConfigString[] =
 | 
|      "\"record_mode\":\"record-until-full\""
 | 
|    "}";
 | 
|  
 | 
| +const char kMemoryDumpTraceConfigString[] =
 | 
| +    "{"
 | 
| +    "\"enable_argument_filter\":false,"
 | 
| +    "\"enable_sampling\":false,"
 | 
| +    "\"enable_systrace\":false,"
 | 
| +    "\"included_categories\":["
 | 
| +    "\"disabled-by-default-memory-infra\""
 | 
| +    "],"
 | 
| +    "\"memory_dump_config\":{"
 | 
| +    "\"triggers\":["
 | 
| +    "{"
 | 
| +    "\"mode\":\"light\","
 | 
| +    "\"periodic_interval_ms\":200"
 | 
| +    "},"
 | 
| +    "{"
 | 
| +    "\"mode\":\"detailed\","
 | 
| +    "\"periodic_interval_ms\":2000"
 | 
| +    "}"
 | 
| +    "]"
 | 
| +    "},"
 | 
| +    "\"record_mode\":\"record-until-full\""
 | 
| +    "}";
 | 
| +
 | 
| +const char kTraceConfigStringWithEmptyTriggers[] =
 | 
| +    "{"
 | 
| +    "\"enable_argument_filter\":false,"
 | 
| +    "\"enable_sampling\":false,"
 | 
| +    "\"enable_systrace\":false,"
 | 
| +    "\"included_categories\":["
 | 
| +    "\"disabled-by-default-memory-infra\""
 | 
| +    "],"
 | 
| +    "\"memory_dump_config\":{"
 | 
| +    "\"triggers\":["
 | 
| +    "]"
 | 
| +    "},"
 | 
| +    "\"record_mode\":\"record-until-full\""
 | 
| +    "}";
 | 
| +
 | 
|  }  // namespace
 | 
|  
 | 
|  TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) {
 | 
| @@ -488,5 +527,34 @@ TEST(TraceConfigTest, SetTraceOptionValues) {
 | 
|    EXPECT_TRUE(tc.IsSystraceEnabled());
 | 
|  }
 | 
|  
 | 
| +TEST(TraceConfigTest, TraceConfigFromMemoryConfigString) {
 | 
| +  TraceConfig tc(kMemoryDumpTraceConfigString);
 | 
| +  EXPECT_STREQ(kMemoryDumpTraceConfigString, tc.ToString().c_str());
 | 
| +  EXPECT_TRUE(tc.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory));
 | 
| +  EXPECT_EQ(2u, tc.memory_dump_config_.size());
 | 
| +
 | 
| +  EXPECT_EQ(200u, tc.memory_dump_config_[0].periodic_interval_ms);
 | 
| +  EXPECT_EQ(MemoryDumpArgs::LevelOfDetail::LOW,
 | 
| +            tc.memory_dump_config_[0].level_of_detail);
 | 
| +
 | 
| +  EXPECT_EQ(2000u, tc.memory_dump_config_[1].periodic_interval_ms);
 | 
| +  EXPECT_EQ(MemoryDumpArgs::LevelOfDetail::HIGH,
 | 
| +            tc.memory_dump_config_[1].level_of_detail);
 | 
| +}
 | 
| +
 | 
| +TEST(TraceConfigTest, EmptyMemoryDumpConfigTest) {
 | 
| +  // Empty trigger list should also be specified when converting back to string.
 | 
| +  TraceConfig tc(kTraceConfigStringWithEmptyTriggers);
 | 
| +  EXPECT_STREQ(kTraceConfigStringWithEmptyTriggers, tc.ToString().c_str());
 | 
| +  EXPECT_EQ(0u, tc.memory_dump_config_.size());
 | 
| +}
 | 
| +
 | 
| +TEST(TraceConfigTest, LegacyStringToMemoryDumpConfig) {
 | 
| +  TraceConfig tc(MemoryDumpManager::kTraceCategory, "");
 | 
| +  EXPECT_TRUE(tc.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory));
 | 
| +  EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config"));
 | 
| +  EXPECT_EQ(2u, tc.memory_dump_config_.size());
 | 
| +}
 | 
| +
 | 
|  }  // namespace trace_event
 | 
|  }  // namespace base
 | 
| 
 |