1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Messages containing configuration of Feedback Service
6// that control classification and processing of submitted feedbacks.
7
8syntax = "proto2";
9
10option optimize_for = LITE_RUNTIME;
11
12package userfeedback;
13
14// Product for which feedback can be sent: GMail, Writely etc.
15message Product {
16  required int32 id = 1;
17
18  required string name = 2;
19
20  repeated string owner = 3;
21};
22
23// Contains information needed to check whether particular
24// feedback type applies to the page user is browsing and forward
25// it's execution to a specific handler. It also carries information
26// about the creator.
27// TODO(morgwai): design new structure of Type with fields relevant
28// for android, web, selenium grouped into submessages.
29message FeedbackTypeData {
30  // index of feedback type as found in database
31  required int32 id = 1;
32
33  // Specifies whether this feedback type is currently enabled and
34  // feedback of this type can be submitted.
35  required bool enabled = 2;
36
37  // Problem name of this feedback type on Google Feedback pages.
38  required string problem_name = 3;
39
40  // Name of the product to which this feedback type belongs.
41  optional string product_name = 4;
42
43  // Tag 5 is used by some legacy data that is already in production db.
44
45  // matcher to execute against page
46  required MatcherData matcher = 6;
47
48  // Comma separated list of email addresses to which email notification
49  // is sent upon each new feedback of this type.
50  // No email is sent if this field is set to an empty string.
51  required string notification_email = 7;
52
53  // Do not use tag 8, 9, 10. They were used by a legacy field.
54
55  // Encapsulates different kind of feedback type.
56  enum Kind {
57    // Product feedback type.
58    PRODUCT = 1;
59    // Special feedback type (e.g. fixit).
60    SPECIAL = 2;
61  }
62
63  // Kind of feedback type.
64  optional Kind kind = 11 [default=PRODUCT];
65
66  // Prefix to be added to summary of notification email sent for feedback of this
67  // type.
68  optional string summary_prefix = 12;
69
70  // String template with which "Additional Info" field in extension
71  // should be initially filled.
72  optional string template = 13;
73
74  // ID of the product this feedback type belongs to.
75  optional int32 product_id = 14;
76
77  // Tag that is used for marking feedback types that require non-ordinary handling.
78  // E.g: This field is equal:
79  // "unclassified" for Unclassified feedback,
80  // "android" for android feedback
81  // "selenium" for selenium feedback
82  optional string tag = 15;
83
84  // Problem description visible in feedback extension.
85  optional string problem_description = 16;
86
87  // Visibilities of feedback type.
88  enum Visibility {
89    // feedback type visible in external extension only
90    EXTERNAL = 1;
91    // feedback type visible in internal extension only
92    INTERNAL = 2;
93  }
94
95  // Specifies the visibility of this feedback type.
96  optional Visibility visibility = 17 [default=INTERNAL];
97
98  // tag 18 was used by removed field
99
100  // Specifies Buganizer fields
101  // TODO(kaczmarek): enable once we migrated to new protos.
102  // optional BuganizerSettings buganizer_settings = 19;
103
104  // Channel via which notification about feedback should be send
105  enum NotifyChannel {
106    // Send email notification.
107    EMAIL = 1;
108    // File a bug in buganizer.
109    BUGANIZER = 2;
110    // File a bug in issue tracker.
111    ISSUE_TRACKER = 3;
112  }
113
114  // Specifies channel via which notification about feedback of this type should be sent.
115  optional NotifyChannel notify_channel = 20 [default=EMAIL];
116
117  // Granularity of notifications.
118  enum NotificationGranularity {
119    // Send notification per each feedback.
120    FEEDBACK = 1;
121    // Send notification per clustered group of similar feedbacks.
122    CLUSTER = 2;
123  }
124
125  // Specifies granularity of notifications send for feedbacks of this type.
126  optional NotificationGranularity notification_granularity = 21 [default=FEEDBACK];
127
128  // Threshold for number of feedbacks in a cluster at which notification is sent.
129  optional int32 clustering_threshold = 22 [default=5];
130};
131
132// Used to detect content relevant to particular type of feedback.
133message MatcherData {
134  // XPATH expression to match against page.
135  required string content_matcher = 1;
136
137  // Regexp matching page URL.
138  required string url_matcher = 2;
139
140  // Approval by feedback admins
141  optional bool url_matcher_approved = 3 [default=true];
142};
143