chromium/chromeos/services/chromebox_for_meetings/public/mojom/cfm_browser.mojom

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

module chromeos.cfm.mojom;

// Interface defined by chromium specifically for the ChromeboxForMeetings
// platform to leverage required chromium services/APIS.
interface CfmBrowser {
  // Returns a persistent representation of active FieldTrial information, which
  // can be used to replicate the current state of the experimentation framework
  // in another process.
  GetVariationsData@0()=>(string field_trial_parameters,
                          string field_trial_states,
                          string enabled_features,
                          string disabled_features);

  // Returns detailed information on running processes as well system-wide
  // graphics driver memory (-1 if error).
  GetMemoryDetails@1()=>(array<ProcessData> process_data,
                         int64 gpu_memory_size);
};

struct ExtensionData {
  string name@0;
  string version@1;
  string id@2;
  string hashed_id@3;
  string description@4;
};

// The data pertaining to an individual browser process.
struct ProcessMemoryInformation {
  // The process id.
  int32 pid@0;

  // The process version
  string version@1;

  // The process product name.
  string product_name@2;

  // The number of processes which this memory represents.
  int32 num_processes@3;

  // If this is a child process of Chrome, what type (i.e. plugin) it is.
  string process_type@4;

  // Number of open file descriptors in this process.
  int32 num_open_fds@5;

  // Maximum number of file descriptors that can be opened in this process.
  int32 open_fds_soft_limit@6;

  // If this is a renderer process, what type it is.
  string renderer_type@7;

  // A collection of titles used, i.e. for a tab it'll show all the page titles.
  array<string> titles@8;

  // Consistent memory metric for all platforms.
  int32 private_memory_footprint_kb@9;

  // iff process is process_type extension add additional info
  array<ExtensionData> extension_info@10;
};

// Browser Process Information.
struct ProcessData {
  // The qualified name of the browser
  string name@0;

  // The name of the process running
  string process_name@1;

  // List of child processes.
  array<ProcessMemoryInformation> processes@2;
};