diff options
author | Ben Murdoch <benm@google.com> | 2011-05-05 14:36:32 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-05-10 15:38:30 +0100 |
commit | f05b935882198ccf7d81675736e3aeb089c5113a (patch) | |
tree | 4ea0ca838d9ef1b15cf17ddb3928efb427c7e5a1 /WebKitTools/MiniBrowser/mac/AppDelegate.m | |
parent | 60fbdcc62bced8db2cb1fd233cc4d1e4ea17db1b (diff) | |
download | external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.zip external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.tar.gz external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.tar.bz2 |
Merge WebKit at r74534: Initial merge by git.
Change-Id: I6ccd1154fa1b19c2ec2a66878eb675738735f1eb
Diffstat (limited to 'WebKitTools/MiniBrowser/mac/AppDelegate.m')
-rw-r--r-- | WebKitTools/MiniBrowser/mac/AppDelegate.m | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/WebKitTools/MiniBrowser/mac/AppDelegate.m b/WebKitTools/MiniBrowser/mac/AppDelegate.m deleted file mode 100644 index 3747e28..0000000 --- a/WebKitTools/MiniBrowser/mac/AppDelegate.m +++ /dev/null @@ -1,275 +0,0 @@ -/* - * Copyright (C) 2010 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 "AppDelegate.h" - -#import "BrowserWindowController.h" -#import "BrowserStatisticsWindowController.h" - -#import <WebKit2/WKContextPrivate.h> -#import <WebKit2/WKStringCF.h> -#import <WebKit2/WKURLCF.h> - -static NSString *defaultURL = @"http://www.webkit.org/"; - -@implementation BrowserAppDelegate - -void didRecieveMessageFromInjectedBundle(WKContextRef context, WKStringRef messageName, WKTypeRef messageBody, const void *clientInfo) -{ - CFStringRef cfMessageName = WKStringCopyCFString(0, messageName); - - WKTypeID typeID = WKGetTypeID(messageBody); - if (typeID == WKStringGetTypeID()) { - CFStringRef cfMessageBody = WKStringCopyCFString(0, (WKStringRef)messageBody); - LOG(@"ContextInjectedBundleClient - didRecieveMessage - MessageName: %@ MessageBody %@", cfMessageName, cfMessageBody); - CFRelease(cfMessageBody); - } else { - LOG(@"ContextInjectedBundleClient - didRecieveMessage - MessageName: %@ (MessageBody Unhandeled)\n", cfMessageName); - } - - CFRelease(cfMessageName); - - WKStringRef newMessageName = WKStringCreateWithCFString(CFSTR("Response")); - WKStringRef newMessageBody = WKStringCreateWithCFString(CFSTR("Roger that!")); - - WKContextPostMessageToInjectedBundle(context, newMessageName, newMessageBody); - - WKRelease(newMessageName); - WKRelease(newMessageBody); -} - -#pragma mark History Client Callbacks - -static void didNavigateWithNavigationData(WKContextRef context, WKPageRef page, WKNavigationDataRef navigationData, WKFrameRef frame, const void *clientInfo) -{ - WKStringRef wkTitle = WKNavigationDataCopyTitle(navigationData); - CFStringRef title = WKStringCopyCFString(0, wkTitle); - WKRelease(wkTitle); - - WKURLRef wkURL = WKNavigationDataCopyURL(navigationData); - CFURLRef url = WKURLCopyCFURL(0, wkURL); - WKRelease(wkURL); - - LOG(@"HistoryClient - didNavigateWithNavigationData - title: %@ - url: %@", title, url); - CFRelease(title); - CFRelease(url); -} - -static void didPerformClientRedirect(WKContextRef context, WKPageRef page, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef frame, const void *clientInfo) -{ - CFURLRef cfSourceURL = WKURLCopyCFURL(0, sourceURL); - CFURLRef cfDestinationURL = WKURLCopyCFURL(0, destinationURL); - LOG(@"HistoryClient - didPerformClientRedirect - sourceURL: %@ - destinationURL: %@", cfSourceURL, cfDestinationURL); - CFRelease(cfSourceURL); - CFRelease(cfDestinationURL); -} - -static void didPerformServerRedirect(WKContextRef context, WKPageRef page, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef frame, const void *clientInfo) -{ - CFURLRef cfSourceURL = WKURLCopyCFURL(0, sourceURL); - CFURLRef cfDestinationURL = WKURLCopyCFURL(0, destinationURL); - LOG(@"HistoryClient - didPerformServerRedirect - sourceURL: %@ - destinationURL: %@", cfSourceURL, cfDestinationURL); - CFRelease(cfSourceURL); - CFRelease(cfDestinationURL); -} - -static void didUpdateHistoryTitle(WKContextRef context, WKPageRef page, WKStringRef title, WKURLRef URL, WKFrameRef frame, const void *clientInfo) -{ - CFStringRef cfTitle = WKStringCopyCFString(0, title); - CFURLRef cfURL = WKURLCopyCFURL(0, URL); - LOG(@"HistoryClient - didUpdateHistoryTitle - title: %@ - URL: %@", cfTitle, cfURL); - CFRelease(cfTitle); - CFRelease(cfURL); -} - -static void populateVisitedLinks(WKContextRef context, const void *clientInfo) -{ - LOG(@"HistoryClient - populateVisitedLinks"); -} - -- (id)init -{ - self = [super init]; - if (self) { - if ([NSEvent modifierFlags] & NSShiftKeyMask) - currentProcessModel = kProcessModelSharedSecondaryThread; - else - currentProcessModel = kProcessModelSharedSecondaryProcess; - - WKContextHistoryClient historyClient = { - 0, - self, - didNavigateWithNavigationData, - didPerformClientRedirect, - didPerformServerRedirect, - didUpdateHistoryTitle, - populateVisitedLinks - }; - - WKContextRef threadContext = WKContextGetSharedThreadContext(); - WKContextSetHistoryClient(threadContext, &historyClient); - WKContextSetCacheModel(threadContext, kWKCacheModelPrimaryWebBrowser); - - threadPageNamespace = WKPageNamespaceCreate(threadContext); - WKRelease(threadContext); - - CFStringRef bundlePathCF = (CFStringRef)[[NSBundle mainBundle] pathForAuxiliaryExecutable:@"WebBundle.bundle"]; - WKStringRef bundlePath = WKStringCreateWithCFString(bundlePathCF); - - WKContextRef processContext = WKContextCreateWithInjectedBundlePath(bundlePath); - - WKContextInjectedBundleClient bundleClient = { - 0, /* version */ - 0, /* clientInfo */ - didRecieveMessageFromInjectedBundle, - 0 - }; - WKContextSetInjectedBundleClient(processContext, &bundleClient); - WKContextSetHistoryClient(processContext, &historyClient); - WKContextSetCacheModel(processContext, kWKCacheModelPrimaryWebBrowser); - - processPageNamespace = WKPageNamespaceCreate(processContext); - WKRelease(processContext); - - WKRelease(bundlePath); - } - - return self; -} - -- (IBAction)newWindow:(id)sender -{ - BrowserWindowController *controller = [[BrowserWindowController alloc] initWithPageNamespace:[self getCurrentPageNamespace]]; - [[controller window] makeKeyAndOrderFront:sender]; - - [controller loadURLString:defaultURL]; -} - -- (WKPageNamespaceRef)getCurrentPageNamespace -{ - return (currentProcessModel == kProcessModelSharedSecondaryThread) ? threadPageNamespace : processPageNamespace; -} - -- (BOOL)validateMenuItem:(NSMenuItem *)menuItem -{ - if ([menuItem action] == @selector(setSharedProcessProcessModel:)) - [menuItem setState:currentProcessModel == kProcessModelSharedSecondaryProcess ? NSOnState : NSOffState]; - else if ([menuItem action] == @selector(setSharedThreadProcessModel:)) - [menuItem setState:currentProcessModel == kProcessModelSharedSecondaryThread ? NSOnState : NSOffState]; - return YES; -} - -- (void)_setProcessModel:(ProcessModel)processModel -{ - if (processModel == currentProcessModel) - return; - - currentProcessModel = processModel; -} - -- (IBAction)setSharedProcessProcessModel:(id)sender -{ - [self _setProcessModel:kProcessModelSharedSecondaryProcess]; -} - -- (IBAction)setSharedThreadProcessModel:(id)sender -{ - [self _setProcessModel:kProcessModelSharedSecondaryThread]; -} - -- (IBAction)showStatisticsWindow:(id)sender -{ - static BrowserStatisticsWindowController* windowController; - if (!windowController) - windowController = [[BrowserStatisticsWindowController alloc] initWithThreadedWKContextRef:WKPageNamespaceGetContext(threadPageNamespace) - processWKContextRef:WKPageNamespaceGetContext(processPageNamespace)]; - - [[windowController window] makeKeyAndOrderFront:self]; -} - -- (void)applicationDidFinishLaunching:(NSNotification *)aNotification -{ - [self newWindow:self]; -} - -- (void)applicationWillTerminate:(NSNotification *)notification -{ - NSArray* windows = [NSApp windows]; - for (NSWindow* window in windows) { - id delegate = [window delegate]; - if ([delegate isKindOfClass:[BrowserWindowController class]]) { - BrowserWindowController *controller = (BrowserWindowController *)delegate; - [controller applicationTerminating]; - } - } - - WKRelease(threadPageNamespace); - threadPageNamespace = 0; - - WKRelease(processPageNamespace); - processPageNamespace = 0; -} - -- (BrowserWindowController *)frontmostBrowserWindowController -{ - NSArray* windows = [NSApp windows]; - for (NSWindow* window in windows) { - id delegate = [window delegate]; - if ([delegate isKindOfClass:[BrowserWindowController class]]) - return (BrowserWindowController *)delegate; - } - - return 0; -} - -- (IBAction)openDocument:(id)sender -{ - NSOpenPanel *openPanel = [[NSOpenPanel openPanel] retain]; - [openPanel beginForDirectory:nil - file:nil - types:nil - modelessDelegate:self - didEndSelector:@selector(openPanelDidEnd:returnCode:contextInfo:) - contextInfo:0]; -} - -- (void)openPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo -{ - [sheet autorelease]; - if (returnCode != NSOKButton || ![[sheet filenames] count]) - return; - - NSString* filePath = [[sheet filenames] objectAtIndex:0]; - - BrowserWindowController *controller = [self frontmostBrowserWindowController]; - if (!controller) { - controller = [[BrowserWindowController alloc] initWithPageNamespace:[self getCurrentPageNamespace]]; - [[controller window] makeKeyAndOrderFront:self]; - } - - [controller loadURLString:[[NSURL fileURLWithPath:filePath] absoluteString]]; -} - -@end |