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_ |