summaryrefslogtreecommitdiffstats
path: root/webkit/glue/webview_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/webview_impl.h')
-rw-r--r--webkit/glue/webview_impl.h401
1 files changed, 0 insertions, 401 deletions
diff --git a/webkit/glue/webview_impl.h b/webkit/glue/webview_impl.h
deleted file mode 100644
index 977b597..0000000
--- a/webkit/glue/webview_impl.h
+++ /dev/null
@@ -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_