//
// Copyright (C) 2023 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// @generated by protoc-gen-es v2.2.2 with parameter "target=ts"
// @generated from file protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto.
 */
export const file_protos_perfetto_config_android_android_sdk_sysprop_guard_config: GenFile = /*@__PURE__*/
  fileDesc("CkVwcm90b3MvcGVyZmV0dG8vY29uZmlnL2FuZHJvaWQvYW5kcm9pZF9zZGtfc3lzcHJvcF9ndWFyZF9jb25maWcucHJvdG8SD3BlcmZldHRvLnByb3RvcyKKAQocQW5kcm9pZFNka1N5c3Byb3BHdWFyZENvbmZpZxIoCiBzdXJmYWNlZmxpbmdlcl9za2lhX3RyYWNrX2V2ZW50cxgBIAEoCBIeChZod3VpX3NraWFfdHJhY2tfZXZlbnRzGAIgASgIEiAKGGh3dWlfcGFja2FnZV9uYW1lX2ZpbHRlchgDIAMoCQ");

/**
 * Data source that controls the system properties used to guard initialization
 * of track_event producers (i.e. Skia) in apps using HWUI, and certain
 * processes like SurfaceFlinger.
 *
 * This data source only tells Skia to initialized the Perfetto SDK and start
 * routing data to the Track Event system instead of ATrace. For those events
 * to actually show up in a trace, the track_event data source must be used as
 * well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
 * processes may need to be restarted for Skia to revert to using ATrace if
 * Track Events are no longer desired.
 *
 * In addition to switching Skia to use Perfetto's track_event data source,
 * this "guard" also controls Skia's "broad tracing", which removes Skia's
 * internal tracing constraints and allows the track_event config to specify
 * which categories should be traced. Filtering to the "skia.always" category
 * *tag* in a track_event config can be used to re-enable the standard
 * constraints typically used with ATrace.
 *
 * Data source name: android.sdk_sysprop_guard
 * Introduced in Android 14 (U) QPR1.
 * Next id: 4
 *
 * @generated from message perfetto.protos.AndroidSdkSyspropGuardConfig
 */
export type AndroidSdkSyspropGuardConfig = Message<"perfetto.protos.AndroidSdkSyspropGuardConfig"> & {
  /**
   * If true, configures SurfaceFlinger to initialize Skia's Perfetto
   * integration with the track_event data source in RenderEngine.
   * If false or omitted, the simpler ATrace fallback is used.
   *
   * NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
   * restarted.
   *
   * Specifically this sets the following system properties:
   *   - debug.tracing.ctl.renderengine.skia_tracing_enabled
   *   - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
   *
   * Does not affect actual track_event data *collection*, which must be
   * configured separately.
   *
   * @generated from field: optional bool surfaceflinger_skia_track_events = 1;
   */
  surfaceflingerSkiaTrackEvents: boolean;

  /**
   * If true, configures HWUI apps to initialize Skia's Perfetto integration
   * with the track_event data source. hwui_package_name_filter
   * can be used to control which apps are affected.
   * If false or omitted, the simpler ATrace fallback is used.
   *
   * NOTE: once enabled, Skia will only revert to ATrace if the app is
   * restarted.
   *
   * ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
   * If filtering is NOT set, this controls these GLOBAL system properties:
   *   - debug.tracing.ctl.hwui.skia_tracing_enabled
   *   - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
   * If filtering IS set, this controls these APP-SPECIFIC system properties,
   * for each package listed in the filter:
   *   - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
   *   - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
   *
   * Does not affect actual track_event data *collection*, which must be
   * configured separately.
   *
   * @generated from field: optional bool hwui_skia_track_events = 2;
   */
  hwuiSkiaTrackEvents: boolean;

  /**
   * If non-empty, hwui_skia_track_events applies to only the packages listed.
   * Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
   *
   * @generated from field: repeated string hwui_package_name_filter = 3;
   */
  hwuiPackageNameFilter: string[];
};

/**
 * Describes the message perfetto.protos.AndroidSdkSyspropGuardConfig.
 * Use `create(AndroidSdkSyspropGuardConfigSchema)` to create a new message.
 */
export const AndroidSdkSyspropGuardConfigSchema: GenMessage<AndroidSdkSyspropGuardConfig> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_config_android_android_sdk_sysprop_guard_config, 0);

