| Index: skia/ext/skia_memory_dump_provider.h
 | 
| diff --git a/skia/ext/skia_memory_dump_provider.h b/skia/ext/skia_memory_dump_provider.h
 | 
| index d9557d8b431b6da53a2cc56afd04050b3d685f24..3874a5a5db8ca8be06bd77ed5c8d02281dd324aa 100644
 | 
| --- a/skia/ext/skia_memory_dump_provider.h
 | 
| +++ b/skia/ext/skia_memory_dump_provider.h
 | 
| @@ -7,11 +7,42 @@
 | 
|  
 | 
|  #include "base/macros.h"
 | 
|  #include "base/memory/singleton.h"
 | 
| +#include "base/trace_event/heap_profiler_allocation_register.h"
 | 
|  #include "base/trace_event/memory_dump_provider.h"
 | 
|  #include "third_party/skia/include/core/SkTypes.h"
 | 
|  
 | 
|  namespace skia {
 | 
|  
 | 
| +class SkiaAllocHooks {
 | 
| + public:
 | 
| +  typedef void AllocationHook(void* address, size_t size,
 | 
| +                              const char* type_name);
 | 
| +  typedef void FreeHook(void* address);
 | 
| +  static void SetAllocationHook(AllocationHook* hook) {
 | 
| +    allocation_hook_ = hook;
 | 
| +  }
 | 
| +  static void SetFreeHook(FreeHook* hook) {
 | 
| +    free_hook_ = hook;
 | 
| +  }
 | 
| +  static void AllocationHookIfEnabled(void* address, size_t size,
 | 
| +                                      const char* type_name) {
 | 
| +    AllocationHook* allocation_hook = allocation_hook_;
 | 
| +    if (UNLIKELY(allocation_hook != nullptr)) {
 | 
| +      allocation_hook(address, size, type_name);
 | 
| +    }
 | 
| +  }
 | 
| +  static void FreeHookIfEnabled(void* address) {
 | 
| +    FreeHook* free_hook = free_hook_;
 | 
| +    if (UNLIKELY(free_hook != nullptr)) {
 | 
| +      free_hook(address);
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| + private:
 | 
| +  static AllocationHook* allocation_hook_;
 | 
| +  static FreeHook* free_hook_;
 | 
| +};
 | 
| +
 | 
|  class SK_API SkiaMemoryDumpProvider
 | 
|      : public base::trace_event::MemoryDumpProvider {
 | 
|   public:
 | 
| @@ -21,6 +52,10 @@ class SK_API SkiaMemoryDumpProvider
 | 
|    bool OnMemoryDump(
 | 
|        const base::trace_event::MemoryDumpArgs& args,
 | 
|        base::trace_event::ProcessMemoryDump* process_memory_dump) override;
 | 
| +  void OnHeapProfilingEnabled(bool enabled) override;
 | 
| +
 | 
| +  void Insert(void* address, size_t size, const char* type_name);
 | 
| +  void Remove(void* address);
 | 
|  
 | 
|   private:
 | 
|    friend struct base::DefaultSingletonTraits<SkiaMemoryDumpProvider>;
 | 
| @@ -28,6 +63,10 @@ class SK_API SkiaMemoryDumpProvider
 | 
|    SkiaMemoryDumpProvider();
 | 
|    ~SkiaMemoryDumpProvider() override;
 | 
|  
 | 
| +  base::Lock lock_;
 | 
| +  scoped_ptr<base::trace_event::AllocationRegister> allocation_register_;
 | 
| +  bool is_heap_profiling_enabled_;
 | 
| +
 | 
|    DISALLOW_COPY_AND_ASSIGN(SkiaMemoryDumpProvider);
 | 
|  };
 | 
|  
 | 
| 
 |