165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch/* 22daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben 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#import "config.h" 2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "PageClientImpl.h" 2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "DataReference.h" 3081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#import "DictionaryPopupInfo.h" 3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "FindIndicator.h" 322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#import "NativeWebKeyboardEvent.h" 3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WKAPICast.h" 3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WKStringCF.h" 3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WKViewInternal.h" 3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WebContextMenuProxyMac.h" 3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WebEditCommandProxy.h" 3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WebPopupMenuProxyMac.h" 3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <WebCore/Cursor.h> 4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <WebCore/FloatRect.h> 4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <WebCore/FoundationExtras.h> 42ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#import <WebCore/GraphicsContext.h> 4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <WebCore/KeyboardEvent.h> 4481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#import <WebCore/NotImplemented.h> 4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <wtf/PassOwnPtr.h> 4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <wtf/text/CString.h> 4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <wtf/text/WTFString.h> 482bde8e466a4451c7319e3a072d118917957d6554Steve Block#import <WebKitSystemInterface.h> 4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 502fc2651226baac27029e38c9d6ef883fa32084dbSteve Block@interface NSApplication (WebNSApplicationDetails) 512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block- (NSCursor *)_cursorRectCursor; 522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block@end 532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 5465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochusing namespace WebCore; 552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochusing namespace WebKit; 5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch@interface WKEditCommandObjC : NSObject 5865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch RefPtr<WebEditCommandProxy> m_command; 6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch- (id)initWithWebEditCommandProxy:(PassRefPtr<WebEditCommandProxy>)command; 622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch- (WebEditCommandProxy*)command; 632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch@end 6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 652daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch@interface WKEditorUndoTargetObjC : NSObject 662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch- (void)undoEditing:(id)sender; 672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch- (void)redoEditing:(id)sender; 6865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@end 6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch@implementation WKEditCommandObjC 7165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch- (id)initWithWebEditCommandProxy:(PassRefPtr<WebEditCommandProxy>)command 7365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch self = [super init]; 7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!self) 7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return nil; 7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_command = command; 7965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return self; 8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 8165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch- (WebEditCommandProxy*)command 8365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 8465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_command.get(); 8565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@end 8865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 892daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch@implementation WKEditorUndoTargetObjC 9065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (void)undoEditing:(id)sender 9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch ASSERT([sender isKindOfClass:[WKEditCommandObjC class]]); 9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [sender command]->unapply(); 9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (void)redoEditing:(id)sender 9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch ASSERT([sender isKindOfClass:[WKEditCommandObjC class]]); 10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [sender command]->reapply(); 10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@end 10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebKit { 10665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochNSString* nsStringFromWebCoreString(const String& string) 10865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 10965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return string.impl() ? HardAutorelease(WKStringCopyCFString(0, toAPI(string.impl()))) : @""; 11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 11165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 11265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPassOwnPtr<PageClientImpl> PageClientImpl::create(WKView* wkView) 11365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 11465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return adoptPtr(new PageClientImpl(wkView)); 11565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 11665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 11765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPageClientImpl::PageClientImpl(WKView* wkView) 11865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch : m_wkView(wkView) 1192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch , m_undoTarget(AdoptNS, [[WKEditorUndoTargetObjC alloc] init]) 12065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 12165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 12265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 12365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPageClientImpl::~PageClientImpl() 12465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 12565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 12665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 12765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPassOwnPtr<DrawingAreaProxy> PageClientImpl::createDrawingAreaProxy() 12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 12965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView _createDrawingAreaProxy]; 13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 13265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setViewNeedsDisplay(const WebCore::IntRect& rect) 13365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView setNeedsDisplayInRect:rect]; 13565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 13765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::displayView() 13865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 13965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView displayIfNeeded]; 14065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 14165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 142ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid PageClientImpl::scrollView(const IntRect& scrollRect, const IntSize& scrollOffset) 143ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 144ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch NSRect clippedScrollRect = NSIntersectionRect(scrollRect, NSOffsetRect(scrollRect, -scrollOffset.width(), -scrollOffset.height())); 145ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 146ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch [m_wkView translateRectsNeedingDisplayInRect:clippedScrollRect by:scrollOffset]; 147ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch [m_wkView scrollRect:clippedScrollRect by:scrollOffset]; 148ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 149ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 15065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochIntSize PageClientImpl::viewSize() 15165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 15265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return IntSize([m_wkView bounds].size); 15365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 15465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 15565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool PageClientImpl::isViewWindowActive() 15665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 1572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return [[m_wkView window] isKeyWindow] || [NSApp keyWindow] == [m_wkView window]; 15865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 15965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 16065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool PageClientImpl::isViewFocused() 16165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 16265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView _isFocused]; 16365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 16465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 16565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool PageClientImpl::isViewVisible() 16665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 16765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (![m_wkView window]) 16865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return false; 16965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 1702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (![[m_wkView window] isVisible]) 1712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return false; 1722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 17365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if ([m_wkView isHiddenOrHasHiddenAncestor]) 17465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return false; 17565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 17665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return true; 17765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 17865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 17965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool PageClientImpl::isViewInWindow() 18065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 18165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView window]; 18265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 18365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 18465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::processDidCrash() 18565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 18665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _processDidCrash]; 18765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 1882fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1892fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid PageClientImpl::pageClosed() 1902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 1912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block [m_wkView _pageClosed]; 1922fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 19365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::didRelaunchProcess() 19565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 19665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _didRelaunchProcess]; 19765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 19865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::toolTipChanged(const String& oldToolTip, const String& newToolTip) 20065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 20165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _toolTipChangedFrom:nsStringFromWebCoreString(oldToolTip) to:nsStringFromWebCoreString(newToolTip)]; 20265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 20365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 20465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setCursor(const WebCore::Cursor& cursor) 20565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 2062fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (![NSApp _cursorRectCursor]) 2072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block [m_wkView _setCursor:cursor.platformCursor()]; 20865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 20965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 21065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setViewportArguments(const WebCore::ViewportArguments&) 21165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 21265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 21365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 21465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::registerEditCommand(PassRefPtr<WebEditCommandProxy> prpCommand, WebPageProxy::UndoOrRedo undoOrRedo) 21565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 21665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebEditCommandProxy> command = prpCommand; 21765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch RetainPtr<WKEditCommandObjC> commandObjC(AdoptNS, [[WKEditCommandObjC alloc] initWithWebEditCommandProxy:command]); 2192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch String actionName = WebEditCommandProxy::nameForEditAction(command->editAction()); 22065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch NSUndoManager *undoManager = [m_wkView undoManager]; 22265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [undoManager registerUndoWithTarget:m_undoTarget.get() selector:((undoOrRedo == WebPageProxy::Undo) ? @selector(undoEditing:) : @selector(redoEditing:)) object:commandObjC.get()]; 2232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!actionName.isEmpty()) 2242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch [undoManager setActionName:(NSString *)actionName]; 22565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 22665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::clearAllEditCommands() 22865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 22965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [[m_wkView undoManager] removeAllActionsWithTarget:m_undoTarget.get()]; 23065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 23165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochbool PageClientImpl::canUndoRedo(WebPageProxy::UndoOrRedo undoOrRedo) 23365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 2342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return (undoOrRedo == WebPageProxy::Undo) ? [[m_wkView undoManager] canUndo] : [[m_wkView undoManager] canRedo]; 2352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 2362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 2372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid PageClientImpl::executeUndoRedo(WebPageProxy::UndoOrRedo undoOrRedo) 2382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 2392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return (undoOrRedo == WebPageProxy::Undo) ? [[m_wkView undoManager] undo] : [[m_wkView undoManager] redo]; 2402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 2412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 2422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochbool PageClientImpl::interpretKeyEvent(const NativeWebKeyboardEvent& event, Vector<WebCore::KeypressCommand>& commands) 2432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 2442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return [m_wkView _interpretKeyEvent:event.nativeEvent() savingCommandsTo:commands]; 24565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 24665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2472bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid PageClientImpl::setDragImage(const IntPoint& clientPosition, PassRefPtr<ShareableBitmap> dragImage, bool isLinkDrag) 248ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 2492bde8e466a4451c7319e3a072d118917957d6554Steve Block RetainPtr<CGImageRef> dragCGImage = dragImage->makeCGImage(); 2502bde8e466a4451c7319e3a072d118917957d6554Steve Block RetainPtr<NSImage> dragNSImage(AdoptNS, [[NSImage alloc] initWithCGImage:dragCGImage.get() size:dragImage->size()]); 2512bde8e466a4451c7319e3a072d118917957d6554Steve Block 252ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch [m_wkView _setDragImage:dragNSImage.get() at:clientPosition linkDrag:isLinkDrag]; 253ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 2542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 2552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid PageClientImpl::updateSecureInputState() 2562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 2572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch [m_wkView _updateSecureInputState]; 2582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 2592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 26065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochFloatRect PageClientImpl::convertToDeviceSpace(const FloatRect& rect) 26165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 26265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView _convertToDeviceSpace:rect]; 26365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 26465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 26565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochFloatRect PageClientImpl::convertToUserSpace(const FloatRect& rect) 26665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 26765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView _convertToUserSpace:rect]; 26865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 2692bde8e466a4451c7319e3a072d118917957d6554Steve Block 2702bde8e466a4451c7319e3a072d118917957d6554Steve BlockIntRect PageClientImpl::windowToScreen(const IntRect& rect) 2712bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 2722bde8e466a4451c7319e3a072d118917957d6554Steve Block NSRect tempRect = rect; 2732bde8e466a4451c7319e3a072d118917957d6554Steve Block tempRect = [m_wkView convertRect:tempRect toView:nil]; 2742bde8e466a4451c7319e3a072d118917957d6554Steve Block tempRect.origin = [[m_wkView window] convertBaseToScreen:tempRect.origin]; 2752bde8e466a4451c7319e3a072d118917957d6554Steve Block return enclosingIntRect(tempRect); 2762bde8e466a4451c7319e3a072d118917957d6554Steve Block} 27765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2782fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool wasEventHandled) 27965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 28065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch NSEvent* nativeEvent = event.nativeEvent(); 2812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if ([nativeEvent type] != NSKeyDown) 2822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 2832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (wasEventHandled) 2842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block [NSCursor setHiddenUntilMouseMoves:YES]; 2852bde8e466a4451c7319e3a072d118917957d6554Steve Block else 2862bde8e466a4451c7319e3a072d118917957d6554Steve Block [m_wkView _resendKeyDownEvent:nativeEvent]; 28765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 28865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 28965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPassRefPtr<WebPopupMenuProxy> PageClientImpl::createPopupMenuProxy(WebPageProxy* page) 29065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 29165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return WebPopupMenuProxyMac::create(m_wkView, page); 29265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 29365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 29465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPassRefPtr<WebContextMenuProxy> PageClientImpl::createContextMenuProxy(WebPageProxy* page) 29565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 29665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return WebContextMenuProxyMac::create(m_wkView, page); 29765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 29865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 29965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setFindIndicator(PassRefPtr<FindIndicator> findIndicator, bool fadeOut) 30065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 30165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setFindIndicator:findIndicator fadeOut:fadeOut]; 30265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 30365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3042fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid PageClientImpl::accessibilityWebProcessTokenReceived(const CoreIPC::DataReference& data) 30565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 30665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch NSData* remoteToken = [NSData dataWithBytes:data.data() length:data.size()]; 3072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block [m_wkView _setAccessibilityWebProcessToken:remoteToken]; 30865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 30965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 31065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if USE(ACCELERATED_COMPOSITING) 3112fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid PageClientImpl::enterAcceleratedCompositingMode(const LayerTreeContext& layerTreeContext) 3122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 3132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block [m_wkView _enterAcceleratedCompositingMode:layerTreeContext]; 3142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3162fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid PageClientImpl::exitAcceleratedCompositingMode() 3172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 3182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block [m_wkView _exitAcceleratedCompositingMode]; 3192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 32065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // USE(ACCELERATED_COMPOSITING) 32165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 32265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setComplexTextInputEnabled(uint64_t pluginComplexTextInputIdentifier, bool complexTextInputEnabled) 32365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 32465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setComplexTextInputEnabled:complexTextInputEnabled pluginComplexTextInputIdentifier:pluginComplexTextInputIdentifier]; 32565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 32665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 327ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochCGContextRef PageClientImpl::containingWindowGraphicsContext() 328ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{ 32981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch NSWindow *window = [m_wkView window]; 33081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 33181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // Don't try to get the graphics context if the NSWindow doesn't have a window device. 33281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if ([window windowNumber] <= 0) 33381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return 0; 33481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 33581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return static_cast<CGContextRef>([[window graphicsContext] graphicsPort]); 336ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch} 337ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 3382fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid PageClientImpl::didChangeScrollbarsForMainFrame() const 3392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 3402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block [m_wkView _didChangeScrollbarsForMainFrame]; 3412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 34365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::didCommitLoadForMainFrame(bool useCustomRepresentation) 34465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 34565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setPageHasCustomRepresentation:useCustomRepresentation]; 34665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 34765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 34881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid PageClientImpl::didFinishLoadingDataForCustomRepresentation(const String& suggestedFilename, const CoreIPC::DataReference& dataReference) 34965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 35081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch [m_wkView _didFinishLoadingDataForCustomRepresentationWithSuggestedFilename:suggestedFilename dataReference:dataReference]; 35165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 35265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 35365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochdouble PageClientImpl::customRepresentationZoomFactor() 35465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 35565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView _customRepresentationZoomFactor]; 35665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 35765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 35865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setCustomRepresentationZoomFactor(double zoomFactor) 35965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 36065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setCustomRepresentationZoomFactor:zoomFactor]; 36165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 36265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid PageClientImpl::findStringInCustomRepresentation(const String& string, FindOptions options, unsigned maxMatchCount) 3642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 3652daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch [m_wkView _findStringInCustomRepresentation:string withFindOptions:options maxMatchCount:maxMatchCount]; 3662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 3672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 3682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid PageClientImpl::countStringMatchesInCustomRepresentation(const String& string, FindOptions options, unsigned maxMatchCount) 3692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 3702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch [m_wkView _countStringMatchesInCustomRepresentation:string withFindOptions:options maxMatchCount:maxMatchCount]; 3712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 3722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 37381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid PageClientImpl::flashBackingStoreUpdates(const Vector<IntRect>&) 37481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 37581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch notImplemented(); 37681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 37781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 37881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid PageClientImpl::didPerformDictionaryLookup(const String& text, double scaleFactor, const DictionaryPopupInfo& dictionaryPopupInfo) 37981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 38081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch NSFontDescriptor *fontDescriptor = [NSFontDescriptor fontDescriptorWithFontAttributes:(NSDictionary *)dictionaryPopupInfo.fontInfo.fontAttributeDictionary.get()]; 38181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch NSFont *font = [NSFont fontWithDescriptor:fontDescriptor size:((scaleFactor != 1) ? [fontDescriptor pointSize] * scaleFactor : 0)]; 38281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 38381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RetainPtr<NSMutableAttributedString> attributedString(AdoptNS, [[NSMutableAttributedString alloc] initWithString:nsStringFromWebCoreString(text)]); 38481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch [attributedString.get() addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, [attributedString.get() length])]; 38581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 38681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch NSPoint textBaselineOrigin = dictionaryPopupInfo.origin; 38781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch textBaselineOrigin.y += [font ascender]; 38881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 3892bde8e466a4451c7319e3a072d118917957d6554Steve Block#if !defined(BUILDING_ON_SNOW_LEOPARD) 3902bde8e466a4451c7319e3a072d118917957d6554Steve Block // Convert to screen coordinates. 3912bde8e466a4451c7319e3a072d118917957d6554Steve Block textBaselineOrigin = [m_wkView convertPoint:textBaselineOrigin toView:nil]; 3922bde8e466a4451c7319e3a072d118917957d6554Steve Block textBaselineOrigin = [m_wkView.window convertRectToScreen:NSMakeRect(textBaselineOrigin.x, textBaselineOrigin.y, 0, 0)].origin; 3932bde8e466a4451c7319e3a072d118917957d6554Steve Block 3942bde8e466a4451c7319e3a072d118917957d6554Steve Block WKShowWordDefinitionWindow(attributedString.get(), textBaselineOrigin, (NSDictionary *)dictionaryPopupInfo.options.get()); 3952bde8e466a4451c7319e3a072d118917957d6554Steve Block#else 39681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // If the dictionary lookup is being triggered by a hot key, force the overlay style. 39781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch NSDictionary *options = (dictionaryPopupInfo.type == DictionaryPopupInfo::HotKey) ? [NSDictionary dictionaryWithObject:NSDefinitionPresentationTypeOverlay forKey:NSDefinitionPresentationTypeKey] : 0; 39881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch [m_wkView showDefinitionForAttributedString:attributedString.get() range:NSMakeRange(0, [attributedString.get() length]) options:options baselineOriginProvider:^(NSRange adjustedRange) { return (NSPoint)textBaselineOrigin; }]; 3992bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 4002bde8e466a4451c7319e3a072d118917957d6554Steve Block} 4012bde8e466a4451c7319e3a072d118917957d6554Steve Block 4022daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid PageClientImpl::dismissDictionaryLookupPanel() 4032daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 4042daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if !defined(BUILDING_ON_SNOW_LEOPARD) 4052daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WKHideWordDefinitionWindow(); 4062daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 4072daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 4082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 4092bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid PageClientImpl::showCorrectionPanel(CorrectionPanelInfo::PanelType type, const FloatRect& boundingBoxOfReplacedString, const String& replacedString, const String& replacementString, const Vector<String>& alternativeReplacementStrings) 4102bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 4112bde8e466a4451c7319e3a072d118917957d6554Steve Block#if !defined(BUILDING_ON_SNOW_LEOPARD) 4122bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!isViewVisible() || !isViewInWindow()) 4132bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 4142bde8e466a4451c7319e3a072d118917957d6554Steve Block m_correctionPanel.show(m_wkView, type, boundingBoxOfReplacedString, replacedString, replacementString, alternativeReplacementStrings); 4152bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 4162bde8e466a4451c7319e3a072d118917957d6554Steve Block} 4172bde8e466a4451c7319e3a072d118917957d6554Steve Block 4182bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid PageClientImpl::dismissCorrectionPanel(ReasonForDismissingCorrectionPanel reason) 4192bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 4202bde8e466a4451c7319e3a072d118917957d6554Steve Block#if !defined(BUILDING_ON_SNOW_LEOPARD) 4212bde8e466a4451c7319e3a072d118917957d6554Steve Block m_correctionPanel.dismiss(reason); 4222bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 4232bde8e466a4451c7319e3a072d118917957d6554Steve Block} 4242bde8e466a4451c7319e3a072d118917957d6554Steve Block 4252bde8e466a4451c7319e3a072d118917957d6554Steve BlockString PageClientImpl::dismissCorrectionPanelSoon(WebCore::ReasonForDismissingCorrectionPanel reason) 4262bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 4272bde8e466a4451c7319e3a072d118917957d6554Steve Block#if !defined(BUILDING_ON_SNOW_LEOPARD) 4282bde8e466a4451c7319e3a072d118917957d6554Steve Block return m_correctionPanel.dismissSoon(reason); 4292bde8e466a4451c7319e3a072d118917957d6554Steve Block#else 4302bde8e466a4451c7319e3a072d118917957d6554Steve Block return String(); 4312bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 4322bde8e466a4451c7319e3a072d118917957d6554Steve Block} 4332bde8e466a4451c7319e3a072d118917957d6554Steve Block 4342bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid PageClientImpl::recordAutocorrectionResponse(EditorClient::AutocorrectionResponseType responseType, const String& replacedString, const String& replacementString) 4352bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 4362bde8e466a4451c7319e3a072d118917957d6554Steve Block#if !defined(BUILDING_ON_SNOW_LEOPARD) 4372bde8e466a4451c7319e3a072d118917957d6554Steve Block NSCorrectionResponse response = responseType == EditorClient::AutocorrectionReverted ? NSCorrectionResponseReverted : NSCorrectionResponseEdited; 4382bde8e466a4451c7319e3a072d118917957d6554Steve Block CorrectionPanel::recordAutocorrectionResponse(m_wkView, response, replacedString, replacementString); 4392bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 4402bde8e466a4451c7319e3a072d118917957d6554Steve Block} 4412bde8e466a4451c7319e3a072d118917957d6554Steve Block 4422bde8e466a4451c7319e3a072d118917957d6554Steve Blockfloat PageClientImpl::userSpaceScaleFactor() const 4432bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 4442bde8e466a4451c7319e3a072d118917957d6554Steve Block NSWindow *window = [m_wkView window]; 4452bde8e466a4451c7319e3a072d118917957d6554Steve Block#if !defined(BUILDING_ON_SNOW_LEOPARD) 4462bde8e466a4451c7319e3a072d118917957d6554Steve Block if (window) 4472bde8e466a4451c7319e3a072d118917957d6554Steve Block return [window backingScaleFactor]; 4482bde8e466a4451c7319e3a072d118917957d6554Steve Block return [[NSScreen mainScreen] backingScaleFactor]; 4492bde8e466a4451c7319e3a072d118917957d6554Steve Block#else 4502bde8e466a4451c7319e3a072d118917957d6554Steve Block if (window) 4512bde8e466a4451c7319e3a072d118917957d6554Steve Block return [window userSpaceScaleFactor]; 4522bde8e466a4451c7319e3a072d118917957d6554Steve Block return [[NSScreen mainScreen] userSpaceScaleFactor]; 4532bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 45481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 45581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 4562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochbool PageClientImpl::executeSavedCommandBySelector(const String& selectorString) 4572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 4582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return [m_wkView _executeSavedCommandBySelector:NSSelectorFromString(selectorString)]; 4592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 4602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 46165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebKit 462