forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* 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/. */
 | 
						|
 | 
						|
/* import-globals-from ../main.js */
 | 
						|
 | 
						|
let gAddEngineDialog = {
 | 
						|
  _form: null,
 | 
						|
  _name: null,
 | 
						|
  _alias: null,
 | 
						|
 | 
						|
  onLoad() {
 | 
						|
    document.mozSubdialogReady = this.init();
 | 
						|
  },
 | 
						|
 | 
						|
  async init() {
 | 
						|
    this._dialog = document.querySelector("dialog");
 | 
						|
    this._form = document.getElementById("addEngineForm");
 | 
						|
    this._name = document.getElementById("engineName");
 | 
						|
    this._alias = document.getElementById("engineAlias");
 | 
						|
 | 
						|
    this._name.addEventListener("input", this.onNameInput.bind(this));
 | 
						|
    this._alias.addEventListener("input", this.onAliasInput.bind(this));
 | 
						|
    this._form.addEventListener("input", this.onFormInput.bind(this));
 | 
						|
 | 
						|
    document.addEventListener("dialogaccept", this.onAddEngine.bind(this));
 | 
						|
  },
 | 
						|
 | 
						|
  async onAddEngine(event) {
 | 
						|
    let url = document
 | 
						|
      .getElementById("engineUrl")
 | 
						|
      .value.replace(/%s/, "{searchTerms}");
 | 
						|
    await Services.search.wrappedJSObject.addUserEngine(
 | 
						|
      this._name.value,
 | 
						|
      url,
 | 
						|
      this._alias.value
 | 
						|
    );
 | 
						|
  },
 | 
						|
 | 
						|
  async onNameInput() {
 | 
						|
    if (this._name.value) {
 | 
						|
      let engine = Services.search.getEngineByName(this._name.value);
 | 
						|
      let validity = engine
 | 
						|
        ? document.getElementById("engineNameExists").textContent
 | 
						|
        : "";
 | 
						|
      this._name.setCustomValidity(validity);
 | 
						|
    }
 | 
						|
  },
 | 
						|
 | 
						|
  async onAliasInput() {
 | 
						|
    let validity = "";
 | 
						|
    if (this._alias.value) {
 | 
						|
      let engine = await Services.search.getEngineByAlias(this._alias.value);
 | 
						|
      if (engine) {
 | 
						|
        engine = document.getElementById("engineAliasExists").textContent;
 | 
						|
      }
 | 
						|
    }
 | 
						|
    this._alias.setCustomValidity(validity);
 | 
						|
  },
 | 
						|
 | 
						|
  async onFormInput() {
 | 
						|
    this._dialog.setAttribute(
 | 
						|
      "buttondisabledaccept",
 | 
						|
      !this._form.checkValidity()
 | 
						|
    );
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
window.addEventListener("load", () => gAddEngineDialog.onLoad());
 |