// Copyright 2014 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.

// Messages containing DOM data captured from the browser.
// It includes the structure of the HTML document and Navigator data.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package userfeedback;

// Data captured from HTMLDocument DOM object.
message HtmlDocument {

  // The value of document.URL property.
  required string url = 1;

  // The value of document.title property.
  optional string title = 2;

  // The value of document.documentElement property.
  optional HtmlElement document_element = 3;
};

// Data captured from HTMLElement DOM object.
message HtmlElement {

  // The value of element.tagName property.
  required string tag_name = 1;

  // The value of element.id property.
  optional string id = 2;

  // The value of element.className property.
  optional string class_name = 3;

  // A list of child elements.
  repeated HtmlElement child_element = 4;

  // The value of frame.contentDocument property for FRAME and IFRAME elements.
  optional HtmlDocument frame_content_document = 5;
};

// Data captured from DOM Navigator object.
message Navigator {

  // The value of 'navigator.appCodeName' property.
  optional string app_code_name = 1;

  // The value of 'navigator.appName' property.
  optional string app_name = 2;

  // The value of 'navigator.appVersion' property.
  optional string app_version = 3;

  // The value of 'navigator.appMinorVersion' property.
  optional string app_minor_version = 4;

  // The value of 'navigator.cookieEnabled' property.
  optional bool cookie_enabled = 5;

  // The value of 'navigator.cpuClass' property.
  optional string cpu_class = 6;

  // The value of 'navigator.onLine' property.
  optional bool on_line = 7;

  // The value of 'navigator.platform' property.
  optional string platform = 8;

  // The value of 'navigator.browserLanguage' property.
  optional string browser_language = 9;

  // The value of 'navigator.systemLanguage' property.
  optional string system_language = 10;

  // The value of 'navigator.userAgent' property.
  optional string user_agent = 11;

  // The return value of 'navigator.javaEnabled()' method.
  optional bool java_enabled = 12;

  // The return value of 'navigator.taintEnabled()' method.
  optional bool taint_enabled = 13;

  // Plugin names specified by 'navigator.plugins' property.
  repeated string plugin_name = 14;
};

// A path in the HTML document between two elements, which are in the
// ancestor-descendant relationship.
message HtmlPath {

  // Ordered list of zero-based indices.
  // Empty path selects root element.
  // Non-negative index N selects (N+1)-th child.
  // Index -1 selects root element from frame content document.
  repeated int32 index = 1;
};
