зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1483375 - Add tab-able search, search telemetry and bug fixes to Activity Stream r=ursula
Differential Revision: https://phabricator.services.mozilla.com/D3367 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
80dafc6927
Коммит
3bb8b396bb
|
@ -1,6 +1,7 @@
|
|||
import {actionCreators as ac, actionTypes as at} from "common/Actions.jsm";
|
||||
import {FormattedMessage} from "react-intl";
|
||||
import React from "react";
|
||||
import {TOP_SITES_SOURCE} from "./TopSitesConstants";
|
||||
|
||||
class SelectableSearchShortcut extends React.PureComponent {
|
||||
render() {
|
||||
|
@ -74,7 +75,7 @@ export class SearchShortcutsForm extends React.PureComponent {
|
|||
if (shortcut.isSelected && !alreadyPinned) {
|
||||
pinQueue.push(this._searchTopSite(shortcut));
|
||||
} else if (!shortcut.isSelected && alreadyPinned) {
|
||||
unpinQueue.push({url: alreadyPinned.url});
|
||||
unpinQueue.push({url: alreadyPinned.url, searchVendor: shortcut.shortURL});
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -97,6 +98,11 @@ export class SearchShortcutsForm extends React.PureComponent {
|
|||
index: availableSlots.shift()
|
||||
}
|
||||
}));
|
||||
this.props.dispatch(ac.UserEvent({
|
||||
source: TOP_SITES_SOURCE,
|
||||
event: "SEARCH_EDIT_ADD",
|
||||
value: {search_vendor: shortcut.searchVendor}
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -106,6 +112,11 @@ export class SearchShortcutsForm extends React.PureComponent {
|
|||
type: at.TOP_SITES_UNPIN,
|
||||
data: {site: shortcut}
|
||||
}));
|
||||
this.props.dispatch(ac.UserEvent({
|
||||
source: TOP_SITES_SOURCE,
|
||||
event: "SEARCH_EDIT_DELETE",
|
||||
value: {search_vendor: shortcut.searchVendor}
|
||||
}));
|
||||
});
|
||||
|
||||
this.props.onClose();
|
||||
|
@ -115,7 +126,8 @@ export class SearchShortcutsForm extends React.PureComponent {
|
|||
return {
|
||||
url: shortcut.url,
|
||||
searchTopSite: true,
|
||||
label: shortcut.keyword
|
||||
label: shortcut.keyword,
|
||||
searchVendor: shortcut.shortURL
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ export class TopSiteLink extends React.PureComponent {
|
|||
super(props);
|
||||
this.state = {screenshotImage: null};
|
||||
this.onDragEvent = this.onDragEvent.bind(this);
|
||||
this.onKeyPress = this.onKeyPress.bind(this);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -112,6 +113,15 @@ export class TopSiteLink extends React.PureComponent {
|
|||
ScreenshotUtils.maybeRevokeBlobObjectURL(this.state.screenshotImage);
|
||||
}
|
||||
|
||||
onKeyPress(event) {
|
||||
// If we have tabbed to a search shortcut top site, and we click 'enter',
|
||||
// we should execute the onClick function. This needs to be added because
|
||||
// search top sites are anchor tags without an href. See bug 1483135
|
||||
if (this.props.link.searchTopSite && event.key === "Enter") {
|
||||
this.props.onClick(event);
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const {children, className, defaultStyle, isDraggable, link, onClick, title} = this.props;
|
||||
const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : ""}${link.isDragged ? " dragged" : ""}${link.searchTopSite ? " search-shortcut" : ""}`;
|
||||
|
@ -173,7 +183,7 @@ export class TopSiteLink extends React.PureComponent {
|
|||
}
|
||||
return (<li className={topSiteOuterClassName} onDrop={this.onDragEvent} onDragOver={this.onDragEvent} onDragEnter={this.onDragEvent} onDragLeave={this.onDragEvent} {...draggableProps}>
|
||||
<div className="top-site-inner">
|
||||
<a href={!link.searchTopSite && link.url} onClick={onClick} draggable={true}>
|
||||
<a href={!link.searchTopSite && link.url} tabIndex="0" onKeyPress={this.onKeyPress} onClick={onClick} draggable={true}>
|
||||
<div className="tile" aria-hidden={true} data-fallback={letterFallback}>
|
||||
<div className={imageClassName} style={imageStyle} />
|
||||
{link.searchTopSite && <div className="top-site-icon search-topsite" />}
|
||||
|
|
|
@ -64,10 +64,15 @@ export class _TopSites extends React.PureComponent {
|
|||
const topSites = this._getVisibleTopSites();
|
||||
const topSitesIconsStats = countTopSitesIconsTypes(topSites);
|
||||
const topSitesPinned = topSites.filter(site => !!site.isPinned).length;
|
||||
const searchShortcuts = topSites.filter(site => !!site.searchTopSite).length;
|
||||
// Dispatch telemetry event with the count of TopSites images types.
|
||||
this.props.dispatch(ac.AlsoToMain({
|
||||
type: at.SAVE_SESSION_PERF_DATA,
|
||||
data: {topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned}
|
||||
data: {
|
||||
topsites_icon_stats: topSitesIconsStats,
|
||||
topsites_pinned: topSitesPinned,
|
||||
topsites_search_shortcuts: searchShortcuts
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
|
|
|
@ -4065,10 +4065,15 @@ class _TopSites extends react__WEBPACK_IMPORTED_MODULE_6___default.a.PureCompone
|
|||
const topSites = this._getVisibleTopSites();
|
||||
const topSitesIconsStats = countTopSitesIconsTypes(topSites);
|
||||
const topSitesPinned = topSites.filter(site => !!site.isPinned).length;
|
||||
const searchShortcuts = topSites.filter(site => !!site.searchTopSite).length;
|
||||
// Dispatch telemetry event with the count of TopSites images types.
|
||||
this.props.dispatch(common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionCreators"].AlsoToMain({
|
||||
type: common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionTypes"].SAVE_SESSION_PERF_DATA,
|
||||
data: { topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned }
|
||||
data: {
|
||||
topsites_icon_stats: topSitesIconsStats,
|
||||
topsites_pinned: topSitesPinned,
|
||||
topsites_search_shortcuts: searchShortcuts
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
|
@ -4211,6 +4216,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
|
||||
/* harmony import */ var _TopSitesConstants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(34);
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -4300,7 +4307,7 @@ class SearchShortcutsForm extends react__WEBPACK_IMPORTED_MODULE_2___default.a.P
|
|||
if (shortcut.isSelected && !alreadyPinned) {
|
||||
pinQueue.push(this._searchTopSite(shortcut));
|
||||
} else if (!shortcut.isSelected && alreadyPinned) {
|
||||
unpinQueue.push({ url: alreadyPinned.url });
|
||||
unpinQueue.push({ url: alreadyPinned.url, searchVendor: shortcut.shortURL });
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -4323,6 +4330,11 @@ class SearchShortcutsForm extends react__WEBPACK_IMPORTED_MODULE_2___default.a.P
|
|||
index: availableSlots.shift()
|
||||
}
|
||||
}));
|
||||
this.props.dispatch(common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionCreators"].UserEvent({
|
||||
source: _TopSitesConstants__WEBPACK_IMPORTED_MODULE_3__["TOP_SITES_SOURCE"],
|
||||
event: "SEARCH_EDIT_ADD",
|
||||
value: { search_vendor: shortcut.searchVendor }
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -4332,6 +4344,11 @@ class SearchShortcutsForm extends react__WEBPACK_IMPORTED_MODULE_2___default.a.P
|
|||
type: common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionTypes"].TOP_SITES_UNPIN,
|
||||
data: { site: shortcut }
|
||||
}));
|
||||
this.props.dispatch(common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionCreators"].UserEvent({
|
||||
source: _TopSitesConstants__WEBPACK_IMPORTED_MODULE_3__["TOP_SITES_SOURCE"],
|
||||
event: "SEARCH_EDIT_DELETE",
|
||||
value: { search_vendor: shortcut.searchVendor }
|
||||
}));
|
||||
});
|
||||
|
||||
this.props.onClose();
|
||||
|
@ -4341,7 +4358,8 @@ class SearchShortcutsForm extends react__WEBPACK_IMPORTED_MODULE_2___default.a.P
|
|||
return {
|
||||
url: shortcut.url,
|
||||
searchTopSite: true,
|
||||
label: shortcut.keyword
|
||||
label: shortcut.keyword,
|
||||
searchVendor: shortcut.shortURL
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -4416,6 +4434,7 @@ class TopSiteLink extends react__WEBPACK_IMPORTED_MODULE_4___default.a.PureCompo
|
|||
super(props);
|
||||
this.state = { screenshotImage: null };
|
||||
this.onDragEvent = this.onDragEvent.bind(this);
|
||||
this.onKeyPress = this.onKeyPress.bind(this);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -4511,6 +4530,15 @@ class TopSiteLink extends react__WEBPACK_IMPORTED_MODULE_4___default.a.PureCompo
|
|||
content_src_lib_screenshot_utils__WEBPACK_IMPORTED_MODULE_5__["ScreenshotUtils"].maybeRevokeBlobObjectURL(this.state.screenshotImage);
|
||||
}
|
||||
|
||||
onKeyPress(event) {
|
||||
// If we have tabbed to a search shortcut top site, and we click 'enter',
|
||||
// we should execute the onClick function. This needs to be added because
|
||||
// search top sites are anchor tags without an href. See bug 1483135
|
||||
if (this.props.link.searchTopSite && event.key === "Enter") {
|
||||
this.props.onClick(event);
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { children, className, defaultStyle, isDraggable, link, onClick, title } = this.props;
|
||||
const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : ""}${link.isDragged ? " dragged" : ""}${link.searchTopSite ? " search-shortcut" : ""}`;
|
||||
|
@ -4579,7 +4607,7 @@ class TopSiteLink extends react__WEBPACK_IMPORTED_MODULE_4___default.a.PureCompo
|
|||
{ className: "top-site-inner" },
|
||||
react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(
|
||||
"a",
|
||||
{ href: !link.searchTopSite && link.url, onClick: onClick, draggable: true },
|
||||
{ href: !link.searchTopSite && link.url, tabIndex: "0", onKeyPress: this.onKeyPress, onClick: onClick, draggable: true },
|
||||
react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(
|
||||
"div",
|
||||
{ className: "tile", "aria-hidden": true, "data-fallback": letterFallback },
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -223,6 +223,7 @@ and losing focus. | :one:
|
|||
| `rich_icon` | [Optional] Number of topsites that display a high quality favicon. | :one:
|
||||
| `no_image` | [Optional] Number of topsites that have no screenshot. | :one:
|
||||
| `topsites_pinned` | [Optional] Number of topsites that are pinned. | :one:
|
||||
| `topsites_search_shortcuts` | [Optional] Number of search shortcut topsites. | :one:
|
||||
| `visibility_event_rcvd_ts` | [Optional][Server Counter][Server Alert for too many omissions] DOMHighResTimeStamp of when the page itself receives an event that document.visibilityState == visible. | :one:
|
||||
| `tiles` | [Required] A list of tile objects for the Pocket articles. Each tile object mush have a ID, and optionally a "pos" property to indicate the tile position | :one:
|
||||
| `click` | [Optional] An integer to record the 0-based index when user clicks on a Pocket tile. | :one:
|
||||
|
|
|
@ -110,11 +110,10 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
|
|||
#### Adding a search shortcut
|
||||
```js
|
||||
{
|
||||
"event": "ADD_SEARCH_SHORTCUT",
|
||||
"event": "SEARCH_EDIT_ADD",
|
||||
"source": "TOP_SITES",
|
||||
"action_position": 2,
|
||||
"value": {
|
||||
"card_type": "search",
|
||||
"search_vendor": "google"
|
||||
}
|
||||
|
||||
|
@ -129,14 +128,13 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
|
|||
}
|
||||
```
|
||||
|
||||
#### Editing a search shortcut
|
||||
#### Deleting a search shortcut
|
||||
```js
|
||||
{
|
||||
"event": "EDIT_SEARCH_SHORTCUT",
|
||||
"event": "SEARCH_EDIT_DELETE",
|
||||
"source": "TOP_SITES",
|
||||
"action_position": 2,
|
||||
"value": {
|
||||
"card_type": "search",
|
||||
"search_vendor": "google"
|
||||
}
|
||||
|
||||
|
@ -441,6 +439,9 @@ perf: {
|
|||
// The number of Top Sites that are pinned.
|
||||
"topsites_pinned": 3,
|
||||
|
||||
// The number of search shortcut Top Sites.
|
||||
"topsites_search_shortcuts": 2,
|
||||
|
||||
// How much longer the data took, in milliseconds, to be ready for display
|
||||
// than it would have been in the ideal case. The user currently sees placeholder
|
||||
// cards instead of real cards for approximately this length of time. This is
|
||||
|
|
|
@ -648,7 +648,9 @@ this.TopSitesFeed = class TopSitesFeed {
|
|||
this.refresh({broadcast: true});
|
||||
break;
|
||||
case SEARCH_SHORTCUTS_EXPERIMENT:
|
||||
if (!action.data.value) {
|
||||
if (action.data.value) {
|
||||
this.updateCustomSearchShortcuts();
|
||||
} else {
|
||||
this.disableSearchImprovements();
|
||||
}
|
||||
this.refresh({broadcast: true});
|
||||
|
|
|
@ -173,6 +173,7 @@ section_menu_action_expand_section=Επέκταση ενότητας
|
|||
section_menu_action_manage_section=Διαχείριση ενότητας
|
||||
section_menu_action_manage_webext=Διαχείριση επέκτασης
|
||||
section_menu_action_add_topsite=Προσθήκη κορυφαίας ιστοσελίδας
|
||||
section_menu_action_add_search_engine=Προσθήκη μηχανής αναζήτησης
|
||||
section_menu_action_move_up=Μετακίνηση επάνω
|
||||
section_menu_action_move_down=Μετακίνηση κάτω
|
||||
section_menu_action_privacy_notice=Σημείωση απορρήτου
|
||||
|
@ -201,4 +202,3 @@ firstrun_privacy_notice=Σημείωση Απορρήτου
|
|||
|
||||
firstrun_continue_to_login=Συνέχεια
|
||||
firstrun_skip_login=Παράλειψη βήματος
|
||||
section_menu_action_add_search_engine=Προσθήκη μηχανής αναζήτησης
|
||||
|
|
|
@ -173,6 +173,7 @@ section_menu_action_expand_section=Expand Section
|
|||
section_menu_action_manage_section=Manage Section
|
||||
section_menu_action_manage_webext=Manage Extension
|
||||
section_menu_action_add_topsite=Add Top Site
|
||||
section_menu_action_add_search_engine=Add Search Engine
|
||||
section_menu_action_move_up=Move Up
|
||||
section_menu_action_move_down=Move Down
|
||||
section_menu_action_privacy_notice=Privacy Notice
|
||||
|
@ -201,4 +202,3 @@ firstrun_privacy_notice=Privacy Notice
|
|||
|
||||
firstrun_continue_to_login=Continue
|
||||
firstrun_skip_login=Skip this step
|
||||
section_menu_action_add_search_engine=Add Search Engine
|
||||
|
|
|
@ -173,6 +173,7 @@ section_menu_action_expand_section=Expandir sección
|
|||
section_menu_action_manage_section=Administrar sección
|
||||
section_menu_action_manage_webext=Administrar extensión
|
||||
section_menu_action_add_topsite=Agregar Sitio más visitado
|
||||
section_menu_action_add_search_engine=Agregar buscador
|
||||
section_menu_action_move_up=Subir
|
||||
section_menu_action_move_down=Bajar
|
||||
section_menu_action_privacy_notice=Nota de privacidad
|
||||
|
@ -201,4 +202,3 @@ firstrun_privacy_notice=Anuncio de privacidad
|
|||
|
||||
firstrun_continue_to_login=Continuar
|
||||
firstrun_skip_login=Saltear este paso
|
||||
section_menu_action_add_search_engine=Agregar buscador
|
||||
|
|
|
@ -173,6 +173,7 @@ section_menu_action_expand_section=Szakasz lenyitása
|
|||
section_menu_action_manage_section=Szakasz kezelése
|
||||
section_menu_action_manage_webext=Kiterjesztés kezelése
|
||||
section_menu_action_add_topsite=Hozzáadás a népszerű oldalakhoz
|
||||
section_menu_action_add_search_engine=Keresőszolgáltatás hozzáadása
|
||||
section_menu_action_move_up=Mozgatás felfelé
|
||||
section_menu_action_move_down=Mozgatás lefelé
|
||||
section_menu_action_privacy_notice=Adatvédelmi nyilatkozat
|
||||
|
@ -201,4 +202,3 @@ firstrun_privacy_notice=Adatvédelmi nyilatkozatot
|
|||
|
||||
firstrun_continue_to_login=Folytatás
|
||||
firstrun_skip_login=Lépés kihagyása
|
||||
section_menu_action_add_search_engine=Keresőszolgáltatás hozzáadása
|
||||
|
|
|
@ -173,6 +173,7 @@ section_menu_action_expand_section=Bentangkan Bagian
|
|||
section_menu_action_manage_section=Kelola Bagian
|
||||
section_menu_action_manage_webext=Kelola Ekstensi
|
||||
section_menu_action_add_topsite=Tambah Situs Pilihan
|
||||
section_menu_action_add_search_engine=Tambahkan Mesin Pencari
|
||||
section_menu_action_move_up=Naikkan
|
||||
section_menu_action_move_down=Turunkan
|
||||
section_menu_action_privacy_notice=Kebijakan Privasi
|
||||
|
@ -201,4 +202,3 @@ firstrun_privacy_notice=Pernyataan Privasi
|
|||
|
||||
firstrun_continue_to_login=Lanjutkan
|
||||
firstrun_skip_login=Lewati langkah ini
|
||||
section_menu_action_add_search_engine=Tambahkan Mesin Pencari
|
||||
|
|
|
@ -201,4 +201,3 @@ firstrun_privacy_notice=informativa sulla privacy
|
|||
|
||||
firstrun_continue_to_login=Continua
|
||||
firstrun_skip_login=Ignora questo passaggio
|
||||
section_menu_action_add_search_engine=Aggiungi motore di ricerca
|
||||
|
|
|
@ -19,6 +19,8 @@ header_recommended_by={provider} ശുപാർശ ചെയ്തത്
|
|||
type_label_visited=സന്ദർശിച്ചത്
|
||||
type_label_bookmarked=അടയാളപ്പെടുത്തിയത്
|
||||
type_label_recommended=ട്രെൻഡിംഗ്
|
||||
type_label_pocket=പോക്കറ്റിലേക്ക് സംരക്ഷിച്ചു
|
||||
type_label_downloaded=ഡൗൺലോഡ് ചെയ്തവ
|
||||
|
||||
# LOCALIZATION NOTE (menu_action_*): These strings are displayed in a context
|
||||
# menu and are meant as a call to action for a given page.
|
||||
|
@ -29,10 +31,10 @@ menu_action_remove_bookmark=അടയാളം മാറ്റുക
|
|||
menu_action_open_new_window=പുതിയ ജാലകത്തിൽ തുറക്കുക
|
||||
menu_action_open_private_window=പുതിയ രസഹ്യജാലകത്തിൽ തുറക്കുക
|
||||
menu_action_dismiss=പുറത്താക്കുക
|
||||
menu_action_delete=ചരിത്രത്തിൽ നിന്ന് ഒഴിവാക്കുക
|
||||
menu_action_delete=നാള്വഴിയിൽ നിന്ന് ഒഴിവാക്കുക
|
||||
menu_action_pin=പിൻ ചെയ്യുക
|
||||
menu_action_unpin=അൺപിൻ ചെയ്യുക
|
||||
confirm_history_delete_p1=നിങ്ങളുടെ ചരിത്രത്തിൽ നിന്ന് ഈ പേജിന്റെ എല്ലാ ഉദാഹരണങ്ങളും ഇല്ലാതാക്കാൻ നിങ്ങൾ താൽപ്പര്യപ്പെടുന്നുവെന്ന് തീർച്ചയാണോ?
|
||||
confirm_history_delete_p1=നിങ്ങളുടെ നാള്വഴിയിൽ നിന്ന് ഈ പേജിന്റെ എല്ലാ ഉദാഹരണങ്ങളും ഇല്ലാതാക്കാൻ നിങ്ങൾ താൽപ്പര്യപ്പെടുന്നുവെന്ന് തീർച്ചയാണോ?
|
||||
# LOCALIZATION NOTE (confirm_history_delete_notice_p2): this string is displayed in
|
||||
# the same dialog as confirm_history_delete_p1. "This action" refers to deleting a
|
||||
# page from history.
|
||||
|
@ -119,7 +121,7 @@ topstories_empty_state=നിങ്ങൾ ഇവിടെ വരെ എത്ത
|
|||
|
||||
# LOCALIZATION NOTE (manual_migration_explanation2): This message is shown to encourage users to
|
||||
# import their browser profile from another browser they might be using.
|
||||
manual_migration_explanation2=മറ്റൊരു ബ്രൗസറിൽ നിന്നുള്ള ബുക്ക്മാർക്കുകൾ, ചരിത്രം, പാസ്വേഡുകൾ എന്നിവ ഉപയോഗിച്ച് ഫയർഫോക്സ് പരീക്ഷിക്കുക.
|
||||
manual_migration_explanation2=മറ്റൊരു ബ്രൗസറിൽ നിന്നുള്ള ബുക്ക്മാർക്കുകൾ, നാൾവഴികൾ, പാസ്വേഡുകൾ എന്നിവ ഉപയോഗിച്ച് ഫയർഫോക്സ് പരീക്ഷിക്കുക.
|
||||
# LOCALIZATION NOTE (manual_migration_cancel_button): This message is shown on a button that cancels the
|
||||
# process of importing another browser’s profile into Firefox.
|
||||
manual_migration_cancel_button=വേണ്ട, നന്ദി
|
||||
|
@ -141,6 +143,7 @@ manual_migration_import_button=ഇപ്പോൾ ഇറക്കുമതി
|
|||
# firstrun_form_header is displayed more boldly as the call to action.
|
||||
|
||||
|
||||
|
||||
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
|
||||
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
|
||||
|
||||
|
|
|
@ -173,6 +173,7 @@ section_menu_action_expand_section=Utvid seksjon
|
|||
section_menu_action_manage_section=Handter seksjon
|
||||
section_menu_action_manage_webext=Handter utviding
|
||||
section_menu_action_add_topsite=Legg til mest besøkte
|
||||
section_menu_action_add_search_engine=Legg til søkjemotor
|
||||
section_menu_action_move_up=Flytt opp
|
||||
section_menu_action_move_down=Flytt ned
|
||||
section_menu_action_privacy_notice=Personvernmerknad
|
||||
|
@ -201,4 +202,3 @@ firstrun_privacy_notice=Personvernpraksis
|
|||
|
||||
firstrun_continue_to_login=Fortset
|
||||
firstrun_skip_login=Hopp over dette steget
|
||||
section_menu_action_add_search_engine=Legg til søkjemotor
|
||||
|
|
|
@ -173,6 +173,7 @@ section_menu_action_expand_section=Expandir secção
|
|||
section_menu_action_manage_section=Gerir secção
|
||||
section_menu_action_manage_webext=Gerir extensão
|
||||
section_menu_action_add_topsite=Adicionar site mais visitado
|
||||
section_menu_action_add_search_engine=Adicionar motor de pesquisa
|
||||
section_menu_action_move_up=Mover para cima
|
||||
section_menu_action_move_down=Mover para baixo
|
||||
section_menu_action_privacy_notice=Aviso de privacidade
|
||||
|
@ -201,4 +202,3 @@ firstrun_privacy_notice=Aviso de privacidade
|
|||
|
||||
firstrun_continue_to_login=Continuar
|
||||
firstrun_skip_login=Saltar este passo
|
||||
section_menu_action_add_search_engine=Adicionar motor de pesquisa
|
||||
|
|
|
@ -173,6 +173,7 @@ section_menu_action_expand_section=Expandera sektion
|
|||
section_menu_action_manage_section=Hantera sektion
|
||||
section_menu_action_manage_webext=Hantera tillägg
|
||||
section_menu_action_add_topsite=Lägg till mest besökta
|
||||
section_menu_action_add_search_engine=Lägg till sökmotor
|
||||
section_menu_action_move_up=Flytta upp
|
||||
section_menu_action_move_down=Flytta ner
|
||||
section_menu_action_privacy_notice=Sekretesspolicy
|
||||
|
@ -201,4 +202,3 @@ firstrun_privacy_notice=Sekretesspolicy
|
|||
|
||||
firstrun_continue_to_login=Fortsätt
|
||||
firstrun_skip_login=Hoppa över det här steget
|
||||
section_menu_action_add_search_engine=Lägg till sökmotor
|
||||
|
|
|
@ -173,6 +173,7 @@ section_menu_action_expand_section=展开板块
|
|||
section_menu_action_manage_section=管理板块
|
||||
section_menu_action_manage_webext=管理扩展
|
||||
section_menu_action_add_topsite=添加常用网站
|
||||
section_menu_action_add_search_engine=添加搜索引擎
|
||||
section_menu_action_move_up=上移
|
||||
section_menu_action_move_down=下移
|
||||
section_menu_action_privacy_notice=隐私声明
|
||||
|
@ -201,4 +202,3 @@ firstrun_privacy_notice=隐私声明
|
|||
|
||||
firstrun_continue_to_login=继续
|
||||
firstrun_skip_login=跳过此步骤
|
||||
section_menu_action_add_search_engine=添加搜索引擎
|
||||
|
|
|
@ -13,11 +13,12 @@ cd /activity-stream && npm install . && npm run buildmc
|
|||
|
||||
# Build latest m-c with Activity Stream changes
|
||||
cd /mozilla-central && ./mach build \
|
||||
&& ./mach test browser_parsable_css \
|
||||
&& ./mach lint -l codespell browser/components/newtab \
|
||||
&& ./mach test browser/components/newtab/test/browser --headless \
|
||||
&& ./mach test browser/components/newtab/test/xpcshell \
|
||||
&& ./mach test browser/components/preferences/in-content/tests/browser_hometab_restore_defaults.js --headless \
|
||||
&& ./mach test browser/components/preferences/in-content/tests/browser_newtab_menu.js --headless \
|
||||
&& ./mach test browser/components/enterprisepolicies/tests/browser/browser_policy_set_homepage.js --headless \
|
||||
&& ./mach test browser/components/preferences/in-content/tests/browser_search_subdialogs_within_preferences_1.js --headless
|
||||
&& ./mach test --log-tbpl test_run_log \
|
||||
browser_parsable_css \
|
||||
browser/components/newtab \
|
||||
browser/components/preferences/in-content/tests/browser_hometab_restore_defaults.js \
|
||||
browser/components/preferences/in-content/tests/browser_newtab_menu.js \
|
||||
browser/components/enterprisepolicies/tests/browser/browser_policy_set_homepage.js \
|
||||
browser/components/preferences/in-content/tests/browser_search_subdialogs_within_preferences_1.js \
|
||||
&& ! grep -q TEST-UNEXPECTED test_run_log
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче