New issue
Advanced search Search tips

Issue 855021 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jul 6
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocking:
issue 839344



Sign in to add a comment

Move FontConfig Sandbox IPC calls over to Mojo

Project Member Reported by drott@chromium.org, Jun 21 2018

Issue description

After FontService is extended with methods previously available in FontConfig sandbox IPC, move the Blink calls over to the service, running in a utility process.

More details in design doc in issue 839344.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jul 4

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b993e42cacf1ed4454b4df62dfacf8eee2bec869

commit b993e42cacf1ed4454b4df62dfacf8eee2bec869
Author: Dominik Röttsches <drott@chromium.org>
Date: Wed Jul 04 12:12:47 2018

Move Blink Sandbox IPC to Mojo Calls

Instead of Chromium IPC macro-defined messages or Mojo, Chrome on Linux
uses hand-pickled IPC messages through a special purpose file descriptor
to send messages from the renderer to the browser host in order to
access FontConfig for font matching and font fallback. This system is
described in docs/linux_sandbox_ipc.md.

For the "Font Matching by Full Font Name / PS Name" effort, see issue
828317, additional out of process font methods are needed. Instead of
adding them to this legacy hand-written IPC, we modernize the Linux
Sandbox IPC mechanism and upgrade it to using Mojo interface definitions
and a service architecture, in which a font service running in an
unsandboxed utility process answers FontConfig requests from the
renderer.

Previous CLs [1], [2] prepared the Font Service to have testing and
additional font fallback and render-style-for-strike methods. Now we can
move Blink over to using this Mojo interface and remove the traditional
sandbox IPC handlers since we do not use the file descriptor based IPC
anymore for FontConfig acces.

For more details, please refer to the design doc in issue 839344.

[1] https://chromium-review.googlesource.com/c/chromium/src/+/1091754
[2] https://chromium-review.googlesource.com/c/chromium/src/+/1087951

Bug:  855021 
Change-Id: I0f30a726621026566f50402afed00c92940b702c
Reviewed-on: https://chromium-review.googlesource.com/1109964
Commit-Queue: Dominik Röttsches <drott@chromium.org>
Reviewed-by: Sami Kyöstilä <skyostil@chromium.org>
Reviewed-by: Michael Giuffrida <michaelpg@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Luke Halliwell <halliwell@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#572540}
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/chrome/app/generated_resources.grd
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/chrome/browser/chrome_content_browser_client.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/chrome/renderer/pepper/pepper_flash_font_file_host.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/chrome/renderer/pepper/pepper_flash_font_file_host.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/chrome/utility/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/chromecast/browser/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/chromecast/browser/DEPS
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/chromecast/browser/cast_content_browser_client.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/chromecast/browser/cast_content_browser_client.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/components/services/font/public/cpp/font_service_thread.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/DEPS
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/app/content_main_runner_impl.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/browser/BUILD.gn
[delete] https://crrev.com/b994c6cdac2e493bd1cdd344deb822dd20f2d5b7/content/browser/linux_ipc_browsertest.cc
[delete] https://crrev.com/b994c6cdac2e493bd1cdd344deb822dd20f2d5b7/content/browser/renderer_host/font_utils_linux.cc
[delete] https://crrev.com/b994c6cdac2e493bd1cdd344deb822dd20f2d5b7/content/browser/renderer_host/font_utils_linux.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/browser/renderer_host/pepper/pepper_truetype_font_linux.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/browser/sandbox_ipc_linux.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/browser/sandbox_ipc_linux.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/child/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/child/DEPS
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/child/child_process_sandbox_support_impl_linux.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/child/child_process_sandbox_support_impl_linux.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/common/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/common/common_sandbox_support_linux.cc
[delete] https://crrev.com/b994c6cdac2e493bd1cdd344deb822dd20f2d5b7/content/common/font_config_ipc_linux.cc
[delete] https://crrev.com/b994c6cdac2e493bd1cdd344deb822dd20f2d5b7/content/common/font_config_ipc_linux.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/ppapi_plugin/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/ppapi_plugin/ppapi_blink_platform_impl.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/ppapi_plugin/ppapi_blink_platform_impl.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/public/app/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/public/app/mojo/content_plugin_manifest.json
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/public/app/mojo/content_renderer_manifest.json
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/public/app/mojo/content_utility_manifest.json
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/public/child/BUILD.gn
[delete] https://crrev.com/b994c6cdac2e493bd1cdd344deb822dd20f2d5b7/content/public/child/child_process_sandbox_support_linux.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/renderer/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/renderer/mus/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/renderer/renderer_blink_platform_impl.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/renderer/renderer_blink_platform_impl.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/renderer/renderer_main.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/shell/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/shell/browser/shell_content_browser_client.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/test/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/utility/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/utility/utility_blink_platform_with_sandbox_support_impl.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/utility/utility_blink_platform_with_sandbox_support_impl.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/utility/utility_service_factory.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/content/utility/utility_thread_impl.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/docs/linux_sandbox_ipc.md
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/extensions/shell/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/extensions/shell/browser/DEPS
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/extensions/shell/browser/shell_content_browser_client.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/extensions/shell/browser/shell_content_browser_client.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/headless/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/headless/lib/browser/DEPS
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/headless/lib/browser/headless_content_browser_client.cc
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/services/service_manager/sandbox/linux/sandbox_linux.h
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/third_party/blink/public/BUILD.gn
[modify] https://crrev.com/b993e42cacf1ed4454b4df62dfacf8eee2bec869/tools/metrics/histograms/enums.xml

