| Index: chrome/renderer/resources/extensions/web_view.js
|
| diff --git a/chrome/renderer/resources/extensions/web_view.js b/chrome/renderer/resources/extensions/web_view.js
|
| index 43c6dc4624b2a5acb8ddedc7a314296176eab96f..f51336d79f6d0164614ad0ed5fb174a04fcb95cc 100644
|
| --- a/chrome/renderer/resources/extensions/web_view.js
|
| +++ b/chrome/renderer/resources/extensions/web_view.js
|
| @@ -126,6 +126,8 @@ function WebView(node) {
|
| enumerable: true
|
| });
|
|
|
| + this.setupExecuteScript_();
|
| +
|
| for (var eventName in WEB_VIEW_EVENTS) {
|
| this.setupEvent_(eventName, WEB_VIEW_EVENTS[eventName]);
|
| }
|
| @@ -171,6 +173,24 @@ WebView.prototype.handleObjectMutation_ = function(mutation) {
|
| }
|
| };
|
|
|
| +WebView.prototype.setupExecuteScript_ = function() {
|
| + var node = this.node_;
|
| + var callbackMap = new Array();
|
| + var self = this;
|
| + node['executeScript'] = function(injectDetails, resultCallback) {
|
| + var result = self.objectNode_.executeScript(injectDetails);
|
| + callbackMap[result] = resultCallback;
|
| + };
|
| + this.objectNode_.addEventListener('-internal-scriptresponse', function(e) {
|
| + var detail = JSON.parse(e.detail);
|
| + if (callbackMap[detail.requestId]) {
|
| + console.log(detail.result);
|
| + callbackMap[detail.requestId].apply(self.node_, detail.result);
|
| + delete callbackMap[detail.requestId];
|
| + }
|
| + });
|
| +};
|
| +
|
| /**
|
| * @private
|
| */
|
|
|