summaryrefslogtreecommitdiffstats
path: root/src/core/renderer
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-05-03 18:46:06 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-06-26 08:17:25 +0000
commit57c49df9c6fcbaaffc66900e191312d4e0a0edfa (patch)
treea067be82e9c367673b3f8efdbcf0a21a780b5451 /src/core/renderer
parent8d752cab84d437244ef0c2318b70d6516e99a044 (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.cpp55
-rw-r--r--src/core/renderer/content_renderer_client_qt.h27
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