106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen/*
206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * Copyright (C) 2010 Apple Inc. All rights reserved.
306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *
406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * Redistribution and use in source and binary forms, with or without
506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * modification, are permitted provided that the following conditions
606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * are met:
706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 1. Redistributions of source code must retain the above copyright
806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *    notice, this list of conditions and the following disclaimer.
906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 2. Redistributions in binary form must reproduce the above copyright
1006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *    notice, this list of conditions and the following disclaimer in the
1106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *    documentation and/or other materials provided with the distribution.
1206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *
1306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
2306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THE POSSIBILITY OF SUCH DAMAGE.
2406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen */
2506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
2606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "PlatformWebView.h"
2706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
2806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsennamespace WTR {
2906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
30f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochPlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef)
3106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
3206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    NSRect rect = NSMakeRect(0, 0, 800, 600);
33f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    m_view = [[WKView alloc] initWithFrame:rect contextRef:contextRef pageGroupRef:pageGroupRef];
3406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
3506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    NSRect windowRect = NSOffsetRect(rect, -10000, [[[NSScreen screens] objectAtIndex:0] frame].size.height - rect.size.height + 10000);
3606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    m_window = [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
3781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    [m_window setColorSpace:[NSColorSpace genericRGBColorSpace]];
3806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    [[m_window contentView] addSubview:m_view];
3906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    [m_window orderBack:nil];
4006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    [m_window setAutodisplay:NO];
41db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    [m_window setReleasedWhenClosed:NO];
4206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
4306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
44e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid PlatformWebView::resizeTo(unsigned width, unsigned height)
45e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
46e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    [m_view setFrame:NSMakeRect(0, 0, width, height)];
47e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
48e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
4906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenPlatformWebView::~PlatformWebView()
5006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
5106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    [m_window close];
5206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    [m_window release];
5306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    [m_view release];
5406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
5506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
5606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenWKPageRef PlatformWebView::page()
5706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
5806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return [m_view pageRef];
5906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
6006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
61f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickvoid PlatformWebView::focus()
62f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{
63f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    // Implement.
64f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick}
65f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick
66a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochWKRect PlatformWebView::windowFrame()
67a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
68a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    NSRect frame = [m_window frame];
69a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
70a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    WKRect wkFrame;
71a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    wkFrame.origin.x = frame.origin.x;
72a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    wkFrame.origin.y = frame.origin.y;
73a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    wkFrame.size.width = frame.size.width;
74a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    wkFrame.size.height = frame.size.height;
75a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    return wkFrame;
76a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
77a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
78a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid PlatformWebView::setWindowFrame(WKRect frame)
79a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
80a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    [m_window setFrame:NSMakeRect(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height) display:YES];
81a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
82a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
8306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} // namespace WTR
84