WebViewImpl.h revision 2bde8e466a4451c7319e3a072d118917957d6554
1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 28a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block * Copyright (C) 2010 Google Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifndef WebViewImpl_h 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#define WebViewImpl_h 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 346c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "WebNavigationPolicy.h" 356c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "WebPoint.h" 3668513a70bcd92384395513322f1b801e7bf9c729Steve Block#include "WebRect.h" 376c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "WebSize.h" 386c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "WebString.h" 396c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "WebView.h" 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "ChromeClientImpl.h" 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "ContextMenuClientImpl.h" 43643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "DragClientImpl.h" 44643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "EditorClientImpl.h" 4568513a70bcd92384395513322f1b801e7bf9c729Steve Block#include "GraphicsContext3D.h" 46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "GraphicsLayer.h" 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "InspectorClientImpl.h" 4868513a70bcd92384395513322f1b801e7bf9c729Steve Block#include "IntRect.h" 49dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "LayerRendererChromium.h" 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "NotificationPresenterImpl.h" 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/OwnPtr.h> 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/RefCounted.h> 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebCore { 55643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass ChromiumDataObject; 562fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass DocumentLoader; 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass Frame; 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass HistoryItem; 59643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass HitTestResult; 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass KeyboardEvent; 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass Page; 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass PlatformKeyboardEvent; 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass PopupContainer; 648a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockclass PopupMenuClient; 65643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass Range; 66643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass RenderTheme; 67643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass Widget; 68643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 70643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 71643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass AutocompletePopupMenuClient; 728a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockclass AutoFillPopupMenuClient; 73643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass ContextMenuClientImpl; 74dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochclass DeviceOrientationClientProxy; 7506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenclass DragScrollTimer; 76f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochclass GeolocationClientProxy; 77e14391e94c850b8bd03680c23b38978db68687a8John Reckclass SpeechInputClientImpl; 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebAccessibilityObject; 7906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenclass WebDevToolsAgentClient; 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebDevToolsAgentPrivate; 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebFrameImpl; 82dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass WebImage; 83643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebKeyboardEvent; 84643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebMouseEvent; 85643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebMouseWheelEvent; 86643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebSettingsImpl; 87dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass WebTouchEvent; 88643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebViewImpl : public WebView, public RefCounted<WebViewImpl> { 90643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockpublic: 91643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // WebWidget methods: 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void close(); 93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebSize size() { return m_size; } 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void resize(const WebSize&); 95ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch virtual void animate(); 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void layout(); 97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void paint(WebCanvas*, const WebRect&); 9868513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual void themeChanged(); 9968513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual void composite(bool finish); 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool handleInputEvent(const WebInputEvent&); 101643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void mouseCaptureLost(); 102643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setFocus(bool enable); 10306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen virtual bool setComposition( 10406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen const WebString& text, 10506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen const WebVector<WebCompositionUnderline>& underlines, 10606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen int selectionStart, 10706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen int selectionEnd); 10806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen virtual bool confirmComposition(); 109cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool confirmComposition(const WebString& text); 11006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen virtual WebTextInputType textInputType(); 11106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen virtual WebRect caretOrSelectionBounds(); 112643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setTextDirection(WebTextDirection direction); 11321939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual bool isAcceleratedCompositingActive() const; 114643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 115643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // WebView methods: 116643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void initializeMainFrame(WebFrameClient*); 1172bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void setDevToolsAgentClient(WebDevToolsAgentClient*); 1182bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void setAutoFillClient(WebAutoFillClient*); 1192bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void setSpellCheckClient(WebSpellCheckClient*); 120643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebSettings* settings(); 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebString pageEncoding() const; 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setPageEncoding(const WebString& encoding); 123643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool isTransparent() const; 124643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setIsTransparent(bool value); 125643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool tabsToLinks() const; 126643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setTabsToLinks(bool value); 127643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool tabKeyCyclesThroughElements() const; 128643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setTabKeyCyclesThroughElements(bool value); 129643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool isActive() const; 130643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setIsActive(bool value); 13168513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual void setDomainRelaxationForbidden(bool, const WebString& scheme); 132643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool dispatchBeforeUnloadEvent(); 133643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchUnloadEvent(); 134643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebFrame* mainFrame(); 135643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebFrame* findFrameByName( 136643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebString& name, WebFrame* relativeToFrame); 137643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebFrame* focusedFrame(); 138643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setFocusedFrame(WebFrame* frame); 139643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setInitialFocus(bool reverse); 140643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void clearFocusedNode(); 141a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual void scrollFocusedNodeIntoView(); 142a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual double zoomLevel(); 143a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual double setZoomLevel(bool textOnly, double zoomLevel); 144a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual void zoomLimitsChanged(double minimumZoomLevel, 145a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch double maximumZoomLevel); 146643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void performMediaPlayerAction( 147643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebMediaPlayerAction& action, 148643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& location); 149643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void copyImageAt(const WebPoint& point); 150643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dragSourceEndedAt( 151643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& clientPoint, 152643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& screenPoint, 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDragOperation operation); 154545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dragSourceMovedTo( 155ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block const WebPoint& clientPoint, 156ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block const WebPoint& screenPoint, 157545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch WebDragOperation operation); 158643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dragSourceSystemDragEnded(); 159643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebDragOperation dragTargetDragEnter( 1602bde8e466a4451c7319e3a072d118917957d6554Steve Block const WebDragData&, int identity, // FIXME: remove identity from this function signature. 1612bde8e466a4451c7319e3a072d118917957d6554Steve Block const WebPoint& clientPoint, 1622bde8e466a4451c7319e3a072d118917957d6554Steve Block const WebPoint& screenPoint, 1632bde8e466a4451c7319e3a072d118917957d6554Steve Block WebDragOperationsMask operationsAllowed); 1642bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual WebDragOperation dragTargetDragEnter( 1652bde8e466a4451c7319e3a072d118917957d6554Steve Block const WebDragData&, 166643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& clientPoint, 167643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& screenPoint, 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDragOperationsMask operationsAllowed); 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebDragOperation dragTargetDragOver( 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& clientPoint, 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& screenPoint, 172643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDragOperationsMask operationsAllowed); 173643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dragTargetDragLeave(); 174643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dragTargetDrop( 175643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& clientPoint, 176643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& screenPoint); 177643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual unsigned long createUniqueIdentifierForRequest(); 178643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void inspectElementAt(const WebPoint& point); 179643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebString inspectorSettings() const; 180643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setInspectorSettings(const WebString& settings); 1815af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool inspectorSetting(const WebString& key, WebString* value) const; 1825af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void setInspectorSetting(const WebString& key, 1835af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke const WebString& value); 184643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebDevToolsAgent* devToolsAgent(); 185643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebAccessibilityObject accessibilityObject(); 186967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual void applyAutoFillSuggestions( 187967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch const WebNode&, 188967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch const WebVector<WebString>& names, 189967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch const WebVector<WebString>& labels, 1900617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen const WebVector<WebString>& icons, 191967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch const WebVector<int>& uniqueIDs, 192967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch int separatorIndex); 19321939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void hidePopups(); 194643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setScrollbarColors(unsigned inactiveColor, 195643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unsigned activeColor, 196643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unsigned trackColor); 197d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void setSelectionColors(unsigned activeBackgroundColor, 198d0825bca7fe65beaee391d30da42e937db621564Steve Block unsigned activeForegroundColor, 199d0825bca7fe65beaee391d30da42e937db621564Steve Block unsigned inactiveBackgroundColor, 200d0825bca7fe65beaee391d30da42e937db621564Steve Block unsigned inactiveForegroundColor); 201643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void performCustomContextMenuAction(unsigned action); 202643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 203643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // WebViewImpl 204643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 205643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void setIgnoreInputEvents(bool newValue); 206643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDevToolsAgentPrivate* devToolsAgentPrivate() { return m_devToolsAgent.get(); } 207643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 208643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& lastMouseDownPoint() const 209643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 210643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_lastMouseDownPoint; 211643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 212643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 21381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebCore::Frame* focusedWebCoreFrame() const; 214643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 215643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns the currently focused Node or null if no node has focus. 216643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::Node* focusedWebCoreNode(); 217643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 218643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static WebViewImpl* fromPage(WebCore::Page*); 219643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 220643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebViewClient* client() 221643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 222643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_client; 223643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 224643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 22565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebAutoFillClient* autoFillClient() 22665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch { 22765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_autoFillClient; 22865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 22965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2302bde8e466a4451c7319e3a072d118917957d6554Steve Block WebSpellCheckClient* spellCheckClient() 2312bde8e466a4451c7319e3a072d118917957d6554Steve Block { 2322bde8e466a4451c7319e3a072d118917957d6554Steve Block return m_spellCheckClient; 2332bde8e466a4451c7319e3a072d118917957d6554Steve Block } 2342bde8e466a4451c7319e3a072d118917957d6554Steve Block 235dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Returns the page object associated with this view. This may be null when 236643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the page is shutting down, but will be valid at all other times. 237643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::Page* page() const 238643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 239643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_page.get(); 240643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 241643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 242643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::RenderTheme* theme() const; 243643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 244dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Returns the main frame associated with this view. This may be null when 245643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the page is shutting down, but will be valid at all other times. 246643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrameImpl* mainFrameImpl(); 247643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 248643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // History related methods: 249643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void observeNewNavigation(); 250643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 251643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Event related methods: 252643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseMove(const WebMouseEvent&); 253643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseLeave(const WebMouseEvent&); 254643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseDown(const WebMouseEvent&); 255643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseUp(const WebMouseEvent&); 256643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseContextMenu(const WebMouseEvent&); 257643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseDoubleClick(const WebMouseEvent&); 2580617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen bool mouseWheel(const WebMouseWheelEvent&); 259643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool keyEvent(const WebKeyboardEvent&); 260643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool charEvent(const WebKeyboardEvent&); 261dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool touchEvent(const WebTouchEvent&); 262643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 263643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Handles context menu events orignated via the the keyboard. These 264dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // include the VK_APPS virtual key and the Shift+F10 combine. Code is 265643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // based on the Webkit function bool WebView::handleContextMenuEvent(WPARAM 266643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // wParam, LPARAM lParam) in webkit\webkit\win\WebView.cpp. The only 267643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // significant change in this function is the code to convert from a 268643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Keyboard event to the Right Mouse button down event. 269643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool sendContextMenuEvent(const WebKeyboardEvent&); 270643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 271dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Notifies the WebView that a load has been committed. isNewNavigation 272643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // will be true if a new session history item should be created for that 273643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // load. 274643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void didCommitLoad(bool* isNewNavigation); 275643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 276e14391e94c850b8bd03680c23b38978db68687a8John Reck // Returns true if popup menus should be rendered by the browser, false if 277e14391e94c850b8bd03680c23b38978db68687a8John Reck // they should be rendered by WebKit (which is the default). 278e14391e94c850b8bd03680c23b38978db68687a8John Reck static bool useExternalPopupMenus(); 279e14391e94c850b8bd03680c23b38978db68687a8John Reck 280643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool contextMenuAllowed() const 281643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 282643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_contextMenuAllowed; 283643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 284643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 285643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Set the disposition for how this webview is to be initially shown. 286643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void setInitialNavigationPolicy(WebNavigationPolicy policy) 287643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 288643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_initialNavigationPolicy = policy; 289643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 290643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebNavigationPolicy initialNavigationPolicy() const 291643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 292643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_initialNavigationPolicy; 293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 294643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Determines whether a page should e.g. be opened in a background tab. 296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns false if it has no opinion, in which case it doesn't set *policy. 297643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static bool navigationPolicyFromMouseEvent( 298643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unsigned short button, 299643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool ctrl, 300643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool shift, 301643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool alt, 302643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool meta, 303643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebNavigationPolicy*); 304643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 305643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Start a system drag and drop operation. 306643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void startDragging( 307643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebDragData& dragData, 308dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebDragOperationsMask mask, 309dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const WebImage& dragImage, 310dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const WebPoint& dragImageOffset); 311643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 312ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block void autoFillPopupDidHide() 3138a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block { 314ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block m_autoFillPopupShowing = false; 3158a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block } 316643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 317643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if ENABLE(NOTIFICATIONS) 318643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns the provider of desktop notifications. 319643ca7872b450ea4efacab6188849e5aac2ba161Steve Block NotificationPresenterImpl* notificationPresenterImpl(); 320643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 321643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 322643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Tries to scroll a frame or any parent of a frame. Returns true if the view 323643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // was scrolled. 324643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool propagateScroll(WebCore::ScrollDirection, WebCore::ScrollGranularity); 325643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 326dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Notification that a popup was opened/closed. 327dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void popupOpened(WebCore::PopupContainer* popupContainer); 328dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void popupClosed(WebCore::PopupContainer* popupContainer); 329dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 330ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block void hideAutoFillPopup(); 33121939df44de1705786c545cd1bf519d47250322dBen Murdoch 332bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // Returns the input event we're currently processing. This is used in some 333bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // cases where the WebCore DOM event doesn't have the information we need. 334643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static const WebInputEvent* currentInputEvent() 335643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 336643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_currentInputEvent; 337643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 338643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 339dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if USE(ACCELERATED_COMPOSITING) 3405abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick bool allowsAcceleratedCompositing(); 3412bde8e466a4451c7319e3a072d118917957d6554Steve Block bool pageHasRTLStyle() const; 34268513a70bcd92384395513322f1b801e7bf9c729Steve Block void setRootGraphicsLayer(WebCore::PlatformLayer*); 34368513a70bcd92384395513322f1b801e7bf9c729Steve Block void setRootLayerNeedsDisplay(); 34468513a70bcd92384395513322f1b801e7bf9c729Steve Block void scrollRootLayerRect(const WebCore::IntSize& scrollDelta, const WebCore::IntRect& clipRect); 34568513a70bcd92384395513322f1b801e7bf9c729Steve Block void invalidateRootLayerRect(const WebCore::IntRect&); 346dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 34768513a70bcd92384395513322f1b801e7bf9c729Steve Block 34868513a70bcd92384395513322f1b801e7bf9c729Steve Block // Returns the onscreen 3D context used by the compositor. This is 34968513a70bcd92384395513322f1b801e7bf9c729Steve Block // used by the renderer's code to set up resource sharing between 35068513a70bcd92384395513322f1b801e7bf9c729Steve Block // the compositor's context and subordinate contexts for APIs like 35168513a70bcd92384395513322f1b801e7bf9c729Steve Block // WebGL. Returns 0 if compositing support is not compiled in. 35268513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual WebGraphicsContext3D* graphicsContext3D(); 35368513a70bcd92384395513322f1b801e7bf9c729Steve Block 354dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebCore::PopupContainer* selectPopup() const { return m_selectPopup.get(); } 355dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 3566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen // Returns true if the event leads to scrolling. 3576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen static bool mapKeyCodeForScroll(int keyCode, 3586c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen WebCore::ScrollDirection* scrollDirection, 3596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen WebCore::ScrollGranularity* scrollGranularity); 3606c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 361a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // Called by a full frame plugin inside this view to inform it that its 362a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // zoom level has been updated. The plugin should only call this function 363a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // if the zoom change was triggered by the browser, it's only needed in case 364a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // a plugin can update its own zoom, say because of its own UI. 365a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void fullFramePluginZoomLevelChanged(double zoomLevel); 366a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 367643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockprivate: 368643ca7872b450ea4efacab6188849e5aac2ba161Steve Block friend class WebView; // So WebView::Create can call our constructor 369643ca7872b450ea4efacab6188849e5aac2ba161Steve Block friend class WTF::RefCounted<WebViewImpl>; 370643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 371dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block enum DragAction { 372dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block DragEnter, 373dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block DragOver 374dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block }; 375dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 3762bde8e466a4451c7319e3a072d118917957d6554Steve Block WebViewImpl(WebViewClient*); 377643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ~WebViewImpl(); 378643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 379643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns true if the event was actually processed. 380643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool keyEventDefault(const WebKeyboardEvent&); 381643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 382dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Returns true if the select popup has consumed the event. 383dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool selectPopupHandleKeyEvent(const WebKeyboardEvent&); 384dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 385643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns true if the autocomple has consumed the event. 386643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool autocompleteHandleKeyEvent(const WebKeyboardEvent&); 387643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 388ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block // Repaints the AutoFill popup. Should be called when the suggestions 389ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block // have changed. Note that this should only be called when the AutoFill 3908a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block // popup is showing. 391ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block void refreshAutoFillPopup(); 392643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 393643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns true if the view was scrolled. 394643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool scrollViewWithKeyboard(int keyCode, int modifiers); 395643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 396dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void hideSelectPopup(); 397dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 398643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Converts |pos| from window coordinates to contents coordinates and gets 399643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the HitTestResult for it. 400643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::HitTestResult hitTestResultForWindowPos(const WebCore::IntPoint&); 401643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 402dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Consolidate some common code between starting a drag over a target and 403dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // updating a drag over a target. If we're starting a drag, |isEntering| 404dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // should be true. 405dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebDragOperation dragTargetDragEnterOrOver(const WebPoint& clientPoint, 406dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const WebPoint& screenPoint, 407dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block DragAction); 408dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 409dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if USE(ACCELERATED_COMPOSITING) 41021939df44de1705786c545cd1bf519d47250322dBen Murdoch void setIsAcceleratedCompositingActive(bool); 41168513a70bcd92384395513322f1b801e7bf9c729Steve Block void doComposite(); 41268513a70bcd92384395513322f1b801e7bf9c729Steve Block void doPixelReadbackToCanvas(WebCanvas*, const WebCore::IntRect&); 413e14391e94c850b8bd03680c23b38978db68687a8John Reck void reallocateRenderer(); 4142bde8e466a4451c7319e3a072d118917957d6554Steve Block void updateLayerRendererViewport(); 415dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 416dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 417643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebViewClient* m_client; 41865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebAutoFillClient* m_autoFillClient; 4192bde8e466a4451c7319e3a072d118917957d6554Steve Block WebSpellCheckClient* m_spellCheckClient; 420643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 421643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ChromeClientImpl m_chromeClientImpl; 422643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ContextMenuClientImpl m_contextMenuClientImpl; 423643ca7872b450ea4efacab6188849e5aac2ba161Steve Block DragClientImpl m_dragClientImpl; 424643ca7872b450ea4efacab6188849e5aac2ba161Steve Block EditorClientImpl m_editorClientImpl; 425643ca7872b450ea4efacab6188849e5aac2ba161Steve Block InspectorClientImpl m_inspectorClientImpl; 426643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 427643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebSize m_size; 428643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 429643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebPoint m_lastMousePosition; 430643ca7872b450ea4efacab6188849e5aac2ba161Steve Block OwnPtr<WebCore::Page> m_page; 431643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 432dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // This flag is set when a new navigation is detected. It is used to satisfy 433643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the corresponding argument to WebFrameClient::didCommitProvisionalLoad. 434643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_observedNewNavigation; 435643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifndef NDEBUG 436643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Used to assert that the new navigation we observed is the same navigation 437643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // when we make use of m_observedNewNavigation. 438643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebCore::DocumentLoader* m_newNavigationLoader; 439643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 440643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 441643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // An object that can be used to manipulate m_page->settings() without linking 442dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // against WebCore. This is lazily allocated the first time GetWebSettings() 443643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // is called. 444643ca7872b450ea4efacab6188849e5aac2ba161Steve Block OwnPtr<WebSettingsImpl> m_webSettings; 445643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 446643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A copy of the web drop data object we received from the browser. 447643ca7872b450ea4efacab6188849e5aac2ba161Steve Block RefPtr<WebCore::ChromiumDataObject> m_currentDragData; 448643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 449643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The point relative to the client area where the mouse was last pressed 450643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // down. This is used by the drag client to determine what was under the 451643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // mouse when the drag was initiated. We need to track this here in 452643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // WebViewImpl since DragClient::startDrag does not pass the position the 453643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // mouse was at when the drag was initiated, only the current point, which 454643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // can be misleading as it is usually not over the element the user actually 455643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // dragged by the time a drag is initiated. 456643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebPoint m_lastMouseDownPoint; 457643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 458dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Keeps track of the current zoom level. 0 means no zoom, positive numbers 459643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // mean zoom in, negative numbers mean zoom out. 460a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch double m_zoomLevel; 461a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 462a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch double m_minimumZoomLevel; 463643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 464a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch double m_maximumZoomLevel; 46568513a70bcd92384395513322f1b801e7bf9c729Steve Block 466643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_contextMenuAllowed; 467643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 468643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_doingDragAndDrop; 469643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 470643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_ignoreInputEvents; 471643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 472643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Webkit expects keyPress events to be suppressed if the associated keyDown 473643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // event was handled. Safari implements this behavior by peeking out the 474643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // associated WM_CHAR event if the keydown was handled. We emulate 475643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // this behavior by setting this flag if the keyDown was handled. 476643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_suppressNextKeypressEvent; 477643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 478643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The policy for how this webview is to be initially shown. 479643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebNavigationPolicy m_initialNavigationPolicy; 480643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 481643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Represents whether or not this object should process incoming IME events. 482643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_imeAcceptEvents; 483643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 484643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The available drag operations (copy, move link...) allowed by the source. 485643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDragOperation m_operationsAllowed; 486643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 487643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The current drag operation as negotiated by the source and destination. 488643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // When not equal to DragOperationNone, the drag data can be dropped onto the 489643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // current drop target in this WebView (the drop target can accept the drop). 490643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDragOperation m_dragOperation; 491643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 492ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block // Whether an AutoFill popup is currently showing. 493ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block bool m_autoFillPopupShowing; 494643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 4958a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block // The AutoFill popup client. 4968a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block OwnPtr<AutoFillPopupMenuClient> m_autoFillPopupClient; 497643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 498ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block // The AutoFill popup. 499ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block RefPtr<WebCore::PopupContainer> m_autoFillPopup; 5008a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 501dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // The popup associated with a select element. 502dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block RefPtr<WebCore::PopupContainer> m_selectPopup; 503dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 504643ca7872b450ea4efacab6188849e5aac2ba161Steve Block OwnPtr<WebDevToolsAgentPrivate> m_devToolsAgent; 505643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 506643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Whether the webview is rendering transparently. 507643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_isTransparent; 508643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 509643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Whether the user can press tab to focus links. 510643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_tabsToLinks; 511643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 512643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Inspector settings. 513643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebString m_inspectorSettings; 514643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 515dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch typedef HashMap<WTF::String, WTF::String> SettingsMap; 5165af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke OwnPtr<SettingsMap> m_inspectorSettingsMap; 51706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen OwnPtr<DragScrollTimer> m_dragScrollTimer; 5185af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 519643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if ENABLE(NOTIFICATIONS) 520643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The provider of desktop notifications; 521643ca7872b450ea4efacab6188849e5aac2ba161Steve Block NotificationPresenterImpl m_notificationPresenter; 522643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 523643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 524e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block // If set, the (plugin) node which has mouse capture. 525e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block RefPtr<WebCore::Node> m_mouseCaptureNode; 526dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 527dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if USE(ACCELERATED_COMPOSITING) 528bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WebCore::IntRect m_rootLayerScrollDamage; 529bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen RefPtr<WebCore::LayerRendererChromium> m_layerRenderer; 53021939df44de1705786c545cd1bf519d47250322dBen Murdoch bool m_isAcceleratedCompositingActive; 5315abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick bool m_compositorCreationFailed; 5322bde8e466a4451c7319e3a072d118917957d6554Steve Block // If true, the graphics context is being restored. 5332bde8e466a4451c7319e3a072d118917957d6554Steve Block bool m_recreatingGraphicsContext; 534dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 535643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static const WebInputEvent* m_currentInputEvent; 53606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 5370617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#if ENABLE(INPUT_SPEECH) 538e14391e94c850b8bd03680c23b38978db68687a8John Reck OwnPtr<SpeechInputClientImpl> m_speechInputClient; 5390617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#endif 54068513a70bcd92384395513322f1b801e7bf9c729Steve Block // If we attempt to fetch the on-screen GraphicsContext3D before 54168513a70bcd92384395513322f1b801e7bf9c729Steve Block // the compositor has been turned on, we need to instantiate it 54268513a70bcd92384395513322f1b801e7bf9c729Steve Block // early. This member holds on to the GC3D in this case. 543a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch RefPtr<WebCore::GraphicsContext3D> m_temporaryOnscreenGraphicsContext3D; 544dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch OwnPtr<DeviceOrientationClientProxy> m_deviceOrientationClientProxy; 545f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch OwnPtr<GeolocationClientProxy> m_geolocationClientProxy; 546643ca7872b450ea4efacab6188849e5aac2ba161Steve Block}; 547643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 548643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit 549643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 550643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 551