| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ASH_CAPTURE_MODE_CAPTURE_MODE_OBSERVER_H_ |
| #define ASH_CAPTURE_MODE_CAPTURE_MODE_OBSERVER_H_ |
| |
| #include "base/observer_list_types.h" |
| |
| namespace aura { |
| class Window; |
| } // namespace aura |
| |
| namespace gfx { |
| class ImageSkia; |
| } // namespace gfx |
| |
| namespace ash { |
| |
| // Defines an interface that's used to observe changes in capture mode. |
| class CaptureModeObserver : public base::CheckedObserver { |
| public: |
| // Called to notify with the state of a video recording. `current_root` is the |
| // root window, which is either being captured itself or a descendant of it. |
| // Note that `OnRecordingEnded()` means that the recording stopped (i.e. |
| // `is_recording_in_progress()` is now false), but it doesn't mean that a new |
| // recording can be started. A recording that were just stopped may take some |
| // time for the file to be finalized and saved (see `OnVideoFileFinalized()` |
| // below). `can_start_new_recording()` should be checked for these purposes. |
| virtual void OnRecordingStarted(aura::Window* current_root) = 0; |
| virtual void OnRecordingEnded() = 0; |
| |
| // Called when the status of the video is confirmed. DLP can potentially show |
| // users a dialog to warn them about restricted contents in the video, and |
| // recommending that they delete the file. In this case, |
| // `user_deleted_video_file` will be true. `thumbnail` contains an image |
| // representation of the video, which can be empty if there were errors during |
| // recording. |
| // `can_start_new_recording()` is guaranteed to return `true` when this is |
| // called. |
| virtual void OnVideoFileFinalized(bool user_deleted_video_file, |
| const gfx::ImageSkia& thumbnail) = 0; |
| |
| // Called when the window being recorded is moved from one display to another. |
| virtual void OnRecordedWindowChangingRoot(aura::Window* new_root) = 0; |
| |
| // Called to notify us that a recording session was aborted (i.e. recording |
| // was never started) due to e.g. user cancellation, an error, or a DLP/HDCP |
| // restriction. |
| virtual void OnRecordingStartAborted() = 0; |
| |
| protected: |
| ~CaptureModeObserver() override = default; |
| }; |
| |
| } // namespace ash |
| |
| #endif // ASH_CAPTURE_MODE_CAPTURE_MODE_OBSERVER_H_ |