Status: Fixed (was: Untriaged)
Project Member

Comment 3 by bugdroid1@chromium.org, Jul 5

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b916fccec83f726c3cfe28a3040b9caddc3fc9f6

commit b916fccec83f726c3cfe28a3040b9caddc3fc9f6
Author: Makoto Shimazu <shimazu@chromium.org>
Date: Thu Jul 05 05:18:25 2018

Revert "Move Blink Sandbox IPC to Mojo Calls"

This reverts commit b993e42cacf1ed4454b4df62dfacf8eee2bec869.

Reason for revert: MSan bot failure and find-it suggested this might be the culprit. Please see  crbug.com/860349  for detail.

Failing test: MaybeSetMetadata/SafeBrowsingServiceMetadataTest.MalwareImg/0

Original change's description:
> Move Blink Sandbox IPC to Mojo Calls
> 
> Instead of Chromium IPC macro-defined messages or Mojo, Chrome on Linux
> uses hand-pickled IPC messages through a special purpose file descriptor
> to send messages from the renderer to the browser host in order to
> access FontConfig for font matching and font fallback. This system is
> described in docs/linux_sandbox_ipc.md.
> 
> For the "Font Matching by Full Font Name / PS Name" effort, see issue
> 828317, additional out of process font methods are needed. Instead of
> adding them to this legacy hand-written IPC, we modernize the Linux
> Sandbox IPC mechanism and upgrade it to using Mojo interface definitions
> and a service architecture, in which a font service running in an
> unsandboxed utility process answers FontConfig requests from the
> renderer.
> 
> Previous CLs [1], [2] prepared the Font Service to have testing and
> additional font fallback and render-style-for-strike methods. Now we can
> move Blink over to using this Mojo interface and remove the traditional
> sandbox IPC handlers since we do not use the file descriptor based IPC
> anymore for FontConfig acces.
> 
> For more details, please refer to the design doc in issue 839344.
> 
> [1] https://chromium-review.googlesource.com/c/chromium/src/+/1091754
> [2] https://chromium-review.googlesource.com/c/chromium/src/+/1087951
> 
> Bug:  855021 
> Change-Id: I0f30a726621026566f50402afed00c92940b702c
> Reviewed-on: https://chromium-review.googlesource.com/1109964
> Commit-Queue: Dominik Röttsches <drott@chromium.org>
> Reviewed-by: Sami Kyöstilä <skyostil@chromium.org>
> Reviewed-by: Michael Giuffrida <michaelpg@chromium.org>
> Reviewed-by: Robert Sesek <rsesek@chromium.org>
> Reviewed-by: Luke Halliwell <halliwell@chromium.org>
> Reviewed-by: Lei Zhang <thestig@chromium.org>
> Reviewed-by: Antoine Labour <piman@chromium.org>
> Reviewed-by: Emil A Eklund <eae@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#572540}

