diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-05-03 18:46:06 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-06-26 08:17:25 +0000 |
commit | 57c49df9c6fcbaaffc66900e191312d4e0a0edfa (patch) | |
tree | a067be82e9c367673b3f8efdbcf0a21a780b5451 /src/core/renderer | |
parent | 8d752cab84d437244ef0c2318b70d6516e99a044 (diff) |
Adaptations for Chromium 66
Change-Id: Iee88721a50036d4ef85a23dd1708d4fb84218708
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/core/renderer')
-rw-r--r-- | src/core/renderer/content_renderer_client_qt.cpp | 55 | ||||
-rw-r--r-- | src/core/renderer/content_renderer_client_qt.h | 27 |
2 files changed, 71 insertions, 11 deletions
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<service_manager::BinderRegistry>(); registry->AddInterface(m_visitedLinkSlave->GetBindCallback(), base::ThreadTaskRunnerHandle::Get()); - content::ChildThread::Get() - ->GetServiceManagerConnection() - ->AddConnectionFilter(base::MakeUnique<content::SimpleConnectionFilter>( - std::move(registry))); - + content::ChildThread::Get()->GetServiceManagerConnection()->AddConnectionFilter( + base::MakeUnique<content::SimpleConnectionFilter>(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::unique_ptr #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) } +#if BUILDFLAG(ENABLE_SPELLCHECK) +void ContentRendererClientQt::InitSpellCheck() +{ + m_spellCheck.reset(new SpellCheck(&m_registry, this)); +} +#endif + +void ContentRendererClientQt::CreateRendererService(service_manager::mojom::ServiceRequest service_request) +{ + m_serviceContext = std::make_unique<service_manager::ServiceContext>( + std::make_unique<service_manager::ForwardingService>(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 <QScopedPointer> @@ -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<visitedlink::VisitedLinkSlave> m_visitedLinkSlave; QScopedPointer<web_cache::WebCacheImpl> m_webCacheImpl; #if BUILDFLAG(ENABLE_SPELLCHECK) QScopedPointer<SpellCheck> m_spellCheck; #endif + + std::unique_ptr<service_manager::Connector> m_connector; + service_manager::mojom::ConnectorRequest m_connectorRequest; + std::unique_ptr<service_manager::ServiceContext> m_serviceContext; + service_manager::BinderRegistry m_registry; + + DISALLOW_COPY_AND_ASSIGN(ContentRendererClientQt); }; } // namespace |