// Copyright 2015 The Chromium 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 = "proto2";

option optimize_for = LITE_RUNTIME;

package content;

// Stores information about a Web Notification. This message is the protocol
// buffer meant to serialize the content::NotificationDatabaseData structure.
//
// Next tag: 5
message NotificationDatabaseDataProto {
  optional int64 notification_id = 1;

  optional string origin = 2;
  optional int64 service_worker_registration_id = 3;

  // A notification action, corresponds to content::PlatformNotificationAction.
  //
  // Next tag: 4
  message NotificationAction {
    optional string action = 1;
    optional string title = 2;
    optional string icon = 3;
  }

  // Actual data payload of the notification. This message is the protocol
  // buffer meant to serialize the content::PlatformNotificationData structure.
  //
  // Next tag: 13
  message NotificationData {
    enum Direction {
      LEFT_TO_RIGHT = 0;
      RIGHT_TO_LEFT = 1;
      AUTO = 2;
    }

    optional string title = 1;
    optional Direction direction = 2;
    optional string lang = 3;
    optional string body = 4;
    optional string tag = 5;
    optional string icon = 6;
    repeated int32 vibration_pattern = 9 [packed=true];
    optional int64 timestamp = 12;
    optional bool silent = 7;
    optional bool require_interaction = 11;
    optional bytes data = 8;
    repeated NotificationAction actions = 10;
  }

  optional NotificationData notification_data = 4;
}
