// 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. #ifndef MEDIA_BASE_ANDROID_OVERLAY_CONFIG_H_ #define MEDIA_BASE_ANDROID_OVERLAY_CONFIG_H_ #include "base/callback.h" #include "base/macros.h" #include "media/base/media_export.h" #include "ui/gfx/geometry/rect.h" namespace media { class AndroidOverlay; // Configuration used to create an overlay. struct MEDIA_EXPORT AndroidOverlayConfig { public: // Called when the overlay is ready for use, via |GetJavaSurface()|. using ReadyCB = base::OnceCallback; // Called when overlay has failed before |ReadyCB| is called. Will not be // called after ReadyCB. It will be the last callback for the overlay. using FailedCB = base::OnceCallback; // Called when the overlay has been destroyed. This will not be called unless // ReadyCB has been called. It will be the last callback for the overlay. using DestroyedCB = base::OnceCallback; // Configuration used to create an overlay. AndroidOverlayConfig(); AndroidOverlayConfig(AndroidOverlayConfig&&); ~AndroidOverlayConfig(); // Initial rectangle for the overlay. May be changed via ScheduleLayout(). gfx::Rect rect; // Require a secure overlay? bool secure = false; // Convenient helpers since the syntax is weird. void is_ready(AndroidOverlay* overlay) { std::move(ready_cb).Run(overlay); } void is_failed(AndroidOverlay* overlay) { std::move(failed_cb).Run(overlay); } ReadyCB ready_cb; FailedCB failed_cb; DISALLOW_COPY(AndroidOverlayConfig); }; // Common factory type. using AndroidOverlayFactoryCB = base::RepeatingCallback( AndroidOverlayConfig)>; } // namespace media #endif // MEDIA_BASE_ANDROID_OVERLAY_CONFIG_H_