[WPE] Downloads never have a web view associated in WPE
[WebKit-https.git] / Source / WebKit2 / UIProcess / API / wpe / WPEView.h
1 /*
2  * Copyright (C) 2014 Igalia S.L.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #pragma once
27
28 #include "APIObject.h"
29 #include "CompositingManagerProxy.h"
30 #include "PageClientImpl.h"
31 #include "WebPageProxy.h"
32 #include <WebCore/ActivityState.h>
33 #include <memory>
34 #include <wtf/RefPtr.h>
35
36 struct wpe_view_backend;
37
38 namespace API {
39 class ViewClient;
40 }
41
42 namespace WebKit {
43 class DownloadProxy;
44 class WebPageGroup;
45 class WebProcessPool;
46 }
47
48 namespace WKWPE {
49
50 class View : public API::ObjectImpl<API::Object::Type::View> {
51 public:
52     static View* create(struct wpe_view_backend* backend, const API::PageConfiguration& configuration)
53     {
54         return new View(backend, configuration);
55     }
56     virtual ~View();
57
58     // Client methods
59     void setClient(std::unique_ptr<API::ViewClient>&&);
60     void frameDisplayed();
61     void handleDownloadRequest(WebKit::DownloadProxy&);
62
63     WebKit::WebPageProxy& page() { return *m_pageProxy; }
64
65     struct wpe_view_backend* backend() { return m_backend; }
66
67     const WebCore::IntSize& size() const { return m_size; }
68
69     WebCore::ActivityState::Flags viewState() const { return m_viewStateFlags; }
70     void setViewState(WebCore::ActivityState::Flags);
71
72     void close();
73
74 private:
75     View(struct wpe_view_backend*, const API::PageConfiguration&);
76
77     void setSize(const WebCore::IntSize&);
78
79     std::unique_ptr<API::ViewClient> m_client;
80
81     std::unique_ptr<WebKit::PageClientImpl> m_pageClient;
82     RefPtr<WebKit::WebPageProxy> m_pageProxy;
83     WebCore::IntSize m_size;
84     WebCore::ActivityState::Flags m_viewStateFlags;
85
86     WebKit::CompositingManagerProxy m_compositingManagerProxy;
87     struct wpe_view_backend* m_backend;
88 };
89
90 } // namespace WKWPE