Skip to content

Commit 0d92b48

Browse files
CzarekCzarek
authored andcommitted
Fixes in public functions called from C++ in regards to
exception handling. Automated the process of compiling C++ projects on Linux, the compile.py script will run "make" commands automatically. Added [DragHandler]. Added the [DragData] object. Added the drag tests to the wxpython.py script.
1 parent bc8f4ca commit 0d92b48

23 files changed

+598
-121
lines changed

cefpython/browser.pyx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,9 @@ cdef class PyBrowser:
176176
"GetScreenPoint", "OnPopupShow", "OnPopupSize",
177177
"OnPaint", "OnCursorChange"]
178178

179+
# DragHandler
180+
self.allowedClientCallbacks += ["OnDragStart", "OnDragEnter"]
181+
179182
if name not in self.allowedClientCallbacks:
180183
raise Exception("Browser.SetClientCallback() failed: unknown "
181184
"callback: %s" % name)

cefpython/cef1/client_handler/client_handler.cpp

Lines changed: 54 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
#include <stdio.h>
77

88
// The const_cast<> were required in Cython <= 0.17.4,
9-
// todo: get rid of it.
9+
// TODO: get rid of it.
1010

11-
//
11+
// -----------------------------------------------------------------------------
1212
// CefLoadHandler
13-
//
13+
// -----------------------------------------------------------------------------
1414

1515
void ClientHandler::OnLoadEnd(
1616
CefRefPtr<CefBrowser> browser,
@@ -39,9 +39,9 @@ bool ClientHandler::OnLoadError(
3939
browser, frame, errorCode, const_cast<CefString&>(failedUrl), errorText);
4040
}
4141

42-
//
42+
// -----------------------------------------------------------------------------
4343
// CefKeyboardHandler
44-
//
44+
// -----------------------------------------------------------------------------
4545

4646
bool ClientHandler::OnKeyEvent(
4747
CefRefPtr<CefBrowser> browser,
@@ -55,9 +55,9 @@ bool ClientHandler::OnKeyEvent(
5555
browser, eventType, keyCode, modifiers, isSystemKey, isAfterJavascript);
5656
}
5757

58-
//
58+
// -----------------------------------------------------------------------------
5959
// CefV8ContextHandler
60-
//
60+
// -----------------------------------------------------------------------------
6161

6262
void ClientHandler::OnContextCreated(
6363
CefRefPtr<CefBrowser> cefBrowser,
@@ -86,9 +86,9 @@ void ClientHandler::OnUncaughtException(
8686
browser, frame, context, exception, stackTrace);
8787
}
8888

89-
//
89+
// -----------------------------------------------------------------------------
9090
// CefRequestHandler
91-
//
91+
// -----------------------------------------------------------------------------
9292

9393
bool ClientHandler::OnBeforeBrowse(
9494
CefRefPtr<CefBrowser> browser,
@@ -177,20 +177,22 @@ CefRefPtr<CefCookieManager> ClientHandler::GetCookieManager(
177177
browser, const_cast<CefString&>(main_url));
178178
}
179179

180-
//
180+
// -----------------------------------------------------------------------------
181181
// CefDisplayHandler
182-
//
182+
// -----------------------------------------------------------------------------
183183

184184
void ClientHandler::OnAddressChange(CefRefPtr<CefBrowser> browser,
185185
CefRefPtr<CefFrame> frame,
186186
const CefString& url) {
187+
REQUIRE_UI_THREAD();
187188
DisplayHandler_OnAddressChange(browser, frame, const_cast<CefString&>(url));
188189
}
189190

