#pragma once
#include "APIObject.h"
#include "CompositingManagerProxy.h"
#include "PageClientImpl.h"
#include "WebPageProxy.h"
#include <WebCore/ActivityState.h>
#include <memory>
#include <wtf/RefPtr.h>
typedef struct OpaqueJSContext* JSGlobalContextRef;
struct wpe_view_backend;
namespace API {
class ViewClient;
}
namespace WebKit {
class DownloadProxy;
class WebPageGroup;
class WebProcessPool;
}
namespace WKWPE {
class View : public API::ObjectImpl<API::Object::Type::View> {
public:
static View* create(struct wpe_view_backend* backend, const API::PageConfiguration& configuration)
{
return new View(backend, configuration);
}
virtual ~View();
void setClient(std::unique_ptr<API::ViewClient>&&);
void frameDisplayed();
void handleDownloadRequest(WebKit::DownloadProxy&);
WebKit::WebPageProxy& page() { return *m_pageProxy; }
struct wpe_view_backend* backend() { return m_backend; }
const WebCore::IntSize& size() const { return m_size; }
WebCore::ActivityState::Flags viewState() const { return m_viewStateFlags; }
void setViewState(WebCore::ActivityState::Flags);
void close();
#if ENABLE(FULLSCREEN_API)
bool isFullScreen() { return m_fullScreenModeActive; };
void setFullScreen(bool fullScreenState) { m_fullScreenModeActive = fullScreenState; };
#endif
private:
View(struct wpe_view_backend*, const API::PageConfiguration&);
void setSize(const WebCore::IntSize&);
std::unique_ptr<API::ViewClient> m_client;
std::unique_ptr<WebKit::PageClientImpl> m_pageClient;
RefPtr<WebKit::WebPageProxy> m_pageProxy;
WebCore::IntSize m_size;
WebCore::ActivityState::Flags m_viewStateFlags;
WebKit::CompositingManagerProxy m_compositingManagerProxy;
struct wpe_view_backend* m_backend;
#if ENABLE(FULLSCREEN_API)
bool m_fullScreenModeActive { false };
#endif
};
}