New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 866967 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Sep 27
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Refactor 'magic capabilities' of service manager

Project Member Reported by oksamyt@chromium.org, Jul 24

Issue description

Currently, there are some 'magic' service manager capabilities defined in
https://cs.chromium.org/chromium/src/services/service_manager/service_manager.cc :

const char kCapability_UserID[] = "service_manager:user_id";
const char kCapability_ClientProcess[] = "service_manager:client_process";
const char kCapability_InstanceName[] = "service_manager:instance_name";
const char kCapability_Singleton[] = "service_manager:singleton";
const char kCapability_AllUsers[] = "service_manager:all_users";
const char kCapability_ServiceManager[] = "service_manager:service_manager";

This notation is confusing because they are not sets of interfaces, but rather special options that are handled differently from the regular capabilities.

To make things clearer, the manifest file could have separate 'options' elements.
 
Components: Internals>Mojo
Status: Started (was: Assigned)
Project Member

Comment 4 by bugdroid1@chromium.org, Aug 24

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

commit c6a9356c56a0c6e6a99d33747bcc4e513439abc5
Author: Oksana Zhuravlova <oksamyt@chromium.org>
Date: Fri Aug 24 18:17:04 2018

Add options field to Entry

This change also adds the deserializing logic to Entry, but the options
are not used anywhere yet.

Bug:  866967 
Change-Id: Ibb66000a627ea8b4413e41bd2010a71f60db1dd4
Reviewed-on: https://chromium-review.googlesource.com/1180079
Reviewed-by: Ken Rockot <rockot@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585908}
[modify] https://crrev.com/c6a9356c56a0c6e6a99d33747bcc4e513439abc5/services/catalog/BUILD.gn
[modify] https://crrev.com/c6a9356c56a0c6e6a99d33747bcc4e513439abc5/services/catalog/entry.cc
[modify] https://crrev.com/c6a9356c56a0c6e6a99d33747bcc4e513439abc5/services/catalog/entry.h
[modify] https://crrev.com/c6a9356c56a0c6e6a99d33747bcc4e513439abc5/services/catalog/entry_unittest.cc
[add] https://crrev.com/c6a9356c56a0c6e6a99d33747bcc4e513439abc5/services/catalog/service_options.h
[modify] https://crrev.com/c6a9356c56a0c6e6a99d33747bcc4e513439abc5/services/catalog/store.cc
[modify] https://crrev.com/c6a9356c56a0c6e6a99d33747bcc4e513439abc5/services/catalog/store.h
[add] https://crrev.com/c6a9356c56a0c6e6a99d33747bcc4e513439abc5/services/catalog/test_data/options
[modify] https://crrev.com/c6a9356c56a0c6e6a99d33747bcc4e513439abc5/services/service_manager/service_manager.cc
[modify] https://crrev.com/c6a9356c56a0c6e6a99d33747bcc4e513439abc5/services/service_manager/service_manager.h

Project Member

Comment 5 by bugdroid1@chromium.org, Aug 30

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

commit e2f136e455352ef3dafa63bfefc8dd7eb2235c9b
Author: Oksana Zhuravlova <oksamyt@chromium.org>
Date: Thu Aug 30 22:22:48 2018

Convert "all_users" and "singleton" capabilities to options

This change updates the service_manager::Instance code to reference its
options_.instance_sharing value instead of "service_manager:all_users"
and "service_manager:singleton" in the "required" section of its
interface provider specs.
Tests and existing manifests were updated accordingly.

