%tabBrowserDTD; ]> Components.classes['@mozilla.org/preferences-service;1'] .getService(Components.interfaces.nsIPrefService) .getBranch(null); document.getAnonymousNodes(this)[1] this.mTabBox.firstChild this.mStrip.childNodes[2] this.mTabBox.childNodes[1] document.getAnonymousNodes(this)[0] null null null new Array() new Array() false false null null return !this.mStrip.collapsed; 0) { // Use the filter hooked up in our addProgressListener filter = this.mTabFilters[0]; } else { // create a filter and hook it up to our first browser filter = Components.classes["@mozilla.org/appshell/component/browser-status-filter;1"] .createInstance(Components.interfaces.nsIWebProgress); this.mTabFilters[0] = filter; this.mCurrentBrowser.webProgress.addProgressListener(filter, Components.interfaces.nsIWebProgress.NOTIFY_ALL); } // Remove all our progress listeners from the active browser's filter. if (this.mProgressListeners) { for (var i = 0; i < this.mProgressListeners.length; i++) { var p = this.mProgressListeners[i]; if (p) filter.removeProgressListener(p); } } // Wire up a progress listener to our filter. const listener = this.mTabProgressListener(this.mCurrentTab, this.mCurrentBrowser, false); filter.addProgressListener(listener, Components.interfaces.nsIWebProgress.NOTIFY_ALL); this.mTabListeners[0] = listener; ]]> , only set the // autocomplete attribute if autocomplete is actually enabled, so we can // just test with |hasAttribute| in 's load handler. if (this.getAttribute("autocompleteenabled") == "true") b.setAttribute("autocompleteenabled", "true"); this.mPanelContainer.appendChild(b); b.addEventListener("DOMTitleChanged", this.onTitleChanged, false); if (this.mStrip.collapsed) this.setStripVisibilityTo(true); this.mPrefs.setBoolPref("browser.tabs.forceHide", false); // wire up a progress listener for the new browser object. var position = this.mTabContainer.childNodes.length-1; var tabListener = this.mTabProgressListener(t, b, blank); const filter = Components.classes["@mozilla.org/appshell/component/browser-status-filter;1"] .createInstance(Components.interfaces.nsIWebProgress); filter.addProgressListener(tabListener, Components.interfaces.nsIWebProgress.NOTIFY_ALL); b.webProgress.addProgressListener(filter, Components.interfaces.nsIWebProgress.NOTIFY_ALL); this.mTabListeners[position] = tabListener; this.mTabFilters[position] = filter; if (!blank) { if (aPostData === undefined) aPostData = null; b.loadURIWithFlags(aURI, nsIWebNavigation.LOAD_FLAGS_NONE, aReferrerURI, aPostData, null); } return t; ]]> = 0; --i) { if (childNodes[i] != aTab) this.removeTab(childNodes[i]); } ]]> index) newIndex = currentIndex-1; else if (currentIndex < index) newIndex = currentIndex; else if (index == l - 1) newIndex = index-1; else newIndex = index; var oldTab = aTab; // clean up the before/afterselected attributes before removing the tab oldTab.selected = false; // XXX browser's destructor isn't always called, so we force a cleanup ourselves oldBrowser.destroy(); this.mTabContainer.removeChild(oldTab); this.mPanelContainer.removeChild(oldBrowser); this.selectedTab = this.mTabContainer.childNodes[newIndex]; this.mPanelContainer.selectedIndex = newIndex; this.updateCurrentBrowser(); } ]]> s. this.mPanelContainer.addEventListener("DOMLinkAdded", this.onLinkAdded, false); } if (!this.mTabbedMode && this.mProgressListeners.length == 1) { // If we are adding a 2nd progress listener, we need to enter tabbed mode // because the browser status filter can only handle one progress listener. // In tabbed mode, mTabProgressListener is used which will iterate over all listeners. this.enterTabbedMode(); } this.mProgressListeners.push(aListener); if (!this.mTabbedMode) { // If someone does this: // addProgressListener, removeProgressListener, addProgressListener // don't create a new filter; reuse the existing filter. if (this.mTabFilters.length == 0) { // hook a filter up to our first browser const filter = Components.classes["@mozilla.org/appshell/component/browser-status-filter;1"] .createInstance(Components.interfaces.nsIWebProgress); this.mTabFilters[0] = filter; this.mCurrentBrowser.webProgress.addProgressListener(filter, Components.interfaces.nsIWebProgress.NOTIFY_ALL); } // Directly hook the listener up to the filter for better performance this.mTabFilters[0].addProgressListener(aListener, aMask); } ]]> return this.mTabContainer; return this.mTabBox.selectedTab; 's |attachFormFill| method is. cb.setAttribute("autocompleteenabled", "true"); cb.attachFormFill(); } ]]>