chromium/native_client_sdk/src/examples/demo/drive/example.js

// Copyright 2013 The Chromium Authors
// 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');
  });
}