Closed GoogleCodeExporter closed 9 years ago
This patch adds an interface CefV8Task which encapsulates a script to run, its
name and line number along with success and failure handling methods. A method
called ExecuteJavaScriptTask has been added to CefFrame.
Unfortunately retrieving exceptions would require a change to WebCore so the
error method takes no arguments however it is still useful for signalling
errors.
Original comment by tom.rathbone@gmail.com
on 22 Dec 2010 at 3:03
Attachments:
Thank you for developing a patch for this functionality, overall it looks good.
Can you comment on the advantages of returning script, name and start line via
CefV8Task methods instead of passing those arguments separately to
ExecuteJavaScriptTask?
Also, what is the return value from WebFrame::executeScriptAndReturnValue if
the JavaScript method returns no value? (ie, "function foo() { } foo();")
A few style-related nits:
1. Your comment for the HandleError() method in cef.h doesn't look correct.
2. There are unnecessary changes in CefBrowserImpl::GetURL.
3. The line wrapping is incorrect in CefBrowserImpl::UIT_ExecuteJavaScriptTask.
Original comment by magreenb...@gmail.com
on 22 Dec 2010 at 3:30
Combining script info into task..
Advantages: Only one parameter to pass to execute method, information available
to the handler methods, users had to create a task object already for the
handler methods.
Disadvantages: As a minimum must add 3 fields and 3 getters to user's
task/handler object.
I felt the advantages outweighed the disadvantages but I admit the case is very
slight.
You posed a good question regarding the return value for void methods. At
present this returns an empty handle too. *Sigh*, I really should have tested
that. Let me see if there's anything that can be done about that, if not then
we might have to lose the error channel completely.
Original comment by tom.rathbone@gmail.com
on 22 Dec 2010 at 4:32
Related webkit-dev thread:
https://lists.webkit.org/pipermail/webkit-dev/2010-December/015417.html
Original comment by tom.rathbone@gmail.com
on 22 Dec 2010 at 8:41
Attached a second patch. Style points corrected and undefined return values
returned correctly.
This includes a small patch to Webkit. Whilst patching from CEF like this is
undesirable this is a v minor one-liner so hopefully I can get it in the
mainline in a reasonable timeframe.
Thoughts?
Original comment by tom.rathbone@gmail.com
on 23 Dec 2010 at 11:36
Attachments:
Let's wait for the patch to be accepted in WebKit and Chromium and then we'll
add support to CEF.
Original comment by magreenb...@gmail.com
on 23 Dec 2010 at 2:07
Can you post a link to the WebKit bug so that we can track the status?
Original comment by magreenb...@gmail.com
on 3 Jan 2011 at 5:17
https://bugs.webkit.org/show_bug.cgi?id=51528
Have you had much involvement with the WebKit guys? How would you recommend we
get some exposure for this issue? It would be great to have someone review the
change.
Original comment by tom.rathbone@gmail.com
on 6 Jan 2011 at 4:12
Two things:
1. Assign the WebKit bug to Yury Semikhatsky <yurys@chromium.org> because he's
the one who commented on your email thread.
2. Set the commit-queue status on the patch to "commit-queue=?". See
https://trac.webkit.org/wiki/CommitQueue for more details.
Original comment by magreenb...@gmail.com
on 6 Jan 2011 at 4:22
Seems I don't have permission to assign issues but I've set the commit queue
flag as you suggested.
Original comment by tom.rathbone@gmail.com
on 6 Jan 2011 at 4:30
Please follow up on the changes requested to the WebKit bug in order to get the
fix committed.
Original comment by magreenb...@gmail.com
on 24 Jan 2011 at 9:14
I posted an updated patch (created using the webkit-patch tool) to the webkit
ticket.
Original comment by anthony....@gmail.com
on 22 Feb 2011 at 8:08
looks like yury reviewed the patch
Original comment by anthony....@gmail.com
on 25 Feb 2011 at 7:49
webkit patch was merged, webkit ticket was resolved.
Original comment by anthony....@gmail.com
on 1 Mar 2011 at 5:51
The CEF patch will probably need revising as errors cannot be properly
distinguished from functions calling void.
Original comment by tom.rathbone@gmail.com
on 1 Mar 2011 at 6:05
This patch doesn't apply cleanly anymore, I get the following errors and I'm
not immediately sure how to fix it.
3>------ Build started: Project: libcef_static, Configuration: Debug Win32
------
3>Compiling...
3>web_drop_target_win.cc
3>http_header_utils.cc
3>webview_host_win.cc
3>stream_impl.cc
3>cef_process_ui_thread_win.cc
3>dom_event_impl.cc
3>browser_webkit_glue.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>browser_webview_delegate.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>browser_impl_win.cc
3>browser_webview_delegate_win.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>browser_webstoragearea_impl.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>browser_impl.cc
3>request_impl.cc
3>dom_node_impl.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>.\libcef\browser_impl.cc(603) : error C2259: 'CefFrameImpl' : cannot
instantiate abstract class
3> due to following members:
3> 'void CefFrame::ExecuteJavaScriptTask(CefRefPtr<T>)' : is abstract
3> with
3> [
3> T=CefV8Task
3> ]
3> c:\src\chromium\src\cef\include/cef.h(699) : see declaration of
'CefFrame::ExecuteJavaScriptTask'
3>.\libcef\browser_impl.cc(630) : error C2259: 'CefFrameImpl' : cannot
instantiate abstract class
3> due to following members:
3> 'void CefFrame::ExecuteJavaScriptTask(CefRefPtr<T>)' : is abstract
3> with
3> [
3> T=CefV8Task
3> ]
3> c:\src\chromium\src\cef\include/cef.h(699) : see declaration of
'CefFrame::ExecuteJavaScriptTask'
3>browser_resource_loader_bridge.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>xml_reader_impl.cc
3>dom_storage_context.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>cef_context.cc
3>cef_process_io_thread.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>scheme_impl.cc
3>cef_process_ui_thread.cc
3>browser_webstoragenamespace_impl.cc
3>dom_document_impl.cc
3>zip_reader_impl.cc
3>browser_settings.cc
3>browser_devtools_client.cc
3>browser_navigation_controller.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>v8_impl.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>browser_drag_delegate_win.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>response_impl.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>drag_download_file.cc
3>web_urlrequest_impl.cc
3>c:\src\chromium\src\cef\libcef\browser_impl.h(413) : error C2664:
'CefBrowserImpl::ExecuteJavaScriptTask' : cannot convert parameter 2 from
'CefRefPtr<T>' to 'CefRefPtr<T>'
3> with
3> [
3> T=CefThreadSafeBase<CefFrame>::CefV8Task
3> ]
3> and
3> [
3> T=CefThreadSafeBase<CefBrowser>::CefV8Task
3> ]
3> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
3>Build log was saved at
"file://C:\src\chromium\src\cef\Debug\obj\libcef_static\BuildLog.htm"
3>libcef_static - 15 error(s), 0 warning(s)
4>------ Build started: Project: libcef, Configuration: Debug Win32 ------
4>Compiling...
4>post_data_element_cpptoc.cc
4>v8value_cpptoc.cc
4>response_cpptoc.cc
4>request_cpptoc.cc
4>xml_reader_cpptoc.cc
4>stream_writer_cpptoc.cc
4>stream_reader_cpptoc.cc
4>zip_reader_cpptoc.cc
4>frame_cpptoc.cc
4>web_urlrequest_cpptoc.cc
4>c:\src\chromium\src\cef\include/cef.h(324) : error C2504: 'CefV8Task' : base
class undefined
4> c:\src\chromium\src\cef\libcef_dll/ctocpp/ctocpp.h(18) : see
reference to class template instantiation 'CefThreadSafeBase<ClassName>' being
compiled
4> with
4> [
4> ClassName=CefV8Task
4> ]
4> c:\src\chromium\src\cef\libcef_dll/ctocpp/v8task_ctocpp.h(27) : see
reference to class template instantiation
'CefCToCpp<ClassName,BaseName,StructName>' being compiled
4> with
4> [
4> ClassName=CefV8TaskCToCpp,
4> BaseName=CefV8Task,
4> StructName=cef_v8task_t
4> ]
4>c:\src\chromium\src\cef\libcef_dll/ctocpp/v8task_ctocpp.h(29) : error C2512:
'CefCToCpp<ClassName,BaseName,StructName>' : no appropriate default constructor
available
4> with
4> [
4> ClassName=CefV8TaskCToCpp,
4> BaseName=CefV8Task,
4> StructName=cef_v8task_t
4> ]
4>c:\src\chromium\src\cef\libcef_dll/ctocpp/v8task_ctocpp.h(29) : error C2614:
'CefV8TaskCToCpp' : illegal member initialization:
'CefCToCpp<CefV8TaskCToCpp,CefThreadSafeBase<CefV8Task>::CefV8Task,_cef_v8task_t
>' is not a base or member
4>domevent_cpptoc.cc
4>post_data_cpptoc.cc
4>browser_cpptoc.cc
4>domnode_cpptoc.cc
4>v8context_cpptoc.cc
4>domdocument_cpptoc.cc
4>v8handler_ctocpp.cc
4>cookie_visitor_ctocpp.cc
4>write_handler_ctocpp.cc
4>scheme_handler_ctocpp.cc
4>domevent_listener_ctocpp.cc
4>scheme_handler_factory_ctocpp.cc
4>domvisitor_ctocpp.cc
4>handler_ctocpp.cc
4>v8accessor_ctocpp.cc
4>read_handler_ctocpp.cc
4>download_handler_ctocpp.cc
4>web_urlrequest_client_ctocpp.cc
4>task_ctocpp.cc
4>v8task_ctocpp.cc
4>libcef_dll.cc
4>c:\src\chromium\src\cef\include/cef.h(324) : error C2504: 'CefV8Task' : base
class undefined
4> c:\src\chromium\src\cef\libcef_dll/ctocpp/ctocpp.h(18) : see
reference to class template instantiation 'CefThreadSafeBase<ClassName>' being
compiled
4> with
4> [
4> ClassName=CefV8Task
4> ]
4> c:\src\chromium\src\cef\libcef_dll/ctocpp/v8task_ctocpp.h(27) : see
reference to class template instantiation
'CefCToCpp<ClassName,BaseName,StructName>' being compiled
4> with
4> [
4> ClassName=CefV8TaskCToCpp,
4> BaseName=CefV8Task,
4> StructName=cef_v8task_t
4> ]
4>c:\src\chromium\src\cef\libcef_dll/ctocpp/v8task_ctocpp.h(29) : error C2512:
'CefCToCpp<ClassName,BaseName,StructName>' : no appropriate default constructor
available
4> with
4> [
4> ClassName=CefV8TaskCToCpp,
4> BaseName=CefV8Task,
4> StructName=cef_v8task_t
4> ]
4>c:\src\chromium\src\cef\libcef_dll/ctocpp/v8task_ctocpp.h(29) : error C2614:
'CefV8TaskCToCpp' : illegal member initialization:
'CefCToCpp<CefV8TaskCToCpp,CefThreadSafeBase<CefV8Task>::CefV8Task,_cef_v8task_t
>' is not a base or member
4>Build log was saved at
"file://C:\src\chromium\src\cef\Debug\obj\libcef\BuildLog.htm"
4>libcef - 6 error(s), 0 warning(s)
5>------ Build started: Project: libcef_dll_wrapper, Configuration: Debug Win32
------
5>Compiling...
5>v8handler_cpptoc.cc
5>read_handler_cpptoc.cc
5>cookie_visitor_cpptoc.cc
5>handler_cpptoc.cc
5>c:\src\chromium\src\cef\libcef_dll/ctocpp/ctocpp.h(25) : error C2259:
'CefFrameCToCpp' : cannot instantiate abstract class
5> due to following members:
5> 'void CefFrame::ExecuteJavaScriptTask(CefRefPtr<T>)' : is abstract
5> with
5> [
5> T=CefV8Task
5> ]
5> c:\src\chromium\src\cef\include/cef.h(699) : see declaration of
'CefFrame::ExecuteJavaScriptTask'
5> c:\src\chromium\src\cef\libcef_dll/ctocpp/ctocpp.h(23) : while
compiling class template member function 'CefRefPtr<T>
CefCToCpp<ClassName,BaseName,StructName>::Wrap(StructName *)'
5> with
5> [
5> T=CefFrame,
5> ClassName=CefFrameCToCpp,
5> BaseName=CefFrame,
5> StructName=cef_frame_t
5> ]
5> c:\src\chromium\src\cef\libcef_dll/ctocpp/frame_ctocpp.h(27) : see
reference to class template instantiation
'CefCToCpp<ClassName,BaseName,StructName>' being compiled
5> with
5> [
5> ClassName=CefFrameCToCpp,
5> BaseName=CefFrame,
5> StructName=cef_frame_t
5> ]
5>web_urlrequest_client_cpptoc.cc
5>task_cpptoc.cc
5>domvisitor_cpptoc.cc
5>domevent_listener_cpptoc.cc
5>download_handler_cpptoc.cc
5>v8task_cpptoc.cc
5>scheme_handler_factory_cpptoc.cc
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(25) : error C2027: use of undefined type
'CefV8Task'
5> c:\src\chromium\src\cef\include/cef.h(69) : see declaration of
'CefV8Task'
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(25) : error C2039: 'GetScript' : is not
a member of 'CefRefPtr<T>'
5> with
5> [
5> T=CefV8Task
5> ]
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(36) : error C2027: use of undefined type
'CefV8Task'
5> c:\src\chromium\src\cef\include/cef.h(69) : see declaration of
'CefV8Task'
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(36) : error C2039: 'GetScriptName' : is
not a member of 'CefRefPtr<T>'
5> with
5> [
5> T=CefV8Task
5> ]
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(46) : error C2027: use of undefined type
'CefV8Task'
5> c:\src\chromium\src\cef\include/cef.h(69) : see declaration of
'CefV8Task'
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(46) : error C2039: 'GetStartLine' : is
not a member of 'CefRefPtr<T>'
5> with
5> [
5> T=CefV8Task
5> ]
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(56) : error C2027: use of undefined type
'CefV8Task'
5> c:\src\chromium\src\cef\include/cef.h(69) : see declaration of
'CefV8Task'
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(56) : error C2039: 'HandleSuccess' : is
not a member of 'CefRefPtr<T>'
5> with
5> [
5> T=CefV8Task
5> ]
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(65) : error C2027: use of undefined type
'CefV8Task'
5> c:\src\chromium\src\cef\include/cef.h(69) : see declaration of
'CefV8Task'
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(65) : error C2039: 'HandleError' : is
not a member of 'CefRefPtr<T>'
5> with
5> [
5> T=CefV8Task
5> ]
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(73) : error C2512:
'CefCppToC<ClassName,BaseName,StructName>' : no appropriate default constructor
available
5> with
5> [
5> ClassName=CefV8TaskCppToC,
5> BaseName=CefV8Task,
5> StructName=cef_v8task_t
5> ]
5>.\libcef_dll\cpptoc\v8task_cpptoc.cc(73) : error C2614: 'CefV8TaskCppToC' :
illegal member initialization:
'CefCppToC<CefV8TaskCppToC,CefThreadSafeBase<CefBase>::CefV8Task,_cef_v8task_t>'
is not a base or member
5>v8accessor_cpptoc.cc
5>write_handler_cpptoc.cc
5>scheme_handler_cpptoc.cc
5>cef_byte_read_handler.cc
5>cef_zip_archive.cc
5>cef_xml_object.cc
5>libcef_dll_wrapper.cc
5>post_data_element_ctocpp.cc
5>xml_reader_ctocpp.cc
5>v8context_ctocpp.cc
5>request_ctocpp.cc
5>c:\src\chromium\src\cef\libcef_dll/ctocpp/ctocpp.h(25) : error C2259:
'CefFrameCToCpp' : cannot instantiate abstract class
5> due to following members:
5> 'void CefFrame::ExecuteJavaScriptTask(CefRefPtr<T>)' : is abstract
5> with
5> [
5> T=CefV8Task
5> ]
5> c:\src\chromium\src\cef\include/cef.h(699) : see declaration of
'CefFrame::ExecuteJavaScriptTask'
5> c:\src\chromium\src\cef\libcef_dll/ctocpp/ctocpp.h(23) : while
compiling class template member function 'CefRefPtr<T>
CefCToCpp<ClassName,BaseName,StructName>::Wrap(StructName *)'
5> with
5> [
5> T=CefFrame,
5> ClassName=CefFrameCToCpp,
5> BaseName=CefFrame,
5> StructName=cef_frame_t
5> ]
5> c:\src\chromium\src\cef\libcef_dll/ctocpp/frame_ctocpp.h(27) : see
reference to class template instantiation
'CefCToCpp<ClassName,BaseName,StructName>' being compiled
5> with
5> [
5> ClassName=CefFrameCToCpp,
5> BaseName=CefFrame,
5> StructName=cef_frame_t
5> ]
5>domdocument_ctocpp.cc
5>zip_reader_ctocpp.cc
5>frame_ctocpp.cc
5>domnode_ctocpp.cc
5>.\libcef_dll\ctocpp\frame_ctocpp.cc(166) : error C2664:
'CefCppToC<ClassName,BaseName,StructName>::Wrap' : cannot convert parameter 1
from 'CefRefPtr<T>' to 'CefRefPtr<T>'
5> with
5> [
5> ClassName=CefV8TaskCppToC,
5> BaseName=CefV8Task,
5> StructName=cef_v8task_t
5> ]
5> and
5> [
5> T=CefThreadSafeBase<CefFrame>::CefV8Task
5> ]
5> and
5> [
5> T=CefV8Task
5> ]
5> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
5>v8value_ctocpp.cc
5>stream_writer_ctocpp.cc
5>browser_ctocpp.cc
5>response_ctocpp.cc
5>c:\src\chromium\src\cef\libcef_dll/ctocpp/ctocpp.h(25) : error C2259:
'CefFrameCToCpp' : cannot instantiate abstract class
5> due to following members:
5> 'void CefFrame::ExecuteJavaScriptTask(CefRefPtr<T>)' : is abstract
5> with
5> [
5> T=CefV8Task
5> ]
5> c:\src\chromium\src\cef\include/cef.h(699) : see declaration of
'CefFrame::ExecuteJavaScriptTask'
5> c:\src\chromium\src\cef\libcef_dll/ctocpp/ctocpp.h(23) : while
compiling class template member function 'CefRefPtr<T>
CefCToCpp<ClassName,BaseName,StructName>::Wrap(StructName *)'
5> with
5> [
5> T=CefFrame,
5> ClassName=CefFrameCToCpp,
5> BaseName=CefFrame,
5> StructName=cef_frame_t
5> ]
5> c:\src\chromium\src\cef\libcef_dll/ctocpp/frame_ctocpp.h(27) : see
reference to class template instantiation
'CefCToCpp<ClassName,BaseName,StructName>' being compiled
5> with
5> [
5> ClassName=CefFrameCToCpp,
5> BaseName=CefFrame,
5> StructName=cef_frame_t
5> ]
5>domevent_ctocpp.cc
5>post_data_ctocpp.cc
5>stream_reader_ctocpp.cc
5>web_urlrequest_ctocpp.cc
5>Build log was saved at
"file://C:\src\chromium\src\cef\Debug\obj\libcef_dll_wrapper\BuildLog.htm"
5>libcef_dll_wrapper - 16 error(s), 0 warning(s)
Original comment by anthony....@gmail.com
on 22 Apr 2011 at 11:57
looks like the line numbers drifted far enough to put methods in the wrong
classes, i recreated the patch by hand. The patcher project fails so i just
modified ScriptController.cpp by hand for now, not sure why. Here's the failure
output:
1>Reading patch file c:/src/chromium/src/cef/patch/patches/151_jstask_fix.patch
1>WARNING:root:source/target file does not exist
1>--- WebKit/WebCore/bindings/v8/ScriptController.cpp (revision 74182)
1>+++ WebKit/WebCore/bindings/v8/ScriptController.cpp (working copy)
Original comment by anthony....@gmail.com
on 23 Apr 2011 at 12:57
Attachments:
@comment#17: The change to patch/patch_source.cfg should no longer be necessary
since the fix has been committed upstream in WebKit revision 79981. CEF is
currently using WebKit revision 82827.
We will also need test cases for the new functionality added to v8_unittest.cc.
Original comment by magreenb...@gmail.com
on 11 May 2011 at 7:21
Your links don't appear to work for me.
Interesting, the patch applied after my modifications so I'm not sure if it
applied only partially. I didn't look closely enough. It's working on CefSharp.
I will try to write some unit tests when I have a moment, thanks for the heads
up.
Original comment by anthony....@gmail.com
on 12 May 2011 at 6:40
Hi, what the status of this issue?
As, i know it is successfully worked in CefSharp. Latest, ataranto's patch here:
https://github.com/ataranto/CefSharp/blob/master/patches/cef_151_v8task.v6.patch
Original comment by fdd...@gmail.com
on 1 Sep 2011 at 12:45
This should be done using V8 contexts which provides better functionality for
error handling, etc. See issue #344 and the "JavaScript Invoke" example in
cefclient.
Original comment by magreenb...@gmail.com
on 31 Oct 2011 at 6:18
Original issue reported on code.google.com by
magreenb...@gmail.com
on 7 Dec 2010 at 2:24