// Copyright 2017 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 metrics;

// Defines specialized fields used by the TabManager.TabMetrics UKM event.
message TabMetricsEvent {
  // Represents the MIME type of content.
  // MIME type strings have the format "<type>/<subtype>". The values for
  // ContentType reflect just the top-level type (e.g., AUDIO is used for both
  // "audio/mp3" and "audio/ogg").
  // The exception is "text/html", since it's treated quite differently than
  // other text.
  enum ContentType {
    // Could not be determined or not available.
    CONTENT_TYPE_UNKNOWN = 0;

    // Not one of the types below.
    CONTENT_TYPE_OTHER = 1;

    // The "application/*" type. Supported application sub-types are enumerated
    // in Chrome's PluginType.
    CONTENT_TYPE_APPLICATION = 2;

    // The "audio/*" type.
    CONTENT_TYPE_AUDIO = 3;

    // The "image/*" type.
    CONTENT_TYPE_IMAGE = 4;

    // The "text/*" type. For "text/html", TEXT_HTML is used instead.
    CONTENT_TYPE_TEXT = 5;

    // The "text/html" type, representing web pages.
    CONTENT_TYPE_TEXT_HTML = 6;

    // The "video/*" type.
    CONTENT_TYPE_VIDEO = 7;
  }

  optional ContentType content_type = 1;
}

// Defines specialized fields used by the TabManager.WindowMetrics UKM event
// for describing the window used by a set of tabs.
message WindowMetricsEvent {
  // Represents the type of the window.
  enum Type {
    // Could not be determined or not available.
    TYPE_UNKNOWN = 0;

    // A normal browser window with a tab strip.
    TYPE_TABBED = 1;

    // A pop-up browser window with no tab strip.
    TYPE_POPUP = 2;

    // An Extension browser window that is not an AppWindow.
    TYPE_EXTENSION = 3;

    // An AppWindow for a platform app.
    TYPE_APP = 4;
  }

  optional Type type = 1;

  // Represents the show state of the window.
  enum ShowState {
    SHOW_STATE_UNKNOWN = 0;
    SHOW_STATE_NORMAL = 1;
    SHOW_STATE_MINIMIZED = 2;
    SHOW_STATE_MAXIMIZED = 3;
    SHOW_STATE_FULLSCREEN = 4;
  }

  optional ShowState show_state = 2;
}
