| Index: third_party/WebKit/Source/platform/exported/Platform.cpp
|
| diff --git a/third_party/WebKit/Source/platform/exported/Platform.cpp b/third_party/WebKit/Source/platform/exported/Platform.cpp
|
| index 11e174491a19f7d277edc1076d4f1c2dada86205..589ec26a0fd94a4b664266d314c6abbb205d937a 100644
|
| --- a/third_party/WebKit/Source/platform/exported/Platform.cpp
|
| +++ b/third_party/WebKit/Source/platform/exported/Platform.cpp
|
| @@ -28,12 +28,28 @@
|
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| */
|
|
|
| +#include "base/thread_task_runner_handle.h"
|
| +#include "base/trace_event/memory_dump_manager.h"
|
| #include "platform/PartitionAllocMemoryDumpProvider.h"
|
| +#include "platform/WebMemoryDumpProviderAdapter.h"
|
| #include "public/platform/Platform.h"
|
| +#include "wtf/HashMap.h"
|
| +#include "wtf/OwnPtr.h"
|
|
|
| namespace blink {
|
|
|
| static Platform* s_platform = 0;
|
| +using ProviderToAdapterMap = HashMap<WebMemoryDumpProvider*, OwnPtr<WebMemoryDumpProviderAdapter>>;
|
| +
|
| +namespace {
|
| +
|
| +ProviderToAdapterMap& memoryDumpProviders()
|
| +{
|
| + DEFINE_STATIC_LOCAL(ProviderToAdapterMap, providerToAdapterMap, ());
|
| + return providerToAdapterMap;
|
| +}
|
| +
|
| +} // namespace
|
|
|
| Platform::Platform()
|
| : m_mainThread(0)
|
| @@ -71,4 +87,25 @@ WebThread* Platform::mainThread() const
|
| return m_mainThread;
|
| }
|
|
|
| +void Platform::registerMemoryDumpProvider(WebMemoryDumpProvider* wmdp, const char* name)
|
| +{
|
| + WebMemoryDumpProviderAdapter* adapter = new WebMemoryDumpProviderAdapter(wmdp);
|
| + ProviderToAdapterMap::AddResult result = memoryDumpProviders().add(wmdp, adoptPtr(adapter));
|
| + if (!result.isNewEntry)
|
| + return;
|
| + adapter->set_is_registered(true);
|
| + base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(adapter, name, base::ThreadTaskRunnerHandle::Get());
|
| +}
|
| +
|
| +void Platform::unregisterMemoryDumpProvider(WebMemoryDumpProvider* wmdp)
|
| +{
|
| + ProviderToAdapterMap::iterator it = memoryDumpProviders().find(wmdp);
|
| + if (it == memoryDumpProviders().end())
|
| + return;
|
| + WebMemoryDumpProviderAdapter* adapter = it->value.get();
|
| + base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider(adapter);
|
| + adapter->set_is_registered(false);
|
| + memoryDumpProviders().remove(it);
|
| +}
|
| +
|
| } // namespace blink
|
|
|