forked from mobileFX/WebKitX
-
Notifications
You must be signed in to change notification settings - Fork 1
/
WebKitHandler.cpp
112 lines (99 loc) · 3.91 KB
/
WebKitHandler.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "StdAfx.h"
#include "WebKitHandler.h"
#include "WebKitXCtrl.h"
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
WebKitHandler::WebKitHandler(CWebKitXCtrl* control)
{
this->control = control;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
WebKitHandler::~WebKitHandler(void)
{
this->control = NULL;
debugPrint("WebKitHandler terminated.\n");
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void WebKitHandler::OnAfterCreated(CefRefPtr<CefBrowser> browser)
{
REQUIRE_UI_THREAD();
AutoLock lock_scope(this);
if (!control->m_Browser.get())
{
debugPrint("Browser Created.\n");
control->m_Browser = browser;
control->m_BrowserHwnd = WINDOW_HANDLE(browser);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void WebKitHandler::OnBeforeClose(CefRefPtr<CefBrowser> browser)
{
REQUIRE_UI_THREAD();
if(control->m_BrowserHwnd == WINDOW_HANDLE(browser))
{
control->DestroyCEFBrowser();
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void WebKitHandler::OnLoadStart(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame)
{
REQUIRE_UI_THREAD();
if(control->m_BrowserHwnd == WINDOW_HANDLE(browser))
{
control->LoadingHTML = true;
std::string s(frame->GetURL());
debugPrint("Loading %s ...\n", s.c_str());
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void WebKitHandler::OnLoadEnd(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, int httpStatusCode)
{
REQUIRE_UI_THREAD();
if(control->m_BrowserHwnd == WINDOW_HANDLE(browser))
{
std::string s(frame->GetURL());
debugPrint("Loaded %s.\n", s.c_str());
if(s!="about:blank")
{
control->FireOnReady();
}
else
{
control->FireOnCreate();
}
control->LoadingHTML = false;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool WebKitHandler::OnLoadError(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, ErrorCode errorCode, const CefString& failedUrl, CefString& errorText)
{
REQUIRE_UI_THREAD();
if(control->m_BrowserHwnd == WINDOW_HANDLE(browser))
{
}
return false;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool WebKitHandler::OnKeyEvent(CefRefPtr<CefBrowser> browser, KeyEventType type, int code, int modifiers, bool isSystemKey, bool isAfterJavaScript)
{
REQUIRE_UI_THREAD();
if(type==KEYEVENT_RAWKEYDOWN)
{
// Modified!
control->SetModifiedFlag(TRUE);
}
return false;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void WebKitHandler::OnContextCreated(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefV8Context> context)
{
control->v8context = context;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void WebKitHandler::OnContextReleased(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefV8Context> context)
{
control->v8context = NULL;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void WebKitHandler::OnUncaughtException(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefV8Context> context, CefRefPtr<CefV8Exception> exception, CefRefPtr<CefV8StackTrace> stackTrace)
{
}