From 57c49df9c6fcbaaffc66900e191312d4e0a0edfa Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 3 May 2018 18:46:06 +0200 Subject: Adaptations for Chromium 66 Change-Id: Iee88721a50036d4ef85a23dd1708d4fb84218708 Reviewed-by: Michal Klocek --- src/core/renderer/content_renderer_client_qt.cpp | 55 +++++++++++++++++++----- src/core/renderer/content_renderer_client_qt.h | 27 +++++++++++- 2 files changed, 71 insertions(+), 11 deletions(-) (limited to 'src/core/renderer') diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp index 82467c2cb..846c77c92 100644 --- a/src/core/renderer/content_renderer_client_qt.cpp +++ b/src/core/renderer/content_renderer_client_qt.cpp @@ -64,6 +64,7 @@ #include "content/public/renderer/render_thread.h" #include "content/public/renderer/render_view.h" #include "net/base/net_errors.h" +#include "services/service_manager/public/cpp/service_context.h" #include "third_party/WebKit/public/platform/WebURLError.h" #include "third_party/WebKit/public/platform/WebURLRequest.h" #include "ui/base/resource/resource_bundle.h" @@ -100,23 +101,21 @@ ContentRendererClientQt::~ContentRendererClientQt() void ContentRendererClientQt::RenderThreadStarted() { content::RenderThread *renderThread = content::RenderThread::Get(); + (void)GetConnector(); m_visitedLinkSlave.reset(new visitedlink::VisitedLinkSlave); m_webCacheImpl.reset(new web_cache::WebCacheImpl()); auto registry = base::MakeUnique(); registry->AddInterface(m_visitedLinkSlave->GetBindCallback(), base::ThreadTaskRunnerHandle::Get()); - content::ChildThread::Get() - ->GetServiceManagerConnection() - ->AddConnectionFilter(base::MakeUnique( - std::move(registry))); - + content::ChildThread::Get()->GetServiceManagerConnection()->AddConnectionFilter( + base::MakeUnique(std::move(registry))); renderThread->AddObserver(UserResourceController::instance()); #if BUILDFLAG(ENABLE_SPELLCHECK) - m_spellCheck.reset(new SpellCheck(this)); - renderThread->AddObserver(m_spellCheck.data()); + if (!m_spellCheck) + InitSpellCheck(); #endif } @@ -231,11 +230,26 @@ bool ContentRendererClientQt::IsLinkVisited(unsigned long long linkHash) return m_visitedLinkSlave->IsVisited(linkHash); } +void ContentRendererClientQt::OnStart() +{ + context()->connector()->BindConnectorRequest(std::move(m_connectorRequest)); +} + +void ContentRendererClientQt::OnBindInterface(const service_manager::BindSourceInfo &remote_info, + const std::string& name, + mojo::ScopedMessagePipeHandle handle) +{ + Q_UNUSED(remote_info); + m_registry.TryBindInterface(name, &handle); +} + void ContentRendererClientQt::GetInterface(const std::string &interface_name, mojo::ScopedMessagePipeHandle interface_pipe) { - content::RenderThread::Get()->GetConnector()->BindInterface(service_manager::Identity("qtwebengine"), - interface_name, - std::move(interface_pipe)); + if (!m_connector) + return; + m_connector->BindInterface(service_manager::Identity("qtwebengine"), + interface_name, + std::move(interface_pipe)); } // The following is based on chrome/renderer/media/chrome_key_systems.cc: @@ -428,4 +442,25 @@ void ContentRendererClientQt::AddSupportedKeySystems(std::vector( + std::make_unique(this), + std::move(service_request)); +} + +service_manager::Connector* ContentRendererClientQt::GetConnector() +{ + if (!m_connector) + m_connector = service_manager::Connector::Create(&m_connectorRequest); + return m_connector.get(); +} + } // namespace diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h index a1bf29966..9da664398 100644 --- a/src/core/renderer/content_renderer_client_qt.h +++ b/src/core/renderer/content_renderer_client_qt.h @@ -41,7 +41,10 @@ #include "content/public/renderer/content_renderer_client.h" #include "components/spellcheck/spellcheck_build_features.h" +#include "services/service_manager/public/cpp/binder_registry.h" +#include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/local_interface_provider.h" +#include "services/service_manager/public/cpp/service.h" #include @@ -64,11 +67,14 @@ class SpellCheck; namespace QtWebEngineCore { class ContentRendererClientQt : public content::ContentRendererClient + , public service_manager::Service , public service_manager::LocalInterfaceProvider { public: ContentRendererClientQt(); ~ContentRendererClientQt(); + + // content::ContentRendererClient: void RenderThreadStarted() override; void RenderViewCreated(content::RenderView *render_view) override; void RenderFrameCreated(content::RenderFrame* render_frame) override; @@ -86,19 +92,38 @@ public: void RunScriptsAtDocumentEnd(content::RenderFrame* render_frame) override; + void CreateRendererService(service_manager::mojom::ServiceRequest service_request) override; + private: +#if BUILDFLAG(ENABLE_SPELLCHECK) + void InitSpellCheck(); +#endif + service_manager::Connector *GetConnector(); + + // service_manager::Service: + void OnStart() override; + void OnBindInterface(const service_manager::BindSourceInfo &remote_info, + const std::string &name, + mojo::ScopedMessagePipeHandle handle) override; + // service_manager::LocalInterfaceProvider: void GetInterface(const std::string& name, mojo::ScopedMessagePipeHandle request_handle) override; void GetNavigationErrorStringsInternal(content::RenderFrame* renderFrame, const blink::WebURLRequest& failedRequest, const error_page::Error& error, std::string* errorHtml, base::string16* errorDescription); - QScopedPointer m_visitedLinkSlave; QScopedPointer m_webCacheImpl; #if BUILDFLAG(ENABLE_SPELLCHECK) QScopedPointer m_spellCheck; #endif + + std::unique_ptr m_connector; + service_manager::mojom::ConnectorRequest m_connectorRequest; + std::unique_ptr m_serviceContext; + service_manager::BinderRegistry m_registry; + + DISALLOW_COPY_AND_ASSIGN(ContentRendererClientQt); }; } // namespace -- cgit v1.2.3