ad382dc946ab30f3c56608ebab32acbacde12d41
[WebKit.git] / WebKitTools / MiniBrowser / mac / WebBundle / WebBundleMain.m
1 /*
2  * Copyright (C) 2010 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include <Cocoa/Cocoa.h>
27 #include <WebKit2/WKBundle.h>
28 #include <WebKit2/WKBundleInitialize.h>
29 #include <WebKit2/WKBundlePage.h>
30 #include <WebKit2/WKString.h>
31 #include <WebKit2/WKStringCF.h>
32 #include <WebKit2/WKURLCF.h>
33 #include <stdio.h>
34
35 static WKBundleRef globalBundle;
36
37 void _didClearWindow(WKBundlePageRef page, WKBundleFrameRef frame, JSContextRef ctx, JSObjectRef window, const void *clientInfo)
38 {
39     CFURLRef cfURL = WKURLCopyCFURL(0, WKBundlePageGetMainFrameURL(page));
40     NSLog(@"WKBundlePageClient - _didClearWindowForFrame %@", [(NSURL *)cfURL absoluteString]);
41     CFRelease(cfURL);
42
43     WKStringRef message = WKStringCreateWithCFString(CFSTR("Window was cleared"));
44     WKBundlePostMessage(globalBundle, message);
45     WKStringRelease(message);
46 }
47
48 void _didCreatePage(WKBundlePageRef bundle, WKBundlePageRef page, const void* clientInfo)
49 {
50     NSLog(@"WKBundleClient - didCreatePage\n");
51
52     WKBundlePageClient client = {
53         0,
54         0,
55         _didClearWindow
56     };
57     WKBundlePageSetClient(page, &client);
58 }
59
60 void _didRecieveMessage(WKBundleRef bundle, WKStringRef message, const void *clientInfo)
61 {
62     CFStringRef cfMessage = WKStringCopyCFString(0, message);
63     NSLog(@"WKBundleClient - didRecieveMessage %@\n", cfMessage);
64     CFRelease(cfMessage);
65 }
66
67 void WKBundleInitialize(WKBundleRef bundle)
68 {
69     globalBundle = bundle;
70
71     WKBundleClient client = {
72         0,
73         0,
74         _didCreatePage,
75         _didRecieveMessage
76     };
77     WKBundleSetClient(bundle, &client);
78 }