Google Gears

1 Architecture

No data layer

1.1 Data Layer

Data Layer

1.2 Data Switch Layer

Data Switch Layer

1.3 Local Data Layer

Local Data Layer

1.4 Modality

1.5 Synchronization

1.6 Background Sync

Background Sync

2 Security

3 Factory

<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
// Check whether Google Gears is installed.
if (window.google && google.gears) {
  // Instantiate Gears objects
  var db = google.gears.factory.create('beta.database');
  db.open();
}
</script>

4 Database

<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
var db = google.gears.factory.create('beta.database');
db.open('database-test');
db.execute('create table if not exists Test' +
           ' (Phrase text, Timestamp int)');
db.execute('insert into Test values (?, ?)', ['Monkey!', new Date().getTime()]);
var rs = db.execute('select * from Test order by Timestamp desc');

while (rs.isValidRow()) {
  alert(rs.field(0) + '@' + rs.field(1));
  rs.next();
}
rs.close();
</script>

5 HttpRequest

<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
var request = google.gears.factory.create('beta.httprequest');
request.open('GET', '/index.html');
request.onreadystatechange = function() {
  if (request.readyState == 4) {
    console.write(request.responseText);
  }
};
</script>

6 Local Server

<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
var localServer = google.gears.factory.create('beta.localserver');
var store = localServer.createManagedStore('test-store');
store.manifestUrl = 'site-manifest.txt';
store.checkForUpdate();
</script>
// site-manifest.txt
{
  "betaManifestVersion": 1,
  "version": "site_version_string",
  "entries": [
    { "url": "site.html" },
    { "url": "gears_init.js" }
  ]
}

7 Timer

var timer = google.gears.factory.create('beta.timer');
timer.setTimeout(function() { alert('Hello, from the future!'); },
                 1000);

8 WorkerPool

// main.js
var workerPool = google.gears.factory.create('beta.workerpool');

workerPool.onmessage = function(a, b, message) {
  alert('Received message from worker ' + message.sender + ': ' + message.text);
};

var childWorkerId = workerPool.createWorkerFromUrl('worker.js');

workerPool.sendMessage('Hello, world!', childWorkerId);
// worker.js
var wp = google.gears.workerPool;
wp.onmessage = function(a, b, message) {
  wp.sendMessage('Received: ' + message.text, message.sender);
}

9 Conclusion

URLs

  1. Google Gears API, http://code.google.com/apis/gears/
  2. architecture, http://code.google.com/apis/gears/architecture.html
  3. database, http://code.google.com/apis/gears/api_database.html

This talk available at http://jmvidal.cse.sc.edu/talks/googlegears/
Copyright © 2008 José M. Vidal . All rights reserved.

17 April 2008, 03:25PM