1 // Copyright 2007, Google Inc.
3 // Redistribution and use in source and binary forms, with or without
4 // modification, are permitted provided that the following conditions are met:
6 // 1. Redistributions of source code must retain the above copyright notice,
7 // this list of conditions and the following disclaimer.
8 // 2. Redistributions in binary form must reproduce the above copyright notice,
9 // this list of conditions and the following disclaimer in the documentation
10 // and/or other materials provided with the distribution.
11 // 3. Neither the name of Google Inc. nor the names of its contributors may be
12 // used to endorse or promote products derived from this software without
13 // specific prior written permission.
15 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
16 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
17 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
18 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
21 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
24 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 // Change this to set the name of the managed resource store to create.
27 // You use the name with the createManagedStore, and removeManagedStore,
28 // and openManagedStore APIs. It isn't visible to the user.
29 var STORE_NAME = "my_offline_docset";
31 // Change this to set the URL of tha manifest file, which describe which
32 // URLs to capture. It can be relative to the current page, or an
34 var MANIFEST_FILENAME = "tutorial_manifest.json";
39 // Called onload to initialize local server and store variables
41 if (!window.google || !google.gears) {
42 textOut("NOTE: You must install Google Gears first.");
44 localServer = google.gears.factory.create("beta.localserver");
45 store = localServer.createManagedStore(STORE_NAME);
46 textOut("Yeay, Google Gears is already installed.");
50 // Create the managed resource store
51 function createStore() {
52 if (!window.google || !google.gears) {
53 alert("You must install Google Gears first.");
57 store.manifestUrl = MANIFEST_FILENAME;
58 store.checkForUpdate();
60 var timerId = window.setInterval(function() {
61 // When the currentVersion property has a value, all of the resources
62 // listed in the manifest file for that version are captured. There is
63 // an open bug to surface this state change as an event.
64 if (store.currentVersion) {
65 window.clearInterval(timerId);
66 textOut("The documents are now available offline.\n" +
67 "With your browser offline, load the document at " +
68 "its normal online URL to see the locally stored " +
69 "version. The version stored is: " +
70 store.currentVersion);
71 } else if (store.updateStatus == 3) {
72 textOut("Error: " + store.lastErrorMessage);
77 // Remove the managed resource store.
78 function removeStore() {
79 if (!window.google || !google.gears) {
80 alert("You must install Google Gears first.");
84 localServer.removeManagedStore(STORE_NAME);
85 textOut("Done. The local store has been removed." +
86 "You will now see online versions of the documents.");
89 // Utility function to output some status text.
91 var elm = document.getElementById("textOut");
92 while (elm.firstChild) {
93 elm.removeChild(elm.firstChild);
95 elm.appendChild(document.createTextNode(s));