diff --git a/mozilla/extensions/sql/Makefile.in b/mozilla/extensions/sql/Makefile.in index 9c2ccf2f955..12300510c7b 100644 --- a/mozilla/extensions/sql/Makefile.in +++ b/mozilla/extensions/sql/Makefile.in @@ -8,11 +8,12 @@ include $(DEPTH)/config/autoconf.mk DIRS = \ base \ pgsql \ - build \ - packager + build ifdef ENABLE_TESTS -DIRS += tests +DIRS += \ + sqltest \ + tests endif include $(topsrcdir)/config/rules.mk diff --git a/mozilla/extensions/sql/build/Makefile.in b/mozilla/extensions/sql/build/Makefile.in index 30b7e0c6b29..1b896a567c0 100644 --- a/mozilla/extensions/sql/build/Makefile.in +++ b/mozilla/extensions/sql/build/Makefile.in @@ -3,7 +3,19 @@ topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ +include $(DEPTH)/config/autoconf.mk + DIRS = \ src include $(topsrcdir)/config/rules.mk + +XPI_FILE = sql-$(shell date +%Y%m%d)-$(OS_ARCH).xpi + +xpi: + zip -j $(DIST)/$(XPI_FILE) $(srcdir)/install.js + cd $(DIST); zip -r $(XPI_FILE) \ + bin/components/sql.xpt \ + bin/components/sqlpgsql.xpt \ + bin/components/$(LIB_PREFIX)sql$(DLL_SUFFIX) \ + bin/chrome/sql.jar diff --git a/mozilla/extensions/sql/packager/install.js b/mozilla/extensions/sql/build/install.js similarity index 85% rename from mozilla/extensions/sql/packager/install.js rename to mozilla/extensions/sql/build/install.js index e9ceed87b6e..faced71e86b 100644 --- a/mozilla/extensions/sql/packager/install.js +++ b/mozilla/extensions/sql/build/install.js @@ -21,22 +21,6 @@ function verifyDiskSpace(dirPath, spaceRequired) return(true); } -// this function deletes a file if it exists -function deleteThisFile(dirKey, file) -{ - var fFileToDelete; - - fFileToDelete = getFolder(dirKey, file); - logComment("File to delete: " + fFileToDelete); - if(File.isFile(fFileToDelete)) - { - File.remove(fFileToDelete); - return(true); - } - else - return(false); -} - var srDest = 200; var err = initInstall("SQL Support", "SQL", "0.1"); diff --git a/mozilla/extensions/sql/packager/Makefile.in b/mozilla/extensions/sql/packager/Makefile.in deleted file mode 100644 index 76263a3b02e..00000000000 --- a/mozilla/extensions/sql/packager/Makefile.in +++ /dev/null @@ -1,18 +0,0 @@ -DEPTH = ../../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -include $(topsrcdir)/config/rules.mk - -XPI_FILE = sql-$(shell date +%Y%m%d)-$(OS_ARCH).xpi - -xpi: - zip -j $(DIST)/$(XPI_FILE) $(srcdir)/install.js - cd $(DIST); zip -r $(XPI_FILE) \ - bin/components/sql.xpt \ - bin/components/sqlpgsql.xpt \ - bin/components/$(LIB_PREFIX)sql$(DLL_SUFFIX) \ - bin/chrome/sql.jar diff --git a/mozilla/extensions/sql/sqltest/Makefile.in b/mozilla/extensions/sql/sqltest/Makefile.in new file mode 100644 index 00000000000..4ddb248a2da --- /dev/null +++ b/mozilla/extensions/sql/sqltest/Makefile.in @@ -0,0 +1,15 @@ +DEPTH = ../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +include $(topsrcdir)/config/rules.mk + +XPI_FILE = sqltest-$(shell date +%Y%m%d).xpi + +xpi: + zip -j $(DIST)/$(XPI_FILE) $(srcdir)/install.js + cd $(DIST); zip -r $(XPI_FILE) \ + bin/chrome/sqltest.jar diff --git a/mozilla/extensions/sql/sqltest/contents.rdf b/mozilla/extensions/sql/sqltest/contents.rdf new file mode 100644 index 00000000000..db9dc86a989 --- /dev/null +++ b/mozilla/extensions/sql/sqltest/contents.rdf @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/mozilla/extensions/sql/sqltest/install.js b/mozilla/extensions/sql/sqltest/install.js new file mode 100644 index 00000000000..d8d07a907be --- /dev/null +++ b/mozilla/extensions/sql/sqltest/install.js @@ -0,0 +1,57 @@ +// this function verifies disk space in kilobytes +function verifyDiskSpace(dirPath, spaceRequired) +{ + var spaceAvailable; + + // Get the available disk space on the given path + spaceAvailable = fileGetDiskSpaceAvailable(dirPath); + + // Convert the available disk space into kilobytes + spaceAvailable = parseInt(spaceAvailable / 1024); + + // do the verification + if(spaceAvailable < spaceRequired) + { + logComment("Insufficient disk space: " + dirPath); + logComment(" required : " + spaceRequired + " K"); + logComment(" available: " + spaceAvailable + " K"); + return(false); + } + + return(true); +} + +var srDest = 100; + +var err = initInstall("SQL test", "SQLTEST", "0.1"); +logComment("initInstall: " + err); + +var fProgram = getFolder("Program"); +logComment("fProgram: " + fProgram); + +if (verifyDiskSpace(fProgram, srDest)) +{ + err = addDirectory("Program", "0.1", "bin", fProgram, "", true); + + logComment("addDirectory() returned: " + err); + + var chromeFolder = getFolder("Chrome", "sqltest.jar"); + registerChrome(CONTENT | DELAYED_CHROME, chromeFolder, "content/sqltest/"); + + err = getLastError(); + if (err == ACCESS_DENIED) { + alert("Unable to write to program directory " + fProgram + ".\n You will need to restart the browser with administrator/root privileges to install this software. After installing as root (or administrator), you will need to restart the browser one more time to register the installed software.\n After the second restart, you can go back to running the browser without privileges!"); + cancelInstall(err); + logComment("cancelInstall() due to error: " + err); + } + else if (err != SUCCESS) { + cancelInstall(err); + logComment("cancelInstall() due to error: " + err); + } + else { + performInstall(); + logComment("performInstall() returned: " + err); + } +} +else + cancelInstall(INSUFFICIENT_DISK_SPACE); diff --git a/mozilla/extensions/sql/sqltest/jar.mn b/mozilla/extensions/sql/sqltest/jar.mn new file mode 100644 index 00000000000..b2a2625ae2a --- /dev/null +++ b/mozilla/extensions/sql/sqltest/jar.mn @@ -0,0 +1,7 @@ +sqltest.jar: + content/sqltest/contents.rdf (contents.rdf) + content/sqltest/sqltest.xul (sqltest.xul) + content/sqltest/sqltest.js (sqltest.js) + content/sqltest/sqltest.css (sqltest.css) + content/sqltest/sqltestDialog.xul (sqltestDialog.xul) + content/sqltest/sqltestDialog.js (sqltestDialog.js) diff --git a/mozilla/extensions/sql/sqltest/sqltest.css b/mozilla/extensions/sql/sqltest/sqltest.css new file mode 100644 index 00000000000..309969a950c --- /dev/null +++ b/mozilla/extensions/sql/sqltest/sqltest.css @@ -0,0 +1,8 @@ +treechildren:-moz-tree-cell { + border-right: 1px solid ThreeDFace; + border-bottom: 1px solid ThreeDFace; +} + +.spacer { + height: 10px; +} diff --git a/mozilla/extensions/sql/sqltest/sqltest.js b/mozilla/extensions/sql/sqltest/sqltest.js new file mode 100644 index 00000000000..8f1f5d853aa --- /dev/null +++ b/mozilla/extensions/sql/sqltest/sqltest.js @@ -0,0 +1,126 @@ +const alias = "urn:aliases:sqltest"; +const complete = Components.interfaces.mozISqlRequest.STATUS_COMPLETE; + +var connection; +var result; + +var startupObserver = { + onStartRequest: function(request, ctxt) { + }, + onStopRequest: function(request, ctxt) { + if (request.status == complete) { + result = request.result; + var ds = result.QueryInterface(Components.interfaces.nsIRDFDataSource); + + var menulist = document.getElementById("statesMenulist"); + menulist.database.AddDataSource(ds); + menulist.builder.rebuild(); + menulist.selectedIndex = 0; + + var tree = document.getElementById("statesTree"); + tree.database.AddDataSource(ds); + tree.builder.rebuild(); + } + else { + alert(request.errorMessage); + } + } +}; + +var observer = { + onStartRequest: function(request, ctxt) { + }, + + onStopRequest: function(request, ctxt) { + if (request.status == complete) { + var element = document.getElementById("asyncStateName"); + if (request.result.rowCount) { + var enumerator = request.result.enumerate(); + enumerator.first(); + element.value = enumerator.getVariant(0); + } + else { + element.value = "Not found"; + } + } + else { + alert(request.errorMessage); + } + } +}; + +function init() { + var service = Components.classes["@mozilla.org/sql/service;1"] + .getService(Components.interfaces.mozISqlService); + + if (!service.hasAlias(alias)) { + alert("The alias for the sqltest was not defined."); + return; + } + + try { + connection = service.getConnection(alias); + } + catch (ex) { + alert(service.errorMessage); + return; + } + + var query = "select code, name from states"; + var request = connection.asyncExecuteQuery(query, null, startupObserver); +} + +function syncFindState() { + var code = document.getElementById("syncStateCode").value + var query = "select name from states where code = '" + code + "'"; + try { + var result = connection.executeQuery(query); + var element = document.getElementById("syncStateName"); + if (result.rowCount) { + var enumerator = result.enumerate(); + enumerator.first(); + element.value = enumerator.getVariant(0); + } + else { + element.value = "Not found"; + } + } + catch (ex) { + alert(connection.errorMessage); + } +} + +function asyncFindState() { + var code = document.getElementById("asyncStateCode").value; + var query = "select name from states where code = '" + code + "'"; + var request = connection.asyncExecuteQuery(query, null, observer); +} + +function getSelectedRowIndex() { + var tree = document.getElementById("statesTree"); + var currentIndex = tree.currentIndex; + var resource = tree.builderView.getResourceAtIndex(currentIndex); + var datasource = result.QueryInterface(Components.interfaces.mozISqlDataSource); + return datasource.getIndexOfResource(resource); +} + +function doInsert() { + window.openDialog("sqltestDialog.xul", "testDialog", "chrome,modal=yes,resizable=no", result); +} + +function doUpdate() { + var rowIndex = this.getSelectedRowIndex(); + window.openDialog("sqltestDialog.xul", "testDialog", "chrome,modal=yes,resizable=no", result, rowIndex); +} + +function doDelete() { + var rowIndex = this.getSelectedRowIndex(); + var enumerator = result.enumerate(); + enumerator.absolute(rowIndex); + try { + enumerator.deleteRow(); + } + catch(ex) { + alert(enumerator.errorMessage); + } +} diff --git a/mozilla/extensions/sql/sqltest/sqltest.xul b/mozilla/extensions/sql/sqltest/sqltest.xul new file mode 100644 index 00000000000..acd01fd2d93 --- /dev/null +++ b/mozilla/extensions/sql/sqltest/sqltest.xul @@ -0,0 +1,118 @@ + + + + + + + +