| // Copyright (c) 2013 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. |
| |
| "use strict"; |
| |
| var authToken = ''; |
| |
| function getAuthToken(interactive) { |
| chrome.identity.getAuthToken( |
| {'interactive': interactive}, onGetAuthToken); |
| } |
| |
| function onGetAuthToken(authToken) { |
| var signInEl = document.getElementById('signIn'); |
| var getFileEl = document.getElementById('getFile'); |
| if (authToken) { |
| signInEl.setAttribute('hidden', ''); |
| getFileEl.removeAttribute('hidden'); |
| window.authToken = authToken; |
| |
| // Send the auth token to the NaCl module. |
| common.naclModule.postMessage('token:'+authToken); |
| } else { |
| // There is no auth token; this means that the user has yet to authorize |
| // this app. Display a button to let the user sign in and authorize this |
| // application. |
| signInEl.removeAttribute('hidden'); |
| getFileEl.setAttribute('hidden', ''); |
| } |
| }; |
| |
| // Called by the common.js module. |
| function moduleDidLoad() { |
| // The module is not hidden by default so we can easily see if the plugin |
| // failed to load. |
| common.hideModule(); |
| |
| // Make sure this example is running as a packaged app. If not, display a |
| // warning. |
| if (!chrome.identity) { |
| common.updateStatus('Error: must be run as a packged app.'); |
| return; |
| } |
| |
| // Try to get the authorization token non-interactively. This will often work |
| // if the user has already authorized the app, and the token is cached. |
| getAuthToken(false); |
| } |
| |
| function handleMessage(e) { |
| var msg = e.data; |
| document.getElementById('contents').textContent = msg; |
| } |
| |
| // Called by the common.js module. |
| function attachListeners() { |
| document.getElementById('signIn').addEventListener('click', function () { |
| // Get the authorization token interactively. A dialog box will pop up |
| // asking the user to authorize access to their Drive account. |
| getAuthToken(true); |
| }); |
| |
| document.getElementById('getFile').addEventListener('click', function () { |
| // Clear the file contents dialog box. |
| document.getElementById('contents').textContent = ''; |
| |
| common.naclModule.postMessage('getFile'); |
| }); |
| } |