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