1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/components/search/tests/xpcshell/test_serialize_file.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,92 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +/* 1.8 + * test_serialize_file: Add test engines 1.9 + * 1.10 + * Ensure that : 1.11 + * - File is created. 1.12 + * - File size is bigger than 0. 1.13 + * - lazySerializeTask updates the file. 1.14 + */ 1.15 + 1.16 +const Ci = Components.interfaces; 1.17 +const Cu = Components.utils; 1.18 + 1.19 +Cu.import("resource://testing-common/httpd.js"); 1.20 +Cu.import("resource://gre/modules/NetUtil.jsm"); 1.21 + 1.22 +add_test(function test_batchTask() { 1.23 + let observer = function(aSubject, aTopic, aData) { 1.24 + if (aTopic == "browser-search-engine-modified" && aData == "engine-loaded") { 1.25 + let engine1 = Services.search.getEngineByName("Test search engine"); 1.26 + let engine2 = Services.search.getEngineByName("Sherlock test search engine"); 1.27 + if (engine1 && engine2) { 1.28 + Services.obs.removeObserver(observer, aTopic); 1.29 + // Test that files are written correctly. 1.30 + let engineFile1 = engine1.wrappedJSObject._file; 1.31 + let engineFile2 = engine2.wrappedJSObject._file; 1.32 + do_check_true(engineFile1.exists()); 1.33 + do_check_true(engineFile2.exists()); 1.34 + do_check_neq(engineFile1.fileSize, 0); 1.35 + do_check_neq(engineFile2.fileSize, 0); 1.36 + run_next_test(); 1.37 + } 1.38 + } 1.39 + } 1.40 + 1.41 + Services.obs.addObserver(observer, "browser-search-engine-modified", false); 1.42 + Services.search.addEngine("http://localhost:4444/data/engine.xml", 1.43 + Ci.nsISearchEngine.DATA_XML, null, false); 1.44 + Services.search.addEngine("http://localhost:4444/data/engine.src", 1.45 + Ci.nsISearchEngine.DATA_TEXT, 1.46 + "http://localhost:4444/data/ico-size-16x16-png.ico", 1.47 + false); 1.48 +}); 1.49 + 1.50 +add_test(function test_addParam() { 1.51 + let engine = Services.search.getEngineByName("Test search engine"); 1.52 + engine.addParam("param-name", "param-value", null); 1.53 + 1.54 + function readAsyncFile(aFile, aCallback) { 1.55 + NetUtil.asyncFetch(aFile, function(inputStream, status) { 1.56 + do_check_true(Components.isSuccessCode(status)); 1.57 + 1.58 + let data = NetUtil.readInputStreamToString(inputStream, inputStream.available()); 1.59 + aCallback(data); 1.60 + }); 1.61 + } 1.62 + 1.63 + let observer = function(aSubject, aTopic, aData) { 1.64 + // The sherlock engine file may still be updated because the icon takes 1.65 + // time be loaded, therefore, the engine name is checked here. 1.66 + aSubject.QueryInterface(Ci.nsIFile); 1.67 + if (aTopic == "browser-search-service" && 1.68 + aData == "write-engine-to-disk-complete" && 1.69 + aSubject.leafName == "test-search-engine.xml") { 1.70 + Services.obs.removeObserver(observer, aTopic); 1.71 + 1.72 + let engineFile = engine.wrappedJSObject._file; 1.73 + 1.74 + readAsyncFile(engineFile, function(engineData) { 1.75 + do_check_true(engineData.indexOf("param-name") > 0); 1.76 + run_next_test(); 1.77 + }); 1.78 + } 1.79 + } 1.80 + Services.obs.addObserver(observer, "browser-search-service", false); 1.81 +}); 1.82 + 1.83 +function run_test() { 1.84 + updateAppInfo(); 1.85 + 1.86 + let httpServer = new HttpServer(); 1.87 + httpServer.start(4444); 1.88 + httpServer.registerDirectory("/", do_get_cwd()); 1.89 + 1.90 + do_register_cleanup(function cleanup() { 1.91 + httpServer.stop(function() {}); 1.92 + }); 1.93 + 1.94 + run_next_test(); 1.95 +}