| Index: webkit/glue/webview_impl.h
|
| ===================================================================
|
| --- webkit/glue/webview_impl.h (revision 30557)
|
| +++ webkit/glue/webview_impl.h (working copy)
|
| @@ -1,401 +0,0 @@
|
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef WEBKIT_GLUE_WEBVIEW_IMPL_H_
|
| -#define WEBKIT_GLUE_WEBVIEW_IMPL_H_
|
| -
|
| -#include <wtf/OwnPtr.h>
|
| -#include <wtf/RefCounted.h>
|
| -
|
| -#include "webkit/api/public/WebPoint.h"
|
| -#include "webkit/api/public/WebSize.h"
|
| -#include "webkit/api/public/WebString.h"
|
| -#include "webkit/api/public/WebView.h"
|
| -#include "webkit/api/src/BackForwardListClientImpl.h"
|
| -#include "webkit/api/src/ChromeClientImpl.h"
|
| -#include "webkit/api/src/ContextMenuClientImpl.h"
|
| -#include "webkit/api/src/DragClientImpl.h"
|
| -#include "webkit/api/src/EditorClientImpl.h"
|
| -#include "webkit/api/src/InspectorClientImpl.h"
|
| -#include "webkit/api/src/NotificationPresenterImpl.h"
|
| -#include "webkit/glue/webframe_impl.h"
|
| -
|
| -namespace WebCore {
|
| -class ChromiumDataObject;
|
| -class Frame;
|
| -class HistoryItem;
|
| -class HitTestResult;
|
| -class KeyboardEvent;
|
| -class Page;
|
| -class PlatformKeyboardEvent;
|
| -class PopupContainer;
|
| -class Range;
|
| -class RenderTheme;
|
| -class Widget;
|
| -}
|
| -
|
| -namespace WebKit {
|
| -class ContextMenuClientImpl;
|
| -class WebAccessibilityObject;
|
| -class WebKeyboardEvent;
|
| -class WebMouseEvent;
|
| -class WebMouseWheelEvent;
|
| -class WebSettingsImpl;
|
| -}
|
| -
|
| -namespace webkit_glue {
|
| -class ImageResourceFetcher;
|
| -}
|
| -
|
| -class AutocompletePopupMenuClient;
|
| -class WebHistoryItemImpl;
|
| -class WebDevToolsAgentImpl;
|
| -
|
| -class WebViewImpl : public WebKit::WebView, public RefCounted<WebViewImpl> {
|
| - public:
|
| - // WebWidget methods:
|
| - virtual void close();
|
| - virtual WebKit::WebSize size() { return size_; }
|
| - virtual void resize(const WebKit::WebSize& new_size);
|
| - virtual void layout();
|
| - virtual void paint(WebKit::WebCanvas* canvas,
|
| - const WebKit::WebRect& rect);
|
| - virtual bool handleInputEvent(const WebKit::WebInputEvent& input_event);
|
| - virtual void mouseCaptureLost();
|
| - virtual void setFocus(bool enable);
|
| - virtual bool handleCompositionEvent(WebKit::WebCompositionCommand command,
|
| - int cursor_position,
|
| - int target_start,
|
| - int target_end,
|
| - const WebKit::WebString& text);
|
| - virtual bool queryCompositionStatus(bool* enabled,
|
| - WebKit::WebRect* caret_rect);
|
| - virtual void setTextDirection(WebKit::WebTextDirection direction);
|
| -
|
| - // WebView methods:
|
| - virtual void initializeMainFrame(WebKit::WebFrameClient*);
|
| - virtual WebKit::WebSettings* settings();
|
| - virtual WebKit::WebString pageEncoding() const;
|
| - virtual void setPageEncoding(const WebKit::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 bool dispatchBeforeUnloadEvent();
|
| - virtual void dispatchUnloadEvent();
|
| - virtual WebKit::WebFrame* mainFrame();
|
| - virtual WebKit::WebFrame* findFrameByName(
|
| - const WebKit::WebString& name, WebKit::WebFrame* relative_to_frame);
|
| - virtual WebKit::WebFrame* focusedFrame();
|
| - virtual void setFocusedFrame(WebKit::WebFrame* frame);
|
| - virtual void setInitialFocus(bool reverse);
|
| - virtual void clearFocusedNode();
|
| - virtual void zoomIn(bool text_only);
|
| - virtual void zoomOut(bool text_only);
|
| - virtual void zoomDefault();
|
| - virtual void performMediaPlayerAction(
|
| - const WebKit::WebMediaPlayerAction& action,
|
| - const WebKit::WebPoint& location);
|
| - virtual void copyImageAt(const WebKit::WebPoint& point);
|
| - virtual void dragSourceEndedAt(
|
| - const WebKit::WebPoint& client_point,
|
| - const WebKit::WebPoint& screen_point,
|
| - WebKit::WebDragOperation operation);
|
| - virtual void dragSourceMovedTo(
|
| - const WebKit::WebPoint& client_point,
|
| - const WebKit::WebPoint& screen_point);
|
| - virtual void dragSourceSystemDragEnded();
|
| - virtual WebKit::WebDragOperation dragTargetDragEnter(
|
| - const WebKit::WebDragData& drag_data, int identity,
|
| - const WebKit::WebPoint& client_point,
|
| - const WebKit::WebPoint& screen_point,
|
| - WebKit::WebDragOperationsMask operations_allowed);
|
| - virtual WebKit::WebDragOperation dragTargetDragOver(
|
| - const WebKit::WebPoint& client_point,
|
| - const WebKit::WebPoint& screen_point,
|
| - WebKit::WebDragOperationsMask operations_allowed);
|
| - virtual void dragTargetDragLeave();
|
| - virtual void dragTargetDrop(
|
| - const WebKit::WebPoint& client_point,
|
| - const WebKit::WebPoint& screen_point);
|
| - virtual int dragIdentity();
|
| - virtual bool setDropEffect(bool accept);
|
| - virtual void inspectElementAt(const WebKit::WebPoint& point);
|
| - virtual WebKit::WebString inspectorSettings() const;
|
| - virtual void setInspectorSettings(const WebKit::WebString& settings);
|
| - virtual WebKit::WebDevToolsAgent* devToolsAgent();
|
| - virtual WebKit::WebAccessibilityObject accessibilityObject();
|
| - virtual void applyAutofillSuggestions(
|
| - const WebKit::WebNode&,
|
| - const WebKit::WebVector<WebKit::WebString>& suggestions,
|
| - int defaultSuggestionIndex);
|
| - virtual void hideAutofillPopup();
|
| -
|
| - // WebViewImpl
|
| -
|
| - void SetIgnoreInputEvents(bool new_value);
|
| - WebDevToolsAgentImpl* GetWebDevToolsAgentImpl();
|
| -
|
| - const WebKit::WebPoint& last_mouse_down_point() const {
|
| - return last_mouse_down_point_;
|
| - }
|
| -
|
| - WebCore::Frame* GetFocusedWebCoreFrame();
|
| -
|
| - // Returns the currently focused Node or NULL if no node has focus.
|
| - WebCore::Node* GetFocusedNode();
|
| -
|
| - static WebViewImpl* FromPage(WebCore::Page* page);
|
| -
|
| - WebKit::WebViewClient* client() {
|
| - return 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 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* main_frame() {
|
| - return page_.get() ? WebFrameImpl::FromFrame(page_->mainFrame()) : NULL;
|
| - }
|
| -
|
| - // History related methods:
|
| - void SetCurrentHistoryItem(WebCore::HistoryItem* item);
|
| - WebCore::HistoryItem* GetPreviousHistoryItem();
|
| - void ObserveNewNavigation();
|
| -
|
| - // Event related methods:
|
| - void MouseMove(const WebKit::WebMouseEvent& mouse_event);
|
| - void MouseLeave(const WebKit::WebMouseEvent& mouse_event);
|
| - void MouseDown(const WebKit::WebMouseEvent& mouse_event);
|
| - void MouseUp(const WebKit::WebMouseEvent& mouse_event);
|
| - void MouseContextMenu(const WebKit::WebMouseEvent& mouse_event);
|
| - void MouseDoubleClick(const WebKit::WebMouseEvent& mouse_event);
|
| - void MouseWheel(const WebKit::WebMouseWheelEvent& wheel_event);
|
| - bool KeyEvent(const WebKit::WebKeyboardEvent& key_event);
|
| - bool CharEvent(const WebKit::WebKeyboardEvent& key_event);
|
| -
|
| - // 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 WebKit::WebKeyboardEvent& event);
|
| -
|
| - // Notifies the WebView that a load has been committed.
|
| - // is_new_navigation will be true if a new session history item should be
|
| - // created for that load.
|
| - void DidCommitLoad(bool* is_new_navigation);
|
| -
|
| - bool context_menu_allowed() const {
|
| - return context_menu_allowed_;
|
| - }
|
| -
|
| - // Set the disposition for how this webview is to be initially shown.
|
| - void set_initial_navigation_policy(WebKit::WebNavigationPolicy policy) {
|
| - initial_navigation_policy_ = policy;
|
| - }
|
| - WebKit::WebNavigationPolicy initial_navigation_policy() const {
|
| - return initial_navigation_policy_;
|
| - }
|
| -
|
| - // 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,
|
| - WebKit::WebNavigationPolicy* policy);
|
| -
|
| - // Start a system drag and drop operation.
|
| - void StartDragging(
|
| - const WebKit::WebPoint& event_pos,
|
| - const WebKit::WebDragData& drag_data,
|
| - WebKit::WebDragOperationsMask drag_source_operation_mask);
|
| -
|
| - // Hides the autocomplete popup if it is showing.
|
| - void HideAutoCompletePopup();
|
| - void AutoCompletePopupDidHide();
|
| -
|
| -#if ENABLE(NOTIFICATIONS)
|
| - // Returns the provider of desktop notifications.
|
| - WebKit::NotificationPresenterImpl* GetNotificationPresenter();
|
| -#endif
|
| -
|
| - // Tries to scroll a frame or any parent of a frame. Returns true if the view
|
| - // was scrolled.
|
| - bool PropagateScroll(WebCore::ScrollDirection scroll_direction,
|
| - WebCore::ScrollGranularity scroll_granularity);
|
| -
|
| - protected:
|
| - friend class WebKit::WebView; // So WebView::Create can call our constructor
|
| - friend class WTF::RefCounted<WebViewImpl>;
|
| -
|
| - WebViewImpl(WebKit::WebViewClient* client);
|
| - ~WebViewImpl();
|
| -
|
| - void ModifySelection(uint32 message,
|
| - WebCore::Frame* frame,
|
| - const WebCore::PlatformKeyboardEvent& e);
|
| -
|
| - WebKit::WebViewClient* client_;
|
| -
|
| - WebKit::BackForwardListClientImpl back_forward_list_client_impl_;
|
| - WebKit::ChromeClientImpl chrome_client_impl_;
|
| - WebKit::ContextMenuClientImpl context_menu_client_impl_;
|
| - WebKit::DragClientImpl drag_client_impl_;
|
| - WebKit::EditorClientImpl editor_client_impl_;
|
| - WebKit::InspectorClientImpl inspector_client_impl_;
|
| -
|
| - WebKit::WebSize size_;
|
| -
|
| - WebKit::WebPoint last_mouse_position_;
|
| - OwnPtr<WebCore::Page> page_;
|
| -
|
| - // This flag is set when a new navigation is detected. It is used to satisfy
|
| - // the corresponding argument to WebFrameClient::didCommitProvisionalLoad.
|
| - bool observed_new_navigation_;
|
| -#ifndef NDEBUG
|
| - // Used to assert that the new navigation we observed is the same navigation
|
| - // when we make use of observed_new_navigation_.
|
| - const WebCore::DocumentLoader* new_navigation_loader_;
|
| -#endif
|
| -
|
| - // An object that can be used to manipulate page_->settings() without linking
|
| - // against WebCore. This is lazily allocated the first time GetWebSettings()
|
| - // is called.
|
| - OwnPtr<WebKit::WebSettingsImpl> web_settings_;
|
| -
|
| - // A copy of the web drop data object we received from the browser.
|
| - RefPtr<WebCore::ChromiumDataObject> current_drag_data_;
|
| -
|
| - private:
|
| - // Returns true if the event was actually processed.
|
| - bool KeyEventDefault(const WebKit::WebKeyboardEvent& event);
|
| -
|
| - // Returns true if the autocomple has consumed the event.
|
| - bool AutocompleteHandleKeyEvent(const WebKit::WebKeyboardEvent& event);
|
| -
|
| - // 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 key_code, int modifiers);
|
| -
|
| - // Converts |pos| from window coordinates to contents coordinates and gets
|
| - // the HitTestResult for it.
|
| - WebCore::HitTestResult HitTestResultForWindowPos(
|
| - const WebCore::IntPoint& pos);
|
| -
|
| - // 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.
|
| - WebKit::WebPoint last_mouse_down_point_;
|
| -
|
| - // Keeps track of the current text zoom level. 0 means no zoom, positive
|
| - // values mean larger text, negative numbers mean smaller.
|
| - int zoom_level_;
|
| -
|
| - bool context_menu_allowed_;
|
| -
|
| - bool doing_drag_and_drop_;
|
| -
|
| - bool ignore_input_events_;
|
| -
|
| - // 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 suppress_next_keypress_event_;
|
| -
|
| - // The policy for how this webview is to be initially shown.
|
| - WebKit::WebNavigationPolicy initial_navigation_policy_;
|
| -
|
| - // Represents whether or not this object should process incoming IME events.
|
| - bool ime_accept_events_;
|
| -
|
| - // True while dispatching system drag and drop events to drag/drop targets
|
| - // within this WebView.
|
| - bool drag_target_dispatch_;
|
| -
|
| - // Valid when drag_target_dispatch_ is true; the identity of the drag data
|
| - // copied from the WebDropData object sent from the browser process.
|
| - int32 drag_identity_;
|
| -
|
| - // Valid when drag_target_dispatch_ is true. Used to override the default
|
| - // browser drop effect with the effects "none" or "copy".
|
| - enum DragTargetDropEffect {
|
| - DROP_EFFECT_DEFAULT = -1,
|
| - DROP_EFFECT_NONE,
|
| - DROP_EFFECT_COPY
|
| - } drop_effect_;
|
| -
|
| - // The available drag operations (copy, move link...) allowed by the source.
|
| - WebKit::WebDragOperation operations_allowed_;
|
| -
|
| - // 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).
|
| - WebKit::WebDragOperation drag_operation_;
|
| -
|
| - // The autocomplete popup. Kept around and reused every-time new suggestions
|
| - // should be shown.
|
| - RefPtr<WebCore::PopupContainer> autocomplete_popup_;
|
| -
|
| - // Whether the autocomplete popup is currently showing.
|
| - bool autocomplete_popup_showing_;
|
| -
|
| - // The autocomplete client.
|
| - OwnPtr<AutocompletePopupMenuClient> autocomplete_popup_client_;
|
| -
|
| - OwnPtr<WebDevToolsAgentImpl> devtools_agent_;
|
| -
|
| - // Whether the webview is rendering transparently.
|
| - bool is_transparent_;
|
| -
|
| - // Whether the user can press tab to focus links.
|
| - bool tabs_to_links_;
|
| -
|
| - // Inspector settings.
|
| - WebKit::WebString inspector_settings_;
|
| -
|
| -#if ENABLE(NOTIFICATIONS)
|
| - // The provider of desktop notifications;
|
| - WebKit::NotificationPresenterImpl notification_presenter_;
|
| -#endif
|
| -
|
| - // HACK: current_input_event is for ChromeClientImpl::show(), until we can fix
|
| - // WebKit to pass enough information up into ChromeClient::show() so we can
|
| - // decide if the window.open event was caused by a middle-mouse click
|
| - public:
|
| - static const WebKit::WebInputEvent* current_input_event() {
|
| - return g_current_input_event;
|
| - }
|
| - private:
|
| - static const WebKit::WebInputEvent* g_current_input_event;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WebViewImpl);
|
| -};
|
| -
|
| -#endif // WEBKIT_GLUE_WEBVIEW_IMPL_H_
|
|
|