Bug:  866967 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:ios-simulator-cronet;luci.chromium.try:ios-simulator-full-configs;luci.chromium.try:linux_mojo;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win10_chromium_x64_rel_ng
Change-Id: I699ec3411b7ec84023fbb56f85186ad5519515c4
Reviewed-on: https://chromium-review.googlesource.com/1195892
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#587809}
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/ash/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chrome/app/chrome_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chrome/browser/android/download/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chrome/services/cups_ipp_validator/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chrome/services/file_util/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chrome/services/media_gallery_util/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chrome/services/printing/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chrome/services/removable_storage_writer/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chrome/services/util_win/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chrome/services/wifi_util_win/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chrome/utility/importer/profile_import_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chromeos/services/assistant/audio_decoder/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chromeos/services/ime/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/chromeos/services/secure_channel/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/components/services/font/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/components/services/heap_profiling/heap_profiling_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/components/services/patch/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/components/services/pdf_compositor/pdf_compositor_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/components/services/unzip/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/content/public/app/mojo/content_packaged_services_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/ios/web/public/app/mojo/web_packaged_services_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/audio/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/catalog/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/data_decoder/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/device/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/media_session/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/metrics/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/network/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/proxy_resolver/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/resource_coordinator/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/service_manager.cc
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/tests/connect/connect_test_singleton_app_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/tests/service_manager/BUILD.gn
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/tests/service_manager/OWNERS
[delete] https://crrev.com/67701b4162a91caf8be2e7c5270023f087599444/services/service_manager/tests/service_manager/all_users_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/tests/service_manager/embedder.cc
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/tests/service_manager/embedder_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/tests/service_manager/service_manager_unittest.cc
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/tests/service_manager/service_manager_unittest_manifest.json
[add] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/tests/service_manager/shared_instance_across_users_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/service_manager/tests/service_manager/singleton_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/shape_detection/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/test/echo/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/tracing/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/video_capture/service_manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/viz/manifest.json
[modify] https://crrev.com/e2f136e455352ef3dafa63bfefc8dd7eb2235c9b/services/ws/manifest.json

Project Member

Comment 6 by bugdroid1@chromium.org, Sep 5

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

commit 1f5eae7db451c63179233b4bee50162dd6c6de8a
Author: Oksana Zhuravlova <oksamyt@chromium.org>
Date: Wed Sep 05 19:19:08 2018

Convert "user_id" to "can_connect_to_other_services_as_any_user"

This change updates the service_manager::Instance code to reference its
options_.can_connect_to_other_services_as_any_user value instead of
"service_manager:user_id" in the "required" section of its interface
provider specs.
Tests and existing manifests were updated accordingly.

Bug:  866967 
Cq-Include-Trybots: luci.chromium.try:ios-simulator-cronet;luci.chromium.try:ios-simulator-full-configs
Change-Id: I7c6529ef8e6cb8267710dc96ee009bec4c7f352a
Reviewed-on: https://chromium-review.googlesource.com/1203714
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#588965}
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/content/public/app/mojo/content_packaged_services_manifest.json
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/ios/web/public/app/mojo/web_browser_manifest.json
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/ios/web/public/app/mojo/web_packaged_services_manifest.json
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/services/catalog/entry.cc
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/services/catalog/entry_unittest.cc
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/services/catalog/service_options.h
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/services/catalog/test_data/options
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/services/service_manager/manifest.json
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/services/service_manager/service_manager.cc
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/services/service_manager/tests/connect/connect_test_app_manifest.json
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/services/service_manager/tests/connect/connect_test_sandboxed_app_manifest.json
[modify] https://crrev.com/1f5eae7db451c63179233b4bee50162dd6c6de8a/services/service_manager/tests/connect/connect_unittests_manifest.json

Project Member

Comment 7 by bugdroid1@chromium.org, Sep 7

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

commit bed2a3f63f2571b8b11d1db72291f569456d031f
Author: Oksana Zhuravlova <oksamyt@chromium.org>
Date: Fri Sep 07 04:23:38 2018

Convert "instance_name" to "can_connect_to_other_services_with_any_instance_name"

This change updates the service_manager::Instance code to reference its
options_.can_connect_to_other_services_with_any_instance_name value
instead of "service_manager:instance_name" in the "required" section
of its interface provider specs.
Tests and existing manifests were updated accordingly.

