@@ -231,7 +231,17 @@ cdef class PyBrowser:
231231 if self .imageBuffer:
232232 free(self .imageBuffer)
233233
234- cpdef py_void SetClientCallback(self , py_string name, object callback):
234+ cpdef py_void SetClientCallback(self , object cname, object callback):
235+ cdef bytes name_bytes
236+ cdef str name_str
237+
238+ if isinstance (cname, bytes):
239+ name_bytes = cname
240+ name_str = name_bytes.decode(" utf-8" , " replace" )
241+ else :
242+ name_str = str (cname)
243+ name_bytes = name_str.encode(" utf-8" , " replace" )
244+
235245 if not self .allowedClientCallbacks:
236246 # DisplayHandler
237247 self .allowedClientCallbacks += [
@@ -287,10 +297,10 @@ cdef class PyBrowser:
287297 " OnBeforeDownload" ,
288298 " OnDownloadUpdated" ]
289299
290- if name not in self .allowedClientCallbacks:
300+ if name_str not in self .allowedClientCallbacks:
291301 raise Exception (" Browser.SetClientCallback() failed: unknown "
292- " callback: %s " % name )
293- self .clientCallbacks[name ] = callback
302+ " callback: %s " % name_str )
303+ self .clientCallbacks[name_bytes ] = callback
294304
295305 cpdef py_void SetClientHandler(self , object clientHandler):
296306 if not hasattr (clientHandler, " __class__" ):
@@ -307,7 +317,13 @@ cdef class PyBrowser:
307317 if key and key[0 ] != ' _' :
308318 self .SetClientCallback(key, method)
309319
310- cpdef object GetClientCallback(self , py_string name):
320+ cpdef object GetClientCallback(self , object cname):
321+ cdef bytes name
322+ if isinstance (cname, bytes):
323+ name = cname
324+ else :
325+ name = str (cname).encode(" utf-8" , " replace" )
326+
311327 if name in self .clientCallbacks:
312328 return self .clientCallbacks[name]
313329
@@ -353,8 +369,15 @@ cdef class PyBrowser:
353369 NonCriticalError(" GetImage not implemented on this platform" )
354370 return None
355371
356- cpdef object GetSetting(self , py_string key ):
372+ cpdef object GetSetting(self , object okey ):
357373 cdef int browser_id = self .GetIdentifier()
374+
375+ cdef bytes key
376+ if isinstance (okey, bytes):
377+ key = okey
378+ else :
379+ key = str (okey).encode(" utf-8" , " replace" )
380+
358381 if browser_id in g_browser_settings:
359382 if key in g_browser_settings[browser_id]:
360383 return g_browser_settings[browser_id][key]
@@ -421,7 +444,7 @@ cdef class PyBrowser:
421444 self .GetMainFrame().ExecuteFunction(* args)
422445
423446 cpdef py_void ExecuteJavascript(self , py_string jsCode,
424- py_string scriptUrl = " " , int startLine = 1 ):
447+ py_string scriptUrl = str ( None ) , int startLine = 1 ):
425448 self .GetMainFrame().ExecuteJavascript(jsCode, scriptUrl, startLine)
426449
427450 cpdef py_void Find(self , py_string searchText,
0 commit comments