094072cbeeb9266a7a80ea6cc37b4696129d3595
[WebKit.git] / WebKit2 / UIProcess / WebUIClient.cpp
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 "WebUIClient.h"
27
28 #include "WKAPICast.h"
29 #include "WebPageProxy.h"
30 #include <WebCore/IntSize.h>
31 #include <string.h>
32 #include <wtf/text/WTFString.h>
33
34 using namespace WebCore;
35
36 namespace WebKit {
37
38 WebUIClient::WebUIClient()
39 {
40     initialize(0);
41 }
42
43 void WebUIClient::initialize(const WKPageUIClient* client)
44 {
45     if (client && !client->version)
46         m_pageUIClient = *client;
47     else 
48         memset(&m_pageUIClient, 0, sizeof(m_pageUIClient));
49 }
50
51 PassRefPtr<WebPageProxy> WebUIClient::createNewPage(WebPageProxy* page)
52 {
53     if (!m_pageUIClient.createNewPage)
54         return 0;
55     
56     return adoptRef(toWK(m_pageUIClient.createNewPage(toRef(page), m_pageUIClient.clientInfo)));
57
58
59 void WebUIClient::showPage(WebPageProxy* page)
60 {
61     if (!m_pageUIClient.showPage)
62         return;
63     
64     m_pageUIClient.showPage(toRef(page), m_pageUIClient.clientInfo);
65 }
66
67 void WebUIClient::close(WebPageProxy* page)
68 {
69     if (!m_pageUIClient.close)
70         return;
71     
72     m_pageUIClient.close(toRef(page), m_pageUIClient.clientInfo);
73 }
74
75 void WebUIClient::runJavaScriptAlert(WebPageProxy* page, const String& message, WebFrameProxy* frame)
76 {
77     if (!m_pageUIClient.runJavaScriptAlert)
78         return;
79     
80     m_pageUIClient.runJavaScriptAlert(toRef(page), toRef(message.impl()), toRef(frame), m_pageUIClient.clientInfo);
81 }
82
83 bool WebUIClient::runJavaScriptConfirm(WebPageProxy* page, const String& message, WebFrameProxy* frame)
84 {
85     if (!m_pageUIClient.runJavaScriptConfirm)
86         return false;
87
88     return m_pageUIClient.runJavaScriptConfirm(toRef(page), toRef(message.impl()), toRef(frame), m_pageUIClient.clientInfo);
89 }
90
91 String WebUIClient::runJavaScriptPrompt(WebPageProxy* page, const String& message, const String& defaultValue, WebFrameProxy* frame)
92 {
93     if (!m_pageUIClient.runJavaScriptPrompt)
94         return String();
95
96     WebString* string = toWK(m_pageUIClient.runJavaScriptPrompt(toRef(page), toRef(message.impl()), toRef(defaultValue.impl()), toRef(frame), m_pageUIClient.clientInfo));
97     if (!string)
98         return String();
99
100     String result = string->string();
101     string->deref();
102
103     return result;
104 }
105
106 void WebUIClient::contentsSizeChanged(WebPageProxy* page, const IntSize& size, WebFrameProxy* frame)
107 {
108     if (!m_pageUIClient.contentsSizeChanged)
109         return;
110
111     m_pageUIClient.contentsSizeChanged(toRef(page), size.width(), size.height(), toRef(frame), m_pageUIClient.clientInfo);
112 }
113
114 } // namespace WebKit