[CB] поправить кнопку-список поиска (PERFORMANCE WARNING)

Обсуждения на русском языке
User avatar
jars_
Lunatic
Lunatic
Posts: 397
Joined: 2016-12-27, 00:12

[CB] поправить кнопку-список поиска (PERFORMANCE WARNING)

Unread post by jars_ » 2019-02-10, 17:17

Привет.
У мя есть отличная кнопка для переключения поисковиков, отсюда №155
код кнопки скопирую сюда

Code: Select all

// Открыть меню кнопки по левому клику .............
this._handleClick =()=> menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");


// Создать подменю с поисковиками у кнопки ............. 
var menuPopup = self.appendChild(document.createElement("menupopup"));
menuPopup.setAttribute('style', 'overflow: scroll'); 

function setItemsToMenuPopup() {
   menuPopup.textContent = "";      

   var engines = Services.search.getVisibleEngines({});
   engines.forEach(engine=> { 
      var mItem = document.createElement("menuitem");
      mItem.setAttribute("label", engine.name);
      mItem.setAttribute("class", "menuitem-iconic");
      mItem.setAttribute("src", engine.iconURI.spec);
      mItem.onmousedown =()=> setTimeout(()=> Services.search.currentEngine = engine, 0);
      menuPopup.appendChild(mItem);
   })
};  
setItemsToMenuPopup();


// Установить нужную иконку кнопки при старте или при изменениях поисковиках .............
function toggleImage() {
   self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon").
   src = Services.search.currentEngine.iconURI.spec;
};
toggleImage();
   
   
// Наблюдатель за изменениями в поисковиках подменю ............. 
var getEngineModified = {
   observe:(subject, topic, data)=> {
      if ( /changed|removed|current/.test(data) ) { toggleImage(); setItemsToMenuPopup(); };             
   }
};
Services.obs.addObserver(getEngineModified, "browser-search-engine-modified", false);   
addDestructor(()=> Services.obs.removeObserver(getEngineModified, "browser-search-engine-modified"));
С недавнего времени, на неё ругается в Консоль PM:

Code: Select all

PERFORMANCE WARNING: Search service falling back to synchronous initialization. This is generally the consequence of an add-on using a deprecated search service API.
You may find more details about this problem at: https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIBrowserSearchService#async_warning
Callstack:
resource://gre/components/nsSearchService.js 2882 SRCH_SVC__ensureInitialized
resource://gre/components/nsSearchService.js 3929 SRCH_SVC_getVisible
chrome://custombuttons-context/content/button.js?windowId=Firefox&id=custombuttons-button12@init line 1 > Function 23 setItemsToMenuPopup
chrome://custombuttons-context/content/button.js?windowId=Firefox&id=custombuttons-button12@init line 1 > Function 33 anonymous
chrome://custombuttons-context/content/button.js?windowId=Firefox&id=custombuttons-button12@init 1 null
chrome://custombuttons/content/cbbutton.js 281 buttonCbExecuteCode
chrome://custombuttons/content/cbbutton.js 113 buttonInit
chrome://custombuttons/content/cbbuttonimpl.js 4 init
chrome://custombuttons/content/cbbutton.js 70 buttonConstructor/<
Нашел несколько тем по этому "Search service falling back to synchronous initialization"
Error Console: DEPRECATION WARNING: Search service falling back to synchronous initialization. - Pale Moon forum или вот 1017903 - Synchronous initialization of search service when handling open search tag
... но ничего не понял, как переписать эту кнопку чтоб не ругался бравзер :( Прошу помощи, ибо невъежжаю, так какие-то калбэки... тёмный лес :shock:

JustOff

Re: [CB] поправить кнопку-список поиска (PERFORMANCE WARNING)

Unread post by JustOff » 2019-02-10, 18:22

Посмотрите как я решал это тут: Issue #919 (UXP) и Issue #920 (UXP).

Locked