190191
bool ClientHandler::OnConsoleMessage(CefRefPtr<CefBrowser> browser,
191192
const CefString& message,
192193
const CefString& source,
193194
int line) {
195+
REQUIRE_UI_THREAD();
194196
return DisplayHandler_OnConsoleMessage(
195197
browser, const_cast<CefString&>(message),
196198
const_cast<CefString&>(source), line);
@@ -200,45 +202,53 @@ void ClientHandler::OnContentsSizeChange(CefRefPtr<CefBrowser> browser,
200202
CefRefPtr<CefFrame> frame,
201203
int width,
202204
int height) {
205+
REQUIRE_UI_THREAD();
203206
DisplayHandler_OnContentsSizeChange(browser, frame, width, height);
204207
}
205208

206209
void ClientHandler::OnNavStateChange(CefRefPtr<CefBrowser> browser,
207210
bool canGoBack,
208211
bool canGoForward) {
212+
REQUIRE_UI_THREAD();
209213
DisplayHandler_OnNavStateChange(browser, canGoBack, canGoForward);
210214
}
211215

212216
void ClientHandler::OnStatusMessage(CefRefPtr<CefBrowser> browser,
213217
const CefString& value,
214218
StatusType type) {
219+
REQUIRE_UI_THREAD();
215220
DisplayHandler_OnStatusMessage(browser, const_cast<CefString&>(value), type);
216221
}
217222

218223

219224
void ClientHandler::OnTitleChange(CefRefPtr<CefBrowser> browser,
220225
const CefString& title) {
226+
REQUIRE_UI_THREAD();
221227
DisplayHandler_OnTitleChange(browser, const_cast<CefString&>(title));
222228
}
223229

224230
bool ClientHandler::OnTooltip(CefRefPtr<CefBrowser> browser,
225231
CefString& text) {
232+
REQUIRE_UI_THREAD();
226233
return DisplayHandler_OnTooltip(browser, text);
227234
}
228235

229-
//
236+
// -----------------------------------------------------------------------------
230237
// CefLifeSpanHandler
231-
//
238+
// -----------------------------------------------------------------------------
232239

233240
bool ClientHandler::DoClose(CefRefPtr<CefBrowser> browser) {
241+
REQUIRE_UI_THREAD();
234242
return LifespanHandler_DoClose(browser);
235243
}
236244

237245
void ClientHandler::OnAfterCreated(CefRefPtr<CefBrowser> browser) {
246+
REQUIRE_UI_THREAD();
238247
LifespanHandler_OnAfterCreated(browser);
239248
}
240249

241250
void ClientHandler::OnBeforeClose(CefRefPtr<CefBrowser> browser) {
251+
REQUIRE_UI_THREAD();
242252
LifespanHandler_OnBeforeClose(browser);
243253
}
244254

@@ -248,27 +258,31 @@ bool ClientHandler::OnBeforePopup(CefRefPtr<CefBrowser> parentBrowser,
248258
const CefString& url,
249259
CefRefPtr<CefClient>& client,
250260
CefBrowserSettings& settings) {
261+
REQUIRE_UI_THREAD();
251262
// @TODO
252263
return false;
253264
}
254265

255266
bool ClientHandler::RunModal(CefRefPtr<CefBrowser> browser) {
267+
REQUIRE_UI_THREAD();
256268
return LifespanHandler_RunModal(browser);
257269
}
258270

259-
//
271+
// -----------------------------------------------------------------------------
260272
// CefRenderHandler
261-
//
273+
// -----------------------------------------------------------------------------
262274

263275
#if defined(OS_WIN)
264276

265277
bool ClientHandler::GetViewRect(CefRefPtr<CefBrowser> browser,
266278
CefRect& rect) {
279+
REQUIRE_UI_THREAD();
267280
return RenderHandler_GetViewRect(browser, rect);
268281
}
269282

270283
bool ClientHandler::GetScreenRect(CefRefPtr<CefBrowser> browser,
271284
CefRect& rect) {
285+
REQUIRE_UI_THREAD();
272286
return RenderHandler_GetScreenRect(browser, rect);
273287
}
274288

@@ -277,33 +291,56 @@ bool ClientHandler::GetScreenPoint(CefRefPtr<CefBrowser> browser,
277291
int viewY,
278292
int& screenX,
279293
int& screenY) {
294+
REQUIRE_UI_THREAD();
280295
return RenderHandler_GetScreenPoint(
281296
browser, viewX, viewY, screenX, screenY);
282297
}
283298

284299
void ClientHandler::OnPopupShow(CefRefPtr<CefBrowser> browser,
285300
bool show) {
301+
REQUIRE_UI_THREAD();
286302
RenderHandler_OnPopupShow(browser, show);
287303
}
288304

289305
void ClientHandler::OnPopupSize(CefRefPtr<CefBrowser> browser,
290306
const CefRect& rect) {
307+
REQUIRE_UI_THREAD();
291308
RenderHandler_OnPopupSize(browser, const_cast<CefRect&>(rect));
292309
}
293310

294311
void ClientHandler::OnPaint(CefRefPtr<CefBrowser> browser,
295312
PaintElementType type,
296313
const RectList& dirtyRects,
297314
const void* buffer) {
315+
REQUIRE_UI_THREAD();
298316
RenderHandler_OnPaint(browser, type,
299317
const_cast<RectList&>(dirtyRects),
300318
const_cast<void*>(buffer));
301319
}
302320

303321
void ClientHandler::OnCursorChange(CefRefPtr<CefBrowser> browser,
304322
CefCursorHandle cursor) {
323+
REQUIRE_UI_THREAD();
305324
RenderHandler_OnCursorChange(browser, cursor);
306325
}
307326

308-
// OS_WIN / CefRenderHandler
309-
#endif
327+
// #if defined(OS_WIN) - CefRenderHandler
328+
#endif
329+
330+
// -----------------------------------------------------------------------------
331+
// CefDragHandler
332+
// -----------------------------------------------------------------------------
333+
334+
bool ClientHandler::OnDragStart(CefRefPtr<CefBrowser> browser,
335+
CefRefPtr<CefDragData> dragData,
336+
DragOperationsMask mask) {
337+
REQUIRE_UI_THREAD();
338+
return DragHandler_OnDragStart(browser, dragData, mask);
339+
}
340+
341+
bool ClientHandler::OnDragEnter(CefRefPtr<CefBrowser> browser,
342+
CefRefPtr<CefDragData> dragData,
343+
DragOperationsMask mask) {
344+
REQUIRE_UI_THREAD();
345+
return DragHandler_OnDragEnter(browser, dragData, mask);
346+
}

cefpython/cef1/client_handler/client_handler.h

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,24 @@ class ClientHandler : public CefClient,
1313
public CefRequestHandler,
1414
public CefDisplayHandler,
1515
public CefLifeSpanHandler,
16-
public CefRenderHandler
16+
public CefRenderHandler,
17+
public CefDragHandler
1718
/*
1819
public CefFocusHandler,
20+
public CefMenuHandler,
1921
public CefPrintHandler,
20-
public CefDragHandler,
2122
public CefPermissionHandler,
22-
public DownloadListener{
23+
public CefFindHandler,
24+
public CefJSDialogHandler,
2325
*/
2426
{
2527
public:
2628
ClientHandler(){}
2729
virtual ~ClientHandler(){}
2830

29-
// Implemented handlers:
31+
// ---------------------------------------------------------------------------
32+
// Handlers that are already implemented
33+
// ---------------------------------------------------------------------------
3034

3135
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() OVERRIDE
3236
{ return this; }
@@ -49,7 +53,12 @@ class ClientHandler : public CefClient,
4953
virtual CefRefPtr<CefRenderHandler> GetRenderHandler() OVERRIDE
5054
{ return this; }
5155

52-
// NOT implemented handlers:
56+
virtual CefRefPtr<CefDragHandler> GetDragHandler() OVERRIDE
57+
{ return this; }
58+
59+
// ---------------------------------------------------------------------------
60+
// NOT yet implemented handlers
61+
// ---------------------------------------------------------------------------
5362

5463
virtual CefRefPtr<CefFocusHandler> GetFocusHandler() OVERRIDE
5564
{ return NULL; }
@@ -69,12 +78,9 @@ class ClientHandler : public CefClient,
6978
virtual CefRefPtr<CefJSDialogHandler> GetJSDialogHandler() OVERRIDE
7079
{ return NULL; }
7180

72-
virtual CefRefPtr<CefDragHandler> GetDragHandler() OVERRIDE
73-
{ return NULL; }
74-
75-
//
81+
// ---------------------------------------------------------------------------
7682
// CefLoadHandler methods.
77-
//
83+
// ---------------------------------------------------------------------------
7884

7985
virtual void OnLoadEnd(
8086
CefRefPtr<CefBrowser> browser,
@@ -96,9 +102,9 @@ class ClientHandler : public CefClient,
96102
CefString& errorText
97103
) OVERRIDE;
98104

99-
//
105+
// ---------------------------------------------------------------------------
100106
// CefKeyboardHandler methods.
101-
//
107+
// ---------------------------------------------------------------------------
102108

103109
virtual bool OnKeyEvent(
104110
CefRefPtr<CefBrowser> browser,
@@ -109,9 +115,9 @@ class ClientHandler : public CefClient,
109115
bool isAfterJavascript
110116
) OVERRIDE;
111117

112-
//
118+
// ---------------------------------------------------------------------------
113119
// CefV8ContextHandler methods.
114-
//
120+
// ---------------------------------------------------------------------------
115121

116122
virtual void OnContextCreated(
117123
CefRefPtr<CefBrowser> cefBrowser,
@@ -130,9 +136,9 @@ class ClientHandler : public CefClient,
130136
CefRefPtr<CefV8Exception> exception,
131137
CefRefPtr<CefV8StackTrace> stackTrace) OVERRIDE;
132138

133-
//
139+
// ---------------------------------------------------------------------------
134140
// CefRequestHandler methods.
135-
//
141+
// ---------------------------------------------------------------------------
136142

137143
virtual bool OnBeforeBrowse(
138144
CefRefPtr<CefBrowser> browser,
@@ -186,9 +192,9 @@ class ClientHandler : public CefClient,
186192
CefRefPtr<CefBrowser> browser,
187193
const CefString& main_url) OVERRIDE;
188194

189-
//
195+
// ---------------------------------------------------------------------------
190196
// CefDisplayHandler
191-
//
197+
// ---------------------------------------------------------------------------
192198

193199
virtual void OnAddressChange(CefRefPtr<CefBrowser> browser,
194200
CefRefPtr<CefFrame> frame,
@@ -218,9 +224,9 @@ class ClientHandler : public CefClient,
218224
virtual bool OnTooltip(CefRefPtr<CefBrowser> browser,
219225
CefString& text) OVERRIDE;
220226

221-
//
227+
// ---------------------------------------------------------------------------
222228
// CefLifeSpanHandler
223-
//
229+
// ---------------------------------------------------------------------------
224230

225231
virtual bool DoClose(CefRefPtr<CefBrowser> browser) OVERRIDE;
226232

@@ -237,9 +243,9 @@ class ClientHandler : public CefClient,
237243

238244
virtual bool RunModal(CefRefPtr<CefBrowser> browser) OVERRIDE;
239245

240-
//
246+
// ---------------------------------------------------------------------------
241247
// CefRenderHandler
242-
//
248+
// ---------------------------------------------------------------------------
243249

244250
#if defined(OS_WIN)
245251

@@ -269,7 +275,19 @@ class ClientHandler : public CefClient,
269275
virtual void OnCursorChange(CefRefPtr<CefBrowser> browser,
270276
CefCursorHandle cursor) OVERRIDE;
271277

272-
#endif
278+
#endif
279+
280+
// ---------------------------------------------------------------------------
281+
// CefDragHandler
282+
// ---------------------------------------------------------------------------
283+
284+
virtual bool OnDragStart(CefRefPtr<CefBrowser> browser,
285+
CefRefPtr<CefDragData> dragData,
286+
DragOperationsMask mask) OVERRIDE;
287+
288+
virtual bool OnDragEnter(CefRefPtr<CefBrowser> browser,
289+
CefRefPtr<CefDragData> dragData,
290+
DragOperationsMask mask) OVERRIDE;
273291

274292
protected:
275293

0 commit comments

Comments
 (0)