Index: native_client_sdk/src/examples/demo/nacl_io_demo/example.js |
diff --git a/native_client_sdk/src/examples/demo/nacl_io_demo/example.js b/native_client_sdk/src/examples/demo/nacl_io_demo/example.js |
index 7cb83c15b65a1563f16b4c0f8f2b5cca811224ed..c3165b2dee1e69b0062f56b3d263381118f08185 100644 |
--- a/native_client_sdk/src/examples/demo/nacl_io_demo/example.js |
+++ b/native_client_sdk/src/examples/demo/nacl_io_demo/example.js |
@@ -1,7 +1,64 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// 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.
|
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+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
|
+var CLIENT_SECRET = "TO FILL"; |
+ |
+var REDIRECT_URI = "http://localhost:5103/index.html"; |
+ |
+var currentURL = window.location.href; |
+var tokenValue = "Set at domContentLoaded()"; |
+ |
+function buttonOnClick() { |
+ var array = new Uint32Array(3); |
+ window.crypto.getRandomValues(array); |
+ var stateValue = array[0].toString() + |
+ array[1].toString() + |
+ array[2].toString(); |
+ |
+ var url = "http://accounts.google.com/o/oauth2/v2/auth?" + |
+ "scope=https://www.googleapis.com/auth/drive" |
+ + "+" + "https://www.googleapis.com/auth/drive.metadata" + "&" + |
+ "state=" + stateValue + "&" + |
+ "redirect_uri=http://localhost:5103/index.html" + "&" + |
+ "response_type=code" + "&" + |
+ "client_id=" + CLIENT_ID; |
+ |
+ window.open(url, "_self"); |
+} |
+ |
+function executeAfterGettingCode() { |
+ 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.
|
+ if (-1 == codeKeyIndex) { |
+ return -1; |
+ } |
+ var codeValue = currentURL.substring(codeKeyIndex + 5); |
+ |
+ var xHTTP = new XMLHttpRequest(); |
+ xHTTP.onreadystatechange = function() { |
+ if (xHTTP.readyState == 4 && xHTTP.status == 200) { |
+ var obj = JSON.parse(xHTTP.responseText); |
+ var url = REDIRECT_URI + "?token=" + obj.access_token; |
+ |
+ window.open(url, "_self"); |
+ } |
+ }; |
+ |
+ xHTTP.timeout = 4000; // Set timeout to 4 seconds (4000 milliseconds) |
+ xHTTP.ontimeout = function () { alert("Timed out"); } |
+ |
+ var params = "code=" + codeValue + "&" + |
+ "client_id=" + CLIENT_ID + "&" + |
+ "client_secret=" + CLIENT_SECRET + "&" + |
+ "redirect_uri=" + REDIRECT_URI + "&" + |
+ "grant_type=authorization_code"; |
+ |
+ xHTTP.open("POST", "https://www.googleapis.com/oauth2/v4/token", true); |
+ xHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); |
+ xHTTP.send(params); |
+} |
+ |
function moduleDidLoad() { |
common.hideModule(); |
} |
@@ -17,7 +74,18 @@ function domContentLoaded(name, tc, config, width, height) { |
common.updateStatus( |
'Allocated ' + bytes + ' bytes of persistant storage.'); |
common.attachDefaultListeners(); |
- common.createNaClModule(name, tc, config, width, height); |
+ |
+ var tokenKeyIndex = currentURL.search("token="); |
+ if (-1 == tokenKeyIndex) { |
+ common.createNaClModule(name, tc, config, width, height); |
+ } else { |
+ tokenValue = currentURL.substring(tokenKeyIndex + 6); |
+ var tokenMap = { 'token' : tokenValue }; |
+ |
+ common.createNaClModule(name, tc, config, width, height, tokenMap); |
+ |
+ document.getElementById("buttonid").disabled = true; |
+ } |
}, |
function(e) { alert('Failed to allocate space') }); |
} |
@@ -343,7 +411,7 @@ function handleMessage(message_event) { |
callback.apply(null, params); |
} |
} else { |
- common.logMessage('Error: Unknow message `' + data + |
+ common.logMessage('Error: Unknown message `' + data + |
'` received from NaCl module.'); |
} |
} |