/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
let gSS = Services.search;

function test() {
  waitForExplicitFinish();

  function observer(aSubject, aTopic, aData) {
    switch (aData) {
      case "engine-added":
        let engine = gSS.getEngineByName("483086a");
        ok(engine, "Test engine 1 installed");
        isnot(engine.searchForm, "foo://example.com",
              "Invalid SearchForm URL dropped");
        gSS.removeEngine(engine);
        break;
      case "engine-removed":
        Services.obs.removeObserver(observer, "browser-search-engine-modified");
        test2();
        break;
    }
  }

  Services.obs.addObserver(observer, "browser-search-engine-modified", false);
  gSS.addEngine("http://mochi.test:8888/browser/browser/components/search/test/483086-1.xml",
                Ci.nsISearchEngine.DATA_XML, "data:image/x-icon;%00",
                false);
}

function test2() {
  function observer(aSubject, aTopic, aData) {
    switch (aData) {
      case "engine-added":
        let engine = gSS.getEngineByName("483086b");
        ok(engine, "Test engine 2 installed");
        is(engine.searchForm, "http://example.com", "SearchForm is correct");
        gSS.removeEngine(engine);
        break;
      case "engine-removed":  
        Services.obs.removeObserver(observer, "browser-search-engine-modified");
        finish();
        break;
    }
  }

  Services.obs.addObserver(observer, "browser-search-engine-modified", false);
  gSS.addEngine("http://mochi.test:8888/browser/browser/components/search/test/483086-2.xml",
                Ci.nsISearchEngine.DATA_XML, "data:image/x-icon;%00",
                false);
}
