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(); 1122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual bool selectionRange(WebPoint& start, WebPoint& end) const; 113643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setTextDirection(WebTextDirection direction); 11421939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual bool isAcceleratedCompositingActive() const; 115643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 116643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // WebView methods: 117643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void initializeMainFrame(WebFrameClient*); 1182bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void setDevToolsAgentClient(WebDevToolsAgentClient*); 1192bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void setAutoFillClient(WebAutoFillClient*); 1202bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void setSpellCheckClient(WebSpellCheckClient*); 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebSettings* settings(); 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebString pageEncoding() const; 123643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setPageEncoding(const WebString& encoding); 124643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool isTransparent() const; 125643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setIsTransparent(bool value); 126643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool tabsToLinks() const; 127643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setTabsToLinks(bool value); 128643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool tabKeyCyclesThroughElements() const; 129643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setTabKeyCyclesThroughElements(bool value); 130643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool isActive() const; 131643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setIsActive(bool value); 13268513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual void setDomainRelaxationForbidden(bool, const WebString& scheme); 133643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool dispatchBeforeUnloadEvent(); 134643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchUnloadEvent(); 135643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebFrame* mainFrame(); 136643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebFrame* findFrameByName( 137643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebString& name, WebFrame* relativeToFrame); 138643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebFrame* focusedFrame(); 139643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setFocusedFrame(WebFrame* frame); 140643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setInitialFocus(bool reverse); 141643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void clearFocusedNode(); 142a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual void scrollFocusedNodeIntoView(); 143a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual double zoomLevel(); 144a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual double setZoomLevel(bool textOnly, double zoomLevel); 145a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual void zoomLimitsChanged(double minimumZoomLevel, 146a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch double maximumZoomLevel); 147643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void performMediaPlayerAction( 148643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebMediaPlayerAction& action, 149643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& location); 150643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void copyImageAt(const WebPoint& point); 151643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dragSourceEndedAt( 152643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& clientPoint, 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& screenPoint, 154643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDragOperation operation); 155545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dragSourceMovedTo( 156ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block const WebPoint& clientPoint, 157ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block const WebPoint& screenPoint, 158545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch WebDragOperation operation); 159643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dragSourceSystemDragEnded(); 160643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebDragOperation dragTargetDragEnter( 1612bde8e466a4451c7319e3a072d118917957d6554Steve Block const WebDragData&, 162643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& clientPoint, 163643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& screenPoint, 164643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDragOperationsMask operationsAllowed); 165643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebDragOperation dragTargetDragOver( 166643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& clientPoint, 167643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& screenPoint, 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDragOperationsMask operationsAllowed); 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dragTargetDragLeave(); 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dragTargetDrop( 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& clientPoint, 172643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& screenPoint); 173643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual unsigned long createUniqueIdentifierForRequest(); 174643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void inspectElementAt(const WebPoint& point); 175643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebString inspectorSettings() const; 176643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setInspectorSettings(const WebString& settings); 1775af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool inspectorSetting(const WebString& key, WebString* value) const; 1785af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void setInspectorSetting(const WebString& key, 1795af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke const WebString& value); 180643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebDevToolsAgent* devToolsAgent(); 181643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebAccessibilityObject accessibilityObject(); 182967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual void applyAutoFillSuggestions( 183967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch const WebNode&, 184967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch const WebVector<WebString>& names, 185967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch const WebVector<WebString>& labels, 1860617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen const WebVector<WebString>& icons, 187967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch const WebVector<int>& uniqueIDs, 188967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch int separatorIndex); 18921939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void hidePopups(); 190643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setScrollbarColors(unsigned inactiveColor, 191643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unsigned activeColor, 192643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unsigned trackColor); 193d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void setSelectionColors(unsigned activeBackgroundColor, 194d0825bca7fe65beaee391d30da42e937db621564Steve Block unsigned activeForegroundColor, 195d0825bca7fe65beaee391d30da42e937db621564Steve Block unsigned inactiveBackgroundColor, 196d0825bca7fe65beaee391d30da42e937db621564Steve Block unsigned inactiveForegroundColor); 197643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void performCustomContextMenuAction(unsigned action); 198643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 199643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // WebViewImpl 200643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 201643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void setIgnoreInputEvents(bool newValue); 202643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDevToolsAgentPrivate* devToolsAgentPrivate() { return m_devToolsAgent.get(); } 203643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 204643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebPoint& lastMouseDownPoint() const 205643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 206643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_lastMouseDownPoint; 207643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 208643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 20981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebCore::Frame* focusedWebCoreFrame() const; 210643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 211643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns the currently focused Node or null if no node has focus. 212643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::Node* focusedWebCoreNode(); 213643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 214643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static WebViewImpl* fromPage(WebCore::Page*); 215643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 216643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebViewClient* client() 217643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 218643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_client; 219643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 220643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 22165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebAutoFillClient* autoFillClient() 22265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch { 22365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_autoFillClient; 22465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 22565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2262bde8e466a4451c7319e3a072d118917957d6554Steve Block WebSpellCheckClient* spellCheckClient() 2272bde8e466a4451c7319e3a072d118917957d6554Steve Block { 2282bde8e466a4451c7319e3a072d118917957d6554Steve Block return m_spellCheckClient; 2292bde8e466a4451c7319e3a072d118917957d6554Steve Block } 2302bde8e466a4451c7319e3a072d118917957d6554Steve Block 231dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Returns the page object associated with this view. This may be null when 232643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the page is shutting down, but will be valid at all other times. 233643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::Page* page() const 234643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 235643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_page.get(); 236643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 237643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 238643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::RenderTheme* theme() const; 239643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 240dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Returns the main frame associated with this view. This may be null when 241643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the page is shutting down, but will be valid at all other times. 242643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrameImpl* mainFrameImpl(); 243643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 244643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // History related methods: 245643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void observeNewNavigation(); 246643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 247643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Event related methods: 248643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseMove(const WebMouseEvent&); 249643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseLeave(const WebMouseEvent&); 250643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseDown(const WebMouseEvent&); 251643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseUp(const WebMouseEvent&); 252643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseContextMenu(const WebMouseEvent&); 253643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void mouseDoubleClick(const WebMouseEvent&); 2540617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen bool mouseWheel(const WebMouseWheelEvent&); 255643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool keyEvent(const WebKeyboardEvent&); 256643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool charEvent(const WebKeyboardEvent&); 257dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool touchEvent(const WebTouchEvent&); 258643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 259643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Handles context menu events orignated via the the keyboard. These 260dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // include the VK_APPS virtual key and the Shift+F10 combine. Code is 261643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // based on the Webkit function bool WebView::handleContextMenuEvent(WPARAM 262643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // wParam, LPARAM lParam) in webkit\webkit\win\WebView.cpp. The only 263643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // significant change in this function is the code to convert from a 264643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Keyboard event to the Right Mouse button down event. 265643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool sendContextMenuEvent(const WebKeyboardEvent&); 266643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 267dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Notifies the WebView that a load has been committed. isNewNavigation 268643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // will be true if a new session history item should be created for that 269643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // load. 270643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void didCommitLoad(bool* isNewNavigation); 271643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 272e14391e94c850b8bd03680c23b38978db68687a8John Reck // Returns true if popup menus should be rendered by the browser, false if 273e14391e94c850b8bd03680c23b38978db68687a8John Reck // they should be rendered by WebKit (which is the default). 274e14391e94c850b8bd03680c23b38978db68687a8John Reck static bool useExternalPopupMenus(); 275e14391e94c850b8bd03680c23b38978db68687a8John Reck 276643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool contextMenuAllowed() const 277643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 278643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_contextMenuAllowed; 279643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 280643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 281643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Set the disposition for how this webview is to be initially shown. 282643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void setInitialNavigationPolicy(WebNavigationPolicy policy) 283643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 284643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_initialNavigationPolicy = policy; 285643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 286643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebNavigationPolicy initialNavigationPolicy() const 287643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 288643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_initialNavigationPolicy; 289643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 290643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 291643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Determines whether a page should e.g. be opened in a background tab. 292643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns false if it has no opinion, in which case it doesn't set *policy. 293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static bool navigationPolicyFromMouseEvent( 294643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unsigned short button, 295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool ctrl, 296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool shift, 297643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool alt, 298643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool meta, 299643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebNavigationPolicy*); 300643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 301643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Start a system drag and drop operation. 302643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void startDragging( 303643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebDragData& dragData, 304dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebDragOperationsMask mask, 305dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const WebImage& dragImage, 306dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const WebPoint& dragImageOffset); 307643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 308ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block void autoFillPopupDidHide() 3098a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block { 310ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block m_autoFillPopupShowing = false; 3118a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block } 312643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 313643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if ENABLE(NOTIFICATIONS) 314643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns the provider of desktop notifications. 315643ca7872b450ea4efacab6188849e5aac2ba161Steve Block NotificationPresenterImpl* notificationPresenterImpl(); 316643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 317643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 318643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Tries to scroll a frame or any parent of a frame. Returns true if the view 319643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // was scrolled. 320643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool propagateScroll(WebCore::ScrollDirection, WebCore::ScrollGranularity); 321643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 322dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Notification that a popup was opened/closed. 323dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void popupOpened(WebCore::PopupContainer* popupContainer); 324dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void popupClosed(WebCore::PopupContainer* popupContainer); 325dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 326ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block void hideAutoFillPopup(); 32721939df44de1705786c545cd1bf519d47250322dBen Murdoch 328bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // Returns the input event we're currently processing. This is used in some 329bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // cases where the WebCore DOM event doesn't have the information we need. 330643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static const WebInputEvent* currentInputEvent() 331643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 332643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_currentInputEvent; 333643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 334643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 335dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if USE(ACCELERATED_COMPOSITING) 3365abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick bool allowsAcceleratedCompositing(); 3372bde8e466a4451c7319e3a072d118917957d6554Steve Block bool pageHasRTLStyle() const; 33868513a70bcd92384395513322f1b801e7bf9c729Steve Block void setRootGraphicsLayer(WebCore::PlatformLayer*); 33968513a70bcd92384395513322f1b801e7bf9c729Steve Block void setRootLayerNeedsDisplay(); 34068513a70bcd92384395513322f1b801e7bf9c729Steve Block void scrollRootLayerRect(const WebCore::IntSize& scrollDelta, const WebCore::IntRect& clipRect); 34168513a70bcd92384395513322f1b801e7bf9c729Steve Block void invalidateRootLayerRect(const WebCore::IntRect&); 342dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 34368513a70bcd92384395513322f1b801e7bf9c729Steve Block 34468513a70bcd92384395513322f1b801e7bf9c729Steve Block // Returns the onscreen 3D context used by the compositor. This is 34568513a70bcd92384395513322f1b801e7bf9c729Steve Block // used by the renderer's code to set up resource sharing between 34668513a70bcd92384395513322f1b801e7bf9c729Steve Block // the compositor's context and subordinate contexts for APIs like 34768513a70bcd92384395513322f1b801e7bf9c729Steve Block // WebGL. Returns 0 if compositing support is not compiled in. 34868513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual WebGraphicsContext3D* graphicsContext3D(); 34968513a70bcd92384395513322f1b801e7bf9c729Steve Block 350dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebCore::PopupContainer* selectPopup() const { return m_selectPopup.get(); } 351dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 3526c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen // Returns true if the event leads to scrolling. 3536c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen static bool mapKeyCodeForScroll(int keyCode, 3546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen WebCore::ScrollDirection* scrollDirection, 3556c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen WebCore::ScrollGranularity* scrollGranularity); 3566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 357a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // Called by a full frame plugin inside this view to inform it that its 358a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // zoom level has been updated. The plugin should only call this function 359a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // if the zoom change was triggered by the browser, it's only needed in case 360a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // a plugin can update its own zoom, say because of its own UI. 361a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void fullFramePluginZoomLevelChanged(double zoomLevel); 362a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 363643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockprivate: 364643ca7872b450ea4efacab6188849e5aac2ba161Steve Block friend class WebView; // So WebView::Create can call our constructor 365643ca7872b450ea4efacab6188849e5aac2ba161Steve Block friend class WTF::RefCounted<WebViewImpl>; 366643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 367dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block enum DragAction { 368dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block DragEnter, 369dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block DragOver 370dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block }; 371dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 3722bde8e466a4451c7319e3a072d118917957d6554Steve Block WebViewImpl(WebViewClient*); 373643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ~WebViewImpl(); 374643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 375643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns true if the event was actually processed. 376643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool keyEventDefault(const WebKeyboardEvent&); 377643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 378dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Returns true if the select popup has consumed the event. 379dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool selectPopupHandleKeyEvent(const WebKeyboardEvent&); 380dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 381643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns true if the autocomple has consumed the event. 382643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool autocompleteHandleKeyEvent(const WebKeyboardEvent&); 383643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 384ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block // Repaints the AutoFill popup. Should be called when the suggestions 385ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block // have changed. Note that this should only be called when the AutoFill 3868a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block // popup is showing. 387ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block void refreshAutoFillPopup(); 388643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 389643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns true if the view was scrolled. 390643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool scrollViewWithKeyboard(int keyCode, int modifiers); 391643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 392dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void hideSelectPopup(); 393dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 394643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Converts |pos| from window coordinates to contents coordinates and gets 395643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the HitTestResult for it. 396643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::HitTestResult hitTestResultForWindowPos(const WebCore::IntPoint&); 397643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 398dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Consolidate some common code between starting a drag over a target and 399dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // updating a drag over a target. If we're starting a drag, |isEntering| 400dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // should be true. 401dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebDragOperation dragTargetDragEnterOrOver(const WebPoint& clientPoint, 402dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const WebPoint& screenPoint, 403dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block DragAction); 404dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 405dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if USE(ACCELERATED_COMPOSITING) 40621939df44de1705786c545cd1bf519d47250322dBen Murdoch void setIsAcceleratedCompositingActive(bool); 40768513a70bcd92384395513322f1b801e7bf9c729Steve Block void doComposite(); 40868513a70bcd92384395513322f1b801e7bf9c729Steve Block void doPixelReadbackToCanvas(WebCanvas*, const WebCore::IntRect&); 409e14391e94c850b8bd03680c23b38978db68687a8John Reck void reallocateRenderer(); 4102bde8e466a4451c7319e3a072d118917957d6554Steve Block void updateLayerRendererViewport(); 411dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 412dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 413643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebViewClient* m_client; 41465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebAutoFillClient* m_autoFillClient; 4152bde8e466a4451c7319e3a072d118917957d6554Steve Block WebSpellCheckClient* m_spellCheckClient; 416643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 417643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ChromeClientImpl m_chromeClientImpl; 418643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ContextMenuClientImpl m_contextMenuClientImpl; 419643ca7872b450ea4efacab6188849e5aac2ba161Steve Block DragClientImpl m_dragClientImpl; 420643ca7872b450ea4efacab6188849e5aac2ba161Steve Block EditorClientImpl m_editorClientImpl; 421643ca7872b450ea4efacab6188849e5aac2ba161Steve Block InspectorClientImpl m_inspectorClientImpl; 422643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 423643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebSize m_size; 424643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 425643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebPoint m_lastMousePosition; 426643ca7872b450ea4efacab6188849e5aac2ba161Steve Block OwnPtr<WebCore::Page> m_page; 427643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 428dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // This flag is set when a new navigation is detected. It is used to satisfy 429643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the corresponding argument to WebFrameClient::didCommitProvisionalLoad. 430643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_observedNewNavigation; 431643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifndef NDEBUG 432643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Used to assert that the new navigation we observed is the same navigation 433643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // when we make use of m_observedNewNavigation. 434643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebCore::DocumentLoader* m_newNavigationLoader; 435643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 436643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 437643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // An object that can be used to manipulate m_page->settings() without linking 438dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // against WebCore. This is lazily allocated the first time GetWebSettings() 439643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // is called. 440643ca7872b450ea4efacab6188849e5aac2ba161Steve Block OwnPtr<WebSettingsImpl> m_webSettings; 441643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 442643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A copy of the web drop data object we received from the browser. 443643ca7872b450ea4efacab6188849e5aac2ba161Steve Block RefPtr<WebCore::ChromiumDataObject> m_currentDragData; 444643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 445643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The point relative to the client area where the mouse was last pressed 446643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // down. This is used by the drag client to determine what was under the 447643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // mouse when the drag was initiated. We need to track this here in 448643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // WebViewImpl since DragClient::startDrag does not pass the position the 449643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // mouse was at when the drag was initiated, only the current point, which 450643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // can be misleading as it is usually not over the element the user actually 451643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // dragged by the time a drag is initiated. 452643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebPoint m_lastMouseDownPoint; 453643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 454dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Keeps track of the current zoom level. 0 means no zoom, positive numbers 455643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // mean zoom in, negative numbers mean zoom out. 456a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch double m_zoomLevel; 457a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 458a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch double m_minimumZoomLevel; 459643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 460a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch double m_maximumZoomLevel; 46168513a70bcd92384395513322f1b801e7bf9c729Steve Block 462643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_contextMenuAllowed; 463643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 464643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_doingDragAndDrop; 465643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 466643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_ignoreInputEvents; 467643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 468643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Webkit expects keyPress events to be suppressed if the associated keyDown 469643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // event was handled. Safari implements this behavior by peeking out the 470643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // associated WM_CHAR event if the keydown was handled. We emulate 471643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // this behavior by setting this flag if the keyDown was handled. 472643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_suppressNextKeypressEvent; 473643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 474643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The policy for how this webview is to be initially shown. 475643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebNavigationPolicy m_initialNavigationPolicy; 476643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 477643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Represents whether or not this object should process incoming IME events. 478643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_imeAcceptEvents; 479643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 480643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The available drag operations (copy, move link...) allowed by the source. 481643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDragOperation m_operationsAllowed; 482643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 483643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The current drag operation as negotiated by the source and destination. 484643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // When not equal to DragOperationNone, the drag data can be dropped onto the 485643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // current drop target in this WebView (the drop target can accept the drop). 486643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebDragOperation m_dragOperation; 487643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 488ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block // Whether an AutoFill popup is currently showing. 489ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block bool m_autoFillPopupShowing; 490643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 4918a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block // The AutoFill popup client. 4928a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block OwnPtr<AutoFillPopupMenuClient> m_autoFillPopupClient; 493643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 494ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block // The AutoFill popup. 495ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block RefPtr<WebCore::PopupContainer> m_autoFillPopup; 4968a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 497dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // The popup associated with a select element. 498dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block RefPtr<WebCore::PopupContainer> m_selectPopup; 499dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 500643ca7872b450ea4efacab6188849e5aac2ba161Steve Block OwnPtr<WebDevToolsAgentPrivate> m_devToolsAgent; 501643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 502643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Whether the webview is rendering transparently. 503643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_isTransparent; 504643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 505643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Whether the user can press tab to focus links. 506643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_tabsToLinks; 507643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 508643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Inspector settings. 509643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebString m_inspectorSettings; 510643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 511dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch typedef HashMap<WTF::String, WTF::String> SettingsMap; 5125af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke OwnPtr<SettingsMap> m_inspectorSettingsMap; 51306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen OwnPtr<DragScrollTimer> m_dragScrollTimer; 5145af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 515643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if ENABLE(NOTIFICATIONS) 516643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The provider of desktop notifications; 517643ca7872b450ea4efacab6188849e5aac2ba161Steve Block NotificationPresenterImpl m_notificationPresenter; 518643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 519643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 520e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block // If set, the (plugin) node which has mouse capture. 521e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block RefPtr<WebCore::Node> m_mouseCaptureNode; 522dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 523dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if USE(ACCELERATED_COMPOSITING) 524bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WebCore::IntRect m_rootLayerScrollDamage; 525bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen RefPtr<WebCore::LayerRendererChromium> m_layerRenderer; 52621939df44de1705786c545cd1bf519d47250322dBen Murdoch bool m_isAcceleratedCompositingActive; 5275abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick bool m_compositorCreationFailed; 5282bde8e466a4451c7319e3a072d118917957d6554Steve Block // If true, the graphics context is being restored. 5292bde8e466a4451c7319e3a072d118917957d6554Steve Block bool m_recreatingGraphicsContext; 530dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 531643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static const WebInputEvent* m_currentInputEvent; 53206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 5330617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#if ENABLE(INPUT_SPEECH) 534e14391e94c850b8bd03680c23b38978db68687a8John Reck OwnPtr<SpeechInputClientImpl> m_speechInputClient; 5350617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#endif 53668513a70bcd92384395513322f1b801e7bf9c729Steve Block // If we attempt to fetch the on-screen GraphicsContext3D before 53768513a70bcd92384395513322f1b801e7bf9c729Steve Block // the compositor has been turned on, we need to instantiate it 53868513a70bcd92384395513322f1b801e7bf9c729Steve Block // early. This member holds on to the GC3D in this case. 539a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch RefPtr<WebCore::GraphicsContext3D> m_temporaryOnscreenGraphicsContext3D; 540dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch OwnPtr<DeviceOrientationClientProxy> m_deviceOrientationClientProxy; 541f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch OwnPtr<GeolocationClientProxy> m_geolocationClientProxy; 542643ca7872b450ea4efacab6188849e5aac2ba161Steve Block}; 543643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 544643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit 545643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 546643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 547