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

Side by Side Diff: native_client_sdk/src/gonacl_appengine/static/frame.js

Issue 600653002: [NaCl SDK AppEngine] Fix PNaCl demos after html5 onpopstate change. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
« no previous file with comments | « no previous file | no next file » | 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 examples = [ 5 var examples = [
6 {name: 'bullet', text: 'Bullet Physics'}, 6 {name: 'bullet', text: 'Bullet Physics'},
7 {name: 'earth', text: 'Raycasted Earth'}, 7 {name: 'earth', text: 'Raycasted Earth'},
8 {name: 'lua', text: 'Lua Interpreter'}, 8 {name: 'lua', text: 'Lua Interpreter'},
9 {name: 'life', text: 'Game of Life'}, 9 {name: 'life', text: 'Game of Life'},
10 {name: 'voronoi', text: 'Voronoi Simulation'}, 10 {name: 'voronoi', text: 'Voronoi Simulation'},
11 {name: 'smoothlife', text: 'SmoothLife'}, 11 {name: 'smoothlife', text: 'SmoothLife'},
12 {name: 'cube', text: 'Rotating Cube'}, 12 {name: 'cube', text: 'Rotating Cube'},
13 ]; 13 ];
14 var exampleMap = {}; // Created below. 14 var exampleMap = {}; // Created below.
15 15
16 var iframeEl = null;
17 var isChrome = /Chrome\/([^\s]+)/.test(navigator.userAgent); 16 var isChrome = /Chrome\/([^\s]+)/.test(navigator.userAgent);
18 var isMobile = /Mobi/.test(navigator.userAgent); 17 var isMobile = /Mobi/.test(navigator.userAgent);
19 var hasPnacl = navigator.mimeTypes['application/x-pnacl'] !== undefined; 18 var hasPnacl = navigator.mimeTypes['application/x-pnacl'] !== undefined;
20 19
21 if (isChrome && !isMobile) { 20 if (isChrome && !isMobile) {
22 if (hasPnacl) { 21 if (hasPnacl) {
23 makeExampleList(); 22 makeExampleList();
24 window.onpopstate = function(popState) { 23 if (history.state == null) {
25 if (popState.state == null) { 24 updateViewFromLocation();
26 updateViewFromLocation(); 25 }
27 } else { 26
28 var exampleName = popState.state; 27 window.onpopstate = function(event) {
29 loadExample(popState.state); 28 var exampleName = event.state;
30 } 29 loadExample(exampleName);
31 } 30 }
32 } else { 31 } else {
33 // Older version of Chrome? 32 // Older version of Chrome?
34 showOldChromeErrorMessage(); 33 showOldChromeErrorMessage();
35 } 34 }
36 } else { 35 } else {
37 // Not Chrome, or is mobile Chrome. 36 // Not Chrome, or is mobile Chrome.
38 showNotChromeErrorMessage(); 37 showNotChromeErrorMessage();
39 } 38 }
40 39
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 123
125 function createExampleIframe(exampleName) { 124 function createExampleIframe(exampleName) {
126 createIframe(getExampleUrl(exampleName)); 125 createIframe(getExampleUrl(exampleName));
127 } 126 }
128 127
129 function createHomeIframe() { 128 function createHomeIframe() {
130 createIframe('/static/home/index.html'); 129 createIframe('/static/home/index.html');
131 } 130 }
132 131
133 function createIframe(src) { 132 function createIframe(src) {
134 var oldIframeEl = iframeEl; 133 var iframeEl = document.querySelector('iframe');
135 134 if (iframeEl === null) {
136 iframeEl = document.createElement('iframe'); 135 iframeEl = document.createElement('iframe');
137 iframeEl.setAttribute('frameborder', '0'); 136 iframeEl.setAttribute('frameborder', '0');
138 iframeEl.setAttribute('width', '100%'); 137 iframeEl.setAttribute('width', '100%');
139 iframeEl.setAttribute('height', '100%'); 138 iframeEl.setAttribute('height', '100%');
140 iframeEl.src = src; 139 iframeEl.src = src;
141 iframeEl.setAttribute('hidden', ''); 140 document.querySelector('section').appendChild(iframeEl);
142 iframeEl.onload = function() { 141 } else {
143 if (oldIframeEl) 142 iframeEl.contentDocument.location.replace(src);
144 oldIframeEl.parentNode.removeChild(oldIframeEl);
145 iframeEl.removeAttribute('hidden');
146 } 143 }
147 document.querySelector('section').appendChild(iframeEl);
148 } 144 }
149 145
150 function pushState(exampleName) { 146 function pushState(exampleName) {
151 window.history.pushState(exampleName, '', '/demo/' + exampleName); 147 window.history.pushState(exampleName, '', '/demo/' + exampleName);
152 } 148 }
153 149
154 function replaceState(exampleName) { 150 function replaceState(exampleName) {
155 window.history.replaceState(exampleName, '', '/demo/' + exampleName); 151 window.history.replaceState(exampleName, '', '/demo/' + exampleName);
156 } 152 }
157 153
158 function replaceHomeState() { 154 function replaceHomeState() {
159 window.history.replaceState('home', '', '/demo'); 155 window.history.replaceState('home', '', '/demo');
160 } 156 }
161 157
162 function showOldChromeErrorMessage() { 158 function showOldChromeErrorMessage() {
163 document.getElementById('old-chrome').removeAttribute('hidden'); 159 document.getElementById('old-chrome').removeAttribute('hidden');
164 } 160 }
165 161
166 function showNotChromeErrorMessage() { 162 function showNotChromeErrorMessage() {
167 document.getElementById('not-chrome').removeAttribute('hidden'); 163 document.getElementById('not-chrome').removeAttribute('hidden');
168 } 164 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698