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

Unified Diff: native_client_sdk/src/examples/demo/googledrivefs_demo/example.js

Issue 2156503002: [NaCl SDK] Expose Google Drive to nacl_io. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/examples/demo/googledrivefs_demo/example.js
diff --git a/native_client_sdk/src/examples/demo/nacl_io_demo/example.js b/native_client_sdk/src/examples/demo/googledrivefs_demo/example.js
similarity index 61%
copy from native_client_sdk/src/examples/demo/nacl_io_demo/example.js
copy to native_client_sdk/src/examples/demo/googledrivefs_demo/example.js
index 7cb83c15b65a1563f16b4c0f8f2b5cca811224ed..6cc14dad3f94b8ad7721ea1e1e4878831ea9df28 100644
--- a/native_client_sdk/src/examples/demo/nacl_io_demo/example.js
+++ b/native_client_sdk/src/examples/demo/googledrivefs_demo/example.js
@@ -1,7 +1,65 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright (c) 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// Obtain a client ID and client secret from Google Developers Console
+var CLIENT_ID = "TO FILL";
+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=");
+ 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();
}
@@ -10,19 +68,22 @@ function $(id) {
return document.getElementById(id);
}
-// Called by the common.js module.
function domContentLoaded(name, tc, config, width, height) {
- navigator.webkitPersistentStorage.requestQuota(5 * 1024 * 1024,
- function(bytes) {
- common.updateStatus(
- 'Allocated ' + bytes + ' bytes of persistant storage.');
- common.attachDefaultListeners();
- common.createNaClModule(name, tc, config, width, height);
- },
- function(e) { alert('Failed to allocate space') });
+ common.attachDefaultListeners();
+
+ 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;
+ }
}
-// Called by the common.js module.
function attachListeners() {
var radioEls = document.querySelectorAll('input[type="radio"]');
for (var i = 0; i < radioEls.length; ++i) {
@@ -40,33 +101,6 @@ function attachListeners() {
var func = window[id];
buttonEl.addEventListener('click', func);
}
-
- $('pipe_input_box').addEventListener('keypress', onPipeInput)
- $('pipe_output').disabled = true;
-
- $('pipe_name').addEventListener('change',
- function() { $('pipe_output').value = ''; })
-}
-
-// Called with keypress events on the pipe input box
-function onPipeInput(e) {
- // Create an arraybuffer containing the 16-bit char code
- // from the keypress event.
- var buffer = new ArrayBuffer(1*2);
- var bufferView = new Uint16Array(buffer);
- bufferView[0] = e.charCode;
-
- // Pass the buffer in a dictionary over the NaCl module
- var pipeSelect = $('pipe_name');
- var pipeName = pipeSelect[pipeSelect.selectedIndex].value;
- var message = {
- pipe: pipeName,
- operation: 'write',
- payload: buffer,
- };
- nacl_module.postMessage(message);
- e.preventDefault();
- return false;
}
function onRadioClicked(e) {
@@ -233,67 +267,6 @@ function getcwd(e) {
});
}
-function getaddrinfo(e) {
- var name = $('getaddrinfoName').value;
- var family = $('getaddrinfoFamily').value;
- postCall('getaddrinfo', name, family, function(name, addrType) {
- common.logMessage('getaddrinfo returned successfully');
- common.logMessage('ai_cannonname = ' + name + '.');
- var count = 1;
- for (var i = 1; i < arguments.length; i+=2) {
- var msg = 'Address number ' + count + ' = ' + arguments[i] +
- ' (' + arguments[i+1] + ')';
- common.logMessage(msg);
- count += 1;
- }
- });
-}
-
-function gethostbyname(e) {
- var name = $('gethostbynameName').value;
- postCall('gethostbyname', name, function(name, addrType) {
- common.logMessage('gethostbyname returned successfully');
- common.logMessage('h_name = ' + name + '.');
- common.logMessage('h_addr_type = ' + addrType + '.');
- for (var i = 2; i < arguments.length; i++) {
- common.logMessage('Address number ' + (i-1) + ' = ' + arguments[i] + '.');
- }
- });
-}
-
-function connect(e) {
- var host = $('connectHost').value;
- var port = parseInt($('connectPort').value, 10);
- postCall('connect', host, port, function(sockhandle) {
- common.logMessage('connected');
- addNameToSelectElements('.sock-handle', sockhandle, '[socket]');
- });
-}
-
-function recv(e) {
- var handle = parseInt($('recvHandle').value, 10);
- var bufferSize = parseInt($('recvBufferSize').value, 10);
- postCall('recv', handle, bufferSize, function(messageLen, message) {
- common.logMessage("received " + messageLen + ' bytes: ' + message);
- });
-}
-
-function send(e) {
- var handle = parseInt($('sendHandle').value, 10);
- var message = $('sendMessage').value;
- postCall('send', handle, message, function(sentBytes) {
- common.logMessage("sent bytes: " + sentBytes);
- });
-}
-
-function close(e) {
- var handle = parseInt($('closeHandle').value, 10);
- postCall('close', handle, function(sock) {
- removeNameFromSelectElements('.sock-handle', sock, "[socket]");
- common.logMessage("closed socket: " + sock);
- });
-}
-
var funcToCallback = {};
function postCall(func) {
@@ -310,40 +283,26 @@ function ArrayBufferToString(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}
-// Called by the common.js module.
function handleMessage(message_event) {
var data = message_event.data;
if ((typeof(data) === 'string' || data instanceof String)) {
common.logMessage(data);
} else if (data instanceof Object) {
- var pipeName = data['pipe']
- if (pipeName !== undefined) {
- // Message for JavaScript I/O pipe
- var operation = data['operation'];
- if (operation == 'write') {
- $('pipe_output').value += ArrayBufferToString(data['payload']);
- } else if (operation == 'ack') {
- common.logMessage(pipeName + ": ack:" + data['payload']);
- } else {
- common.logMessage('Got unexpected pipe operation: ' + operation);
- }
- } else {
- // Result from a function call.
- var params = data.args;
- var funcName = data.cmd;
- var callback = funcToCallback[funcName];
-
- if (!callback) {
- common.logMessage('Error: Bad message ' + funcName +
- ' received from NaCl module.');
- return;
- }
-
- delete funcToCallback[funcName];
- callback.apply(null, params);
+ // Result from a function call.
+ var params = data.args;
+ var funcName = data.cmd;
+ var callback = funcToCallback[funcName];
+
+ if (!callback) {
+ common.logMessage('Error: Bad message ' + funcName +
+ ' received from NaCl module.');
+ return;
}
+
+ delete funcToCallback[funcName];
+ callback.apply(null, params);
} else {
- common.logMessage('Error: Unknow message `' + data +
+ common.logMessage('Error: Unknown message `' + data +
'` received from NaCl module.');
}
}

Powered by Google App Engine
This is Rietveld 408576698