15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012, Samsung Electronics. All rights reserved. 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful, 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB. If not, write to 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA. 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef Chrome_h 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define Chrome_h 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "core/loader/NavigationPolicy.h" 2609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/page/FocusType.h" 27a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/Cursor.h" 281e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/HostWindow.h" 295d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "platform/heap/Handle.h" 30591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/Forward.h" 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class ChromeClient; 35926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class ColorChooser; 36926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class ColorChooserClient; 37926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class DateTimeChooser; 38926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class DateTimeChooserClient; 39926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class FileChooser; 40926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class FloatRect; 41d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class LocalFrame; 4209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class HTMLInputElement; 43926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class HitTestResult; 44926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class IntRect; 45926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class Node; 46926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class Page; 47926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class PopupMenu; 48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class PopupMenuClient; 49926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class PopupOpeningObserver; 50926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 51926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)struct DateTimeChooserParameters; 521e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)struct ViewportDescription; 5302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdochstruct WindowFeatures; 5402772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch 5509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class Chrome FINAL : public HostWindow { 56926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)public: 5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual ~Chrome(); 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) static PassOwnPtr<Chrome> create(Page*, ChromeClient*); 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) ChromeClient& client() { return *m_client; } 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // HostWindow methods. 6453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) virtual void invalidateContentsAndRootView(const IntRect&) OVERRIDE; 6553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) virtual void invalidateContentsForSlowScroll(const IntRect&) OVERRIDE; 66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) virtual IntRect rootViewToScreen(const IntRect&) const OVERRIDE; 6751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) virtual blink::WebScreenInfo screenInfo() const OVERRIDE; 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) virtual void scheduleAnimation() OVERRIDE; 70926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 71d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void contentsSizeChanged(LocalFrame*, const IntSize&) const; 72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 73f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) void setCursor(const Cursor&); 74f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void setWindowRect(const FloatRect&) const; 76926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) FloatRect windowRect() const; 77926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 78926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) FloatRect pageRect() const; 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void focus() const; 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) bool canTakeFocus(FocusType) const; 8309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void takeFocus(FocusType) const; 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void focusedNodeChanged(Node*) const; 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch void show(NavigationPolicy = NavigationPolicyIgnore) const; 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool canRunModal() const; 90926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool canRunModalNow() const; 91926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void runModal() const; 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch void setWindowFeatures(const WindowFeatures&) const; 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9502772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch bool toolbarsVisible() const; 96926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool statusbarVisible() const; 97926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool scrollbarsVisible() const; 98926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool menubarVisible() const; 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 100926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool canRunBeforeUnloadConfirmPanel(); 101d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool runBeforeUnloadConfirmPanel(const String& message, LocalFrame*); 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 103926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void closeWindowSoon(); 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 105d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void runJavaScriptAlert(LocalFrame*, const String&); 106d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool runJavaScriptConfirm(LocalFrame*, const String&); 107d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool runJavaScriptPrompt(LocalFrame*, const String& message, const String& defaultValue, String& result); 108d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setStatusbarText(LocalFrame*, const String&); 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 110926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) IntRect windowResizerRect() const; 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 112926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags); 113926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 114926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void setToolTip(const HitTestResult&); 115926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 116d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void print(LocalFrame*); 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1186f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch PassOwnPtr<ColorChooser> createColorChooser(LocalFrame*, ColorChooserClient*, const Color& initialColor); 1197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtr<DateTimeChooser> openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&); 12009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void openTextDataListChooser(HTMLInputElement&); 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 122d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void runOpenPanel(LocalFrame*, PassRefPtr<FileChooser>); 123926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void enumerateChosenDirectory(FileChooser*); 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1251e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) void dispatchViewportPropertiesDidChange(const ViewportDescription&) const; 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 127926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool hasOpenedPopup() const; 1287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<PopupMenu> createPopupMenu(LocalFrame&, PopupMenuClient*) const; 129926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 130926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void registerPopupOpeningObserver(PopupOpeningObserver*); 131926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void unregisterPopupOpeningObserver(PopupOpeningObserver*); 132926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1336f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch void willBeDestroyed(); 1346f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch 135926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)private: 136926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Chrome(Page*, ChromeClient*); 137926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void notifyPopupOpeningObservers() const; 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 139926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Page* m_page; 140926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) ChromeClient* m_client; 141926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Vector<PopupOpeningObserver*> m_popupOpeningObservers; 142926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}; 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // Chrome_h 147