Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
99 lines (87 loc) · 4.04 KB

File metadata and controls

99 lines (87 loc) · 4.04 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
# Copyright (c) 2012-2014 The CEF Python authors. All rights reserved.
# License: New BSD License.
# Website: http://code.google.com/p/cefpython/
# ------------------------------------------------------------------------------
# Globals
# ------------------------------------------------------------------------------
cdef object g_userDownloadHandlers = weakref.WeakValueDictionary()
cdef int g_userDownloadHandlerMaxId = 0
# ------------------------------------------------------------------------------
# PyDownloadHandler
# ------------------------------------------------------------------------------
cdef CefRefPtr[CefDownloadHandler] StoreUserDownloadHandler(
object userDownloadHandler) except *:
ValidateUserDownloadHandler(userDownloadHandler)
global g_userDownloadHandlerMaxId
global g_userDownloadHandlers
g_userDownloadHandlerMaxId += 1
g_userDownloadHandlers[g_userDownloadHandlerMaxId] = userDownloadHandler
cdef CefRefPtr[CefDownloadHandler] downloadHandler = (
<CefRefPtr[CefDownloadHandler]?>new DownloadHandler(
g_userDownloadHandlerMaxId))
return downloadHandler
cdef object GetPyDownloadHandler(int downloadHandlerId):
global g_userDownloadHandlers
cdef object userDownloadHandler
cdef PyDownloadHandler pyDownloadHandler
if downloadHandlerId in g_userDownloadHandlers:
userDownloadHandler = g_userDownloadHandlers[downloadHandlerId]
pyDownloadHandler = PyDownloadHandler(userDownloadHandler)
return pyDownloadHandler
cdef void ValidateUserDownloadHandler(object handler) except *:
assert handler, "DownloadHandler is empty"
has_OnData = hasattr(handler, "OnData") and (
callable(getattr(handler, "OnData")))
has_OnComplete = hasattr(handler, "OnComplete") and (
callable(getattr(handler, "OnComplete")))
assert has_OnData, "DownloadHandler is missing OnData() method"
assert has_OnComplete, "DownloadHandler is missing OnComplete() method"
cdef class PyDownloadHandler:
cdef object userDownloadHandler
def __init__(self, object userDownloadHandler):
assert not isinstance(userDownloadHandler, int), (
"DownloadHandler is not a valid object")
self.userDownloadHandler = userDownloadHandler
cdef object GetCallback(self, str funcName):
if self.userDownloadHandler and (
hasattr(self.userDownloadHandler, funcName) and (
callable(getattr(self.userDownloadHandler, funcName)))):
return getattr(self.userDownloadHandler, funcName)
# ------------------------------------------------------------------------------
# C++ DownloadHandler
# ------------------------------------------------------------------------------
cdef public cpp_bool DownloadHandler_ReceivedData(
int downloadHandlerId,
void* data,
int data_size
) except * with gil:
cdef PyDownloadHandler pyDownloadHandler
cdef object callback
cdef py_bool ret
try:
assert IsThread(TID_UI), "Must be called on the UI thread"
pyDownloadHandler = GetPyDownloadHandler(downloadHandlerId)
if pyDownloadHandler:
callback = pyDownloadHandler.GetCallback("OnData")
if callback:
ret = callback(VoidPtrToString(data, data_size))
return bool(ret)
return False
except:
(exc_type, exc_value, exc_trace) = sys.exc_info()
sys.excepthook(exc_type, exc_value, exc_trace)
cdef public void DownloadHandler_Complete(
int downloadHandlerId
) except * with gil:
cdef PyDownloadHandler pyDownloadHandler
cdef object callback
try:
assert IsThread(TID_UI), "Must be called on the UI thread"
pyDownloadHandler = GetPyDownloadHandler(downloadHandlerId)
if pyDownloadHandler:
callback = pyDownloadHandler.GetCallback("OnComplete")
if callback:
callback()
except:
(exc_type, exc_value, exc_trace) = sys.exc_info()
sys.excepthook(exc_type, exc_value, exc_trace)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.