2 * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
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.
13 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
20 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #include <wtf/OwnPtr.h>
30 #include <wtf/PassRefPtr.h>
40 class HTMLFrameOwnerElement;
42 class ResourceRequest;
49 EnableDoubleBuffering = 1 << 0
52 WebView(HWND hwnd, unsigned features = EnableDoubleBuffering);
55 static void initialize(HINSTANCE instanceHandle);
56 static void cleanup();
58 HWND windowHandle() const { return m_windowHandle; }
59 WebCore::Frame* frame() const { return m_frame; }
60 WebCore::Page* page() const { return m_page; }
61 WebCore::FrameView* view() const;
63 void load(LPCWSTR url);
64 void load(const WTF::String &url);
65 void load(const WebCore::ResourceRequest &request);
69 void frameRect(RECT* rect) const;
71 PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL&, const WTF::String&, WebCore::HTMLFrameOwnerElement*, const WTF::String&, bool, int, int);
74 void runJavaScriptAlert(const WTF::String& message);
75 bool runJavaScriptConfirm(const WTF::String& message);
76 bool runJavaScriptPrompt(const WTF::String& message, const WTF::String& defaultValue, WTF::String& result);
79 static LRESULT CALLBACK webViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
80 LRESULT wndProc(HWND, UINT, WPARAM, LPARAM);
82 bool handlePaint(HWND hWnd);
83 bool handleMouseEvent(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
84 bool handleMouseWheel(HWND hWnd, WPARAM wParam, LPARAM lParam, bool isHorizontal);
85 bool handleKeyDown(WPARAM virtualKeyCode, LPARAM keyData, bool systemKeyDown);
86 bool handleKeyPress(WPARAM charCode, LPARAM keyData, bool systemKeyDown);
87 bool handleKeyUp(WPARAM virtualKeyCode, LPARAM keyData, bool systemKeyDown);
89 void paint(HDC hDC, const WebCore::IntRect& clipRect);
91 WebCore::Frame* m_frame;
92 WebCore::Page* m_page;
93 HWND m_parentWindowHandle;
95 bool m_enableDoubleBuffer;
96 OwnPtr<HDC> m_doubleBufferDC;
97 OwnPtr<HBITMAP> m_doubleBufferBitmap;