OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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; |
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 * |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 }); | 145 }); |
146 } | 146 } |
147 | 147 |
148 // Disable benign Document methods. | 148 // Disable benign Document methods. |
149 disableMethods(HTMLDocument.prototype, 'document', ['open', 'clear', 'close']); | 149 disableMethods(HTMLDocument.prototype, 'document', ['open', 'clear', 'close']); |
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 window.history = {}; | 155 Object.defineProperty(window, "history", { value: {} }); |
156 disableGetters(window.history, 'history', ['back', 'forward', 'go', 'length']); | 156 disableGetters(window.history, 'history', ['back', 'forward', 'go', 'length']); |
157 | 157 |
158 // Disable find. | 158 // Disable find. |
159 disableMethods(Window.prototype, 'window', ['find']); | 159 disableMethods(Window.prototype, 'window', ['find']); |
160 | 160 |
161 // Disable modal dialogs. Shell windows disable these anyway, but it's nice to | 161 // Disable modal dialogs. Shell windows disable these anyway, but it's nice to |
162 // warn. | 162 // warn. |
163 disableMethods(Window.prototype, 'window', ['alert', 'confirm', 'prompt']); | 163 disableMethods(Window.prototype, 'window', ['alert', 'confirm', 'prompt']); |
164 | 164 |
165 // Disable window.*bar. | 165 // Disable window.*bar. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 | 198 |
199 // Disable onunload, onbeforeunload. | 199 // Disable onunload, onbeforeunload. |
200 disableSetters(Window.prototype, 'window', ['onbeforeunload', 'onunload']); | 200 disableSetters(Window.prototype, 'window', ['onbeforeunload', 'onunload']); |
201 var windowAddEventListener = Window.prototype.addEventListener; | 201 var windowAddEventListener = Window.prototype.addEventListener; |
202 Window.prototype.addEventListener = function(type) { | 202 Window.prototype.addEventListener = function(type) { |
203 if (type === 'unload' || type === 'beforeunload') | 203 if (type === 'unload' || type === 'beforeunload') |
204 generateDisabledMethodStub(type)(); | 204 generateDisabledMethodStub(type)(); |
205 else | 205 else |
206 return $Function.apply(windowAddEventListener, window, arguments); | 206 return $Function.apply(windowAddEventListener, window, arguments); |
207 }; | 207 }; |
OLD | NEW |