Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 var $console = window.console; | 5 var $console = window.console; |
|
not at google - send to devlin
2015/09/15 20:04:45
cleanup: we now save the console object automatica
Yuki
2015/09/16 03:21:53
Done.
| |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Returns a function that logs a 'not available' error to the console and | 8 * Returns a function that logs a 'not available' error to the console and |
| 9 * returns undefined. | 9 * returns undefined. |
| 10 * | 10 * |
| 11 * @param {string} messagePrefix text to prepend to the exception message. | 11 * @param {string} messagePrefix text to prepend to the exception message. |
| 12 */ | 12 */ |
| 13 function generateDisabledMethodStub(messagePrefix, opt_messageSuffix) { | 13 function generateDisabledMethodStub(messagePrefix, opt_messageSuffix) { |
| 14 var message = messagePrefix + ' is not available in packaged apps.'; | 14 var message = messagePrefix + ' is not available in packaged apps.'; |
| 15 if (opt_messageSuffix) message = message + ' ' + opt_messageSuffix; | 15 if (opt_messageSuffix) message = message + ' ' + opt_messageSuffix; |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 150 | 150 |
| 151 // Replace evil Document methods with exception-throwing stubs. | 151 // Replace evil Document methods with exception-throwing stubs. |
| 152 disableMethods(HTMLDocument.prototype, 'document', ['write', 'writeln'], true); | 152 disableMethods(HTMLDocument.prototype, 'document', ['write', 'writeln'], true); |
| 153 | 153 |
| 154 // Disable history. | 154 // Disable history. |
| 155 Object.defineProperty(window, "history", { value: {} }); | 155 Object.defineProperty(window, "history", { value: {} }); |
| 156 disableGetters(window.history, 'history', | 156 disableGetters(window.history, 'history', |
| 157 ['back', 'forward', 'go', 'length', 'pushState', 'replaceState']); | 157 ['back', 'forward', 'go', 'length', 'pushState', 'replaceState']); |
| 158 | 158 |
| 159 // Disable find. | 159 // Disable find. |
| 160 disableMethods(window, 'window', ['find']); | |
| 160 disableMethods(Window.prototype, 'window', ['find']); | 161 disableMethods(Window.prototype, 'window', ['find']); |
| 161 | 162 |
| 162 // Disable modal dialogs. Shell windows disable these anyway, but it's nice to | 163 // Disable modal dialogs. Shell windows disable these anyway, but it's nice to |
| 163 // warn. | 164 // warn. |
| 165 disableMethods(window, 'window', ['alert', 'confirm', 'prompt']); | |
| 164 disableMethods(Window.prototype, 'window', ['alert', 'confirm', 'prompt']); | 166 disableMethods(Window.prototype, 'window', ['alert', 'confirm', 'prompt']); |
| 165 | 167 |
| 166 // Disable window.*bar. | 168 // Disable window.*bar. |
| 167 disableGetters(window, 'window', | 169 disableGetters(window, 'window', |
| 168 ['locationbar', 'menubar', 'personalbar', 'scrollbars', 'statusbar', | 170 ['locationbar', 'menubar', 'personalbar', 'scrollbars', 'statusbar', |
| 169 'toolbar']); | 171 'toolbar']); |
| 170 | 172 |
| 171 // Disable window.localStorage. | 173 // Disable window.localStorage. |
| 172 // Sometimes DOM security policy prevents us from doing this (e.g. for data: | 174 // Sometimes DOM security policy prevents us from doing this (e.g. for data: |
| 173 // URLs) so wrap in try-catch. | 175 // URLs) so wrap in try-catch. |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 191 // https://developer.mozilla.org/en/DOM/document. | 193 // https://developer.mozilla.org/en/DOM/document. |
| 192 // To deprecate document.all, simply changing its getter and setter would | 194 // To deprecate document.all, simply changing its getter and setter would |
| 193 // activate its cache mechanism, and degrade the performance. Here we assign | 195 // activate its cache mechanism, and degrade the performance. Here we assign |
| 194 // it first to 'undefined' to avoid this. | 196 // it first to 'undefined' to avoid this. |
| 195 document.all = undefined; | 197 document.all = undefined; |
| 196 disableGetters(document, 'document', | 198 disableGetters(document, 'document', |
| 197 ['alinkColor', 'all', 'bgColor', 'fgColor', 'linkColor', 'vlinkColor']); | 199 ['alinkColor', 'all', 'bgColor', 'fgColor', 'linkColor', 'vlinkColor']); |
| 198 }, true); | 200 }, true); |
| 199 | 201 |
| 200 // Disable onunload, onbeforeunload. | 202 // Disable onunload, onbeforeunload. |
| 203 disableSetters(window, 'window', ['onbeforeunload', 'onunload']); | |
| 201 disableSetters(Window.prototype, 'window', ['onbeforeunload', 'onunload']); | 204 disableSetters(Window.prototype, 'window', ['onbeforeunload', 'onunload']); |
| 202 var windowAddEventListener = Window.prototype.addEventListener; | 205 var eventTargetAddEventListener = EventTarget.prototype.addEventListener; |
| 203 Window.prototype.addEventListener = function(type) { | 206 EventTarget.prototype.addEventListener = function(type) { |
| 204 if (type === 'unload' || type === 'beforeunload') | 207 if (type === 'unload' || type === 'beforeunload') |
| 205 generateDisabledMethodStub(type)(); | 208 generateDisabledMethodStub(type)(); |
| 206 else | 209 else |
| 207 return $Function.apply(windowAddEventListener, window, arguments); | 210 return $Function.apply(eventTargetAddEventListener, this, arguments); |
| 208 }; | 211 }; |
| OLD | NEW |