165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch/* 2ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. 365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Redistribution and use in source and binary forms, with or without 565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * modification, are permitted provided that the following conditions 665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * are met: 765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1. Redistributions of source code must retain the above copyright 865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * notice, this list of conditions and the following disclaimer. 965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright 1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * notice, this list of conditions and the following disclaimer in the 1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * documentation and/or other materials provided with the distribution. 1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THE POSSIBILITY OF SUCH DAMAGE. 2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch */ 2565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "config.h" 2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPageProxy.h" 2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "AuthenticationChallengeProxy.h" 3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "AuthenticationDecisionListener.h" 3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "DataReference.h" 322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "DownloadProxy.h" 3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "DrawingAreaProxy.h" 3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "FindIndicator.h" 3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "MessageID.h" 3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "NativeWebKeyboardEvent.h" 372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "NativeWebMouseEvent.h" 3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "PageClient.h" 3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "PrintInfo.h" 4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "SessionState.h" 4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "StringPairVector.h" 4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "TextChecker.h" 4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "TextCheckerState.h" 4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WKContextPrivate.h" 4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebBackForwardList.h" 4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebBackForwardListItem.h" 4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebCertificateInfo.h" 4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebContext.h" 4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebContextMenuProxy.h" 5065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebContextUserMessageCoders.h" 5165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebCoreArgumentCoders.h" 5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebData.h" 5365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebEditCommandProxy.h" 5465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebEvent.h" 5565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebFormSubmissionListenerProxy.h" 5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebFramePolicyListenerProxy.h" 572bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "WebFullScreenManagerProxy.h" 582bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "WebInspectorProxy.h" 5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebOpenPanelResultListenerProxy.h" 6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPageCreationParameters.h" 6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPageGroup.h" 6265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPageGroupData.h" 6365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPageMessages.h" 6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPopupItem.h" 6565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPopupMenuProxy.h" 6665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPreferences.h" 6765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebProcessMessages.h" 6865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebProcessProxy.h" 6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebProtectionSpace.h" 7065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebSecurityOrigin.h" 7165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebURLRequest.h" 7281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include <WebCore/DragData.h> 7381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include <WebCore/FloatRect.h> 742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include <WebCore/FocusDirection.h> 7581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include <WebCore/MIMETypeRegistry.h> 7681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include <WebCore/WindowFeatures.h> 7781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include <stdio.h> 7881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if PLATFORM(WIN) 802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "WebDragSource.h" 812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <WebCore/BitmapInfo.h> 822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <WebCore/COMPtr.h> 832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <WebCore/WCDataObject.h> 842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <shlobj.h> 852fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef NDEBUG 8865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/RefCountedLeakCounter.h> 8965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 9065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// This controls what strategy we use for mouse wheel coalesing. 9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define MERGE_WHEEL_EVENTS 0 9365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, process()->connection()) 9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochusing namespace WebCore; 9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebKit { 9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochWKPageDebugPaintFlags WebPageProxy::s_debugPaintFlags = 0; 10181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef NDEBUG 10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstatic WTF::RefCountedLeakCounter webPageProxyCounter("WebPageProxy"); 10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 1062daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochPassRefPtr<WebPageProxy> WebPageProxy::create(PageClient* pageClient, PassRefPtr<WebProcessProxy> process, WebPageGroup* pageGroup, uint64_t pageID) 10765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 1082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return adoptRef(new WebPageProxy(pageClient, process, pageGroup, pageID)); 10965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 1112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochWebPageProxy::WebPageProxy(PageClient* pageClient, PassRefPtr<WebProcessProxy> process, WebPageGroup* pageGroup, uint64_t pageID) 11265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch : m_pageClient(pageClient) 1132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch , m_process(process) 11465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_pageGroup(pageGroup) 11565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_mainFrame(0) 11665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_userAgent(standardUserAgent()) 11765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_geolocationPermissionRequestManager(this) 11865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_estimatedProgress(0) 11965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_isInWindow(m_pageClient->isViewInWindow()) 12065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_isVisible(m_pageClient->isViewVisible()) 12165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_backForwardList(WebBackForwardList::create(this)) 12265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_textZoomFactor(1) 12365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_pageZoomFactor(1) 12465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_viewScaleFactor(1) 12565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_drawsBackground(true) 12665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_drawsTransparentBackground(false) 12781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_areMemoryCacheClientCallsEnabled(true) 12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_useFixedLayout(false) 12965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_isValid(true) 13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_isClosed(false) 13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_isInPrintingMode(false) 1322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_isPerformingDOMPrintOperation(false) 13365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_inDecidePolicyForMIMEType(false) 13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_syncMimeTypePolicyActionIsValid(false) 13565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_syncMimeTypePolicyAction(PolicyUse) 13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_syncMimeTypePolicyDownloadID(0) 1372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_inDecidePolicyForNavigationAction(false) 1382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_syncNavigationActionPolicyActionIsValid(false) 1392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_syncNavigationActionPolicyAction(PolicyUse) 14081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_syncNavigationActionPolicyDownloadID(0) 14165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_processingWheelEvent(false) 14265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_processingMouseMoveEvent(false) 14365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_pageID(pageID) 14465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC) 14565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_isSmartInsertDeleteEnabled(TextChecker::isSmartInsertDeleteEnabled()) 14665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 14765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_spellDocumentTag(0) 14865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_hasSpellDocumentTag(false) 14965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_pendingLearnOrIgnoreWordMessageCount(0) 15065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_mainFrameHasCustomRepresentation(false) 15165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_currentDragOperation(DragOperationNone) 1522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_mainFrameHasHorizontalScrollbar(false) 1532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_mainFrameHasVerticalScrollbar(false) 15481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_mainFrameIsPinnedToLeftSide(false) 15581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_mainFrameIsPinnedToRightSide(false) 15665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 15765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef NDEBUG 15865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch webPageProxyCounter.increment(); 15965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 16065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 16165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebContext::statistics().wkPageCount++; 16265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 16365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageGroup->addPage(this); 16465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 16565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 16665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochWebPageProxy::~WebPageProxy() 16765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 1682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!m_isClosed) 1692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch close(); 1702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 17165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebContext::statistics().wkPageCount--; 17265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 17365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_hasSpellDocumentTag) 17465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch TextChecker::closeSpellDocumentWithTag(m_spellDocumentTag); 17565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 17665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageGroup->removePage(this); 17765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 17865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef NDEBUG 17965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch webPageProxyCounter.decrement(); 18065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 18165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 18265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 18365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochWebProcessProxy* WebPageProxy::process() const 18465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 1852daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return m_process.get(); 18665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 18765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 18865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool WebPageProxy::isValid() 18965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 19065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // A page that has been explicitly closed is never valid. 19165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_isClosed) 19265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return false; 19365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_isValid; 19565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 19665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setDrawingArea(PassOwnPtr<DrawingAreaProxy> drawingArea) 19865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 19965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (drawingArea == m_drawingArea) 20065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 20165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 20265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_drawingArea = drawingArea; 20365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 20465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 20565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::initializeLoaderClient(const WKPageLoaderClient* loadClient) 20665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 20765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.initialize(loadClient); 20865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 20965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 21065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::initializePolicyClient(const WKPagePolicyClient* policyClient) 21165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 21265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_policyClient.initialize(policyClient); 21365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 21465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 21565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::initializeFormClient(const WKPageFormClient* formClient) 21665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 21765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_formClient.initialize(formClient); 21865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 21965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::initializeResourceLoadClient(const WKPageResourceLoadClient* client) 22165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 22265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_resourceLoadClient.initialize(client); 22365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 22465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::initializeUIClient(const WKPageUIClient* client) 22665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 2272bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!isValid()) 2282bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 2292bde8e466a4451c7319e3a072d118917957d6554Steve Block 23065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.initialize(client); 23181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 23281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch process()->send(Messages::WebPage::SetCanRunBeforeUnloadConfirmPanel(m_uiClient.canRunBeforeUnloadConfirmPanel()), m_pageID); 23381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch process()->send(Messages::WebPage::SetCanRunModal(m_uiClient.canRunModal()), m_pageID); 23465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 23565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 23665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::initializeFindClient(const WKPageFindClient* client) 23765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 23865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_findClient.initialize(client); 23965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 24065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::initializeContextMenuClient(const WKPageContextMenuClient* client) 24265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 24365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_contextMenuClient.initialize(client); 24465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 24565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::reattachToWebProcess() 24765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 2482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch ASSERT(!isValid()); 2492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 25065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_isValid = true; 25165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2522daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_process = m_process->context()->relaunchProcessIfNecessary(); 25365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->addExistingWebPage(this, m_pageID); 25465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 25565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch initializeWebPage(); 25665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 25765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->didRelaunchProcess(); 25865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 25965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 26065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::reattachToWebProcessWithItem(WebBackForwardListItem* item) 26165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 26265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (item && item != m_backForwardList->currentItem()) 26365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_backForwardList->goToItem(item); 26465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 26565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch reattachToWebProcess(); 2662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!item) 2682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 2692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block SandboxExtension::Handle sandboxExtensionHandle; 2712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block initializeSandboxExtensionHandle(KURL(KURL(), item->url()), sandboxExtensionHandle); 2722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::GoToBackForwardItem(item->itemID(), sandboxExtensionHandle), m_pageID); 27365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 27465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 27565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::initializeWebPage() 27665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 27765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ASSERT(isValid()); 27865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 27965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch BackForwardListItemVector items = m_backForwardList->entries(); 28065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch for (size_t i = 0; i < items.size(); ++i) 28165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->registerNewWebBackForwardListItem(items[i].get()); 28265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 28365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_drawingArea = m_pageClient->createDrawingAreaProxy(); 28465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ASSERT(m_drawingArea); 28565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 28665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebProcess::CreateWebPage(m_pageID, creationParameters()), 0); 28765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 28865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 28965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::close() 29065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 29165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 29265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 29365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 29465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_isClosed = true; 29565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 29665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_backForwardList->pageClosed(); 2972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_pageClient->pageClosed(); 29865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 29965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->disconnectFramesFromPage(this); 30065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_mainFrame = 0; 30165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 30265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(INSPECTOR) 30365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_inspector) { 30465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_inspector->invalidate(); 30565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_inspector = 0; 30665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 30765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 30865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3092bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API) 3102bde8e466a4451c7319e3a072d118917957d6554Steve Block if (m_fullScreenManager) { 3112bde8e466a4451c7319e3a072d118917957d6554Steve Block m_fullScreenManager->invalidate(); 3122bde8e466a4451c7319e3a072d118917957d6554Steve Block m_fullScreenManager = 0; 3132bde8e466a4451c7319e3a072d118917957d6554Steve Block } 3142bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 3152bde8e466a4451c7319e3a072d118917957d6554Steve Block 31665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_openPanelResultListener) { 31765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_openPanelResultListener->invalidate(); 31865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_openPanelResultListener = 0; 31965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 32065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 32165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_geolocationPermissionRequestManager.invalidateRequests(); 32265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 32365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_toolTip = String(); 32465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_mainFrameHasHorizontalScrollbar = false; 3262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_mainFrameHasVerticalScrollbar = false; 3272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 32881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_mainFrameIsPinnedToLeftSide = false; 32981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_mainFrameIsPinnedToRightSide = false; 33081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 3312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block invalidateCallbackMap(m_voidCallbacks); 33265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch invalidateCallbackMap(m_dataCallbacks); 33365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch invalidateCallbackMap(m_stringCallbacks); 3342bde8e466a4451c7319e3a072d118917957d6554Steve Block m_loadDependentStringCallbackIDs.clear(); 33581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch invalidateCallbackMap(m_scriptValueCallbacks); 3362fc2651226baac27029e38c9d6ef883fa32084dbSteve Block invalidateCallbackMap(m_computedPagesCallbacks); 33765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 33865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch Vector<WebEditCommandProxy*> editCommandVector; 33965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch copyToVector(m_editCommandSet, editCommandVector); 34065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_editCommandSet.clear(); 34165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch for (size_t i = 0, size = editCommandVector.size(); i < size; ++i) 34265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch editCommandVector[i]->invalidate(); 34365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 34465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_activePopupMenu = 0; 34565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 34665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_estimatedProgress = 0.0; 34765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 34865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.initialize(0); 34965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_policyClient.initialize(0); 35065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.initialize(0); 35165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 35265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_drawingArea.clear(); 35365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 35465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::Close(), m_pageID); 35565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->removeWebPage(m_pageID); 35665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 35765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 35865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool WebPageProxy::tryClose() 35965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 36065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 36165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return true; 36265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 36365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::TryClose(), m_pageID); 36465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return false; 36565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 36665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3672fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::initializeSandboxExtensionHandle(const KURL& url, SandboxExtension::Handle& sandboxExtensionHandle) 36865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 36965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!url.isLocalFile()) 37065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 37165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // Don't give the inspector full access to the file system. 3732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (WebInspectorProxy::isInspectorPage(this)) 3742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 3752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 37665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch SandboxExtension::createHandle("/", SandboxExtension::ReadOnly, sandboxExtensionHandle); 37765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 37865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 37965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::loadURL(const String& url) 38065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 3812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block setPendingAPIRequestURL(url); 3822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 38365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 38465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch reattachToWebProcess(); 38565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 38665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch SandboxExtension::Handle sandboxExtensionHandle; 38765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch initializeSandboxExtensionHandle(KURL(KURL(), url), sandboxExtensionHandle); 38865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::LoadURL(url, sandboxExtensionHandle), m_pageID); 38965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 39065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 39165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::loadURLRequest(WebURLRequest* urlRequest) 39265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 3932fc2651226baac27029e38c9d6ef883fa32084dbSteve Block setPendingAPIRequestURL(urlRequest->resourceRequest().url()); 3942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 39565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 39665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch reattachToWebProcess(); 39765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 39865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch SandboxExtension::Handle sandboxExtensionHandle; 39965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch initializeSandboxExtensionHandle(urlRequest->resourceRequest().url(), sandboxExtensionHandle); 40065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::LoadURLRequest(urlRequest->resourceRequest(), sandboxExtensionHandle), m_pageID); 40165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 40265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 40365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::loadHTMLString(const String& htmlString, const String& baseURL) 40465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 40565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 4062bde8e466a4451c7319e3a072d118917957d6554Steve Block reattachToWebProcess(); 4072bde8e466a4451c7319e3a072d118917957d6554Steve Block 40865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::LoadHTMLString(htmlString, baseURL), m_pageID); 40965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 41065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 41165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::loadAlternateHTMLString(const String& htmlString, const String& baseURL, const String& unreachableURL) 41265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 41365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 4142bde8e466a4451c7319e3a072d118917957d6554Steve Block reattachToWebProcess(); 41565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4162bde8e466a4451c7319e3a072d118917957d6554Steve Block if (m_mainFrame) 4172bde8e466a4451c7319e3a072d118917957d6554Steve Block m_mainFrame->setUnreachableURL(unreachableURL); 41865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 41965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::LoadAlternateHTMLString(htmlString, baseURL, unreachableURL), m_pageID); 42065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 42165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 42265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::loadPlainTextString(const String& string) 42365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 42465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 4252bde8e466a4451c7319e3a072d118917957d6554Steve Block reattachToWebProcess(); 4262bde8e466a4451c7319e3a072d118917957d6554Steve Block 42765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::LoadPlainTextString(string), m_pageID); 42865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 42965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 43065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::stopLoading() 43165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 43265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 43365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 43465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::StopLoading(), m_pageID); 43565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 43665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 43765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::reload(bool reloadFromOrigin) 43865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 4392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (m_backForwardList->currentItem()) 4402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block setPendingAPIRequestURL(m_backForwardList->currentItem()->url()); 4412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 44265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) { 44365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch reattachToWebProcessWithItem(m_backForwardList->currentItem()); 44465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 44565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 44665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 44765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::Reload(reloadFromOrigin), m_pageID); 44865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 44965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 45065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::goForward() 45165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 4522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (isValid() && !canGoForward()) 45365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 45465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WebBackForwardListItem* forwardItem = m_backForwardList->forwardItem(); 4562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (forwardItem) 4572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block setPendingAPIRequestURL(forwardItem->url()); 4582fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 4592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!isValid()) { 4602fc2651226baac27029e38c9d6ef883fa32084dbSteve Block reattachToWebProcessWithItem(forwardItem); 46165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 4622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 46365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block SandboxExtension::Handle sandboxExtensionHandle; 4652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block initializeSandboxExtensionHandle(KURL(KURL(), forwardItem->url()), sandboxExtensionHandle); 4662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::GoForward(forwardItem->itemID(), sandboxExtensionHandle), m_pageID); 46765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 46865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 46965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool WebPageProxy::canGoForward() const 47065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 47165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_backForwardList->forwardItem(); 47265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 47365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 47465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::goBack() 47565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 4762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (isValid() && !canGoBack()) 47765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 47865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WebBackForwardListItem* backItem = m_backForwardList->backItem(); 4802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (backItem) 4812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block setPendingAPIRequestURL(backItem->url()); 4822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 4832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!isValid()) { 4842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block reattachToWebProcessWithItem(backItem); 48565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 4862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 48765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4882fc2651226baac27029e38c9d6ef883fa32084dbSteve Block SandboxExtension::Handle sandboxExtensionHandle; 4892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block initializeSandboxExtensionHandle(KURL(KURL(), backItem->url()), sandboxExtensionHandle); 4902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::GoBack(backItem->itemID(), sandboxExtensionHandle), m_pageID); 49165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 49265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 49365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool WebPageProxy::canGoBack() const 49465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 49565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_backForwardList->backItem(); 49665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 49765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 49865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::goToBackForwardItem(WebBackForwardListItem* item) 49965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 50065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) { 50165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch reattachToWebProcessWithItem(item); 50265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 50365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 50481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 50581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch setPendingAPIRequestURL(item->url()); 50665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block SandboxExtension::Handle sandboxExtensionHandle; 5082fc2651226baac27029e38c9d6ef883fa32084dbSteve Block initializeSandboxExtensionHandle(KURL(KURL(), item->url()), sandboxExtensionHandle); 5092fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::GoToBackForwardItem(item->itemID(), sandboxExtensionHandle), m_pageID); 51065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 51165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5122fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::didChangeBackForwardList(WebBackForwardListItem* added, Vector<RefPtr<APIObject> >* removed) 51365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 5142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_loaderClient.didChangeBackForwardList(this, added, removed); 51565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 51665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 51781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::shouldGoToBackForwardListItem(uint64_t itemID, bool& shouldGoToBackForwardItem) 51881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 51981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebBackForwardListItem* item = process()->webBackForwardItem(itemID); 52081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch shouldGoToBackForwardItem = item && m_loaderClient.shouldGoToBackForwardListItem(this, item); 52181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 52265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 52365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool WebPageProxy::canShowMIMEType(const String& mimeType) const 52465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 52565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType)) 52665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return true; 52765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 52865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType)) 52965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return true; 5302bde8e466a4451c7319e3a072d118917957d6554Steve Block 5312bde8e466a4451c7319e3a072d118917957d6554Steve Block if (mimeType.startsWith("text/", false)) 5322bde8e466a4451c7319e3a072d118917957d6554Steve Block return !MIMETypeRegistry::isUnsupportedTextMIMEType(mimeType); 5332bde8e466a4451c7319e3a072d118917957d6554Steve Block 53465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch String newMimeType = mimeType; 5352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch PluginInfoStore::Plugin plugin = m_process->context()->pluginInfoStore()->findPlugin(newMimeType, KURL()); 53665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!plugin.path.isNull()) 53765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return true; 53865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 53965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return false; 54065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 54165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 54265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setDrawsBackground(bool drawsBackground) 54365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 54465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_drawsBackground == drawsBackground) 54565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 54665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 54765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_drawsBackground = drawsBackground; 54865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 54965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (isValid()) 55065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetDrawsBackground(drawsBackground), m_pageID); 55165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 55265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 55365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setDrawsTransparentBackground(bool drawsTransparentBackground) 55465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 55565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_drawsTransparentBackground == drawsTransparentBackground) 55665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 55765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 55865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_drawsTransparentBackground = drawsTransparentBackground; 55965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 56065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (isValid()) 56165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetDrawsTransparentBackground(drawsTransparentBackground), m_pageID); 56265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 56365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5642fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::viewWillStartLiveResize() 5652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 5662bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!isValid()) 5672bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 5682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::ViewWillStartLiveResize(), m_pageID); 5692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 5702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 5712fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::viewWillEndLiveResize() 5722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 5732bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!isValid()) 5742bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 5752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::ViewWillEndLiveResize(), m_pageID); 5762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 5772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 57865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setViewNeedsDisplay(const IntRect& rect) 57965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 58065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->setViewNeedsDisplay(rect); 58165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 58265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 58365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::displayView() 58465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 58565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->displayView(); 58665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 58765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 588ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid WebPageProxy::scrollView(const IntRect& scrollRect, const IntSize& scrollOffset) 589ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 590ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch m_pageClient->scrollView(scrollRect, scrollOffset); 591ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 592ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 59365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::viewStateDidChange(ViewStateFlags flags) 59465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 59565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 59665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 59765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 59865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (flags & ViewIsFocused) 59965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetFocused(m_pageClient->isViewFocused()), m_pageID); 60065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 60165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (flags & ViewWindowIsActive) 60265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetActive(m_pageClient->isViewWindowActive()), m_pageID); 60365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 60465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (flags & ViewIsVisible) { 60565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch bool isVisible = m_pageClient->isViewVisible(); 60665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (isVisible != m_isVisible) { 60765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_isVisible = isVisible; 608ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch m_drawingArea->visibilityDidChange(); 60965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_drawingArea->setPageIsVisible(isVisible); 61065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 61165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 61265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 61365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (flags & ViewIsInWindow) { 61465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch bool isInWindow = m_pageClient->isViewInWindow(); 61565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_isInWindow != isInWindow) { 61665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_isInWindow = isInWindow; 61765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetIsInWindow(isInWindow), m_pageID); 61865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 61965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 6202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 6212daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (flags & (ViewWindowIsActive | ViewIsVisible)) 6222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_drawingArea->setBackingStoreIsDiscardable(!m_pageClient->isViewWindowActive() || !isViewVisible()); 62365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 62465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 62565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochIntSize WebPageProxy::viewSize() const 62665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 62765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_pageClient->viewSize(); 62865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 62965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 63065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setInitialFocus(bool forward) 63165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 63265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 63365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 63465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetInitialFocus(forward), m_pageID); 63565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 63665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 63765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setWindowResizerSize(const IntSize& windowResizerSize) 63865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 63965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 64065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 64165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetWindowResizerSize(windowResizerSize), m_pageID); 64265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 64365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 64481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::validateCommand(const String& commandName, PassRefPtr<ValidateCommandCallback> callback) 64565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 64681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (!isValid()) { 64781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch callback->invalidate(); 64865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 64981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch } 65081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 65181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch uint64_t callbackID = callback->callbackID(); 65281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_validateCommandCallbacks.set(callbackID, callback.get()); 65381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch process()->send(Messages::WebPage::ValidateCommand(commandName, callbackID), m_pageID); 65465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 65565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 65665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::executeEditCommand(const String& commandName) 65765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 65865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 65965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 66065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 66165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::ExecuteEditCommand(commandName), m_pageID); 66265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 66365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 6642bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(WIN) 66565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochWebCore::IntRect WebPageProxy::firstRectForCharacterInSelectedRange(int characterPosition) 66665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 66765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch IntRect resultRect; 66865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->sendSync(Messages::WebPage::FirstRectForCharacterInSelectedRange(characterPosition), Messages::WebPage::FirstRectForCharacterInSelectedRange::Reply(resultRect), m_pageID); 66965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return resultRect; 67065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 67165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 67265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochString WebPageProxy::getSelectedText() 67365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 67465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch String text; 67565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->sendSync(Messages::WebPage::GetSelectedText(), Messages::WebPage::GetSelectedText::Reply(text), m_pageID); 67665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return text; 67765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 6782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 6792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochbool WebPageProxy::gestureWillBegin(const IntPoint& point) 6802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 6812daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch bool canBeginPanning = false; 6822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch process()->sendSync(Messages::WebPage::GestureWillBegin(point), Messages::WebPage::GestureWillBegin::Reply(canBeginPanning), m_pageID); 6832daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return canBeginPanning; 6842daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 6852daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 6862daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::gestureDidScroll(const IntSize& size) 6872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 6882daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch process()->send(Messages::WebPage::GestureDidScroll(size), m_pageID); 6892daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 6902daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 6912daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::gestureDidEnd() 6922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 6932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch process()->send(Messages::WebPage::GestureDidEnd(), m_pageID); 6942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 6952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 6962daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::setGestureReachedScrollingLimit(bool limitReached) 6972daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 6982daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_pageClient->setGestureReachedScrollingLimit(limitReached); 6992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 70065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 70165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 70265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TILED_BACKING_STORE) 70365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setActualVisibleContentRect(const IntRect& rect) 70465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 70565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 70665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 70765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 70865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetActualVisibleContentRect(rect), m_pageID); 70965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 71065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 71165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::dragEntered(WebCore::DragData* dragData, const String& dragStorageName) 7132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 7142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch SandboxExtension::Handle sandboxExtensionHandle; 7152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch performDragControllerAction(DragControllerActionEntered, dragData, dragStorageName, sandboxExtensionHandle); 7162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 7172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 7182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::dragUpdated(WebCore::DragData* dragData, const String& dragStorageName) 7192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 7202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch SandboxExtension::Handle sandboxExtensionHandle; 7212daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch performDragControllerAction(DragControllerActionUpdated, dragData, dragStorageName, sandboxExtensionHandle); 7222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 7232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 7242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::dragExited(WebCore::DragData* dragData, const String& dragStorageName) 7252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 7262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch SandboxExtension::Handle sandboxExtensionHandle; 7272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch performDragControllerAction(DragControllerActionExited, dragData, dragStorageName, sandboxExtensionHandle); 7282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 7292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 7302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::performDrag(WebCore::DragData* dragData, const String& dragStorageName, const SandboxExtension::Handle& sandboxExtensionHandle) 7312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 7322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch performDragControllerAction(DragControllerActionPerformDrag, dragData, dragStorageName, sandboxExtensionHandle); 7332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 7342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 7352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::performDragControllerAction(DragControllerAction action, WebCore::DragData* dragData, const String& dragStorageName, const SandboxExtension::Handle& sandboxExtensionHandle) 73665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 73765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 73865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 7392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if PLATFORM(WIN) 7402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // FIXME: We should pass the drag data map only on DragEnter. 7412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::PerformDragControllerAction(action, dragData->clientPosition(), dragData->globalPosition(), 7422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block dragData->draggingSourceOperationMask(), dragData->dragDataMap(), dragData->flags()), m_pageID); 7432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#else 7442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch process()->send(Messages::WebPage::PerformDragControllerAction(action, dragData->clientPosition(), dragData->globalPosition(), dragData->draggingSourceOperationMask(), dragStorageName, dragData->flags(), sandboxExtensionHandle), m_pageID); 7452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 74665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 74765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 74865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didPerformDragControllerAction(uint64_t resultOperation) 74965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 75065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_currentDragOperation = static_cast<DragOperation>(resultOperation); 75165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 75265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if PLATFORM(WIN) 7542fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 7552fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::startDragDrop(const IntPoint& imageOrigin, const IntPoint& dragPoint, uint64_t okEffect, 7562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block const HashMap<UINT, Vector<String> >& dataMap, const IntSize& dragImageSize, const SharedMemory::Handle& dragImageHandle, bool isLinkDrag) 7572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 7582fc2651226baac27029e38c9d6ef883fa32084dbSteve Block COMPtr<WCDataObject> dataObject; 7592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WCDataObject::createInstance(&dataObject, dataMap); 7602fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 7612fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<SharedMemory> memoryBuffer = SharedMemory::create(dragImageHandle, SharedMemory::ReadOnly); 7622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!memoryBuffer) 7632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 7642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 7652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<WebDragSource> source = WebDragSource::createInstance(); 7662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!source) 7672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 7682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 7692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block COMPtr<IDragSourceHelper> helper; 7702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (FAILED(::CoCreateInstance(CLSID_DragDropHelper, 0, CLSCTX_INPROC_SERVER, IID_IDragSourceHelper, reinterpret_cast<LPVOID*>(&helper)))) 7712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 7722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 7732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block BitmapInfo bitmapInfo = BitmapInfo::create(dragImageSize); 7742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block void* bits; 7752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block OwnPtr<HBITMAP> hbmp(::CreateDIBSection(0, &bitmapInfo, DIB_RGB_COLORS, &bits, 0, 0)); 7762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block memcpy(bits, memoryBuffer->data(), memoryBuffer->size()); 7772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 7782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block SHDRAGIMAGE sdi; 7792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block sdi.sizeDragImage.cx = bitmapInfo.bmiHeader.biWidth; 7802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block sdi.sizeDragImage.cy = bitmapInfo.bmiHeader.biHeight; 7812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block sdi.crColorKey = 0xffffffff; 7822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block sdi.hbmpDragImage = hbmp.leakPtr(); 7832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block sdi.ptOffset.x = dragPoint.x() - imageOrigin.x(); 7842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block sdi.ptOffset.y = dragPoint.y() - imageOrigin.y(); 7852fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (isLinkDrag) 7862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block sdi.ptOffset.y = bitmapInfo.bmiHeader.biHeight - sdi.ptOffset.y; 7872fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 7882fc2651226baac27029e38c9d6ef883fa32084dbSteve Block helper->InitializeFromBitmap(&sdi, dataObject.get()); 7892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 7902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block DWORD effect = DROPEFFECT_NONE; 7912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 7922fc2651226baac27029e38c9d6ef883fa32084dbSteve Block DragOperation operation = DragOperationNone; 7932fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (::DoDragDrop(dataObject.get(), source.get(), okEffect, &effect) == DRAGDROP_S_DROP) { 7942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (effect & DROPEFFECT_COPY) 7952fc2651226baac27029e38c9d6ef883fa32084dbSteve Block operation = DragOperationCopy; 7962fc2651226baac27029e38c9d6ef883fa32084dbSteve Block else if (effect & DROPEFFECT_LINK) 7972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block operation = DragOperationLink; 7982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block else if (effect & DROPEFFECT_MOVE) 7992fc2651226baac27029e38c9d6ef883fa32084dbSteve Block operation = DragOperationMove; 8002fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 8012fc2651226baac27029e38c9d6ef883fa32084dbSteve Block POINT globalPoint; 8022fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ::GetCursorPos(&globalPoint); 8032fc2651226baac27029e38c9d6ef883fa32084dbSteve Block POINT localPoint = globalPoint; 8042fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ::ScreenToClient(m_pageClient->nativeWindow(), &localPoint); 8052fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 8062fc2651226baac27029e38c9d6ef883fa32084dbSteve Block dragEnded(localPoint, globalPoint, operation); 8072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 8082fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 8092fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 810ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid WebPageProxy::dragEnded(const WebCore::IntPoint& clientPosition, const WebCore::IntPoint& globalPosition, uint64_t operation) 811ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 812ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch if (!isValid()) 813ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch return; 814ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch process()->send(Messages::WebPage::DragEnded(clientPosition, globalPosition, operation), m_pageID); 815ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 816ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 8172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::handleMouseEvent(const NativeWebMouseEvent& event) 81865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 81965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 82065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 82165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 82265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // NOTE: This does not start the responsiveness timer because mouse move should not indicate interaction. 82365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (event.type() != WebEvent::MouseMove) 82465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->responsivenessTimer()->start(); 82565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch else { 82665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_processingMouseMoveEvent) { 8272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_nextMouseMoveEvent = adoptPtr(new NativeWebMouseEvent(event)); 82865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 82965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 83065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 83165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_processingMouseMoveEvent = true; 83265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 83365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // <https://bugs.webkit.org/show_bug.cgi?id=57904> We need to keep track of the mouse down event in the case where we 8352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // display a popup menu for select elements. When the user changes the selected item, 8362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // we fake a mouse up event by using this stored down event. This event gets cleared 8372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // when the mouse up message is received from WebProcess. 8382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (event.type() == WebEvent::MouseDown) 8392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_currentlyProcessedMouseDownEvent = adoptPtr(new NativeWebMouseEvent(event)); 8402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 84165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::MouseEvent(event), m_pageID); 84265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 84365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 84465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstatic PassOwnPtr<WebWheelEvent> coalesceWheelEvents(WebWheelEvent* oldNextWheelEvent, const WebWheelEvent& newWheelEvent) 84565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 84665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if MERGE_WHEEL_EVENTS 84765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Merge model: Combine wheel event deltas (and wheel ticks) into a single wheel event. 84865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!oldNextWheelEvent) 84965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return adoptPtr(new WebWheelEvent(newWheelEvent)); 85065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 85165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (oldNextWheelEvent->position() != newWheelEvent.position() || oldNextWheelEvent->modifiers() != newWheelEvent.modifiers() || oldNextWheelEvent->granularity() != newWheelEvent.granularity()) 85265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return adoptPtr(new WebWheelEvent(newWheelEvent)); 85365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 85465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch FloatSize mergedDelta = oldNextWheelEvent->delta() + newWheelEvent.delta(); 85565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch FloatSize mergedWheelTicks = oldNextWheelEvent->wheelTicks() + newWheelEvent.wheelTicks(); 85665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 85765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return adoptPtr(new WebWheelEvent(WebEvent::Wheel, newWheelEvent.position(), newWheelEvent.globalPosition(), mergedDelta, mergedWheelTicks, newWheelEvent.granularity(), newWheelEvent.modifiers(), newWheelEvent.timestamp())); 85865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#else 85965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Simple model: Just keep the last event, dropping all interim events. 86065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return adoptPtr(new WebWheelEvent(newWheelEvent)); 86165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 86265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 86365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 86465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::handleWheelEvent(const WebWheelEvent& event) 86565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 86665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 86765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 86865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 86965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_processingWheelEvent) { 87065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_nextWheelEvent = coalesceWheelEvents(m_nextWheelEvent.get(), event); 87165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 87265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 87365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 87465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->responsivenessTimer()->start(); 87565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::WheelEvent(event), m_pageID); 87665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_processingWheelEvent = true; 87765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 87865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 87965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::handleKeyboardEvent(const NativeWebKeyboardEvent& event) 88065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 88165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 88265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 88365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 88465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_keyEventQueue.append(event); 88565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 88665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->responsivenessTimer()->start(); 88765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::KeyEvent(event), m_pageID); 88865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 88965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(GESTURE_EVENTS) 8912fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::handleGestureEvent(const WebGestureEvent& event) 8922fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 8932fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!isValid()) 8942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 8952fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 8962fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->responsivenessTimer()->start(); 8972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::GestureEvent(event), m_pageID); 8982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 8992fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 9002fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 90165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TOUCH_EVENTS) 90265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::handleTouchEvent(const WebTouchEvent& event) 90365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 90465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 90565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 90665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::TouchEvent(event), m_pageID); 90765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 90865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 90965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9102bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::scrollBy(ScrollDirection direction, ScrollGranularity granularity) 9112bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 9122bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!isValid()) 9132bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 9142bde8e466a4451c7319e3a072d118917957d6554Steve Block 9152bde8e466a4451c7319e3a072d118917957d6554Steve Block process()->send(Messages::WebPage::ScrollBy(direction, granularity), m_pageID); 9162bde8e466a4451c7319e3a072d118917957d6554Steve Block} 9172bde8e466a4451c7319e3a072d118917957d6554Steve Block 91865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::receivedPolicyDecision(PolicyAction action, WebFrameProxy* frame, uint64_t listenerID) 91965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 92065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 92165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 92265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 92365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch uint64_t downloadID = 0; 92465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (action == PolicyDownload) { 92565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Create a download proxy. 9262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch downloadID = m_process->context()->createDownloadProxy()->downloadID(); 92765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 92865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 92965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // If we received a policy decision while in decidePolicyForMIMEType the decision will 93065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // be sent back to the web process by decidePolicyForMIMEType. 93165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_inDecidePolicyForMIMEType) { 93265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_syncMimeTypePolicyActionIsValid = true; 93365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_syncMimeTypePolicyAction = action; 93465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_syncMimeTypePolicyDownloadID = downloadID; 93565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 93665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 93765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // If we received a policy decision while in decidePolicyForNavigationAction the decision will 9392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // be sent back to the web process by decidePolicyForNavigationAction. 9402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (m_inDecidePolicyForNavigationAction) { 9412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_syncNavigationActionPolicyActionIsValid = true; 9422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_syncNavigationActionPolicyAction = action; 94381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_syncNavigationActionPolicyDownloadID = downloadID; 9442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 9452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 9462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 94765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::DidReceivePolicyDecision(frame->frameID(), listenerID, action, downloadID), m_pageID); 94865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 94965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 95065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochString WebPageProxy::pageTitle() const 95165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 95265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Return the null string if there is no main frame (e.g. nothing has been loaded in the page yet, WebProcess has 95365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // crashed, page has been closed). 95465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!m_mainFrame) 95565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return String(); 95665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 95765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_mainFrame->title(); 95865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 95965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 96065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setUserAgent(const String& userAgent) 96165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 96265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_userAgent == userAgent) 96365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 96465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_userAgent = userAgent; 96565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 96665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 96765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 96865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetUserAgent(m_userAgent), m_pageID); 96965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 97065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 97165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setApplicationNameForUserAgent(const String& applicationName) 97265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 97365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_applicationNameForUserAgent == applicationName) 97465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 97565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 97665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_applicationNameForUserAgent = applicationName; 97765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!m_customUserAgent.isEmpty()) 97865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 97965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 98065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch setUserAgent(standardUserAgent(m_applicationNameForUserAgent)); 98165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 98265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 98365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setCustomUserAgent(const String& customUserAgent) 98465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 98565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_customUserAgent == customUserAgent) 98665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 98765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 98865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_customUserAgent = customUserAgent; 98965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 99065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_customUserAgent.isEmpty()) { 99165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch setUserAgent(standardUserAgent(m_applicationNameForUserAgent)); 99265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 99365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 99465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 99565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch setUserAgent(m_customUserAgent); 99665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 99765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 99865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool WebPageProxy::supportsTextEncoding() const 99965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 100065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return !m_mainFrameHasCustomRepresentation && m_mainFrame && !m_mainFrame->isDisplayingStandaloneImageDocument(); 100165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 100265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 100365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setCustomTextEncodingName(const String& encodingName) 100465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 100565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_customTextEncodingName == encodingName) 100665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 100765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_customTextEncodingName = encodingName; 100865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 100965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 101065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 101165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetCustomTextEncodingName(encodingName), m_pageID); 101265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 101365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 101465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::terminateProcess() 101565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 101665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 101765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 101865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 101965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->terminate(); 102065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 102165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 102281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if !USE(CF) || defined(BUILDING_QT__) 102365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPassRefPtr<WebData> WebPageProxy::sessionStateData(WebPageProxySessionStateFilterCallback, void* context) const 102465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 102565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: Return session state data for saving Page state. 102665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return 0; 102765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 102865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 102965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::restoreFromSessionStateData(WebData*) 103065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 103165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: Restore the Page from the passed in session state data. 103265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 103365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 103465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 103565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool WebPageProxy::supportsTextZoom() const 103665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 103765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_mainFrameHasCustomRepresentation) 103865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return false; 103965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 104065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: This should also return false for standalone media and plug-in documents. 104165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!m_mainFrame || m_mainFrame->isDisplayingStandaloneImageDocument()) 104265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return false; 104365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 104465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return true; 104565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 104665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 104765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setTextZoomFactor(double zoomFactor) 104865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 104965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 105065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 105165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 105265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_mainFrameHasCustomRepresentation) 105365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 105465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 105565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_textZoomFactor == zoomFactor) 105665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 105765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 105865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_textZoomFactor = zoomFactor; 105965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetTextZoomFactor(m_textZoomFactor), m_pageID); 106065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 106165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 106265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochdouble WebPageProxy::pageZoomFactor() const 106365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 106465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_mainFrameHasCustomRepresentation ? m_pageClient->customRepresentationZoomFactor() : m_pageZoomFactor; 106565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 106665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 106765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setPageZoomFactor(double zoomFactor) 106865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 106965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 107065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 107165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 107265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_mainFrameHasCustomRepresentation) { 107365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->setCustomRepresentationZoomFactor(zoomFactor); 107465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 107565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 107665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 107765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_pageZoomFactor == zoomFactor) 107865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 107965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 108065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageZoomFactor = zoomFactor; 108165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetPageZoomFactor(m_pageZoomFactor), m_pageID); 108265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 108365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 108465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setPageAndTextZoomFactors(double pageZoomFactor, double textZoomFactor) 108565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 108665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 108765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 108865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 108965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_mainFrameHasCustomRepresentation) { 109065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->setCustomRepresentationZoomFactor(pageZoomFactor); 109165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 109265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 109365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 109465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_pageZoomFactor == pageZoomFactor && m_textZoomFactor == textZoomFactor) 109565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 109665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 109765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageZoomFactor = pageZoomFactor; 109865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_textZoomFactor = textZoomFactor; 109965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetPageAndTextZoomFactors(m_pageZoomFactor, m_textZoomFactor), m_pageID); 110065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 110165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 110265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::scaleWebView(double scale, const IntPoint& origin) 110365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 110465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 110565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 110665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 110765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::ScaleWebView(scale, origin), m_pageID); 110865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 110965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 111065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setUseFixedLayout(bool fixed) 111165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 111265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 111365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 111465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 111565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (fixed == m_useFixedLayout) 111665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 111765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 111865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_useFixedLayout = fixed; 111965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!fixed) 112065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_fixedLayoutSize = IntSize(); 112165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetUseFixedLayout(fixed), m_pageID); 112265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 112365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 112465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setFixedLayoutSize(const IntSize& size) 112565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 112665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 112765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 112865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 112965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (size == m_fixedLayoutSize) 113065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 113165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 113265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_fixedLayoutSize = size; 113365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetFixedLayoutSize(size), m_pageID); 113465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 113565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 11362fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::viewScaleFactorDidChange(double scaleFactor) 11372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 11382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_viewScaleFactor = scaleFactor; 11392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 11402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 114181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::setMemoryCacheClientCallsEnabled(bool memoryCacheClientCallsEnabled) 114281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 11432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) 11442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 11452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 114681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (m_areMemoryCacheClientCallsEnabled == memoryCacheClientCallsEnabled) 114781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return; 114881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 114981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_areMemoryCacheClientCallsEnabled = memoryCacheClientCallsEnabled; 115081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch process()->send(Messages::WebPage::SetMemoryCacheMessagesEnabled(memoryCacheClientCallsEnabled), m_pageID); 115181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 115281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 115365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::findString(const String& string, FindOptions options, unsigned maxMatchCount) 115465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 11552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (m_mainFrameHasCustomRepresentation) 11562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_pageClient->findStringInCustomRepresentation(string, options, maxMatchCount); 11572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch else 11582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch process()->send(Messages::WebPage::FindString(string, options, maxMatchCount), m_pageID); 115965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 116065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 116165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::hideFindUI() 116265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 116365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::HideFindUI(), m_pageID); 116465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 116565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 116665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::countStringMatches(const String& string, FindOptions options, unsigned maxMatchCount) 116765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 11682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (m_mainFrameHasCustomRepresentation) { 11692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_pageClient->countStringMatchesInCustomRepresentation(string, options, maxMatchCount); 11702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 11712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 11722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 11732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) 11742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 11752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 117665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::CountStringMatches(string, options, maxMatchCount), m_pageID); 117765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 117881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 117981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::runJavaScriptInMainFrame(const String& script, PassRefPtr<ScriptValueCallback> prpCallback) 118065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 118181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<ScriptValueCallback> callback = prpCallback; 11822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 11832daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 11842daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 11852daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 11862daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 118765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch uint64_t callbackID = callback->callbackID(); 118881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_scriptValueCallbacks.set(callbackID, callback.get()); 118965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::RunJavaScriptInMainFrame(script, callbackID), m_pageID); 119065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 119165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 119265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getRenderTreeExternalRepresentation(PassRefPtr<StringCallback> prpCallback) 119365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 119465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<StringCallback> callback = prpCallback; 11952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 11962daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 11972daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 11982daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 11992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 120065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch uint64_t callbackID = callback->callbackID(); 120165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_stringCallbacks.set(callbackID, callback.get()); 120265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::GetRenderTreeExternalRepresentation(callbackID), m_pageID); 120365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 120465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 120565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getSourceForFrame(WebFrameProxy* frame, PassRefPtr<StringCallback> prpCallback) 120665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 120765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<StringCallback> callback = prpCallback; 12082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 12092daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 12102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 12112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 12122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 121365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch uint64_t callbackID = callback->callbackID(); 12142bde8e466a4451c7319e3a072d118917957d6554Steve Block m_loadDependentStringCallbackIDs.add(callbackID); 121565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_stringCallbacks.set(callbackID, callback.get()); 121665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::GetSourceForFrame(frame->frameID(), callbackID), m_pageID); 121765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 121865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 121965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getContentsAsString(PassRefPtr<StringCallback> prpCallback) 122065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 122165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<StringCallback> callback = prpCallback; 12222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 12232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 12242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 12252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 12262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 122765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch uint64_t callbackID = callback->callbackID(); 12282bde8e466a4451c7319e3a072d118917957d6554Steve Block m_loadDependentStringCallbackIDs.add(callbackID); 122965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_stringCallbacks.set(callbackID, callback.get()); 123065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::GetContentsAsString(callbackID), m_pageID); 123165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 123265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 123365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getSelectionOrContentsAsString(PassRefPtr<StringCallback> prpCallback) 123465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 123565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<StringCallback> callback = prpCallback; 12362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 12372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 12382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 12392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 12402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 124165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch uint64_t callbackID = callback->callbackID(); 124265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_stringCallbacks.set(callbackID, callback.get()); 124365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::GetSelectionOrContentsAsString(callbackID), m_pageID); 124465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 124565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 124665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getMainResourceDataOfFrame(WebFrameProxy* frame, PassRefPtr<DataCallback> prpCallback) 124765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 124865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<DataCallback> callback = prpCallback; 12492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 12502daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 12512daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 12522daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 12532daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 125465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch uint64_t callbackID = callback->callbackID(); 125565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_dataCallbacks.set(callbackID, callback.get()); 125665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::GetMainResourceDataOfFrame(frame->frameID(), callbackID), m_pageID); 125765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 125865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 1259ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid WebPageProxy::getResourceDataFromFrame(WebFrameProxy* frame, WebURL* resourceURL, PassRefPtr<DataCallback> prpCallback) 1260ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 1261ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch RefPtr<DataCallback> callback = prpCallback; 12622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 12632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 12642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 12652daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 12662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1267ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch uint64_t callbackID = callback->callbackID(); 1268ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch m_dataCallbacks.set(callbackID, callback.get()); 1269ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch process()->send(Messages::WebPage::GetResourceDataFromFrame(frame->frameID(), resourceURL->string(), callbackID), m_pageID); 1270ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 1271ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 127265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getWebArchiveOfFrame(WebFrameProxy* frame, PassRefPtr<DataCallback> prpCallback) 127365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 127465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<DataCallback> callback = prpCallback; 12752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 12762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 12772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 12782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 12792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 128065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch uint64_t callbackID = callback->callbackID(); 128165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_dataCallbacks.set(callbackID, callback.get()); 128265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::GetWebArchiveOfFrame(frame->frameID(), callbackID), m_pageID); 128365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 128465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 12852fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::forceRepaint(PassRefPtr<VoidCallback> prpCallback) 12862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 12872fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<VoidCallback> callback = prpCallback; 12882fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!isValid()) { 12892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block callback->invalidate(); 12902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 12912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 12922fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 12932fc2651226baac27029e38c9d6ef883fa32084dbSteve Block uint64_t callbackID = callback->callbackID(); 12942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_voidCallbacks.set(callbackID, callback.get()); 12952fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::ForceRepaint(callbackID), m_pageID); 12962fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 12972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 129865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::preferencesDidChange() 129965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 130065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 130165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 130265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 130365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: It probably makes more sense to send individual preference changes. 130465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // However, WebKitTestRunner depends on getting a preference change notification 130565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // even if nothing changed in UI process, so that overrides get removed. 130681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 130781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // Preferences need to be updated during synchronous printing to make "print backgrounds" preference work when toggled from a print dialog checkbox. 130881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch process()->send(Messages::WebPage::PreferencesDidChange(pageGroup()->preferences()->store()), m_pageID, m_isPerformingDOMPrintOperation ? CoreIPC::DispatchMessageEvenWhenWaitingForSyncReply : 0); 130965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 131065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 131165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TILED_BACKING_STORE) 131265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setResizesToContentsUsingLayoutSize(const WebCore::IntSize& targetLayoutSize) 131365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 131465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetResizesToContentsUsingLayoutSize(targetLayoutSize), m_pageID); 131565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 131665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 131765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 131865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) 131965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 13202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if PLATFORM(MAC) || PLATFORM(WIN) 132165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (messageID.is<CoreIPC::MessageClassDrawingAreaProxy>()) { 132265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_drawingArea->didReceiveDrawingAreaProxyMessage(connection, messageID, arguments); 132365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 132465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 132565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 132665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 132765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (messageID.is<CoreIPC::MessageClassDrawingAreaProxyLegacy>()) { 132865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_drawingArea->didReceiveMessage(connection, messageID, arguments); 132965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 133065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 133165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 133265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(INSPECTOR) 133365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (messageID.is<CoreIPC::MessageClassWebInspectorProxy>()) { 133465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (WebInspectorProxy* inspector = this->inspector()) 133565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch inspector->didReceiveWebInspectorProxyMessage(connection, messageID, arguments); 133665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 133765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 133865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 133965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 13402bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API) 13412bde8e466a4451c7319e3a072d118917957d6554Steve Block if (messageID.is<CoreIPC::MessageClassWebFullScreenManagerProxy>()) { 13422bde8e466a4451c7319e3a072d118917957d6554Steve Block fullScreenManager()->didReceiveMessage(connection, messageID, arguments); 13432bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 13442bde8e466a4451c7319e3a072d118917957d6554Steve Block } 13452bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 13462bde8e466a4451c7319e3a072d118917957d6554Steve Block 134765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch didReceiveWebPageProxyMessage(connection, messageID, arguments); 134865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 134965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 135065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, CoreIPC::ArgumentEncoder* reply) 135165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 135265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(INSPECTOR) 135365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (messageID.is<CoreIPC::MessageClassWebInspectorProxy>()) { 135465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (WebInspectorProxy* inspector = this->inspector()) 135565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch inspector->didReceiveSyncWebInspectorProxyMessage(connection, messageID, arguments, reply); 135665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 135765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 135865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 135965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 13602bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API) 13612bde8e466a4451c7319e3a072d118917957d6554Steve Block if (messageID.is<CoreIPC::MessageClassWebFullScreenManagerProxy>()) { 13622bde8e466a4451c7319e3a072d118917957d6554Steve Block fullScreenManager()->didReceiveSyncMessage(connection, messageID, arguments, reply); 13632bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 13642bde8e466a4451c7319e3a072d118917957d6554Steve Block } 13652bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 13662bde8e466a4451c7319e3a072d118917957d6554Steve Block 136765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: Do something with reply. 136865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch didReceiveSyncWebPageProxyMessage(connection, messageID, arguments, reply); 136965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 137065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 137165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didCreateMainFrame(uint64_t frameID) 137265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 137365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(!m_mainFrame); 137465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(process()->canCreateFrame(frameID)); 137565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 137665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_mainFrame = WebFrameProxy::create(this, frameID); 137765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 137865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Add the frame to the process wide map. 137965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->frameCreated(frameID, m_mainFrame.get()); 138065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 138165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 138265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didCreateSubframe(uint64_t frameID, uint64_t parentFrameID) 138365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 138465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(m_mainFrame); 138565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 138665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* parentFrame = process()->webFrame(parentFrameID); 138765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(parentFrame); 138865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(parentFrame->isDescendantOf(m_mainFrame.get())); 138965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 139065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(process()->canCreateFrame(frameID)); 139165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 139265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebFrameProxy> subFrame = WebFrameProxy::create(this, frameID); 139365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 139465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Add the frame to the process wide map. 139565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->frameCreated(frameID, subFrame.get()); 139665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 139765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Insert the frame into the frame hierarchy. 139865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parentFrame->appendChild(subFrame.get()); 139965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 140065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 1401ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochstatic bool isDisconnectedFrame(WebFrameProxy* frame) 1402ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 1403ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch return !frame->page() || !frame->page()->mainFrame() || !frame->isDescendantOf(frame->page()->mainFrame()); 1404ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 1405ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 140665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didSaveFrameToPageCache(uint64_t frameID) 140765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 140865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(m_mainFrame); 140965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 141065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* subframe = process()->webFrame(frameID); 141165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(subframe); 141265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 1413ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch if (isDisconnectedFrame(subframe)) 141465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 141565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 141665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(subframe->isDescendantOf(m_mainFrame.get())); 141765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 141865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch subframe->didRemoveFromHierarchy(); 141965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 142065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 142165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didRestoreFrameFromPageCache(uint64_t frameID, uint64_t parentFrameID) 142265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 142365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(m_mainFrame); 142465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 142565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* subframe = process()->webFrame(frameID); 142665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(subframe); 142765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(!subframe->parentFrame()); 142865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(subframe->page() == m_mainFrame->page()); 142965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 143065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* parentFrame = process()->webFrame(parentFrameID); 143165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(parentFrame); 143265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(parentFrame->isDescendantOf(m_mainFrame.get())); 143365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 143465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Insert the frame into the frame hierarchy. 143565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parentFrame->appendChild(subframe); 143665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 143765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 14382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 14392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block// Always start progress at initialProgressValue. This helps provide feedback as 14402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block// soon as a load starts. 14412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 14422fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockstatic const double initialProgressValue = 0.1; 14432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 14442fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockdouble WebPageProxy::estimatedProgress() const 14452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 14462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!pendingAPIRequestURL().isNull()) 14472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return initialProgressValue; 14482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return m_estimatedProgress; 14492fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 14502fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 145165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didStartProgress() 145265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 14532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_estimatedProgress = initialProgressValue; 14542fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 145565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didStartProgress(this); 145665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 145765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 145865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didChangeProgress(double value) 145965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 146065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_estimatedProgress = value; 14612fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 146265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didChangeProgress(this); 146365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 146465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 146565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFinishProgress() 146665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 146765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_estimatedProgress = 1.0; 146865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 146965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didFinishProgress(this); 147065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 147165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 14722bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::didStartProvisionalLoadForFrame(uint64_t frameID, const String& url, const String& unreachableURL, CoreIPC::ArgumentDecoder* arguments) 147365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 14742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block clearPendingAPIRequestURL(); 14752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 147665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 14772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 147865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 147965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 148065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 148165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 148265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 148365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 14842bde8e466a4451c7319e3a072d118917957d6554Steve Block frame->setUnreachableURL(unreachableURL); 148565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 148665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch frame->didStartProvisionalLoad(url); 148765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didStartProvisionalLoadForFrame(this, frame, userData.get()); 148865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 148965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 149065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, const String& url, CoreIPC::ArgumentDecoder* arguments) 149165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 149265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 14932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 149465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 149565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 149665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 149765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 149865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 149965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 150065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch frame->didReceiveServerRedirectForProvisionalLoad(url); 150165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 150265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didReceiveServerRedirectForProvisionalLoadForFrame(this, frame, userData.get()); 150365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 150465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 150565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFailProvisionalLoadForFrame(uint64_t frameID, const ResourceError& error, CoreIPC::ArgumentDecoder* arguments) 150665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 150765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 15082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 150965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 151065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 151165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 151265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 151365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 151465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 151565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch frame->didFailProvisionalLoad(); 151665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 151765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didFailProvisionalLoadWithErrorForFrame(this, frame, error, userData.get()); 151865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 151965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 15202bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::clearLoadDependentCallbacks() 15212bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 15222bde8e466a4451c7319e3a072d118917957d6554Steve Block Vector<uint64_t> callbackIDsCopy; 15232bde8e466a4451c7319e3a072d118917957d6554Steve Block copyToVector(m_loadDependentStringCallbackIDs, callbackIDsCopy); 15242bde8e466a4451c7319e3a072d118917957d6554Steve Block m_loadDependentStringCallbackIDs.clear(); 15252bde8e466a4451c7319e3a072d118917957d6554Steve Block 15262bde8e466a4451c7319e3a072d118917957d6554Steve Block for (size_t i = 0; i < callbackIDsCopy.size(); ++i) { 15272bde8e466a4451c7319e3a072d118917957d6554Steve Block RefPtr<StringCallback> callback = m_stringCallbacks.take(callbackIDsCopy[i]); 15282bde8e466a4451c7319e3a072d118917957d6554Steve Block if (callback) 15292bde8e466a4451c7319e3a072d118917957d6554Steve Block callback->invalidate(); 15302bde8e466a4451c7319e3a072d118917957d6554Steve Block } 15312bde8e466a4451c7319e3a072d118917957d6554Steve Block} 15322bde8e466a4451c7319e3a072d118917957d6554Steve Block 153365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didCommitLoadForFrame(uint64_t frameID, const String& mimeType, bool frameHasCustomRepresentation, const PlatformCertificateInfo& certificateInfo, CoreIPC::ArgumentDecoder* arguments) 153465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 153565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 15362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 153765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 153865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 153965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 15402bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) 15412bde8e466a4451c7319e3a072d118917957d6554Steve Block dismissCorrectionPanel(ReasonForDismissingCorrectionPanelIgnored); 15422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_pageClient->dismissDictionaryLookupPanel(); 15432bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 15442bde8e466a4451c7319e3a072d118917957d6554Steve Block 154565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 154665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 154765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 15482bde8e466a4451c7319e3a072d118917957d6554Steve Block clearLoadDependentCallbacks(); 15492bde8e466a4451c7319e3a072d118917957d6554Steve Block 155065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch frame->didCommitLoad(mimeType, certificateInfo); 155165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 155265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (frame->isMainFrame()) { 155365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_mainFrameHasCustomRepresentation = frameHasCustomRepresentation; 155465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->didCommitLoadForMainFrame(frameHasCustomRepresentation); 155565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 155665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 155765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didCommitLoadForFrame(this, frame, userData.get()); 155865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 155965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 156065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFinishDocumentLoadForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments) 156165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 156265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 15632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 156465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 156565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 156665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 156765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 156865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 156965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 157065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didFinishDocumentLoadForFrame(this, frame, userData.get()); 157165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 157265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 157365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFinishLoadForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments) 157465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 157565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 15762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 157765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 157865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 157965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 158065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 158165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 158265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 158365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch frame->didFinishLoad(); 158465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 158565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didFinishLoadForFrame(this, frame, userData.get()); 158665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 158765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 158865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFailLoadForFrame(uint64_t frameID, const ResourceError& error, CoreIPC::ArgumentDecoder* arguments) 158965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 159065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 15912daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 159265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 159365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 159465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 159565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 159665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 159765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 15982bde8e466a4451c7319e3a072d118917957d6554Steve Block clearLoadDependentCallbacks(); 15992bde8e466a4451c7319e3a072d118917957d6554Steve Block 160065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch frame->didFailLoad(); 160165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 160265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didFailLoadWithErrorForFrame(this, frame, error, userData.get()); 160365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 160465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 160565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didSameDocumentNavigationForFrame(uint64_t frameID, uint32_t opaqueSameDocumentNavigationType, const String& url, CoreIPC::ArgumentDecoder* arguments) 160665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 160765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 16082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 160965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 161065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 161165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 161265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 161365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 161465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 161565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch frame->didSameDocumentNavigation(url); 161665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 161765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didSameDocumentNavigationForFrame(this, frame, static_cast<SameDocumentNavigationType>(opaqueSameDocumentNavigationType), userData.get()); 161865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 161965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 162065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didReceiveTitleForFrame(uint64_t frameID, const String& title, CoreIPC::ArgumentDecoder* arguments) 162165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 162265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 16232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 162465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 162565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 162665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 162765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 162865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 162965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 163065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch frame->didChangeTitle(title); 163165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 163265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didReceiveTitleForFrame(this, title, frame, userData.get()); 163365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 163465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 163565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFirstLayoutForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments) 163665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 163765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 16382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 163965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 164065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 164165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 164265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 164365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 164465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 164565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didFirstLayoutForFrame(this, frame, userData.get()); 164665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 164765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 164865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments) 164965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 165065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 16512daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 165265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 165365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 165465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 165565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 165665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 165765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 165865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didFirstVisuallyNonEmptyLayoutForFrame(this, frame, userData.get()); 165965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 166065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 166165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didRemoveFrameFromHierarchy(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments) 166265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 166365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 16642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 166565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 166665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 166765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 166865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 166965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 167065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 167165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch frame->didRemoveFromHierarchy(); 167265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 167365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didRemoveFrameFromHierarchy(this, frame, userData.get()); 167465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 167565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 167665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didDisplayInsecureContentForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments) 167765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 167865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 16792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 168065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 168165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 168265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 168365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 168465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 168565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 168665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didDisplayInsecureContentForFrame(this, frame, userData.get()); 168765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 168865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 168965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didRunInsecureContentForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments) 169065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 169165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 16922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 169365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 169465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 169565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 169665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 169765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 169865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 169965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didRunInsecureContentForFrame(this, frame, userData.get()); 170065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 170165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 170265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::frameDidBecomeFrameSet(uint64_t frameID, bool value) 170365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 170465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 170565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 170665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 170765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch frame->setIsFrameSet(value); 170865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (frame->isMainFrame()) 170965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_frameSetLargestFrame = value ? m_mainFrame : 0; 171065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 171165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 171265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// PolicyClient 171381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, uint32_t opaqueNavigationType, uint32_t opaqueModifiers, int32_t opaqueMouseButton, const ResourceRequest& request, uint64_t listenerID, CoreIPC::ArgumentDecoder* arguments, bool& receivedPolicyAction, uint64_t& policyAction, uint64_t& downloadID) 171465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 17152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<APIObject> userData; 17162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 17172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!arguments->decode(messageDecoder)) 17182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 17192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 17202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (request.url() != pendingAPIRequestURL()) 17212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block clearPendingAPIRequestURL(); 17222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 172365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 172465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 172565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 172665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch NavigationType navigationType = static_cast<NavigationType>(opaqueNavigationType); 172765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers); 172865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebMouseEvent::Button mouseButton = static_cast<WebMouseEvent::Button>(opaqueMouseButton); 172965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 173065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebFramePolicyListenerProxy> listener = frame->setUpPolicyListenerProxy(listenerID); 17312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 17322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT(!m_inDecidePolicyForNavigationAction); 17332fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 17342fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_inDecidePolicyForNavigationAction = true; 17352fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_syncNavigationActionPolicyActionIsValid = false; 17362fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 17372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!m_policyClient.decidePolicyForNavigationAction(this, frame, navigationType, modifiers, mouseButton, request, listener.get(), userData.get())) 173865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch listener->use(); 17392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 17402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_inDecidePolicyForNavigationAction = false; 17412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 17422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // Check if we received a policy decision already. If we did, we can just pass it back. 174381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch receivedPolicyAction = m_syncNavigationActionPolicyActionIsValid; 17442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (m_syncNavigationActionPolicyActionIsValid) { 17452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block policyAction = m_syncNavigationActionPolicyAction; 174681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch downloadID = m_syncNavigationActionPolicyDownloadID; 17472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 174865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 174965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 17502fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::decidePolicyForNewWindowAction(uint64_t frameID, uint32_t opaqueNavigationType, uint32_t opaqueModifiers, int32_t opaqueMouseButton, const ResourceRequest& request, const String& frameName, uint64_t listenerID, CoreIPC::ArgumentDecoder* arguments) 175165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 17522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<APIObject> userData; 17532daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 17542fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!arguments->decode(messageDecoder)) 17552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 17562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 175765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 175865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 175965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 176065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch NavigationType navigationType = static_cast<NavigationType>(opaqueNavigationType); 176165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers); 176265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebMouseEvent::Button mouseButton = static_cast<WebMouseEvent::Button>(opaqueMouseButton); 176365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 176465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebFramePolicyListenerProxy> listener = frame->setUpPolicyListenerProxy(listenerID); 17652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!m_policyClient.decidePolicyForNewWindowAction(this, frame, navigationType, modifiers, mouseButton, request, frameName, listener.get(), userData.get())) 176665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch listener->use(); 176765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 176865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 176981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::decidePolicyForResponse(uint64_t frameID, const ResourceResponse& response, const ResourceRequest& request, uint64_t listenerID, CoreIPC::ArgumentDecoder* arguments, bool& receivedPolicyAction, uint64_t& policyAction, uint64_t& downloadID) 177065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 17712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<APIObject> userData; 17722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 17732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!arguments->decode(messageDecoder)) 17742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 17752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 177665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 177765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 177865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 177965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebFramePolicyListenerProxy> listener = frame->setUpPolicyListenerProxy(listenerID); 178065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 178165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ASSERT(!m_inDecidePolicyForMIMEType); 178265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 178365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_inDecidePolicyForMIMEType = true; 178465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_syncMimeTypePolicyActionIsValid = false; 178565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 178681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (!m_policyClient.decidePolicyForResponse(this, frame, response, request, listener.get(), userData.get())) 178765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch listener->use(); 178865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 178965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_inDecidePolicyForMIMEType = false; 179065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 179165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Check if we received a policy decision already. If we did, we can just pass it back. 179281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch receivedPolicyAction = m_syncMimeTypePolicyActionIsValid; 179365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_syncMimeTypePolicyActionIsValid) { 179465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch policyAction = m_syncMimeTypePolicyAction; 179565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch downloadID = m_syncMimeTypePolicyDownloadID; 179665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 179765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 179865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 179981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::unableToImplementPolicy(uint64_t frameID, const WebCore::ResourceError& error, CoreIPC::ArgumentDecoder* arguments) 180081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 180181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<APIObject> userData; 18022daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 180381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (!arguments->decode(messageDecoder)) 180481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return; 180581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 180681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 180781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch MESSAGE_CHECK(frame); 180881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 180981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_policyClient.unableToImplementPolicy(this, frame, error, userData.get()); 181081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 181181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 181265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// FormClient 181365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 181465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::willSubmitForm(uint64_t frameID, uint64_t sourceFrameID, const StringPairVector& textFieldValues, uint64_t listenerID, CoreIPC::ArgumentDecoder* arguments) 181565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 181665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 18172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 181865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 181965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 182065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 182165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 182265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 182365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 182465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* sourceFrame = process()->webFrame(sourceFrameID); 182565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(sourceFrame); 182665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 182765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebFormSubmissionListenerProxy> listener = frame->setUpFormSubmissionListenerProxy(listenerID); 182865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!m_formClient.willSubmitForm(this, frame, sourceFrame, textFieldValues.stringPairVector(), userData.get(), listener.get())) 182965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch listener->continueSubmission(); 183065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 183165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 183265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// ResourceLoad Client 183365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 18342fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::didInitiateLoadForResource(uint64_t frameID, uint64_t resourceIdentifier, const ResourceRequest& request, bool pageIsProvisionallyLoading) 183565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 183665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 183765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 183865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 18392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_resourceLoadClient.didInitiateLoadForResource(this, frame, resourceIdentifier, request, pageIsProvisionallyLoading); 184065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 184165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 184265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didSendRequestForResource(uint64_t frameID, uint64_t resourceIdentifier, const ResourceRequest& request, const ResourceResponse& redirectResponse) 184365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 184465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 184565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 184665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 184765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_resourceLoadClient.didSendRequestForResource(this, frame, resourceIdentifier, request, redirectResponse); 184865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 184965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 185065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didReceiveResponseForResource(uint64_t frameID, uint64_t resourceIdentifier, const ResourceResponse& response) 185165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 185265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 185365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 185465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 185565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_resourceLoadClient.didReceiveResponseForResource(this, frame, resourceIdentifier, response); 185665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 185765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 185865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didReceiveContentLengthForResource(uint64_t frameID, uint64_t resourceIdentifier, uint64_t contentLength) 185965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 186065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 186165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 186265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 186365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_resourceLoadClient.didReceiveContentLengthForResource(this, frame, resourceIdentifier, contentLength); 186465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 186565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 186665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFinishLoadForResource(uint64_t frameID, uint64_t resourceIdentifier) 186765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 186865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 186965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 187065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 187165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_resourceLoadClient.didFinishLoadForResource(this, frame, resourceIdentifier); 187265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 187365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 187465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFailLoadForResource(uint64_t frameID, uint64_t resourceIdentifier, const ResourceError& error) 187565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 187665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 187765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 187865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 187965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_resourceLoadClient.didFailLoadForResource(this, frame, resourceIdentifier, error); 188065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 188165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 188265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// UIClient 188365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 188465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::createNewPage(const WindowFeatures& windowFeatures, uint32_t opaqueModifiers, int32_t opaqueMouseButton, uint64_t& newPageID, WebPageCreationParameters& newPageParameters) 188565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 188665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebPageProxy> newPage = m_uiClient.createNewPage(this, windowFeatures, static_cast<WebEvent::Modifiers>(opaqueModifiers), static_cast<WebMouseEvent::Button>(opaqueMouseButton)); 188765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (newPage) { 188865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch newPageID = newPage->pageID(); 188965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch newPageParameters = newPage->creationParameters(); 189065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } else 189165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch newPageID = 0; 189265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 189365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 189465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::showPage() 189565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 189665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.showPage(this); 189765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 189865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 189965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::closePage() 190065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 190165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.close(this); 190265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 190365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 190465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::runJavaScriptAlert(uint64_t frameID, const String& message) 190565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 190665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 190765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 190865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19092bde8e466a4451c7319e3a072d118917957d6554Steve Block // Since runJavaScriptAlert() can spin a nested run loop we need to turn off the responsiveness timer. 19102bde8e466a4451c7319e3a072d118917957d6554Steve Block process()->responsivenessTimer()->stop(); 19112bde8e466a4451c7319e3a072d118917957d6554Steve Block 191265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.runJavaScriptAlert(this, message, frame); 191365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 191465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 191565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::runJavaScriptConfirm(uint64_t frameID, const String& message, bool& result) 191665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 191765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 191865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 191965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19202bde8e466a4451c7319e3a072d118917957d6554Steve Block // Since runJavaScriptConfirm() can spin a nested run loop we need to turn off the responsiveness timer. 19212bde8e466a4451c7319e3a072d118917957d6554Steve Block process()->responsivenessTimer()->stop(); 19222bde8e466a4451c7319e3a072d118917957d6554Steve Block 192365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch result = m_uiClient.runJavaScriptConfirm(this, message, frame); 192465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 192565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 192665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::runJavaScriptPrompt(uint64_t frameID, const String& message, const String& defaultValue, String& result) 192765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 192865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 192965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 193065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19312bde8e466a4451c7319e3a072d118917957d6554Steve Block // Since runJavaScriptPrompt() can spin a nested run loop we need to turn off the responsiveness timer. 19322bde8e466a4451c7319e3a072d118917957d6554Steve Block process()->responsivenessTimer()->stop(); 19332bde8e466a4451c7319e3a072d118917957d6554Steve Block 193465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch result = m_uiClient.runJavaScriptPrompt(this, message, defaultValue, frame); 193565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 193665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 193765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setStatusText(const String& text) 193865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 193965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.setStatusText(this, text); 194065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 194165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 194265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::mouseDidMoveOverElement(uint32_t opaqueModifiers, CoreIPC::ArgumentDecoder* arguments) 194365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 194465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 19452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 194665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 194765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 194865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 194965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers); 195065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 195165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.mouseDidMoveOverElement(this, modifiers, userData.get()); 195265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 195365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 195481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::missingPluginButtonClicked(const String& mimeType, const String& url, const String& pluginsPageURL) 195565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 195681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_uiClient.missingPluginButtonClicked(this, mimeType, url, pluginsPageURL); 195765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 195865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 195965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setToolbarsAreVisible(bool toolbarsAreVisible) 196065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 196165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.setToolbarsAreVisible(this, toolbarsAreVisible); 196265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 196365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 196465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getToolbarsAreVisible(bool& toolbarsAreVisible) 196565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 196665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch toolbarsAreVisible = m_uiClient.toolbarsAreVisible(this); 196765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 196865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 196965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setMenuBarIsVisible(bool menuBarIsVisible) 197065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 197165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.setMenuBarIsVisible(this, menuBarIsVisible); 197265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 197365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 197465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getMenuBarIsVisible(bool& menuBarIsVisible) 197565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 197665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch menuBarIsVisible = m_uiClient.menuBarIsVisible(this); 197765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 197865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 197965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setStatusBarIsVisible(bool statusBarIsVisible) 198065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 198165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.setStatusBarIsVisible(this, statusBarIsVisible); 198265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 198365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 198465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getStatusBarIsVisible(bool& statusBarIsVisible) 198565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 198665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch statusBarIsVisible = m_uiClient.statusBarIsVisible(this); 198765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 198865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 198965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setIsResizable(bool isResizable) 199065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 199165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.setIsResizable(this, isResizable); 199265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 199365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 199465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getIsResizable(bool& isResizable) 199565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 199665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch isResizable = m_uiClient.isResizable(this); 199765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 199865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 199965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setWindowFrame(const FloatRect& newWindowFrame) 200065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 200165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.setWindowFrame(this, m_pageClient->convertToDeviceSpace(newWindowFrame)); 200265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 200365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 200465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getWindowFrame(FloatRect& newWindowFrame) 200565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 200665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch newWindowFrame = m_pageClient->convertToUserSpace(m_uiClient.windowFrame(this)); 200765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 200865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 20092bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::windowToScreen(const IntRect& viewRect, IntRect& result) 20102bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 20112bde8e466a4451c7319e3a072d118917957d6554Steve Block result = m_pageClient->windowToScreen(viewRect); 20122bde8e466a4451c7319e3a072d118917957d6554Steve Block} 20132bde8e466a4451c7319e3a072d118917957d6554Steve Block 201465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::runBeforeUnloadConfirmPanel(const String& message, uint64_t frameID, bool& shouldClose) 201565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 201665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 201765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 201865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 201965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch shouldClose = m_uiClient.runBeforeUnloadConfirmPanel(this, message, frame); 202065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 202165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 202265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TILED_BACKING_STORE) 20232bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::pageDidRequestScroll(const IntPoint& point) 202465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 20252bde8e466a4451c7319e3a072d118917957d6554Steve Block m_pageClient->pageDidRequestScroll(point); 202665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 202765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 202865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 202965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didChangeViewportData(const ViewportArguments& args) 203065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 203165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->setViewportArguments(args); 203265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 203365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 203465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::pageDidScroll() 203565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 203665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.pageDidScroll(this); 203765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 203865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 203965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::runOpenPanel(uint64_t frameID, const WebOpenPanelParameters::Data& data) 204065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 204165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_openPanelResultListener) { 204265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_openPanelResultListener->invalidate(); 204365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_openPanelResultListener = 0; 204465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 204565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 204665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 204765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 204865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 204965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_openPanelResultListener = WebOpenPanelResultListenerProxy::create(this); 205065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 205165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!m_uiClient.runOpenPanel(this, frame, data, m_openPanelResultListener.get())) 205265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch didCancelForOpenPanel(); 205365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 205465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2055ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid WebPageProxy::printFrame(uint64_t frameID) 2056ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 20572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT(!m_isPerformingDOMPrintOperation); 20582fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_isPerformingDOMPrintOperation = true; 20592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2060ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 2061ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch MESSAGE_CHECK(frame); 2062ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 2063ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch m_uiClient.printFrame(this, frame); 20642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 20652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_isPerformingDOMPrintOperation = false; 2066ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 2067ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 206865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(QT) 206965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didChangeContentsSize(const WebCore::IntSize& size) 207065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 207165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->didChangeContentsSize(size); 207265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 207365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 207465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFindZoomableArea(const WebCore::IntRect& area) 207565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 207665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->didFindZoomableArea(area); 207765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 207865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 207965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::findZoomableAreaForPoint(const WebCore::IntPoint& point) 208065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 208165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 208265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 208365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 208465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::FindZoomableAreaForPoint(point), m_pageID); 208565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 208665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 208765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 208865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didDraw() 208965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 209065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_uiClient.didDraw(this); 209165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 209265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 209365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// Inspector 209465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 209565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(INSPECTOR) 209665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 209765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochWebInspectorProxy* WebPageProxy::inspector() 209865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 209965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (isClosed() || !isValid()) 210065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return 0; 210165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!m_inspector) 210265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_inspector = WebInspectorProxy::create(this); 210365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_inspector.get(); 210465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 210565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 210665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 210765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 21082bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API) 21092bde8e466a4451c7319e3a072d118917957d6554Steve BlockWebFullScreenManagerProxy* WebPageProxy::fullScreenManager() 21102bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 21112bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!m_fullScreenManager) 21122bde8e466a4451c7319e3a072d118917957d6554Steve Block m_fullScreenManager = WebFullScreenManagerProxy::create(this); 21132bde8e466a4451c7319e3a072d118917957d6554Steve Block return m_fullScreenManager.get(); 21142bde8e466a4451c7319e3a072d118917957d6554Steve Block} 21152bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 21162bde8e466a4451c7319e3a072d118917957d6554Steve Block 211765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// BackForwardList 211865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 211965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::backForwardAddItem(uint64_t itemID) 212065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 212165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_backForwardList->addItem(process()->webBackForwardItem(itemID)); 212265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 212365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 212465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::backForwardGoToItem(uint64_t itemID) 212565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 212665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_backForwardList->goToItem(process()->webBackForwardItem(itemID)); 212765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 212865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 212965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::backForwardItemAtIndex(int32_t index, uint64_t& itemID) 213065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 213165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebBackForwardListItem* item = m_backForwardList->itemAtIndex(index); 213265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch itemID = item ? item->itemID() : 0; 213365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 213465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 213565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::backForwardBackListCount(int32_t& count) 213665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 213765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch count = m_backForwardList->backListCount(); 213865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 213965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 214065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::backForwardForwardListCount(int32_t& count) 214165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 214265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch count = m_backForwardList->forwardListCount(); 214365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 214465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 21452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::editorStateChanged(const EditorState& editorState) 214665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 21472daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if PLATFORM(MAC) 21482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch bool couldChangeSecureInputState = m_editorState.isInPasswordField != editorState.isInPasswordField || m_editorState.selectionIsNone; 21492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 21502daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 21512daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_editorState = editorState; 21522daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 21532daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if PLATFORM(MAC) 21542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // This is a temporary state. Flipping secure input state too quickly can expose race conditions. 21552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (editorState.selectionIsNone) 21562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 21572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 21582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (couldChangeSecureInputState) 21592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_pageClient->updateSecureInputState(); 21602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 216165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 216265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 216365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(WIN) 216465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didChangeCompositionSelection(bool hasComposition) 216565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 216665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->compositionSelectionChanged(hasComposition); 216765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 216865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 216965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::confirmComposition(const String& compositionString) 217065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 217165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::ConfirmComposition(compositionString), m_pageID); 217265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 217365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 217465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setComposition(const String& compositionString, Vector<WebCore::CompositionUnderline>& underlines, int cursorPosition) 217565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 217665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetComposition(compositionString, underlines, cursorPosition), m_pageID); 217765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 217865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 217965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 218065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// Undo management 218165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 218265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::registerEditCommandForUndo(uint64_t commandID, uint32_t editAction) 218365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 218465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch registerEditCommand(WebEditCommandProxy::create(commandID, static_cast<EditAction>(editAction), this), Undo); 218565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 218665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 21872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::canUndoRedo(uint32_t action, bool& result) 21882daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 21892daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch result = m_pageClient->canUndoRedo(static_cast<UndoOrRedo>(action)); 21902daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 21912daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 21922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::executeUndoRedo(uint32_t action, bool& result) 21932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 21942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_pageClient->executeUndoRedo(static_cast<UndoOrRedo>(action)); 21952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch result = true; 21962daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 21972daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 219865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::clearAllEditCommands() 219965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 220065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->clearAllEditCommands(); 220165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 220265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 220365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didCountStringMatches(const String& string, uint32_t matchCount) 220465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 220565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_findClient.didCountStringMatches(this, string, matchCount); 220665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 220765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22082bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::setFindIndicator(const FloatRect& selectionRectInWindowCoordinates, const Vector<FloatRect>& textRectsInSelectionRectCoordinates, const ShareableBitmap::Handle& contentImageHandle, bool fadeOut) 220965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 22102fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<FindIndicator> findIndicator = FindIndicator::create(selectionRectInWindowCoordinates, textRectsInSelectionRectCoordinates, contentImageHandle); 221165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->setFindIndicator(findIndicator.release(), fadeOut); 221265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 221365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 221465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFindString(const String& string, uint32_t matchCount) 221565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 221665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_findClient.didFindString(this, string, matchCount); 221765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 221865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 221965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didFailToFindString(const String& string) 222065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 222165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_findClient.didFailToFindString(this, string); 222265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 222365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 222465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::valueChangedForPopupMenu(WebPopupMenuProxy*, int32_t newSelectedIndex) 222565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 222665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::DidChangeSelectedIndexForActivePopupMenu(newSelectedIndex), m_pageID); 222765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 222865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 222965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setTextFromItemForPopupMenu(WebPopupMenuProxy*, int32_t index) 223065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 223165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::SetTextForActivePopupMenu(index), m_pageID); 223265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 223365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochNativeWebMouseEvent* WebPageProxy::currentlyProcessedMouseDownEvent() 22352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 22362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return m_currentlyProcessedMouseDownEvent.get(); 22372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 22382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 22392fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::showPopupMenu(const IntRect& rect, uint64_t textDirection, const Vector<WebPopupItem>& items, int32_t selectedIndex, const PlatformPopupMenuData& data) 224065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 22412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (m_activePopupMenu) { 224265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_activePopupMenu->hidePopupMenu(); 22432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_activePopupMenu->invalidate(); 22442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_activePopupMenu = 0; 22452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 22462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 22472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_activePopupMenu = m_pageClient->createPopupMenuProxy(this); 224865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 224981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // Since showPopupMenu() can spin a nested run loop we need to turn off the responsiveness timer. 225065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->responsivenessTimer()->stop(); 225165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<WebPopupMenuProxy> protectedActivePopupMenu = m_activePopupMenu; 22532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 225481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch protectedActivePopupMenu->showPopupMenu(rect, static_cast<TextDirection>(textDirection), m_viewScaleFactor, items, data, selectedIndex); 22552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block protectedActivePopupMenu->invalidate(); 22562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block protectedActivePopupMenu = 0; 225765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 225865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 225965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::hidePopupMenu() 226065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 226165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!m_activePopupMenu) 226265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 226365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 226465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_activePopupMenu->hidePopupMenu(); 22652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_activePopupMenu->invalidate(); 226665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_activePopupMenu = 0; 226765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 226865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 226965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::showContextMenu(const IntPoint& menuLocation, const ContextMenuState& contextMenuState, const Vector<WebContextMenuItemData>& proposedItems, CoreIPC::ArgumentDecoder* arguments) 227065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 22712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch internalShowContextMenu(menuLocation, contextMenuState, proposedItems, arguments); 22722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 22732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // No matter the result of internalShowContextMenu, always notify the WebProcess that the menu is hidden so it starts handling mouse events again. 22742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch process()->send(Messages::WebPage::ContextMenuHidden(), m_pageID); 22752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 22762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 22772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::internalShowContextMenu(const IntPoint& menuLocation, const ContextMenuState& contextMenuState, const Vector<WebContextMenuItemData>& proposedItems, CoreIPC::ArgumentDecoder* arguments) 22782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 227965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> userData; 22802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebContextUserMessageDecoder messageDecoder(userData, m_process->context()); 228165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!arguments->decode(messageDecoder)) 228265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 228365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 228465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_activeContextMenuState = contextMenuState; 228565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22862bde8e466a4451c7319e3a072d118917957d6554Steve Block if (m_activeContextMenu) { 228765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_activeContextMenu->hideContextMenu(); 22882bde8e466a4451c7319e3a072d118917957d6554Steve Block m_activeContextMenu = 0; 22892bde8e466a4451c7319e3a072d118917957d6554Steve Block } 22902bde8e466a4451c7319e3a072d118917957d6554Steve Block 22912bde8e466a4451c7319e3a072d118917957d6554Steve Block m_activeContextMenu = m_pageClient->createContextMenuProxy(this); 22922bde8e466a4451c7319e3a072d118917957d6554Steve Block 22932bde8e466a4451c7319e3a072d118917957d6554Steve Block // Since showContextMenu() can spin a nested run loop we need to turn off the responsiveness timer. 22942bde8e466a4451c7319e3a072d118917957d6554Steve Block process()->responsivenessTimer()->stop(); 229565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 229665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Give the PageContextMenuClient one last swipe at changing the menu. 229765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch Vector<WebContextMenuItemData> items; 22982bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!m_contextMenuClient.getContextMenuFromProposedMenu(this, proposedItems, items, userData.get())) 229965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_activeContextMenu->showContextMenu(menuLocation, proposedItems); 23002bde8e466a4451c7319e3a072d118917957d6554Steve Block else 230165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_activeContextMenu->showContextMenu(menuLocation, items); 230265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 230365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 230465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::contextMenuItemSelected(const WebContextMenuItemData& item) 230565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 230665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Application custom items don't need to round-trip through to WebCore in the WebProcess. 230765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (item.action() >= ContextMenuItemBaseApplicationTag) { 230865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_contextMenuClient.customContextMenuItemSelected(this, item); 230965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 231065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 231165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 231265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC) 231365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (item.action() == ContextMenuItemTagSmartCopyPaste) { 231465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch setSmartInsertDeleteEnabled(!isSmartInsertDeleteEnabled()); 231565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 231665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 231765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (item.action() == ContextMenuItemTagSmartQuotes) { 231865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch TextChecker::setAutomaticQuoteSubstitutionEnabled(!TextChecker::state().isAutomaticQuoteSubstitutionEnabled); 231965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->updateTextCheckerState(); 232065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 232165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 232265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (item.action() == ContextMenuItemTagSmartDashes) { 232365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch TextChecker::setAutomaticDashSubstitutionEnabled(!TextChecker::state().isAutomaticDashSubstitutionEnabled); 232465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->updateTextCheckerState(); 232565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 232665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 232765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (item.action() == ContextMenuItemTagSmartLinks) { 232865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch TextChecker::setAutomaticLinkDetectionEnabled(!TextChecker::state().isAutomaticLinkDetectionEnabled); 232965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->updateTextCheckerState(); 233065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 233165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 233265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (item.action() == ContextMenuItemTagTextReplacement) { 233365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch TextChecker::setAutomaticTextReplacementEnabled(!TextChecker::state().isAutomaticTextReplacementEnabled); 233465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->updateTextCheckerState(); 233565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 233665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 23372bde8e466a4451c7319e3a072d118917957d6554Steve Block if (item.action() == ContextMenuItemTagCorrectSpellingAutomatically) { 23382bde8e466a4451c7319e3a072d118917957d6554Steve Block TextChecker::setAutomaticSpellingCorrectionEnabled(!TextChecker::state().isAutomaticSpellingCorrectionEnabled); 23392bde8e466a4451c7319e3a072d118917957d6554Steve Block process()->updateTextCheckerState(); 23402bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 23412bde8e466a4451c7319e3a072d118917957d6554Steve Block } 23422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (item.action() == ContextMenuItemTagShowSubstitutions) { 23432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch TextChecker::toggleSubstitutionsPanelIsShowing(); 23442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 23452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 234665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 234765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (item.action() == ContextMenuItemTagDownloadImageToDisk) { 23482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_process->context()->download(this, KURL(KURL(), m_activeContextMenuState.absoluteImageURLString)); 234965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 235065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 235165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (item.action() == ContextMenuItemTagDownloadLinkToDisk) { 23522daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_process->context()->download(this, KURL(KURL(), m_activeContextMenuState.absoluteLinkURLString)); 235365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 235465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 23552bde8e466a4451c7319e3a072d118917957d6554Steve Block if (item.action() == ContextMenuItemTagCheckSpellingWhileTyping) { 23562bde8e466a4451c7319e3a072d118917957d6554Steve Block TextChecker::setContinuousSpellCheckingEnabled(!TextChecker::state().isContinuousSpellCheckingEnabled); 23572bde8e466a4451c7319e3a072d118917957d6554Steve Block process()->updateTextCheckerState(); 23582bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 23592bde8e466a4451c7319e3a072d118917957d6554Steve Block } 23602bde8e466a4451c7319e3a072d118917957d6554Steve Block if (item.action() == ContextMenuItemTagCheckGrammarWithSpelling) { 23612bde8e466a4451c7319e3a072d118917957d6554Steve Block TextChecker::setGrammarCheckingEnabled(!TextChecker::state().isGrammarCheckingEnabled); 23622bde8e466a4451c7319e3a072d118917957d6554Steve Block process()->updateTextCheckerState(); 23632bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 23642bde8e466a4451c7319e3a072d118917957d6554Steve Block } 23652daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (item.action() == ContextMenuItemTagShowSpellingPanel) { 23662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!TextChecker::spellingUIIsShowing()) 23672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch advanceToNextMisspelling(true); 23682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch TextChecker::toggleSpellingUIIsShowing(); 23692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 23702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 237165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (item.action() == ContextMenuItemTagLearnSpelling || item.action() == ContextMenuItemTagIgnoreSpelling) 237265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ++m_pendingLearnOrIgnoreWordMessageCount; 237365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 237465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::DidSelectItemFromActiveContextMenu(item), m_pageID); 237565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 237665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 237765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didChooseFilesForOpenPanel(const Vector<String>& fileURLs) 237865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 237965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 238065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 238165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 23822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(WEB_PROCESS_SANDBOX) 23832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // FIXME: The sandbox extensions should be sent with the DidChooseFilesForOpenPanel message. This 23842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // is gated on a way of passing SandboxExtension::Handles in a Vector. 23852fc2651226baac27029e38c9d6ef883fa32084dbSteve Block for (size_t i = 0; i < fileURLs.size(); ++i) { 23862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block SandboxExtension::Handle sandboxExtensionHandle; 23872fc2651226baac27029e38c9d6ef883fa32084dbSteve Block SandboxExtension::createHandle(fileURLs[i], SandboxExtension::ReadOnly, sandboxExtensionHandle); 23882fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::ExtendSandboxForFileFromOpenPanel(sandboxExtensionHandle), m_pageID); 23892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 23902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 23912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 239265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::DidChooseFilesForOpenPanel(fileURLs), m_pageID); 239365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 239465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_openPanelResultListener->invalidate(); 239565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_openPanelResultListener = 0; 239665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 239765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 239865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didCancelForOpenPanel() 239965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 240065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 240165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 240265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 240365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::DidCancelForOpenPanel(), m_pageID); 240465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 240565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_openPanelResultListener->invalidate(); 240665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_openPanelResultListener = 0; 240765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 240865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24092daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::advanceToNextMisspelling(bool startBeforeSelection) const 241065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 241165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::AdvanceToNextMisspelling(startBeforeSelection), m_pageID); 241265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 241365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::changeSpellingToWord(const String& word) const 241565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 241665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (word.isEmpty()) 241765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 241865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 241965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::ChangeSpellingToWord(word), m_pageID); 242065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 242165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 242265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::registerEditCommand(PassRefPtr<WebEditCommandProxy> commandProxy, UndoOrRedo undoOrRedo) 242365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 242465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->registerEditCommand(commandProxy, undoOrRedo); 242565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 242665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 242765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::addEditCommand(WebEditCommandProxy* command) 242865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 242965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_editCommandSet.add(command); 243065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 243165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 243265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::removeEditCommand(WebEditCommandProxy* command) 243365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 243465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_editCommandSet.remove(command); 243565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 243665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!isValid()) 243765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 243865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::DidRemoveEditCommand(command->commandID()), m_pageID); 243965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 244065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24412bde8e466a4451c7319e3a072d118917957d6554Steve Blockbool WebPageProxy::isValidEditCommand(WebEditCommandProxy* command) 24422bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 24432bde8e466a4451c7319e3a072d118917957d6554Steve Block return m_editCommandSet.find(command) != m_editCommandSet.end(); 24442bde8e466a4451c7319e3a072d118917957d6554Steve Block} 24452bde8e466a4451c7319e3a072d118917957d6554Steve Block 244665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochint64_t WebPageProxy::spellDocumentTag() 244765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 244865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!m_hasSpellDocumentTag) { 24492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_spellDocumentTag = TextChecker::uniqueSpellDocumentTag(this); 245065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_hasSpellDocumentTag = true; 245165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 245265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 245365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_spellDocumentTag; 245465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 245565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if USE(UNIFIED_TEXT_CHECKING) 24572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 245865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::checkTextOfParagraph(const String& text, uint64_t checkingTypes, Vector<TextCheckingResult>& results) 245965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 246065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch results = TextChecker::checkTextOfParagraph(spellDocumentTag(), text.characters(), text.length(), checkingTypes); 246165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 246265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 24642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 24652daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::checkSpellingOfString(const String& text, int32_t& misspellingLocation, int32_t& misspellingLength) 24662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 24672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch TextChecker::checkSpellingOfString(spellDocumentTag(), text.characters(), text.length(), misspellingLocation, misspellingLength); 24682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 24692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 24702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::checkGrammarOfString(const String& text, Vector<WebCore::GrammarDetail>& grammarDetails, int32_t& badGrammarLocation, int32_t& badGrammarLength) 24712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 24722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch TextChecker::checkGrammarOfString(spellDocumentTag(), text.characters(), text.length(), grammarDetails, badGrammarLocation, badGrammarLength); 24732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 24742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 24752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::spellingUIIsShowing(bool& isShowing) 24762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 24772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch isShowing = TextChecker::spellingUIIsShowing(); 24782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 24792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 248065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::updateSpellingUIWithMisspelledWord(const String& misspelledWord) 248165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 24822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch TextChecker::updateSpellingUIWithMisspelledWord(spellDocumentTag(), misspelledWord); 248365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 248465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 248581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::updateSpellingUIWithGrammarString(const String& badGrammarPhrase, const GrammarDetail& grammarDetail) 248681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 24872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch TextChecker::updateSpellingUIWithGrammarString(spellDocumentTag(), badGrammarPhrase, grammarDetail); 248881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 248981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 249065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::getGuessesForWord(const String& word, const String& context, Vector<String>& guesses) 249165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 249265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch TextChecker::getGuessesForWord(spellDocumentTag(), word, context, guesses); 249365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 249465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 249565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::learnWord(const String& word) 249665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 249765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(m_pendingLearnOrIgnoreWordMessageCount); 249865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch --m_pendingLearnOrIgnoreWordMessageCount; 249965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 25002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch TextChecker::learnWord(spellDocumentTag(), word); 250165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 250265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 250365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::ignoreWord(const String& word) 250465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 250565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(m_pendingLearnOrIgnoreWordMessageCount); 250665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch --m_pendingLearnOrIgnoreWordMessageCount; 250765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 250865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch TextChecker::ignoreWord(spellDocumentTag(), word); 250965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 251065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 251165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// Other 251265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 25132bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::setFocus(bool focused) 25142bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 25152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (focused) 25162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_uiClient.focus(this); 25172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch else 25182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_uiClient.unfocus(this); 25192bde8e466a4451c7319e3a072d118917957d6554Steve Block} 25202bde8e466a4451c7319e3a072d118917957d6554Steve Block 25212daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::takeFocus(uint32_t direction) 252265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 25232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_uiClient.takeFocus(this, (static_cast<FocusDirection>(direction) == FocusDirectionForward) ? kWKFocusDirectionForward : kWKFocusDirectionBackward); 252465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 252565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 252665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setToolTip(const String& toolTip) 252765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 252865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch String oldToolTip = m_toolTip; 252965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_toolTip = toolTip; 253065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->toolTipChanged(oldToolTip, m_toolTip); 253165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 253265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 253365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::setCursor(const WebCore::Cursor& cursor) 253465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 253565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->setCursor(cursor); 253665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 253765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 253865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didReceiveEvent(uint32_t opaqueType, bool handled) 253965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 254065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebEvent::Type type = static_cast<WebEvent::Type>(opaqueType); 254165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 254265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch switch (type) { 25432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch case WebEvent::NoType: 254465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::MouseMove: 254565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch break; 254665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 254765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::MouseDown: 254865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::MouseUp: 254965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::Wheel: 255065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::KeyDown: 255165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::KeyUp: 255265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::RawKeyDown: 255365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::Char: 25542fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(GESTURE_EVENTS) 25552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block case WebEvent::GestureScrollBegin: 25562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block case WebEvent::GestureScrollEnd: 25572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 255865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->responsivenessTimer()->stop(); 255965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch break; 256065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 256165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 256265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch switch (type) { 25632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch case WebEvent::NoType: 25642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch break; 256565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::MouseMove: 256665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_processingMouseMoveEvent = false; 256765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_nextMouseMoveEvent) { 256865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch handleMouseEvent(*m_nextMouseMoveEvent); 256965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_nextMouseMoveEvent = nullptr; 257065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 257165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch break; 257265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::MouseDown: 25732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(GESTURE_EVENTS) 25742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block case WebEvent::GestureScrollBegin: 25752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block case WebEvent::GestureScrollEnd: 25762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 257765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch break; 25782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch case WebEvent::MouseUp: 25792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_currentlyProcessedMouseDownEvent = nullptr; 25802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch break; 258165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 258265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::Wheel: { 258365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_processingWheelEvent = false; 258465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_nextWheelEvent) { 258565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch handleWheelEvent(*m_nextWheelEvent); 258665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_nextWheelEvent = nullptr; 258765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 258865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch break; 258965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 259065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 259165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::KeyDown: 259265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::KeyUp: 259365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::RawKeyDown: 259465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case WebEvent::Char: { 259565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch NativeWebKeyboardEvent event = m_keyEventQueue.first(); 259665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(type == event.type()); 259765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 259865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_keyEventQueue.removeFirst(); 259965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 26002fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_pageClient->doneWithKeyEvent(event, handled); 26012fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 260265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (handled) 260365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch break; 260465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 26052daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (m_uiClient.implementsDidNotHandleKeyEvent()) 26062daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_uiClient.didNotHandleKeyEvent(this, event); 26072daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if PLATFORM(WIN) 26082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch else 26092daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch ::TranslateMessage(event.nativeEvent()); 26102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 261165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch break; 261265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 261365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 261465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 261565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 26162fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::voidCallback(uint64_t callbackID) 26172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 26182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<VoidCallback> callback = m_voidCallbacks.take(callbackID); 26192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!callback) { 26202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // FIXME: Log error or assert. 26212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 26222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 26232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 26242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block callback->performCallback(); 26252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 26262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 262765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::dataCallback(const CoreIPC::DataReference& dataReference, uint64_t callbackID) 262865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 262965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<DataCallback> callback = m_dataCallbacks.take(callbackID); 263065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!callback) { 263165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: Log error or assert. 263265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 263365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 263465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 263565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch callback->performCallbackWithReturnValue(WebData::create(dataReference.data(), dataReference.size()).get()); 263665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 263765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 263865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::stringCallback(const String& resultString, uint64_t callbackID) 263965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 264065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<StringCallback> callback = m_stringCallbacks.take(callbackID); 264165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!callback) { 264265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: Log error or assert. 26432bde8e466a4451c7319e3a072d118917957d6554Steve Block // this can validly happen if a load invalidated the callback, though 264465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 264565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 264665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 26472bde8e466a4451c7319e3a072d118917957d6554Steve Block m_loadDependentStringCallbackIDs.remove(callbackID); 26482bde8e466a4451c7319e3a072d118917957d6554Steve Block 264965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch callback->performCallbackWithReturnValue(resultString.impl()); 265065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 265165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 265281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::scriptValueCallback(const CoreIPC::DataReference& dataReference, uint64_t callbackID) 265381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 265481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<ScriptValueCallback> callback = m_scriptValueCallbacks.take(callbackID); 265581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (!callback) { 265681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // FIXME: Log error or assert. 265781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return; 265881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch } 265981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 266081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch Vector<uint8_t> data; 266181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch data.reserveInitialCapacity(dataReference.size()); 266281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch data.append(dataReference.data(), dataReference.size()); 266381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 266481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch callback->performCallbackWithReturnValue(data.size() ? WebSerializedScriptValue::adopt(data).get() : 0); 266581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 266681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 26672fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::computedPagesCallback(const Vector<WebCore::IntRect>& pageRects, double totalScaleFactorForPrinting, uint64_t callbackID) 26682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 26692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<ComputedPagesCallback> callback = m_computedPagesCallbacks.take(callbackID); 26702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!callback) { 26712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // FIXME: Log error or assert. 26722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 26732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 26742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 26752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block callback->performCallbackWithReturnValue(pageRects, totalScaleFactorForPrinting); 26762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 26772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 267881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::validateCommandCallback(const String& commandName, bool isEnabled, int state, uint64_t callbackID) 267981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 268081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<ValidateCommandCallback> callback = m_validateCommandCallbacks.take(callbackID); 268181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (!callback) { 268281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // FIXME: Log error or assert. 268381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return; 268481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch } 268581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 268681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch callback->performCallbackWithReturnValue(commandName.impl(), isEnabled, state); 268781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 268881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 268965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::focusedFrameChanged(uint64_t frameID) 269065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 269165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!frameID) { 269265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_focusedFrame = 0; 269365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 269465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 269565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 269665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 269765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 269865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 269965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_focusedFrame = frame; 270065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 270165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 270265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::frameSetLargestFrameChanged(uint64_t frameID) 270365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 270465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!frameID) { 270565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_frameSetLargestFrame = 0; 270665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 270765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 270865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 270965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 271065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 271165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 271265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_frameSetLargestFrame = frame; 271365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 271465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 271565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::processDidBecomeUnresponsive() 271665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 271765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.processDidBecomeUnresponsive(this); 271865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 271965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 272065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::processDidBecomeResponsive() 272165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 272265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.processDidBecomeResponsive(this); 272365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 272465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 272565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::processDidCrash() 272665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 272765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ASSERT(m_pageClient); 272865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 272965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_isValid = false; 273065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 27312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_mainFrame = nullptr; 273265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_drawingArea = nullptr; 273365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 273465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(INSPECTOR) 273565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_inspector) { 273665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_inspector->invalidate(); 27372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_inspector = nullptr; 273865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 273965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 274065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 27412bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API) 27422bde8e466a4451c7319e3a072d118917957d6554Steve Block if (m_fullScreenManager) { 27432bde8e466a4451c7319e3a072d118917957d6554Steve Block m_fullScreenManager->invalidate(); 27442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_fullScreenManager = nullptr; 27452bde8e466a4451c7319e3a072d118917957d6554Steve Block } 27462bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 27472bde8e466a4451c7319e3a072d118917957d6554Steve Block 274865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_openPanelResultListener) { 274965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_openPanelResultListener->invalidate(); 27502daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_openPanelResultListener = nullptr; 275165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 275265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 275365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_geolocationPermissionRequestManager.invalidateRequests(); 275465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 275565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_toolTip = String(); 275665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 27572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_mainFrameHasHorizontalScrollbar = false; 27582fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_mainFrameHasVerticalScrollbar = false; 27592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 276081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_mainFrameIsPinnedToLeftSide = false; 276181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_mainFrameIsPinnedToRightSide = false; 276281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 27632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block invalidateCallbackMap(m_voidCallbacks); 276465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch invalidateCallbackMap(m_dataCallbacks); 276565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch invalidateCallbackMap(m_stringCallbacks); 27662bde8e466a4451c7319e3a072d118917957d6554Steve Block m_loadDependentStringCallbackIDs.clear(); 276781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch invalidateCallbackMap(m_scriptValueCallbacks); 27682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block invalidateCallbackMap(m_computedPagesCallbacks); 276981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch invalidateCallbackMap(m_validateCommandCallbacks); 277065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 277165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch Vector<WebEditCommandProxy*> editCommandVector; 277265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch copyToVector(m_editCommandSet, editCommandVector); 277365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_editCommandSet.clear(); 277465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch for (size_t i = 0, size = editCommandVector.size(); i < size; ++i) 277565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch editCommandVector[i]->invalidate(); 277665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->clearAllEditCommands(); 277765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 277865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_activePopupMenu = 0; 277965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 278065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_estimatedProgress = 0.0; 278165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 278265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pendingLearnOrIgnoreWordMessageCount = 0; 278365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 278465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_pageClient->processDidCrash(); 278565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.processDidCrash(this); 27862daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 27872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // Can't expect DidReceiveEvent notifications from a crashed web process. 27882daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_keyEventQueue.clear(); 27892daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_nextWheelEvent = nullptr; 27902daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_nextMouseMoveEvent = nullptr; 27912daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_currentlyProcessedMouseDownEvent = nullptr; 27922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 27932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) 27942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch dismissCorrectionPanel(ReasonForDismissingCorrectionPanelIgnored); 27952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_pageClient->dismissDictionaryLookupPanel(); 27962daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 279765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 279865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 279965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochWebPageCreationParameters WebPageProxy::creationParameters() const 280065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 280165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebPageCreationParameters parameters; 280265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 280365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.viewSize = m_pageClient->viewSize(); 280465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.isActive = m_pageClient->isViewWindowActive(); 280565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.isFocused = m_pageClient->isViewFocused(); 280665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.isVisible = m_pageClient->isViewVisible(); 280765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.isInWindow = m_pageClient->isViewInWindow(); 280881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch parameters.drawingAreaType = m_drawingArea->type(); 280965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.store = m_pageGroup->preferences()->store(); 281065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.pageGroupData = m_pageGroup->data(); 281165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.drawsBackground = m_drawsBackground; 281265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.drawsTransparentBackground = m_drawsTransparentBackground; 281381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch parameters.areMemoryCacheClientCallsEnabled = m_areMemoryCacheClientCallsEnabled; 281465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.useFixedLayout = m_useFixedLayout; 281565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.fixedLayoutSize = m_fixedLayoutSize; 281665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.userAgent = userAgent(); 281765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.sessionState = SessionState(m_backForwardList->entries(), m_backForwardList->currentIndex()); 281865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.highestUsedBackForwardItemID = WebBackForwardListItem::highedUsedItemID(); 281981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch parameters.canRunBeforeUnloadConfirmPanel = m_uiClient.canRunBeforeUnloadConfirmPanel(); 2820ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch parameters.canRunModal = m_uiClient.canRunModal(); 28212bde8e466a4451c7319e3a072d118917957d6554Steve Block parameters.userSpaceScaleFactor = m_pageClient->userSpaceScaleFactor(); 282265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 282365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC) 282465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.isSmartInsertDeleteEnabled = m_isSmartInsertDeleteEnabled; 282565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 282665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 282765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(WIN) 282865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch parameters.nativeWindow = m_pageClient->nativeWindow(); 282965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 283065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 283165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return parameters; 283265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 283365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 283465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if USE(ACCELERATED_COMPOSITING) 28352fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::enterAcceleratedCompositingMode(const LayerTreeContext& layerTreeContext) 28362fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 28372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_pageClient->enterAcceleratedCompositingMode(layerTreeContext); 28382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 28392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 28402fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::exitAcceleratedCompositingMode() 28412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 28422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_pageClient->exitAcceleratedCompositingMode(); 28432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 284465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // USE(ACCELERATED_COMPOSITING) 284565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 284665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::backForwardClear() 284765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 284865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_backForwardList->clear(); 284965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 285065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 285165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::canAuthenticateAgainstProtectionSpaceInFrame(uint64_t frameID, const WebCore::ProtectionSpace& coreProtectionSpace, bool& canAuthenticate) 285265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 285365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 285465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 285565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 285665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebProtectionSpace> protectionSpace = WebProtectionSpace::create(coreProtectionSpace); 285765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 285865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch canAuthenticate = m_loaderClient.canAuthenticateAgainstProtectionSpaceInFrame(this, frame, protectionSpace.get()); 285965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 286065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 286165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::didReceiveAuthenticationChallenge(uint64_t frameID, const WebCore::AuthenticationChallenge& coreChallenge, uint64_t challengeID) 286265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 286365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 286465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 286565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 28662bde8e466a4451c7319e3a072d118917957d6554Steve Block RefPtr<AuthenticationChallengeProxy> authenticationChallenge = AuthenticationChallengeProxy::create(coreChallenge, challengeID, process()); 286765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 286865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_loaderClient.didReceiveAuthenticationChallengeInFrame(this, frame, authenticationChallenge.get()); 286965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 287065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 287165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::exceededDatabaseQuota(uint64_t frameID, const String& originIdentifier, const String& databaseName, const String& displayName, uint64_t currentQuota, uint64_t currentUsage, uint64_t expectedUsage, uint64_t& newQuota) 287265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 287365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 287465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 287565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 287665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebSecurityOrigin> origin = WebSecurityOrigin::create(originIdentifier); 287765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 287865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch newQuota = m_uiClient.exceededDatabaseQuota(this, frame, origin.get(), databaseName, displayName, currentQuota, currentUsage, expectedUsage); 287965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 288065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 288165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::requestGeolocationPermissionForFrame(uint64_t geolocationID, uint64_t frameID, String originIdentifier) 288265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 288365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebFrameProxy* frame = process()->webFrame(frameID); 288465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MESSAGE_CHECK(frame); 288565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 288665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebSecurityOrigin> origin = WebSecurityOrigin::create(originIdentifier); 288765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<GeolocationPermissionRequestProxy> request = m_geolocationPermissionRequestManager.createRequest(geolocationID); 288865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 288965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!m_uiClient.decidePolicyForGeolocationPermissionRequest(this, frame, origin.get(), request.get())) 289065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch request->deny(); 289165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 289265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2893ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochfloat WebPageProxy::headerHeight(WebFrameProxy* frame) 2894ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 2895ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch return m_uiClient.headerHeight(this, frame); 2896ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 2897ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 2898ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochfloat WebPageProxy::footerHeight(WebFrameProxy* frame) 2899ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 2900ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch return m_uiClient.footerHeight(this, frame); 2901ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 2902ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 29032fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::drawHeader(WebFrameProxy* frame, const FloatRect& rect) 2904ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 2905ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch m_uiClient.drawHeader(this, frame, rect); 2906ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 2907ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 29082fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::drawFooter(WebFrameProxy* frame, const FloatRect& rect) 2909ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 2910ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch m_uiClient.drawFooter(this, frame, rect); 2911ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 2912ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 29132fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::didCompleteRubberBandForMainFrame(const IntSize& initialOverhang) 29142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 29152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_uiClient.didCompleteRubberBandForMainFrame(this, initialOverhang); 29162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 29172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 29182fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid WebPageProxy::didChangeScrollbarsForMainFrame(bool hasHorizontalScrollbar, bool hasVerticalScrollbar) 29192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 29202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_mainFrameHasHorizontalScrollbar = hasHorizontalScrollbar; 29212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_mainFrameHasVerticalScrollbar = hasVerticalScrollbar; 29222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 29232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_pageClient->didChangeScrollbarsForMainFrame(); 29242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 29252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 292681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::didChangeScrollOffsetPinningForMainFrame(bool pinnedToLeftSide, bool pinnedToRightSide) 292781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 292881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_mainFrameIsPinnedToLeftSide = pinnedToLeftSide; 292981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_mainFrameIsPinnedToRightSide = pinnedToRightSide; 293081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 293181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 293281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::didFinishLoadingDataForCustomRepresentation(const String& suggestedFilename, const CoreIPC::DataReference& dataReference) 293365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 293481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_pageClient->didFinishLoadingDataForCustomRepresentation(suggestedFilename, dataReference); 293565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 293665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 293765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::backForwardRemovedItem(uint64_t itemID) 293865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 293965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch process()->send(Messages::WebPage::DidRemoveBackForwardItem(itemID), m_pageID); 294065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 294165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 294265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::beginPrinting(WebFrameProxy* frame, const PrintInfo& printInfo) 294365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 294465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (m_isInPrintingMode) 294565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 294665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 294765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_isInPrintingMode = true; 29482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::BeginPrinting(frame->frameID(), printInfo), m_pageID, m_isPerformingDOMPrintOperation ? CoreIPC::DispatchMessageEvenWhenWaitingForSyncReply : 0); 294965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 295065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 295165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPageProxy::endPrinting() 295265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 295365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!m_isInPrintingMode) 295465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return; 295565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 295665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_isInPrintingMode = false; 29572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::EndPrinting(), m_pageID, m_isPerformingDOMPrintOperation ? CoreIPC::DispatchMessageEvenWhenWaitingForSyncReply : 0); 295865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 295965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 29602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::computePagesForPrinting(WebFrameProxy* frame, const PrintInfo& printInfo, PassRefPtr<ComputedPagesCallback> prpCallback) 296165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 29622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch RefPtr<ComputedPagesCallback> callback = prpCallback; 29632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 29642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 29652daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 29662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 29672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 29682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block uint64_t callbackID = callback->callbackID(); 29692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_computedPagesCallbacks.set(callbackID, callback.get()); 29702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_isInPrintingMode = true; 29712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::ComputePagesForPrinting(frame->frameID(), printInfo, callbackID), m_pageID, m_isPerformingDOMPrintOperation ? CoreIPC::DispatchMessageEvenWhenWaitingForSyncReply : 0); 297265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 297365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 297481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if PLATFORM(MAC) || PLATFORM(WIN) 29752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::drawRectToPDF(WebFrameProxy* frame, const IntRect& rect, PassRefPtr<DataCallback> prpCallback) 297665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 29772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch RefPtr<DataCallback> callback = prpCallback; 29782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 29792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 29802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 29812daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 29822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 29832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block uint64_t callbackID = callback->callbackID(); 29842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_dataCallbacks.set(callbackID, callback.get()); 29852fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::DrawRectToPDF(frame->frameID(), rect, callbackID), m_pageID, m_isPerformingDOMPrintOperation ? CoreIPC::DispatchMessageEvenWhenWaitingForSyncReply : 0); 29862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 29872fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 29882daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::drawPagesToPDF(WebFrameProxy* frame, uint32_t first, uint32_t count, PassRefPtr<DataCallback> prpCallback) 29892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 29902daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch RefPtr<DataCallback> callback = prpCallback; 29912daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!isValid()) { 29922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch callback->invalidate(); 29932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return; 29942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 29952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 29962fc2651226baac27029e38c9d6ef883fa32084dbSteve Block uint64_t callbackID = callback->callbackID(); 29972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_dataCallbacks.set(callbackID, callback.get()); 29982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block process()->send(Messages::WebPage::DrawPagesToPDF(frame->frameID(), first, count, callbackID), m_pageID, m_isPerformingDOMPrintOperation ? CoreIPC::DispatchMessageEvenWhenWaitingForSyncReply : 0); 299965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 300065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 300165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 300281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPageProxy::flashBackingStoreUpdates(const Vector<IntRect>& updateRects) 300381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 300481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_pageClient->flashBackingStoreUpdates(updateRects); 300581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 300681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 300781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochColor WebPageProxy::viewUpdatesFlashColor() 300881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 300981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return Color(0, 200, 255); 301081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 301181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 301281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochColor WebPageProxy::backingStoreUpdatesFlashColor() 301381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 301481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return Color(200, 0, 255); 301581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 301681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 30172bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::saveDataToFileInDownloadsFolder(const String& suggestedFilename, const String& mimeType, const String& originatingURLString, WebData* data) 30182bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 30192bde8e466a4451c7319e3a072d118917957d6554Steve Block m_uiClient.saveDataToFileInDownloadsFolder(this, suggestedFilename, mimeType, originatingURLString, data); 30202bde8e466a4451c7319e3a072d118917957d6554Steve Block} 30212bde8e466a4451c7319e3a072d118917957d6554Steve Block 30222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::linkClicked(const String& url, const WebMouseEvent& event) 30232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 30242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch process()->send(Messages::WebPage::LinkClicked(url, event), m_pageID, 0); 30252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 30262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 30272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if PLATFORM(MAC) 30282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 30292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid WebPageProxy::substitutionsPanelIsShowing(bool& isShowing) 30302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 30312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch isShowing = TextChecker::substitutionsPanelIsShowing(); 30322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 30332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 30342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if !defined(BUILDING_ON_SNOW_LEOPARD) 30352bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::showCorrectionPanel(int32_t panelType, const WebCore::FloatRect& boundingBoxOfReplacedString, const String& replacedString, const String& replacementString, const Vector<String>& alternativeReplacementStrings) 30362bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 30372bde8e466a4451c7319e3a072d118917957d6554Steve Block m_pageClient->showCorrectionPanel((WebCore::CorrectionPanelInfo::PanelType)panelType, boundingBoxOfReplacedString, replacedString, replacementString, alternativeReplacementStrings); 30382bde8e466a4451c7319e3a072d118917957d6554Steve Block} 30392bde8e466a4451c7319e3a072d118917957d6554Steve Block 30402bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::dismissCorrectionPanel(int32_t reason) 30412bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 30422bde8e466a4451c7319e3a072d118917957d6554Steve Block m_pageClient->dismissCorrectionPanel((WebCore::ReasonForDismissingCorrectionPanel)reason); 30432bde8e466a4451c7319e3a072d118917957d6554Steve Block} 30442bde8e466a4451c7319e3a072d118917957d6554Steve Block 30452bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::dismissCorrectionPanelSoon(int32_t reason, String& result) 30462bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 30472bde8e466a4451c7319e3a072d118917957d6554Steve Block result = m_pageClient->dismissCorrectionPanelSoon((WebCore::ReasonForDismissingCorrectionPanel)reason); 30482bde8e466a4451c7319e3a072d118917957d6554Steve Block} 30492bde8e466a4451c7319e3a072d118917957d6554Steve Block 30502bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::recordAutocorrectionResponse(int32_t responseType, const String& replacedString, const String& replacementString) 30512bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 30522bde8e466a4451c7319e3a072d118917957d6554Steve Block m_pageClient->recordAutocorrectionResponse((WebCore::EditorClient::AutocorrectionResponseType)responseType, replacedString, replacementString); 30532bde8e466a4451c7319e3a072d118917957d6554Steve Block} 30542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif // !defined(BUILDING_ON_SNOW_LEOPARD) 30552bde8e466a4451c7319e3a072d118917957d6554Steve Block 30562bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebPageProxy::handleCorrectionPanelResult(const String& result) 30572bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 30582bde8e466a4451c7319e3a072d118917957d6554Steve Block#if !defined(BUILDING_ON_SNOW_LEOPARD) 30592bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!isClosed()) 30602bde8e466a4451c7319e3a072d118917957d6554Steve Block process()->send(Messages::WebPage::HandleCorrectionPanelResult(result), m_pageID, 0); 30612bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 30622bde8e466a4451c7319e3a072d118917957d6554Steve Block} 30632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif // PLATFORM(MAC) 30642bde8e466a4451c7319e3a072d118917957d6554Steve Block 306565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebKit 3066