1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "third_party/blink/renderer/platform/instrumentation/tracing/memory_cache_dump_provider.h"
6 
7 namespace blink {
8 
Trace(Visitor * visitor) const9 void MemoryCacheDumpClient::Trace(Visitor* visitor) const {}
10 
Instance()11 MemoryCacheDumpProvider* MemoryCacheDumpProvider::Instance() {
12   DEFINE_STATIC_LOCAL(MemoryCacheDumpProvider, instance, ());
13   return &instance;
14 }
15 
OnMemoryDump(const base::trace_event::MemoryDumpArgs & args,base::trace_event::ProcessMemoryDump * memory_dump)16 bool MemoryCacheDumpProvider::OnMemoryDump(
17     const base::trace_event::MemoryDumpArgs& args,
18     base::trace_event::ProcessMemoryDump* memory_dump) {
19   DCHECK(IsMainThread());
20   if (!client_)
21     return false;
22 
23   WebMemoryDumpLevelOfDetail level;
24   switch (args.level_of_detail) {
25     case base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND:
26       level = blink::WebMemoryDumpLevelOfDetail::kBackground;
27       break;
28     case base::trace_event::MemoryDumpLevelOfDetail::LIGHT:
29       level = blink::WebMemoryDumpLevelOfDetail::kLight;
30       break;
31     case base::trace_event::MemoryDumpLevelOfDetail::DETAILED:
32       level = blink::WebMemoryDumpLevelOfDetail::kDetailed;
33       break;
34     default:
35       NOTREACHED();
36       return false;
37   }
38 
39   WebProcessMemoryDump dump(args.level_of_detail, memory_dump);
40   return client_->OnMemoryDump(level, &dump);
41 }
42 
43 MemoryCacheDumpProvider::MemoryCacheDumpProvider() = default;
44 
45 MemoryCacheDumpProvider::~MemoryCacheDumpProvider() = default;
46 
47 }  // namespace blink
48