// 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.
#ifndef ANDROID_WEBVIEW_TEST_SHELL_SRC_DRAW_FN_CONTEXT_MANAGER_H_
#define ANDROID_WEBVIEW_TEST_SHELL_SRC_DRAW_FN_CONTEXT_MANAGER_H_
#include <jni.h>
#include "android_webview/test/shell/src/draw_fn/overlays_manager.h"
#include "base/android/scoped_java_ref.h"
#include "ui/gl/android/scoped_a_native_window.h"
#include "ui/gl/android/scoped_java_surface.h"
namespace draw_fn {
class ContextManager {
public:
ContextManager();
virtual ~ContextManager();
void SetSurface(JNIEnv* env,
const base::android::JavaRef<jobject>& surface,
int width,
int height);
virtual void ResizeSurface(JNIEnv* env, int width, int height) = 0;
void SetOverlaysSurface(JNIEnv* env,
const base::android::JavaRef<jobject>& surface);
void Sync(JNIEnv* env, int functor, bool apply_force_dark);
virtual base::android::ScopedJavaLocalRef<jintArray> Draw(
JNIEnv* env,
int width,
int height,
int scroll_x,
int scroll_y,
jboolean readback_quadrants) = 0;
protected:
void CreateContext(JNIEnv* env,
const base::android::JavaRef<jobject>& surface,
int width,
int height);
virtual void DoCreateContext(JNIEnv* env, int width, int height) = 0;
virtual void DestroyContext() = 0;
virtual void CurrentFunctorChanged() = 0;
gl::ScopedJavaSurface java_surface_;
gl::ScopedANativeWindow native_window_;
int current_functor_ = 0;
OverlaysManager overlays_manager_;
};
} // namespace draw_fn
#endif // ANDROID_WEBVIEW_TEST_SHELL_SRC_DRAW_FN_CONTEXT_MANAGER_H_