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

Side by Side Diff: chrome_frame/test/data/chrome_frame_tester_helpers.js

Issue 126143005: Remove Chrome Frame code and resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync to r244038 Created 6 years, 11 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
OLDNEW
(Empty)
1 //
2 // This script provides some mechanics for testing ChromeFrame
3 //
4 function onSuccess(name, id) {
5 appendStatus("Success reported!");
6 onFinished(name, id, "OK");
7 }
8
9 function onFailure(name, id, status) {
10 appendStatus("Failure reported: " + status);
11 onFinished(name, id, status);
12 }
13
14 function byId(id) {
15 return document.getElementById(id);
16 }
17
18 function getXHRObject(){
19 var XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP',
20 'Msxml2.XMLHTTP.4.0'];
21 var http = null;
22 try {
23 http = new XMLHttpRequest();
24 } catch(e) {
25 }
26
27 if (http)
28 return http;
29
30 for (var i = 0; i < 3; ++i) {
31 var progid = XMLHTTP_PROGIDS[i];
32 try {
33 http = new ActiveXObject(progid);
34 } catch(e) {
35 }
36
37 if (http)
38 break;
39 }
40 return http;
41 }
42
43 var reportURL = "/writefile/";
44
45 // Optionally send the server a notification that onload was fired.
46 // To be called from within window.onload.
47 function sendOnLoadEvent() {
48 writeToServer("OnLoadEvent", "loaded");
49 }
50
51 function writeToServer(name, result) {
52 var xhr = getXHRObject();
53 if(!xhr)
54 return;
55
56 // asynchronously POST the results
57 xhr.open("POST", reportURL + name, true);
58 xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
59 try {
60 xhr.send(result);
61 } catch(e) {
62 appendStatus("XHR send failed. Error: " + e.description);
63 }
64 }
65
66 function postResult(name, result) {
67 writeToServer(name, result);
68 }
69
70 // Finish running a test by setting the status
71 // and the cookie.
72 function onFinished(name, id, result) {
73 // set a cookie to report the results...
74 var cookie = name + "." + id + ".status=" + result + "; path=/";
75 document.cookie = cookie;
76
77 // ...and POST the status back to the server
78 postResult(name, result);
79 }
80
81 function appendStatus(message) {
82 var statusPanel = byId("statusPanel");
83 if (statusPanel) {
84 statusPanel.innerHTML += '<BR>' + message;
85 }
86 }
87
88 function readCookie(name) {
89 var cookie_name = name + "=";
90 var ca = document.cookie.split(';');
91
92 for(var i = 0 ; i < ca.length ; i++) {
93 var c = ca[i];
94 while (c.charAt(0) == ' ') {
95 c = c.substring(1,c.length);
96 }
97 if (c.indexOf(cookie_name) == 0) {
98 return c.substring(cookie_name.length, c.length);
99 }
100 }
101 return null;
102 }
103
104 function createCookie(name,value,days) {
105 var expires = "";
106 if (days) {
107 var date = new Date();
108 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
109 expires = "; expires=" + date.toGMTString();
110 }
111 document.cookie = name+"="+value+expires+"; path=/";
112 }
113
114 function eraseCookie(name) {
115 createCookie(name, "", -1);
116 }
117
118 function isRunningInMSIE() {
119 if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
120 return true;
121
122 return false;
123 }
124
125 function reloadUsingCFProtocol() {
126 var redirect_location = "gcf:";
127 redirect_location += window.location;
128 window.location = redirect_location;
129 }
130
131 function isRunningInChrome() {
132 var is_chrome_frame = /chromeframe/.test(navigator.userAgent.toLowerCase());
133 if (is_chrome_frame)
134 return 0;
135 var is_chrome = /chrome/.test(navigator.userAgent.toLowerCase());
136 return is_chrome;
137 }
138
139 function TestIfRunningInChrome() {
140 var is_chrome = isRunningInChrome();
141 if (!is_chrome) {
142 onFailure("ChromeFrameWindowOpen", "Window Open failed :-(",
143 "User agent = " + navigator.userAgent.toLowerCase());
144 }
145 return is_chrome;
146 }
147
148 // Returns the base document url.
149 function GetBaseUrlPath() {
150 var url = window.location.protocol + "//" + window.location.host + "/";
151 return url;
152 }
153
154 // Appends arguments passed in to the base document url and returns the same.
155 function AppendArgumentsToBaseUrl() {
156 var url = GetBaseUrlPath();
157 for (arg_index = 0; arg_index < arguments.length; arg_index++) {
158 url += arguments[arg_index];
159 }
160 return url;
161 }
162
163 // Get the value of the first parameter from the query string which matches the
164 // given name.
165 function getURLParameter(name) {
166 name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
167 var regexString = "[\\?&]" + name + "=([^&#]*)";
168 var regex = new RegExp(regexString);
169 var results = regex.exec(window.location.href);
170 if (results == null) {
171 return "";
172 } else {
173 return results[1];
174 }
175 }
176
177 // Create new URL by given html page name and querystring, based on current URL
178 // path.
179 function buildURL(pageName, queryString) {
180 var path = window.location.pathname;
181 var url = "";
182
183 url += window.location.protocol + "//" + window.location.host;
184 if (path.lastIndexOf("/") > 0) {
185 url += path.substring(0, path.lastIndexOf("/")) + "/" + pageName;
186 } else {
187 url += "/" + pageName;
188 }
189 url += ((queryString == "") ? "" : "?" + queryString);
190 return url;
191 }
192
193 // Helper function for insertControl.
194 function generateControlHtml(configuration) {
195 var objectAttributes = new Object();
196 var params = new Array();
197 var embedAttributes = new Object();
198 var param;
199 var html;
200
201 function stringifyAttributes(attributeCollection) {
202 var result = new String();
203 for (var attributeName in attributeCollection) {
204 result += ' ' + attributeName + '="' +
205 attributeCollection[attributeName] + '"';
206 }
207 return result;
208 }
209
210 function applyAttribute(attributeCollection, name, value, defaultValue) {
211 if (value === undefined)
212 value = defaultValue;
213 if (value !== null)
214 attributeCollection[name] = value;
215 }
216
217 objectAttributes.classid="CLSID:E0A900DF-9611-4446-86BD-4B1D47E7DB2A";
218 objectAttributes.codebase="http://www.google.com";
219 applyAttribute(objectAttributes, "id", configuration.id, "ChromeFrame");
220 applyAttribute(objectAttributes, "width", configuration.width, "500");
221 applyAttribute(objectAttributes, "height", configuration.height, "500");
222
223 // Attributes provided by the caller override any defaults.
224 for (var attribute in configuration.objectAttributes) {
225 if (configuration.objectAttributes[attribute] === null)
226 delete objectAttributes[attribute];
227 else
228 objectAttributes[attribute] = configuration.objectAttributes[attribute];
229 }
230
231 embedAttributes.type = "application/chromeframe";
232
233 // By default, embed id = object.id + "Plugin". null id means omit id.
234 if (embedAttributes.id === null)
235 delete embedAttributes.id;
236 else if (embedAttributes.id === undefined && objectAttributes.id !== null)
237 embedAttributes.id = objectAttributes.id + "Plugin";
238
239 // By default, embed name = object.id. null name means omit name.
240 if (embedAttributes.name === null)
241 delete embedAttributes.name;
242 else if (embedAttributes.name === undefined && objectAttributes.id !== null)
243 embedAttributes.name = objectAttributes.id;
244
245 applyAttribute(embedAttributes, "width", configuration.width, "500");
246 applyAttribute(embedAttributes, "height", configuration.height, "500");
247 applyAttribute(embedAttributes, "src", configuration.src, null);
248
249 for (var attribute in configuration.embedAttributes) {
250 if (configuration.embedAttributes[attribute] === null)
251 delete embedAttributes[attribute];
252 else
253 embedAttributes[attribute] = configuration.embedAttributes[attribute];
254 }
255
256 if (embedAttributes.src !== undefined) {
257 param = new Object();
258 param.name = "src";
259 param.value = embedAttributes.src;
260 params.push(param);
261 }
262
263 // All event handlers are params and attributes of the embed object.
264 for (var eventName in configuration.eventHandlers) {
265 param = new Object();
266 param.name = eventName;
267 param.value = configuration.eventHandlers[eventName];
268 params.push(param);
269 embedAttributes[eventName] = configuration.eventHandlers[eventName];
270 }
271
272 html = "<object" + stringifyAttributes(objectAttributes) + ">\r\n";
273 for (var i = 0; i < params.length; ++i) {
274 html += " <param" + stringifyAttributes(params[i]) + ">\r\n";
275 }
276 html += " <embed" + stringifyAttributes(embedAttributes) + "></embed>\r\n"
277
278 html += "</object>";
279
280 return html;
281 }
282
283 // Write the text for the Chrome Frame ActiveX control into an element.
284 // This works around a "feature" of IE versions released between April, 2006
285 // and April, 2008 that required the user to click on an ActiveX control to
286 // "activate" it. See http://msdn.microsoft.com/en-us/library/ms537508.aspx.
287 //
288 // |elementId| identifies the element in the current document into which the
289 // control markup will be inserted. |configuration| is an Object used to
290 // configure the control as below. Values shown are defaults, which may be
291 // overridden by supplying null values.
292 // {
293 // "id": "ChromeFrame", // id of object tag, name of the embed tag, and
294 // // basis of id of the embed tag.
295 // "width": "500", // width of both object and embed tags.
296 // "height": "500", // height of both object and embed tags.
297 // "src": "url", // src of embed tag and of param to object tag.
298 // "eventHandlers": { // Applied to embed tag and params to object tag.
299 // "onclose": "...",
300 // "onload": "...",
301 // "onloaderror": "..."
302 // }
303 // "objectAttributes": { // Custom attributes for the object tag. Any
304 // "tabindex": "...", // properties explicitly set to null will override
305 // "border": "...", // defaults.
306 // "style": "..."
307 // },
308 // "embedAttributes": { // Custom attributes for the embed tag;
309 // "privileged_mode": "...", // similar to above.
310 // "style": "..."
311 // }
312 // }
313 function insertControl(elementId, configuration) {
314 var e = document.getElementById(elementId);
315 e.innerHTML = generateControlHtml(configuration);
316 }
OLDNEW
« no previous file with comments | « chrome_frame/test/data/chrome_frame_target_blank.html ('k') | chrome_frame/test/data/chrome_frame_window_open.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698