// Copyright 2016 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;
option java_outer_classname = "ExecutionContextProtos";
option java_package = "org.chromium.components.metrics";

package metrics;

// Enums corresponding to the Chrome execution context in which data was
// collected.

// Chrome process type. Derived from content/public/common/process_type.h.
enum Process {
  UNKNOWN_PROCESS = 0;
  BROWSER_PROCESS = 1;
  RENDERER_PROCESS = 2;
  GPU_PROCESS = 3;
  UTILITY_PROCESS = 4;
  ZYGOTE_PROCESS = 5;
  SANDBOX_HELPER_PROCESS = 6;
  PPAPI_PLUGIN_PROCESS = 7;
  PPAPI_BROKER_PROCESS = 8;
}

// Chrome thread. This list is not exhaustive.
enum Thread {
  UNKNOWN_THREAD = 0;

  // Browser process threads from content/public/browser/browser_thread.h,
  // some of which occur in other processes as well.
  UI_THREAD = 1;
  FILE_THREAD = 2;
  FILE_USER_BLOCKING_THREAD = 3;
  PROCESS_LAUNCHER_THREAD = 4;
  CACHE_THREAD = 5;
  IO_THREAD = 6;
  DB_THREAD = 7;

  // GPU process thread.
  GPU_MAIN_THREAD = 8;

  // Renderer process threads.
  RENDER_THREAD = 9;
  UTILITY_THREAD = 10;
}
