зеркало из https://github.com/mozilla/gecko-dev.git
Merge m-c to inbound, a=merge
MozReview-Commit-ID: HSkzFTcnhOy
This commit is contained in:
Коммит
ef0d82bb2b
|
@ -1566,6 +1566,8 @@ pref("extensions.interposition.prefetching", true);
|
|||
pref("extensions.allow-non-mpc-extensions", false);
|
||||
#endif
|
||||
|
||||
pref("extensions.legacy.enabled", false);
|
||||
|
||||
// Enable blocking of e10s and e10s-multi for add-on users on beta/release.
|
||||
#if defined(RELEASE_OR_BETA) && !defined(MOZ_DEV_EDITION)
|
||||
pref("extensions.e10sBlocksEnabling", true);
|
||||
|
|
|
@ -105,7 +105,7 @@ var healthReportWrapper = {
|
|||
|
||||
handleRemoteCommand(evt) {
|
||||
// Do an origin check to harden against the frame content being loaded from unexpected locations.
|
||||
let allowedPrincipal = Services.scriptSecurityManager.getCodebasePrincipal(this._getReportURI());
|
||||
let allowedPrincipal = Services.scriptSecurityManager.createCodebasePrincipal(this._getReportURI(), {});
|
||||
let targetPrincipal = evt.target.nodePrincipal;
|
||||
if (!allowedPrincipal.equals(targetPrincipal)) {
|
||||
Cu.reportError(`Origin check failed for message "${evt.detail.command}": ` +
|
||||
|
|
|
@ -926,104 +926,6 @@
|
|||
<searchbar id="searchbar" flex="1"/>
|
||||
</toolbaritem>
|
||||
|
||||
<toolbarbutton id="bookmarks-menu-button"
|
||||
class="toolbarbutton-1 chromeclass-toolbar-additional"
|
||||
removable="true"
|
||||
type="menu"
|
||||
label="&bookmarksMenuButton.label;"
|
||||
tooltip="dynamic-shortcut-tooltip"
|
||||
anchor="dropmarker"
|
||||
ondragenter="PlacesMenuDNDHandler.onDragEnter(event);"
|
||||
ondragover="PlacesMenuDNDHandler.onDragOver(event);"
|
||||
ondragleave="PlacesMenuDNDHandler.onDragLeave(event);"
|
||||
ondrop="PlacesMenuDNDHandler.onDrop(event);"
|
||||
cui-areatype="toolbar"
|
||||
oncommand="BookmarkingUI.onCommand(event);">
|
||||
<observes element="bookmarkThisPageBroadcaster" attribute="starred"/>
|
||||
<observes element="bookmarkThisPageBroadcaster" attribute="buttontooltiptext"/>
|
||||
<menupopup id="BMB_bookmarksPopup"
|
||||
class="cui-widget-panel cui-widget-panelview cui-widget-panelWithFooter PanelUI-subView"
|
||||
placespopup="true"
|
||||
context="placesContext"
|
||||
openInTabs="children"
|
||||
oncommand="BookmarksEventHandler.onCommand(event);"
|
||||
onclick="BookmarksEventHandler.onClick(event, this.parentNode._placesView);"
|
||||
onpopupshowing="BookmarkingUI.onPopupShowing(event);
|
||||
BookmarkingUI.attachPlacesView(event, this);"
|
||||
tooltip="bhTooltip" popupsinherittooltip="true">
|
||||
<menuitem id="BMB_viewBookmarksSidebar"
|
||||
class="subviewbutton"
|
||||
label="&viewBookmarksSidebar2.label;"
|
||||
type="checkbox"
|
||||
oncommand="SidebarUI.toggle('viewBookmarksSidebar');">
|
||||
<observes element="viewBookmarksSidebar" attribute="checked"/>
|
||||
</menuitem>
|
||||
<!-- NB: temporary solution for bug 985024, this should go away soon. -->
|
||||
<menuitem id="BMB_bookmarksShowAllTop"
|
||||
class="menuitem-iconic subviewbutton"
|
||||
label="&showAllBookmarks2.label;"
|
||||
command="Browser:ShowAllBookmarks"
|
||||
key="manBookmarkKb"/>
|
||||
<menuseparator/>
|
||||
<menuitem label="&recentBookmarks.label;"
|
||||
id="BMB_recentBookmarks"
|
||||
disabled="true"
|
||||
class="menuitem-iconic subviewbutton"/>
|
||||
<menuseparator/>
|
||||
<menu id="BMB_bookmarksToolbar"
|
||||
class="menu-iconic bookmark-item subviewbutton"
|
||||
label="&personalbarCmd.label;"
|
||||
container="true">
|
||||
<menupopup id="BMB_bookmarksToolbarPopup"
|
||||
placespopup="true"
|
||||
context="placesContext"
|
||||
onpopupshowing="if (!this.parentNode._placesView)
|
||||
new PlacesMenu(event, 'place:folder=TOOLBAR',
|
||||
PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);">
|
||||
<menuitem id="BMB_viewBookmarksToolbar"
|
||||
placesanonid="view-toolbar"
|
||||
toolbarId="PersonalToolbar"
|
||||
type="checkbox"
|
||||
oncommand="onViewToolbarCommand(event)"
|
||||
label="&viewBookmarksToolbar.label;"/>
|
||||
<menuseparator/>
|
||||
<!-- Bookmarks toolbar items -->
|
||||
</menupopup>
|
||||
</menu>
|
||||
<menu id="BMB_unsortedBookmarks"
|
||||
class="menu-iconic bookmark-item subviewbutton"
|
||||
label="&bookmarksMenuButton.other.label;"
|
||||
container="true">
|
||||
<menupopup id="BMB_unsortedBookmarksPopup"
|
||||
placespopup="true"
|
||||
context="placesContext"
|
||||
onpopupshowing="if (!this.parentNode._placesView)
|
||||
new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS',
|
||||
PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
|
||||
</menu>
|
||||
<menu id="BMB_mobileBookmarks"
|
||||
class="menu-iconic bookmark-item subviewbutton"
|
||||
label="&bookmarksMenuButton.mobile.label;"
|
||||
hidden="true"
|
||||
container="true">
|
||||
<menupopup id="BMB_mobileBookmarksPopup"
|
||||
placespopup="true"
|
||||
context="placesContext"
|
||||
onpopupshowing="if (!this.parentNode._placesView)
|
||||
new PlacesMenu(event, 'place:folder=MOBILE_BOOKMARKS',
|
||||
PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
|
||||
</menu>
|
||||
|
||||
<menuseparator/>
|
||||
<!-- Bookmarks menu items will go here -->
|
||||
<menuitem id="BMB_bookmarksShowAll"
|
||||
class="subviewbutton panel-subview-footer"
|
||||
label="&showAllBookmarks2.label;"
|
||||
command="Browser:ShowAllBookmarks"
|
||||
key="manBookmarkKb"/>
|
||||
</menupopup>
|
||||
</toolbarbutton>
|
||||
|
||||
<!-- This is a placeholder for the Downloads Indicator. It is visible
|
||||
during the customization of the toolbar, in the palette, and before
|
||||
the Downloads Indicator overlay is loaded. -->
|
||||
|
@ -1038,6 +940,17 @@
|
|||
removable="true"
|
||||
cui-areatype="toolbar"
|
||||
tooltip="dynamic-shortcut-tooltip"/>
|
||||
|
||||
<toolbarbutton id="library-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
||||
removable="true"
|
||||
oncommand="PanelUI.showSubView('appMenu-libraryView', this, null, event);"
|
||||
closemenu="none"
|
||||
label="&places.library.title;">
|
||||
<box class="toolbarbutton-animatable-box">
|
||||
<image class="toolbarbutton-animatable-image"/>
|
||||
</box>
|
||||
</toolbarbutton>
|
||||
|
||||
</hbox>
|
||||
|
||||
<toolbarbutton id="nav-bar-overflow-button"
|
||||
|
@ -1159,13 +1072,102 @@
|
|||
label="&fullScreenCmd.label;"
|
||||
tooltip="dynamic-shortcut-tooltip"/>
|
||||
|
||||
<toolbarbutton id="library-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
||||
oncommand="PanelUI.showSubView('appMenu-libraryView', this, null, event);"
|
||||
closemenu="none"
|
||||
label="&places.library.title;">
|
||||
<box class="toolbarbutton-animatable-box">
|
||||
<image class="toolbarbutton-animatable-image"/>
|
||||
</box>
|
||||
<toolbarbutton id="bookmarks-menu-button"
|
||||
class="toolbarbutton-1 chromeclass-toolbar-additional"
|
||||
removable="true"
|
||||
type="menu"
|
||||
label="&bookmarksMenuButton.label;"
|
||||
tooltip="dynamic-shortcut-tooltip"
|
||||
anchor="dropmarker"
|
||||
ondragenter="PlacesMenuDNDHandler.onDragEnter(event);"
|
||||
ondragover="PlacesMenuDNDHandler.onDragOver(event);"
|
||||
ondragleave="PlacesMenuDNDHandler.onDragLeave(event);"
|
||||
ondrop="PlacesMenuDNDHandler.onDrop(event);"
|
||||
cui-areatype="toolbar"
|
||||
oncommand="BookmarkingUI.onCommand(event);">
|
||||
<observes element="bookmarkThisPageBroadcaster" attribute="starred"/>
|
||||
<observes element="bookmarkThisPageBroadcaster" attribute="buttontooltiptext"/>
|
||||
<menupopup id="BMB_bookmarksPopup"
|
||||
class="cui-widget-panel cui-widget-panelview cui-widget-panelWithFooter PanelUI-subView"
|
||||
placespopup="true"
|
||||
context="placesContext"
|
||||
openInTabs="children"
|
||||
oncommand="BookmarksEventHandler.onCommand(event);"
|
||||
onclick="BookmarksEventHandler.onClick(event, this.parentNode._placesView);"
|
||||
onpopupshowing="BookmarkingUI.onPopupShowing(event);
|
||||
BookmarkingUI.attachPlacesView(event, this);"
|
||||
tooltip="bhTooltip" popupsinherittooltip="true">
|
||||
<menuitem id="BMB_viewBookmarksSidebar"
|
||||
class="subviewbutton"
|
||||
label="&viewBookmarksSidebar2.label;"
|
||||
type="checkbox"
|
||||
oncommand="SidebarUI.toggle('viewBookmarksSidebar');">
|
||||
<observes element="viewBookmarksSidebar" attribute="checked"/>
|
||||
</menuitem>
|
||||
<!-- NB: temporary solution for bug 985024, this should go away soon. -->
|
||||
<menuitem id="BMB_bookmarksShowAllTop"
|
||||
class="menuitem-iconic subviewbutton"
|
||||
label="&showAllBookmarks2.label;"
|
||||
command="Browser:ShowAllBookmarks"
|
||||
key="manBookmarkKb"/>
|
||||
<menuseparator/>
|
||||
<menuitem label="&recentBookmarks.label;"
|
||||
id="BMB_recentBookmarks"
|
||||
disabled="true"
|
||||
class="menuitem-iconic subviewbutton"/>
|
||||
<menuseparator/>
|
||||
<menu id="BMB_bookmarksToolbar"
|
||||
class="menu-iconic bookmark-item subviewbutton"
|
||||
label="&personalbarCmd.label;"
|
||||
container="true">
|
||||
<menupopup id="BMB_bookmarksToolbarPopup"
|
||||
placespopup="true"
|
||||
context="placesContext"
|
||||
onpopupshowing="if (!this.parentNode._placesView)
|
||||
new PlacesMenu(event, 'place:folder=TOOLBAR',
|
||||
PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);">
|
||||
<menuitem id="BMB_viewBookmarksToolbar"
|
||||
placesanonid="view-toolbar"
|
||||
toolbarId="PersonalToolbar"
|
||||
type="checkbox"
|
||||
oncommand="onViewToolbarCommand(event)"
|
||||
label="&viewBookmarksToolbar.label;"/>
|
||||
<menuseparator/>
|
||||
<!-- Bookmarks toolbar items -->
|
||||
</menupopup>
|
||||
</menu>
|
||||
<menu id="BMB_unsortedBookmarks"
|
||||
class="menu-iconic bookmark-item subviewbutton"
|
||||
label="&bookmarksMenuButton.other.label;"
|
||||
container="true">
|
||||
<menupopup id="BMB_unsortedBookmarksPopup"
|
||||
placespopup="true"
|
||||
context="placesContext"
|
||||
onpopupshowing="if (!this.parentNode._placesView)
|
||||
new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS',
|
||||
PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
|
||||
</menu>
|
||||
<menu id="BMB_mobileBookmarks"
|
||||
class="menu-iconic bookmark-item subviewbutton"
|
||||
label="&bookmarksMenuButton.mobile.label;"
|
||||
hidden="true"
|
||||
container="true">
|
||||
<menupopup id="BMB_mobileBookmarksPopup"
|
||||
placespopup="true"
|
||||
context="placesContext"
|
||||
onpopupshowing="if (!this.parentNode._placesView)
|
||||
new PlacesMenu(event, 'place:folder=MOBILE_BOOKMARKS',
|
||||
PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
|
||||
</menu>
|
||||
|
||||
<menuseparator/>
|
||||
<!-- Bookmarks menu items will go here -->
|
||||
<menuitem id="BMB_bookmarksShowAll"
|
||||
class="subviewbutton panel-subview-footer"
|
||||
label="&showAllBookmarks2.label;"
|
||||
command="Browser:ShowAllBookmarks"
|
||||
key="manBookmarkKb"/>
|
||||
</menupopup>
|
||||
</toolbarbutton>
|
||||
</toolbarpalette>
|
||||
</toolbox>
|
||||
|
|
|
@ -46,7 +46,7 @@ add_task(async function test_notificationClose() {
|
|||
let alertIcon = alertWindow.document.getElementById("alertIcon");
|
||||
is(alertIcon.src, faviconURI.spec, "Icon of notification should be present");
|
||||
|
||||
let alertCloseButton = alertWindow.document.querySelector(".alertCloseButton");
|
||||
let alertCloseButton = alertWindow.document.querySelector(".close-icon");
|
||||
is(alertCloseButton.localName, "toolbarbutton", "close button found");
|
||||
let promiseBeforeUnloadEvent =
|
||||
BrowserTestUtils.waitForEvent(alertWindow, "beforeunload");
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
// Bug 1318389 - This test does a lot of window and tab manipulation,
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
// This test tests <select> in a child process. This is different than
|
||||
// single-process as a <menulist> is used to implement the dropdown list.
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
const PAGE = "https://example.com/browser/browser/base/content/test/general/file_mediaPlayback.html";
|
||||
const TABATTR_REMOVAL_PREFNAME = "browser.tabs.delayHidingAudioPlayingIconMS";
|
||||
const INITIAL_TABATTR_REMOVAL_DELAY_MS = Services.prefs.getIntPref(TABATTR_REMOVAL_PREFNAME);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
"use strict";
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
function invokeUsingCtrlD(phase) {
|
||||
switch (phase) {
|
||||
case 1:
|
||||
|
|
|
@ -8,6 +8,9 @@ function finishTest() {
|
|||
is(BookmarkingUI.button.getAttribute("buttontooltiptext"),
|
||||
BookmarkingUI._unstarredTooltip,
|
||||
"Star icon should have the unstarred tooltip text");
|
||||
is(BookmarkingUI.star.getAttribute("tooltiptext"),
|
||||
BookmarkingUI._unstarredTooltip,
|
||||
"Star icon should have the unstarred tooltip text");
|
||||
|
||||
gBrowser.removeCurrentTab();
|
||||
finish();
|
||||
|
@ -17,10 +20,12 @@ function test() {
|
|||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
|
||||
CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 0);
|
||||
BrowserTestUtils.browserLoaded(tab.linkedBrowser).then(() => {
|
||||
if (BookmarkingUI.status == BookmarkingUI.STATUS_UPDATING) {
|
||||
waitForCondition(() => BookmarkingUI.status != BookmarkingUI.STATUS_UPDATING, finishTest, "BookmarkingUI was updating for too long");
|
||||
} else {
|
||||
CustomizableUI.removeWidgetFromArea("bookmarks-menu-button");
|
||||
finishTest();
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-env mozilla/frame-script */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
"use strict";
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
const TEST_PAGE = "http://mochi.test:8888/browser/browser/base/content/test/general/file_double_close_tab.html";
|
||||
var testTab;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
// gBrowser.selectedTab.lastAccessed and Date.now() called from this test can't
|
||||
// run concurrently, and therefore don't always match exactly.
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
function testExpected(expected, msg) {
|
||||
is(document.getElementById("context-openlinkincurrent").hidden, expected, msg);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
var secureURL = "https://example.com/browser/browser/base/content/test/general/browser_star_hsts.sjs";
|
||||
var unsecureURL = "http://example.com/browser/browser/base/content/test/general/browser_star_hsts.sjs";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
function notifyStoragePressure(usage = 100) {
|
||||
let notifyPromise = TestUtils.topicObserved("QuotaManager::StoragePressure", () => true);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
// Test for the docshell active state of local and remote browsers.
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
"use strict";
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
"use strict";
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
|
|
@ -90,7 +90,7 @@ var tests = [
|
|||
isnot(document.getElementById("geo-notification-icon").boxObject.width, 0,
|
||||
"geo anchor should be visible");
|
||||
|
||||
EventUtils.synthesizeMouse(document.getElementById("geo-notification-icon"), 0, 0, {});
|
||||
EventUtils.synthesizeMouse(document.getElementById("geo-notification-icon"), 2, 2, {});
|
||||
},
|
||||
onShown(popup) {
|
||||
checkPopup(popup, this.notifyObj);
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
// The purpose of this test is to test the urlbar popup's add-on iframe. It has
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
var notificationObserver;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
const SLOW_PAGE = "http://www.example.com/browser/browser/base/content/test/urlbar/slow-page.sjs";
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
const {AddonManagerPrivate} = Cu.import("resource://gre/modules/AddonManager.jsm", {});
|
||||
|
||||
const {AddonTestUtils} = Cu.import("resource://testing-common/AddonTestUtils.jsm", {});
|
||||
|
|
|
@ -1841,8 +1841,8 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|||
this.view = aInput.controller.QueryInterface(Components.interfaces.nsITreeView);
|
||||
this._invalidate();
|
||||
|
||||
var rect = window.document.documentElement.getBoundingClientRect();
|
||||
var width = rect.right - rect.left;
|
||||
var documentRect = window.document.documentElement.getBoundingClientRect();
|
||||
var width = documentRect.right - documentRect.left;
|
||||
this.setAttribute("width", width);
|
||||
|
||||
// Adjust the direction of the autocomplete popup list based on the textbox direction, bug 649840
|
||||
|
@ -1853,25 +1853,21 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|||
// of the popup aligns with the window border.
|
||||
let elementRect = aElement.getBoundingClientRect();
|
||||
if (popupDirection == "rtl") {
|
||||
let offset = elementRect.right - rect.right
|
||||
let offset = elementRect.right - documentRect.right
|
||||
this.style.marginRight = offset + "px";
|
||||
} else {
|
||||
let offset = rect.left - elementRect.left;
|
||||
let offset = documentRect.left - elementRect.left;
|
||||
this.style.marginLeft = offset + "px";
|
||||
}
|
||||
|
||||
// Keep the popup items' site icons aligned with the urlbar's identity
|
||||
// icon if it's not too far from the edge of the window. If there are
|
||||
// at most two toolbar buttons between the window edge and the urlbar,
|
||||
// then consider that as "not too far." The forward button's
|
||||
// visibility may have changed since the last time the popup was
|
||||
// opened, so this needs to happen now. Do it *before* the popup
|
||||
// opens because otherwise the items will visibly shift.
|
||||
let nodes = [...document.getElementById("nav-bar-customization-target").childNodes];
|
||||
let urlbarPosition = nodes.findIndex(n => n.id == "urlbar-container");
|
||||
let alignSiteIcons = urlbarPosition <= 5 &&
|
||||
nodes.slice(0, urlbarPosition)
|
||||
.every(n => n.localName == "toolbarbutton" || n.id == "stop-reload-button");
|
||||
// icon if it's not too far from the edge of the window. We define
|
||||
// "too far" as "more than 30% of the window's width AND more than
|
||||
// 250px"
|
||||
let boundToCheck = popupDirection == "rtl" ? "right" : "left";
|
||||
let inputRect = this.DOMWindowUtils.getBoundsWithoutFlushing(aInput);
|
||||
let startOffset = Math.abs(inputRect[boundToCheck] - documentRect[boundToCheck]);
|
||||
let alignSiteIcons = startOffset / width <= 0.3 || startOffset <= 250;
|
||||
if (alignSiteIcons) {
|
||||
let identityRect =
|
||||
document.getElementById("identity-icon").getBoundingClientRect();
|
||||
|
|
|
@ -178,3 +178,8 @@ browser.jar:
|
|||
% overlay chrome://browser/content/browser.xul chrome://browser/content/report-phishing-overlay.xul
|
||||
|
||||
% override chrome://global/content/netError.xhtml chrome://browser/content/aboutNetError.xhtml
|
||||
|
||||
# L10n resource overrides.
|
||||
% override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
|
||||
% override chrome://global/locale/netError.dtd chrome://browser/locale/netError.dtd
|
||||
% override chrome://mozapps/locale/downloads/settingsChange.dtd chrome://browser/locale/downloads/settingsChange.dtd
|
||||
|
|
|
@ -57,7 +57,7 @@ const kSubviewEvents = [
|
|||
* The current version. We can use this to auto-add new default widgets as necessary.
|
||||
* (would be const but isn't because of testing purposes)
|
||||
*/
|
||||
var kVersion = 8;
|
||||
var kVersion = 9;
|
||||
|
||||
/**
|
||||
* Buttons removed from built-ins by version they were removed. kVersion must be
|
||||
|
@ -192,10 +192,12 @@ var CustomizableUIInternal = {
|
|||
"forward-button",
|
||||
"stop-reload-button",
|
||||
"home-button",
|
||||
"spring",
|
||||
"urlbar-container",
|
||||
"search-container",
|
||||
"bookmarks-menu-button",
|
||||
"spring",
|
||||
"downloads-button",
|
||||
"library-button",
|
||||
"sidebar-button",
|
||||
];
|
||||
|
||||
|
@ -205,9 +207,9 @@ var CustomizableUIInternal = {
|
|||
|
||||
// Place this last, when createWidget is called for pocket, it will
|
||||
// append to the toolbar.
|
||||
if (Services.prefs.getPrefType("extensions.pocket.enabled") != Services.prefs.PREF_INVALID &&
|
||||
Services.prefs.getBoolPref("extensions.pocket.enabled")) {
|
||||
navbarPlacements.push("pocket-button");
|
||||
if (Services.prefs.getBoolPref("extensions.pocket.enabled", false) &&
|
||||
Services.prefs.getBoolPref("extensions.pocket.disablePageAction", false)) {
|
||||
navbarPlacements.push("pocket-button");
|
||||
}
|
||||
|
||||
this.registerArea(CustomizableUI.AREA_NAVBAR, {
|
||||
|
@ -383,6 +385,40 @@ var CustomizableUIInternal = {
|
|||
gSavedState.placements[this.AREA_FIXED_OVERFLOW_PANEL] = savedPanelPlacements;
|
||||
}
|
||||
}
|
||||
|
||||
if (currentVersion < 9 && gSavedState.placements && gSavedState.placements["nav-bar"]) {
|
||||
let placements = gSavedState.placements["nav-bar"];
|
||||
if (placements.includes("urlbar-container")) {
|
||||
let urlbarIndex = placements.indexOf("urlbar-container");
|
||||
let secondSpringIndex = urlbarIndex + 1;
|
||||
// Insert if there isn't already a spring before the urlbar
|
||||
if (urlbarIndex == 0 || !placements[urlbarIndex - 1].startsWith(kSpecialWidgetPfx + "spring")) {
|
||||
placements.splice(urlbarIndex, 0, "spring");
|
||||
// The url bar is now 1 index later, so increment the insertion point for
|
||||
// the second spring.
|
||||
secondSpringIndex++;
|
||||
}
|
||||
// If the search container is present, insert after the search container
|
||||
// instead of after the url bar
|
||||
let searchContainerIndex = placements.indexOf("search-container");
|
||||
if (searchContainerIndex != -1) {
|
||||
secondSpringIndex = searchContainerIndex + 1;
|
||||
}
|
||||
if (secondSpringIndex == placements.length ||
|
||||
!placements[secondSpringIndex].startsWith(kSpecialWidgetPfx + "spring")) {
|
||||
placements.splice(secondSpringIndex, 0, "spring");
|
||||
}
|
||||
}
|
||||
|
||||
// Finally, replace the bookmarks menu button with the library one if present
|
||||
if (placements.includes("bookmarks-menu-button")) {
|
||||
let bmbIndex = placements.indexOf("bookmarks-menu-button");
|
||||
placements.splice(bmbIndex, 1);
|
||||
let downloadButtonIndex = placements.indexOf("downloads-button");
|
||||
let libraryIndex = downloadButtonIndex == -1 ? bmbIndex : (downloadButtonIndex + 1);
|
||||
placements.splice(libraryIndex, 0, "library-button");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -707,7 +743,8 @@ var CustomizableUIInternal = {
|
|||
currentNode = currentNode.nextSibling;
|
||||
}
|
||||
|
||||
if (currentNode && currentNode.id == id) {
|
||||
if (currentNode &&
|
||||
(currentNode.id == id || this.matchingSpecials(id, currentNode.id))) {
|
||||
currentNode = currentNode.nextSibling;
|
||||
continue;
|
||||
}
|
||||
|
@ -1226,6 +1263,12 @@ var CustomizableUIInternal = {
|
|||
aId.startsWith("spacer"));
|
||||
},
|
||||
|
||||
matchingSpecials(aId1, aId2) {
|
||||
return this.isSpecialWidget(aId1) &&
|
||||
this.isSpecialWidget(aId2) &&
|
||||
aId1.match(/spring|spacer|separator/)[0] == aId2.match(/spring|spacer|separator/)[0];
|
||||
},
|
||||
|
||||
ensureSpecialWidgetId(aId) {
|
||||
let nodeType = aId.match(/spring|spacer|separator/)[0];
|
||||
// If the ID we were passed isn't a generated one, generate one now:
|
||||
|
@ -2798,7 +2841,8 @@ var CustomizableUIInternal = {
|
|||
}
|
||||
|
||||
for (let i = 0; i < currentPlacements.length; ++i) {
|
||||
if (currentPlacements[i] != defaultPlacements[i]) {
|
||||
if (currentPlacements[i] != defaultPlacements[i] &&
|
||||
!this.matchingSpecials(currentPlacements[i], defaultPlacements[i])) {
|
||||
log.debug("Found " + currentPlacements[i] + " in " + areaId + " where " +
|
||||
defaultPlacements[i] + " was expected!");
|
||||
return false;
|
||||
|
|
|
@ -442,7 +442,7 @@ CustomizeMode.prototype = {
|
|||
CustomizableUI.dispatchToolboxEvent("customizationending", {}, window);
|
||||
|
||||
window.PanelUI.menuButton.disabled = false;
|
||||
let overflowContainer = document.getElementById("widget-overflow-scroller");
|
||||
let overflowContainer = document.getElementById("widget-overflow-mainView").firstChild;
|
||||
overflowContainer.appendChild(window.PanelUI.overflowFixedList);
|
||||
document.getElementById("nav-bar-overflow-button").disabled = false;
|
||||
let panelContextMenu = document.getElementById(kPanelItemContextMenu);
|
||||
|
|
|
@ -338,7 +338,6 @@ this.PanelMultiView = class {
|
|||
this._panel.removeEventListener("popupshown", this);
|
||||
this._panel.removeEventListener("popuphidden", this);
|
||||
this.window.removeEventListener("keydown", this);
|
||||
this._dispatchViewEvent(this.node, "destructed");
|
||||
this.node = this._clickCapturer = this._viewContainer = this._mainViewContainer =
|
||||
this._subViews = this._viewStack = this.__dwu = this._panelViewCache = null;
|
||||
}
|
||||
|
@ -676,8 +675,8 @@ this.PanelMultiView = class {
|
|||
*/
|
||||
_dispatchViewEvent(viewNode, eventName, anchor, detail) {
|
||||
let cancel = false;
|
||||
if (eventName != "PanelMultiViewHidden" && eventName != "destructed") {
|
||||
// Don't need to do this for PanelMultiViewHidden or "destructed" events
|
||||
if (eventName != "PanelMultiViewHidden") {
|
||||
// Don't need to do this for PanelMultiViewHidden event
|
||||
CustomizableUI.ensureSubviewListeners(viewNode);
|
||||
}
|
||||
|
||||
|
|
|
@ -356,13 +356,11 @@
|
|||
<panelview id="widget-overflow-mainView"
|
||||
context="toolbar-context-menu">
|
||||
<vbox class="panel-subview-body">
|
||||
<vbox id="widget-overflow-scroller">
|
||||
<vbox id="widget-overflow-list" class="widget-overflow-list"
|
||||
overflowfortoolbar="nav-bar"/>
|
||||
<toolbarseparator id="widget-overflow-fixed-separator" hidden="true"/>
|
||||
<vbox id="widget-overflow-fixed-list" class="widget-overflow-list" hidden="true"
|
||||
emptylabel="&customizeMode.emptyOverflowList.description;"/>
|
||||
</vbox>
|
||||
<vbox id="widget-overflow-list" class="widget-overflow-list"
|
||||
overflowfortoolbar="nav-bar"/>
|
||||
<toolbarseparator id="widget-overflow-fixed-separator" hidden="true"/>
|
||||
<vbox id="widget-overflow-fixed-list" class="widget-overflow-list" hidden="true"
|
||||
emptylabel="&customizeMode.emptyOverflowList.description;"/>
|
||||
</vbox>
|
||||
<toolbarbutton command="cmd_CustomizeToolbars"
|
||||
id="overflowMenu-customize-button"
|
||||
|
|
|
@ -61,7 +61,7 @@ add_task(async function checkAddingToToolbar() {
|
|||
|
||||
|
||||
add_task(async function checkDragging() {
|
||||
let startArea = CustomizableUI.AREA_NAVBAR;
|
||||
let startArea = CustomizableUI.AREA_TABSTRIP;
|
||||
let targetArea = CustomizableUI.AREA_FIXED_OVERFLOW_PANEL;
|
||||
let startingToolbarPlacements = getAreaWidgetIds(startArea);
|
||||
let startingTargetPlacements = getAreaWidgetIds(targetArea);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
"use strict";
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
"use strict";
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
"use strict";
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
"use strict";
|
||||
const kWidgetId = "test-981418-widget-onbeforecreated";
|
||||
|
|
|
@ -189,8 +189,10 @@ function checkNotOverflowing(aID) {
|
|||
* context menus for the Unsorted and Bookmarks Toolbar menu items.
|
||||
*/
|
||||
add_task(async function testOverflowingBookmarksButtonContextMenu() {
|
||||
ok(!gNavBar.hasAttribute("overflowing"), "Should start with a non-overflowing toolbar.");
|
||||
ok(CustomizableUI.inDefaultState, "Should start in default state.");
|
||||
CustomizableUI.removeWidgetFromArea("library-button", CustomizableUI.AREA_NAVBAR);
|
||||
CustomizableUI.addWidgetToArea(kBookmarksButton, CustomizableUI.AREA_NAVBAR);
|
||||
ok(!gNavBar.hasAttribute("overflowing"), "Should start with a non-overflowing toolbar.");
|
||||
|
||||
// Open the Unsorted and Bookmarks Toolbar context menus and ensure
|
||||
// that they have views attached.
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
add_task(async function mainTest() {
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/* vim: set ts=2 et sw=2 tw=80: */
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
/**
|
||||
* Make sure the downloads panel only opens automatically on the first
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
let scriptPage = url => `<html><head><meta charset="utf-8"><script src="${url}"></script></head><body>${url}</body></html>`;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
add_task(async function setup() {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
add_task(async function testPopupBackground() {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
add_task(async function test_popup_sendMessage_reply() {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
add_task(async function testTabEvents() {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
add_task(async function testWindowCreate() {
|
||||
|
|
|
@ -20,11 +20,13 @@ Cu.import("resource://testing-common/AddonTestUtils.jsm");
|
|||
|
||||
const {
|
||||
createAppInfo,
|
||||
promiseRestartManager,
|
||||
promiseShutdownManager,
|
||||
promiseStartupManager,
|
||||
} = AddonTestUtils;
|
||||
|
||||
AddonTestUtils.init(this);
|
||||
AddonTestUtils.overrideCertDB();
|
||||
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42");
|
||||
|
||||
|
@ -121,3 +123,61 @@ add_task(async function test_multiple_extensions_overriding_newtab_page() {
|
|||
|
||||
await promiseShutdownManager();
|
||||
});
|
||||
|
||||
// Tests that we handle the upgrade/downgrade process correctly
|
||||
// when an extension is installed temporarily on top of a permanently
|
||||
// installed one.
|
||||
add_task(async function test_temporary_installation() {
|
||||
const ID = "newtab@tests.mozilla.org";
|
||||
const PAGE1 = "page1.html";
|
||||
const PAGE2 = "page2.html";
|
||||
|
||||
equal(aboutNewTabService.newTabURL, "about:newtab",
|
||||
"Default newtab url is about:newtab");
|
||||
|
||||
await promiseStartupManager();
|
||||
|
||||
let permanent = ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
applications: {
|
||||
gecko: {id: ID},
|
||||
},
|
||||
chrome_url_overrides: {
|
||||
newtab: PAGE1,
|
||||
},
|
||||
},
|
||||
useAddonManager: "permanent",
|
||||
});
|
||||
|
||||
await permanent.startup();
|
||||
ok(aboutNewTabService.newTabURL.endsWith(PAGE1),
|
||||
"newtab url is overridden by permanent extension");
|
||||
|
||||
let temporary = ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
applications: {
|
||||
gecko: {id: ID},
|
||||
},
|
||||
chrome_url_overrides: {
|
||||
newtab: PAGE2,
|
||||
},
|
||||
},
|
||||
useAddonManager: "temporary",
|
||||
});
|
||||
|
||||
await temporary.startup();
|
||||
ok(aboutNewTabService.newTabURL.endsWith(PAGE2),
|
||||
"newtab url is overridden by temporary extension");
|
||||
|
||||
await promiseRestartManager();
|
||||
await permanent.awaitStartup();
|
||||
|
||||
ok(aboutNewTabService.newTabURL.endsWith(PAGE1),
|
||||
"newtab url is back to the value set by permanent extension");
|
||||
|
||||
await permanent.unload();
|
||||
|
||||
equal(aboutNewTabService.newTabURL, "about:newtab",
|
||||
"newtab url is back to default about:newtab");
|
||||
await promiseShutdownManager();
|
||||
});
|
||||
|
|
|
@ -2020,8 +2020,7 @@ this.PlacesPanelview = class extends PlacesViewBase {
|
|||
get events() {
|
||||
if (this._events)
|
||||
return this._events;
|
||||
return this._events = ["command", "destructed", "dragend", "dragstart",
|
||||
"ViewHiding", "ViewShowing", "ViewShown"];
|
||||
return this._events = ["click", "command", "dragend", "dragstart", "ViewHiding", "ViewShown"];
|
||||
}
|
||||
|
||||
get panel() {
|
||||
|
@ -2034,12 +2033,14 @@ this.PlacesPanelview = class extends PlacesViewBase {
|
|||
|
||||
handleEvent(event) {
|
||||
switch (event.type) {
|
||||
case "click":
|
||||
// For left and middle clicks, fall through to the command handler.
|
||||
if (event.button >= 2) {
|
||||
break;
|
||||
}
|
||||
case "command":
|
||||
this._onCommand(event);
|
||||
break;
|
||||
case "destructed":
|
||||
this._onDestructed(event);
|
||||
break;
|
||||
case "dragend":
|
||||
this._onDragEnd(event);
|
||||
break;
|
||||
|
@ -2052,9 +2053,6 @@ this.PlacesPanelview = class extends PlacesViewBase {
|
|||
case "ViewHiding":
|
||||
this._onPopupHidden(event);
|
||||
break;
|
||||
case "ViewShowing":
|
||||
this._onPopupShowing(event);
|
||||
break;
|
||||
case "ViewShown":
|
||||
this._onViewShown(event);
|
||||
break;
|
||||
|
@ -2067,13 +2065,7 @@ this.PlacesPanelview = class extends PlacesViewBase {
|
|||
return;
|
||||
|
||||
PlacesUIUtils.openNodeWithEvent(button._placesNode, event);
|
||||
}
|
||||
|
||||
_onDestructed(event) {
|
||||
// The panelmultiview is ephemeral, so let's keep an eye out when the root
|
||||
// element is showing again.
|
||||
this._removeEventListeners(event.target, this.events);
|
||||
this._addEventListeners(this._viewElt, ["ViewShowing"]);
|
||||
this.panelMultiView.closest("panel").hidePopup();
|
||||
}
|
||||
|
||||
_onDragEnd() {
|
||||
|
@ -2095,7 +2087,6 @@ this.PlacesPanelview = class extends PlacesViewBase {
|
|||
|
||||
uninit(event) {
|
||||
this._removeEventListeners(this.panelMultiView, this.events);
|
||||
this._removeEventListeners(this._viewElt, ["ViewShowing"]);
|
||||
this._removeEventListeners(window, ["unload"]);
|
||||
super.uninit(event);
|
||||
}
|
||||
|
@ -2177,11 +2168,9 @@ this.PlacesPanelview = class extends PlacesViewBase {
|
|||
}
|
||||
|
||||
_onPopupShowing(event) {
|
||||
// If the event came from the root element, this is a sign that the panelmultiview
|
||||
// was just instantiated (see `_onDestructed` above) or this is the first time
|
||||
// If the event came from the root element, this is the first time
|
||||
// we ever get here.
|
||||
if (event.originalTarget == this._viewElt) {
|
||||
this._removeEventListeners(this._viewElt, ["ViewShowing"]);
|
||||
if (event.originalTarget == this._rootElt) {
|
||||
// Start listening for events from all panels inside the panelmultiview.
|
||||
this._addEventListeners(this.panelMultiView, this.events);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 4);
|
||||
var bookmarksMenuButton = document.getElementById("bookmarks-menu-button");
|
||||
var BMB_menuPopup = document.getElementById("BMB_bookmarksPopup");
|
||||
var BMB_showAllBookmarks = document.getElementById("BMB_bookmarksShowAll");
|
||||
|
@ -14,6 +15,7 @@ add_task(async function testPopup() {
|
|||
CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, pos);
|
||||
info("Checking popup context menu after moving the bookmarks button");
|
||||
await checkPopupContextMenu();
|
||||
CustomizableUI.reset();
|
||||
});
|
||||
|
||||
async function checkPopupContextMenu() {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
/**
|
||||
* Tests Places views (toolbar, tree) for icons update.
|
||||
|
|
|
@ -85,6 +85,6 @@
|
|||
<separator class="thin"/>
|
||||
|
||||
<hbox id="addEnginesBox" pack="start">
|
||||
<label id="addEngines" class="text-link" value="&findMoreSearchEngines.label;"/>
|
||||
<label id="addEngines" class="text-link">&findMoreSearchEngines.label;</label>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
// Test to make sure that the visited page titles do not get updated inside the
|
||||
// private browsing mode.
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
// This test makes sure that the title of existing history entries does not
|
||||
// change inside a private window.
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
// This test makes sure that the web pages can't register protocol handlers
|
||||
// inside the private browsing mode.
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "FormHistory",
|
||||
"resource://gre/modules/FormHistory.jsm");
|
||||
|
||||
|
|
|
@ -110,6 +110,10 @@ this.RecentlyClosedTabsAndWindowsMenuUtils = {
|
|||
|
||||
aEvent.view.undoCloseTab(aEvent.originalTarget.getAttribute("value"));
|
||||
aEvent.view.gBrowser.moveTabToEnd();
|
||||
let ancestorPanel = aEvent.target.closest("panel");
|
||||
if (ancestorPanel) {
|
||||
ancestorPanel.hidePopup();
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
function test() {
|
||||
/** Test for Bug 459906 **/
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
function test() {
|
||||
/** Test for Bug 506482 **/
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
var tabState = {
|
||||
entries: [{
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
var tabState = {
|
||||
entries: [{
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* 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/. */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
/**
|
||||
Ensure that frameset history works properly when restoring a tab,
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
const {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
let NS_OSX_PICTURE_DOCUMENTS_DIR = "Pct";
|
||||
let NS_MAC_USER_LIB_DIR = "ULibDir";
|
||||
|
||||
|
|
|
@ -1110,7 +1110,7 @@ this.UITour = {
|
|||
let refreshedTarget = await this.getTarget(aChromeWindow, aTarget.targetName);
|
||||
let node = aTarget.node = refreshedTarget.node;
|
||||
// If the target is in the overflow panel, just return the overflow button.
|
||||
if (node.closest("#widget-overflow-scroller")) {
|
||||
if (node.closest("#widget-overflow-mainView")) {
|
||||
return CustomizableUI.getWidget(node.id).forWindow(aChromeWindow).anchor;
|
||||
}
|
||||
return node;
|
||||
|
|
|
@ -18,6 +18,8 @@ function test() {
|
|||
var tests = [
|
||||
function test_untrusted_host(done) {
|
||||
loadUITourTestPage(function() {
|
||||
CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 0);
|
||||
registerCleanupFunction(() => CustomizableUI.removeWidgetFromArea("bookmarks-menu-button"));
|
||||
let bookmarksMenu = document.getElementById("bookmarks-menu-button");
|
||||
is(bookmarksMenu.open, false, "Bookmark menu should initially be closed");
|
||||
|
||||
|
|
|
@ -70,6 +70,9 @@ var tests = [
|
|||
}).catch(Components.utils.reportError);
|
||||
},
|
||||
taskify(async function test_bookmarks_menu() {
|
||||
CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 0);
|
||||
registerCleanupFunction(() => CustomizableUI.removeWidgetFromArea("bookmarks-menu-button"));
|
||||
|
||||
let bookmarksMenuButton = document.getElementById("bookmarks-menu-button");
|
||||
|
||||
is(bookmarksMenuButton.open, false, "Menu should initially be closed");
|
||||
|
|
|
@ -15,7 +15,6 @@ function getExpectedTargets() {
|
|||
"addons",
|
||||
"appMenu",
|
||||
"backForward",
|
||||
"bookmarks",
|
||||
"bookmark-star-button",
|
||||
"customize",
|
||||
"devtools",
|
||||
|
@ -50,12 +49,12 @@ add_UITour_task(async function test_availableTargets() {
|
|||
});
|
||||
|
||||
add_UITour_task(async function test_availableTargets_changeWidgets() {
|
||||
CustomizableUI.removeWidgetFromArea("bookmarks-menu-button");
|
||||
CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 0);
|
||||
ok(!UITour.availableTargetsCache.has(window),
|
||||
"Targets should be evicted from cache after widget change");
|
||||
let data = await getConfigurationPromise("availableTargets");
|
||||
let expecteds = getExpectedTargets();
|
||||
expecteds = expecteds.filter(target => target != "bookmarks");
|
||||
expecteds = ["bookmarks", ...expecteds];
|
||||
ok_targets(data, expecteds);
|
||||
|
||||
ok(UITour.availableTargetsCache.has(window),
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
|
||||
"size": 97017057,
|
||||
"digest": "b726645f9d26c5a3048720b3839166021c1cf91a02d2ff2f10c49adced7455c7352e18b5052084d80bf9d1c40ec1bf72d0397921b8cd23262f89fdbd10def58f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "makecab.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
}
|
||||
]
|
|
@ -29,13 +29,5 @@
|
|||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
},
|
||||
{
|
||||
"version": "clang 5.0pre/r293859",
|
||||
"size": 309009013,
|
||||
"digest": "cd3ed31acefd185f441632158dde73538c62bab7ebf2a8ec630985ab345938ec522983721ddb1bead1de22d5ac1571d50a958ae002364d739f2a78c6e7244222",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
|
||||
"size": 103602526,
|
||||
"digest": "558d2d18991ad8b250a5d6b46a55e1ffdffc50d6bdd9cb4b3a945dd3d1143836b32e47f1df612bfea97ca2c02333ed43055b6c3030ecb1632385fb6940c1d246",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "makecab.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
}
|
||||
]
|
|
@ -30,13 +30,5 @@
|
|||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
},
|
||||
{
|
||||
"version": "clang 5.0pre/r293859",
|
||||
"size": 313862839,
|
||||
"digest": "44dee70d525ea93952af27f943d1cc773311970c31d971d2bc2e3437cce0c899f3a03ddd8e42e86f1b4fd9ab1c4bc1767cdb0406eb4b3934ae4fc272dab830dc",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
|
|
@ -14,6 +14,8 @@ Cu.import("resource://gre/modules/Services.jsm");
|
|||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "AddonManagerPrivate",
|
||||
"resource://gre/modules/AddonManager.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "FormAutofillParent",
|
||||
"resource://formautofill/FormAutofillParent.jsm");
|
||||
|
||||
|
@ -41,17 +43,41 @@ function onMaybeOpenPopup(evt) {
|
|||
insertStyleSheet(domWindow, STYLESHEET_URI);
|
||||
}
|
||||
|
||||
function addUpgradeListener(instanceID) {
|
||||
AddonManager.addUpgradeListener(instanceID, upgrade => {
|
||||
// don't install the upgrade by doing nothing here.
|
||||
// The upgrade will be installed upon next restart.
|
||||
});
|
||||
}
|
||||
|
||||
function isAvailable() {
|
||||
let availablePref = Services.prefs.getCharPref("extensions.formautofill.available");
|
||||
if (availablePref == "on") {
|
||||
return true;
|
||||
} else if (availablePref == "detect") {
|
||||
let locale = Services.locale.getRequestedLocale();
|
||||
let region = Services.prefs.getCharPref("browser.search.region", "");
|
||||
return locale == "en-US" && region == "US";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function startup(data) {
|
||||
if (Services.prefs.getStringPref("extensions.formautofill.available") != "on") {
|
||||
if (!isAvailable()) {
|
||||
Services.prefs.clearUserPref("dom.forms.autocomplete.formautofill");
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.hasOwnProperty("instanceID") && data.instanceID) {
|
||||
AddonManager.addUpgradeListener(data.instanceID, (upgrade) => {
|
||||
// don't install the upgrade by doing nothing here.
|
||||
// The upgrade will be installed upon next restart.
|
||||
});
|
||||
if (AddonManagerPrivate.isDBLoaded()) {
|
||||
addUpgradeListener(data.instanceID);
|
||||
} else {
|
||||
// Wait for the extension database to be loaded so we don't cause its init.
|
||||
Services.obs.addObserver(function xpiDatabaseLoaded() {
|
||||
Services.obs.removeObserver(xpiDatabaseLoaded, "xpi-database-loaded");
|
||||
addUpgradeListener(data.instanceID);
|
||||
}, "xpi-database-loaded");
|
||||
}
|
||||
} else {
|
||||
throw Error("no instanceID passed to bootstrap startup");
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
const FORM_URL = "http://mochi.test:8888/browser/browser/extensions/formautofill/test/browser/autocomplete_basic.html";
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
const FORM_URL = "http://mochi.test:8888/browser/browser/extensions/formautofill/test/browser/autocomplete_basic.html";
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
const FORM_URL = "http://mochi.test:8888/browser/browser/extensions/formautofill/test/browser/autocomplete_basic.html";
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*/
|
||||
|
||||
/* exported getTempFile, loadFormAutofillContent, runHeuristicsTest, sinon,
|
||||
* initProfileStorage, getSyncChangeCounter, objectMatches
|
||||
* initProfileStorage, getSyncChangeCounter, objectMatches, bootstrapURI
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
@ -51,10 +51,15 @@ let extensionDir = Services.dirsvc.get("GreD", Ci.nsIFile);
|
|||
extensionDir.append("browser");
|
||||
extensionDir.append("features");
|
||||
extensionDir.append(EXTENSION_ID);
|
||||
let bootstrapFile = extensionDir.clone();
|
||||
bootstrapFile.append("bootstrap.js");
|
||||
let bootstrapURI = Services.io.newFileURI(bootstrapFile).spec;
|
||||
// If the unpacked extension doesn't exist, use the packed version.
|
||||
if (!extensionDir.exists()) {
|
||||
extensionDir = extensionDir.parent;
|
||||
extensionDir.append(EXTENSION_ID + ".xpi");
|
||||
let jarURI = Services.io.newFileURI(extensionDir);
|
||||
bootstrapURI = "jar:" + jarURI.spec + "!/bootstrap.js";
|
||||
}
|
||||
Components.manager.addBootstrappedManifestLocation(extensionDir);
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/**
|
||||
* Test enabling the feature in specific locales and regions.
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
// Load bootstrap.js into a sandbox to be able to test `isAvailable`
|
||||
let sandbox = {};
|
||||
Services.scriptloader.loadSubScript(bootstrapURI, sandbox, "utf-8");
|
||||
do_print("bootstrapURI: " + bootstrapURI);
|
||||
|
||||
add_task(async function test_defaultTestEnvironment() {
|
||||
do_check_true(sandbox.isAvailable());
|
||||
});
|
||||
|
||||
add_task(async function test_unsupportedRegion() {
|
||||
Services.prefs.setCharPref("extensions.formautofill.available", "detect");
|
||||
Services.prefs.setCharPref("browser.search.region", "ZZ");
|
||||
do_register_cleanup(function cleanupRegion() {
|
||||
Services.prefs.clearUserPref("browser.search.region");
|
||||
});
|
||||
do_check_false(sandbox.isAvailable());
|
||||
});
|
||||
|
||||
add_task(async function test_supportedRegion() {
|
||||
Services.prefs.setCharPref("extensions.formautofill.available", "detect");
|
||||
Services.prefs.setCharPref("browser.search.region", "US");
|
||||
do_register_cleanup(function cleanupRegion() {
|
||||
Services.prefs.clearUserPref("browser.search.region");
|
||||
});
|
||||
do_check_true(sandbox.isAvailable());
|
||||
});
|
|
@ -28,6 +28,7 @@ support-files =
|
|||
[test_getFormInputDetails.js]
|
||||
[test_getInfo.js]
|
||||
[test_getRecords.js]
|
||||
[test_isAvailable.js]
|
||||
[test_isCJKName.js]
|
||||
[test_isFieldEligibleForAutofill.js]
|
||||
[test_markAsAutofillField.js]
|
||||
|
|
|
@ -196,7 +196,7 @@ function uninstall(aData, aReason) {}
|
|||
|
||||
function startup(aData, aReason) {
|
||||
// Only start Onboarding when the browser UI is ready
|
||||
if (aReason === APP_STARTUP || aReason === ADDON_INSTALL) {
|
||||
if (Services.startup.startingUp) {
|
||||
Services.obs.addObserver(observe, BROWSER_READY_NOTIFICATION);
|
||||
Services.obs.addObserver(observe, BROWSER_SESSION_STORE_NOTIFICATION);
|
||||
} else {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
|
||||
requestLongerTimeout(2);
|
||||
|
||||
|
|
|
@ -405,7 +405,8 @@ var PocketOverlay = {
|
|||
for (let id of ["panelMenu_pocket", "menu_pocket", "BMB_pocket",
|
||||
"panelMenu_pocketSeparator", "menu_pocketSeparator",
|
||||
"BMB_pocketSeparator", "appMenu-library-pocket-button"]) {
|
||||
let element = window.document.getElementById(id);
|
||||
let element = window.document.getElementById(id) ||
|
||||
window.gNavToolbox.palette.querySelector("#" + id);
|
||||
if (element)
|
||||
element.remove();
|
||||
}
|
||||
|
@ -465,7 +466,10 @@ var PocketOverlay = {
|
|||
|
||||
// add to bookmarks-menu-button
|
||||
sib = document.getElementById("BMB_bookmarksToolbar");
|
||||
if (sib && !document.getElementById("BMB_pocket")) {
|
||||
if (!sib) {
|
||||
sib = window.gNavToolbox.palette.querySelector("#BMB_bookmarksToolbar");
|
||||
}
|
||||
if (sib && !sib.parentNode.querySelector("#BMB_pocket")) {
|
||||
let menu = createElementWithAttrs(document, "menuitem", {
|
||||
"id": "BMB_pocket",
|
||||
"label": gPocketBundle.GetStringFromName("pocketMenuitem.label"),
|
||||
|
|
|
@ -7,7 +7,8 @@ function checkWindowProperties(expectPresent, l) {
|
|||
}
|
||||
function checkElements(expectPresent, l) {
|
||||
for (let id of l) {
|
||||
is(!!document.getElementById(id), expectPresent, "element " + id + (expectPresent ? " is" : " is not") + " present");
|
||||
let el = document.getElementById(id) || gNavToolbox.palette.querySelector("#" + id);
|
||||
is(!!el, expectPresent, "element " + id + (expectPresent ? " is" : " is not") + " present");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
</Description>
|
||||
</em:targetApplication>
|
||||
<em:type>2</em:type>
|
||||
<em:version>10.10.0</em:version>
|
||||
<em:version>10.11.0</em:version>
|
||||
<em:bootstrap>true</em:bootstrap>
|
||||
<em:homepageURL>https://pageshot.net/</em:homepageURL>
|
||||
<em:multiprocessCompatible>true</em:multiprocessCompatible>
|
||||
|
|
|
@ -49,6 +49,14 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales
|
|||
'webextension/_locales/bn_BD/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ca"] += [
|
||||
'webextension/_locales/ca/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["cak"] += [
|
||||
'webextension/_locales/cak/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["cs"] += [
|
||||
'webextension/_locales/cs/messages.json'
|
||||
]
|
||||
|
@ -81,6 +89,10 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales
|
|||
'webextension/_locales/en_US/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["eo"] += [
|
||||
'webextension/_locales/eo/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["es_AR"] += [
|
||||
'webextension/_locales/es_AR/messages.json'
|
||||
]
|
||||
|
@ -117,6 +129,10 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales
|
|||
'webextension/_locales/fy_NL/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ga_IE"] += [
|
||||
'webextension/_locales/ga_IE/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["gu_IN"] += [
|
||||
'webextension/_locales/gu_IN/messages.json'
|
||||
]
|
||||
|
@ -129,6 +145,10 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales
|
|||
'webextension/_locales/hi_IN/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["hr"] += [
|
||||
'webextension/_locales/hr/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["hsb"] += [
|
||||
'webextension/_locales/hsb/messages.json'
|
||||
]
|
||||
|
@ -153,6 +173,10 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales
|
|||
'webextension/_locales/ja/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ka"] += [
|
||||
'webextension/_locales/ka/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["kab"] += [
|
||||
'webextension/_locales/kab/messages.json'
|
||||
]
|
||||
|
@ -181,6 +205,14 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales
|
|||
'webextension/_locales/lt/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["mk"] += [
|
||||
'webextension/_locales/mk/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["mr"] += [
|
||||
'webextension/_locales/mr/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ms"] += [
|
||||
'webextension/_locales/ms/messages.json'
|
||||
]
|
||||
|
@ -281,6 +313,10 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales
|
|||
'webextension/_locales/uz/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["vi"] += [
|
||||
'webextension/_locales/vi/messages.json'
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["zh_CN"] += [
|
||||
'webextension/_locales/zh_CN/messages.json'
|
||||
]
|
||||
|
|
|
@ -64,6 +64,9 @@
|
|||
"selfScreenshotErrorTitle": {
|
||||
"message": "Pe itwero mako cal me potbuk pa Firefox Screenshots!"
|
||||
},
|
||||
"emptySelectionErrorTitle": {
|
||||
"message": "Yer mamegi tidi tutwal"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Woo! Firefox Screenshots opo oo."
|
||||
},
|
||||
|
|
|
@ -64,6 +64,15 @@
|
|||
"selfScreenshotErrorTitle": {
|
||||
"message": "لا يمكننا أخذ لقطة لصفحة من صفحات «لقطات شاشة فَيَرفُكس»!"
|
||||
},
|
||||
"emptySelectionErrorTitle": {
|
||||
"message": "التحديد صغير جدا"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "لقطات الشاشة معطّلة في وضع التصفح الخاص"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "نأسف على الإزعاج. نعمل على هذه الخاصية للإصدارات اللاحقة."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "هناك عطل في «لقطات شاشة فَيَرفُكس»."
|
||||
},
|
||||
|
@ -71,7 +80,7 @@
|
|||
"message": "لسنا متأكدين ما المشكلة. أتمانع إعادة المحاولة أو أخذ لقطة لصفحة أخرى؟"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "خذ لقطات الشاشة و احفظها و شارطها دون مغادرة فَيَرفُكس."
|
||||
"message": "خذ لقطات الشاشة و احفظها و شاركها دون مغادرة فَيَرفُكس."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "التقط ما تريده فقط"
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Web səhifələrin ekran görüntülərini alın, müvəqqəti və ya qalıcı saxlayın."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.com>"
|
||||
},
|
||||
|
@ -8,6 +11,9 @@
|
|||
"myShotsLink": {
|
||||
"message": "Ekran Görüntülərim"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Səhifədə hər hansı bir yerdə sürüşdürərək və ya basaraq ərazini seçin. Ləğv etmək üçün ESC basın."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Saxla"
|
||||
},
|
||||
|
@ -26,6 +32,74 @@
|
|||
"notificationLinkCopiedTitle": {
|
||||
"message": "Keçid köçürüldü"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Ekran görüntüsünün keçidi buferə köçürüldü. Yapışdırmaq üçün $META_KEY$-V basın.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Xəta baş verdi."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Üzr istəyirik! Ekran görüntünüzü saxlaya bilmədik. Lütfən biraz sonra təkrar yoxlayın."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Ekran görüntülərinizə qoşula bilmirik."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Lütfən internet bağlantınızı yoxlayın. Əgər internetdə problem yoxdursa Firefox Screenshots xidmətində müvəqqəti xəta ola bilər."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Firefox Screenshots xidmətindəki müvəqqəti xəta üzündən ekran görüntünüzü saxlaya bilmədik. Lütfən biraz sonra təkrar yoxlayın."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Bu səhifənin ekran görüntüsü alına bilmir."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Bu normal Web səhifəsi deyil, bu səbəbdən ekran görüntüsünü almaq mümkün olmur."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Firefox Screenshots səhifəsinin ekran görüntüsünü ala bilməzsiz!"
|
||||
},
|
||||
"emptySelectionErrorTitle": {
|
||||
"message": "Seçiminiz çox balacadır"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Ekran görüntüləri Məxfi Səyahət rejimində sönülüdür"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Narahatlıq üçün üzr istəyirik. Gələcək buraxılışlarda bu özəllik üzərində işləyirik."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Off! Firefox Screenshots dəli olub."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Nə baş verdiyindən əmin deyilik. Bir daha yoxlayın və ya başqa səhifənin ekran görüntüsünü alaraq işləyib işləmədiyinə əmin olun."
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Firefoxu tərk etmədən ekran görüntüləri alın, saxlayın və paylaşın."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "İstədiyiniz hər şeyin görüntüsünü alın"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Səhifənin hər hansı bir hissəsini almaq üçün basın və ya sürüşdürün. Seçiminizi işıqlandırmaq üçün üzərinə gedin."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Pəncərəni və ya bütün səhifəni çəkin"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Sadəcə pəncərədə görünən hissəni və ya bütün səhifəni çəkmək üçün sağ üstdəki düymələrdən birini seçin."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "İstədiyiniz kimi"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Kəsdiyiniz hissələri rahat paylaşmaq üçün internetdə saxlayın və ya kompüterinizə endirin. Həmçinin Ekran Görüntülərim düyməsinə basaraq çəkdiyiniz bütün ekran görüntülərini görə bilərsiz."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Ötür"
|
||||
},
|
||||
|
@ -38,6 +112,17 @@
|
|||
"tourDone": {
|
||||
"message": "Tamamlandı"
|
||||
},
|
||||
"termsAndPrivacyNoticeCloudServices": {
|
||||
"message": "Firefox Screenshots işlədərək $TERMSANDPRIVACYNOTICETERMSLINK$ və $TERMSANDPRIVACYNOTICEPRIVACYLINK$ ilə razılaşmış olursunuz.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Şərtlər"
|
||||
},
|
||||
|
|
|
@ -67,6 +67,12 @@
|
|||
"emptySelectionErrorTitle": {
|
||||
"message": "Абраная вобласць занадта малая"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Здымкі экрана адключаны ў рэжыме прыватнага аглядання"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Прабачце за нязручнасць. Мы працуем над даданнем гэтай магчымасці у будучыя выпускі."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Вой! З Firefox Screenshots нешта не так."
|
||||
},
|
||||
|
|
|
@ -67,6 +67,12 @@
|
|||
"emptySelectionErrorTitle": {
|
||||
"message": "Избраната област е твърде малка"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Правене на снимки е изключено в поверителен режим"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Съжаляваме за неудобството. Очаквайте тази възможност в бъдещите версии."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Леле! Нещо се обърка с Firefox Screenshots."
|
||||
},
|
||||
|
@ -80,7 +86,7 @@
|
|||
"message": "Уловете само нужното"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Щракнете с мишката или влачете, за да уловите части от страницата. Посочвайки елементи от страницата – те се осветяват."
|
||||
"message": "Щракнете с мишката или влачете, за да уловите части от страницата. А когато посочите елементи от страницата – те се осветяват."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Улавяйте прозорци и цели страници"
|
||||
|
@ -92,10 +98,10 @@
|
|||
"message": "Както ви харесва"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Запазете снимките на страници от Мрежата за по-лесно споделяне или ги изтеглете на компютъра си. А бутонът „Моите снимки“ ще ви покаже всички направени от вас снимки."
|
||||
"message": "Запазвайте снимките на страници от Мрежата, за да ги споделяте по-лесно или ги изтегляйте на компютъра си. А бутонът „Моите снимки“ ще ви покаже всички направени от вас снимки."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Прескачане"
|
||||
"message": "Пропускане"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Напред"
|
||||
|
|
|
@ -64,6 +64,15 @@
|
|||
"selfScreenshotErrorTitle": {
|
||||
"message": "আপনি Firefox স্ক্রিনশটের পেজের শট নিতে পারেন না!"
|
||||
},
|
||||
"emptySelectionErrorTitle": {
|
||||
"message": "আপনি অল্প স্থান নির্বাচন করেছেন"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "ব্যক্তিগত ব্রাউজিং মোডে স্ক্রিনশট নেওয়া নিস্ক্রিয় করা হয়েছে"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "অসুবিধার জন্য দুঃখিত। আমরা এই বৈশিষ্ট্যটি নিয়ে কাজ করছি, খুব শীঘ্রই রিলিজ করা হবে।"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "আয় হায়! Firefox স্ক্রিনশট পাগল হয়ে গেছে।"
|
||||
},
|
||||
|
|
|
@ -0,0 +1,132 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Feu captures de pantalla de pàgines web i deseu-les temporalment o per sempre."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.com>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Fes una captura de pantalla"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Les meves captures"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Arrossegueu o feu clic a la pàgina per seleccionar una regió. Premeu ESC per cancel·lar."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Desa"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Captura la part visible"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Captura tota la pàgina"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Cancel·la"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Baixa"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "S'ha copiat l'enllaç"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "L'enllaç de la captura s'ha copiat al porta-retalls. Premeu $META_KEY$-V per enganxar-lo.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "No funciona."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Malauradament, s'ha pogut desar la vostra captura. Torneu a provar més tard."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "No s'ha pogut accedir a les vostres captures de pantalla."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Comproveu la connexió a Internet. Si podeu connectar-vos a Internet, podria ser un problema temporal del servei del Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "No s'ha pogut desar la vostra captura perquè hi ha un problema amb el servei del Firefox Screenshots. Torneu-ho a provar més tard."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "No es pot fer una captura de pantalla d'aquesta pàgina."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "No podeu fer una captura de pantalla perquè aquesta no és una pàgina web estàndard."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "No podeu fer una captura de pantalla de la pàgina del Firefox Screenshots!"
|
||||
},
|
||||
"emptySelectionErrorTitle": {
|
||||
"message": "La selecció és massa petita"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Les captures de pantalla estan desactivades en el mode de navegació privada"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Perdoneu les molèsties. Estem treballant en aquesta característica per a versions futures."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "El Firefox Screenshots ha tingut un problema."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "S'ha produït un error inesperat. Torneu-ho a provar o captureu una altra pàgina."
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Feu, deseu i compartiu captures de pantalla sense sortir del Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Captureu tot allò que vulgueu"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Feu clic i arrossegueu per capturar només una part de la pàgina. També podeu moure el ratolí per sobre per ressaltar la vostra selecció."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Captureu la finestra o la pàgina sencera"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Seleccioneu amb els botons de la part superior dreta si voleu capturar l'àrea visible de la finestra o la pàgina sencera."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Com vulgueu"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Deseu les vostres captures al web per compartir-les fàcilment o baixeu-les a l'ordinador. També podeu fer clic al botó «Les meves captures» per veure totes les captures que heu fet."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "OMET"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Diapositiva següent"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Diapositiva anterior"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Fet"
|
||||
},
|
||||
"termsAndPrivacyNoticeCloudServices": {
|
||||
"message": "Si utilitzeu el Firefox Screenshots, esteu acceptant les nostres $TERMSANDPRIVACYNOTICETERMSLINK$ i l'$TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "condicions d'ús"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "avís de privadesa"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,132 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Ke'achapa' silowachib'al chuqa' chapoj wachib'äl pan Ajk'amaya'l richin ye'ayäk."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.com>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Tichap jun Chapoj Wachib'äl"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Taq Nuwachib'al"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Taqirirej o tapitz'a' ri ruxaq richin nacha' ri k'ojlem. Tapitz'a' ESC richin niq'at."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Tiyak"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Tiyak wachel"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Tiyak chijun ruxaq"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Tiq'at"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Tiqasäx"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Ximonel Wachib'en"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Xwachib'ëx pa molwuj ri ruximonel awachib'al. Tapitz'a' $META_KEY$-V richin natz'äm.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Man nisamäj ta."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "¡Takuyu! Man yojtikïr ta niqayäk ri awachib'al. Tatojtob'ej jumej."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Man yojtikïr ta yojok pari taq chapoj awachib'al."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Tanik'oj awokem pa K'amaya'l. We yatok pa K'amaya'l, rik'in jub'a' xtuya' k'ayewal pa rusamaj ri Firefox taq Chapoj Wachib'äl."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Man xkatikïr ta xtayäk ri awachib'al ruma jun ruk'ayewal toq nisamäj ri Firefox Chapoj Wachib'äl. Tatojtob'ej chik pa jun mej."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Man yojtikïr ta nichap ruwachib'al re ruxaq re'."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Re re' man pa rub'eyal ta chi ruxaq Ajk'amaya'l, ruma ri' man yojtikïr ta niqachäp ruwachib'al."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "¡Man yatikïr ta nawelesaj ruwachib'al jun ruxaq Firefox Chapoj Wachib'äl!"
|
||||
},
|
||||
"emptySelectionErrorTitle": {
|
||||
"message": "Yalan ko'öl ri acha'oj"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Echupun ri Chapoj taq Wachib'äl pa Ichinan Okem pa K'amaya'l"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Takuyu' chi qe ruma ri k'ayewal. Tajin niqasamajij re rub'anikil re' richin ri ch'aqa' chik taq ruwäch."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "¡Itz! Itzel xe'el ri Firefox Chapoj Wachib'äl."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Man öj jikïl chi rij ri xk'ulwachitäj. ¿La nawajo' natojtob'ej chik o nachäp ruwachib'al jun chik ruxaq?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Ke'achapa', ke'ayaka', chuqa' ke'akomonij chapoj taq wachib'äl rik'in man yatel ta el pa Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Tachapa' ri Nawajo'"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Tapitz'a' chuqa' taqirirej richin nacha' xa jun peraj ruxaq. Chuqa' yatikïr yaq'axaj richin nipe retal ri acha'oj."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Chapoj Tzuwäch o Tz'aqät taq Ruxaq"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Ke'acha' ri ikim ajkiq'a' taq pitz'b'äl richin nachäp ri tz'etel ruk'ojlem tzuwäch o richin nachäp jun tz'aqät ruxaq."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Achi'el Niqa Chawäch"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Ke'ayaka' ri qupin taq awachib'al pa ajk'amaya'l richin man k'ayew ta ye'akomonij o ye'aqasaj pan akematz'ib'. Chuqa' yatikïr napïtz ri Taq Nuwachib'al richin ye'awïl konojel ri taq wachib'al e'elesan."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "SKIP"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Jun chik Q'axewäch"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Jun kan Q'axewäch"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Xb'an"
|
||||
},
|
||||
"termsAndPrivacyNoticeCloudServices": {
|
||||
"message": "Rik'in rokisaxik ri Firefox Chapoj Wachib'äl, nawoqaj $TERMSANDPRIVACYNOTICETERMSLINK$ chuqa' $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Taq ojqanem"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Rutzijol Ichinanem"
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
"message": "Mozilla <screenshots-feedback@mozilla.com>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Pořídit snímek obrazovky"
|
||||
"message": "Pořídit snímek stránky"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mé snímky"
|
||||
|
@ -67,6 +67,12 @@
|
|||
"emptySelectionErrorTitle": {
|
||||
"message": "Vybraná oblast je moc malá"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Služba Firefox Screenshots je v anonymním prohlížení vypnutá"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Omlouváme se za nepříjemnosti. Na této funkci pracujeme pro některé příští vydání."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Jejda! Služba Firefox Screenshots přestala pracovat."
|
||||
},
|
||||
|
|
|
@ -64,6 +64,15 @@
|
|||
"selfScreenshotErrorTitle": {
|
||||
"message": "Nid oes modd cymryd llun o dudalen lluniau sgrin Firefox Screenshots!"
|
||||
},
|
||||
"emptySelectionErrorTitle": {
|
||||
"message": "Mae eich dewis yn rhy fach"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Mae Screenshot wedi ei analluogi yn y Modd Pori Preifat"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Ymddiheuriadau am yr anhwylustod. Rydym yn gweithio ar y nodwedd hwn ar gyfer fersiynau'r dyfodol."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Www! Mae Firefox Screenshots wedi mynd yn hurt."
|
||||
},
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
"message": "Link kopieret"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Linket til dit skærmbillede er blevet gemt i udklipsholderen. Tryk på $META_KEY$-V for at sætte ind. ",
|
||||
"message": "Linket til dit skærmbillede er blevet gemt i udklipsholderen. Tryk på $META_KEY$-V for at sætte ind.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
|
@ -50,16 +50,16 @@
|
|||
"message": "Vi kan ikke oprette forbindelse til dine skærmbilleder."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Kontroller din internet-forbindelse. Hvis du ikke kan oprette forbindelse til internettet, kan der være et midlertidigt teknisk problem med Firefox Screenshots. "
|
||||
"message": "Kontroller din internet-forbindelse. Hvis du ikke kan oprette forbindelse til internettet, kan der være et midlertidigt teknisk problem med Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Vi kunne ikke gemme dit skærmbillede, fordi der er et teknisk problem med Firefox Screenshots. Prøv igen senere. "
|
||||
"message": "Vi kunne ikke gemme dit skærmbillede, fordi der er et teknisk problem med Firefox Screenshots. Prøv igen senere."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Vi kan ikke tage et skærmbillede af denne side. "
|
||||
"message": "Vi kan ikke tage et skærmbillede af denne side."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Dette er ikke en almindelig webside, så du kan ikke tage skærmbilleder af den. "
|
||||
"message": "Dette er ikke en almindelig webside, så du kan ikke tage skærmbilleder af den."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Du kan ikke tage skærmbilleder af en side i Firefox Screenshots."
|
||||
|
@ -67,6 +67,12 @@
|
|||
"emptySelectionErrorTitle": {
|
||||
"message": "Din markering er for lille"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Screenshots er deaktiveret i privat browsing-tilstand"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Vi beklager ulejligheden. Vi arbejder på at få funktionen til at virke i fremtidige udgivelser."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Hov! Noget gik helt galt med Firefox Screenshots."
|
||||
},
|
||||
|
@ -74,7 +80,7 @@
|
|||
"message": "Vi er ikke sikre på, hvad der lige skete. Vil du prøve igen - eller vil du tage et skærmbillede af en anden side?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Tag, gem og del skærmbilleder uden at forlade Firefox. "
|
||||
"message": "Tag, gem og del skærmbilleder uden at forlade Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Gem lige hvad du vil."
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Speichern Sie Ausschnitte und Bildschirmfotos von Webseiten, die Sie temporär oder dauerhaft speichern können."
|
||||
"message": "Erstellen Sie Bildschirmfotos von vollständigen Webseiten oder Ausschnitten und speichern Sie diese temporär oder dauerhaft."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.com>"
|
||||
|
@ -12,7 +12,7 @@
|
|||
"message": "Meine Bildschirmfotos"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Ziehen oder Klicken Sie auf der Seite, um einen Bereich auszuwählen. Drücken Sie ESC zum Abbrechen."
|
||||
"message": "Ziehen oder klicken Sie auf der Seite, um einen Bereich auszuwählen. Drücken Sie ESC zum Abbrechen."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Speichern"
|
||||
|
@ -59,7 +59,7 @@
|
|||
"message": "Ein Bildschirmfoto dieser Seite ist nicht möglich."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Dies ist keine Standard-Webseite, daher sind keine Bildschirmfotos von ihr möglich."
|
||||
"message": "Dies ist keine Standard-Webseite, deshalb sind keine Bildschirmfotos von ihr möglich."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Sie können kein Bildschirmfoto einer Firefox-Screenshots-Seite machen!"
|
||||
|
@ -67,6 +67,12 @@
|
|||
"emptySelectionErrorTitle": {
|
||||
"message": "Ihr Auswahlbereich ist zu klein"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Screenshots ist im Privaten Modus deaktiviert"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Wir bitten um Entschuldigung für diese Unannehmlichkeiten. Wir arbeiten daran, diese Funktion in zukünftigen Versionen zur Verfügung zu stellen."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Firefox Screenshots funktioniert nicht richtig."
|
||||
},
|
||||
|
|
|
@ -67,6 +67,12 @@
|
|||
"emptySelectionErrorTitle": {
|
||||
"message": "Waš wuběrk jo pśemały"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Firefox Screenshots jo w priwatnem modusu znjemóžnjony"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Wódajśo pšosym wobuznosći. Źěłamy na toś tej funkciji za pśichodne wersije."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Hopla! Firefox Screenshots njeźěła."
|
||||
},
|
||||
|
|
|
@ -67,6 +67,12 @@
|
|||
"emptySelectionErrorTitle": {
|
||||
"message": "Η επιλογή σας είναι πολύ μικρή"
|
||||
},
|
||||
"privateWindowErrorTitle": {
|
||||
"message": "Το Screenshots είναι απενεργοποιημένο στη λειτουργία ιδιωτικής περιήγησης"
|
||||
},
|
||||
"privateWindowErrorDetails": {
|
||||
"message": "Λυπούμαστε για την ταλαιπωρία. Εργαζόμαστε πάνω σε αυτό το χαρακτηριστικό για μελλοντικές εκδόσεις."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Ωχ! Κάτι πήγε στραβά στην υπηρεσία Firefox Screenshots."
|
||||
},
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче