OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. |
binji
2016/08/22 19:21:52
It's not necessary to change the copyright year.
chanpatorikku
2016/08/29 17:14:02
Done.
| |
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 CLIENT_ID = "TO FILL"; | |
binji
2016/08/22 19:21:52
Where is this filled in? If it is meant to be fill
chanpatorikku
2016/08/29 17:14:02
This is filled in in example.js.
The Drive exampl
| |
6 var CLIENT_SECRET = "TO FILL"; | |
7 | |
8 var REDIRECT_URI = "http://localhost:5103/index.html"; | |
9 | |
10 var currentURL = window.location.href; | |
11 var tokenValue = "Set at domContentLoaded()"; | |
12 | |
13 function buttonOnClick() { | |
14 var array = new Uint32Array(3); | |
15 window.crypto.getRandomValues(array); | |
16 var stateValue = array[0].toString() + | |
17 array[1].toString() + | |
18 array[2].toString(); | |
19 | |
20 var url = "http://accounts.google.com/o/oauth2/v2/auth?" + | |
21 "scope=https://www.googleapis.com/auth/drive" | |
22 + "+" + "https://www.googleapis.com/auth/drive.metadata" + "&" + | |
23 "state=" + stateValue + "&" + | |
24 "redirect_uri=http://localhost:5103/index.html" + "&" + | |
25 "response_type=code" + "&" + | |
26 "client_id=" + CLIENT_ID; | |
27 | |
28 window.open(url, "_self"); | |
29 } | |
30 | |
31 function executeAfterGettingCode() { | |
32 var codeKeyIndex = currentURL.search("code="); | |
binji
2016/08/22 19:21:52
you can just use indexOf instead of search. search
chanpatorikku
2016/08/29 17:14:02
Done.
| |
33 if (-1 == codeKeyIndex) { | |
34 return -1; | |
35 } | |
36 var codeValue = currentURL.substring(codeKeyIndex + 5); | |
37 | |
38 var xHTTP = new XMLHttpRequest(); | |
39 xHTTP.onreadystatechange = function() { | |
40 if (xHTTP.readyState == 4 && xHTTP.status == 200) { | |
41 var obj = JSON.parse(xHTTP.responseText); | |
42 var url = REDIRECT_URI + "?token=" + obj.access_token; | |
43 | |
44 window.open(url, "_self"); | |
45 } | |
46 }; | |
47 | |
48 xHTTP.timeout = 4000; // Set timeout to 4 seconds (4000 milliseconds) | |
49 xHTTP.ontimeout = function () { alert("Timed out"); } | |
50 | |
51 var params = "code=" + codeValue + "&" + | |
52 "client_id=" + CLIENT_ID + "&" + | |
53 "client_secret=" + CLIENT_SECRET + "&" + | |
54 "redirect_uri=" + REDIRECT_URI + "&" + | |
55 "grant_type=authorization_code"; | |
56 | |
57 xHTTP.open("POST", "https://www.googleapis.com/oauth2/v4/token", true); | |
58 xHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); | |
59 xHTTP.send(params); | |
60 } | |
61 | |
5 function moduleDidLoad() { | 62 function moduleDidLoad() { |
6 common.hideModule(); | 63 common.hideModule(); |
7 } | 64 } |
8 | 65 |
9 function $(id) { | 66 function $(id) { |
10 return document.getElementById(id); | 67 return document.getElementById(id); |
11 } | 68 } |
12 | 69 |
13 // Called by the common.js module. | 70 // Called by the common.js module. |
14 function domContentLoaded(name, tc, config, width, height) { | 71 function domContentLoaded(name, tc, config, width, height) { |
15 navigator.webkitPersistentStorage.requestQuota(5 * 1024 * 1024, | 72 navigator.webkitPersistentStorage.requestQuota(5 * 1024 * 1024, |
16 function(bytes) { | 73 function(bytes) { |
17 common.updateStatus( | 74 common.updateStatus( |
18 'Allocated ' + bytes + ' bytes of persistant storage.'); | 75 'Allocated ' + bytes + ' bytes of persistant storage.'); |
19 common.attachDefaultListeners(); | 76 common.attachDefaultListeners(); |
20 common.createNaClModule(name, tc, config, width, height); | 77 |
78 var tokenKeyIndex = currentURL.search("token="); | |
79 if (-1 == tokenKeyIndex) { | |
80 common.createNaClModule(name, tc, config, width, height); | |
81 } else { | |
82 tokenValue = currentURL.substring(tokenKeyIndex + 6); | |
83 var tokenMap = { 'token' : tokenValue }; | |
84 | |
85 common.createNaClModule(name, tc, config, width, height, tokenMap); | |
86 | |
87 document.getElementById("buttonid").disabled = true; | |
88 } | |
21 }, | 89 }, |
22 function(e) { alert('Failed to allocate space') }); | 90 function(e) { alert('Failed to allocate space') }); |
23 } | 91 } |
24 | 92 |
25 // Called by the common.js module. | 93 // Called by the common.js module. |
26 function attachListeners() { | 94 function attachListeners() { |
27 var radioEls = document.querySelectorAll('input[type="radio"]'); | 95 var radioEls = document.querySelectorAll('input[type="radio"]'); |
28 for (var i = 0; i < radioEls.length; ++i) { | 96 for (var i = 0; i < radioEls.length; ++i) { |
29 radioEls[i].addEventListener('click', onRadioClicked); | 97 radioEls[i].addEventListener('click', onRadioClicked); |
30 } | 98 } |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
336 if (!callback) { | 404 if (!callback) { |
337 common.logMessage('Error: Bad message ' + funcName + | 405 common.logMessage('Error: Bad message ' + funcName + |
338 ' received from NaCl module.'); | 406 ' received from NaCl module.'); |
339 return; | 407 return; |
340 } | 408 } |
341 | 409 |
342 delete funcToCallback[funcName]; | 410 delete funcToCallback[funcName]; |
343 callback.apply(null, params); | 411 callback.apply(null, params); |
344 } | 412 } |
345 } else { | 413 } else { |
346 common.logMessage('Error: Unknow message `' + data + | 414 common.logMessage('Error: Unknown message `' + data + |
347 '` received from NaCl module.'); | 415 '` received from NaCl module.'); |
348 } | 416 } |
349 } | 417 } |
OLD | NEW |