chromium/chrome/browser/chromeos/video_conference/video_conference_manager_client_common.h

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

#ifndef CHROME_BROWSER_CHROMEOS_VIDEO_CONFERENCE_VIDEO_CONFERENCE_MANAGER_CLIENT_COMMON_H_
#define CHROME_BROWSER_CHROMEOS_VIDEO_CONFERENCE_VIDEO_CONFERENCE_MANAGER_CLIENT_COMMON_H_

#include <array>
#include <string>

#include "base/time/time.h"
#include "base/unguessable_token.h"

namespace video_conference {

// AppIds that we want to skip tracking.
extern const char* kSkipAppIds[3];

// Returns whether we should skip the contents for tracking.
bool ShouldSkipId(const std::string& id);

// Struct holding the granted status of media device permissions used by
// videoconferencing apps.
struct VideoConferencePermissions {
  bool has_camera_permission = false;
  bool has_microphone_permission = false;
};

// Struct holding state relevant to a VC web app.
struct VideoConferenceWebAppState {
  const base::UnguessableToken id;
  base::Time last_activity_time;
  bool is_capturing_microphone = false;
  bool is_capturing_camera = false;
  bool is_capturing_screen = false;
  bool is_extension = false;
};

// Video conference media devices.
enum VideoConferenceMediaType {
  kCamera,
  kMicrophone,
  kScreen,
};

}  // namespace video_conference

#endif  // CHROME_BROWSER_CHROMEOS_VIDEO_CONFERENCE_VIDEO_CONFERENCE_MANAGER_CLIENT_COMMON_H_