chromium/chrome/browser/notifications/proto/impression.proto

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

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package notifications.proto;

import "notification_data.proto";

// Contains data to determine when a notification should be shown to the user
// and the user impression towards this notification. Should match Impression in
// impression_types.h.
// Next tag: 9
message Impression {
  // The type of user feedback from a displayed notification. Should match
  // UserFeedback in notification_scheduler_types.h.
  enum UserFeedback {
    NO_FEEDBACK = 0;
    HELPFUL = 1;
    NOT_HELPFUL = 2;
    CLICK = 3;
    DISMISS = 4;
    IGNORE = 5;
  }

  // The user impression of a particular notification. Should match
  // ImpressionResult in notification_scheduler_types.h.
  enum ImpressionResult {
    INVALID = 0;
    POSITIVE = 1;
    NEGATIVE = 2;
    NEUTRAL = 3;
  }

  // Used to override default user action and impression mapping.
  // Next tag: 3
  message ImpressionMapping {
    optional UserFeedback user_feedback = 1;
    optional ImpressionResult impression_result = 2;
  }

  // Creation time stamp in milliseconds since epoch.
  optional int64 create_time = 1;

  // The user feedback on the notification.
  optional UserFeedback feedback = 2;

  // The impression type.
  optional ImpressionResult impression = 3;

  // If the user feedback is used in computing the current notification deliver
  // rate.
  optional bool integrated = 4;

  // The unique identifier of the notification.
  optional string guid = 5;

  // Used to generate impression result.
  repeated ImpressionMapping impression_mapping = 6;

  // Custom data associated with a notification.
  repeated CustomData custom_data = 7;

  // Duration to mark NO_FEEDBACK notification as IGNORE.
  optional int64 ignore_timeout_duration = 8;
}