PageClientImpl.mm revision 65f03d4f644ce73618e5f4f50dd694b26f55ae12
165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch/* 265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2010 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 2665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "NativeWebKeyboardEvent.h" 2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "PageClientImpl.h" 2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "DataReference.h" 3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "FindIndicator.h" 3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WKAPICast.h" 3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WKStringCF.h" 3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WKViewInternal.h" 3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WebContextMenuProxyMac.h" 3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WebEditCommandProxy.h" 3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import "WebPopupMenuProxyMac.h" 3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <WebCore/Cursor.h> 3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <WebCore/FloatRect.h> 3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <WebCore/FoundationExtras.h> 4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <WebCore/KeyboardEvent.h> 4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <wtf/PassOwnPtr.h> 4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <wtf/text/CString.h> 4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#import <wtf/text/WTFString.h> 4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochusing namespace WebCore; 4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@interface WebEditCommandObjC : NSObject 4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebKit::WebEditCommandProxy> m_command; 5065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 5165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (id)initWithWebEditCommandProxy:(PassRefPtr<WebKit::WebEditCommandProxy>)command; 5365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (WebKit::WebEditCommandProxy*)command; 5465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@end 5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@implementation WebEditCommandObjC 5865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (id)initWithWebEditCommandProxy:(PassRefPtr<WebKit::WebEditCommandProxy>)command 6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch self = [super init]; 6265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (!self) 6365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return nil; 6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 6565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch m_command = command; 6665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return self; 6765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 6865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (WebKit::WebEditCommandProxy*)command 7065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 7165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return m_command.get(); 7265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 7365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@end 7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@interface WebEditorUndoTargetObjC : NSObject 7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (void)undoEditing:(id)sender; 7965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (void)redoEditing:(id)sender; 8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@end 8265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@implementation WebEditorUndoTargetObjC 8465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (void)undoEditing:(id)sender 8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 8765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ASSERT([sender isKindOfClass:[WebEditCommandObjC class]]); 8865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [sender command]->unapply(); 8965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 9065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (void)redoEditing:(id)sender 9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 9365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ASSERT([sender isKindOfClass:[WebEditCommandObjC class]]); 9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [sender command]->reapply(); 9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch@end 9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebKit { 10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochNSString* nsStringFromWebCoreString(const String& string) 10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return string.impl() ? HardAutorelease(WKStringCopyCFString(0, toAPI(string.impl()))) : @""; 10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPassOwnPtr<PageClientImpl> PageClientImpl::create(WKView* wkView) 10765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 10865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return adoptPtr(new PageClientImpl(wkView)); 10965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 11165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPageClientImpl::PageClientImpl(WKView* wkView) 11265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch : m_wkView(wkView) 11365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch , m_undoTarget(AdoptNS, [[WebEditorUndoTargetObjC alloc] init]) 11465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 11565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 11665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 11765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPageClientImpl::~PageClientImpl() 11865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 11965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 12065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 12165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPassOwnPtr<DrawingAreaProxy> PageClientImpl::createDrawingAreaProxy() 12265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 12365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView _createDrawingAreaProxy]; 12465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 12565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 12665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setViewNeedsDisplay(const WebCore::IntRect& rect) 12765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView setNeedsDisplayInRect:rect]; 12965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::displayView() 13265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 13365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView displayIfNeeded]; 13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 13565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochIntSize PageClientImpl::viewSize() 13765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 13865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return IntSize([m_wkView bounds].size); 13965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 14065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 14165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool PageClientImpl::isViewWindowActive() 14265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 14365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [[m_wkView window] isKeyWindow]; 14465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 14565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 14665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool PageClientImpl::isViewFocused() 14765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 14865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView _isFocused]; 14965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 15065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 15165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool PageClientImpl::isViewVisible() 15265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 15365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (![m_wkView window]) 15465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return false; 15565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 15665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if ([m_wkView isHiddenOrHasHiddenAncestor]) 15765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return false; 15865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 15965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return true; 16065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 16165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 16265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool PageClientImpl::isViewInWindow() 16365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 16465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView window]; 16565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 16665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 16765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::processDidCrash() 16865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 16965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _processDidCrash]; 17065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 17165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 17265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::didRelaunchProcess() 17365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 17465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _didRelaunchProcess]; 17565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 17665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 17765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::takeFocus(bool direction) 17865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 17965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _takeFocus:direction]; 18065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 18165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 18265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::toolTipChanged(const String& oldToolTip, const String& newToolTip) 18365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 18465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _toolTipChangedFrom:nsStringFromWebCoreString(oldToolTip) to:nsStringFromWebCoreString(newToolTip)]; 18565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 18665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 18765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setCursor(const WebCore::Cursor& cursor) 18865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 18965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setCursor:cursor.platformCursor()]; 19065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 19165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setViewportArguments(const WebCore::ViewportArguments&) 19365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 19465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 19665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstatic NSString* nameForEditAction(EditAction editAction) 19865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 19965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: Use localized strings. 20065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: Move this to a platform independent location. 20165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 20265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch switch (editAction) { 20365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionUnspecified: return nil; 20465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionSetColor: return @"Set Color"; 20565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionSetBackgroundColor: return @"Set Background Color"; 20665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionTurnOffKerning: return @"Turn Off Kerning"; 20765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionTightenKerning: return @"Tighten Kerning"; 20865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionLoosenKerning: return @"Loosen Kerning"; 20965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionUseStandardKerning: return @"Use Standard Kerning"; 21065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionTurnOffLigatures: return @"Turn Off Ligatures"; 21165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionUseStandardLigatures: return @"Use Standard Ligatures"; 21265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionUseAllLigatures: return @"Use All Ligatures"; 21365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionRaiseBaseline: return @"Raise Baseline"; 21465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionLowerBaseline: return @"Lower Baseline"; 21565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionSetTraditionalCharacterShape: return @"Set Traditional Character Shape"; 21665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionSetFont: return @"Set Font"; 21765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionChangeAttributes: return @"Change Attributes"; 21865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionAlignLeft: return @"Align Left"; 21965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionAlignRight: return @"Align Right"; 22065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionCenter: return @"Center"; 22165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionJustify: return @"Justify"; 22265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionSetWritingDirection: return @"Set Writing Direction"; 22365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionSubscript: return @"Subscript"; 22465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionSuperscript: return @"Superscript"; 22565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionUnderline: return @"Underline"; 22665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionOutline: return @"Outline"; 22765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionUnscript: return @"Unscript"; 22865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionDrag: return @"Drag"; 22965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionCut: return @"Cut"; 23065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionPaste: return @"Paste"; 23165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionPasteFont: return @"Paste Font"; 23265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionPasteRuler: return @"Paste Ruler"; 23365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionTyping: return @"Typing"; 23465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionCreateLink: return @"Create Link"; 23565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionUnlink: return @"Unlink"; 23665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionInsertList: return @"Insert List"; 23765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionFormatBlock: return @"Formatting"; 23865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionIndent: return @"Indent"; 23965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch case EditActionOutdent: return @"Outdent"; 24065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 24165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return nil; 24265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 24365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::registerEditCommand(PassRefPtr<WebEditCommandProxy> prpCommand, WebPageProxy::UndoOrRedo undoOrRedo) 24565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 24665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebEditCommandProxy> command = prpCommand; 24765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RetainPtr<WebEditCommandObjC> commandObjC(AdoptNS, [[WebEditCommandObjC alloc] initWithWebEditCommandProxy:command]); 24965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch NSString *actionName = nameForEditAction(command->editAction()); 25065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 25165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch NSUndoManager *undoManager = [m_wkView undoManager]; 25265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [undoManager registerUndoWithTarget:m_undoTarget.get() selector:((undoOrRedo == WebPageProxy::Undo) ? @selector(undoEditing:) : @selector(redoEditing:)) object:commandObjC.get()]; 25365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (actionName) 25465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [undoManager setActionName:actionName]; 25565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 25665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 25765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::clearAllEditCommands() 25865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 25965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [[m_wkView undoManager] removeAllActionsWithTarget:m_undoTarget.get()]; 26065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 26165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 26265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setEditCommandState(const String& commandName, bool isEnabled, int newState) 26365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 26465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setUserInterfaceItemState:nsStringFromWebCoreString(commandName) enabled:isEnabled state:newState]; 26565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 26665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 26765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::interceptKeyEvent(const NativeWebKeyboardEvent& event, Vector<WebCore::KeypressCommand>& commandsList, uint32_t selectionStart, uint32_t selectionEnd, Vector<WebCore::CompositionUnderline>& underlines) 26865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 26965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch commandsList = [m_wkView _interceptKeyEvent:event.nativeEvent()]; 27065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _getTextInputState:selectionStart selectionEnd:selectionEnd underlines:underlines]; 27165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 27265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 27365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochFloatRect PageClientImpl::convertToDeviceSpace(const FloatRect& rect) 27465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 27565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView _convertToDeviceSpace:rect]; 27665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 27765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 27865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochFloatRect PageClientImpl::convertToUserSpace(const FloatRect& rect) 27965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 28065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView _convertToUserSpace:rect]; 28165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 28265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 28365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::didNotHandleKeyEvent(const NativeWebKeyboardEvent& event) 28465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 28565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch NSEvent* nativeEvent = event.nativeEvent(); 28665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if ([nativeEvent type] == NSKeyDown) { 28765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setEventBeingResent:nativeEvent]; 28865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [[NSApplication sharedApplication] sendEvent:nativeEvent]; 28965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch } 29065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 29165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 29265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPassRefPtr<WebPopupMenuProxy> PageClientImpl::createPopupMenuProxy(WebPageProxy* page) 29365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 29465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return WebPopupMenuProxyMac::create(m_wkView, page); 29565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 29665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 29765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochPassRefPtr<WebContextMenuProxy> PageClientImpl::createContextMenuProxy(WebPageProxy* page) 29865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 29965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return WebContextMenuProxyMac::create(m_wkView, page); 30065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 30165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 30265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setFindIndicator(PassRefPtr<FindIndicator> findIndicator, bool fadeOut) 30365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 30465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setFindIndicator:findIndicator fadeOut:fadeOut]; 30565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 30665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 30765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::accessibilityChildTokenReceived(const CoreIPC::DataReference& data) 30865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 30965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch NSData* remoteToken = [NSData dataWithBytes:data.data() length:data.size()]; 31065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setAccessibilityChildToken:remoteToken]; 31165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 31265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 31365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if USE(ACCELERATED_COMPOSITING) 31465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::pageDidEnterAcceleratedCompositing() 31565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 31665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _pageDidEnterAcceleratedCompositing]; 31765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 31865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 31965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::pageDidLeaveAcceleratedCompositing() 32065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 32165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _pageDidLeaveAcceleratedCompositing]; 32265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 32365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // USE(ACCELERATED_COMPOSITING) 32465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 32565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setComplexTextInputEnabled(uint64_t pluginComplexTextInputIdentifier, bool complexTextInputEnabled) 32665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 32765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setComplexTextInputEnabled:complexTextInputEnabled pluginComplexTextInputIdentifier:pluginComplexTextInputIdentifier]; 32865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 32965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 33065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::didCommitLoadForMainFrame(bool useCustomRepresentation) 33165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 33265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setPageHasCustomRepresentation:useCustomRepresentation]; 33365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 33465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 33565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::didFinishLoadingDataForCustomRepresentation(const CoreIPC::DataReference& dataReference) 33665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 33765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _didFinishLoadingDataForCustomRepresentation:dataReference]; 33865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 33965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 34065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochdouble PageClientImpl::customRepresentationZoomFactor() 34165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 34265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return [m_wkView _customRepresentationZoomFactor]; 34365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 34465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 34565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid PageClientImpl::setCustomRepresentationZoomFactor(double zoomFactor) 34665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 34765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch [m_wkView _setCustomRepresentationZoomFactor:zoomFactor]; 34865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 34965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 35065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebKit 351