Bug:  866967 
Cq-Include-Trybots: luci.chromium.try:ios-simulator-cronet;luci.chromium.try:ios-simulator-full-configs
Change-Id: I7811919f86470cb098d588710e9aa3f2dd497e32
Reviewed-on: https://chromium-review.googlesource.com/1208710
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589428}
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/chrome/app/chrome_manifest.json
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/ios/web/public/app/mojo/web_browser_manifest.json
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/services/catalog/entry.cc
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/services/catalog/entry_unittest.cc
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/services/catalog/service_options.h
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/services/catalog/test_data/options
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/services/service_manager/manifest.json
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/services/service_manager/service_manager.cc
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/services/service_manager/tests/connect/connect_unittests_manifest.json
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/services/service_manager/tests/lifecycle/lifecycle_unittest_manifest.json
[modify] https://crrev.com/bed2a3f63f2571b8b11d1db72291f569456d031f/services/service_manager/tests/service_manager/service_manager_unittest_manifest.json

Project Member

Comment 8 by bugdroid1@chromium.org, Sep 13

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

commit 0b39253a584366cc647ddf9273f614d6e33856ed
Author: Oksana Zhuravlova <oksamyt@chromium.org>
Date: Thu Sep 13 18:52:58 2018

Convert "client_process" to "instance_for_client_process"

This change updates the service_manager::Instance code to reference its
options_.instance_for_client_process value
instead of "service_manager:client_process" in the "required" section
of its interface provider specs.
This change also removes services/service_manager/manifest.json. The
options will be documented separately.
Tests and existing manifests were updated accordingly.

Bug:  866967 
Cq-Include-Trybots: luci.chromium.try:ios-simulator-cronet;luci.chromium.try:ios-simulator-full-configs
Change-Id: Id1b1bbb520657c475beb0c2c2e4ec0fe6ef87da4
Reviewed-on: https://chromium-review.googlesource.com/1213307
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#591092}
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/chrome/app/chrome_manifest.json
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/content/public/app/mojo/content_packaged_services_manifest.json
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/ios/web/public/app/mojo/web_browser_manifest.json
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/ios/web/public/app/mojo/web_packaged_services_manifest.json
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/services/catalog/entry.cc
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/services/catalog/entry_unittest.cc
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/services/catalog/service_options.h
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/services/catalog/test_data/options
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/services/service_manager/BUILD.gn
[delete] https://crrev.com/4836b79eb910af73f02de607abb0b6ab0ad5b544/services/service_manager/manifest.json
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/services/service_manager/service_manager.cc
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/services/service_manager/tests/lifecycle/lifecycle_unittest_manifest.json
[modify] https://crrev.com/0b39253a584366cc647ddf9273f614d6e33856ed/services/service_manager/tests/service_manager/service_manager_unittest_manifest.json

Project Member

Comment 9 by bugdroid1@chromium.org, Sep 24

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

commit bfb929373ea314243ec640015042bd9f03706b80
Author: Oksana Zhuravlova <oksamyt@chromium.org>
Date: Mon Sep 24 20:08:52 2018

Add a documentation page for service manifests

This change adds a page describing the manifest file structure and
focuses on the options field that replaced "magic" service_manager
capabilities.

Bug:  866967 
Change-Id: I4fbf53b8e3f821cb67c3133b21c8521a7536e429
Reviewed-on: https://chromium-review.googlesource.com/1227229
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593654}
[add] https://crrev.com/bfb929373ea314243ec640015042bd9f03706b80/services/service_manager/service_manifests.md

Project Member

Comment 11 by bugdroid1@chromium.org, Sep 27

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

commit abab8ec8330e5a4d539223e3d35dcc824614fd90
Author: Oksana Zhuravlova <oksamyt@chromium.org>
Date: Thu Sep 27 19:27:56 2018

Add some examples for service options in the manifest doc

This change adds examples for
can_connect_to_other_services_with_any_instance_name and
can_create_other_service_instances options, as well as capability specs.

Bug:  866967 
Change-Id: Iae17a8514a1a3be44b890a4c296a57085302174d
Reviewed-on: https://chromium-review.googlesource.com/1244823
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594813}
[modify] https://crrev.com/abab8ec8330e5a4d539223e3d35dcc824614fd90/services/service_manager/service_manifests.md

Status: Fixed (was: Started)

Sign in to add a comment