OSDN Git Service

Merge WebKit at r63173 : Initial merge by git.
[android-x86/external-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/WKBundleFrame.h>
29 #include <WebKit2/WKBundleInitialize.h>
30 #include <WebKit2/WKBundlePage.h>
31 #include <WebKit2/WKString.h>
32 #include <WebKit2/WKStringCF.h>
33 #include <WebKit2/WKURLCF.h>
34 #include <stdio.h>
35
36 static WKBundleRef globalBundle;
37
38 // WKBundlePageClient
39
40 void _didStartProvisionalLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
41 {
42 }
43
44 void _didReceiveServerRedirectForProvisionalLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
45 {
46 }
47
48 void _didFailProvisionalLoadWithErrorForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
49 {
50 }
51
52 void _didCommitLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
53 {
54 }
55
56 void _didFinishLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
57 {
58 }
59
60 void _didFailLoadWithErrorForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
61 {
62 }
63
64 void _didReceiveTitleForFrame(WKBundlePageRef page, WKStringRef title, WKBundleFrameRef frame, const void *clientInfo)
65 {
66 }
67
68 void _didClearWindowForFrame(WKBundlePageRef page, WKBundleFrameRef frame, JSContextRef ctx, JSObjectRef window, const void *clientInfo)
69 {
70     CFURLRef cfURL = WKURLCopyCFURL(0, WKBundleFrameGetURL(WKBundlePageGetMainFrame(page)));
71     LOG(@"WKBundlePageClient - _didClearWindowForFrame %@", [(NSURL *)cfURL absoluteString]);
72     CFRelease(cfURL);
73
74     WKStringRef message = WKStringCreateWithCFString(CFSTR("Window was cleared"));
75     WKBundlePostMessage(globalBundle, message);
76     WKStringRelease(message);
77 }
78
79
80 // WKBundleClient
81
82 void _didCreatePage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo)
83 {
84     LOG(@"WKBundleClient - didCreatePage\n");
85
86     WKBundlePageLoaderClient client = {
87         0,
88         0,
89         _didStartProvisionalLoadForFrame,
90         _didReceiveServerRedirectForProvisionalLoadForFrame,
91         _didFailProvisionalLoadWithErrorForFrame,
92         _didCommitLoadForFrame,
93         _didFinishLoadForFrame,
94         _didFailLoadWithErrorForFrame,
95         _didReceiveTitleForFrame,
96         _didClearWindowForFrame
97     };
98     WKBundlePageSetLoaderClient(page, &client);
99 }
100
101 void _willDestroyPage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo)
102 {
103     LOG(@"WKBundleClient - willDestroyPage\n");
104 }
105
106 void _didRecieveMessage(WKBundleRef bundle, WKStringRef message, const void *clientInfo)
107 {
108     CFStringRef cfMessage = WKStringCopyCFString(0, message);
109     LOG(@"WKBundleClient - didRecieveMessage %@\n", cfMessage);
110     CFRelease(cfMessage);
111 }
112
113 void WKBundleInitialize(WKBundleRef bundle)
114 {
115     globalBundle = bundle;
116
117     WKBundleClient client = {
118         0,
119         0,
120         _didCreatePage,
121         _willDestroyPage,
122         _didRecieveMessage
123     };
124     WKBundleSetClient(bundle, &client);
125 }