%notificationDTD; %browserDTD; %brandDTD; ]> (Components.utils.import("resource://gre/modules/AppConstants.jsm", {})).AppConstants; "" false false true true { [url, postData, mayInheritPrincipal] = response; if (url) { matchLastLocationChange = (lastLocationChange == gBrowser.selectedBrowser.lastLocationChange); continueOperation.call(this); } }); } function continueOperation() { this.value = url; gBrowser.userTypedValue = url; try { addToUrlbarHistory(url); } catch (ex) { // Things may go wrong when adding url to session history, // but don't let that interfere with the loading of the url. Cu.reportError(ex); } let loadCurrent = () => { try { openUILinkIn(url, "current", { allowThirdPartyFixup: true, indicateErrorPageLoad: true, disallowInheritPrincipal: !mayInheritPrincipal, allowPinnedTabHostChange: true, postData: postData, allowPopups: url.startsWith("javascript:"), }); } catch (ex) { // This load can throw an exception in certain cases, which means // we'll want to replace the URL with the loaded URL: if (ex.result != Cr.NS_ERROR_LOAD_SHOWED_ERRORPAGE) { this.handleRevert(); } } // Ensure the start of the URL is visible for UX reasons: this.selectionStart = this.selectionEnd = 0; }; // Focus the content area before triggering loads, since if the load // occurs in a new tab, we want focus to be restored to the content // area when the current tab is re-selected. gBrowser.selectedBrowser.focus(); delete gBrowser.selectedBrowser.canceledAuthenticationPromptCounter; let isMouseEvent = aTriggeringEvent instanceof MouseEvent; // If the current tab is empty, ignore Alt+Enter (just reuse this tab) let altEnter = !isMouseEvent && aTriggeringEvent && aTriggeringEvent.altKey && !isTabEmpty(gBrowser.selectedTab); if (isMouseEvent || altEnter) { // Use the standard UI link behaviors for clicks or Alt+Enter let where = "tab"; if (isMouseEvent) where = whereToOpenLink(aTriggeringEvent, false, false); if (where == "current") { if (matchLastLocationChange) { loadCurrent(); } } else { this.handleRevert(); let params = { allowThirdPartyFixup: true, postData: postData, initiatingDoc: document }; openUILinkIn(url, where, params); } } else { if (matchLastLocationChange) { loadCurrent(); } } } ]]> = 0) { url = url.substring(0, firstSlash) + suffix + url.substring(firstSlash + 1); } else { url = url + suffix; } url = "http://www." + url; } } getShortcutOrURIAndPostData(url).then(data => { aCallback([data.url, data.postData, data.mayInheritPrincipal]); }); ]]> false var types = aEvent.dataTransfer.types; if (types.contains("application/x-moz-file") || types.contains("text/x-moz-url") || types.contains("text/uri-list") || types.contains("text/unicode")) aEvent.preventDefault(); 0 || this.valueIsTyped) return selectedVal; // The selection doesn't span the full domain if it doesn't contain a slash and is // followed by some character other than a slash. if (!selectedVal.includes("/")) { let remainder = inputVal.replace(selectedVal, ""); if (remainder != "" && remainder[0] != "/") return selectedVal; } let uriFixup = Cc["@mozilla.org/docshell/urifixup;1"].getService(Ci.nsIURIFixup); let uri; try { uri = uriFixup.createFixupURI(inputVal, Ci.nsIURIFixup.FIXUP_FLAG_NONE); } catch (e) {} if (!uri) return selectedVal; // Only copy exposable URIs try { uri = uriFixup.createExposableURI(uri); } catch (ex) {} // If the entire URL is selected, just use the actual loaded URI. if (inputVal == selectedVal) { // ... but only if isn't a javascript: or data: URI, since those // are hard to read when encoded if (!uri.schemeIs("javascript") && !uri.schemeIs("data")) { // Parentheses are known to confuse third-party applications (bug 458565). selectedVal = uri.spec.replace(/[()]/g, c => escape(c)); } return selectedVal; } // Just the beginning of the URL is selected, check for a trimmed // value let spec = uri.spec; let trimmedSpec = this.trimValue(spec); if (spec != trimmedSpec) { // Prepend the portion that trimValue removed from the beginning. // This assumes trimValue will only truncate the URL at // the beginning or end (or both). let trimmedSegments = spec.split(trimmedSpec); selectedVal = trimmedSegments[0] + selectedVal; } return selectedVal; ]]> = 0) { this._disableTrim = true; } this.value = val; this._disableTrim = false; // Completing a result should simulate the user typing the result, so // fire an input event. let evt = document.createEvent("UIEvents"); evt.initUIEvent("input", true, false, window, 0); this.mIgnoreInput = true; this.dispatchEvent(evt); this.mIgnoreInput = false; return this.value; ]]> = 0 && !this._noActionsKeys.has(event.keyCode)) { if (this._noActionsKeys.size == 0) { this.popup.setAttribute("noactions", "true"); this.removeAttribute("actiontype"); } this._noActionsKeys.add(event.keyCode); } ]]> " + urlString + ""; var dt = event.dataTransfer; dt.setData("text/x-moz-url", urlString + "\n" + title); dt.setData("text/unicode", urlString); dt.setData("text/html", htmlString); dt.effectAllowed = "copyLink"; event.stopPropagation(); ]]> (Components.utils.import("resource://gre/modules/AppConstants.jsm", {})).AppConstants; &urlbar.searchSuggestionsNotification.question; 0 Cc["@mozilla.org/intl/stringbundle;1"]. getService(Ci.nsIStringBundleService). createBundle("chrome://browser/locale/places/places.properties"); document.getAnonymousElementByAttribute( this, "anonid", "search-suggestions-notification" ); document.getAnonymousElementByAttribute(this, "anonid", "footer"); maxRow && index != maxRow) newIndex = maxRow; else if (!reverse && index == -1 || newIndex < 0 && index != 0) newIndex = 0; if (newIndex < 0 && index == 0 || newIndex > maxRow && index == maxRow) newIndex = -1; return newIndex; } // Otherwise do not allow the selection to be removed. if (newIndex < 0) { newIndex = index > 0 ? 0 : maxRow; } else if (newIndex > maxRow) { newIndex = index < maxRow ? maxRow : 0; } return newIndex; ]]> 0 && this.input.mController .getStyleAt(0) .split(/\s+/).indexOf("heuristic") > 0; ]]> { if (enableSuggestions && this.input.textValue) { // Start a new search so that suggestions appear immediately. this.input.controller.startSearch(this.input.textValue); } }); ]]> { let notificationHeight = this.searchSuggestionsNotification .getBoundingClientRect() .height; this.searchSuggestionsNotification.style.marginTop = "-" + notificationHeight + "px"; let popupHeightPx = (this.getBoundingClientRect().height - notificationHeight) + "px"; this.style.height = popupHeightPx; let onTransitionEnd = () => { this.removeEventListener("transitionend", onTransitionEnd, true); this.searchSuggestionsNotification.style.marginTop = "0px"; this.style.removeProperty("height"); this._hideSearchSuggestionsNotification(); resolve(); }; this.addEventListener("transitionend", onTransitionEnd, true); }); ]]> type != "action" && type != "heuristic"); try { // Some types intentionally do not map to strings, which is not // an error. parts.push(this._bundle.GetStringFromName(type + "ResultLabel")); } catch (e) {} return parts.filter(str => str).join(" "); ]]> document.getElementById("addon-progress-notification-progressmeter"); document.getElementById("addon-progress-notification-progresstext"); { let utils = {}; Components.utils.import("resource://gre/modules/DownloadUtils.jsm", utils); utils.DownloadUtils; } = 0) maxProgress += aInstall.maxProgress; if (aInstall.state < AddonManager.STATE_DOWNLOADED) downloadingCount++; }); if (downloadingCount == 0) { this.destroy(); if (Preferences.get("xpinstall.customConfirmationUI", false)) { this.progressmeter.setAttribute("mode", "undetermined"); let status = gNavigatorBundle.getString("addonDownloadVerifying"); this.progresstext.setAttribute("value", status); this.progresstext.setAttribute("tooltiptext", status); } else { PopupNotifications.remove(this.notification); } } else { this.setProgress(progress, maxProgress); } ]]> let sitw = {}; Components.utils.import("resource:///modules/SignInToWebsite.jsm", sitw); sitw.SignInToWebsiteUX; document.getAnonymousElementByAttribute(this, "anonid", "newidentitydesc"); document.getAnonymousElementByAttribute(this, "anonid", "chooseidentitydesc"); document.getAnonymousElementByAttribute(this, "anonid", "identities"); document.getAnonymousElementByAttribute(this, "anonid", "email"); document.getAnonymousElementByAttribute(this, "anonid", "newemail"); document.getAnonymousElementByAttribute(this, "anonid", "chooseemail"); document.getAnonymousElementByAttribute(this, "anonid", "throbber"); this.notification.options.identity; return this.identity.step; return document.getAnonymousElementByAttribute(this, "anonid", "center-item-menulist").value; document.getAnonymousElementByAttribute(this, "anonid", "center-item-menulist").value = val; ({SINGLE: 0, MULTI_COLLAPSED: 1, MULTI_EXPANDED: 2}) document.getAnonymousElementByAttribute(this, "anonid", "primarybutton"); document.getAnonymousElementByAttribute(this, "anonid", "secondarybutton") document.getAnonymousElementByAttribute(this, "anonid", "button-container") document.getElementById("bundle_brand").getString("brandShortName") [] a.pluginName.localeCompare(b.pluginName)); for (let action of sortedActions) { let item = document.createElementNS(XUL_NS, "row"); item.setAttribute("class", "plugin-popupnotification-centeritem"); item.action = action; this.appendChild(item); this._items.push(item); } switch (this._items.length) { case 0: PopupNotifications._dismiss(); break; case 1: this._setState(this._states.SINGLE); break; default: if (this.notification.options.primaryPlugin) { this._setState(this._states.MULTI_COLLAPSED); } else { this._setState(this._states.MULTI_EXPANDED); } } ]]> document.getAnonymousElementByAttribute(this, "anonid", "menuitem"); document.getAnonymousElementByAttribute(this, "anonid", "menu"); 600 document.getAnonymousElementByAttribute(this, "anonid", "promo-message"); document.getAnonymousElementByAttribute(this, "anonid", "promo-link"); Services.strings.createBundle("chrome://branding/locale/brand.properties");