1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114

fuchsia_web / webengine / web_instance.cml [blame]

// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// A component manifest used by WebInstanceHost when creating a Context for
// which the caller does not provide a service_directory in its
// CreateContextParams.
{
  include: [
    "//fuchsia_web/webengine/web_instance-common.shard.cml",
    "inspect/client.shard.cml",
    "syslog/client.shard.cml",
  ],

  // These uses are based on https://fuchsia.dev/reference/fidl/fuchsia.web,
  // especially
  // https://fuchsia.dev/reference/fidl/fuchsia.web#CreateContextParams.
  use: [
    {
      // Required capabilities for all configurations.
      protocol: [
        "fuchsia.buildinfo.Provider",
        "fuchsia.device.NameProvider",
        "fuchsia.fonts.Provider",
        "fuchsia.hwinfo.Product",
        "fuchsia.intl.PropertyProvider",
        // "fuchsia.kernel.VmexResource" is optional below.
        // "fuchsia.logger/LogSink", is included by the shard above.
        "fuchsia.memorypressure.Provider",
        "fuchsia.process.Launcher",
        "fuchsia.sysmem.Allocator",
        "fuchsia.sysmem2.Allocator",
      ],
    },
    {
      // Optional capabilities, dependent on `ContextFeatureFlags` and other
      // optional functionality. Protocols for `ContextFeatureFlags` are listed
      // in the order in which they are defined. after those for other
      // functionality.
      protocol: [
        // Allows CPU scheduling profiles to be applied to threads to
        // tune their performance, especially for media rendering.
        // TODO(crbug.com/42050308): Migrate to `fuchsia.scheduler`.
        "fuchsia.media.ProfileProvider",
        "fuchsia.scheduler.RoleManager",

        // Optionally used by the tracing service.
        // TODO(crbug.com/42050521): Provide conditionally when enabled.
        "fuchsia.tracing.perfetto.ProducerConnector",

        // Required for `Frame.SetPreferredTheme(DEFAULT)`.
        "fuchsia.settings.Display",

        // Required by `ContextFeatureFlags.NETWORK`.
        "fuchsia.net.interfaces.State",
        "fuchsia.net.name.Lookup",
        "fuchsia.posix.socket.Provider",

        // Required by `ContextFeatureFlags.AUDIO`.
        "fuchsia.media.Audio",
        "fuchsia.media.AudioDeviceEnumerator",
        "fuchsia.media.SessionAudioConsumerFactory",

        // Required by `ContextFeatureFlags.VULKAN`.
        // These are the protocols not already required that
        //`vulkan/client.shard.cml` provides. That shard cannot be used because
        // it *requires* the Loader protocol.
        // "fuchsia.tracing.provider.Registry" is optionally used by the
        // tracing service.
        "fuchsia.vulkan.loader.Loader",
        "fuchsia.tracing.provider.Registry",

        // Required by `ContextFeatureFlags.HARDWARE_VIDEO_DECODER`.
        "fuchsia.mediacodec.CodecFactory",

        // Required by `ContextFeatureFlags.WIDEVINE_CDM`.
        // Only needed in builds with enable_widevine=true.
        // TODO(crbug.com/40875562): Move to a shard.
        "fuchsia.media.drm.Widevine",

        // Required by CreateContextParams.playready_key_system.
        // Only needed in builds with enable_widevine && enable_cast_receiver.
        // TODO(crbug.com/40875562): Move to a shard.
        "fuchsia.media.drm.PlayReady",

        // When `ContextFeatureFlags.HEADLESS` is not set, required to use
        // `Frame.CreateView*()`.
        "fuchsia.accessibility.semantics.SemanticsManager",
        "fuchsia.ui.composition.Allocator",
        "fuchsia.ui.composition.Flatland",

        // Required by `ContextFeatureFlags.LEGACY_METRICS`.
        // Only needed in enable_cast_receiver=true builds.
        // TODO(crbug.com/40875562): Move to a shard.
        "fuchsia.legacymetrics.MetricsRecorder",

        // Required by `ContextFeatureFlags.KEYBOARD`.
        "fuchsia.ui.input3.Keyboard",

        // Required by `ContextFeatureFlags.VIRTUAL_KEYBOARD`.
        "fuchsia.input.virtualkeyboard.ControllerCreator",

        // When `ContextFeatureFlags.DISABLE_DYNAMIC_CODE_GENERATION` is not
        // set, required for JavaScript & WebAssembly.
        "fuchsia.kernel.VmexResource",

        // Required for camera access.
        // TODO(crbug.com/42050280): Add ContextFeatureFlag and reference here.
        "fuchsia.camera3.DeviceWatcher",
      ],
      availability: "optional",
    },
  ],
}