开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (13)
标签 (29)
master
dev
cefpython66
cefpython49-winxp
cefpython58
cefpython57
cefpython56
cefpython55
cefpython54
cefpython53
cefpython52
cefpython51
cefpython31
v66.1
v49.0
v49-upstream
v66.0
v66-upstream
v57.1
v58.0-win32
v57.0
v57-upstream
v56.2
v56.1
v56.0-win
v56-upstream
v56.0
v55.4
v55.3
v55.2
v54.1
v55-upstream
v55.1
master
分支 (13)
标签 (29)
master
dev
cefpython66
cefpython49-winxp
cefpython58
cefpython57
cefpython56
cefpython55
cefpython54
cefpython53
cefpython52
cefpython51
cefpython31
v66.1
v49.0
v49-upstream
v66.0
v66-upstream
v57.1
v58.0-win32
v57.0
v57-upstream
v56.2
v56.1
v56.0-win
v56-upstream
v56.0
v55.4
v55.3
v55.2
v54.1
v55-upstream
v55.1
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (13)
标签 (29)
master
dev
cefpython66
cefpython49-winxp
cefpython58
cefpython57
cefpython56
cefpython55
cefpython54
cefpython53
cefpython52
cefpython51
cefpython31
v66.1
v49.0
v49-upstream
v66.0
v66-upstream
v57.1
v58.0-win32
v57.0
v57-upstream
v56.2
v56.1
v56.0-win
v56-upstream
v56.0
v55.4
v55.3
v55.2
v54.1
v55-upstream
v55.1
cefpython
/
src
/
javascript_bindings.pyx
cefpython
/
src
/
javascript_bindings.pyx
javascript_bindings.pyx 6.00 KB
一键复制 编辑 原始数据 按行查看 历史
Bryan Koroleski 提交于 2021年02月15日 00:09 +08:00 . Update int range detection for Python 3 (#603)
# Copyright (c) 2012 CEF Python, see the Authors file.
# All rights reserved. Licensed under BSD 3-clause license.
# Project website: https://github.com/cztomczak/cefpython
include "cefpython.pyx"
cdef class JavascriptBindings:
# By default binding only to top frame.
cdef public py_bool bindToFrames
cdef public py_bool bindToPopups
cdef public dict functions
cdef public dict properties
cdef public dict objects
def __init__(self, bindToFrames=False, bindToPopups=False):
self.functions = {}
self.properties = {}
self.objects = {}
self.bindToFrames = bool(bindToFrames)
self.bindToPopups = bool(bindToPopups)
cpdef py_bool GetBindToFrames(self):
return bool(self.bindToFrames)
cpdef py_bool GetBindToPopups(self):
return bool(self.bindToPopups)
cpdef py_void SetFunction(self, py_string name, object func):
self.SetProperty(name, func)
cpdef py_void SetObject(self, py_string name, object obj):
if not hasattr(obj, "__class__"):
raise Exception("JavascriptBindings.SetObject() failed: name=%s, "
"__class__ attribute missing, this is not an object" % name)
cdef dict methods = {}
cdef py_string key
cdef object method
cdef object predicate = inspect.ismethod
if isinstance(obj, (PyBrowser, PyFrame)):
predicate = inspect.isbuiltin
for value in inspect.getmembers(obj, predicate=predicate):
key = value[0]
method = value[1]
methods[key] = method
self.objects[name] = methods
cpdef object GetFunction(self, py_string name):
if name in self.functions:
return self.functions[name]
cpdef dict GetFunctions(self):
return self.functions
cpdef dict GetObjects(self):
return self.objects
cpdef object GetObjectMethod(self, py_string objectName, py_string methodName):
if objectName in self.objects:
if methodName in self.objects[objectName]:
return self.objects[objectName][methodName]
cpdef object GetFunctionOrMethod(self, py_string name):
# Name can be "someFunc" or "object.someMethod".
cdef list words
if "." in name:
words = name.split(".")
return self.GetObjectMethod(words[0], words[1])
else:
return self.GetFunction(name)
cpdef py_void SetProperty(self, py_string name, object value):
cdef object allowed = self.IsValueAllowedRecursively(value) # returns True or string.
if allowed is not True:
raise Exception("JavascriptBindings.SetProperty() failed: name=%s, "
"not allowed type: %s (this may be a type of a nested value)"
% (name, allowed))
cdef object valueType = type(value)
if IsFunctionOrMethod(valueType):
self.functions[name] = value
else:
self.properties[name] = value
cpdef py_void Rebind(self):
# Rebind() is called for both first-time binding and rebinding.
cdef PyBrowser pyBrowser
cdef dict functions
cdef dict properties
cdef dict objects
cdef dict methods
for browserId, pyBrowser in g_pyBrowsers.iteritems():
if pyBrowser.GetJavascriptBindings() != self:
continue
# Send to the Renderer process: functions, properties,
# objects and its methods, bindToFrames.
functions = {}
for funcName in self.functions:
functions[funcName] = None
properties = self.properties
objects = {}
for objectName in self.objects:
methods = {}
for methodName in self.objects[objectName]:
methods[methodName] = None
objects[objectName] = methods
pyBrowser.SendProcessMessage(cef_types.PID_RENDERER,
0, "DoJavascriptBindings", [{
"functions": functions,
"properties": properties,
"objects": objects,
"bindToFrames": self.bindToFrames
}])
cpdef dict GetProperties(self):
return self.properties
@staticmethod
def IsValueAllowed(object value):
return JavascriptBindings.IsValueAllowedRecursively(value) is True
@staticmethod
def IsValueAllowedRecursively(object value, py_bool recursion=False):
# When making changes here modify also Frame.SetProperty() as it
# checks for FunctionType, MethodType.
cdef object valueType = type(value)
cdef object valueType2
cdef object key
if valueType == list:
for val in value:
valueType2 = JavascriptBindings.IsValueAllowedRecursively(val, True)
if valueType2 is not True:
return valueType2.__name__
return True
elif valueType == bool:
return True
elif valueType == float:
return True
elif valueType == int:
return True
elif valueType == long:
return True
elif valueType == type(None):
return True
elif IsFunctionOrMethod(valueType):
if recursion:
return valueType.__name__
else:
return True
elif valueType == dict:
for key in value:
valueType2 = JavascriptBindings.IsValueAllowedRecursively(value[key], True)
if valueType2 is not True:
return valueType2.__name__
return True
elif valueType == str or valueType == bytes:
return True
elif PY_MAJOR_VERSION < 3 and valueType == unicode:
# The unicode type is not defined in Python 3.
return True
elif valueType == tuple:
return True
else:
return valueType.__name__
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

ddsdsd
暂无标签
未知许可证
查看未知开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/aoplxml/cefpython.git
git@gitee.com:aoplxml/cefpython.git
aoplxml
cefpython
cefpython
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /