Index: content/renderer/mus/render_widget_window_tree_client_factory.cc |
diff --git a/content/renderer/mus/render_widget_window_tree_client_factory.cc b/content/renderer/mus/render_widget_window_tree_client_factory.cc |
index 3df64afd9308ca0fea225820e934fae64b9124d2..52923eae18d41c25301d88b596847b259b5a3fd5 100644 |
--- a/content/renderer/mus/render_widget_window_tree_client_factory.cc |
+++ b/content/renderer/mus/render_widget_window_tree_client_factory.cc |
@@ -10,6 +10,7 @@ |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
#include "base/memory/ref_counted.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/sequenced_task_runner.h" |
#include "base/threading/thread_task_runner_handle.h" |
#include "content/common/render_widget_window_tree_client_factory.mojom.h" |
@@ -38,11 +39,9 @@ void BindMusConnectionOnMainThread( |
// registered with it. |
class RenderWidgetWindowTreeClientFactoryImpl |
: public ConnectionFilter, |
- public shell::InterfaceFactory< |
- mojom::RenderWidgetWindowTreeClientFactory>, |
public mojom::RenderWidgetWindowTreeClientFactory { |
public: |
- RenderWidgetWindowTreeClientFactoryImpl() { |
+ RenderWidgetWindowTreeClientFactoryImpl() : weak_factory_(this) { |
main_thread_task_runner_ = base::ThreadTaskRunnerHandle::Get(); |
} |
@@ -53,17 +52,12 @@ class RenderWidgetWindowTreeClientFactoryImpl |
bool OnConnect(const shell::Identity& remote_identity, |
shell::InterfaceRegistry* registry, |
shell::Connector* connector) override { |
- registry->AddInterface<mojom::RenderWidgetWindowTreeClientFactory>(this); |
+ registry->AddInterface( |
+ base::Bind(&RenderWidgetWindowTreeClientFactoryImpl::CreateFactory, |
+ weak_factory_.GetWeakPtr())); |
return true; |
} |
- // shell::InterfaceFactory<mojom::RenderWidgetWindowTreeClientFactory>: |
- void Create(const shell::Identity& remote_identity, |
- mojo::InterfaceRequest<mojom::RenderWidgetWindowTreeClientFactory> |
- request) override { |
- bindings_.AddBinding(this, std::move(request)); |
- } |
- |
// mojom::RenderWidgetWindowTreeClientFactory implementation. |
void CreateWindowTreeClientForRenderWidget( |
uint32_t routing_id, |
@@ -73,8 +67,14 @@ class RenderWidgetWindowTreeClientFactoryImpl |
base::Passed(&request))); |
} |
+ void CreateFactory( |
+ mojom::RenderWidgetWindowTreeClientFactoryRequest request) { |
+ bindings_.AddBinding(this, std::move(request)); |
+ } |
+ |
scoped_refptr<base::SequencedTaskRunner> main_thread_task_runner_; |
mojo::BindingSet<mojom::RenderWidgetWindowTreeClientFactory> bindings_; |
+ base::WeakPtrFactory<RenderWidgetWindowTreeClientFactoryImpl> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(RenderWidgetWindowTreeClientFactoryImpl); |
}; |