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

Side by Side Diff: ceee/ie/plugin/scripting/ceee_bootstrap.js

Issue 5133002: IE CEEE: Add another layer of isolation to content scripts execution through ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 1 month 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 | ceee/ie/plugin/scripting/content_script_manager.cc » ('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) 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 * @fileoverview this file provides the bootstrap interface between the 6 * @fileoverview this file provides the bootstrap interface between the
7 * Chrome event and extension bindings JavaScript files, and the CEEE 7 * Chrome event and extension bindings JavaScript files, and the CEEE
8 * native IE interface, as well as initialization hooks for the native 8 * native IE interface, as well as initialization hooks for the native
9 * interface. 9 * interface.
10 */ 10 */
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 // TODO(siggi@chromium.org): If there is a different global 107 // TODO(siggi@chromium.org): If there is a different global
108 // environment at this point (i.e. we have cloned the scripting 108 // environment at this point (i.e. we have cloned the scripting
109 // engine for a new window) this is where we can restore goog, 109 // engine for a new window) this is where we can restore goog,
110 // JSON and chrome. 110 // JSON and chrome.
111 111
112 // Delete the ceee namespace from globals. 112 // Delete the ceee namespace from globals.
113 delete ceee; 113 delete ceee;
114 }; 114 };
115 115
116 ceee.initGlobals_ = function() { 116 ceee.initGlobals_ = function() {
117 // We expose a subset of the Window interface defined at 117 // The window object of the page is exposed in its entirety to the script
118 // host via the 'unsafeWindow' variable similar to how greasemonkey scripts
119 // implement access to it. We expose a 'safe' window object as 'window' that
120 // only has access to a subset of the actual window's native properties.
121
122 // Create the window variable and assign it to 'this' which is the context
123 // of the global scope. Doing this will make variables defined in the global
124 // scope or defined as properties of window be one and the same.
125 window = this;
126
127 // Now expose a subset of the Window interface defined at
118 // http://www.w3.org/TR/html5/browsers.html#the-window-object 128 // http://www.w3.org/TR/html5/browsers.html#the-window-object
119 // to the global namespace. We purposely skip all event handler 129 // to the global namespace and to the 'safe' window object. We purposely skip
120 // attributes (e.g. onclick). 130 // all event handler attributes (e.g. onclick).
121 131
122 // Browsing context. 132 // Browsing context.
123 self = window.self; 133 self = unsafeWindow.self;
124 document = window.document; 134 document = unsafeWindow.document;
125 name = window.name; 135 name = unsafeWindow.name;
126 location = window.location; 136 location = unsafeWindow.location;
127 history = window.history; 137 history = unsafeWindow.history;
128 undoManager = window.undoManager; 138 undoManager = unsafeWindow.undoManager;
129 locationbar = window.locationbar; 139 locationbar = unsafeWindow.locationbar;
130 menubar = window.menubar; 140 menubar = unsafeWindow.menubar;
131 scrollbars = window.scrollbars; 141 scrollbars = unsafeWindow.scrollbars;
132 statusbar = window.statusbar; 142 statusbar = unsafeWindow.statusbar;
133 toolbar = window.toolbar; 143 toolbar = unsafeWindow.toolbar;
134 close = window.close; 144 close = unsafeWindow.close;
135 stop = window.stop; 145 stop = unsafeWindow.stop;
136 focus = window.focus; 146 focus = unsafeWindow.focus;
137 blur = window.blur; 147 blur = unsafeWindow.blur;
138 148
139 // Other browsing contexts. 149 // Other browsing contexts.
140 frames = window.frames; 150 frames = unsafeWindow.frames;
141 length = window.length; 151 length = unsafeWindow.length;
142 top = window.top; 152 top = unsafeWindow.top;
143 opener = window.opener; 153 opener = unsafeWindow.opener;
144 parent = window.parent; 154 parent = unsafeWindow.parent;
145 frameElement = window.frameElement; 155 frameElement = unsafeWindow.frameElement;
146 open = window.open; 156 open = unsafeWindow.open;
147 157
148 // User agent. 158 // User agent.
149 navigator = window.navigator; 159 navigator = unsafeWindow.navigator;
150 applicationCache = window.applicationCache; 160 applicationCache = unsafeWindow.applicationCache;
151 161
152 // User prompts. 162 // User prompts.
153 alert = window.alert; 163 alert = unsafeWindow.alert;
154 confirm = window.confirm; 164 confirm = unsafeWindow.confirm;
155 prompt = window.prompt; 165 prompt = unsafeWindow.prompt;
156 print = window.print; 166 print = unsafeWindow.print;
157 showModalDialog = window.showModalDialog; 167 showModalDialog = unsafeWindow.showModalDialog;
158 168
159 // EventTarget interface. 169 // EventTarget interface.
160 addEventListener = window.addEventListener; 170 addEventListener = unsafeWindow.addEventListener;
161 removeEventListener = window.removeEventListener; 171 removeEventListener = unsafeWindow.removeEventListener;
162 dispatchEvent = window.dispatchEvent; 172 dispatchEvent = unsafeWindow.dispatchEvent;
163 173
164 // Old IE event model. 174 // Old IE event model.
165 attachEvent = window.attachEvent; 175 attachEvent = unsafeWindow.attachEvent;
166 detachEvent = window.detachEvent; 176 detachEvent = unsafeWindow.detachEvent;
167 }; 177 };
168 178
169 console.log = console.log || function (msg) { 179 console.log = console.log || function (msg) {
170 if (nativeContentScriptApi) 180 if (nativeContentScriptApi)
171 nativeContentScriptApi.Log("info", msg); 181 nativeContentScriptApi.Log("info", msg);
172 }; 182 };
173 183
174 console.error = console.error || function (msg) { 184 console.error = console.error || function (msg) {
175 if (nativeContentScriptApi) 185 if (nativeContentScriptApi)
176 nativeContentScriptApi.Log("error", msg); 186 nativeContentScriptApi.Log("error", msg);
(...skipping 12 matching lines...) Expand all
189 199
190 for (; from < len; from++) { 200 for (; from < len; from++) {
191 if (from in this && this[from] === elt) 201 if (from in this && this[from] === elt)
192 return from; 202 return from;
193 } 203 }
194 return -1; 204 return -1;
195 } 205 }
196 }; 206 };
197 207
198 })(); 208 })();
OLDNEW
« no previous file with comments | « no previous file | ceee/ie/plugin/scripting/content_script_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698