haikuwebkit/Tools/WebEditingTester/WK2WebDocumentController.m

152 lines
4.8 KiB
Mathematica
Raw Permalink Normal View History

Add new tool to test editable Webviews. https://bugs.webkit.org/show_bug.cgi?id=141772 Reviewed by Tim Horton. Adding WebEditingTester, a Cocoa application to test WK1 and Wk2 views in editable mode. * WebEditingTester: Added. * WebEditingTester/AppDelegate.h: Added. * WebEditingTester/AppDelegate.m: Added. (-[WebEditingAppDelegate init]): (defaultConfiguration): (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate applicationWillTerminate:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate showOperations:]): (-[WebEditingAppDelegate useWebKit2ByDefault]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate validateMenuItem:]): * WebEditingTester/Info.plist: Added. * WebEditingTester/MainMenu.xib: Added. * WebEditingTester/WK1WebDocumentController.h: Added. * WebEditingTester/WK1WebDocumentController.m: Added. (-[WK1WebDocumentController awakeFromNib]): (-[WK1WebDocumentController loadContent]): (-[WK1WebDocumentController dealloc]): (-[WK1WebDocumentController pasteAsMarkup:]): * WebEditingTester/WK2WebDocumentController.h: Added. * WebEditingTester/WK2WebDocumentController.m: Added. (-[WK2WebDocumentController initWithConfiguration:]): (-[WK2WebDocumentController pasteAsMarkup:]): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController dealloc]): (-[WK2WebDocumentController loadContent]): * WebEditingTester/WebDocument.xib: Added. * WebEditingTester/WebDocumentController.h: Added. * WebEditingTester/WebDocumentController.m: Added. (-[WebDocumentController initWithWindow:]): (-[WebDocumentController windowDidLoad]): (-[WebDocumentController defaultEditingSource]): (-[WebDocumentController applicationTerminating]): (-[WebDocumentController loadContent]): * WebEditingTester/WebEditingTester.xcodeproj: Added. * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added. * WebEditingTester/main.m: Added. (main): Canonical link: https://commits.webkit.org/159820@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-19 18:41:24 +00:00
/*
* Copyright (C) 2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#import "WK2WebDocumentController.h"
#import <WebKit/WKFrameInfo.h>
#import <WebKit/WKNavigationDelegate.h>
#import <WebKit/WKPreferencesPrivate.h>
#import <WebKit/WKUIDelegate.h>
#import <WebKit/WKWebView.h>
#import <WebKit/WKWebViewConfigurationPrivate.h>
#import <WebKit/WKWebViewPrivate.h>
#import <WebKit/_WKWebsiteDataStore.h>
[WebEditingTester] Add support for the find and replace bar https://bugs.webkit.org/show_bug.cgi?id=142247 Reviewed by Enrica Casucci. While it's not hooked up yet in WKWebView, adding support for the find bar to WebEditingTester will help us implement that functionality. * WebEditingTester/AppDelegate.h: * WebEditingTester/AppDelegate.m: (-[WebEditingAppDelegate performTextFinderAction:]): * WebEditingTester/MainMenu.xib: Receive performTextFinderAction: and forward it to the frontmost WebDocumentController. * WebEditingTester/WK2WebDocumentController.m: (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController performTextFinderAction:]): (-[WK2WebDocumentController findBarView]): (-[WK2WebDocumentController setFindBarView:]): (-[WK2WebDocumentController isFindBarVisible]): (-[WK2WebDocumentController setFindBarVisible:]): (-[WK2WebDocumentController findBarViewDidChangeHeight]): (-[WK2WebDocumentController layout]): Implement performTextFinderAction: for WebKit2, and have a NSTextFinder pointing at the WKWebView (currently nothing will work, but the bar will show up). Install and uninstall the bar as needed. * WebEditingTester/WebDocument.xib: Don't use a full-size content view. There's no need, and it makes find bar layout harder. * WebEditingTester/WebDocumentController.h: * WebEditingTester/WebDocumentController.m: (-[WebDocumentController performTextFinderAction:]): Canonical link: https://commits.webkit.org/160324@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@181007 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-03-04 19:27:39 +00:00
@interface WK2WebDocumentController () <WKUIDelegate, NSTextFinderBarContainer>
@property (nonatomic, strong) WKWebView *webView;
Add new tool to test editable Webviews. https://bugs.webkit.org/show_bug.cgi?id=141772 Reviewed by Tim Horton. Adding WebEditingTester, a Cocoa application to test WK1 and Wk2 views in editable mode. * WebEditingTester: Added. * WebEditingTester/AppDelegate.h: Added. * WebEditingTester/AppDelegate.m: Added. (-[WebEditingAppDelegate init]): (defaultConfiguration): (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate applicationWillTerminate:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate showOperations:]): (-[WebEditingAppDelegate useWebKit2ByDefault]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate validateMenuItem:]): * WebEditingTester/Info.plist: Added. * WebEditingTester/MainMenu.xib: Added. * WebEditingTester/WK1WebDocumentController.h: Added. * WebEditingTester/WK1WebDocumentController.m: Added. (-[WK1WebDocumentController awakeFromNib]): (-[WK1WebDocumentController loadContent]): (-[WK1WebDocumentController dealloc]): (-[WK1WebDocumentController pasteAsMarkup:]): * WebEditingTester/WK2WebDocumentController.h: Added. * WebEditingTester/WK2WebDocumentController.m: Added. (-[WK2WebDocumentController initWithConfiguration:]): (-[WK2WebDocumentController pasteAsMarkup:]): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController dealloc]): (-[WK2WebDocumentController loadContent]): * WebEditingTester/WebDocument.xib: Added. * WebEditingTester/WebDocumentController.h: Added. * WebEditingTester/WebDocumentController.m: Added. (-[WebDocumentController initWithWindow:]): (-[WebDocumentController windowDidLoad]): (-[WebDocumentController defaultEditingSource]): (-[WebDocumentController applicationTerminating]): (-[WebDocumentController loadContent]): * WebEditingTester/WebEditingTester.xcodeproj: Added. * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added. * WebEditingTester/main.m: Added. (main): Canonical link: https://commits.webkit.org/159820@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-19 18:41:24 +00:00
@end
[WebEditingTester] Add support for the find and replace bar https://bugs.webkit.org/show_bug.cgi?id=142247 Reviewed by Enrica Casucci. While it's not hooked up yet in WKWebView, adding support for the find bar to WebEditingTester will help us implement that functionality. * WebEditingTester/AppDelegate.h: * WebEditingTester/AppDelegate.m: (-[WebEditingAppDelegate performTextFinderAction:]): * WebEditingTester/MainMenu.xib: Receive performTextFinderAction: and forward it to the frontmost WebDocumentController. * WebEditingTester/WK2WebDocumentController.m: (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController performTextFinderAction:]): (-[WK2WebDocumentController findBarView]): (-[WK2WebDocumentController setFindBarView:]): (-[WK2WebDocumentController isFindBarVisible]): (-[WK2WebDocumentController setFindBarVisible:]): (-[WK2WebDocumentController findBarViewDidChangeHeight]): (-[WK2WebDocumentController layout]): Implement performTextFinderAction: for WebKit2, and have a NSTextFinder pointing at the WKWebView (currently nothing will work, but the bar will show up). Install and uninstall the bar as needed. * WebEditingTester/WebDocument.xib: Don't use a full-size content view. There's no need, and it makes find bar layout harder. * WebEditingTester/WebDocumentController.h: * WebEditingTester/WebDocumentController.m: (-[WebDocumentController performTextFinderAction:]): Canonical link: https://commits.webkit.org/160324@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@181007 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-03-04 19:27:39 +00:00
@implementation WK2WebDocumentController {
NSTextFinder *_textFinder;
NSView *_textFindBarView;
BOOL _findBarVisible;
}
Add new tool to test editable Webviews. https://bugs.webkit.org/show_bug.cgi?id=141772 Reviewed by Tim Horton. Adding WebEditingTester, a Cocoa application to test WK1 and Wk2 views in editable mode. * WebEditingTester: Added. * WebEditingTester/AppDelegate.h: Added. * WebEditingTester/AppDelegate.m: Added. (-[WebEditingAppDelegate init]): (defaultConfiguration): (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate applicationWillTerminate:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate showOperations:]): (-[WebEditingAppDelegate useWebKit2ByDefault]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate validateMenuItem:]): * WebEditingTester/Info.plist: Added. * WebEditingTester/MainMenu.xib: Added. * WebEditingTester/WK1WebDocumentController.h: Added. * WebEditingTester/WK1WebDocumentController.m: Added. (-[WK1WebDocumentController awakeFromNib]): (-[WK1WebDocumentController loadContent]): (-[WK1WebDocumentController dealloc]): (-[WK1WebDocumentController pasteAsMarkup:]): * WebEditingTester/WK2WebDocumentController.h: Added. * WebEditingTester/WK2WebDocumentController.m: Added. (-[WK2WebDocumentController initWithConfiguration:]): (-[WK2WebDocumentController pasteAsMarkup:]): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController dealloc]): (-[WK2WebDocumentController loadContent]): * WebEditingTester/WebDocument.xib: Added. * WebEditingTester/WebDocumentController.h: Added. * WebEditingTester/WebDocumentController.m: Added. (-[WebDocumentController initWithWindow:]): (-[WebDocumentController windowDidLoad]): (-[WebDocumentController defaultEditingSource]): (-[WebDocumentController applicationTerminating]): (-[WebDocumentController loadContent]): * WebEditingTester/WebEditingTester.xcodeproj: Added. * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added. * WebEditingTester/main.m: Added. (main): Canonical link: https://commits.webkit.org/159820@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-19 18:41:24 +00:00
[WebEditingTester] Hook up key equivalents for new window action https://bugs.webkit.org/show_bug.cgi?id=141828 Reviewed by Enrica Casucci. * WebEditingTester/AppDelegate.h: * WebEditingTester/AppDelegate.m: (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate _defaultWebDocumentControllerClass]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate _updateNewWindowKeyEquivalents]): (defaultConfiguration): Deleted. (-[WebEditingAppDelegate applicationWillTerminate:]): Deleted. Move WKWebViewConfiguration setup into WK2WebDocumentController. Remove unused application termination code. Update new-window menu item key equivalents when launching and when changing the use-WebKit2-by-default setting. Make WebDocumentController subclasses all initialized the same way, and use that to factor out alloc/init. Rename loadContent to loadHTMLString for future use. * WebEditingTester/MainMenu.xib: Add default key equivalents. Cmd-N will always make the default kind of window (controlled by the pref). Cmd-Opt-N will always make the other kind. The menu items are configured as alternates so they only show up if you press alt (just like in MiniBrowser). * WebEditingTester/WK1WebDocumentController.m: (-[WK1WebDocumentController loadHTMLString:]): (-[WK1WebDocumentController loadContent]): Deleted. * WebEditingTester/WK2WebDocumentController.h: * WebEditingTester/WK2WebDocumentController.m: (defaultConfiguration): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController loadHTMLString:]): (-[WK2WebDocumentController initWithConfiguration:]): Deleted. (-[WK2WebDocumentController dealloc]): Deleted. * WebEditingTester/WebDocumentController.h: * WebEditingTester/WebDocumentController.m: (-[WebDocumentController init]): (-[WebDocumentController initWithWindow:]): (+[WebDocumentController defaultEditingSource]): (-[WebDocumentController loadHTMLString:]): (-[WebDocumentController windowDidLoad]): Deleted. (-[WebDocumentController defaultEditingSource]): Deleted. (-[WebDocumentController applicationTerminating]): Deleted. (-[WebDocumentController loadContent]): Deleted. Canonical link: https://commits.webkit.org/159866@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180429 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-20 19:17:51 +00:00
static WKWebViewConfiguration *defaultConfiguration()
Add new tool to test editable Webviews. https://bugs.webkit.org/show_bug.cgi?id=141772 Reviewed by Tim Horton. Adding WebEditingTester, a Cocoa application to test WK1 and Wk2 views in editable mode. * WebEditingTester: Added. * WebEditingTester/AppDelegate.h: Added. * WebEditingTester/AppDelegate.m: Added. (-[WebEditingAppDelegate init]): (defaultConfiguration): (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate applicationWillTerminate:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate showOperations:]): (-[WebEditingAppDelegate useWebKit2ByDefault]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate validateMenuItem:]): * WebEditingTester/Info.plist: Added. * WebEditingTester/MainMenu.xib: Added. * WebEditingTester/WK1WebDocumentController.h: Added. * WebEditingTester/WK1WebDocumentController.m: Added. (-[WK1WebDocumentController awakeFromNib]): (-[WK1WebDocumentController loadContent]): (-[WK1WebDocumentController dealloc]): (-[WK1WebDocumentController pasteAsMarkup:]): * WebEditingTester/WK2WebDocumentController.h: Added. * WebEditingTester/WK2WebDocumentController.m: Added. (-[WK2WebDocumentController initWithConfiguration:]): (-[WK2WebDocumentController pasteAsMarkup:]): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController dealloc]): (-[WK2WebDocumentController loadContent]): * WebEditingTester/WebDocument.xib: Added. * WebEditingTester/WebDocumentController.h: Added. * WebEditingTester/WebDocumentController.m: Added. (-[WebDocumentController initWithWindow:]): (-[WebDocumentController windowDidLoad]): (-[WebDocumentController defaultEditingSource]): (-[WebDocumentController applicationTerminating]): (-[WebDocumentController loadContent]): * WebEditingTester/WebEditingTester.xcodeproj: Added. * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added. * WebEditingTester/main.m: Added. (main): Canonical link: https://commits.webkit.org/159820@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-19 18:41:24 +00:00
{
[WebEditingTester] Hook up key equivalents for new window action https://bugs.webkit.org/show_bug.cgi?id=141828 Reviewed by Enrica Casucci. * WebEditingTester/AppDelegate.h: * WebEditingTester/AppDelegate.m: (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate _defaultWebDocumentControllerClass]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate _updateNewWindowKeyEquivalents]): (defaultConfiguration): Deleted. (-[WebEditingAppDelegate applicationWillTerminate:]): Deleted. Move WKWebViewConfiguration setup into WK2WebDocumentController. Remove unused application termination code. Update new-window menu item key equivalents when launching and when changing the use-WebKit2-by-default setting. Make WebDocumentController subclasses all initialized the same way, and use that to factor out alloc/init. Rename loadContent to loadHTMLString for future use. * WebEditingTester/MainMenu.xib: Add default key equivalents. Cmd-N will always make the default kind of window (controlled by the pref). Cmd-Opt-N will always make the other kind. The menu items are configured as alternates so they only show up if you press alt (just like in MiniBrowser). * WebEditingTester/WK1WebDocumentController.m: (-[WK1WebDocumentController loadHTMLString:]): (-[WK1WebDocumentController loadContent]): Deleted. * WebEditingTester/WK2WebDocumentController.h: * WebEditingTester/WK2WebDocumentController.m: (defaultConfiguration): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController loadHTMLString:]): (-[WK2WebDocumentController initWithConfiguration:]): Deleted. (-[WK2WebDocumentController dealloc]): Deleted. * WebEditingTester/WebDocumentController.h: * WebEditingTester/WebDocumentController.m: (-[WebDocumentController init]): (-[WebDocumentController initWithWindow:]): (+[WebDocumentController defaultEditingSource]): (-[WebDocumentController loadHTMLString:]): (-[WebDocumentController windowDidLoad]): Deleted. (-[WebDocumentController defaultEditingSource]): Deleted. (-[WebDocumentController applicationTerminating]): Deleted. (-[WebDocumentController loadContent]): Deleted. Canonical link: https://commits.webkit.org/159866@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180429 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-20 19:17:51 +00:00
static WKWebViewConfiguration *configuration;
if (!configuration) {
configuration = [[WKWebViewConfiguration alloc] init];
configuration.preferences._fullScreenEnabled = YES;
configuration.preferences._developerExtrasEnabled = YES;
}
return configuration;
Add new tool to test editable Webviews. https://bugs.webkit.org/show_bug.cgi?id=141772 Reviewed by Tim Horton. Adding WebEditingTester, a Cocoa application to test WK1 and Wk2 views in editable mode. * WebEditingTester: Added. * WebEditingTester/AppDelegate.h: Added. * WebEditingTester/AppDelegate.m: Added. (-[WebEditingAppDelegate init]): (defaultConfiguration): (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate applicationWillTerminate:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate showOperations:]): (-[WebEditingAppDelegate useWebKit2ByDefault]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate validateMenuItem:]): * WebEditingTester/Info.plist: Added. * WebEditingTester/MainMenu.xib: Added. * WebEditingTester/WK1WebDocumentController.h: Added. * WebEditingTester/WK1WebDocumentController.m: Added. (-[WK1WebDocumentController awakeFromNib]): (-[WK1WebDocumentController loadContent]): (-[WK1WebDocumentController dealloc]): (-[WK1WebDocumentController pasteAsMarkup:]): * WebEditingTester/WK2WebDocumentController.h: Added. * WebEditingTester/WK2WebDocumentController.m: Added. (-[WK2WebDocumentController initWithConfiguration:]): (-[WK2WebDocumentController pasteAsMarkup:]): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController dealloc]): (-[WK2WebDocumentController loadContent]): * WebEditingTester/WebDocument.xib: Added. * WebEditingTester/WebDocumentController.h: Added. * WebEditingTester/WebDocumentController.m: Added. (-[WebDocumentController initWithWindow:]): (-[WebDocumentController windowDidLoad]): (-[WebDocumentController defaultEditingSource]): (-[WebDocumentController applicationTerminating]): (-[WebDocumentController loadContent]): * WebEditingTester/WebEditingTester.xcodeproj: Added. * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added. * WebEditingTester/main.m: Added. (main): Canonical link: https://commits.webkit.org/159820@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-19 18:41:24 +00:00
}
- (IBAction)pasteAsMarkup:(id)sender
{
NSLog(@"To be implemented");
}
- (void)awakeFromNib
{
self.webView = [[WKWebView alloc] initWithFrame:[containerView bounds] configuration:defaultConfiguration()];
_webView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
_webView._editable = YES;
_webView.UIDelegate = self;
Add new tool to test editable Webviews. https://bugs.webkit.org/show_bug.cgi?id=141772 Reviewed by Tim Horton. Adding WebEditingTester, a Cocoa application to test WK1 and Wk2 views in editable mode. * WebEditingTester: Added. * WebEditingTester/AppDelegate.h: Added. * WebEditingTester/AppDelegate.m: Added. (-[WebEditingAppDelegate init]): (defaultConfiguration): (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate applicationWillTerminate:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate showOperations:]): (-[WebEditingAppDelegate useWebKit2ByDefault]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate validateMenuItem:]): * WebEditingTester/Info.plist: Added. * WebEditingTester/MainMenu.xib: Added. * WebEditingTester/WK1WebDocumentController.h: Added. * WebEditingTester/WK1WebDocumentController.m: Added. (-[WK1WebDocumentController awakeFromNib]): (-[WK1WebDocumentController loadContent]): (-[WK1WebDocumentController dealloc]): (-[WK1WebDocumentController pasteAsMarkup:]): * WebEditingTester/WK2WebDocumentController.h: Added. * WebEditingTester/WK2WebDocumentController.m: Added. (-[WK2WebDocumentController initWithConfiguration:]): (-[WK2WebDocumentController pasteAsMarkup:]): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController dealloc]): (-[WK2WebDocumentController loadContent]): * WebEditingTester/WebDocument.xib: Added. * WebEditingTester/WebDocumentController.h: Added. * WebEditingTester/WebDocumentController.m: Added. (-[WebDocumentController initWithWindow:]): (-[WebDocumentController windowDidLoad]): (-[WebDocumentController defaultEditingSource]): (-[WebDocumentController applicationTerminating]): (-[WebDocumentController loadContent]): * WebEditingTester/WebEditingTester.xcodeproj: Added. * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added. * WebEditingTester/main.m: Added. (main): Canonical link: https://commits.webkit.org/159820@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-19 18:41:24 +00:00
[containerView addSubview:_webView];
self.window.title = @"WebEditor [WK2]";
[WebEditingTester] Add support for the find and replace bar https://bugs.webkit.org/show_bug.cgi?id=142247 Reviewed by Enrica Casucci. While it's not hooked up yet in WKWebView, adding support for the find bar to WebEditingTester will help us implement that functionality. * WebEditingTester/AppDelegate.h: * WebEditingTester/AppDelegate.m: (-[WebEditingAppDelegate performTextFinderAction:]): * WebEditingTester/MainMenu.xib: Receive performTextFinderAction: and forward it to the frontmost WebDocumentController. * WebEditingTester/WK2WebDocumentController.m: (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController performTextFinderAction:]): (-[WK2WebDocumentController findBarView]): (-[WK2WebDocumentController setFindBarView:]): (-[WK2WebDocumentController isFindBarVisible]): (-[WK2WebDocumentController setFindBarVisible:]): (-[WK2WebDocumentController findBarViewDidChangeHeight]): (-[WK2WebDocumentController layout]): Implement performTextFinderAction: for WebKit2, and have a NSTextFinder pointing at the WKWebView (currently nothing will work, but the bar will show up). Install and uninstall the bar as needed. * WebEditingTester/WebDocument.xib: Don't use a full-size content view. There's no need, and it makes find bar layout harder. * WebEditingTester/WebDocumentController.h: * WebEditingTester/WebDocumentController.m: (-[WebDocumentController performTextFinderAction:]): Canonical link: https://commits.webkit.org/160324@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@181007 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-03-04 19:27:39 +00:00
_textFinder = [[NSTextFinder alloc] init];
Add preliminary (SPI) support for NSTextFinder on WKWebView https://bugs.webkit.org/show_bug.cgi?id=150907 <rdar://problem/19171624> Reviewed by Darin Adler. New API test: WebKit2.FindInPage * Platform/spi/mac/AppKitSPI.h: Add some SPI. * UIProcess/API/APIFindClient.h: (API::FindClient::didFindString): * UIProcess/API/C/WKPage.cpp: (WKPageSetPageFindClient): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didFindString): * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/Cocoa/FindClient.h: * UIProcess/Cocoa/FindClient.mm: (WebKit::FindClient::didFindString): Make didFindString return the match rects like didFindStringMatches does. * WebProcess/WebPage/FindController.cpp: (WebKit::FindController::updateFindUIAfterPageScroll): (WebKit::FindController::findString): Keep the most recent find match around for incremental find just like we do for the non-incremental version. This way, getImageForFindMatch and selectFindMatch will work for incremental find too! * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _ensureTextFinderClient]): (-[WKWebView findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:]): (-[WKWebView documentContainerView]): (-[WKWebView getSelectedText:]): (-[WKWebView selectFindMatch:completionHandler:]): Implement NSTextFinder's async client protocol and forward to the new WKTextFinderClient. * UIProcess/API/Cocoa/WKWebViewPrivate.h: Privately note our conformance to the aformentioned protocol. * UIProcess/mac/WKTextFinderClient.h: Added. * UIProcess/mac/WKTextFinderClient.mm: Added. (WebKit::TextFinderFindClient::TextFinderFindClient): (-[WKTextFinderMatch initWithClient:view:index:rects:]): (-[WKTextFinderMatch containingView]): (-[WKTextFinderMatch textRects]): (-[WKTextFinderMatch generateTextImage:]): (-[WKTextFinderMatch index]): (-[WKTextFinderClient initWithPage:view:]): (-[WKTextFinderClient willDestroyView:]): (-[WKTextFinderClient findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:]): (-[WKTextFinderClient getSelectedText:]): (-[WKTextFinderClient selectFindMatch:completionHandler:]): (-[WKTextFinderClient didFindStringMatches:rects:index:]): (-[WKTextFinderClient didGetImageForMatchResult:index:]): (-[WKTextFinderClient didFindString:rects:index:]): (-[WKTextFinderClient didFailToFindString:]): (-[WKTextFinderClient getImageForMatchResult:completionHandler:]): * WebKit2.xcodeproj/project.pbxproj: Add WKTextFinderClient. It installs itself as the FindClient and FindMatchesClient, so you can only use one mechanism or the other. * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WebKit2Cocoa/FindInPage.mm: Added. (-[FindInPageNavigationDelegate webView:didFinishNavigation:]): (TEST): Add an API test. * WebEditingTester/WK1WebDocumentController.m: * WebEditingTester/WK2WebDocumentController.m: (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController contentView]): Use incremental find, and show the overlay/indicator. Canonical link: https://commits.webkit.org/169194@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@192113 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-11-06 19:48:27 +00:00
_textFinder.incrementalSearchingEnabled = YES;
_textFinder.incrementalSearchingShouldDimContentView = YES;
_textFinder.client = _webView;
[WebEditingTester] Add support for the find and replace bar https://bugs.webkit.org/show_bug.cgi?id=142247 Reviewed by Enrica Casucci. While it's not hooked up yet in WKWebView, adding support for the find bar to WebEditingTester will help us implement that functionality. * WebEditingTester/AppDelegate.h: * WebEditingTester/AppDelegate.m: (-[WebEditingAppDelegate performTextFinderAction:]): * WebEditingTester/MainMenu.xib: Receive performTextFinderAction: and forward it to the frontmost WebDocumentController. * WebEditingTester/WK2WebDocumentController.m: (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController performTextFinderAction:]): (-[WK2WebDocumentController findBarView]): (-[WK2WebDocumentController setFindBarView:]): (-[WK2WebDocumentController isFindBarVisible]): (-[WK2WebDocumentController setFindBarVisible:]): (-[WK2WebDocumentController findBarViewDidChangeHeight]): (-[WK2WebDocumentController layout]): Implement performTextFinderAction: for WebKit2, and have a NSTextFinder pointing at the WKWebView (currently nothing will work, but the bar will show up). Install and uninstall the bar as needed. * WebEditingTester/WebDocument.xib: Don't use a full-size content view. There's no need, and it makes find bar layout harder. * WebEditingTester/WebDocumentController.h: * WebEditingTester/WebDocumentController.m: (-[WebDocumentController performTextFinderAction:]): Canonical link: https://commits.webkit.org/160324@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@181007 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-03-04 19:27:39 +00:00
_textFinder.findBarContainer = self;
Add new tool to test editable Webviews. https://bugs.webkit.org/show_bug.cgi?id=141772 Reviewed by Tim Horton. Adding WebEditingTester, a Cocoa application to test WK1 and Wk2 views in editable mode. * WebEditingTester: Added. * WebEditingTester/AppDelegate.h: Added. * WebEditingTester/AppDelegate.m: Added. (-[WebEditingAppDelegate init]): (defaultConfiguration): (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate applicationWillTerminate:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate showOperations:]): (-[WebEditingAppDelegate useWebKit2ByDefault]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate validateMenuItem:]): * WebEditingTester/Info.plist: Added. * WebEditingTester/MainMenu.xib: Added. * WebEditingTester/WK1WebDocumentController.h: Added. * WebEditingTester/WK1WebDocumentController.m: Added. (-[WK1WebDocumentController awakeFromNib]): (-[WK1WebDocumentController loadContent]): (-[WK1WebDocumentController dealloc]): (-[WK1WebDocumentController pasteAsMarkup:]): * WebEditingTester/WK2WebDocumentController.h: Added. * WebEditingTester/WK2WebDocumentController.m: Added. (-[WK2WebDocumentController initWithConfiguration:]): (-[WK2WebDocumentController pasteAsMarkup:]): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController dealloc]): (-[WK2WebDocumentController loadContent]): * WebEditingTester/WebDocument.xib: Added. * WebEditingTester/WebDocumentController.h: Added. * WebEditingTester/WebDocumentController.m: Added. (-[WebDocumentController initWithWindow:]): (-[WebDocumentController windowDidLoad]): (-[WebDocumentController defaultEditingSource]): (-[WebDocumentController applicationTerminating]): (-[WebDocumentController loadContent]): * WebEditingTester/WebEditingTester.xcodeproj: Added. * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added. * WebEditingTester/main.m: Added. (main): Canonical link: https://commits.webkit.org/159820@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-19 18:41:24 +00:00
}
[WebEditingTester] Hook up key equivalents for new window action https://bugs.webkit.org/show_bug.cgi?id=141828 Reviewed by Enrica Casucci. * WebEditingTester/AppDelegate.h: * WebEditingTester/AppDelegate.m: (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate _defaultWebDocumentControllerClass]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate _updateNewWindowKeyEquivalents]): (defaultConfiguration): Deleted. (-[WebEditingAppDelegate applicationWillTerminate:]): Deleted. Move WKWebViewConfiguration setup into WK2WebDocumentController. Remove unused application termination code. Update new-window menu item key equivalents when launching and when changing the use-WebKit2-by-default setting. Make WebDocumentController subclasses all initialized the same way, and use that to factor out alloc/init. Rename loadContent to loadHTMLString for future use. * WebEditingTester/MainMenu.xib: Add default key equivalents. Cmd-N will always make the default kind of window (controlled by the pref). Cmd-Opt-N will always make the other kind. The menu items are configured as alternates so they only show up if you press alt (just like in MiniBrowser). * WebEditingTester/WK1WebDocumentController.m: (-[WK1WebDocumentController loadHTMLString:]): (-[WK1WebDocumentController loadContent]): Deleted. * WebEditingTester/WK2WebDocumentController.h: * WebEditingTester/WK2WebDocumentController.m: (defaultConfiguration): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController loadHTMLString:]): (-[WK2WebDocumentController initWithConfiguration:]): Deleted. (-[WK2WebDocumentController dealloc]): Deleted. * WebEditingTester/WebDocumentController.h: * WebEditingTester/WebDocumentController.m: (-[WebDocumentController init]): (-[WebDocumentController initWithWindow:]): (+[WebDocumentController defaultEditingSource]): (-[WebDocumentController loadHTMLString:]): (-[WebDocumentController windowDidLoad]): Deleted. (-[WebDocumentController defaultEditingSource]): Deleted. (-[WebDocumentController applicationTerminating]): Deleted. (-[WebDocumentController loadContent]): Deleted. Canonical link: https://commits.webkit.org/159866@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180429 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-20 19:17:51 +00:00
- (void)loadHTMLString:(NSString *)content
Add new tool to test editable Webviews. https://bugs.webkit.org/show_bug.cgi?id=141772 Reviewed by Tim Horton. Adding WebEditingTester, a Cocoa application to test WK1 and Wk2 views in editable mode. * WebEditingTester: Added. * WebEditingTester/AppDelegate.h: Added. * WebEditingTester/AppDelegate.m: Added. (-[WebEditingAppDelegate init]): (defaultConfiguration): (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate applicationWillTerminate:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate showOperations:]): (-[WebEditingAppDelegate useWebKit2ByDefault]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate validateMenuItem:]): * WebEditingTester/Info.plist: Added. * WebEditingTester/MainMenu.xib: Added. * WebEditingTester/WK1WebDocumentController.h: Added. * WebEditingTester/WK1WebDocumentController.m: Added. (-[WK1WebDocumentController awakeFromNib]): (-[WK1WebDocumentController loadContent]): (-[WK1WebDocumentController dealloc]): (-[WK1WebDocumentController pasteAsMarkup:]): * WebEditingTester/WK2WebDocumentController.h: Added. * WebEditingTester/WK2WebDocumentController.m: Added. (-[WK2WebDocumentController initWithConfiguration:]): (-[WK2WebDocumentController pasteAsMarkup:]): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController dealloc]): (-[WK2WebDocumentController loadContent]): * WebEditingTester/WebDocument.xib: Added. * WebEditingTester/WebDocumentController.h: Added. * WebEditingTester/WebDocumentController.m: Added. (-[WebDocumentController initWithWindow:]): (-[WebDocumentController windowDidLoad]): (-[WebDocumentController defaultEditingSource]): (-[WebDocumentController applicationTerminating]): (-[WebDocumentController loadContent]): * WebEditingTester/WebEditingTester.xcodeproj: Added. * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added. * WebEditingTester/main.m: Added. (main): Canonical link: https://commits.webkit.org/159820@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-19 18:41:24 +00:00
{
Treat non-https actions on secure pages as mixed content <rdar://problem/23144492> https://bugs.webkit.org/show_bug.cgi?id=153322 Source/WebCore: Reviewed by Alexey Proskuryakov. Tests: http/tests/security/mixedContent/insecure-form-in-iframe.html http/tests/security/mixedContent/insecure-form-in-main-frame.html http/tests/security/mixedContent/javascript-url-form-in-main-frame.html * html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::parseAttribute): Check form actions for mixed content. * loader/MixedContentChecker.cpp: (WebCore::MixedContentChecker::checkFormForMixedContent): * loader/MixedContentChecker.h: Add new function to check and warn if a form's action is mixed content. LayoutTests: Reviewed by Alexey Proskuryakov. * http/tests/security/mixedContent/insecure-form-in-iframe-expected.txt: Added. * http/tests/security/mixedContent/insecure-form-in-iframe.html: Added. * http/tests/security/mixedContent/insecure-form-in-main-frame-expected.txt: Added. * http/tests/security/mixedContent/insecure-form-in-main-frame.html: Added. * http/tests/security/mixedContent/javascript-url-form-in-main-frame-expected.txt: Added. * http/tests/security/mixedContent/javascript-url-form-in-main-frame.html: Added. * http/tests/security/mixedContent/resources/frame-with-insecure-form.html: Added. * http/tests/security/mixedContent/resources/frame-with-javascript-url-form.html: Added. Canonical link: https://commits.webkit.org/171440@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@195477 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-01-22 22:24:32 +00:00
NSStringEncoding encoding = NSUnicodeStringEncoding;
NSData *data = [content dataUsingEncoding:encoding];
CFStringEncoding cfEncoding = CFStringConvertNSStringEncodingToEncoding(encoding);
NSString *textEncodingName = (__bridge NSString *)CFStringConvertEncodingToIANACharSetName(cfEncoding);
[_webView _loadData:data MIMEType:@"text/html" characterEncodingName:textEncodingName baseURL:[NSURL URLWithString:@"x-webdoc:/klsadfgjlfsdj/"] userData:nil];
Add new tool to test editable Webviews. https://bugs.webkit.org/show_bug.cgi?id=141772 Reviewed by Tim Horton. Adding WebEditingTester, a Cocoa application to test WK1 and Wk2 views in editable mode. * WebEditingTester: Added. * WebEditingTester/AppDelegate.h: Added. * WebEditingTester/AppDelegate.m: Added. (-[WebEditingAppDelegate init]): (defaultConfiguration): (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate applicationWillTerminate:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate showOperations:]): (-[WebEditingAppDelegate useWebKit2ByDefault]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate validateMenuItem:]): * WebEditingTester/Info.plist: Added. * WebEditingTester/MainMenu.xib: Added. * WebEditingTester/WK1WebDocumentController.h: Added. * WebEditingTester/WK1WebDocumentController.m: Added. (-[WK1WebDocumentController awakeFromNib]): (-[WK1WebDocumentController loadContent]): (-[WK1WebDocumentController dealloc]): (-[WK1WebDocumentController pasteAsMarkup:]): * WebEditingTester/WK2WebDocumentController.h: Added. * WebEditingTester/WK2WebDocumentController.m: Added. (-[WK2WebDocumentController initWithConfiguration:]): (-[WK2WebDocumentController pasteAsMarkup:]): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController dealloc]): (-[WK2WebDocumentController loadContent]): * WebEditingTester/WebDocument.xib: Added. * WebEditingTester/WebDocumentController.h: Added. * WebEditingTester/WebDocumentController.m: Added. (-[WebDocumentController initWithWindow:]): (-[WebDocumentController windowDidLoad]): (-[WebDocumentController defaultEditingSource]): (-[WebDocumentController applicationTerminating]): (-[WebDocumentController loadContent]): * WebEditingTester/WebEditingTester.xcodeproj: Added. * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added. * WebEditingTester/main.m: Added. (main): Canonical link: https://commits.webkit.org/159820@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-19 18:41:24 +00:00
}
[WebEditingTester] Add support for the find and replace bar https://bugs.webkit.org/show_bug.cgi?id=142247 Reviewed by Enrica Casucci. While it's not hooked up yet in WKWebView, adding support for the find bar to WebEditingTester will help us implement that functionality. * WebEditingTester/AppDelegate.h: * WebEditingTester/AppDelegate.m: (-[WebEditingAppDelegate performTextFinderAction:]): * WebEditingTester/MainMenu.xib: Receive performTextFinderAction: and forward it to the frontmost WebDocumentController. * WebEditingTester/WK2WebDocumentController.m: (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController performTextFinderAction:]): (-[WK2WebDocumentController findBarView]): (-[WK2WebDocumentController setFindBarView:]): (-[WK2WebDocumentController isFindBarVisible]): (-[WK2WebDocumentController setFindBarVisible:]): (-[WK2WebDocumentController findBarViewDidChangeHeight]): (-[WK2WebDocumentController layout]): Implement performTextFinderAction: for WebKit2, and have a NSTextFinder pointing at the WKWebView (currently nothing will work, but the bar will show up). Install and uninstall the bar as needed. * WebEditingTester/WebDocument.xib: Don't use a full-size content view. There's no need, and it makes find bar layout harder. * WebEditingTester/WebDocumentController.h: * WebEditingTester/WebDocumentController.m: (-[WebDocumentController performTextFinderAction:]): Canonical link: https://commits.webkit.org/160324@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@181007 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-03-04 19:27:39 +00:00
- (void)performTextFinderAction:(id)sender
{
[_textFinder performAction:[sender tag]];
}
- (NSView *)findBarView
{
return _textFindBarView;
}
- (void)setFindBarView:(NSView *)findBarView
{
if (_textFindBarView)
[_textFindBarView removeFromSuperview];
_textFindBarView = findBarView;
_findBarVisible = YES;
[containerView addSubview:_textFindBarView];
[self layout];
}
Add preliminary (SPI) support for NSTextFinder on WKWebView https://bugs.webkit.org/show_bug.cgi?id=150907 <rdar://problem/19171624> Reviewed by Darin Adler. New API test: WebKit2.FindInPage * Platform/spi/mac/AppKitSPI.h: Add some SPI. * UIProcess/API/APIFindClient.h: (API::FindClient::didFindString): * UIProcess/API/C/WKPage.cpp: (WKPageSetPageFindClient): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didFindString): * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/Cocoa/FindClient.h: * UIProcess/Cocoa/FindClient.mm: (WebKit::FindClient::didFindString): Make didFindString return the match rects like didFindStringMatches does. * WebProcess/WebPage/FindController.cpp: (WebKit::FindController::updateFindUIAfterPageScroll): (WebKit::FindController::findString): Keep the most recent find match around for incremental find just like we do for the non-incremental version. This way, getImageForFindMatch and selectFindMatch will work for incremental find too! * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _ensureTextFinderClient]): (-[WKWebView findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:]): (-[WKWebView documentContainerView]): (-[WKWebView getSelectedText:]): (-[WKWebView selectFindMatch:completionHandler:]): Implement NSTextFinder's async client protocol and forward to the new WKTextFinderClient. * UIProcess/API/Cocoa/WKWebViewPrivate.h: Privately note our conformance to the aformentioned protocol. * UIProcess/mac/WKTextFinderClient.h: Added. * UIProcess/mac/WKTextFinderClient.mm: Added. (WebKit::TextFinderFindClient::TextFinderFindClient): (-[WKTextFinderMatch initWithClient:view:index:rects:]): (-[WKTextFinderMatch containingView]): (-[WKTextFinderMatch textRects]): (-[WKTextFinderMatch generateTextImage:]): (-[WKTextFinderMatch index]): (-[WKTextFinderClient initWithPage:view:]): (-[WKTextFinderClient willDestroyView:]): (-[WKTextFinderClient findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:]): (-[WKTextFinderClient getSelectedText:]): (-[WKTextFinderClient selectFindMatch:completionHandler:]): (-[WKTextFinderClient didFindStringMatches:rects:index:]): (-[WKTextFinderClient didGetImageForMatchResult:index:]): (-[WKTextFinderClient didFindString:rects:index:]): (-[WKTextFinderClient didFailToFindString:]): (-[WKTextFinderClient getImageForMatchResult:completionHandler:]): * WebKit2.xcodeproj/project.pbxproj: Add WKTextFinderClient. It installs itself as the FindClient and FindMatchesClient, so you can only use one mechanism or the other. * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WebKit2Cocoa/FindInPage.mm: Added. (-[FindInPageNavigationDelegate webView:didFinishNavigation:]): (TEST): Add an API test. * WebEditingTester/WK1WebDocumentController.m: * WebEditingTester/WK2WebDocumentController.m: (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController contentView]): Use incremental find, and show the overlay/indicator. Canonical link: https://commits.webkit.org/169194@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@192113 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-11-06 19:48:27 +00:00
- (NSView *)contentView
{
return _webView;
}
[WebEditingTester] Add support for the find and replace bar https://bugs.webkit.org/show_bug.cgi?id=142247 Reviewed by Enrica Casucci. While it's not hooked up yet in WKWebView, adding support for the find bar to WebEditingTester will help us implement that functionality. * WebEditingTester/AppDelegate.h: * WebEditingTester/AppDelegate.m: (-[WebEditingAppDelegate performTextFinderAction:]): * WebEditingTester/MainMenu.xib: Receive performTextFinderAction: and forward it to the frontmost WebDocumentController. * WebEditingTester/WK2WebDocumentController.m: (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController performTextFinderAction:]): (-[WK2WebDocumentController findBarView]): (-[WK2WebDocumentController setFindBarView:]): (-[WK2WebDocumentController isFindBarVisible]): (-[WK2WebDocumentController setFindBarVisible:]): (-[WK2WebDocumentController findBarViewDidChangeHeight]): (-[WK2WebDocumentController layout]): Implement performTextFinderAction: for WebKit2, and have a NSTextFinder pointing at the WKWebView (currently nothing will work, but the bar will show up). Install and uninstall the bar as needed. * WebEditingTester/WebDocument.xib: Don't use a full-size content view. There's no need, and it makes find bar layout harder. * WebEditingTester/WebDocumentController.h: * WebEditingTester/WebDocumentController.m: (-[WebDocumentController performTextFinderAction:]): Canonical link: https://commits.webkit.org/160324@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@181007 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-03-04 19:27:39 +00:00
- (BOOL)isFindBarVisible
{
return _findBarVisible;
}
- (void)setFindBarVisible:(BOOL)findBarVisible
{
_findBarVisible = findBarVisible;
if (findBarVisible)
[containerView addSubview:_textFindBarView];
else
[_textFindBarView removeFromSuperview];
[self layout];
}
- (void)findBarViewDidChangeHeight
{
[self layout];
}
- (void)layout
{
CGRect containerBounds = [containerView bounds];
if (!_findBarVisible) {
_webView.frame = containerBounds;
} else {
_textFindBarView.frame = CGRectMake(containerBounds.origin.x, containerBounds.origin.y + containerBounds.size.height - _textFindBarView.frame.size.height, containerBounds.size.width, _textFindBarView.frame.size.height);
_webView.frame = CGRectMake(containerBounds.origin.x, containerBounds.origin.y, containerBounds.size.width, containerBounds.size.height - _textFindBarView.frame.size.height);
}
}
Add new tool to test editable Webviews. https://bugs.webkit.org/show_bug.cgi?id=141772 Reviewed by Tim Horton. Adding WebEditingTester, a Cocoa application to test WK1 and Wk2 views in editable mode. * WebEditingTester: Added. * WebEditingTester/AppDelegate.h: Added. * WebEditingTester/AppDelegate.m: Added. (-[WebEditingAppDelegate init]): (defaultConfiguration): (-[WebEditingAppDelegate applicationDidFinishLaunching:]): (-[WebEditingAppDelegate applicationWillTerminate:]): (-[WebEditingAppDelegate newEditor:]): (-[WebEditingAppDelegate showOperations:]): (-[WebEditingAppDelegate useWebKit2ByDefault]): (-[WebEditingAppDelegate toggleUseWK2ByDefault:]): (-[WebEditingAppDelegate validateMenuItem:]): * WebEditingTester/Info.plist: Added. * WebEditingTester/MainMenu.xib: Added. * WebEditingTester/WK1WebDocumentController.h: Added. * WebEditingTester/WK1WebDocumentController.m: Added. (-[WK1WebDocumentController awakeFromNib]): (-[WK1WebDocumentController loadContent]): (-[WK1WebDocumentController dealloc]): (-[WK1WebDocumentController pasteAsMarkup:]): * WebEditingTester/WK2WebDocumentController.h: Added. * WebEditingTester/WK2WebDocumentController.m: Added. (-[WK2WebDocumentController initWithConfiguration:]): (-[WK2WebDocumentController pasteAsMarkup:]): (-[WK2WebDocumentController awakeFromNib]): (-[WK2WebDocumentController dealloc]): (-[WK2WebDocumentController loadContent]): * WebEditingTester/WebDocument.xib: Added. * WebEditingTester/WebDocumentController.h: Added. * WebEditingTester/WebDocumentController.m: Added. (-[WebDocumentController initWithWindow:]): (-[WebDocumentController windowDidLoad]): (-[WebDocumentController defaultEditingSource]): (-[WebDocumentController applicationTerminating]): (-[WebDocumentController loadContent]): * WebEditingTester/WebEditingTester.xcodeproj: Added. * WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Added. * WebEditingTester/main.m: Added. (main): Canonical link: https://commits.webkit.org/159820@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-19 18:41:24 +00:00
@end