| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| syntax = "proto3"; |
| |
| package chromiumos.config.public_replication; |
| |
| option go_package = "go.chromium.org/chromiumos/config/go/public_replication"; |
| |
| import "google/protobuf/field_mask.proto"; |
| |
| // Configures which fields in a ConfigBundle are made public. |
| // |
| // Any message in a ConfigBundle that has a PublicReplication message as a field |
| // will have the fields specified by the public_fields FieldMask made public. |
| // For example, consider the ConfigBundle: |
| // |
| // software_configs { |
| // audio_configs { |
| // card_name: "testcard" |
| // private_field: "secretA" |
| // public_replication { |
| // public_fields { |
| // paths: "card_name" |
| // } |
| // } |
| // } |
| // } |
| // |
| // "card_name" will be made public, "private_field" will not be. |
| // |
| // A few notes: |
| // - Currently PublicReplication just wraps a FieldMask. This is done so that |
| // it can be discovered via proto reflection without accidentally using |
| // FieldMasks that are not meant to control public fields. |
| // - In FieldMasks a repeated field is only allowed in the last position of a |
| // path (https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMask). |
| // Using a single FieldMask for a ConfigBundle would not be very useful, since |
| // more granularity is needed (i.e. saying all or none of |
| // "software_configs" is public is not useful). Thus, FieldMasks to control |
| // public fields are specified in child messages of ConfigBundle. |
| message PublicReplication { |
| google.protobuf.FieldMask public_fields = 1; |
| } |