18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright 2007, The Android Open Source Project
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  * Redistributions of source code must retain the above copyright
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  * Redistributions in binary form must reproduce the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
163298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef ChromeClientAndroid_h
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ChromeClientAndroid_h
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ChromeClient.h"
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
319e4593fcc93d1bf0b5d5aa00b17ed2177c8eed06Steve Block#include "PopupMenu.h"
329e4593fcc93d1bf0b5d5aa00b17ed2177c8eed06Steve Block#include "SearchPopupMenu.h"
33fe55045391147883a38ed161b0c80f4e356bd9e0Steve Block#include "Timer.h"
349e4593fcc93d1bf0b5d5aa00b17ed2177c8eed06Steve Block#include <wtf/PassRefPtr.h>
359ca5793315e248418a353cc1443f3803ae0adfe6Steve Block#include <wtf/Threading.h>
36fe55045391147883a38ed161b0c80f4e356bd9e0Steve Block
37fe55045391147883a38ed161b0c80f4e356bd9e0Steve Blocknamespace WebCore {
389e4593fcc93d1bf0b5d5aa00b17ed2177c8eed06Steve Blockclass PopupMenuClient;
399e4593fcc93d1bf0b5d5aa00b17ed2177c8eed06Steve Blockclass Geolocation;
40fe55045391147883a38ed161b0c80f4e356bd9e0Steve Block}
416172bff036b26f8ea852196733426c6ff608ed8aBen Murdoch
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace WebCore;
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace android {
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class WebFrame;
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class ChromeClientAndroid : public ChromeClient {
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    public:
495c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block        ChromeClientAndroid() : m_webFrame(0)
50797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard#if USE(ACCELERATED_COMPOSITING)
515c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block                              , m_rootGraphicsLayer(0)
525c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block                              , m_needsLayerSync(false)
53797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard#endif
545c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block                              , m_triedToReclaimDBQuota(false)
555c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block                              { }
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void chromeDestroyed();
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setWindowRect(const FloatRect&);
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual FloatRect windowRect();
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual FloatRect pageRect();
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual float scaleFactor();
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void focus();
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void unfocus();
67192a29b13c95d88f942791ab92ebb0efb9fe369cLeon Scroggins        virtual void formDidBlur(const WebCore::Node*);
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool canTakeFocus(FocusDirection);
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void takeFocus(FocusDirection);
70d5340bbd847b3fabb04f28f1aa8425f1874b0bb3Steve Block
71d5340bbd847b3fabb04f28f1aa8425f1874b0bb3Steve Block        virtual void focusedNodeChanged(Node*);
7297349b6656c58e631c13b8552b077870a6a32ebaTeng-Hui Zhu        virtual void focusedFrameChanged(Frame*);
73d5340bbd847b3fabb04f28f1aa8425f1874b0bb3Steve Block
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // The Frame pointer provides the ChromeClient with context about which
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // Frame wants to create the new Page.  Also, the newly created window
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // should not be shown to the user until the ChromeClient of the newly
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // created Page has its show method called.
78f1f796b0c3a725a520ac41959a0db7855480e9deJohn Reck        virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&);
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void show();
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool canRunModal();
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void runModal();
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setToolbarsVisible(bool);
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool toolbarsVisible();
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setStatusbarVisible(bool);
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool statusbarVisible();
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setScrollbarsVisible(bool);
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool scrollbarsVisible();
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setMenubarVisible(bool);
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool menubarVisible();
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setResizable(bool);
972eef744339814ace28e6835115e7e389fb8b7962Andrei Popescu
982eef744339814ace28e6835115e7e389fb8b7962Andrei Popescu        virtual void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String& message, unsigned int lineNumber, const String& sourceID);
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool canRunBeforeUnloadConfirmPanel();
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool runBeforeUnloadConfirmPanel(const String& message, Frame* frame);
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void closeWindowSoon();
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void runJavaScriptAlert(Frame*, const String&);
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool runJavaScriptConfirm(Frame*, const String&);
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result);
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setStatusbarText(const String&);
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool shouldInterruptJavaScript();
110fe73b6358fa742d943e85ba9a90544a7b6ba8d9dBen Murdoch        virtual KeyboardUIMode keyboardUIMode();
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual IntRect windowResizerRect() const;
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // Methods used by HostWindow.
11501eb58e0c8da43223275f0eb2a1e4691125405d1Steve Block        virtual void invalidateWindow(const WebCore::IntRect&, bool);
11601eb58e0c8da43223275f0eb2a1e4691125405d1Steve Block        virtual void invalidateContentsAndWindow(const WebCore::IntRect&, bool);
11701eb58e0c8da43223275f0eb2a1e4691125405d1Steve Block        virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool);
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void scroll(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect);
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual IntPoint screenToWindow(const IntPoint&) const;
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual IntRect windowToScreen(const IntRect&) const;
121d060767c4de6a275194ee9a58f151b82b17013bfSteve Block        virtual PlatformPageClient platformPageClient() const;
122635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        virtual void contentsSizeChanged(Frame*, const IntSize&) const;
1235f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        virtual void scrollRectIntoView(const IntRect&, const ScrollView*) const;
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // End methods used by HostWindow.
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1268db9f9e9e78973e25adf06722ce8f9126e92c60bShimeng (Simon) Wang        virtual void dispatchViewportDataDidChange(const ViewportArguments&) const;
1278db9f9e9e78973e25adf06722ce8f9126e92c60bShimeng (Simon) Wang
128f08b6f6172b9dd1defce51b868f951bcbf6c61c7Steve Block        virtual void scrollbarsModeDidChange() const;
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned int);
1302eef744339814ace28e6835115e7e389fb8b7962Andrei Popescu
1312eef744339814ace28e6835115e7e389fb8b7962Andrei Popescu        virtual void setToolTip(const String&, TextDirection);
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void print(Frame*);
1348ccf722629b08f2a06b2cadbdc3d0c9dc885e25dBen Murdoch#if ENABLE(DATABASE)
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void exceededDatabaseQuota(Frame*, const String&);
1368ccf722629b08f2a06b2cadbdc3d0c9dc885e25dBen Murdoch#endif
137c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu#if ENABLE(OFFLINE_WEB_APPLICATIONS)
138c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu        virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
139c4daefab2bd7617afd2562dad5353da63d239428Steve Block        virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*);
140c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu#endif
1417e7a0fd96b7d18fa3562af3b2bb4c7516fe9babeLeon Clarke
1427e7a0fd96b7d18fa3562af3b2bb4c7516fe9babeLeon Clarke	virtual void populateVisitedLinks();
1437e7a0fd96b7d18fa3562af3b2bb4c7516fe9babeLeon Clarke
144f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if ENABLE(TOUCH_EVENTS)
145d1919980a4bbb7f3aa73a6a83110fbec0c220e59Ben Murdoch        virtual void needTouchEvents(bool);
146f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#endif
147f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
148fe55045391147883a38ed161b0c80f4e356bd9e0Steve Block        // Methods used to request and provide Geolocation permissions.
1495c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block        // Not used with client-based Geolocation
1505c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block        virtual void requestGeolocationPermissionForFrame(Frame*, Geolocation*) { ASSERT_NOT_REACHED(); }
1515c36c4ca9214cbbe65d12f6b138aef9618d41a99Steve Block        virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*) { ASSERT_NOT_REACHED(); }
152fe55045391147883a38ed161b0c80f4e356bd9e0Steve Block
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
1546c58635db69329cd8c46dc17dd670bdcbf1a889aBen Murdoch        virtual void setCursor(const Cursor&);
15545b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch        virtual void chooseIconForFiles(const WTF::Vector<WTF::String>&, FileChooser*);
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
157635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        // Notification that the given form element has changed. This function
158635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        // will be called frequently, so handling should be very fast.
159635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        virtual void formStateDidChange(const Node*);
160635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
1616172bff036b26f8ea852196733426c6ff608ed8aBen Murdoch        // Android-specific
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void setWebFrame(android::WebFrame* webframe);
1635b71639dd156f6224bbb25ed257ac70374641f6bSteve Block        android::WebFrame* webFrame() { return m_webFrame; }
16463da3f053ab8a3590e4dcd4a51056cb2d277a7d8Steve Block        void wakeUpMainThreadWithNewQuota(long long newQuota);
165797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard
166797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard#if USE(ACCELERATED_COMPOSITING)
167797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard        virtual void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer* g);
168797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard        virtual void setNeedsOneShotDrawingSynchronization();
169797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard        virtual void scheduleCompositingLayerSync();
170211482b53e73a386e2aabb0d3acb92e0e7ea22d4Nicolas Roard        virtual bool allowsAcceleratedCompositing() const { return true; }
1716d43b9ceb777071c088fe12ee94af80e34816bcfGrace Kloba        WebCore::GraphicsLayer* layersSync();
172797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard#endif
173797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard
1749e4593fcc93d1bf0b5d5aa00b17ed2177c8eed06Steve Block        virtual bool selectItemWritingDirectionIsNatural();
17589ff5bedced41f7901101fa36064aa99b78aa3f4Steve Block        virtual bool selectItemAlignmentFollowsMenuWritingDirection();
1769e4593fcc93d1bf0b5d5aa00b17ed2177c8eed06Steve Block        virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const;
1779e4593fcc93d1bf0b5d5aa00b17ed2177c8eed06Steve Block        virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const;
1789e4593fcc93d1bf0b5d5aa00b17ed2177c8eed06Steve Block
17902f88d26cf0763bd684a752045695aaf902844bcTeng-Hui Zhu#if ENABLE(CONTEXT_MENUS)
18002f88d26cf0763bd684a752045695aaf902844bcTeng-Hui Zhu        virtual void showContextMenu();
18102f88d26cf0763bd684a752045695aaf902844bcTeng-Hui Zhu#endif
18202f88d26cf0763bd684a752045695aaf902844bcTeng-Hui Zhu
183bb6c037d4178a0b35e964651e09323c8d714f435Teng-Hui Zhu#if ENABLE(FULLSCREEN_API)
184bb6c037d4178a0b35e964651e09323c8d714f435Teng-Hui Zhu        virtual void exitFullScreenForElement(Element*);
185bb6c037d4178a0b35e964651e09323c8d714f435Teng-Hui Zhu#endif
186bb6c037d4178a0b35e964651e09323c8d714f435Teng-Hui Zhu
187cc2679391d89b57997f78365d54d99c9ae062db3Nicolas Roard#if ENABLE(VIDEO)
188cc2679391d89b57997f78365d54d99c9ae062db3Nicolas Roard        virtual bool supportsFullscreenForNode(const WebCore::Node*);
189cc2679391d89b57997f78365d54d99c9ae062db3Nicolas Roard        virtual void enterFullscreenForNode(WebCore::Node*);
190cc2679391d89b57997f78365d54d99c9ae062db3Nicolas Roard        virtual void exitFullscreenForNode(WebCore::Node*);
191cc2679391d89b57997f78365d54d99c9ae062db3Nicolas Roard#endif
192cc2679391d89b57997f78365d54d99c9ae062db3Nicolas Roard
193ee694a26d2441be3e10fa2d66232ec3d3a07f5c7Steve Block        virtual void* webView() const { return 0; }
194ee694a26d2441be3e10fa2d66232ec3d3a07f5c7Steve Block
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    private:
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        android::WebFrame* m_webFrame;
197797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard#if USE(ACCELERATED_COMPOSITING)
198797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard        WebCore::GraphicsLayer* m_rootGraphicsLayer;
199bad8b91f026f7b63252113590bab4c73a7092214Nicolas Roard        bool m_needsLayerSync;
200797e4f1087e408060f2812c79bddcd2b73a3830dNicolas Roard#endif
2016172bff036b26f8ea852196733426c6ff608ed8aBen Murdoch        WTF::ThreadCondition m_quotaThreadCondition;
2026172bff036b26f8ea852196733426c6ff608ed8aBen Murdoch        WTF::Mutex m_quotaThreadLock;
20363da3f053ab8a3590e4dcd4a51056cb2d277a7d8Steve Block        unsigned long long m_newQuota;
20463da3f053ab8a3590e4dcd4a51056cb2d277a7d8Steve Block        bool m_isNewQuotaSet;
205fd1655b631e1deeaf68e31673486b66e707b6f36Ben Murdoch        bool m_triedToReclaimDBQuota;
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    };
2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
211