#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&);
JSGlobalContextRef javascriptGlobalContext();
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();
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;
};
}