summaryrefslogtreecommitdiff
path: root/chromium/content/utility
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-13 16:23:34 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-14 10:37:21 +0000
commit38a9a29f4f9436cace7f0e7abf9c586057df8a4e (patch)
treec4e8c458dc595bc0ddb435708fa2229edfd00bd4 /chromium/content/utility
parente684a3455bcc29a6e3e66a004e352dea4e1141e7 (diff)
downloadqtwebengine-chromium-38a9a29f4f9436cace7f0e7abf9c586057df8a4e.tar.gz
BASELINE: Update Chromium to 73.0.3683.37
Change-Id: I08c9af2948b645f671e5d933aca1f7a90ea372f2 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/content/utility')
-rw-r--r--chromium/content/utility/BUILD.gn10
-rw-r--r--chromium/content/utility/DEPS3
-rw-r--r--chromium/content/utility/OWNERS3
-rw-r--r--chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.cc94
-rw-r--r--chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.h1
-rw-r--r--chromium/content/utility/utility_main.cc11
-rw-r--r--chromium/content/utility/utility_service_factory.cc85
-rw-r--r--chromium/content/utility/utility_service_factory.h9
8 files changed, 38 insertions, 178 deletions
diff --git a/chromium/content/utility/BUILD.gn b/chromium/content/utility/BUILD.gn
index d8da671ee09..6bfa5ee44b7 100644
--- a/chromium/content/utility/BUILD.gn
+++ b/chromium/content/utility/BUILD.gn
@@ -3,7 +3,6 @@
# found in the LICENSE file.
import("//build/config/jumbo.gni")
-import("//chromeos/assistant/assistant.gni")
import("//media/media_options.gni")
jumbo_source_set("utility") {
@@ -69,14 +68,7 @@ jumbo_source_set("utility") {
}
if (is_chromeos) {
- deps += [ "//chromeos/assistant:buildflags" ]
- }
-
- if (enable_cros_libassistant) {
- deps += [
- "//chromeos/services/assistant/audio_decoder:lib",
- "//chromeos/services/assistant/public/mojom",
- ]
+ deps += [ "//chromeos/services/ime:sandbox_hook" ]
}
}
diff --git a/chromium/content/utility/DEPS b/chromium/content/utility/DEPS
index 98f68268225..08ff3b047bc 100644
--- a/chromium/content/utility/DEPS
+++ b/chromium/content/utility/DEPS
@@ -1,8 +1,7 @@
include_rules = [
"+content/child",
"+content/public/utility",
- "+chromeos/assistant/buildflags.h",
- "+chromeos/services/assistant",
+ "+chromeos/services/ime",
"+services/audio",
"+services/data_decoder",
"+services/network",
diff --git a/chromium/content/utility/OWNERS b/chromium/content/utility/OWNERS
index a628238dc0f..651168dfc77 100644
--- a/chromium/content/utility/OWNERS
+++ b/chromium/content/utility/OWNERS
@@ -1,3 +1,6 @@
# Mac Sandbox profiles.
per-file *.sb=set noparent
per-file *.sb=rsesek@chromium.org
+
+# For service-related code
+per-file utility_service_factory.*=rockot@google.com
diff --git a/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.cc b/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.cc
index f5a34a533b7..032220900f8 100644
--- a/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.cc
+++ b/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.cc
@@ -7,67 +7,20 @@
#include "build/build_config.h"
#if defined(OS_MACOSX)
-#include "base/mac/foundation_util.h"
#include "content/child/child_process_sandbox_support_impl_mac.h"
#elif defined(OS_LINUX)
-#include "base/synchronization/lock.h"
#include "content/child/child_process_sandbox_support_impl_linux.h"
-#include "content/child/child_thread_impl.h"
-#include "services/service_manager/public/cpp/connector.h"
-#include "third_party/blink/public/platform/linux/out_of_process_font.h"
-#include "third_party/blink/public/platform/linux/web_sandbox_support.h"
#endif
-namespace blink {
-class WebSandboxSupport;
-struct OutOfProcessFont;
-struct WebFontRenderStyle;
-} // namespace blink
-
namespace content {
-#if defined(OS_LINUX)
-
-class UtilityBlinkPlatformWithSandboxSupportImpl::SandboxSupport
- : public blink::WebSandboxSupport {
- public:
- explicit SandboxSupport(sk_sp<font_service::FontLoader> font_loader)
- : font_loader_(std::move(font_loader)) {}
- ~SandboxSupport() override {}
-
- void GetFallbackFontForCharacter(
- blink::WebUChar32 character,
- const char* preferred_locale,
- blink::OutOfProcessFont* fallbackFont) override;
- void MatchFontByPostscriptNameOrFullFontName(
- const char* font_unique_name,
- blink::OutOfProcessFont* uniquely_matched_font) override;
- void GetWebFontRenderStyleForStrike(const char* family,
- int size,
- bool is_bold,
- bool is_italic,
- float device_scale_factor,
- blink::WebFontRenderStyle* out) override;
-
- private:
- // WebKit likes to ask us for the correct font family to use for a set of
- // unicode code points. It needs this information frequently so we cache it
- // here.
- base::Lock unicode_font_families_mutex_;
- // Maps unicode chars to their fallback fonts.
- std::map<int32_t, blink::OutOfProcessFont> unicode_font_families_;
- sk_sp<font_service::FontLoader> font_loader_;
-};
-
-#endif // defined(OS_LINUX)
-
UtilityBlinkPlatformWithSandboxSupportImpl::
UtilityBlinkPlatformWithSandboxSupportImpl(
service_manager::Connector* connector) {
#if defined(OS_LINUX)
font_loader_ = sk_make_sp<font_service::FontLoader>(connector);
SkFontConfigInterface::SetGlobal(font_loader_);
- sandbox_support_ = std::make_unique<SandboxSupport>(font_loader_);
+ sandbox_support_ = std::make_unique<WebSandboxSupportLinux>(font_loader_);
#elif defined(OS_MACOSX)
sandbox_support_ = std::make_unique<WebSandboxSupportMac>(connector);
#endif
@@ -85,49 +38,4 @@ UtilityBlinkPlatformWithSandboxSupportImpl::GetSandboxSupport() {
#endif
}
-#if defined(OS_LINUX)
-
-void UtilityBlinkPlatformWithSandboxSupportImpl::SandboxSupport::
- GetFallbackFontForCharacter(blink::WebUChar32 character,
- const char* preferred_locale,
- blink::OutOfProcessFont* fallback_font) {
- base::AutoLock lock(unicode_font_families_mutex_);
- const std::map<int32_t, blink::OutOfProcessFont>::const_iterator iter =
- unicode_font_families_.find(character);
- if (iter != unicode_font_families_.end()) {
- fallback_font->name = iter->second.name;
- fallback_font->filename = iter->second.filename;
- fallback_font->fontconfig_interface_id =
- iter->second.fontconfig_interface_id;
- fallback_font->ttc_index = iter->second.ttc_index;
- fallback_font->is_bold = iter->second.is_bold;
- fallback_font->is_italic = iter->second.is_italic;
- return;
- }
- content::GetFallbackFontForCharacter(font_loader_, character,
- preferred_locale, fallback_font);
- unicode_font_families_.emplace(character, *fallback_font);
-}
-
-void UtilityBlinkPlatformWithSandboxSupportImpl::SandboxSupport::
- GetWebFontRenderStyleForStrike(const char* family,
- int size,
- bool is_bold,
- bool is_italic,
- float device_scale_factor,
- blink::WebFontRenderStyle* out) {
- GetRenderStyleForStrike(font_loader_, family, size, is_bold, is_italic,
- device_scale_factor, out);
-}
-
-void UtilityBlinkPlatformWithSandboxSupportImpl::SandboxSupport::
- MatchFontByPostscriptNameOrFullFontName(
- const char* font_unique_name,
- blink::OutOfProcessFont* uniquely_matched_font) {
- content::MatchFontByPostscriptNameOrFullFontName(
- font_loader_, font_unique_name, uniquely_matched_font);
-}
-
-#endif
-
} // namespace content
diff --git a/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.h b/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.h
index 29fe2de8839..2dbbd2465cc 100644
--- a/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.h
+++ b/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.h
@@ -43,7 +43,6 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : public blink::Platform {
std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
#endif
#if defined(OS_LINUX)
- class SandboxSupport;
sk_sp<font_service::FontLoader> font_loader_;
#endif
diff --git a/chromium/content/utility/utility_main.cc b/chromium/content/utility/utility_main.cc
index c32aa0ed6dd..e01f888782f 100644
--- a/chromium/content/utility/utility_main.cc
+++ b/chromium/content/utility/utility_main.cc
@@ -25,6 +25,10 @@
#include "services/service_manager/sandbox/linux/sandbox_linux.h"
#endif
+#if defined(OS_CHROMEOS)
+#include "chromeos/services/ime/ime_sandbox_hook.h"
+#endif
+
#if defined(OS_MACOSX)
#include "base/message_loop/message_pump_mac.h"
#endif
@@ -73,12 +77,19 @@ int UtilityMain(const MainFunctionParams& parameters) {
service_manager::SandboxTypeFromCommandLine(parameters.command_line);
if (parameters.zygote_child ||
sandbox_type == service_manager::SANDBOX_TYPE_NETWORK ||
+#if defined(OS_CHROMEOS)
+ sandbox_type == service_manager::SANDBOX_TYPE_IME ||
+#endif // OS_CHROMEOS
sandbox_type == service_manager::SANDBOX_TYPE_AUDIO) {
service_manager::SandboxLinux::PreSandboxHook pre_sandbox_hook;
if (sandbox_type == service_manager::SANDBOX_TYPE_NETWORK)
pre_sandbox_hook = base::BindOnce(&network::NetworkPreSandboxHook);
else if (sandbox_type == service_manager::SANDBOX_TYPE_AUDIO)
pre_sandbox_hook = base::BindOnce(&audio::AudioPreSandboxHook);
+#if defined(OS_CHROMEOS)
+ else if (sandbox_type == service_manager::SANDBOX_TYPE_IME)
+ pre_sandbox_hook = base::BindOnce(&chromeos::ime::ImePreSandboxHook);
+#endif // OS_CHROMEOS
service_manager::Sandbox::Initialize(
sandbox_type, std::move(pre_sandbox_hook),
diff --git a/chromium/content/utility/utility_service_factory.cc b/chromium/content/utility/utility_service_factory.cc
index 009d8605091..4450cc71177 100644
--- a/chromium/content/utility/utility_service_factory.cc
+++ b/chromium/content/utility/utility_service_factory.cc
@@ -56,14 +56,6 @@
extern sandbox::TargetServices* g_utility_target_services;
#endif
-#if defined(OS_CHROMEOS)
-#include "chromeos/assistant/buildflags.h" // nogncheck
-#if BUILDFLAG(ENABLE_CROS_LIBASSISTANT)
-#include "chromeos/services/assistant/audio_decoder/assistant_audio_decoder_service.h" // nogncheck
-#include "chromeos/services/assistant/public/mojom/constants.mojom.h" // nogncheck
-#endif // BUILDFLAG(ENABLE_CROS_LIBASSISTANT)
-#endif
-
namespace content {
namespace {
@@ -109,22 +101,19 @@ class ContentCdmServiceClient final : public media::CdmService::Client {
#endif // BUILDFLAG(ENABLE_LIBRARY_CDMS)
-std::unique_ptr<service_manager::Service> CreateVizService() {
- return std::make_unique<viz::Service>();
-}
-
} // namespace
UtilityServiceFactory::UtilityServiceFactory()
: network_registry_(std::make_unique<service_manager::BinderRegistry>()),
- audio_registry_(std::make_unique<service_manager::BinderRegistry>()) {}
+ audio_registry_(std::make_unique<service_manager::BinderRegistry>()) {
+ GetContentClient()->utility()->RegisterAudioBinders(audio_registry_.get());
+}
UtilityServiceFactory::~UtilityServiceFactory() {}
-void UtilityServiceFactory::CreateService(
- service_manager::mojom::ServiceRequest request,
+bool UtilityServiceFactory::HandleServiceRequest(
const std::string& name,
- service_manager::mojom::PIDReceiverPtr pid_receiver) {
+ service_manager::mojom::ServiceRequest request) {
auto* trace_log = base::trace_event::TraceLog::GetInstance();
if (trace_log->IsProcessNameEmpty())
trace_log->set_process_name("Service: " + name);
@@ -133,40 +122,12 @@ void UtilityServiceFactory::CreateService(
"service-name", base::debug::CrashKeySize::Size32);
base::debug::SetCrashKeyString(service_name, name);
- ServiceFactory::CreateService(std::move(request), name,
- std::move(pid_receiver));
-}
-
-void UtilityServiceFactory::RegisterServices(ServiceMap* services) {
- GetContentClient()->utility()->RegisterServices(services);
-
- GetContentClient()->utility()->RegisterAudioBinders(audio_registry_.get());
-
-#if defined(OS_CHROMEOS)
-#if BUILDFLAG(ENABLE_CROS_LIBASSISTANT)
- {
- service_manager::EmbeddedServiceInfo assistant_audio_decoder_info;
- assistant_audio_decoder_info.factory = base::BindRepeating(
- &chromeos::assistant::AssistantAudioDecoderService::CreateService);
- services->emplace(chromeos::assistant::mojom::kAudioDecoderServiceName,
- assistant_audio_decoder_info);
- }
-#endif // BUILDFLAG(ENABLE_CROS_LIBASSISTANT)
-#endif
-
- service_manager::EmbeddedServiceInfo viz_info;
- viz_info.factory = base::Bind(&CreateVizService);
- services->insert(std::make_pair(viz::mojom::kVizServiceName, viz_info));
-}
-
-bool UtilityServiceFactory::HandleServiceRequest(
- const std::string& name,
- service_manager::mojom::ServiceRequest request) {
+ std::unique_ptr<service_manager::Service> service;
if (name == audio::mojom::kServiceName) {
- running_service_ = CreateAudioService(std::move(request));
+ service = CreateAudioService(std::move(request));
} else if (name == data_decoder::mojom::kServiceName) {
content::UtilityThread::Get()->EnsureBlinkInitialized();
- running_service_ =
+ service =
std::make_unique<data_decoder::DataDecoderService>(std::move(request));
} else if (name == mojom::kNetworkServiceName &&
base::FeatureList::IsEnabled(network::features::kNetworkService)) {
@@ -181,34 +142,28 @@ bool UtilityServiceFactory::HandleServiceRequest(
base::SequencedTaskRunnerHandle::Get()));
return true;
} else if (name == video_capture::mojom::kServiceName) {
- running_service_ =
- std::make_unique<video_capture::ServiceImpl>(std::move(request));
+ service = std::make_unique<video_capture::ServiceImpl>(
+ std::move(request), base::ThreadTaskRunnerHandle::Get());
+ } else if (name == viz::mojom::kVizServiceName) {
+ service = std::make_unique<viz::Service>(std::move(request));
}
#if BUILDFLAG(ENABLE_LIBRARY_CDMS)
else if (name == media::mojom::kCdmServiceName) {
- running_service_ = std::make_unique<media::CdmService>(
+ service = std::make_unique<media::CdmService>(
std::make_unique<ContentCdmServiceClient>(), std::move(request));
}
#endif // BUILDFLAG(ENABLE_LIBRARY_CDMS)
- if (!running_service_) {
- running_service_ = GetContentClient()->utility()->HandleServiceRequest(
- name, std::move(request));
- }
-
- if (running_service_) {
- // If we actually started a service for this request, make sure its
- // self-termination results in full process termination.
- running_service_->set_termination_closure(
- base::BindOnce(&TerminateThisProcess));
+ if (service) {
+ service_manager::Service::RunAsyncUntilTermination(
+ std::move(service),
+ base::BindOnce(&UtilityThread::ReleaseProcess,
+ base::Unretained(UtilityThread::Get())));
return true;
}
- return false;
-}
-
-void UtilityServiceFactory::OnServiceQuit() {
- TerminateThisProcess();
+ return GetContentClient()->utility()->HandleServiceRequest(
+ name, std::move(request));
}
void UtilityServiceFactory::OnLoadFailed() {
diff --git a/chromium/content/utility/utility_service_factory.h b/chromium/content/utility/utility_service_factory.h
index 5bc9bcaac4c..6faa61e90b5 100644
--- a/chromium/content/utility/utility_service_factory.h
+++ b/chromium/content/utility/utility_service_factory.h
@@ -13,6 +13,7 @@
#include "base/sequenced_task_runner.h"
#include "content/child/service_factory.h"
#include "services/service_manager/public/cpp/binder_registry.h"
+#include "services/service_manager/public/cpp/service.h"
#include "services/service_manager/public/mojom/service.mojom.h"
namespace content {
@@ -25,15 +26,9 @@ class UtilityServiceFactory : public ServiceFactory {
~UtilityServiceFactory() override;
// ServiceFactory overrides:
- void CreateService(
- service_manager::mojom::ServiceRequest request,
- const std::string& name,
- service_manager::mojom::PIDReceiverPtr pid_receiver) override;
- void RegisterServices(ServiceMap* services) override;
bool HandleServiceRequest(
const std::string& name,
service_manager::mojom::ServiceRequest request) override;
- void OnServiceQuit() override;
private:
void OnLoadFailed() override;
@@ -49,8 +44,6 @@ class UtilityServiceFactory : public ServiceFactory {
std::unique_ptr<service_manager::BinderRegistry> network_registry_;
std::unique_ptr<service_manager::BinderRegistry> audio_registry_;
- std::unique_ptr<service_manager::Service> running_service_;
-
DISALLOW_COPY_AND_ASSIGN(UtilityServiceFactory);
};