diff options
Diffstat (limited to 'src/core/service/service_qt.cpp')
-rw-r--r-- | src/core/service/service_qt.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/core/service/service_qt.cpp b/src/core/service/service_qt.cpp index bb842232c..83948e396 100644 --- a/src/core/service/service_qt.cpp +++ b/src/core/service/service_qt.cpp @@ -53,7 +53,7 @@ #include "services/service_manager/public/cpp/binder_registry.h" #include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/service.h" -#include "services/service_manager/public/cpp/service_context.h" +#include "services/service_manager/public/cpp/service_binding.h" #if BUILDFLAG(ENABLE_SPELLCHECK) #include "chrome/browser/spellchecker/spell_check_host_chrome_impl.h" @@ -64,6 +64,7 @@ public: IOThreadContext(); ~IOThreadContext() override = default; + void BindServiceRequest(service_manager::mojom::ServiceRequest request); void BindConnector(service_manager::mojom::ConnectorRequest connector_request); private: @@ -76,6 +77,7 @@ private: mojo::ScopedMessagePipeHandle handle) override; service_manager::mojom::ConnectorRequest m_connectorRequest; + service_manager::ServiceBinding m_serviceBinding{this}; service_manager::BinderRegistry m_registry; service_manager::BinderRegistryWithArgs<const service_manager::BindSourceInfo&> m_registry_with_source_info; @@ -91,6 +93,11 @@ ServiceQt::IOThreadContext::IOThreadContext() #endif } +void ServiceQt::IOThreadContext::BindServiceRequest(service_manager::mojom::ServiceRequest request) +{ + m_serviceBinding.Bind(std::move(request)); +} + void ServiceQt::IOThreadContext::BindConnector(service_manager::mojom::ConnectorRequest connector_request) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -116,7 +123,7 @@ void ServiceQt::IOThreadContext::OnStart() { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK(m_connectorRequest.is_pending()); - context()->connector()->BindConnectorRequest(std::move(m_connectorRequest)); + m_serviceBinding.GetConnector()->BindConnectorRequest(std::move(m_connectorRequest)); } void ServiceQt::IOThreadContext::OnBindInterface(const service_manager::BindSourceInfo &remote_info, @@ -138,9 +145,9 @@ ServiceQt *ServiceQt::GetInstance() return service.get(); } -service_manager::EmbeddedServiceInfo::ServiceFactory ServiceQt::CreateServiceQtFactory() +content::ServiceManagerConnection::ServiceRequestHandler ServiceQt::CreateServiceQtRequestHandler() { - return base::BindRepeating(&ServiceQt::CreateServiceQtWrapper, base::Unretained(this)); + return base::BindRepeating(&ServiceQt::BindServiceQtRequest, base::Unretained(this)); } ServiceQt::ServiceQt() : m_ioThreadContext(std::make_unique<IOThreadContext>()) @@ -155,8 +162,8 @@ void ServiceQt::InitConnector() m_ioThreadContext->BindConnector(std::move(request)); } -std::unique_ptr<service_manager::Service> ServiceQt::CreateServiceQtWrapper() +void ServiceQt::BindServiceQtRequest(service_manager::mojom::ServiceRequest request) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); - return std::make_unique<service_manager::ForwardingService>(m_ioThreadContext.get()); + m_ioThreadContext->BindServiceRequest(std::move(request)); } |