Commit 004b5082 authored by Henrique Ferreiro's avatar Henrique Ferreiro Committed by Commit Bot

Migrate CrashMemoryMetricsReporter to the new Mojo types

Convert the implementation and all users of the
blink.mojom.CrashMemoryMetricsReporter interface.

Bug: 955171, 978694
Change-Id: Id46e1be52ee85bbc774171badc1a789b26b62edf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1761275
Commit-Queue: Henrique Ferreiro <hferreiro@igalia.com>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarDave Tapuska <dtapuska@chromium.org>
Reviewed-by: default avatarTibor Goldschwendt <tiborg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#690310}
parent 6b0fd033
...@@ -4,10 +4,13 @@ ...@@ -4,10 +4,13 @@
#include "components/crash/content/browser/crash_memory_metrics_collector_android.h" #include "components/crash/content/browser/crash_memory_metrics_collector_android.h"
#include <utility>
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics.h"
#include "content/public/browser/render_process_host.h" #include "content/public/browser/render_process_host.h"
#include "content/public/common/bind_interface_helpers.h" #include "content/public/common/bind_interface_helpers.h"
#include "mojo/public/cpp/bindings/remote.h"
// Keys used to attach handler to the RenderProcessHost // Keys used to attach handler to the RenderProcessHost
const void* const CrashMemoryMetricsCollector::kCrashMemoryMetricsCollectorKey = const void* const CrashMemoryMetricsCollector::kCrashMemoryMetricsCollectorKey =
...@@ -23,16 +26,16 @@ CrashMemoryMetricsCollector::GetFromRenderProcessHost( ...@@ -23,16 +26,16 @@ CrashMemoryMetricsCollector::GetFromRenderProcessHost(
CrashMemoryMetricsCollector::CrashMemoryMetricsCollector( CrashMemoryMetricsCollector::CrashMemoryMetricsCollector(
content::RenderProcessHost* rph) { content::RenderProcessHost* rph) {
// Initialize bindings with CrashMemoryMetricsReporter. // Initialize bindings with CrashMemoryMetricsReporter.
content::BindInterface(rph, content::BindInterface(rph, &crash_memory_metrics_reporter_);
mojo::MakeRequest(&crash_memory_metrics_reporter_));
// Create shared memory and pass it to crash_memory_metrics_reporter. // Create shared memory and pass it to crash_memory_metrics_reporter.
base::UnsafeSharedMemoryRegion shared_metrics_buffer = base::UnsafeSharedMemoryRegion shared_metrics_buffer =
base::UnsafeSharedMemoryRegion::Create( base::UnsafeSharedMemoryRegion::Create(
sizeof(blink::OomInterventionMetrics)); sizeof(blink::OomInterventionMetrics));
metrics_mapping_ = shared_metrics_buffer.Map(); metrics_mapping_ = shared_metrics_buffer.Map();
memset(metrics_mapping_.memory(), 0, sizeof(blink::OomInterventionMetrics)); memset(metrics_mapping_.memory(), 0, sizeof(blink::OomInterventionMetrics));
crash_memory_metrics_reporter_->SetSharedMemory( mojo::Remote<blink::mojom::CrashMemoryMetricsReporter>(
shared_metrics_buffer.Duplicate()); std::move(crash_memory_metrics_reporter_))
->SetSharedMemory(shared_metrics_buffer.Duplicate());
} }
CrashMemoryMetricsCollector::~CrashMemoryMetricsCollector() = default; CrashMemoryMetricsCollector::~CrashMemoryMetricsCollector() = default;
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include "components/crash/content/browser/child_exit_observer_android.h" #include "components/crash/content/browser/child_exit_observer_android.h"
#include "content/public/browser/content_browser_client.h" #include "content/public/browser/content_browser_client.h"
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/pending_remote.h"
#include "third_party/blink/public/common/oom_intervention/oom_intervention_types.h" #include "third_party/blink/public/common/oom_intervention/oom_intervention_types.h"
#include "third_party/blink/public/mojom/crash/crash_memory_metrics_reporter.mojom.h" #include "third_party/blink/public/mojom/crash/crash_memory_metrics_reporter.mojom.h"
...@@ -32,7 +32,8 @@ class CrashMemoryMetricsCollector : public base::SupportsUserData::Data { ...@@ -32,7 +32,8 @@ class CrashMemoryMetricsCollector : public base::SupportsUserData::Data {
const blink::OomInterventionMetrics* MemoryMetrics(); const blink::OomInterventionMetrics* MemoryMetrics();
private: private:
blink::mojom::CrashMemoryMetricsReporterPtr crash_memory_metrics_reporter_; mojo::PendingRemote<blink::mojom::CrashMemoryMetricsReporter>
crash_memory_metrics_reporter_;
base::WritableSharedMemoryMapping metrics_mapping_; base::WritableSharedMemoryMapping metrics_mapping_;
DISALLOW_COPY_AND_ASSIGN(CrashMemoryMetricsCollector); DISALLOW_COPY_AND_ASSIGN(CrashMemoryMetricsCollector);
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include "third_party/blink/renderer/controller/blink_initializer.h" #include "third_party/blink/renderer/controller/blink_initializer.h"
#include <memory> #include <memory>
#include <utility>
#include "build/build_config.h" #include "build/build_config.h"
#include "third_party/blink/public/common/experiments/memory_ablation_experiment.h" #include "third_party/blink/public/common/experiments/memory_ablation_experiment.h"
...@@ -170,9 +171,13 @@ void BlinkInitializer::RegisterInterfaces( ...@@ -170,9 +171,13 @@ void BlinkInitializer::RegisterInterfaces(
&OomInterventionImpl::Create)), &OomInterventionImpl::Create)),
main_thread->GetTaskRunner()); main_thread->GetTaskRunner());
registry.AddInterface(ConvertToBaseCallback(CrossThreadBindRepeating( registry.AddInterface(
&CrashMemoryMetricsReporterImpl::Bind)), ConvertToBaseCallback(CrossThreadBindRepeating(
main_thread->GetTaskRunner()); [](mojom::blink::CrashMemoryMetricsReporterRequest request) {
// Implicit conversion to PendingReceiver<T>
CrashMemoryMetricsReporterImpl::Bind(std::move(request));
})),
main_thread->GetTaskRunner());
#endif #endif
registry.AddInterface(ConvertToBaseCallback(CrossThreadBindRepeating( registry.AddInterface(ConvertToBaseCallback(CrossThreadBindRepeating(
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include "third_party/blink/renderer/controller/crash_memory_metrics_reporter_impl.h" #include "third_party/blink/renderer/controller/crash_memory_metrics_reporter_impl.h"
#include <utility>
#include "base/allocator/partition_allocator/oom_callback.h" #include "base/allocator/partition_allocator/oom_callback.h"
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "base/process/memory.h" #include "base/process/memory.h"
...@@ -18,10 +20,11 @@ namespace blink { ...@@ -18,10 +20,11 @@ namespace blink {
// static // static
void CrashMemoryMetricsReporterImpl::Bind( void CrashMemoryMetricsReporterImpl::Bind(
mojom::blink::CrashMemoryMetricsReporterRequest request) { mojo::PendingReceiver<mojom::blink::CrashMemoryMetricsReporter> receiver) {
// This should be called only once per process on RenderProcessWillLaunch. // This should be called only once per process on RenderProcessWillLaunch.
DCHECK(!CrashMemoryMetricsReporterImpl::Instance().binding_.is_bound()); DCHECK(!CrashMemoryMetricsReporterImpl::Instance().receiver_.is_bound());
CrashMemoryMetricsReporterImpl::Instance().binding_.Bind(std::move(request)); CrashMemoryMetricsReporterImpl::Instance().receiver_.Bind(
std::move(receiver));
} }
CrashMemoryMetricsReporterImpl& CrashMemoryMetricsReporterImpl::Instance() { CrashMemoryMetricsReporterImpl& CrashMemoryMetricsReporterImpl::Instance() {
...@@ -30,8 +33,7 @@ CrashMemoryMetricsReporterImpl& CrashMemoryMetricsReporterImpl::Instance() { ...@@ -30,8 +33,7 @@ CrashMemoryMetricsReporterImpl& CrashMemoryMetricsReporterImpl::Instance() {
return crash_memory_metrics_reporter_impl; return crash_memory_metrics_reporter_impl;
} }
CrashMemoryMetricsReporterImpl::CrashMemoryMetricsReporterImpl() CrashMemoryMetricsReporterImpl::CrashMemoryMetricsReporterImpl() {
: binding_(this) {
base::SetPartitionAllocOomCallback( base::SetPartitionAllocOomCallback(
CrashMemoryMetricsReporterImpl::OnOOMCallback); CrashMemoryMetricsReporterImpl::OnOOMCallback);
} }
......
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
#define THIRD_PARTY_BLINK_RENDERER_CONTROLLER_CRASH_MEMORY_METRICS_REPORTER_IMPL_H_ #define THIRD_PARTY_BLINK_RENDERER_CONTROLLER_CRASH_MEMORY_METRICS_REPORTER_IMPL_H_
#include "base/files/scoped_file.h" #include "base/files/scoped_file.h"
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "third_party/blink/public/common/oom_intervention/oom_intervention_types.h" #include "third_party/blink/public/common/oom_intervention/oom_intervention_types.h"
#include "third_party/blink/public/mojom/crash/crash_memory_metrics_reporter.mojom-blink.h" #include "third_party/blink/public/mojom/crash/crash_memory_metrics_reporter.mojom-blink.h"
#include "third_party/blink/renderer/controller/controller_export.h" #include "third_party/blink/renderer/controller/controller_export.h"
...@@ -20,7 +21,8 @@ class CONTROLLER_EXPORT CrashMemoryMetricsReporterImpl ...@@ -20,7 +21,8 @@ class CONTROLLER_EXPORT CrashMemoryMetricsReporterImpl
public MemoryUsageMonitor::Observer { public MemoryUsageMonitor::Observer {
public: public:
static CrashMemoryMetricsReporterImpl& Instance(); static CrashMemoryMetricsReporterImpl& Instance();
static void Bind(mojom::blink::CrashMemoryMetricsReporterRequest); static void Bind(
mojo::PendingReceiver<mojom::blink::CrashMemoryMetricsReporter> receiver);
static OomInterventionMetrics MemoryUsageToMetrics(MemoryUsage); static OomInterventionMetrics MemoryUsageToMetrics(MemoryUsage);
~CrashMemoryMetricsReporterImpl() override; ~CrashMemoryMetricsReporterImpl() override;
...@@ -48,7 +50,7 @@ class CONTROLLER_EXPORT CrashMemoryMetricsReporterImpl ...@@ -48,7 +50,7 @@ class CONTROLLER_EXPORT CrashMemoryMetricsReporterImpl
void WriteIntoSharedMemory(const OomInterventionMetrics& metrics); void WriteIntoSharedMemory(const OomInterventionMetrics& metrics);
base::WritableSharedMemoryMapping shared_metrics_mapping_; base::WritableSharedMemoryMapping shared_metrics_mapping_;
mojo::Binding<mojom::blink::CrashMemoryMetricsReporter> binding_; mojo::Receiver<mojom::blink::CrashMemoryMetricsReporter> receiver_{this};
}; };
} // namespace blink } // namespace blink
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment