blob: 311862dd9bcb06ee54c7804e37cce0978311ab1f [file] [log] [blame]
// 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_MOJO_ANDROID_OVERLAY_H_
#define MEDIA_BASE_MOJO_ANDROID_OVERLAY_H_
#include "base/macros.h"
#include "base/unguessable_token.h"
#include "media/base/android/android_overlay.h"
#include "media/mojo/interfaces/android_overlay.mojom.h"
#include "mojo/public/cpp/bindings/binding.h"
namespace media {
// AndroidOverlay implementation via mojo.
class MojoAndroidOverlay : public AndroidOverlay,
public mojom::AndroidOverlayClient {
public:
MojoAndroidOverlay(mojom::AndroidOverlayProviderPtr provider_ptr,
AndroidOverlayConfig config,
const base::UnguessableToken& routing_token);
~MojoAndroidOverlay() override;
// AndroidOverlay
void ScheduleLayout(const gfx::Rect& rect) override;
const base::android::JavaRef<jobject>& GetJavaSurface() const override;
// mojom::AndroidOverlayClient
void OnSurfaceReady(uint64_t surface_key) override;
void OnDestroyed() override;
private:
AndroidOverlayConfig config_;
mojom::AndroidOverlayPtr overlay_ptr_;
std::unique_ptr<mojo::Binding<mojom::AndroidOverlayClient>> binding_;
gl::ScopedJavaSurface surface_;
// Have we received OnSurfaceReady yet?
bool received_surface_ = false;
DISALLOW_COPY_AND_ASSIGN(MojoAndroidOverlay);
};
} // namespace media
#endif // MEDIA_BASE_MOJO_ANDROID_OVERLAY_H_