Disable outdated WritableStream API
[WebKit-https.git] / Source / WebCore / page / Chrome.h
1 /*
2  * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
3  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4  * Copyright (C) 2012, Samsung Electronics. All rights reserved.
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public License
17  * along with this library; see the file COPYING.LIB.  If not, write to
18  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  * Boston, MA 02110-1301, USA.
20  */
21
22 #pragma once
23
24 #include "Cursor.h"
25 #include "FocusDirection.h"
26 #include "HostWindow.h"
27 #include <wtf/Forward.h>
28 #include <wtf/RefPtr.h>
29
30 #if PLATFORM(COCOA)
31 OBJC_CLASS NSView;
32 #endif
33
34 namespace WebCore {
35
36 class ChromeClient;
37 class ColorChooser;
38 class ColorChooserClient;
39 class DateTimeChooser;
40 class DateTimeChooserClient;
41 class FileChooser;
42 class FileIconLoader;
43 class FloatRect;
44 class Element;
45 class Frame;
46 class Geolocation;
47 class HitTestResult;
48 class IntPoint;
49 class IntRect;
50 class NavigationAction;
51 class Page;
52 class PopupMenu;
53 class PopupMenuClient;
54 class PopupOpeningObserver;
55 class SearchPopupMenu;
56
57 struct DateTimeChooserParameters;
58 struct FrameLoadRequest;
59 struct ViewportArguments;
60 struct WindowFeatures;
61     
62 class Chrome : public HostWindow {
63 public:
64     Chrome(Page&, ChromeClient&);
65     virtual ~Chrome();
66
67     ChromeClient& client() { return m_client; }
68
69     // HostWindow methods.
70     void invalidateRootView(const IntRect&) override;
71     void invalidateContentsAndRootView(const IntRect&) override;
72     void invalidateContentsForSlowScroll(const IntRect&) override;
73     void scroll(const IntSize&, const IntRect&, const IntRect&) override;
74 #if USE(COORDINATED_GRAPHICS)
75     void delegatedScrollRequested(const IntPoint& scrollPoint) override;
76 #endif
77     IntPoint screenToRootView(const IntPoint&) const override;
78     IntRect rootViewToScreen(const IntRect&) const override;
79 #if PLATFORM(IOS)
80     IntPoint accessibilityScreenToRootView(const IntPoint&) const override;
81     IntRect rootViewToAccessibilityScreen(const IntRect&) const override;
82 #endif
83     PlatformPageClient platformPageClient() const override;
84     void scrollbarsModeDidChange() const override;
85     void setCursor(const Cursor&) override;
86     void setCursorHiddenUntilMouseMoves(bool) override;
87
88     void scheduleAnimation() override;
89
90     PlatformDisplayID displayID() const override;
91     void windowScreenDidChange(PlatformDisplayID) override;
92
93     FloatSize screenSize() const override;
94     FloatSize availableScreenSize() const override;
95
96     void scrollRectIntoView(const IntRect&) const;
97
98     void contentsSizeChanged(Frame&, const IntSize&) const;
99
100     WEBCORE_EXPORT void setWindowRect(const FloatRect&) const;
101     WEBCORE_EXPORT FloatRect windowRect() const;
102
103     FloatRect pageRect() const;
104
105     void focus() const;
106     void unfocus() const;
107
108     bool canTakeFocus(FocusDirection) const;
109     void takeFocus(FocusDirection) const;
110
111     void focusedElementChanged(Element*) const;
112     void focusedFrameChanged(Frame*) const;
113
114     WEBCORE_EXPORT Page* createWindow(Frame&, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&) const;
115     WEBCORE_EXPORT void show() const;
116
117     bool canRunModal() const;
118     void runModal() const;
119
120     void setToolbarsVisible(bool) const;
121     bool toolbarsVisible() const;
122
123     void setStatusbarVisible(bool) const;
124     bool statusbarVisible() const;
125
126     void setScrollbarsVisible(bool) const;
127     bool scrollbarsVisible() const;
128
129     void setMenubarVisible(bool) const;
130     bool menubarVisible() const;
131
132     void setResizable(bool) const;
133
134     bool canRunBeforeUnloadConfirmPanel();
135     bool runBeforeUnloadConfirmPanel(const String& message, Frame&);
136
137     void closeWindowSoon();
138
139     void runJavaScriptAlert(Frame&, const String&);
140     bool runJavaScriptConfirm(Frame&, const String&);
141     bool runJavaScriptPrompt(Frame&, const String& message, const String& defaultValue, String& result);
142     WEBCORE_EXPORT void setStatusbarText(Frame&, const String&);
143
144     void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags);
145
146     void setToolTip(const HitTestResult&);
147
148     WEBCORE_EXPORT void print(Frame&);
149
150     WEBCORE_EXPORT void enableSuddenTermination();
151     WEBCORE_EXPORT void disableSuddenTermination();
152
153 #if ENABLE(INPUT_TYPE_COLOR)
154     std::unique_ptr<ColorChooser> createColorChooser(ColorChooserClient&, const Color& initialColor);
155 #endif
156
157     void runOpenPanel(Frame&, FileChooser&);
158     void loadIconForFiles(const Vector<String>&, FileIconLoader&);
159
160     void dispatchViewportPropertiesDidChange(const ViewportArguments&) const;
161
162     bool requiresFullscreenForVideoPlayback();
163
164 #if PLATFORM(COCOA)
165     WEBCORE_EXPORT void focusNSView(NSView*);
166 #endif
167
168     bool selectItemWritingDirectionIsNatural();
169     bool selectItemAlignmentFollowsMenuWritingDirection();
170     bool hasOpenedPopup() const;
171     RefPtr<PopupMenu> createPopupMenu(PopupMenuClient&) const;
172     RefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient&) const;
173
174 #if PLATFORM(IOS)
175     // FIXME: Can we come up with a better name for this setter?
176     void setDispatchViewportDataDidChangeSuppressed(bool dispatchViewportDataDidChangeSuppressed) { m_isDispatchViewportDataDidChangeSuppressed = dispatchViewportDataDidChangeSuppressed; }
177 #endif
178
179     void didReceiveDocType(Frame&);
180
181     void registerPopupOpeningObserver(PopupOpeningObserver&);
182     void unregisterPopupOpeningObserver(PopupOpeningObserver&);
183
184 private:
185     void notifyPopupOpeningObservers() const;
186
187     Page& m_page;
188     ChromeClient& m_client;
189     PlatformDisplayID m_displayID { 0 };
190     Vector<PopupOpeningObserver*> m_popupOpeningObservers;
191 #if PLATFORM(IOS)
192     bool m_isDispatchViewportDataDidChangeSuppressed { false };
193 #endif
194 };
195
196 } // namespace WebCore