| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * This class provides a "bridge" for communicating between the javascript and | 6 * This class provides a "bridge" for communicating between the javascript and |
| 7 * the browser. | 7 * the browser. |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 var BrowserBridge = (function() { | 10 var BrowserBridge = (function() { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 this.sendGetPrerenderInfo.bind(this)); | 59 this.sendGetPrerenderInfo.bind(this)); |
| 60 | 60 |
| 61 // NetLog entries are all sent to the |SourceTracker|, which both tracks | 61 // NetLog entries are all sent to the |SourceTracker|, which both tracks |
| 62 // them and manages its own observer list. | 62 // them and manages its own observer list. |
| 63 this.sourceTracker = new SourceTracker(); | 63 this.sourceTracker = new SourceTracker(); |
| 64 | 64 |
| 65 // Setting this to true will cause messages from the browser to be ignored, | 65 // Setting this to true will cause messages from the browser to be ignored, |
| 66 // and no messages will be sent to the browser, either. Intended for use | 66 // and no messages will be sent to the browser, either. Intended for use |
| 67 // when viewing log files. | 67 // when viewing log files. |
| 68 this.disabled_ = false; | 68 this.disabled_ = false; |
| 69 |
| 70 // Interval id returned by window.setInterval for polling timer. |
| 71 this.pollIntervalId_ = null; |
| 69 } | 72 } |
| 70 | 73 |
| 71 cr.addSingletonGetter(BrowserBridge); | 74 cr.addSingletonGetter(BrowserBridge); |
| 72 | 75 |
| 73 BrowserBridge.prototype = { | 76 BrowserBridge.prototype = { |
| 74 | 77 |
| 75 //-------------------------------------------------------------------------- | 78 //-------------------------------------------------------------------------- |
| 76 // Messages sent to the browser | 79 // Messages sent to the browser |
| 77 //-------------------------------------------------------------------------- | 80 //-------------------------------------------------------------------------- |
| 78 | 81 |
| 79 /** | 82 /** |
| 80 * Wraps |chrome.send|. Doesn't send anything when disabled. | 83 * Wraps |chrome.send|. Doesn't send anything when disabled. |
| 81 */ | 84 */ |
| 82 send: function(value1, value2) { | 85 send: function(value1, value2) { |
| 83 if (!this.disabled_) { | 86 if (!this.disabled_) { |
| 84 if (arguments.length == 1) { | 87 if (arguments.length == 1) { |
| 85 chrome.send(value1); | 88 chrome.send(value1); |
| 86 } else if (arguments.length == 2) { | 89 } else if (arguments.length == 2) { |
| 87 chrome.send(value1, value2); | 90 chrome.send(value1, value2); |
| 88 } else { | 91 } else { |
| 89 throw 'Unsupported number of arguments.'; | 92 throw 'Unsupported number of arguments.'; |
| 90 } | 93 } |
| 91 } | 94 } |
| 92 }, | 95 }, |
| 93 | 96 |
| 94 sendReady: function() { | 97 sendReady: function() { |
| 95 this.send('notifyReady'); | 98 this.send('notifyReady'); |
| 99 this.setPollInterval(POLL_INTERVAL_MS); |
| 100 }, |
| 96 | 101 |
| 97 // Some of the data we are interested is not currently exposed as a | 102 /** |
| 98 // stream, so we will poll the browser to find out when it changes and | 103 * Some of the data we are interested is not currently exposed as a |
| 99 // then notify the observers. | 104 * stream. This starts polling those with active observers (visible |
| 100 window.setInterval(this.checkForUpdatedInfo.bind(this, false), | 105 * views) every |intervalMs|. Subsequent calls override previous calls |
| 101 POLL_INTERVAL_MS); | 106 * to this function. If |intervalMs| is 0, stops polling. Function only |
| 107 * exposed for unit testing. |
| 108 */ |
| 109 setPollInterval: function(intervalMs) { |
| 110 if (this.pollIntervalId_ !== null) { |
| 111 window.clearInterval(this.pollIntervalId_); |
| 112 this.pollIntervalId_ = null; |
| 113 } |
| 114 |
| 115 if (intervalMs > 0) { |
| 116 this.pollIntervalId_ = |
| 117 window.setInterval(this.checkForUpdatedInfo.bind(this, false), |
| 118 intervalMs); |
| 119 } |
| 102 }, | 120 }, |
| 103 | 121 |
| 104 sendGetProxySettings: function() { | 122 sendGetProxySettings: function() { |
| 105 // The browser will call receivedProxySettings on completion. | 123 // The browser will call receivedProxySettings on completion. |
| 106 this.send('getProxySettings'); | 124 this.send('getProxySettings'); |
| 107 }, | 125 }, |
| 108 | 126 |
| 109 sendReloadProxySettings: function() { | 127 sendReloadProxySettings: function() { |
| 110 this.send('reloadProxySettings'); | 128 this.send('reloadProxySettings'); |
| 111 }, | 129 }, |
| (...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 623 helper.removeObserver(this); | 641 helper.removeObserver(this); |
| 624 --this.observingCount_; | 642 --this.observingCount_; |
| 625 this.updatedData_[name] = data; | 643 this.updatedData_[name] = data; |
| 626 if (this.observingCount_ == 0) | 644 if (this.observingCount_ == 0) |
| 627 this.callback_(this.updatedData_); | 645 this.callback_(this.updatedData_); |
| 628 } | 646 } |
| 629 }; | 647 }; |
| 630 | 648 |
| 631 return BrowserBridge; | 649 return BrowserBridge; |
| 632 })(); | 650 })(); |
| OLD | NEW |