Commit e2f136e4 authored by Oksana Zhuravlova's avatar Oksana Zhuravlova Committed by Commit Bot

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/1195892Reviewed-by: default avatarTom Sepez <tsepez@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#587809}
parent 67701b41
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
"name": "ash", "name": "ash",
"display_name": "Ash Window Manager and Shell", "display_name": "Ash Window Manager and Shell",
"sandbox_type": "none", "sandbox_type": "none",
"options" : {
"instance_sharing" : "singleton"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -68,7 +71,6 @@ ...@@ -68,7 +71,6 @@
"local_state": [ "pref_client" ], "local_state": [ "pref_client" ],
"multidevice_setup": [ "multidevice_setup" ], "multidevice_setup": [ "multidevice_setup" ],
"quick_launch_app": [ "mash:launchable" ], "quick_launch_app": [ "mash:launchable" ],
"service_manager": [ "service_manager:singleton" ],
"ui": [ "ui": [
"ozone", "ozone",
"window_manager" "window_manager"
......
{ {
"name": "chrome", "name": "chrome",
"display_name": "Chrome", "display_name": "Chrome",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -21,7 +24,6 @@ ...@@ -21,7 +24,6 @@
"requires": { "requires": {
"chrome_renderer": [ "browser" ], "chrome_renderer": [ "browser" ],
"service_manager": [ "service_manager": [
"service_manager:all_users",
"service_manager:client_process", "service_manager:client_process",
"service_manager:instance_name" "service_manager:instance_name"
] ]
......
...@@ -3,12 +3,14 @@ ...@@ -3,12 +3,14 @@
{ {
"name": "download_manager", "name": "download_manager",
"display_name": "Download Manager", "display_name": "Download Manager",
"options" : {
"instance_sharing" : "singleton"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": {}, "provides": {},
"requires": { "requires": {
"network": [ "network_service"], "network": [ "network_service"]
"service_manager": [ "service_manager:singleton" ]
} }
} }
} }
......
{ {
"name": "cups_ipp_validator", "name": "cups_ipp_validator",
"display_name": "CUPS IPP Validator", "display_name": "CUPS IPP Validator",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"sandbox_type": "utility", "sandbox_type": "utility",
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"ipp_validator": [ "chrome.mojom.IppValidator" ] "ipp_validator": [ "chrome.mojom.IppValidator" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
"name": "file_util", "name": "file_util",
"display_name": "Chrome File Utilities", "display_name": "Chrome File Utilities",
"sandbox_type": "utility", "sandbox_type": "utility",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"analyze_archive": [ "chrome.mojom.SafeArchiveAnalyzer" ], "analyze_archive": [ "chrome.mojom.SafeArchiveAnalyzer" ],
"zip_file": [ "chrome.mojom.ZipFileCreator" ] "zip_file": [ "chrome.mojom.ZipFileCreator" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
"name": "media_gallery_util", "name": "media_gallery_util",
"display_name": "Chrome Media Gallery Utilities", "display_name": "Chrome Media Gallery Utilities",
"sandbox_type": "utility", "sandbox_type": "utility",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"parse_media": [ "chrome.mojom.MediaParserFactory" ] "parse_media": [ "chrome.mojom.MediaParserFactory" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
"name": "chrome_printing", "name": "chrome_printing",
"display_name": "Printing", "display_name": "Printing",
"sandbox_type": "utility", "sandbox_type": "utility",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -9,9 +12,6 @@ ...@@ -9,9 +12,6 @@
"printing.mojom.PdfNupConverter", "printing.mojom.PdfNupConverter",
"printing.mojom.PdfToEmfConverterFactory", "printing.mojom.PdfToEmfConverterFactory",
"printing.mojom.PdfToPwgRasterConverter" ] "printing.mojom.PdfToPwgRasterConverter" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
"name": "removable_storage_writer", "name": "removable_storage_writer",
"display_name": "Removable Storage Writer", "display_name": "Removable Storage Writer",
"sandbox_type": "none_and_elevated", "sandbox_type": "none_and_elevated",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"removable_storage_writer": [ "chrome.mojom.RemovableStorageWriter" ] "removable_storage_writer": [ "chrome.mojom.RemovableStorageWriter" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
"name": "util_win", "name": "util_win",
"display_name": "Windows Utilities", "display_name": "Windows Utilities",
"sandbox_type": "none", "sandbox_type": "none",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"shell_util_win": [ "chrome.mojom.ShellUtilWin" ] "shell_util_win": [ "chrome.mojom.ShellUtilWin" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
"name": "wifi_util_win", "name": "wifi_util_win",
"display_name": "Windows WiFi Utilities", "display_name": "Windows WiFi Utilities",
"sandbox_type": "none_and_elevated", "sandbox_type": "none_and_elevated",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"wifi_credentials": [ "chrome.mojom.WiFiCredentialsGetter" ] "wifi_credentials": [ "chrome.mojom.WiFiCredentialsGetter" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
"name": "profile_import", "name": "profile_import",
"display_name": "Profile Import", "display_name": "Profile Import",
"sandbox_type": "none", "sandbox_type": "none",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"import": [ "chrome.mojom.ProfileImport" ] "import": [ "chrome.mojom.ProfileImport" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
"name": "assistant_audio_decoder", "name": "assistant_audio_decoder",
"display_name": "Assistant Audio Decoder Service", "display_name": "Assistant Audio Decoder Service",
"sandbox_type": "utility", "sandbox_type": "utility",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"assistant:audio_decoder": [ "chromeos.assistant.mojom.AssistantAudioDecoderFactory" ] "assistant:audio_decoder": [ "chromeos.assistant.mojom.AssistantAudioDecoderFactory" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
"name": "ime", "name": "ime",
"display_name": "IME", "display_name": "IME",
"sandbox_type": "utility", "sandbox_type": "utility",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -9,9 +12,6 @@ ...@@ -9,9 +12,6 @@
"chromeos.ime.mojom.InputEngineManager", "chromeos.ime.mojom.InputEngineManager",
"chromeos.ime.mojom.InputChannel" "chromeos.ime.mojom.InputChannel"
] ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
{ {
"name": "secure_channel", "name": "secure_channel",
"display_name": "SecureChannel Service", "display_name": "SecureChannel Service",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"secure_channel": [ "chromeos.secure_channel.mojom.SecureChannel" ] "secure_channel": [ "chromeos.secure_channel.mojom.SecureChannel" ]
}, }
"requires": {
"service_manager": [ "service_manager:all_users" ]
}
} }
} }
} }
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
"name": "font_service", "name": "font_service",
"display_name": "Font Service", "display_name": "Font Service",
"sandbox_type": "none", "sandbox_type": "none",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"font_service": [ "font_service.mojom.FontService" ] "font_service": [ "font_service.mojom.FontService" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
"name": "heap_profiling", "name": "heap_profiling",
"display_name": "Heap Profiling Service", "display_name": "Heap Profiling Service",
"sandbox_type": "profiling", "sandbox_type": "profiling",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -10,8 +13,7 @@ ...@@ -10,8 +13,7 @@
}, },
"requires": { "requires": {
"*": [ "app" ], "*": [ "app" ],
"resource_coordinator": [ "heap_profiler_helper" ], "resource_coordinator": [ "heap_profiler_helper" ]
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
"name": "patch_service", "name": "patch_service",
"display_name": "Patch Service", "display_name": "Patch Service",
"sandbox_type": "utility", "sandbox_type": "utility",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"patch_file": [ "patch.mojom.FilePatcher" ] "patch_file": [ "patch.mojom.FilePatcher" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
"name": "pdf_compositor", "name": "pdf_compositor",
"display_name": "PDF Compositor Service", "display_name": "PDF Compositor Service",
"sandbox_type": "pdf_compositor", "sandbox_type": "pdf_compositor",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -10,7 +13,6 @@ ...@@ -10,7 +13,6 @@
"requires": { "requires": {
"*": [ "app" ], "*": [ "app" ],
"content_browser": [ "font_loader" ], "content_browser": [ "font_loader" ],
"service_manager": [ "service_manager:all_users" ],
"ui": [ "discardable_memory" ] "ui": [ "discardable_memory" ]
} }
} }
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
"name": "unzip_service", "name": "unzip_service",
"display_name": "Unzip Service", "display_name": "Unzip Service",
"sandbox_type": "utility", "sandbox_type": "utility",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"unzip_file": [ "unzip.mojom.Unzipper" ] "unzip_file": [ "unzip.mojom.Unzipper" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
{ {
"name": "content_packaged_services", "name": "content_packaged_services",
"display_name": "Content Packaged Services", "display_name": "Content Packaged Services",
"options" : {
"instance_sharing" : "singleton"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -20,7 +23,6 @@ ...@@ -20,7 +23,6 @@
"content_browser": [], "content_browser": [],
"service_manager": [ "service_manager": [
"service_manager:client_process", "service_manager:client_process",
"service_manager:singleton",
"service_manager:user_id" "service_manager:user_id"
] ]
} }
......
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
{ {
"name": "web_packaged_services", "name": "web_packaged_services",
"display_name": "Web Packaged Services", "display_name": "Web Packaged Services",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -18,7 +21,6 @@ ...@@ -18,7 +21,6 @@
"requires": { "requires": {
"web_browser": [], "web_browser": [],
"service_manager": [ "service_manager": [
"service_manager:all_users",
"service_manager:client_process", "service_manager:client_process",
"service_manager:user_id" "service_manager:user_id"
] ]
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
"name": "audio", "name": "audio",
"display_name": "Audio", "display_name": "Audio",
"sandbox_type": "audio", "sandbox_type": "audio",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -11,9 +14,6 @@ ...@@ -11,9 +14,6 @@
"device_notifier": [ "audio.mojom.DeviceNotifier" ], "device_notifier": [ "audio.mojom.DeviceNotifier" ],
"log_factory_manager": [ "audio.mojom.LogFactoryManager" ], "log_factory_manager": [ "audio.mojom.LogFactoryManager" ],
"testing_api": [ "audio.mojom.TestingApi" ] "testing_api": [ "audio.mojom.TestingApi" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
{ {
"name": "catalog", "name": "catalog",
"display_name": "Application Resolver", "display_name": "Application Resolver",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
// NOTE: This manifest is for documentation purposes only. Relevant // NOTE: This manifest is for documentation purposes only. Relevant
// capability spec is defined inline in the ServiceManager implementation. // capability spec is defined inline in the ServiceManager implementation.
...@@ -11,9 +14,6 @@ ...@@ -11,9 +14,6 @@
"provides": { "provides": {
"directory": [ "filesystem.mojom.Directory" ], "directory": [ "filesystem.mojom.Directory" ],
"control": [ "catalog.mojom.CatalogControl" ] "control": [ "catalog.mojom.CatalogControl" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
{ {
"name": "data_decoder", "name": "data_decoder",
"display_name": "Data Decoder Service", "display_name": "Data Decoder Service",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"image_decoder": [ "data_decoder.mojom.ImageDecoder" ], "image_decoder": [ "data_decoder.mojom.ImageDecoder" ],
"json_parser": [ "data_decoder.mojom.JsonParser" ], "json_parser": [ "data_decoder.mojom.JsonParser" ],
"xml_parser": [ "data_decoder.mojom.XmlParser" ] "xml_parser": [ "data_decoder.mojom.XmlParser" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
{ {
"name": "device", "name": "device",
"display_name": "Device Service", "display_name": "Device Service",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -24,9 +27,6 @@ ...@@ -24,9 +27,6 @@
"device:time_zone_monitor": [ "device.mojom.TimeZoneMonitor" ], "device:time_zone_monitor": [ "device.mojom.TimeZoneMonitor" ],
"device:vibration": [ "device.mojom.VibrationManager" ], "device:vibration": [ "device.mojom.VibrationManager" ],
"device:wake_lock": [ "device.mojom.WakeLockProvider" ] "device:wake_lock": [ "device.mojom.WakeLockProvider" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
{ {
"name": "media_session", "name": "media_session",
"display_name": "Media Session Service", "display_name": "Media Session Service",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -8,11 +11,6 @@ ...@@ -8,11 +11,6 @@
"media_session.mojom.AudioFocus" "media_session.mojom.AudioFocus"
], ],
"tests": [ "*" ] "tests": [ "*" ]
},
"requires": {
"service_manager": [
"service_manager:all_users"
]
} }
} }
} }
......
{ {
"name": "metrics", "name": "metrics",
"display_name": "Metrics Service", "display_name": "Metrics Service",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"url_keyed_metrics": [ "url_keyed_metrics": [
"ukm.mojom.UkmRecorderInterface" "ukm.mojom.UkmRecorderInterface"
] ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
"name": "network", "name": "network",
"display_name": "Network Service", "display_name": "Network Service",
"sandbox_type": "network", "sandbox_type": "network",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -14,9 +17,6 @@ ...@@ -14,9 +17,6 @@
"url_loader": [ "url_loader": [
"network.mojom.URLLoaderFactory" "network.mojom.URLLoaderFactory"
] ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
{ {
"name": "proxy_resolver", "name": "proxy_resolver",
"display_name": "Proxy resolver", "display_name": "Proxy resolver",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"factory": [ "proxy_resolver.mojom.ProxyResolverFactory" ] "factory": [ "proxy_resolver.mojom.ProxyResolverFactory" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
{ {
"name": "resource_coordinator", "name": "resource_coordinator",
"display_name": "Global Resource Coordinator", "display_name": "Global Resource Coordinator",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -17,7 +20,6 @@ ...@@ -17,7 +20,6 @@
}, },
"requires": { "requires": {
"service_manager": [ "service_manager": [
"service_manager:all_users",
"service_manager:service_manager" "service_manager:service_manager"
], ],
"metrics": [ "metrics": [
......
...@@ -19,9 +19,6 @@ ...@@ -19,9 +19,6 @@
// Clients requesting this class are allowed to connect to other clients // Clients requesting this class are allowed to connect to other clients
// in specific process instance groups. // in specific process instance groups.
"service_manager:instance_name": [ ], "service_manager:instance_name": [ ],
// Clients requesting this class are run as a unique user id which is
// visible to clients run as any user.
"service_manager:all_users": [ ],
"service_manager:block_wildcard": [ ], "service_manager:block_wildcard": [ ],
"service_manager:service_manager": [ "service_manager:service_manager": [
......
...@@ -50,8 +50,6 @@ namespace { ...@@ -50,8 +50,6 @@ namespace {
const char kCapability_UserID[] = "service_manager:user_id"; const char kCapability_UserID[] = "service_manager:user_id";
const char kCapability_ClientProcess[] = "service_manager:client_process"; const char kCapability_ClientProcess[] = "service_manager:client_process";
const char kCapability_InstanceName[] = "service_manager:instance_name"; 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"; const char kCapability_ServiceManager[] = "service_manager:service_manager";
bool Succeeded(mojom::ConnectResult result) { bool Succeeded(mojom::ConnectResult result) {
...@@ -115,20 +113,6 @@ Identity CreateCatalogIdentity() { ...@@ -115,20 +113,6 @@ Identity CreateCatalogIdentity() {
return Identity(catalog::mojom::kServiceName, mojom::kRootUserID); return Identity(catalog::mojom::kServiceName, mojom::kRootUserID);
} }
InterfaceProviderSpec CreatePermissiveInterfaceProviderSpec() {
InterfaceProviderSpec spec;
InterfaceSet interfaces;
interfaces.insert("*");
spec.requires["*"] = std::move(interfaces);
return spec;
}
const InterfaceProviderSpec& GetPermissiveInterfaceProviderSpec() {
CR_DEFINE_STATIC_LOCAL(InterfaceProviderSpec, spec,
(CreatePermissiveInterfaceProviderSpec()));
return spec;
}
const InterfaceProviderSpec& GetEmptyInterfaceProviderSpec() { const InterfaceProviderSpec& GetEmptyInterfaceProviderSpec() {
CR_DEFINE_STATIC_LOCAL(InterfaceProviderSpec, spec, ()); CR_DEFINE_STATIC_LOCAL(InterfaceProviderSpec, spec, ());
return spec; return spec;
...@@ -211,12 +195,12 @@ class ServiceManager::Instance ...@@ -211,12 +195,12 @@ class ServiceManager::Instance
Instance(service_manager::ServiceManager* service_manager, Instance(service_manager::ServiceManager* service_manager,
const Identity& identity, const Identity& identity,
const InterfaceProviderSpecMap& interface_provider_specs, const InterfaceProviderSpecMap& interface_provider_specs,
// TODO(crbug.com/866967) this parameter will be used in the future
const catalog::ServiceOptions& options) const catalog::ServiceOptions& options)
: service_manager_(service_manager), : service_manager_(service_manager),
id_(GenerateUniqueID()), id_(GenerateUniqueID()),
identity_(identity), identity_(identity),
interface_provider_specs_(interface_provider_specs), interface_provider_specs_(interface_provider_specs),
options_(options),
allow_any_application_(GetConnectionSpec().requires.count("*") == 1), allow_any_application_(GetConnectionSpec().requires.count("*") == 1),
pid_receiver_binding_(this), pid_receiver_binding_(this),
control_binding_(this), control_binding_(this),
...@@ -493,6 +477,7 @@ class ServiceManager::Instance ...@@ -493,6 +477,7 @@ class ServiceManager::Instance
Identity target = in_target; Identity target = in_target;
mojom::ConnectResult result = mojom::ConnectResult result =
ValidateConnectParams(&target, nullptr, nullptr, nullptr); ValidateConnectParams(&target, nullptr, nullptr, nullptr);
if (!Succeeded(result)) { if (!Succeeded(result)) {
std::move(callback).Run(result, Identity()); std::move(callback).Run(result, Identity());
return; return;
...@@ -624,8 +609,11 @@ class ServiceManager::Instance ...@@ -624,8 +609,11 @@ class ServiceManager::Instance
// whether this instance is allowed to connect using: // whether this instance is allowed to connect using:
// - non-null client process info. // - non-null client process info.
bool skip_user_check = bool skip_user_check =
HasCapability(connection_spec, kCapability_Singleton) || options_.instance_sharing ==
HasCapability(connection_spec, kCapability_AllUsers) || catalog::ServiceOptions::InstanceSharingType::SINGLETON ||
options_.instance_sharing ==
catalog::ServiceOptions::InstanceSharingType::
SHARED_INSTANCE_ACROSS_USERS ||
HasCapability(connection_spec, kCapability_UserID); HasCapability(connection_spec, kCapability_UserID);
if (!skip_user_check && target.user_id() != identity_.user_id() && if (!skip_user_check && target.user_id() != identity_.user_id() &&
...@@ -729,6 +717,7 @@ class ServiceManager::Instance ...@@ -729,6 +717,7 @@ class ServiceManager::Instance
const uint32_t id_; const uint32_t id_;
Identity identity_; Identity identity_;
const InterfaceProviderSpecMap interface_provider_specs_; const InterfaceProviderSpecMap interface_provider_specs_;
const catalog::ServiceOptions options_;
const bool allow_any_application_; const bool allow_any_application_;
#if !defined(OS_IOS) #if !defined(OS_IOS)
std::unique_ptr<ServiceProcessLauncher> runner_; std::unique_ptr<ServiceProcessLauncher> runner_;
...@@ -953,15 +942,12 @@ void ServiceManager::Connect(std::unique_ptr<ConnectParams> params) { ...@@ -953,15 +942,12 @@ void ServiceManager::Connect(std::unique_ptr<ConnectParams> params) {
const catalog::ServiceOptions& options = entry->options(); const catalog::ServiceOptions& options = entry->options();
auto it = interface_provider_specs.find(mojom::kServiceManager_ConnectorSpec); bool all_user_instance = entry->options().instance_sharing ==
const InterfaceProviderSpec& connection_spec = catalog::ServiceOptions::InstanceSharingType::
it != interface_provider_specs.end() SHARED_INSTANCE_ACROSS_USERS;
? it->second
: GetPermissiveInterfaceProviderSpec();
bool all_user_instance = HasCapability(connection_spec, kCapability_AllUsers);
bool singleton_instance = bool singleton_instance =
HasCapability(connection_spec, kCapability_Singleton); entry->options().instance_sharing ==
catalog::ServiceOptions::InstanceSharingType::SINGLETON;
const Identity original_target(params->target()); const Identity original_target(params->target());
// Services that request "all_users" class from the Service Manager are // Services that request "all_users" class from the Service Manager are
......
{ {
"name": "connect_test_singleton_app", "name": "connect_test_singleton_app",
"display_name": "Connect Test Singleton App", "display_name": "Connect Test Singleton App",
"options": {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector" : {
"requires": {
"service_manager": [ "service_manager:all_users" ]
}
} }
} }
} }
...@@ -72,15 +72,15 @@ service_manifest("embedder_manifest") { ...@@ -72,15 +72,15 @@ service_manifest("embedder_manifest") {
name = "service_manager_unittest_embedder" name = "service_manager_unittest_embedder"
source = "embedder_manifest.json" source = "embedder_manifest.json"
packaged_services = [ packaged_services = [
":all_users_manifest", ":shared_instance_across_users_manifest",
":regular_manifest", ":regular_manifest",
":singleton_manifest", ":singleton_manifest",
] ]
} }
service_manifest("all_users_manifest") { service_manifest("shared_instance_across_users_manifest") {
name = "service_manager_unittest_all_users" name = "service_manager_unittest_shared_instance_across_users"
source = "all_users_manifest.json" source = "shared_instance_across_users_manifest.json"
} }
service_manifest("singleton_manifest") { service_manifest("singleton_manifest") {
......
...@@ -7,9 +7,6 @@ per-file embedder_manifest.json=file://ipc/SECURITY_OWNERS ...@@ -7,9 +7,6 @@ per-file embedder_manifest.json=file://ipc/SECURITY_OWNERS
per-file service_manager_unittest_manifest.json=set noparent per-file service_manager_unittest_manifest.json=set noparent
per-file service_manager_unittest_manifest.json=file://ipc/SECURITY_OWNERS per-file service_manager_unittest_manifest.json=file://ipc/SECURITY_OWNERS
per-file all_users_manifest.json=set noparent
per-file all_users_manifest.json=file://ipc/SECURITY_OWNERS
per-file regular_manifest.json=set noparent per-file regular_manifest.json=set noparent
per-file regular_manifest.json=file://ipc/SECURITY_OWNERS per-file regular_manifest.json=file://ipc/SECURITY_OWNERS
...@@ -18,3 +15,6 @@ per-file singleton_manifest.json=file://ipc/SECURITY_OWNERS ...@@ -18,3 +15,6 @@ per-file singleton_manifest.json=file://ipc/SECURITY_OWNERS
per-file target_manifest.json=set noparent per-file target_manifest.json=set noparent
per-file target_manifest.json=file://ipc/SECURITY_OWNERS per-file target_manifest.json=file://ipc/SECURITY_OWNERS
per-file shared_instance_across_users_manifest.json=set noparent
per-file shared_instance_across_users_manifest.json=file://ipc/SECURITY_OWNERS
\ No newline at end of file
{
"name": "service_manager_unittest_all_users",
"display_name": "Service Manager Unittest: All users",
"interface_provider_specs": {
"service_manager:connector": {
"provides": {
"service_manager_unittest:all_users": [ ]
},
"requires": {
"service_manager_unittest_target": [ ],
"service_manager": [ "service_manager:all_users" ]
}
}
}
}
...@@ -92,7 +92,7 @@ class Embedder : public service_manager::Service, ...@@ -92,7 +92,7 @@ class Embedder : public service_manager::Service,
service_manager::mojom::ServiceRequest request, service_manager::mojom::ServiceRequest request,
const std::string& name, const std::string& name,
service_manager::mojom::PIDReceiverPtr pid_receiver) override { service_manager::mojom::PIDReceiverPtr pid_receiver) override {
if (name == "service_manager_unittest_all_users") { if (name == "service_manager_unittest_shared_instance_across_users") {
context_.reset(new service_manager::ServiceContext( context_.reset(new service_manager::ServiceContext(
std::make_unique<AllUsersService>(), std::move(request))); std::make_unique<AllUsersService>(), std::move(request)));
} else if (name == "service_manager_unittest_singleton") { } else if (name == "service_manager_unittest_singleton") {
......
{ {
"name": "service_manager_unittest_embedder", "name": "service_manager_unittest_embedder",
"display_name": "Service Manager Unittest: Embedder", "display_name": "Service Manager Unittest: Embedder",
"options": {
"instance_sharing" : "singleton"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -10,7 +13,6 @@ ...@@ -10,7 +13,6 @@
] ]
}, },
"requires": { "requires": {
"service_manager": [ "service_manager:singleton" ],
"service_manager_unittest_target": [ ] "service_manager_unittest_target": [ ]
} }
} }
......
...@@ -466,7 +466,8 @@ TEST_F(ServiceManagerTest, CreatePackagedRegularInstances) { ...@@ -466,7 +466,8 @@ TEST_F(ServiceManagerTest, CreatePackagedRegularInstances) {
// starting that service again, a new service is created only when a different // starting that service again, a new service is created only when a different
// instance name is specified. // instance name is specified.
TEST_F(ServiceManagerTest, CreatePackagedAllUsersInstances) { TEST_F(ServiceManagerTest, CreatePackagedAllUsersInstances) {
constexpr char kAllUsersServiceName[] = "service_manager_unittest_all_users"; constexpr char kAllUsersServiceName[] =
"service_manager_unittest_shared_instance_across_users";
AddListenerAndWaitForApplications(); AddListenerAndWaitForApplications();
......
{ {
"name": "service_manager_unittest", "name": "service_manager_unittest",
"display_name": "Service Manager Unittest", "display_name": "Service Manager Unittest",
"options": {
"instance_sharing" : "singleton"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -10,7 +13,6 @@ ...@@ -10,7 +13,6 @@
}, },
"requires": { "requires": {
"service_manager": [ "service_manager": [
"service_manager:singleton",
"service_manager:service_manager", "service_manager:service_manager",
"service_manager:client_process", "service_manager:client_process",
"service_manager:instance_name" "service_manager:instance_name"
...@@ -21,9 +23,7 @@ ...@@ -21,9 +23,7 @@
"service_manager_unittest_singleton": [ "service_manager_unittest_singleton": [
"service_manager_unittest:singleton" "service_manager_unittest:singleton"
], ],
"service_manager_unittest_all_users": [ "service_manager_unittest_shared_instance_across_users": [ ],
"service_manager_unittest:all_users"
],
"service_manager_unittest_regular": [ "service_manager_unittest_regular": [
"service_manager_unittest:regular" "service_manager_unittest:regular"
], ],
......
{
"name": "service_manager_unittest_shared_instance_across_users",
"display_name": "Service Manager Unittest: Shared instance across users",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": {
"service_manager:connector": { }
}
}
{ {
"name": "service_manager_unittest_singleton", "name": "service_manager_unittest_singleton",
"display_name": "Service Manager Unittest: Singleton", "display_name": "Service Manager Unittest: Singleton",
"options" : {
"instance_sharing" : "singleton"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"service_manager_unittest:singleton": [ ] "service_manager_unittest:singleton": [ ]
}, },
"requires": { "requires": {
"service_manager_unittest_target": [ ], "service_manager_unittest_target": [ ]
"service_manager": [ "service_manager:singleton" ]
} }
} }
} }
......
{ {
"name": "shape_detection", "name": "shape_detection",
"display_name": "Shape Detection Service", "display_name": "Shape Detection Service",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"face_detection": [ "shape_detection.mojom.FaceDetectionProvider" ], "face_detection": [ "shape_detection.mojom.FaceDetectionProvider" ],
"barcode_detection": [ "shape_detection.mojom.BarcodeDetectionProvider" ], "barcode_detection": [ "shape_detection.mojom.BarcodeDetectionProvider" ],
"text_detection": [ "shape_detection.mojom.TextDetection" ] "text_detection": [ "shape_detection.mojom.TextDetection" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
{ {
"name": "echo", "name": "echo",
"display_name": "Echo Service", "display_name": "Echo Service",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
"echo" : [ "echo.mojom.Echo" ] "echo" : [ "echo.mojom.Echo" ]
},
"requires": {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
{ {
"name": "tracing", "name": "tracing",
"display_name": "Tracing", "display_name": "Tracing",
"options" : {
"instance_sharing" : "singleton"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -13,7 +16,6 @@ ...@@ -13,7 +16,6 @@
}, },
"requires": { "requires": {
"service_manager": [ "service_manager": [
"service_manager:singleton",
"service_manager:service_manager" "service_manager:service_manager"
] ]
} }
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
"name": "video_capture", "name": "video_capture",
"display_name": "Video Capture", "display_name": "Video Capture",
"sandbox_type": "none", "sandbox_type": "none",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides" : { "provides" : {
...@@ -10,9 +13,6 @@ ...@@ -10,9 +13,6 @@
"video_capture.mojom.DeviceFactoryProvider", "video_capture.mojom.DeviceFactoryProvider",
"video_capture.mojom.TestingControls" "video_capture.mojom.TestingControls"
] ]
},
"requires" : {
"service_manager": [ "service_manager:all_users" ]
} }
} }
} }
......
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
// fixed. // fixed.
"sandbox_type": "none", "sandbox_type": "none",
"display_name": "Visuals Service", "display_name": "Visuals Service",
"options" : {
"instance_sharing" : "shared_instance_across_users"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -18,7 +21,6 @@ ...@@ -18,7 +21,6 @@
"requires": { "requires": {
"*": [ "app" ], "*": [ "app" ],
"catalog": [ "directory" ], "catalog": [ "directory" ],
"service_manager": [ "service_manager:all_users" ],
"ui": [ "ozone" ] "ui": [ "ozone" ]
} }
} }
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
"name": "ui", "name": "ui",
"sandbox_type": "none", "sandbox_type": "none",
"display_name": "UI Service", "display_name": "UI Service",
"options" : {
"instance_sharing" : "singleton"
},
"interface_provider_specs": { "interface_provider_specs": {
"service_manager:connector": { "service_manager:connector": {
"provides": { "provides": {
...@@ -59,7 +62,6 @@ ...@@ -59,7 +62,6 @@
"requires": { "requires": {
"*": [ "app" ], "*": [ "app" ],
"catalog": [ "directory" ], "catalog": [ "directory" ],
"service_manager": [ "service_manager:singleton" ],
"ui": [ "ozone" ], "ui": [ "ozone" ],
"viz": [ "viz_host" ] "viz": [ "viz_host" ]
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment