diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-01-06 14:44:00 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-01-06 14:44:00 +0100 |
commit | 40736c5763bf61337c8c14e16d8587db021a87d4 (patch) | |
tree | b17a9c00042ad89cb1308e2484491799aa14e9f8 /Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp | |
download | qtwebkit-40736c5763bf61337c8c14e16d8587db021a87d4.tar.gz |
Imported WebKit commit 2ea9d364d0f6efa8fa64acf19f451504c59be0e4 (http://svn.webkit.org/repository/webkit/trunk@104285)
Diffstat (limited to 'Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp b/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp new file mode 100644 index 000000000..c3ad3f764 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp @@ -0,0 +1,295 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * Portions Copyright (c) 2010 Motorola Mobility, Inc. All rights reserved. + * Copyright (C) 2011 Igalia S.L. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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. + */ + +#include "config.h" +#include "PageClientImpl.h" + +#include "DrawingAreaProxyImpl.h" +#include "NativeWebKeyboardEvent.h" +#include "NativeWebMouseEvent.h" +#include "NotImplemented.h" +#include "WebContext.h" +#include "WebContextMenuProxyGtk.h" +#include "WebEventFactory.h" +#include "WebKitWebViewBasePrivate.h" +#include "WebPageProxy.h" +#include "WebPopupMenuProxyGtk.h" +#include <WebCore/Cursor.h> +#include <WebCore/GtkUtilities.h> +#include <wtf/text/WTFString.h> + +using namespace WebCore; + +namespace WebKit { + +PageClientImpl::PageClientImpl(GtkWidget* viewWidget) + : m_viewWidget(viewWidget) +{ +} + +PageClientImpl::~PageClientImpl() +{ +} + +void PageClientImpl::getEditorCommandsForKeyEvent(const NativeWebKeyboardEvent& event, const AtomicString& eventType, Vector<WTF::String>& commandList) +{ + ASSERT(eventType == eventNames().keydownEvent || eventType == eventNames().keypressEvent); + + KeyBindingTranslator::EventType type = eventType == eventNames().keydownEvent ? + KeyBindingTranslator::KeyDown : KeyBindingTranslator::KeyPress; + m_keyBindingTranslator.getEditorCommandsForKeyEvent(const_cast<GdkEventKey*>(&event.nativeEvent()->key), type, commandList); +} + +// PageClient's pure virtual functions +PassOwnPtr<DrawingAreaProxy> PageClientImpl::createDrawingAreaProxy() +{ + return DrawingAreaProxyImpl::create(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(m_viewWidget))); +} + +void PageClientImpl::setViewNeedsDisplay(const WebCore::IntRect& rect) +{ + gtk_widget_queue_draw_area(m_viewWidget, rect.x(), rect.y(), rect.width(), rect.height()); +} + +void PageClientImpl::displayView() +{ + notImplemented(); +} + +void PageClientImpl::scrollView(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset) +{ + setViewNeedsDisplay(scrollRect); +} + +WebCore::IntSize PageClientImpl::viewSize() +{ + if (!gtk_widget_get_realized(m_viewWidget)) + return IntSize(); + GtkAllocation allocation; + gtk_widget_get_allocation(m_viewWidget, &allocation); + return IntSize(allocation.width, allocation.height); +} + +bool PageClientImpl::isViewWindowActive() +{ + notImplemented(); + return true; +} + +bool PageClientImpl::isViewFocused() +{ + notImplemented(); + return true; +} + +bool PageClientImpl::isViewVisible() +{ + notImplemented(); + return true; +} + +bool PageClientImpl::isViewInWindow() +{ + notImplemented(); + return true; +} + +void PageClientImpl::PageClientImpl::processDidCrash() +{ + notImplemented(); +} + +void PageClientImpl::didRelaunchProcess() +{ + notImplemented(); +} + +void PageClientImpl::takeFocus(bool) +{ + notImplemented(); +} + +void PageClientImpl::toolTipChanged(const String&, const String& newToolTip) +{ + webkitWebViewBaseSetTooltipText(WEBKIT_WEB_VIEW_BASE(m_viewWidget), newToolTip.utf8().data()); +} + +void PageClientImpl::setCursor(const Cursor& cursor) +{ + // [GTK] Widget::setCursor() gets called frequently + // http://bugs.webkit.org/show_bug.cgi?id=16388 + // Setting the cursor may be an expensive operation in some backends, + // so don't re-set the cursor if it's already set to the target value. + GdkWindow* window = gtk_widget_get_window(m_viewWidget); + GdkCursor* currentCursor = gdk_window_get_cursor(window); + GdkCursor* newCursor = cursor.platformCursor().get(); + if (currentCursor != newCursor) + gdk_window_set_cursor(window, newCursor); +} + +void PageClientImpl::setCursorHiddenUntilMouseMoves(bool hiddenUntilMouseMoves) +{ + notImplemented(); +} + +void PageClientImpl::didChangeViewportProperties(const WebCore::ViewportArguments&) +{ + notImplemented(); +} + +void PageClientImpl::registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo) +{ + notImplemented(); +} + +void PageClientImpl::clearAllEditCommands() +{ + notImplemented(); +} + +bool PageClientImpl::canUndoRedo(WebPageProxy::UndoOrRedo) +{ + notImplemented(); + return false; +} + +void PageClientImpl::executeUndoRedo(WebPageProxy::UndoOrRedo) +{ + notImplemented(); +} + +FloatRect PageClientImpl::convertToDeviceSpace(const FloatRect& viewRect) +{ + notImplemented(); + return viewRect; +} + +FloatRect PageClientImpl::convertToUserSpace(const FloatRect& viewRect) +{ + notImplemented(); + return viewRect; +} + +IntPoint PageClientImpl::screenToWindow(const IntPoint& point) +{ + IntPoint widgetPositionOnScreen = convertWidgetPointToScreenPoint(m_viewWidget, IntPoint()); + IntPoint result(point); + result.move(-widgetPositionOnScreen.x(), -widgetPositionOnScreen.y()); + return result; +} + +IntRect PageClientImpl::windowToScreen(const IntRect& rect) +{ + return IntRect(convertWidgetPointToScreenPoint(m_viewWidget, rect.location()), rect.size()); +} + +void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool wasEventHandled) +{ + if (wasEventHandled) + return; + + WebKitWebViewBase* webkitWebViewBase = WEBKIT_WEB_VIEW_BASE(m_viewWidget); + webkitWebViewBaseForwardNextKeyEvent(webkitWebViewBase); + gtk_main_do_event(event.nativeEvent()); +} + +PassRefPtr<WebPopupMenuProxy> PageClientImpl::createPopupMenuProxy(WebPageProxy* page) +{ + return WebPopupMenuProxyGtk::create(m_viewWidget, page); +} + +PassRefPtr<WebContextMenuProxy> PageClientImpl::createContextMenuProxy(WebPageProxy* page) +{ + return WebContextMenuProxyGtk::create(m_viewWidget, page); +} + +void PageClientImpl::setFindIndicator(PassRefPtr<FindIndicator>, bool fadeOut, bool animate) +{ + notImplemented(); +} + +#if USE(ACCELERATED_COMPOSITING) +void PageClientImpl::enterAcceleratedCompositingMode(const LayerTreeContext&) +{ + notImplemented(); +} + +void PageClientImpl::exitAcceleratedCompositingMode() +{ + notImplemented(); +} +#endif // USE(ACCELERATED_COMPOSITING) + +void PageClientImpl::didCommitLoadForMainFrame(bool useCustomRepresentation) +{ +} + +void PageClientImpl::didFinishLoadingDataForCustomRepresentation(const String& suggestedFilename, const CoreIPC::DataReference&) +{ +} + +double PageClientImpl::customRepresentationZoomFactor() +{ + notImplemented(); + return 0; +} + +void PageClientImpl::setCustomRepresentationZoomFactor(double) +{ + notImplemented(); +} + +void PageClientImpl::pageClosed() +{ + notImplemented(); +} + +void PageClientImpl::didChangeScrollbarsForMainFrame() const +{ +} + +void PageClientImpl::flashBackingStoreUpdates(const Vector<IntRect>&) +{ + notImplemented(); +} + +void PageClientImpl::findStringInCustomRepresentation(const String&, FindOptions, unsigned) +{ + notImplemented(); +} + +void PageClientImpl::countStringMatchesInCustomRepresentation(const String&, FindOptions, unsigned) +{ + notImplemented(); +} + +void PageClientImpl::startDrag(const WebCore::DragData& dragData, PassRefPtr<ShareableBitmap> dragImage) +{ + webkitWebViewBaseStartDrag(WEBKIT_WEB_VIEW_BASE(m_viewWidget), dragData, dragImage); +} + +} // namespace WebKit |