blob: 5182396943007df7c4059b71bf5e0f91c8492bfa [file] [log] [blame]
// 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/connect.h"
#include "mojo/services/ozone_drm_gpu/interfaces/ozone_drm_gpu.mojom.h"
#include "mojo/services/ozone_drm_host/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 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) {
mojo::ConnectToService(application->shell(), "mojo:native_viewport_service",
GetProxy(&ozone_drm_gpu_));
new MojoDrmHostDelegate(ozone_drm_gpu_.get());
}
void DrmIpcInitHelperMojo::GpuInitialize(mojo::ApplicationImpl* application) {
mojo::ConnectToService(application->shell(), "mojo:native_viewport_service",
GetProxy(&ozone_drm_host_));
new MojoDrmGpuDelegate(ozone_drm_host_.get());
}
bool DrmIpcInitHelperMojo::HostConfigureIncomingConnection(
mojo::ApplicationConnection* connection) {
connection->GetServiceProviderImpl().AddService<mojo::OzoneDrmHost>(
[](const mojo::ConnectionContext& connection_context,
mojo::InterfaceRequest<mojo::OzoneDrmHost> request) {
new MojoDrmHostImpl(request.Pass());
});
return true;
}
bool DrmIpcInitHelperMojo::GpuConfigureIncomingConnection(
mojo::ApplicationConnection* connection) {
connection->GetServiceProviderImpl().AddService<mojo::OzoneDrmGpu>(
[](const mojo::ConnectionContext& connection_context,
mojo::InterfaceRequest<mojo::OzoneDrmGpu> request) {
new MojoDrmGpuImpl(request.Pass());
});
return true;
}
// static
IpcInitHelperOzone* IpcInitHelperOzone::Create() {
return new DrmIpcInitHelperMojo();
}
} // namespace ui