Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 * Dictionary of constants (initialized by browser). | 6 * Dictionary of constants (initialized by browser). |
| 7 */ | 7 */ |
| 8 var LogEventType = null; | 8 var LogEventType = null; |
| 9 var LogEventPhase = null; | 9 var LogEventPhase = null; |
| 10 var ClientInfo = null; | 10 var ClientInfo = null; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 80 'dataViewDumpDataDiv', 'dataViewLoadDataDiv', | 80 'dataViewDumpDataDiv', 'dataViewLoadDataDiv', |
| 81 'dataViewLoadLogFile', | 81 'dataViewLoadLogFile', |
| 82 'dataViewCapturingTextSpan', | 82 'dataViewCapturingTextSpan', |
| 83 'dataViewLoggingTextSpan'); | 83 'dataViewLoggingTextSpan'); |
| 84 | 84 |
| 85 // Create a view which will display the results and controls for connection | 85 // Create a view which will display the results and controls for connection |
| 86 // tests. | 86 // tests. |
| 87 var testView = new TestView('testTabContent', 'testUrlInput', | 87 var testView = new TestView('testTabContent', 'testUrlInput', |
| 88 'connectionTestsForm', 'testSummary'); | 88 'connectionTestsForm', 'testSummary'); |
| 89 | 89 |
| 90 // Create a view which allows the user to query and alter the HSTS database. | |
| 91 var hstsView = new HSTSView('hstsTabContent', | |
| 92 'hstsQueryInput', 'hstsQueryForm', | |
| 93 'hstsQueryOutput', | |
| 94 'hstsAddInput', 'hstsAddForm', 'hstsCheckInput', | |
| 95 'hstsDeleteInput', 'hstsDeleteForm'); | |
| 96 | |
| 90 var httpCacheView = new HttpCacheView('httpCacheTabContent', | 97 var httpCacheView = new HttpCacheView('httpCacheTabContent', |
| 91 'httpCacheStats'); | 98 'httpCacheStats'); |
| 92 | 99 |
| 93 var socketsView = new SocketsView('socketsTabContent', | 100 var socketsView = new SocketsView('socketsTabContent', |
| 94 'socketPoolDiv', | 101 'socketPoolDiv', |
| 95 'socketPoolGroupsDiv'); | 102 'socketPoolGroupsDiv'); |
| 96 | 103 |
| 97 var spdyView = new SpdyView('spdyTabContent', | 104 var spdyView = new SpdyView('spdyTabContent', |
| 98 'spdyEnabledSpan', | 105 'spdyEnabledSpan', |
| 99 'spdyUseAlternateProtocolSpan', | 106 'spdyUseAlternateProtocolSpan', |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 121 categoryTabSwitcher.addTab('eventsTab', eventsView, false); | 128 categoryTabSwitcher.addTab('eventsTab', eventsView, false); |
| 122 categoryTabSwitcher.addTab('proxyTab', proxyView, false); | 129 categoryTabSwitcher.addTab('proxyTab', proxyView, false); |
| 123 categoryTabSwitcher.addTab('dnsTab', dnsView, false); | 130 categoryTabSwitcher.addTab('dnsTab', dnsView, false); |
| 124 categoryTabSwitcher.addTab('socketsTab', socketsView, false); | 131 categoryTabSwitcher.addTab('socketsTab', socketsView, false); |
| 125 categoryTabSwitcher.addTab('spdyTab', spdyView, false); | 132 categoryTabSwitcher.addTab('spdyTab', spdyView, false); |
| 126 categoryTabSwitcher.addTab('httpCacheTab', httpCacheView, false); | 133 categoryTabSwitcher.addTab('httpCacheTab', httpCacheView, false); |
| 127 categoryTabSwitcher.addTab('dataTab', dataView, false); | 134 categoryTabSwitcher.addTab('dataTab', dataView, false); |
| 128 if (g_browser.isPlatformWindows()) | 135 if (g_browser.isPlatformWindows()) |
| 129 categoryTabSwitcher.addTab('serviceProvidersTab', serviceView, false); | 136 categoryTabSwitcher.addTab('serviceProvidersTab', serviceView, false); |
| 130 categoryTabSwitcher.addTab('testTab', testView, false); | 137 categoryTabSwitcher.addTab('testTab', testView, false); |
| 138 categoryTabSwitcher.addTab('hstsTab', hstsView, false); | |
| 131 | 139 |
| 132 // Build a map from the anchor name of each tab handle to its "tab ID". | 140 // Build a map from the anchor name of each tab handle to its "tab ID". |
| 133 // We will consider navigations to the #hash as a switch tab request. | 141 // We will consider navigations to the #hash as a switch tab request. |
| 134 var anchorMap = {}; | 142 var anchorMap = {}; |
| 135 var tabIds = categoryTabSwitcher.getAllTabIds(); | 143 var tabIds = categoryTabSwitcher.getAllTabIds(); |
| 136 for (var i = 0; i < tabIds.length; ++i) { | 144 for (var i = 0; i < tabIds.length; ++i) { |
| 137 var aNode = document.getElementById(tabIds[i]); | 145 var aNode = document.getElementById(tabIds[i]); |
| 138 anchorMap[aNode.hash] = tabIds[i]; | 146 anchorMap[aNode.hash] = tabIds[i]; |
| 139 } | 147 } |
| 140 // Default the empty hash to the data tab. | 148 // Default the empty hash to the data tab. |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 162 /** | 170 /** |
| 163 * This class provides a "bridge" for communicating between the javascript and | 171 * This class provides a "bridge" for communicating between the javascript and |
| 164 * the browser. | 172 * the browser. |
| 165 * | 173 * |
| 166 * @constructor | 174 * @constructor |
| 167 */ | 175 */ |
| 168 function BrowserBridge() { | 176 function BrowserBridge() { |
| 169 // List of observers for various bits of browser state. | 177 // List of observers for various bits of browser state. |
| 170 this.logObservers_ = []; | 178 this.logObservers_ = []; |
| 171 this.connectionTestsObservers_ = []; | 179 this.connectionTestsObservers_ = []; |
| 180 this.hstsObservers_ = []; | |
| 172 | 181 |
| 173 this.pollableDataHelpers_ = {}; | 182 this.pollableDataHelpers_ = {}; |
| 174 this.pollableDataHelpers_.proxySettings = | 183 this.pollableDataHelpers_.proxySettings = |
| 175 new PollableDataHelper('onProxySettingsChanged', | 184 new PollableDataHelper('onProxySettingsChanged', |
| 176 this.sendGetProxySettings.bind(this)); | 185 this.sendGetProxySettings.bind(this)); |
| 177 this.pollableDataHelpers_.badProxies = | 186 this.pollableDataHelpers_.badProxies = |
| 178 new PollableDataHelper('onBadProxiesChanged', | 187 new PollableDataHelper('onBadProxiesChanged', |
| 179 this.sendGetBadProxies.bind(this)); | 188 this.sendGetBadProxies.bind(this)); |
| 180 this.pollableDataHelpers_.httpCacheInfo = | 189 this.pollableDataHelpers_.httpCacheInfo = |
| 181 new PollableDataHelper('onHttpCacheInfoChanged', | 190 new PollableDataHelper('onHttpCacheInfoChanged', |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 294 }; | 303 }; |
| 295 | 304 |
| 296 BrowserBridge.prototype.sendClearHostResolverCache = function() { | 305 BrowserBridge.prototype.sendClearHostResolverCache = function() { |
| 297 chrome.send('clearHostResolverCache'); | 306 chrome.send('clearHostResolverCache'); |
| 298 }; | 307 }; |
| 299 | 308 |
| 300 BrowserBridge.prototype.sendStartConnectionTests = function(url) { | 309 BrowserBridge.prototype.sendStartConnectionTests = function(url) { |
| 301 chrome.send('startConnectionTests', [url]); | 310 chrome.send('startConnectionTests', [url]); |
| 302 }; | 311 }; |
| 303 | 312 |
| 313 BrowserBridge.prototype.sendHSTSQuery = function(domain) { | |
| 314 chrome.send('hstsQuery', [domain]); | |
| 315 }; | |
| 316 | |
| 317 BrowserBridge.prototype.sendHSTSAdd = function(domain, include_subdomains) { | |
| 318 chrome.send('hstsAdd', [domain, include_subdomains]); | |
| 319 }; | |
| 320 | |
| 321 BrowserBridge.prototype.sendHSTSDelete = function(domain) { | |
| 322 chrome.send('hstsDelete', [domain]); | |
| 323 }; | |
| 324 | |
| 304 BrowserBridge.prototype.sendGetHttpCacheInfo = function() { | 325 BrowserBridge.prototype.sendGetHttpCacheInfo = function() { |
| 305 chrome.send('getHttpCacheInfo'); | 326 chrome.send('getHttpCacheInfo'); |
| 306 }; | 327 }; |
| 307 | 328 |
| 308 BrowserBridge.prototype.sendGetSocketPoolInfo = function() { | 329 BrowserBridge.prototype.sendGetSocketPoolInfo = function() { |
| 309 chrome.send('getSocketPoolInfo'); | 330 chrome.send('getSocketPoolInfo'); |
| 310 }; | 331 }; |
| 311 | 332 |
| 312 BrowserBridge.prototype.sendGetSpdySessionInfo = function() { | 333 BrowserBridge.prototype.sendGetSpdySessionInfo = function() { |
| 313 chrome.send('getSpdySessionInfo'); | 334 chrome.send('getSpdySessionInfo'); |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 465 this.connectionTestsObservers_[i].onCompletedConnectionTestExperiment( | 486 this.connectionTestsObservers_[i].onCompletedConnectionTestExperiment( |
| 466 info.experiment, info.result); | 487 info.experiment, info.result); |
| 467 } | 488 } |
| 468 }; | 489 }; |
| 469 | 490 |
| 470 BrowserBridge.prototype.receivedCompletedConnectionTestSuite = function() { | 491 BrowserBridge.prototype.receivedCompletedConnectionTestSuite = function() { |
| 471 for (var i = 0; i < this.connectionTestsObservers_.length; ++i) | 492 for (var i = 0; i < this.connectionTestsObservers_.length; ++i) |
| 472 this.connectionTestsObservers_[i].onCompletedConnectionTestSuite(); | 493 this.connectionTestsObservers_[i].onCompletedConnectionTestSuite(); |
| 473 }; | 494 }; |
| 474 | 495 |
| 496 BrowserBridge.prototype.receivedHSTSResult = function(info) { | |
| 497 for (var i = 0; i < this.hstsObservers_.length; ++i) | |
| 498 this.hstsObservers_[i].onHSTSQueryResult(info); | |
| 499 }; | |
| 500 | |
| 475 BrowserBridge.prototype.receivedHttpCacheInfo = function(info) { | 501 BrowserBridge.prototype.receivedHttpCacheInfo = function(info) { |
| 476 this.pollableDataHelpers_.httpCacheInfo.update(info); | 502 this.pollableDataHelpers_.httpCacheInfo.update(info); |
| 477 }; | 503 }; |
| 478 | 504 |
| 479 BrowserBridge.prototype.loadedLogFile = function(logFileContents) { | 505 BrowserBridge.prototype.loadedLogFile = function(logFileContents) { |
| 480 var match; | 506 var match; |
| 481 // Replace carriage returns with linebreaks and then split around linebreaks. | 507 // Replace carriage returns with linebreaks and then split around linebreaks. |
| 482 var lines = logFileContents.replace(/\r/g, '\n').split('\n'); | 508 var lines = logFileContents.replace(/\r/g, '\n').split('\n'); |
| 483 var entries = []; | 509 var entries = []; |
| 484 var numInvalidLines = 0; | 510 var numInvalidLines = 0; |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 687 * Adds a listener for the http cache info results. | 713 * Adds a listener for the http cache info results. |
| 688 * The observer will be called back with: | 714 * The observer will be called back with: |
| 689 * | 715 * |
| 690 * observer.onHttpCacheInfoChanged(info); | 716 * observer.onHttpCacheInfoChanged(info); |
| 691 */ | 717 */ |
| 692 BrowserBridge.prototype.addHttpCacheInfoObserver = function(observer) { | 718 BrowserBridge.prototype.addHttpCacheInfoObserver = function(observer) { |
| 693 this.pollableDataHelpers_.httpCacheInfo.addObserver(observer); | 719 this.pollableDataHelpers_.httpCacheInfo.addObserver(observer); |
| 694 }; | 720 }; |
| 695 | 721 |
| 696 /** | 722 /** |
| 723 * Adds a listener for the results of HSTS (HTTPS Strict Transport Security) | |
| 724 * queries. The observer will be called back with: | |
| 725 * | |
| 726 * observer.onHSTSQueryResult((result); | |
|
eroman
2011/02/17 00:48:28
nit: typo, unmatched paren.
agl
2011/02/17 17:21:30
Done.
| |
| 727 */ | |
| 728 BrowserBridge.prototype.addHSTSObserver = function(observer) { | |
| 729 this.hstsObservers_.push(observer); | |
| 730 }; | |
| 731 | |
| 732 /** | |
| 697 * The browser gives us times in terms of "time ticks" in milliseconds. | 733 * The browser gives us times in terms of "time ticks" in milliseconds. |
| 698 * This function converts the tick count to a Date() object. | 734 * This function converts the tick count to a Date() object. |
| 699 * | 735 * |
| 700 * @param {String} timeTicks. | 736 * @param {String} timeTicks. |
| 701 * @returns {Date} The time that |timeTicks| represents. | 737 * @returns {Date} The time that |timeTicks| represents. |
| 702 */ | 738 */ |
| 703 BrowserBridge.prototype.convertTimeTicksToDate = function(timeTicks) { | 739 BrowserBridge.prototype.convertTimeTicksToDate = function(timeTicks) { |
| 704 // Note that the subtraction by 0 is to cast to a number (probably a float | 740 // Note that the subtraction by 0 is to cast to a number (probably a float |
| 705 // since the numbers are big). | 741 // since the numbers are big). |
| 706 var timeStampMs = (this.timeTickOffset_ - 0) + (timeTicks - 0); | 742 var timeStampMs = (this.timeTickOffset_ - 0) + (timeTicks - 0); |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 948 return true; | 984 return true; |
| 949 }; | 985 }; |
| 950 | 986 |
| 951 UpdateAllObserver.prototype.onDataReceived_ = function(helper, name, data) { | 987 UpdateAllObserver.prototype.onDataReceived_ = function(helper, name, data) { |
| 952 helper.removeObserver(this); | 988 helper.removeObserver(this); |
| 953 --this.observingCount_; | 989 --this.observingCount_; |
| 954 this.updatedData_[name] = data; | 990 this.updatedData_[name] = data; |
| 955 if (this.observingCount_ == 0) | 991 if (this.observingCount_ == 0) |
| 956 this.callback_(this.updatedData_); | 992 this.callback_(this.updatedData_); |
| 957 }; | 993 }; |
| OLD | NEW |