Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Side by Side Diff: chrome/renderer/resources/extensions/platform_app.js

Issue 245443003: Update platform_app.js to work even if window.history is not replaceable (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Take arv's feedback into consideration Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/test/data/extensions/platform_apps/restrictions/main.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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 };
OLDNEW
« no previous file with comments | « no previous file | chrome/test/data/extensions/platform_apps/restrictions/main.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698