Index: ui/ozone/platform/drm/mojo/drm_ipc_init_helper.cc |
diff --git a/ui/ozone/platform/drm/mojo/drm_ipc_init_helper.cc b/ui/ozone/platform/drm/mojo/drm_ipc_init_helper.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..172ee67e1f4b910106ef5045a8ad75900fae2eb0 |
--- /dev/null |
+++ b/ui/ozone/platform/drm/mojo/drm_ipc_init_helper.cc |
@@ -0,0 +1,94 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "mojo/public/cpp/application/application_connection.h" |
+#include "mojo/public/cpp/application/interface_factory_impl.h" |
+#include "mojo/services/ozone_drm_gpu/public/interfaces/ozone_drm_gpu.mojom.h" |
+#include "mojo/services/ozone_drm_host/public/interfaces/ozone_drm_host.mojom.h" |
+#include "ui/ozone/platform/drm/mojo/drm_gpu_delegate.h" |
+#include "ui/ozone/platform/drm/mojo/drm_gpu_impl.h" |
+#include "ui/ozone/platform/drm/mojo/drm_host_delegate.h" |
+#include "ui/ozone/platform/drm/mojo/drm_host_impl.h" |
+#include "ui/ozone/public/ipc_init_helper_mojo.h" |
+ |
+namespace ui { |
+ |
+class InterfaceFactoryDrmHost |
+ : public mojo::InterfaceFactory<mojo::OzoneDrmHost> { |
+ // mojo::InterfaceFactory implementation. |
+ void Create(mojo::ApplicationConnection* connection, |
+ mojo::InterfaceRequest<mojo::OzoneDrmHost> request) override; |
+}; |
+ |
+class InterfaceFactoryDrmGpu |
+ : public mojo::InterfaceFactory<mojo::OzoneDrmGpu> { |
+ // mojo::InterfaceFactory<OzoneDrmGpu> implementation. |
+ void Create(mojo::ApplicationConnection* connection, |
+ mojo::InterfaceRequest<mojo::OzoneDrmGpu> request) override; |
+}; |
+ |
+void InterfaceFactoryDrmHost::Create( |
+ mojo::ApplicationConnection* connection, |
+ mojo::InterfaceRequest<mojo::OzoneDrmHost> request) { |
+ new MojoDrmHostImpl(request.Pass()); |
+} |
+ |
+void InterfaceFactoryDrmGpu::Create( |
+ mojo::ApplicationConnection* connection, |
+ mojo::InterfaceRequest<mojo::OzoneDrmGpu> request) { |
+ new MojoDrmGpuImpl(request.Pass()); |
+} |
+ |
+class DrmIpcInitHelperMojo : public IpcInitHelperMojo { |
+ public: |
+ DrmIpcInitHelperMojo(); |
+ ~DrmIpcInitHelperMojo(); |
+ |
+ void HostInitialize(mojo::ApplicationImpl* application) override; |
+ bool HostConfigureIncomingConnection( |
+ mojo::ApplicationConnection* connection) override; |
+ |
+ void GpuInitialize(mojo::ApplicationImpl* application) override; |
+ bool GpuConfigureIncomingConnection( |
+ mojo::ApplicationConnection* connection) override; |
+ |
+ private: |
+ mojo::OzoneDrmHostPtr ozone_drm_host_; |
+ mojo::OzoneDrmGpuPtr ozone_drm_gpu_; |
+}; |
+ |
+DrmIpcInitHelperMojo::DrmIpcInitHelperMojo() {} |
+ |
+DrmIpcInitHelperMojo::~DrmIpcInitHelperMojo() {} |
+ |
+void DrmIpcInitHelperMojo::HostInitialize(mojo::ApplicationImpl* application) { |
+ application->ConnectToService("mojo:native_viewport_service", |
+ &ozone_drm_gpu_); |
+ new MojoDrmHostDelegate(ozone_drm_gpu_.get()); |
+} |
+ |
+void DrmIpcInitHelperMojo::GpuInitialize(mojo::ApplicationImpl* application) { |
+ application->ConnectToService("mojo:native_viewport_service", |
+ &ozone_drm_host_); |
+ new MojoDrmGpuDelegate(ozone_drm_host_.get()); |
+} |
+ |
+bool DrmIpcInitHelperMojo::HostConfigureIncomingConnection( |
+ mojo::ApplicationConnection* connection) { |
+ connection->AddService<mojo::OzoneDrmHost>(new InterfaceFactoryDrmHost()); |
+ return true; |
+} |
+ |
+bool DrmIpcInitHelperMojo::GpuConfigureIncomingConnection( |
+ mojo::ApplicationConnection* connection) { |
+ connection->AddService<mojo::OzoneDrmGpu>(new InterfaceFactoryDrmGpu()); |
+ return true; |
+} |
+ |
+// static |
+IpcInitHelperOzone* IpcInitHelperOzone::Create() { |
+ return new DrmIpcInitHelperMojo(); |
+} |
+ |
+} // namespace ui |