From bf164f4161b177c10de25dfda2f56251dc8b3ee8 Mon Sep 17 00:00:00 2001 From: Fil Maj Date: Wed, 6 Apr 2011 10:50:24 -0700 Subject: [PATCH] Fix for ticket 121: Checking for null return on native openDatabase call not enough as only allowed one DB per PhoneGap app. Have to proxy openDatabase and check at runtime. --- framework/assets/js/storage.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/framework/assets/js/storage.js b/framework/assets/js/storage.js index b2255663..97d0ecad 100755 --- a/framework/assets/js/storage.js +++ b/framework/assets/js/storage.js @@ -385,10 +385,22 @@ var CupcakeLocalStorage = function() { } }; PhoneGap.addConstructor(function() { - if (typeof window.openDatabase === "undefined" || window.openDatabase("test", "1.0", "TestDB", 1000) == null) { + var setupDroidDB = function() { navigator.openDatabase = window.openDatabase = DroidDB_openDatabase; window.droiddb = new DroidDB(); } + if (typeof window.openDatabase === "undefined") { + setupDroidDB(); + } else { + window.openDatabase_orig = window.openDatabase; + window.openDatabase = function(name, version, desc, size) { + var db = window.openDatabase_orig(name, version, desc, size); + if (db == null) { + setupDroidDB(); + return DroidDB_openDatabas/e(name, version, desc, size); + } else return db; + } + } if (typeof window.localStorage === "undefined") { navigator.localStorage = window.localStorage = new CupcakeLocalStorage();