summaryrefslogtreecommitdiffstats
path: root/WebKit/chromium/src/WebViewImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/chromium/src/WebViewImpl.h')
-rw-r--r--WebKit/chromium/src/WebViewImpl.h554
1 files changed, 0 insertions, 554 deletions
diff --git a/WebKit/chromium/src/WebViewImpl.h b/WebKit/chromium/src/WebViewImpl.h
deleted file mode 100644
index cc25c84..0000000
--- a/WebKit/chromium/src/WebViewImpl.h
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WebViewImpl_h
-#define WebViewImpl_h
-
-#include "WebNavigationPolicy.h"
-#include "WebPoint.h"
-#include "WebRect.h"
-#include "WebSize.h"
-#include "WebString.h"
-#include "WebView.h"
-
-#include "BackForwardListClientImpl.h"
-#include "ChromeClientImpl.h"
-#include "ContextMenuClientImpl.h"
-#include "DragClientImpl.h"
-#include "EditorClientImpl.h"
-#include "GraphicsContext3D.h"
-#include "GraphicsLayer.h"
-#include "InspectorClientImpl.h"
-#include "IntRect.h"
-#include "LayerRendererChromium.h"
-#include "NotificationPresenterImpl.h"
-#include <wtf/OwnPtr.h>
-#include <wtf/RefCounted.h>
-
-namespace WebCore {
-class ChromiumDataObject;
-class Frame;
-class HistoryItem;
-class HitTestResult;
-class KeyboardEvent;
-class Page;
-class PlatformKeyboardEvent;
-class PopupContainer;
-class PopupMenuClient;
-class Range;
-class RenderTheme;
-class Widget;
-}
-
-namespace WebKit {
-class AutocompletePopupMenuClient;
-class AutoFillPopupMenuClient;
-class ContextMenuClientImpl;
-class DeviceOrientationClientProxy;
-class DragScrollTimer;
-class GeolocationClientProxy;
-class SpeechInputClientImpl;
-class WebAccessibilityObject;
-class WebDevToolsAgentClient;
-class WebDevToolsAgentPrivate;
-class WebFrameImpl;
-class WebImage;
-class WebKeyboardEvent;
-class WebMouseEvent;
-class WebMouseWheelEvent;
-class WebSettingsImpl;
-class WebTouchEvent;
-
-class WebViewImpl : public WebView, public RefCounted<WebViewImpl> {
-public:
- // WebWidget methods:
- virtual void close();
- virtual WebSize size() { return m_size; }
- virtual void resize(const WebSize&);
- virtual void layout();
- virtual void paint(WebCanvas*, const WebRect&);
- virtual void themeChanged();
- virtual void composite(bool finish);
- virtual bool handleInputEvent(const WebInputEvent&);
- virtual void mouseCaptureLost();
- virtual void setFocus(bool enable);
- virtual bool setComposition(
- const WebString& text,
- const WebVector<WebCompositionUnderline>& underlines,
- int selectionStart,
- int selectionEnd);
- virtual bool confirmComposition();
- virtual bool confirmComposition(const WebString& text);
- virtual WebTextInputType textInputType();
- virtual WebRect caretOrSelectionBounds();
- virtual void setTextDirection(WebTextDirection direction);
- virtual bool isAcceleratedCompositingActive() const;
-
- // WebView methods:
- virtual void initializeMainFrame(WebFrameClient*);
- virtual WebSettings* settings();
- virtual WebString pageEncoding() const;
- virtual void setPageEncoding(const WebString& encoding);
- virtual bool isTransparent() const;
- virtual void setIsTransparent(bool value);
- virtual bool tabsToLinks() const;
- virtual void setTabsToLinks(bool value);
- virtual bool tabKeyCyclesThroughElements() const;
- virtual void setTabKeyCyclesThroughElements(bool value);
- virtual bool isActive() const;
- virtual void setIsActive(bool value);
- virtual void setDomainRelaxationForbidden(bool, const WebString& scheme);
- virtual bool dispatchBeforeUnloadEvent();
- virtual void dispatchUnloadEvent();
- virtual WebFrame* mainFrame();
- virtual WebFrame* findFrameByName(
- const WebString& name, WebFrame* relativeToFrame);
- virtual WebFrame* focusedFrame();
- virtual void setFocusedFrame(WebFrame* frame);
- virtual void setInitialFocus(bool reverse);
- virtual void clearFocusedNode();
- virtual void scrollFocusedNodeIntoView();
- virtual double zoomLevel();
- virtual double setZoomLevel(bool textOnly, double zoomLevel);
- virtual void zoomLimitsChanged(double minimumZoomLevel,
- double maximumZoomLevel);
- virtual void performMediaPlayerAction(
- const WebMediaPlayerAction& action,
- const WebPoint& location);
- virtual void copyImageAt(const WebPoint& point);
- virtual void dragSourceEndedAt(
- const WebPoint& clientPoint,
- const WebPoint& screenPoint,
- WebDragOperation operation);
- virtual void dragSourceMovedTo(
- const WebPoint& clientPoint,
- const WebPoint& screenPoint,
- WebDragOperation operation);
- virtual void dragSourceSystemDragEnded();
- virtual WebDragOperation dragTargetDragEnter(
- const WebDragData& dragData, int identity,
- const WebPoint& clientPoint,
- const WebPoint& screenPoint,
- WebDragOperationsMask operationsAllowed);
- virtual WebDragOperation dragTargetDragEnterNew(
- int identity,
- const WebPoint& clientPoint,
- const WebPoint& screenPoint,
- WebDragOperationsMask operationsAllowed);
- virtual WebDragOperation dragTargetDragOver(
- const WebPoint& clientPoint,
- const WebPoint& screenPoint,
- WebDragOperationsMask operationsAllowed);
- virtual void dragTargetDragLeave();
- virtual void dragTargetDrop(
- const WebPoint& clientPoint,
- const WebPoint& screenPoint);
- virtual int dragIdentity();
- virtual bool setDropEffect(bool accept);
- virtual unsigned long createUniqueIdentifierForRequest();
- virtual void inspectElementAt(const WebPoint& point);
- virtual WebString inspectorSettings() const;
- virtual void setInspectorSettings(const WebString& settings);
- virtual bool inspectorSetting(const WebString& key, WebString* value) const;
- virtual void setInspectorSetting(const WebString& key,
- const WebString& value);
- virtual WebDevToolsAgent* devToolsAgent();
- virtual WebAccessibilityObject accessibilityObject();
- virtual void applyAutoFillSuggestions(
- const WebNode&,
- const WebVector<WebString>& names,
- const WebVector<WebString>& labels,
- const WebVector<WebString>& icons,
- const WebVector<int>& uniqueIDs,
- int separatorIndex);
- virtual void hidePopups();
- virtual void setScrollbarColors(unsigned inactiveColor,
- unsigned activeColor,
- unsigned trackColor);
- virtual void setSelectionColors(unsigned activeBackgroundColor,
- unsigned activeForegroundColor,
- unsigned inactiveBackgroundColor,
- unsigned inactiveForegroundColor);
- virtual void performCustomContextMenuAction(unsigned action);
-
- // WebViewImpl
-
- void setIgnoreInputEvents(bool newValue);
- WebDevToolsAgentPrivate* devToolsAgentPrivate() { return m_devToolsAgent.get(); }
-
- const WebPoint& lastMouseDownPoint() const
- {
- return m_lastMouseDownPoint;
- }
-
- WebCore::Frame* focusedWebCoreFrame();
-
- // Returns the currently focused Node or null if no node has focus.
- WebCore::Node* focusedWebCoreNode();
-
- static WebViewImpl* fromPage(WebCore::Page*);
-
- WebViewClient* client()
- {
- return m_client;
- }
-
- // Returns the page object associated with this view. This may be null when
- // the page is shutting down, but will be valid at all other times.
- WebCore::Page* page() const
- {
- return m_page.get();
- }
-
- WebCore::RenderTheme* theme() const;
-
- // Returns the main frame associated with this view. This may be null when
- // the page is shutting down, but will be valid at all other times.
- WebFrameImpl* mainFrameImpl();
-
- // History related methods:
- void setCurrentHistoryItem(WebCore::HistoryItem*);
- WebCore::HistoryItem* previousHistoryItem();
- void observeNewNavigation();
-
- // Event related methods:
- void mouseMove(const WebMouseEvent&);
- void mouseLeave(const WebMouseEvent&);
- void mouseDown(const WebMouseEvent&);
- void mouseUp(const WebMouseEvent&);
- void mouseContextMenu(const WebMouseEvent&);
- void mouseDoubleClick(const WebMouseEvent&);
- bool mouseWheel(const WebMouseWheelEvent&);
- bool keyEvent(const WebKeyboardEvent&);
- bool charEvent(const WebKeyboardEvent&);
- bool touchEvent(const WebTouchEvent&);
-
- // Handles context menu events orignated via the the keyboard. These
- // include the VK_APPS virtual key and the Shift+F10 combine. Code is
- // based on the Webkit function bool WebView::handleContextMenuEvent(WPARAM
- // wParam, LPARAM lParam) in webkit\webkit\win\WebView.cpp. The only
- // significant change in this function is the code to convert from a
- // Keyboard event to the Right Mouse button down event.
- bool sendContextMenuEvent(const WebKeyboardEvent&);
-
- // Notifies the WebView that a load has been committed. isNewNavigation
- // will be true if a new session history item should be created for that
- // load.
- void didCommitLoad(bool* isNewNavigation);
-
- // Returns true if popup menus should be rendered by the browser, false if
- // they should be rendered by WebKit (which is the default).
- static bool useExternalPopupMenus();
-
- bool contextMenuAllowed() const
- {
- return m_contextMenuAllowed;
- }
-
- // Set the disposition for how this webview is to be initially shown.
- void setInitialNavigationPolicy(WebNavigationPolicy policy)
- {
- m_initialNavigationPolicy = policy;
- }
- WebNavigationPolicy initialNavigationPolicy() const
- {
- return m_initialNavigationPolicy;
- }
-
- // Determines whether a page should e.g. be opened in a background tab.
- // Returns false if it has no opinion, in which case it doesn't set *policy.
- static bool navigationPolicyFromMouseEvent(
- unsigned short button,
- bool ctrl,
- bool shift,
- bool alt,
- bool meta,
- WebNavigationPolicy*);
-
- // Start a system drag and drop operation.
- void startDragging(
- const WebDragData& dragData,
- WebDragOperationsMask mask,
- const WebImage& dragImage,
- const WebPoint& dragImageOffset);
-
- void autoFillPopupDidHide()
- {
- m_autoFillPopupShowing = false;
- }
-
-#if ENABLE(NOTIFICATIONS)
- // Returns the provider of desktop notifications.
- NotificationPresenterImpl* notificationPresenterImpl();
-#endif
-
- // Tries to scroll a frame or any parent of a frame. Returns true if the view
- // was scrolled.
- bool propagateScroll(WebCore::ScrollDirection, WebCore::ScrollGranularity);
-
- // Notification that a popup was opened/closed.
- void popupOpened(WebCore::PopupContainer* popupContainer);
- void popupClosed(WebCore::PopupContainer* popupContainer);
-
- void hideAutoFillPopup();
-
- // Returns the input event we're currently processing. This is used in some
- // cases where the WebCore DOM event doesn't have the information we need.
- static const WebInputEvent* currentInputEvent()
- {
- return m_currentInputEvent;
- }
-
-#if USE(ACCELERATED_COMPOSITING)
- bool allowsAcceleratedCompositing();
- void setRootGraphicsLayer(WebCore::PlatformLayer*);
- void setRootLayerNeedsDisplay();
- void scrollRootLayerRect(const WebCore::IntSize& scrollDelta, const WebCore::IntRect& clipRect);
- void invalidateRootLayerRect(const WebCore::IntRect&);
-#endif
-
- // Returns the onscreen 3D context used by the compositor. This is
- // used by the renderer's code to set up resource sharing between
- // the compositor's context and subordinate contexts for APIs like
- // WebGL. Returns 0 if compositing support is not compiled in.
- virtual WebGraphicsContext3D* graphicsContext3D();
-
- WebCore::PopupContainer* selectPopup() const { return m_selectPopup.get(); }
-
- // Returns true if the event leads to scrolling.
- static bool mapKeyCodeForScroll(int keyCode,
- WebCore::ScrollDirection* scrollDirection,
- WebCore::ScrollGranularity* scrollGranularity);
-
- // Called by a full frame plugin inside this view to inform it that its
- // zoom level has been updated. The plugin should only call this function
- // if the zoom change was triggered by the browser, it's only needed in case
- // a plugin can update its own zoom, say because of its own UI.
- void fullFramePluginZoomLevelChanged(double zoomLevel);
-
-private:
- friend class WebView; // So WebView::Create can call our constructor
- friend class WTF::RefCounted<WebViewImpl>;
-
- enum DragAction {
- DragEnter,
- DragOver
- };
-
- WebViewImpl(WebViewClient* client, WebDevToolsAgentClient* devToolsClient);
- ~WebViewImpl();
-
- // Returns true if the event was actually processed.
- bool keyEventDefault(const WebKeyboardEvent&);
-
- // Returns true if the select popup has consumed the event.
- bool selectPopupHandleKeyEvent(const WebKeyboardEvent&);
-
- // Returns true if the autocomple has consumed the event.
- bool autocompleteHandleKeyEvent(const WebKeyboardEvent&);
-
- // Repaints the AutoFill popup. Should be called when the suggestions
- // have changed. Note that this should only be called when the AutoFill
- // popup is showing.
- void refreshAutoFillPopup();
-
- // Returns true if the view was scrolled.
- bool scrollViewWithKeyboard(int keyCode, int modifiers);
-
- void hideSelectPopup();
-
- // Converts |pos| from window coordinates to contents coordinates and gets
- // the HitTestResult for it.
- WebCore::HitTestResult hitTestResultForWindowPos(const WebCore::IntPoint&);
-
- // Consolidate some common code between starting a drag over a target and
- // updating a drag over a target. If we're starting a drag, |isEntering|
- // should be true.
- WebDragOperation dragTargetDragEnterOrOver(const WebPoint& clientPoint,
- const WebPoint& screenPoint,
- DragAction);
-
-#if USE(ACCELERATED_COMPOSITING)
- void setIsAcceleratedCompositingActive(bool);
- void doComposite();
- void doPixelReadbackToCanvas(WebCanvas*, const WebCore::IntRect&);
- void reallocateRenderer();
-#endif
-
- WebViewClient* m_client;
-
- BackForwardListClientImpl m_backForwardListClientImpl;
- ChromeClientImpl m_chromeClientImpl;
- ContextMenuClientImpl m_contextMenuClientImpl;
- DragClientImpl m_dragClientImpl;
- EditorClientImpl m_editorClientImpl;
- InspectorClientImpl m_inspectorClientImpl;
-
- WebSize m_size;
-
- WebPoint m_lastMousePosition;
- OwnPtr<WebCore::Page> m_page;
-
- // This flag is set when a new navigation is detected. It is used to satisfy
- // the corresponding argument to WebFrameClient::didCommitProvisionalLoad.
- bool m_observedNewNavigation;
-#ifndef NDEBUG
- // Used to assert that the new navigation we observed is the same navigation
- // when we make use of m_observedNewNavigation.
- const WebCore::DocumentLoader* m_newNavigationLoader;
-#endif
-
- // An object that can be used to manipulate m_page->settings() without linking
- // against WebCore. This is lazily allocated the first time GetWebSettings()
- // is called.
- OwnPtr<WebSettingsImpl> m_webSettings;
-
- // A copy of the web drop data object we received from the browser.
- RefPtr<WebCore::ChromiumDataObject> m_currentDragData;
-
- // The point relative to the client area where the mouse was last pressed
- // down. This is used by the drag client to determine what was under the
- // mouse when the drag was initiated. We need to track this here in
- // WebViewImpl since DragClient::startDrag does not pass the position the
- // mouse was at when the drag was initiated, only the current point, which
- // can be misleading as it is usually not over the element the user actually
- // dragged by the time a drag is initiated.
- WebPoint m_lastMouseDownPoint;
-
- // Keeps track of the current zoom level. 0 means no zoom, positive numbers
- // mean zoom in, negative numbers mean zoom out.
- double m_zoomLevel;
-
- double m_minimumZoomLevel;
-
- double m_maximumZoomLevel;
-
- bool m_contextMenuAllowed;
-
- bool m_doingDragAndDrop;
-
- bool m_ignoreInputEvents;
-
- // Webkit expects keyPress events to be suppressed if the associated keyDown
- // event was handled. Safari implements this behavior by peeking out the
- // associated WM_CHAR event if the keydown was handled. We emulate
- // this behavior by setting this flag if the keyDown was handled.
- bool m_suppressNextKeypressEvent;
-
- // The policy for how this webview is to be initially shown.
- WebNavigationPolicy m_initialNavigationPolicy;
-
- // Represents whether or not this object should process incoming IME events.
- bool m_imeAcceptEvents;
-
- // True while dispatching system drag and drop events to drag/drop targets
- // within this WebView.
- bool m_dragTargetDispatch;
-
- // Valid when m_dragTargetDispatch is true; the identity of the drag data
- // copied from the WebDropData object sent from the browser process.
- int m_dragIdentity;
-
- // Valid when m_dragTargetDispatch is true. Used to override the default
- // browser drop effect with the effects "none" or "copy".
- enum DragTargetDropEffect {
- DropEffectDefault = -1,
- DropEffectNone,
- DropEffectCopy
- } m_dropEffect;
-
- // The available drag operations (copy, move link...) allowed by the source.
- WebDragOperation m_operationsAllowed;
-
- // The current drag operation as negotiated by the source and destination.
- // When not equal to DragOperationNone, the drag data can be dropped onto the
- // current drop target in this WebView (the drop target can accept the drop).
- WebDragOperation m_dragOperation;
-
- // Whether an AutoFill popup is currently showing.
- bool m_autoFillPopupShowing;
-
- // The AutoFill popup client.
- OwnPtr<AutoFillPopupMenuClient> m_autoFillPopupClient;
-
- // The AutoFill popup.
- RefPtr<WebCore::PopupContainer> m_autoFillPopup;
-
- // The popup associated with a select element.
- RefPtr<WebCore::PopupContainer> m_selectPopup;
-
- OwnPtr<WebDevToolsAgentPrivate> m_devToolsAgent;
-
- // Whether the webview is rendering transparently.
- bool m_isTransparent;
-
- // Whether the user can press tab to focus links.
- bool m_tabsToLinks;
-
- // Inspector settings.
- WebString m_inspectorSettings;
-
- typedef HashMap<WTF::String, WTF::String> SettingsMap;
- OwnPtr<SettingsMap> m_inspectorSettingsMap;
- OwnPtr<DragScrollTimer> m_dragScrollTimer;
-
-#if ENABLE(NOTIFICATIONS)
- // The provider of desktop notifications;
- NotificationPresenterImpl m_notificationPresenter;
-#endif
-
- // If set, the (plugin) node which has mouse capture.
- RefPtr<WebCore::Node> m_mouseCaptureNode;
-
-#if USE(ACCELERATED_COMPOSITING)
- WebCore::IntRect m_rootLayerScrollDamage;
- RefPtr<WebCore::LayerRendererChromium> m_layerRenderer;
- bool m_isAcceleratedCompositingActive;
- bool m_compositorCreationFailed;
-#endif
- static const WebInputEvent* m_currentInputEvent;
-
-#if ENABLE(INPUT_SPEECH)
- OwnPtr<SpeechInputClientImpl> m_speechInputClient;
-#endif
- // If we attempt to fetch the on-screen GraphicsContext3D before
- // the compositor has been turned on, we need to instantiate it
- // early. This member holds on to the GC3D in this case.
- RefPtr<WebCore::GraphicsContext3D> m_temporaryOnscreenGraphicsContext3D;
- OwnPtr<DeviceOrientationClientProxy> m_deviceOrientationClientProxy;
-
-#if ENABLE(CLIENT_BASED_GEOLOCATION)
- OwnPtr<GeolocationClientProxy> m_geolocationClientProxy;
-#endif
-};
-
-} // namespace WebKit
-
-#endif