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;