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 "config.h"
27#include "WKView.h"
28
29#include "WKAPICast.h"
30#include "WebView.h"
31
32using namespace WebKit;
33
34WKTypeID WKViewGetTypeID()
35{
36    return toAPI(APIObject::TypeView);
37}
38
39WKViewRef WKViewCreate(RECT rect, WKContextRef contextRef, WKPageGroupRef pageGroupRef, HWND parentWindow)
40{
41    RefPtr<WebView> view = WebView::create(rect, toImpl(contextRef), toImpl(pageGroupRef), parentWindow);
42    return toAPI(view.release().releaseRef());
43}
44
45HWND WKViewGetWindow(WKViewRef viewRef)
46{
47    return toImpl(viewRef)->window();
48}
49
50WKPageRef WKViewGetPage(WKViewRef viewRef)
51{
52    return toAPI(toImpl(viewRef)->page());
53}
54
55void WKViewSetParentWindow(WKViewRef viewRef, HWND hostWindow)
56{
57    toImpl(viewRef)->setParentWindow(hostWindow);
58}
59
60void WKViewWindowAncestryDidChange(WKViewRef viewRef)
61{
62    toImpl(viewRef)->windowAncestryDidChange();
63}
64
65void WKViewSetIsInWindow(WKViewRef viewRef, bool isInWindow)
66{
67    toImpl(viewRef)->setIsInWindow(isInWindow);
68}
69
70void WKViewSetInitialFocus(WKViewRef viewRef, bool forward)
71{
72    toImpl(viewRef)->setInitialFocus(forward);
73}
74
75void WKViewSetScrollOffsetOnNextResize(WKViewRef viewRef, WKSize scrollOffset)
76{
77    toImpl(viewRef)->setScrollOffsetOnNextResize(toIntSize(scrollOffset));
78}
79
80void WKViewSetFindIndicatorCallback(WKViewRef viewRef, WKViewFindIndicatorCallback callback, void* context)
81{
82    toImpl(viewRef)->setFindIndicatorCallback(callback, context);
83}
84
85WKViewFindIndicatorCallback WKViewGetFindIndicatorCallback(WKViewRef viewRef, void** context)
86{
87    return toImpl(viewRef)->getFindIndicatorCallback(context);
88}
89
90void WKViewSetViewUndoClient(WKViewRef viewRef, const WKViewUndoClient* wkClient)
91{
92    if (wkClient && wkClient->version)
93        return;
94    toImpl(viewRef)->initializeUndoClient(wkClient);
95}
96
97void WKViewReapplyEditCommand(WKViewRef viewRef, WKEditCommandRef command)
98{
99    toImpl(viewRef)->reapplyEditCommand(toImpl(command));
100}
101
102void WKViewUnapplyEditCommand(WKViewRef viewRef, WKEditCommandRef command)
103{
104    toImpl(viewRef)->unapplyEditCommand(toImpl(command));
105}
106