• Alexey Kozyatinskiy's avatar
    [inspector] added Runtime.installBinding method · 49c4ac77
    Alexey Kozyatinskiy authored
    A lot of different clients use console.debug as a message channel from
    page to protocol client. console.debug is a little slow and not
    designed for this use case.
    
    This CL introduces new method: Runtime.installBinding. This method
    installs binding function by given name on global object on each
    inspected context including any context created later.
    Binding function takes exactly one string argument. Each time when
    binding function is called, Runtime.bindingCalled notification is
    triggered and includes passed payload.
    
    Binding function survives page reload and reinstalled right after
    console object is setup. So installed binding can be used inside
    script added by Page.addScriptToEvaluateOnNewDocument so client may do
    something like:
    Runtime.installBinding({name: 'send'});
    Page.addScriptToEvaluateOnNewDocument({source: 'console.debug = send'});
    .. navigate page ..
    
    In microbenchmark this function is ~4.6 times faster then
    console.debug.
    
    R=lushnikov@chromium.org,pfeldman@chromium.org
    
    Bug: none
    Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
    Change-Id: I3e0e231dde9d45116709d248f6e9e7ec7037e8e3
    Reviewed-on: https://chromium-review.googlesource.com/1077662
    Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
    Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#53462}
    49c4ac77
add-binding-expected.txt 1.84 KB