summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/renderer/resources/extensions/platform_app.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/renderer/resources/extensions/platform_app.js')
-rw-r--r--chromium/chrome/renderer/resources/extensions/platform_app.js138
1 files changed, 0 insertions, 138 deletions
diff --git a/chromium/chrome/renderer/resources/extensions/platform_app.js b/chromium/chrome/renderer/resources/extensions/platform_app.js
deleted file mode 100644
index 78a13ffe01e..00000000000
--- a/chromium/chrome/renderer/resources/extensions/platform_app.js
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * Returns a function that throws a 'not available' exception when called.
- *
- * @param {string} messagePrefix text to prepend to the exception message.
- */
-function generateDisabledMethodStub(messagePrefix, opt_messageSuffix) {
- return function() {
- var message = messagePrefix + ' is not available in packaged apps.';
- if (opt_messageSuffix) message = message + ' ' + opt_messageSuffix;
- throw message;
- };
-}
-
-/**
- * Replaces the given methods of the passed in object with stubs that throw
- * 'not available' exceptions when called.
- *
- * @param {Object} object The object with methods to disable. The prototype is
- * preferred.
- * @param {string} objectName The display name to use in the error message
- * thrown by the stub (this is the name that the object is commonly referred
- * to by web developers, e.g. "document" instead of "HTMLDocument").
- * @param {Array.<string>} methodNames names of methods to disable.
- */
-function disableMethods(object, objectName, methodNames) {
- $Array.forEach(methodNames, function(methodName) {
- object[methodName] =
- generateDisabledMethodStub(objectName + '.' + methodName + '()');
- });
-}
-
-/**
- * Replaces the given properties of the passed in object with stubs that throw
- * 'not available' exceptions when gotten. If a property's setter is later
- * invoked, the getter and setter are restored to default behaviors.
- *
- * @param {Object} object The object with properties to disable. The prototype
- * is preferred.
- * @param {string} objectName The display name to use in the error message
- * thrown by the getter stub (this is the name that the object is commonly
- * referred to by web developers, e.g. "document" instead of
- * "HTMLDocument").
- * @param {Array.<string>} propertyNames names of properties to disable.
- */
-function disableGetters(object, objectName, propertyNames, opt_messageSuffix) {
- $Array.forEach(propertyNames, function(propertyName) {
- var stub = generateDisabledMethodStub(objectName + '.' + propertyName,
- opt_messageSuffix);
- stub._is_platform_app_disabled_getter = true;
- object.__defineGetter__(propertyName, stub);
-
- object.__defineSetter__(propertyName, function(value) {
- var getter = this.__lookupGetter__(propertyName);
- if (!getter || getter._is_platform_app_disabled_getter) {
- // The stub getter is still defined. Blow-away the property to restore
- // default getter/setter behaviors and re-create it with the given
- // value.
- delete this[propertyName];
- this[propertyName] = value;
- } else {
- // Do nothing. If some custom getter (not ours) has been defined, there
- // would be no way to read back the value stored by a default setter.
- // Also, the only way to clear a custom getter is to first delete the
- // property. Therefore, the value we have here should just go into a
- // black hole.
- }
- });
- });
-}
-
-// Disable document.open|close|write|etc.
-disableMethods(HTMLDocument.prototype, 'document',
- ['open', 'clear', 'close', 'write', 'writeln']);
-
-// Disable history.
-window.history = {};
-disableMethods(window.history, 'history',
- ['back', 'forward', 'go']);
-disableGetters(window.history, 'history', ['length']);
-
-// Disable find.
-disableMethods(Window.prototype, 'window', ['find']);
-
-// Disable modal dialogs. Shell windows disable these anyway, but it's nice to
-// warn.
-disableMethods(Window.prototype, 'window', ['alert', 'confirm', 'prompt']);
-
-// Disable window.*bar.
-disableGetters(window, 'window',
- ['locationbar', 'menubar', 'personalbar', 'scrollbars', 'statusbar',
- 'toolbar']);
-
-// Disable window.localStorage.
-// Sometimes DOM security policy prevents us from doing this (e.g. for data:
-// URLs) so wrap in try-catch.
-try {
- disableGetters(window, 'window',
- ['localStorage'],
- 'Use chrome.storage.local instead.');
-} catch (e) {}
-
-// Document instance properties that we wish to disable need to be set when
-// the document begins loading, since only then will the "document" reference
-// point to the page's document (it will be reset between now and then).
-// We can't listen for the "readystatechange" event on the document (because
-// the object that it's dispatched on doesn't exist yet), but we can instead
-// do it at the window level in the capturing phase.
-window.addEventListener('readystatechange', function(event) {
- if (document.readyState != 'loading')
- return;
-
- // Deprecated document properties from
- // https://developer.mozilla.org/en/DOM/document.
- // To deprecate document.all, simply changing its getter and setter would
- // activate its cache mechanism, and degrade the performance. Here we assign
- // it first to 'undefined' to avoid this.
- document.all = undefined;
- disableGetters(document, 'document',
- ['alinkColor', 'all', 'bgColor', 'fgColor', 'linkColor',
- 'vlinkColor']);
-}, true);
-
-// Disable onunload, onbeforeunload.
-Window.prototype.__defineSetter__(
- 'onbeforeunload', generateDisabledMethodStub('onbeforeunload'));
-Window.prototype.__defineSetter__(
- 'onunload', generateDisabledMethodStub('onunload'));
-var windowAddEventListener = Window.prototype.addEventListener;
-Window.prototype.addEventListener = function(type) {
- if (type === 'unload' || type === 'beforeunload')
- generateDisabledMethodStub(type)();
- else
- return $Function.apply(windowAddEventListener, window, arguments);
-};