chrome/renderer/resources/extensions/tab_capture_custom_bindings.js uses the legacy (and deprecated) webkitGetUserMedia() API to proxy a chrome.tabCapture extension API call to the renderer. It should use navigator.mediaDevices.getUserMedia() instead (ref: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia).
Also, it seems that the exception/error bindings adapter code is slightly broken: The |error.message| field from gUM() is always set to the empty string, never anything useful. This causes chrome.runtime.lastError.message to always be just an empty string. This should be fixed such that useful error messages are visible from chrome.runtime.lastError result when the getUserMedia() call fails.
Comment 1 by anatolid@chromium.org
, Aug 14 2017