TBR=rkc@chromium.org,thestig@chromium.org,michaelpg@chromium.org,eae@chromium.org,skyostil@chromium.org,servolk@chromium.org,slan@chromium.org,drott@chromium.org,halliwell@chromium.org,rsesek@chromium.org,piman@chromium.org

Change-Id: I290a80ed3f36443d91ec7e082d42f01871ffdba9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  855021 ,  860349 
Reviewed-on: https://chromium-review.googlesource.com/1126719
Reviewed-by: Makoto Shimazu <shimazu@chromium.org>
Commit-Queue: Makoto Shimazu <shimazu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#572709}
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/chrome/app/generated_resources.grd
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/chrome/browser/chrome_content_browser_client.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/chrome/renderer/pepper/pepper_flash_font_file_host.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/chrome/renderer/pepper/pepper_flash_font_file_host.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/chrome/utility/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/chromecast/browser/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/chromecast/browser/DEPS
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/chromecast/browser/cast_content_browser_client.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/chromecast/browser/cast_content_browser_client.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/components/services/font/public/cpp/font_service_thread.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/DEPS
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/app/content_main_runner_impl.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/browser/BUILD.gn
[add] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/browser/linux_ipc_browsertest.cc
[add] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/browser/renderer_host/font_utils_linux.cc
[add] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/browser/renderer_host/font_utils_linux.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/browser/renderer_host/pepper/pepper_truetype_font_linux.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/browser/sandbox_ipc_linux.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/browser/sandbox_ipc_linux.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/child/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/child/DEPS
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/child/child_process_sandbox_support_impl_linux.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/child/child_process_sandbox_support_impl_linux.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/common/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/common/common_sandbox_support_linux.cc
[add] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/common/font_config_ipc_linux.cc
[add] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/common/font_config_ipc_linux.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/ppapi_plugin/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/ppapi_plugin/ppapi_blink_platform_impl.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/ppapi_plugin/ppapi_blink_platform_impl.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/public/app/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/public/app/mojo/content_plugin_manifest.json
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/public/app/mojo/content_renderer_manifest.json
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/public/app/mojo/content_utility_manifest.json
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/public/child/BUILD.gn
[add] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/public/child/child_process_sandbox_support_linux.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/renderer/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/renderer/mus/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/renderer/renderer_blink_platform_impl.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/renderer/renderer_blink_platform_impl.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/renderer/renderer_main.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/shell/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/shell/browser/shell_content_browser_client.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/test/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/utility/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/utility/utility_blink_platform_with_sandbox_support_impl.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/utility/utility_blink_platform_with_sandbox_support_impl.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/utility/utility_service_factory.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/content/utility/utility_thread_impl.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/docs/linux_sandbox_ipc.md
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/extensions/shell/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/extensions/shell/browser/DEPS
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/extensions/shell/browser/shell_content_browser_client.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/extensions/shell/browser/shell_content_browser_client.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/headless/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/headless/lib/browser/DEPS
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/headless/lib/browser/headless_content_browser_client.cc
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/services/service_manager/sandbox/linux/sandbox_linux.h
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/third_party/blink/public/BUILD.gn
[modify] https://crrev.com/b916fccec83f726c3cfe28a3040b9caddc3fc9f6/tools/metrics/histograms/enums.xml

Owner: drott@chromium.org
Status: Assigned (was: Fixed)
Project Member

Comment 5 by bugdroid1@chromium.org, Jul 6

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ac24004e3831e8a63a80c90cffbcbdd52b398e7c

commit ac24004e3831e8a63a80c90cffbcbdd52b398e7c
Author: Dominik Röttsches <drott@chromium.org>
Date: Fri Jul 06 09:52:40 2018

