| Index: components/tracing/common/process_metrics_memory_dump_provider_unittest.cc
|
| diff --git a/components/tracing/common/process_metrics_memory_dump_provider_unittest.cc b/components/tracing/common/process_metrics_memory_dump_provider_unittest.cc
|
| index 4c9ba7c9ac0fa86c5d2fb6d206d5f03f8f736530..d05c3a736217d93e93bf179b66b25db8389f6261 100644
|
| --- a/components/tracing/common/process_metrics_memory_dump_provider_unittest.cc
|
| +++ b/components/tracing/common/process_metrics_memory_dump_provider_unittest.cc
|
| @@ -313,6 +313,30 @@ TEST(ProcessMetricsMemoryDumpProviderTest, TestMachOReading) {
|
| EXPECT_GT(components_unittests_resident_pages, 0u);
|
| EXPECT_TRUE(found_appkit);
|
| }
|
| +
|
| +TEST(ProcessMetricsMemoryDumpProviderTest, NoDuplicateRegions) {
|
| + using VMRegion = base::trace_event::ProcessMemoryMaps::VMRegion;
|
| + ProcessMetricsMemoryDumpProvider mdp(base::kNullProcessId);
|
| + base::trace_event::MemoryDumpArgs args;
|
| + base::trace_event::ProcessMemoryDump dump(nullptr, args);
|
| + ASSERT_TRUE(mdp.DumpProcessMemoryMaps(args, &dump));
|
| + ASSERT_TRUE(dump.has_process_mmaps());
|
| +
|
| + std::vector<VMRegion> regions;
|
| + regions.reserve(dump.process_mmaps()->vm_regions().size());
|
| + for (const VMRegion& region : dump.process_mmaps()->vm_regions())
|
| + regions.push_back(region);
|
| + std::sort(regions.begin(), regions.end(),
|
| + [](const VMRegion& a, const VMRegion& b) -> bool {
|
| + return a.start_address < b.start_address;
|
| + });
|
| + uint64_t last_address = 0;
|
| + for (const VMRegion& region : regions) {
|
| + EXPECT_GE(region.start_address, last_address);
|
| + last_address = region.start_address + region.size_in_bytes;
|
| + }
|
| +}
|
| +
|
| #endif // defined(OS_MACOSX)
|
|
|
| } // namespace tracing
|
|
|