Move Blink Sandbox IPC to Mojo Calls

This is a reland of
https://chromium-review.googlesource.com/c/chromium/src/+/1109964
Tbr'ing previous reviewers from that CL as the exact change has been
previously reviewed there.

The revert was done manually in response to flakiness of viz_browser
tests in MSAN. See issue  https://crbug.com/860349  - my analysis is in
issue  https://crbug.com/860445  where I disable this test. In short, I
believe my CL exposed a previously existing race condition in that test.

Instead of Chromium IPC macro-defined messages or Mojo, Chrome on Linux
uses hand-pickled IPC messages through a special purpose file descriptor
to send messages from the renderer to the browser host in order to
access FontConfig for font matching and font fallback. This system is
described in docs/linux_sandbox_ipc.md.

For the "Font Matching by Full Font Name / PS Name" effort, see issue
828317, additional out of process font methods are needed. Instead of
adding them to this legacy hand-written IPC, we modernize the Linux
Sandbox IPC mechanism and upgrade it to using Mojo interface definitions
and a service architecture, in which a font service running in an
unsandboxed utility process answers FontConfig requests from the
renderer.

Previous CLs [1], [2] prepared the Font Service to have testing and
additional font fallback and render-style-for-strike methods. Now we can
move Blink over to using this Mojo interface and remove the traditional
sandbox IPC handlers since we do not use the file descriptor based IPC
anymore for FontConfig acces.

For more details, please refer to the design doc in issue 839344.

[1] https://chromium-review.googlesource.com/c/chromium/src/+/1091754
[2] https://chromium-review.googlesource.com/c/chromium/src/+/1087951

Bug:  855021 
Change-Id: I74663c5685a7797089e4d69354453146c245e20a
Tbr: skyostil@chromium.org, michaelpg@chromium.org, rsesek@chromium.org, halliwell@chromium.org, thestig@chromium.org, piman@chromium.org, eae@chromium.org
Reviewed-on: https://chromium-review.googlesource.com/1127028
Commit-Queue: Dominik Röttsches <drott@chromium.org>
Reviewed-by: Dominik Röttsches <drott@chromium.org>
Cr-Commit-Position: refs/heads/master@{#572930}
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/chrome/app/generated_resources.grd
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/chrome/browser/chrome_content_browser_client.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/chrome/renderer/pepper/pepper_flash_font_file_host.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/chrome/renderer/pepper/pepper_flash_font_file_host.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/chrome/utility/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/chromecast/browser/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/chromecast/browser/DEPS
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/chromecast/browser/cast_content_browser_client.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/chromecast/browser/cast_content_browser_client.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/components/services/font/public/cpp/font_service_thread.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/DEPS
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/app/content_main_runner_impl.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/browser/BUILD.gn
[delete] https://crrev.com/48898fe7be280b5a8395e152ed097803bb007e80/content/browser/linux_ipc_browsertest.cc
[delete] https://crrev.com/48898fe7be280b5a8395e152ed097803bb007e80/content/browser/renderer_host/font_utils_linux.cc
[delete] https://crrev.com/48898fe7be280b5a8395e152ed097803bb007e80/content/browser/renderer_host/font_utils_linux.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/browser/renderer_host/pepper/pepper_truetype_font_linux.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/browser/sandbox_ipc_linux.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/browser/sandbox_ipc_linux.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/child/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/child/DEPS
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/child/child_process_sandbox_support_impl_linux.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/child/child_process_sandbox_support_impl_linux.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/common/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/common/common_sandbox_support_linux.cc
[delete] https://crrev.com/48898fe7be280b5a8395e152ed097803bb007e80/content/common/font_config_ipc_linux.cc
[delete] https://crrev.com/48898fe7be280b5a8395e152ed097803bb007e80/content/common/font_config_ipc_linux.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/ppapi_plugin/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/ppapi_plugin/ppapi_blink_platform_impl.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/ppapi_plugin/ppapi_blink_platform_impl.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/public/app/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/public/app/mojo/content_plugin_manifest.json
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/public/app/mojo/content_renderer_manifest.json
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/public/app/mojo/content_utility_manifest.json
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/public/child/BUILD.gn
[delete] https://crrev.com/48898fe7be280b5a8395e152ed097803bb007e80/content/public/child/child_process_sandbox_support_linux.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/renderer/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/renderer/mus/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/renderer/renderer_blink_platform_impl.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/renderer/renderer_blink_platform_impl.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/renderer/renderer_main.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/shell/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/shell/browser/shell_content_browser_client.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/test/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/utility/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/utility/utility_blink_platform_with_sandbox_support_impl.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/utility/utility_blink_platform_with_sandbox_support_impl.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/utility/utility_service_factory.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/content/utility/utility_thread_impl.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/docs/linux_sandbox_ipc.md
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/extensions/shell/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/extensions/shell/browser/DEPS
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/extensions/shell/browser/shell_content_browser_client.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/extensions/shell/browser/shell_content_browser_client.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/headless/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/headless/lib/browser/DEPS
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/headless/lib/browser/headless_content_browser_client.cc
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/services/service_manager/sandbox/linux/sandbox_linux.h
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/third_party/blink/public/BUILD.gn
[modify] https://crrev.com/ac24004e3831e8a63a80c90cffbcbdd52b398e7c/tools/metrics/histograms/enums.xml

Status: Fixed (was: Assigned)
Project Member

Comment 7 by bugdroid1@chromium.org, Jul 10

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7a295c6bc010da82d3c027493d22f0bf3a014638

commit 7a295c6bc010da82d3c027493d22f0bf3a014638
Author: Ken Rockot <rockot@chromium.org>
Date: Tue Jul 10 20:42:42 2018

Fix font_service registration on Linux

r572930 landed a bunch of changes to have font_service registered on
the Linux platform to support all sandboxed font config usage.

There are a few problems with how this was done, namely:

- It was not necessary to register the service individually with each
  content embedder's implementation of ContentBrowserClient. Instead
  registration should simply be done in content's
  ServiceManagerContext (which calls out to ContentBrowserClient only
  to support registrations content itself can't know about, as is the
  purpose of all Content*Client APIs).

- There are quite a few superfluous DEPS and GN deps entries that were
  added by the CL.

This CL fixes that stuff.

Bug:  855021 
Change-Id: Ica2b023a06763f2442c4e2dce76bf23426547e62
Reviewed-on: https://chromium-review.googlesource.com/1130466
Commit-Queue: Ken Rockot <rockot@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Rahul Chaturvedi <rkc@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Reviewed-by: Luke Halliwell <halliwell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#573895}
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/chrome/app/generated_resources.grd
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/chrome/browser/chrome_content_browser_client.cc
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/chrome/utility/BUILD.gn
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/chrome/utility/DEPS
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/chrome/utility/mash_service_factory.cc
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/chromecast/browser/BUILD.gn
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/chromecast/browser/DEPS
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/chromecast/browser/cast_content_browser_client.cc
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/chromecast/browser/cast_content_browser_client.h
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/DEPS
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/app/strings/content_strings.grd
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/browser/BUILD.gn
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/browser/DEPS
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/browser/service_manager/service_manager_context.cc
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/child/BUILD.gn
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/child/DEPS
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/renderer/BUILD.gn
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/shell/BUILD.gn
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/shell/browser/shell_content_browser_client.cc
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/content/utility/DEPS
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/extensions/shell/BUILD.gn
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/extensions/shell/browser/DEPS
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/extensions/shell/browser/shell_content_browser_client.cc
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/extensions/shell/browser/shell_content_browser_client.h
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/headless/BUILD.gn
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/headless/lib/browser/DEPS
[modify] https://crrev.com/7a295c6bc010da82d3c027493d22f0bf3a014638/headless/lib/browser/headless_content_browser_client.cc

Cc: jbudorick@chromium.org
 Issue 807272  has been merged into this issue.

Sign in to add a comment