diff --git a/Cargo.lock b/Cargo.lock index d9c56acab8694..4490150490605 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -771,7 +771,7 @@ dependencies = [ [[package]] name = "dwrote" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2944,7 +2944,7 @@ dependencies = [ "core-foundation 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dwrote 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "dwrote 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2972,7 +2972,7 @@ dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)", - "dwrote 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "dwrote 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2988,7 +2988,7 @@ dependencies = [ "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)", - "dwrote 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "dwrote 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3197,7 +3197,7 @@ dependencies = [ "checksum docopt 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d8acd393692c503b168471874953a2531df0e9ab77d0b6bbc582395743300a4a" "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" "checksum dtoa-short 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "068d4026697c1a18f0b0bb8cfcad1b0c151b90d8edb9bf4c235ad68128920d1d" -"checksum dwrote 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b5a0af6d47ecf67355dc36e5fc09547050bd8a4b87870e637911ffe4aced32a" +"checksum dwrote 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "18e895b763d82cafef31c7c1e2f4f17fb70f385ac651b0918a46ff5790664a63" "checksum either 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18785c1ba806c258137c937e44ada9ee7e69a37e3c72077542cd2f069d78562a" "checksum ena 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "88dc8393b3c7352f94092497f6b52019643e493b6b890eb417cdb7c46117e621" "checksum encoding_c 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "769ecb8b33323998e482b218c0d13cd64c267609023b4b7ec3ee740714c318ee" diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index a8754741749c7..aadc58985a147 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -1035,9 +1035,9 @@ pref("security.sandbox.gmp.win32k-disable", false); #endif #if defined(NIGHTLY_BUILD) && defined(XP_MACOSX) && defined(MOZ_SANDBOX) -// Start the Mac sandbox immediately during child process startup instead +// Start the Mac sandbox early during child process startup instead // of when messaged by the parent after the message loop is running. -pref("security.sandbox.content.mac.earlyinit", false); +pref("security.sandbox.content.mac.earlyinit", true); #endif #if defined(XP_MACOSX) && defined(MOZ_SANDBOX) && defined(MOZ_CONTENT_SANDBOX) diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js index 67b897ba720f9..e5139d75df0ea 100755 --- a/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js @@ -1102,13 +1102,9 @@ var LibraryUI = { let animatableBox = document.getElementById("library-animatable-box"); let navBar = document.getElementById("nav-bar"); let libraryIcon = document.getAnonymousElementByAttribute(libraryButton, "class", "toolbarbutton-icon"); - let dwu = window.windowUtils; - let iconBounds = dwu.getBoundsWithoutFlushing(libraryIcon); - let libraryBounds = dwu.getBoundsWithoutFlushing(libraryButton); - let toolboxBounds = dwu.getBoundsWithoutFlushing(gNavToolbox); + let iconBounds = window.windowUtils.getBoundsWithoutFlushing(libraryIcon); + let libraryBounds = window.windowUtils.getBoundsWithoutFlushing(libraryButton); - animatableBox.style.setProperty("--toolbox-y", toolboxBounds.y + "px"); - animatableBox.style.setProperty("--library-button-y", libraryBounds.y + "px"); animatableBox.style.setProperty("--library-button-height", libraryBounds.height + "px"); animatableBox.style.setProperty("--library-icon-x", iconBounds.x + "px"); if (navBar.hasAttribute("brighttext")) { diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul index b5fcafa2cf1ba..c3502fc6d8b4d 100644 --- a/browser/base/content/browser.xul +++ b/browser/base/content/browser.xul @@ -145,6 +145,9 @@ xmlns="http://www.w3.org/1999/xhtml" + @@ -444,37 +447,31 @@ xmlns="http://www.w3.org/1999/xhtml" contexttype="toolbaritem" class="customize-context-removeFromToolbar"/> + + + + - - - diff --git a/browser/base/content/tabbrowser.js b/browser/base/content/tabbrowser.js index 0e8333b55648e..e7dadfe16dd33 100644 --- a/browser/base/content/tabbrowser.js +++ b/browser/base/content/tabbrowser.js @@ -5443,9 +5443,9 @@ var TabContextMenu = { let contextMoveTabToStart = document.getElementById("context_moveToStart"); contextMoveTabToStart.disabled = selectedTabs[0]._tPos == 0 && allSelectedTabsAdjacent; - // Hide the "Duplicate Tab" if there is a selection present - let contextDuplicateTab = document.getElementById("context_duplicateTab"); - contextDuplicateTab.hidden = multiselectionContext; + // Only one of "Duplicate Tab"/"Duplicate Tabs" should be visible. + document.getElementById("context_duplicateTab").hidden = multiselectionContext; + document.getElementById("context_duplicateTabs").hidden = !multiselectionContext; // Disable "Close Tabs to the Right" if there are no tabs // following it. @@ -5537,6 +5537,14 @@ var TabContextMenu = { excludeUserContextId: this.contextTab.getAttribute("usercontextid"), }); }, + duplicateSelectedTabs() { + let tabsToDuplicate = gBrowser.selectedTabs; + let newIndex = tabsToDuplicate[tabsToDuplicate.length - 1]._tPos + 1; + for (let tab of tabsToDuplicate) { + let newTab = SessionStore.duplicateTab(window, tab); + gBrowser.moveTabTo(newTab, newIndex++); + } + }, reopenInContainer(event) { let userContextId = parseInt(event.target.getAttribute("data-usercontextid")); /* Create a triggering principal that is able to load the new tab diff --git a/browser/base/content/test/tabs/browser_multiselect_tabs_duplicate.js b/browser/base/content/test/tabs/browser_multiselect_tabs_duplicate.js index 9443402c366b7..f63518c43fbf3 100644 --- a/browser/base/content/test/tabs/browser_multiselect_tabs_duplicate.js +++ b/browser/base/content/test/tabs/browser_multiselect_tabs_duplicate.js @@ -7,11 +7,13 @@ add_task(async function setPref() { }); add_task(async function test() { - let tab1 = await addTab(); - let tab2 = await addTab(); - let tab3 = await addTab(); + let originalTab = gBrowser.selectedTab; + let tab1 = await addTab("http://example.com/1"); + let tab2 = await addTab("http://example.com/2"); + let tab3 = await addTab("http://example.com/3"); let menuItemDuplicateTab = document.getElementById("context_duplicateTab"); + let menuItemDuplicateTabs = document.getElementById("context_duplicateTabs"); is(gBrowser.multiSelectedTabsCount, 0, "Zero multiselected tabs"); @@ -25,24 +27,68 @@ add_task(async function test() { // Check the context menu with a multiselected tabs updateTabContextMenu(tab2); is(menuItemDuplicateTab.hidden, true, "Duplicate Tab is hidden"); + is(menuItemDuplicateTabs.hidden, false, "Duplicate Tabs is visible"); // Check the context menu with a non-multiselected tab updateTabContextMenu(tab3); is(menuItemDuplicateTab.hidden, false, "Duplicate Tab is visible"); + is(menuItemDuplicateTabs.hidden, true, "Duplicate Tabs is hidden"); - let newTabOpened = BrowserTestUtils.waitForNewTab(gBrowser, "http://mochi.test:8888/"); + let newTabOpened = BrowserTestUtils.waitForNewTab(gBrowser, "http://example.com/3", true); window.TabContextMenu.contextTab = tab3; // Set proper context for command handler menuItemDuplicateTab.click(); let tab4 = await newTabOpened; + is(getUrl(tab4), getUrl(tab3), "tab4 should have same URL as tab3, where it was duplicated from"); + // Selection should be cleared after duplication ok(!tab1.multiselected, "Tab1 is not multiselected"); ok(!tab2.multiselected, "Tab2 is not multiselected"); - ok(!tab4.multiselected, "Tab3 is not multiselected"); - ok(!tab3.multiselected, "Tab4 is not multiselected"); + ok(!tab3.multiselected, "Tab3 is not multiselected"); + ok(!tab4.multiselected, "Tab4 is not multiselected"); + + is(gBrowser.selectedTab._tPos, tab4._tPos, "Tab4 should be selected"); + + await BrowserTestUtils.switchTab(gBrowser, tab1); + await triggerClickOn(tab3, { ctrlKey: true }); + + ok(tab1.multiselected, "Tab1 is multiselected"); + ok(!tab2.multiselected, "Tab2 is not multiselected"); + ok(tab3.multiselected, "Tab3 is multiselected"); + ok(!tab4.multiselected, "Tab4 is not multiselected"); + + // Check the context menu with a non-multiselected tab + updateTabContextMenu(tab3); + is(menuItemDuplicateTab.hidden, true, "Duplicate Tab is hidden"); + is(menuItemDuplicateTabs.hidden, false, "Duplicate Tabs is visible"); + + // 7 tabs because there was already one open when the test starts. + // Can't use BrowserTestUtils.waitForNewTab because waitForNewTab only works + // with one tab at a time. + let newTabsOpened = TestUtils.waitForCondition(() => gBrowser.visibleTabs.length == 7, + "Wait for two tabs to get created"); + window.TabContextMenu.contextTab = tab3; // Set proper context for command handler + menuItemDuplicateTabs.click(); + await newTabsOpened; + info("Two tabs opened"); + + await TestUtils.waitForCondition(() => { + return getUrl(gBrowser.visibleTabs[4]) == "http://example.com/1" && + getUrl(gBrowser.visibleTabs[5]) == "http://example.com/3"; + }); + + is(originalTab, gBrowser.visibleTabs[0], "Original tab should still be first"); + is(tab1, gBrowser.visibleTabs[1], "tab1 should still be second"); + is(tab2, gBrowser.visibleTabs[2], "tab2 should still be third"); + is(tab3, gBrowser.visibleTabs[3], "tab3 should still be fourth"); + is(getUrl(gBrowser.visibleTabs[4]), getUrl(tab1), + "the first duplicated tab should be placed next to tab3 and have URL of tab1"); + is(getUrl(gBrowser.visibleTabs[5]), getUrl(tab3), + "the second duplicated tab should have URL of tab3 and maintain same order"); + is(tab4, gBrowser.visibleTabs[6], "tab4 should now be the still be the seventh tab"); - BrowserTestUtils.removeTab(tab1); - BrowserTestUtils.removeTab(tab2); - BrowserTestUtils.removeTab(tab3); - BrowserTestUtils.removeTab(tab4); + let tabsToClose = gBrowser.visibleTabs.filter(t => t != originalTab); + for (let tab of tabsToClose) { + BrowserTestUtils.removeTab(tab); + } }); diff --git a/browser/components/newtab/content-src/asrouter/README.md b/browser/components/newtab/content-src/asrouter/README.md index 0cfc07d540a30..4e86d6c4eef15 100644 --- a/browser/components/newtab/content-src/asrouter/README.md +++ b/browser/components/newtab/content-src/asrouter/README.md @@ -5,24 +5,29 @@ Name | Used for | Type | Example value --- | --- | --- | --- `whitelistHosts` | Whitelist a host in order to fetch messages from its endpoint | `[String]` | `["gist.github.com", "gist.githubusercontent.com", "localhost:8000"]` -`messageProviders` | Message provider options | `Object` | [see below](#message-providers) +`providers.snippets` | Message provider options for snippets | `Object` | [see below](#message-providers) +`providers.cfr` | Message provider options for cfr | `Object` | [see below](#message-providers) +`providers.onboarding` | Message provider options for onboarding | `Object` | [see below](#message-providers) -### Message providers +### Message providers examples ```json -[ - { - "id" : "onboarding", - "type" : "local", - "localProvider" : "OnboardingMessageProvider" - }, - { - "type" : "remote", - "url" : "https://snippets.cdn.mozilla.net/us-west/bundles/bundle_d6d90fb9098ce8b45e60acf601bcb91b68322309.json", - "updateCycleInMs" : 14400000, - "id" : "snippets" - } -] +{ + "id" : "snippets", + "type" : "remote", + "enabled": true, + "url" : "https://snippets.cdn.mozilla.net/us-west/bundles/bundle_d6d90fb9098ce8b45e60acf601bcb91b68322309.json", + "updateCycleInMs" : 14400000 +} +``` + +```json +{ + "id" : "onboarding", + "enabled": true, + "type" : "local", + "localProvider" : "OnboardingMessageProvider" +} ``` ## Admin Interface diff --git a/browser/components/newtab/content-src/asrouter/docs/targeting-attributes.md b/browser/components/newtab/content-src/asrouter/docs/targeting-attributes.md index 4c36682700bb0..e957072a57e00 100644 --- a/browser/components/newtab/content-src/asrouter/docs/targeting-attributes.md +++ b/browser/components/newtab/content-src/asrouter/docs/targeting-attributes.md @@ -9,6 +9,7 @@ Please note that some targeting attributes require stricter controls on the tele ## Available attributes * [addonsInfo](#addonsinfo) +* [attributionData](#attributiondata) * [browserSettings](#browsersettings) * [currentDate](#currentdate) * [devToolsOpenedCount](#devtoolsopenedcount) @@ -76,20 +77,40 @@ interface AddonsInfoResponse { }; } ``` +### `attributionData` + +An object containing information on exactly how Firefox was downloaded + +#### Examples +* Was the browser installed via the `"back_to_school"` campaign? +```java +attributionData && attributionData.campaign == "back_to_school" +``` + +#### Definition +```ts +declare const attributionData: AttributionCode; +interface AttributionCode { + // Descriptor for where the download started from + campaign: string, + // A source, like addons.mozilla.org, or google.com + source: string, + // The medium for the download, like if this was referral + medium: string, + // Additional content, like an addonID for instance + content: string +} +``` ### `browserSettings` Includes two properties: -* `attribution`, which indicates how Firefox was downloaded, +* `attribution`, which indicates how Firefox was downloaded - DEPRECATED - please use [attributionData](#attributiondata) * `update`, which has information about how Firefox updates Note that attribution can be `undefined`, so you should check that it exists first. #### Examples -* Was the browser installed via the `"back_to_school"` campaign? -```java -browserSettings.attribution && browserSettings.attribution.campaign == "back_to_school" -``` * Is updating enabled? ```java browserSettings.update.enabled diff --git a/browser/components/newtab/content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.jsx b/browser/components/newtab/content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.jsx index 788164cee3300..02a83fdcfbca3 100644 --- a/browser/components/newtab/content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.jsx +++ b/browser/components/newtab/content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.jsx @@ -4,11 +4,13 @@ import {SubmitFormSnippet} from "../SubmitFormSnippet/SubmitFormSnippet.jsx"; export const NewsletterSnippet = props => { const extendedContent = { form_action: "https://basket.mozilla.org/subscribe.json", + scene2_email_placeholder_text: "Your Email Here", + scene2_button_label: "Sign Me Up", ...props.content, hidden_inputs: { newsletters: props.content.scene2_newsletter || "mozilla-foundation", fmt: "H", - lang: "en-US", + lang: props.content.locale || "en-US", source_url: `https://snippets.mozilla.com/show/${props.id}`, ...props.content.hidden_inputs, }, diff --git a/browser/components/newtab/content-src/asrouter/templates/OnboardingMessage/_OnboardingMessage.scss b/browser/components/newtab/content-src/asrouter/templates/OnboardingMessage/_OnboardingMessage.scss index bbe2d729b2767..b37f07a74f0c8 100644 --- a/browser/components/newtab/content-src/asrouter/templates/OnboardingMessage/_OnboardingMessage.scss +++ b/browser/components/newtab/content-src/asrouter/templates/OnboardingMessage/_OnboardingMessage.scss @@ -86,6 +86,10 @@ &.gift { background-image: url('resource://activity-stream/data/content/assets/illustration-gift@2x.png'); } + + &.sync { + background-image: url('resource://activity-stream/data/content/assets/illustration-sync@2x.png'); + } } .onboardingContent { diff --git a/browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/SubmitFormSnippet.jsx b/browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/SubmitFormSnippet.jsx index d22d5e8d8b4af..61575d56c0833 100644 --- a/browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/SubmitFormSnippet.jsx +++ b/browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/SubmitFormSnippet.jsx @@ -150,7 +150,7 @@ export class SubmitFormSnippet extends React.PureComponent { return ( {content.scene2_icon ? : null} - {content.scene2_text} + {content.scene2_title ? {content.scene2_title} : null} {content.scene2_text} {this.renderHiddenFormInputs()} diff --git a/browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/_SubmitFormSnippet.scss b/browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/_SubmitFormSnippet.scss index ead5d54e08542..68bad698ff62e 100644 --- a/browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/_SubmitFormSnippet.scss +++ b/browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/_SubmitFormSnippet.scss @@ -26,6 +26,13 @@ } } + .scene2Title { + font-size: inherit; + margin: 0; + font-weight: bold; + display: inline; + } + form { display: flex; flex-direction: column; diff --git a/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx b/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx index a5f0fd3a43398..68d05b3d33e40 100644 --- a/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx +++ b/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx @@ -1,4 +1,5 @@ import {ASRouterUtils} from "../../asrouter/asrouter-content"; +import {ModalOverlay} from "../../asrouter/components/ModalOverlay/ModalOverlay"; import React from "react"; export class ASRouterAdmin extends React.PureComponent { @@ -11,7 +12,17 @@ export class ASRouterAdmin extends React.PureComponent { this.findOtherBundledMessagesOfSameTemplate = this.findOtherBundledMessagesOfSameTemplate.bind(this); this.handleExpressionEval = this.handleExpressionEval.bind(this); this.onChangeTargetingParameters = this.onChangeTargetingParameters.bind(this); - this.state = {messageFilter: "all", evaluationStatus: {}, stringTargetingParameters: null}; + this.onCopyTargetingParams = this.onCopyTargetingParams.bind(this); + this.onPasteTargetingParams = this.onPasteTargetingParams.bind(this); + this.onNewTargetingParams = this.onNewTargetingParams.bind(this); + this.state = { + messageFilter: "all", + evaluationStatus: {}, + stringTargetingParameters: null, + newStringTargetingParameters: null, + copiedToClipboard: false, + pasteFromClipboard: false, + }; } onMessage({data: action}) { @@ -89,7 +100,6 @@ export class ASRouterAdmin extends React.PureComponent { onChangeTargetingParameters(event) { const {name} = event.target; const {value} = event.target; - this.refs.evaluationStatus.innerText = ""; this.setState(({stringTargetingParameters}) => { let targetingParametersError = null; @@ -102,13 +112,93 @@ export class ASRouterAdmin extends React.PureComponent { targetingParametersError = {id: name}; } - return {stringTargetingParameters: updatedParameters, targetingParametersError}; + return { + copiedToClipboard: false, + evaluationStatus: {}, + stringTargetingParameters: updatedParameters, + targetingParametersError, + }; }); } + handleEnabledToggle(event) { + const provider = this.state.providerPrefs.find(p => p.id === event.target.dataset.provider); + const userPrefInfo = this.state.userPrefs; + + const isUserEnabled = provider.id in userPrefInfo ? userPrefInfo[provider.id] : true; + const isSystemEnabled = provider.enabled; + const isEnabling = event.target.checked; + + if (isEnabling) { + if (!isUserEnabled) { + ASRouterUtils.sendMessage({type: "SET_PROVIDER_USER_PREF", data: {id: provider.id, value: true}}); + } + if (!isSystemEnabled) { + ASRouterUtils.sendMessage({type: "ENABLE_PROVIDER", data: provider.id}); + } + } else { + ASRouterUtils.sendMessage({type: "DISABLE_PROVIDER", data: provider.id}); + } + + this.setState({messageFilter: "all"}); + } + + handleUserPrefToggle(event) { + const action = {type: "SET_PROVIDER_USER_PREF", data: {id: event.target.dataset.provider, value: event.target.checked}}; + ASRouterUtils.sendMessage(action); + this.setState({messageFilter: "all"}); + } + + onChangeMessageFilter(event) { + this.setState({messageFilter: event.target.value}); + } + + // Simulate a copy event that sets to clipboard all targeting paramters and values + onCopyTargetingParams(event) { + const stringTargetingParameters = {...this.state.stringTargetingParameters}; + for (const key of Object.keys(stringTargetingParameters)) { + // If the value is not set the parameter will be lost when we stringify + if (stringTargetingParameters[key] === undefined) { + stringTargetingParameters[key] = null; + } + } + const setClipboardData = e => { + e.preventDefault(); + e.clipboardData.setData("text", JSON.stringify(stringTargetingParameters, null, 2)); + document.removeEventListener("copy", setClipboardData); + this.setState({copiedToClipboard: true}); + }; + + document.addEventListener("copy", setClipboardData); + + document.execCommand("copy"); + } + + // Copy all clipboard data to targeting parameters + onPasteTargetingParams(event) { + this.setState(({pasteFromClipboard}) => ({ + pasteFromClipboard: !pasteFromClipboard, + newStringTargetingParameters: "", + })); + } + + onNewTargetingParams(event) { + this.setState({newStringTargetingParameters: event.target.value}); + event.target.classList.remove("errorState"); + this.refs.targetingParamsEval.innerText = ""; + + try { + const stringTargetingParameters = JSON.parse(event.target.value); + this.setState({stringTargetingParameters}); + } catch (e) { + event.target.classList.add("errorState"); + this.refs.targetingParamsEval.innerText = e.message; + } + } + renderMessageItem(msg) { const isCurrent = msg.id === this.state.lastMessageId; - const isBlocked = this.state.messageBlockList.includes(msg.id); + const isBlocked = this.state.messageBlockList.includes(msg.id) || this.state.messageBlockList.includes(msg.campaign); const impressions = this.state.messageImpressions[msg.id] ? this.state.messageImpressions[msg.id].length : 0; let itemClassName = "message-item"; @@ -138,10 +228,6 @@ export class ASRouterAdmin extends React.PureComponent { ); } - onChangeMessageFilter(event) { - this.setState({messageFilter: event.target.value}); - } - renderMessageFilter() { if (!this.state.providers) { return null; @@ -158,39 +244,12 @@ export class ASRouterAdmin extends React.PureComponent { Provider ID Source - Last Updated + Cohort + Last Updated ); } - handleEnabledToggle(event) { - const provider = this.state.providerPrefs.find(p => p.id === event.target.dataset.provider); - const userPrefInfo = this.state.userPrefs; - - const isUserEnabled = provider.id in userPrefInfo ? userPrefInfo[provider.id] : true; - const isSystemEnabled = provider.enabled; - const isEnabling = event.target.checked; - - if (isEnabling) { - if (!isUserEnabled) { - ASRouterUtils.sendMessage({type: "SET_PROVIDER_USER_PREF", data: {id: provider.id, value: true}}); - } - if (!isSystemEnabled) { - ASRouterUtils.sendMessage({type: "ENABLE_PROVIDER", data: provider.id}); - } - } else { - ASRouterUtils.sendMessage({type: "DISABLE_PROVIDER", data: provider.id}); - } - - this.setState({messageFilter: "all"}); - } - - handleUserPrefToggle(event) { - const action = {type: "SET_PROVIDER_USER_PREF", data: {id: event.target.dataset.provider, value: event.target.checked}}; - ASRouterUtils.sendMessage(action); - this.setState({messageFilter: "all"}); - } - renderProviders() { const providersConfig = this.state.providerPrefs; const providerInfo = this.state.providers; @@ -205,11 +264,7 @@ export class ASRouterAdmin extends React.PureComponent { let label = "local"; if (provider.type === "remote") { - let displayUrl = ""; - try { - displayUrl = `(${new URL(info.url).hostname})`; - } catch (err) {} - label = (endpoint {displayUrl}); + label = (endpoint ({info.url})); } else if (provider.type === "remote-settings") { label = `remote settings (${provider.bucket})`; } @@ -230,12 +285,30 @@ export class ASRouterAdmin extends React.PureComponent { {isTestProvider ? : } {provider.id} {label} + {provider.cohort} {info.lastUpdated ? new Date(info.lastUpdated).toLocaleString() : ""} ); })} ); } + renderPasteModal() { + if (!this.state.pasteFromClipboard) { + return null; + } + const errors = this.refs.targetingParamsEval && this.refs.targetingParamsEval.innerText.length; + return ( + + + + + + + + + ); + } + renderTargetingParameters() { // There was no error and the result is truthy const success = this.state.evaluationStatus.success && !!this.state.evaluationStatus.result; @@ -253,6 +326,16 @@ export class ASRouterAdmin extends React.PureComponent { Modify targeting parameters + + + + {this.state.copiedToClipboard ? "Parameters copied!" : "Copy parameters"} + + + Paste parameters + + + {this.state.stringTargetingParameters && Object.keys(this.state.stringTargetingParameters).map((param, i) => { const value = this.state.stringTargetingParameters[param]; const errorState = this.state.targetingParametersError && this.state.targetingParametersError.id === param; @@ -280,6 +363,7 @@ export class ASRouterAdmin extends React.PureComponent { Messages {this.renderMessageFilter()} {this.renderMessages()} + {this.renderPasteModal()} {this.renderTargetingParameters()} ); } diff --git a/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.scss b/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.scss index 5cef85b08cbca..93a5826d4734b 100644 --- a/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.scss +++ b/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.scss @@ -91,6 +91,10 @@ } } + .providerUrl { + font-size: 12px; + } + pre { background: var(--newtab-textbox-background-color); margin: 0; diff --git a/browser/components/newtab/content-src/components/MoreRecommendations/_MoreRecommendations.scss b/browser/components/newtab/content-src/components/MoreRecommendations/_MoreRecommendations.scss index bb0f63aeb102b..bfc441afeebc7 100644 --- a/browser/components/newtab/content-src/components/MoreRecommendations/_MoreRecommendations.scss +++ b/browser/components/newtab/content-src/components/MoreRecommendations/_MoreRecommendations.scss @@ -2,6 +2,7 @@ display: flex; align-items: center; white-space: nowrap; + line-height: 1.230769231; // (16 / 13) -> 16px computed &::after { background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center; diff --git a/browser/components/newtab/content-src/components/PocketLoggedInCta/_PocketLoggedInCta.scss b/browser/components/newtab/content-src/components/PocketLoggedInCta/_PocketLoggedInCta.scss index 10a4c721d2386..61242b9032832 100644 --- a/browser/components/newtab/content-src/components/PocketLoggedInCta/_PocketLoggedInCta.scss +++ b/browser/components/newtab/content-src/components/PocketLoggedInCta/_PocketLoggedInCta.scss @@ -27,6 +27,7 @@ .cta-text { font-weight: normal; font-size: 13px; + line-height: 1.230769231; // (16 / 13) –> 16px computed } .pocket-cta-button, diff --git a/browser/components/newtab/content-src/components/Sections/_Sections.scss b/browser/components/newtab/content-src/components/Sections/_Sections.scss index be8144773c605..136e042241820 100644 --- a/browser/components/newtab/content-src/components/Sections/_Sections.scss +++ b/browser/components/newtab/content-src/components/Sections/_Sections.scss @@ -84,11 +84,6 @@ font-size: 13px; } } - - @media (min-width: $break-point-large) { - line-height: 16px; - height: 16px; - } } @media (min-width: $break-point-widest) { diff --git a/browser/components/newtab/content-src/components/TopSites/TopSite.jsx b/browser/components/newtab/content-src/components/TopSites/TopSite.jsx index c850078bff023..3b4823b292d97 100644 --- a/browser/components/newtab/content-src/components/TopSites/TopSite.jsx +++ b/browser/components/newtab/content-src/components/TopSites/TopSite.jsx @@ -183,7 +183,7 @@ export class TopSiteLink extends React.PureComponent { } return ( - + {link.searchTopSite && } diff --git a/browser/components/newtab/content-src/lib/snippets.js b/browser/components/newtab/content-src/lib/snippets.js index 190c61e8db56e..e1b24f00ca816 100644 --- a/browser/components/newtab/content-src/lib/snippets.js +++ b/browser/components/newtab/content-src/lib/snippets.js @@ -247,10 +247,6 @@ export class SnippetsProvider { } } - _noSnippetFallback() { - // TODO - } - _showRemoteSnippets() { const snippetsEl = document.getElementById(this.elementId); const payload = this.snippetsMap.get("snippets"); @@ -272,6 +268,8 @@ export class SnippetsProvider { // eslint-disable-next-line no-unsanitized/property snippetsEl.innerHTML = payload; + this._logIfDevtools("Successfully added snippets."); + // Scripts injected by innerHTML are inactive, so we have to relocate them // through DOM manipulation to activate their contents. for (const scriptEl of snippetsEl.getElementsByTagName("script")) { @@ -290,6 +288,13 @@ export class SnippetsProvider { } } + // istanbul ignore next + _logIfDevtools(text) { + if (this.devtoolsEnabled) { + console.log("Legacy snippets:", text); // eslint-disable-line no-console + } + } + /** * init - Fetch the snippet payload and show snippets * @@ -304,8 +309,11 @@ export class SnippetsProvider { appData: {}, elementId: "snippets", connect: true, + devtoolsEnabled: false, }, options); + this._logIfDevtools("Initializing..."); + // Add listener so we know when snippets are blocked on other pages if (global.RPMAddMessageListener) { global.RPMAddMessageListener("ActivityStream:MainToContent", this._onAction); @@ -337,12 +345,14 @@ export class SnippetsProvider { try { this._showRemoteSnippets(); } catch (e) { - this._noSnippetFallback(e); + this._logIfDevtools("Problem inserting remote snippets!"); + console.error(e); // eslint-disable-line no-console } window.dispatchEvent(new Event(SNIPPETS_ENABLED_EVENT)); this.initialized = true; + this._logIfDevtools("Finished initializing."); } uninit() { @@ -397,11 +407,7 @@ export function addSnippetsSubscriber(store) { location.hash !== "#asrouter" ) { initializing = true; - await snippets.init({appData: state.Snippets}); - // istanbul ignore if - if (state.Prefs.values["asrouter.devtoolsEnabled"]) { - console.log("Legacy snippets initialized"); // eslint-disable-line no-console - } + await snippets.init({appData: state.Snippets, devtoolsEnabled: state.Prefs.values["asrouter.devtoolsEnabled"]}); initializing = false; /** If we should remove snippets... */ diff --git a/browser/components/newtab/css/activity-stream-linux.css b/browser/components/newtab/css/activity-stream-linux.css index a11b739a2455f..4bb31228f9d86 100644 --- a/browser/components/newtab/css/activity-stream-linux.css +++ b/browser/components/newtab/css/activity-stream-linux.css @@ -913,10 +913,6 @@ main { .top-stories-bottom-container a.more-recommendations { font-weight: normal; font-size: 13px; } - @media (min-width: 866px) { - .top-stories-bottom-container { - line-height: 16px; - height: 16px; } } @media (min-width: 1122px) { .sections-list .normal-cards .section-list { @@ -1840,6 +1836,8 @@ a.firstrun-link { .asrouter-admin .message-item .message-id { font-family: "SF Mono", "Monaco", "Inconsolata", "Fira Mono", "Droid Sans Mono", "Source Code Pro", monospace; font-size: 12px; } + .asrouter-admin .providerUrl { + font-size: 12px; } .asrouter-admin pre { background: var(--newtab-textbox-background-color); margin: 0; @@ -1872,7 +1870,8 @@ a.firstrun-link { margin-inline-end: 10px; } .pocket-logged-in-cta .cta-text { font-weight: normal; - font-size: 13px; } + font-size: 13px; + line-height: 1.230769231; } .pocket-logged-in-cta .pocket-cta-button, .pocket-logged-in-cta .cta-text { vertical-align: top; } @@ -1880,7 +1879,8 @@ a.firstrun-link { .more-recommendations { display: flex; align-items: center; - white-space: nowrap; } + white-space: nowrap; + line-height: 1.230769231; } .more-recommendations::after { background: url("../data/content/assets/topic-show-more-12.svg") no-repeat center center; content: ''; @@ -2148,6 +2148,11 @@ a.firstrun-link { .SubmitFormSnippet .scene2Icon img { width: 98px; display: inline-block; } + .SubmitFormSnippet .scene2Title { + font-size: inherit; + margin: 0; + font-weight: bold; + display: inline; } .SubmitFormSnippet form { display: flex; flex-direction: column; @@ -2262,6 +2267,8 @@ a.firstrun-link { background-image: url("resource://activity-stream/data/content/assets/illustration-screenshots@2x.png"); } .onboardingMessage .onboardingMessageImage.gift { background-image: url("resource://activity-stream/data/content/assets/illustration-gift@2x.png"); } + .onboardingMessage .onboardingMessageImage.sync { + background-image: url("resource://activity-stream/data/content/assets/illustration-sync@2x.png"); } .onboardingMessage .onboardingContent { height: 175px; } .onboardingMessage .onboardingContent > span > h3 { diff --git a/browser/components/newtab/css/activity-stream-linux.css.map b/browser/components/newtab/css/activity-stream-linux.css.map index 75ce23b6cb523..d499d166b3628 100644 --- a/browser/components/newtab/css/activity-stream-linux.css.map +++ b/browser/components/newtab/css/activity-stream-linux.css.map @@ -41,7 +41,7 @@ ".outer-wrapper {\n color: var(--newtab-text-primary-color);\n display: flex;\n flex-grow: 1;\n min-height: 100vh;\n padding: ($section-spacing + $section-vertical-padding) $base-gutter $base-gutter;\n\n &.fixed-to-top {\n display: block;\n }\n\n &.only-search {\n display: block;\n padding-top: 134px;\n }\n\n a {\n color: var(--newtab-link-primary-color);\n }\n}\n\nmain {\n margin: auto;\n // Offset the snippets container so things at the bottom of the page are still\n // visible when snippets are visible. Adjust for other spacing.\n padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n\n @media (min-width: $break-point-widest) {\n width: $wrapper-max-width-widest;\n }\n\n section {\n margin-bottom: $section-spacing;\n position: relative;\n }\n\n .hide-main & {\n visibility: hidden;\n }\n\n}\n\n.base-content-fallback {\n // Make the error message be centered against the viewport\n height: 100vh;\n}\n\n.body-wrapper {\n // Hide certain elements so the page structure is fixed, e.g., placeholders,\n // while avoiding flashes of changing content, e.g., icons and text\n $selectors-to-hide: '\n .section-title,\n .sections-list .section:last-of-type,\n .topics\n ';\n\n #{$selectors-to-hide} {\n opacity: 0;\n }\n\n &.on {\n #{$selectors-to-hide} {\n opacity: 1;\n }\n }\n}\n\n.non-collapsible-section {\n padding: 0 $section-horizontal-padding;\n}\n\n.prefs-button {\n button {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n fill: var(--newtab-icon-primary-color);\n inset-inline-end: 15px;\n padding: 15px;\n position: fixed;\n top: 15px;\n z-index: 1000;\n\n &:hover,\n &:focus {\n background-color: var(--newtab-element-hover-color);\n }\n\n &:active {\n background-color: var(--newtab-element-active-color);\n }\n }\n}\n", ".as-error-fallback {\n align-items: center;\n border-radius: $border-radius;\n box-shadow: inset $inner-box-shadow;\n color: var(--newtab-text-conditional-color);\n display: flex;\n flex-direction: column;\n font-size: $error-fallback-font-size;\n justify-content: center;\n justify-items: center;\n line-height: $error-fallback-line-height;\n\n a {\n color: var(--newtab-text-conditional-color);\n text-decoration: underline;\n }\n}\n", "$top-sites-size: $grid-unit;\n$top-sites-border-radius: 6px;\n$top-sites-title-height: 30px;\n$top-sites-vertical-space: 8px;\n$screenshot-size: cover;\n$rich-icon-size: 96px;\n$default-icon-wrapper-size: 42px;\n$default-icon-size: 32px;\n$default-icon-offset: 6px;\n$half-base-gutter: $base-gutter / 2;\n$hover-transition-duration: 150ms;\n\n.top-sites {\n // Take back the margin from the bottom row of vertical spacing as well as the\n // extra whitespace below the title text as it's vertically centered.\n margin-bottom: $section-spacing - ($top-sites-vertical-space + $top-sites-title-height / 3);\n}\n\n.top-sites-list {\n list-style: none;\n margin: 0 (-$half-base-gutter);\n padding: 0;\n\n // Two columns\n @media (max-width: $break-point-medium) {\n :nth-child(2n+1) {\n @include context-menu-open-middle;\n }\n\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n // Four columns\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n :nth-child(4n+3) {\n @include context-menu-open-left;\n }\n }\n\n // Six columns\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(6n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n :nth-child(6n+5) {\n @include context-menu-open-left;\n }\n }\n\n // Eight columns\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(8n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n :nth-child(8n+7) {\n @include context-menu-open-left;\n }\n }\n\n @media (max-width: $break-point-medium) {\n .hide-for-narrow {\n display: none;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n\n li {\n margin: 0 0 $top-sites-vertical-space;\n }\n\n &:not(.dnd-active) {\n .top-site-outer:-moz-any(.active, :focus, :hover) {\n .tile {\n @include fade-in;\n }\n\n @include context-menu-button-hover;\n }\n }\n}\n\n// container for drop zone\n.top-site-outer {\n padding: 0 $half-base-gutter;\n display: inline-block;\n\n // container for context menu\n .top-site-inner {\n position: relative;\n\n > a {\n color: inherit;\n display: block;\n outline: none;\n\n &:-moz-any(.active, :focus) {\n .tile {\n @include fade-in;\n }\n }\n }\n }\n\n @include context-menu-button;\n\n .tile { // sass-lint:disable-block property-sort-order\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow, var(--newtab-card-shadow);\n cursor: pointer;\n height: $top-sites-size;\n position: relative;\n width: $top-sites-size;\n\n // For letter fallback\n align-items: center;\n color: var(--newtab-text-secondary-color);\n display: flex;\n font-size: 32px;\n font-weight: 200;\n justify-content: center;\n text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n transition: box-shadow $hover-transition-duration;\n\n &::before {\n content: attr(data-fallback);\n }\n }\n\n .screenshot {\n background-color: $white;\n background-position: top left;\n background-size: $screenshot-size;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition: opacity 1s;\n width: 100%;\n\n &.active {\n opacity: 1;\n }\n }\n\n // Some common styles for all icons (rich and default) in top sites\n .top-site-icon {\n background-color: var(--newtab-topsites-background-color);\n background-position: center center;\n background-repeat: no-repeat;\n border-radius: $top-sites-border-radius;\n box-shadow: var(--newtab-topsites-icon-shadow);\n position: absolute;\n }\n\n .rich-icon {\n background-size: cover;\n height: 100%;\n inset-inline-start: 0;\n top: 0;\n width: 100%;\n }\n\n .default-icon,\n .search-topsite {\n background-size: $default-icon-size;\n bottom: -$default-icon-offset;\n height: $default-icon-wrapper-size;\n inset-inline-end: -$default-icon-offset;\n width: $default-icon-wrapper-size;\n\n // for corner letter fallback\n align-items: center;\n display: flex;\n font-size: 20px;\n justify-content: center;\n\n &[data-fallback]::before {\n content: attr(data-fallback);\n }\n }\n\n .search-topsite {\n background-image: url('#{$image-path}glyph-search-16.svg');\n background-size: 26px;\n background-color: $blue-60;\n border-radius: $default-icon-wrapper-size;\n -moz-context-properties: fill;\n fill: $white;\n box-shadow: var(--newtab-card-shadow);\n transition-duration: $hover-transition-duration;\n transition-property: background-size, bottom, inset-inline-end, height, width;\n }\n\n &:hover .search-topsite {\n $hover-icon-wrapper-size: $default-icon-wrapper-size + 4;\n $hover-icon-offset: -$default-icon-offset - 3;\n\n background-size: 28px;\n border-radius: $hover-icon-wrapper-size;\n bottom: $hover-icon-offset;\n height: $hover-icon-wrapper-size;\n inset-inline-end: $hover-icon-offset;\n width: $hover-icon-wrapper-size;\n }\n\n // We want all search shortcuts to have a white background in case they have transparency.\n &.search-shortcut {\n .rich-icon {\n background-color: $white;\n }\n }\n\n .title {\n color: var(--newtab-topsites-label-color);\n font: message-box;\n height: $top-sites-title-height;\n line-height: $top-sites-title-height;\n text-align: center;\n width: $top-sites-size;\n position: relative;\n\n .icon {\n fill: var(--newtab-icon-tertiary-color);\n inset-inline-start: 0;\n position: absolute;\n top: 10px;\n }\n\n span {\n height: $top-sites-title-height;\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.pinned {\n span {\n padding: 0 13px;\n }\n }\n }\n\n .edit-button {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.placeholder {\n .tile {\n box-shadow: inset $inner-box-shadow;\n }\n\n .screenshot {\n display: none;\n }\n }\n\n &.dragged {\n .tile {\n background: $grey-20;\n box-shadow: none;\n\n *,\n &::before {\n display: none;\n }\n }\n\n .title {\n visibility: hidden;\n }\n }\n}\n\n.edit-topsites-wrapper {\n .modal {\n box-shadow: $shadow-secondary;\n left: 0;\n margin: 0 auto;\n max-height: calc(100% - 40px);\n overflow-y: auto;\n overflow-x: hidden;\n position: fixed;\n right: 0;\n top: 40px;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n }\n}\n\n.topsite-form {\n $form-width: 300px;\n $form-spacing: 32px;\n\n .section-title {\n font-size: 16px;\n margin: 0 0 16px;\n }\n\n .form-input-container {\n max-width: $form-width + 3 * $form-spacing + $rich-icon-size;\n margin: 0 auto;\n padding: $form-spacing;\n\n .top-site-outer {\n pointer-events: none;\n }\n }\n\n .search-shortcuts-container {\n max-width: 700px;\n margin: 0 auto;\n padding: $form-spacing;\n\n > div {\n margin-inline-end: -39px;\n }\n\n .top-site-outer {\n margin-inline-start: 0;\n margin-inline-end: 39px;\n }\n }\n\n .top-site-outer {\n padding: 0;\n margin: 24px 0 0;\n margin-inline-start: $form-spacing;\n }\n\n .fields-and-preview {\n display: flex;\n }\n\n label {\n font-size: $section-title-font-size;\n }\n\n .form-wrapper {\n width: 100%;\n\n .field {\n position: relative;\n\n .icon-clear-input {\n position: absolute;\n transform: translateY(-50%);\n top: 50%;\n inset-inline-end: 8px;\n }\n }\n\n .url {\n input:dir(ltr) {\n padding-right: 32px;\n }\n\n input:dir(rtl) {\n padding-left: 32px;\n\n &:not(:placeholder-shown) {\n direction: ltr;\n text-align: right;\n }\n }\n }\n\n .enable-custom-image-input {\n display: inline-block;\n font-size: 13px;\n margin-top: 4px;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n .custom-image-input-container {\n margin-top: 4px;\n\n .loading-container {\n width: 16px;\n height: 16px;\n overflow: hidden;\n position: absolute;\n transform: translateY(-50%);\n top: 50%;\n inset-inline-end: 8px;\n }\n\n // This animation is derived from Firefox's tab loading animation\n // See https://searchfox.org/mozilla-central/rev/b29daa46443b30612415c35be0a3c9c13b9dc5f6/browser/themes/shared/tabs.inc.css#208-216\n .loading-animation {\n @keyframes tab-throbber-animation {\n 100% { transform: translateX(-960px); }\n }\n\n @keyframes tab-throbber-animation-rtl {\n 100% { transform: translateX(960px); }\n }\n\n width: 960px;\n height: 16px;\n -moz-context-properties: fill;\n fill: $blue-50;\n background-image: url('chrome://browser/skin/tabbrowser/loading.svg');\n animation: tab-throbber-animation 1.05s steps(60) infinite;\n\n &:dir(rtl) {\n animation-name: tab-throbber-animation-rtl;\n }\n }\n }\n\n input {\n &[type='text'] {\n background-color: var(--newtab-textbox-background-color);\n border: $input-border;\n margin: 8px 0;\n padding: 0 8px;\n height: 32px;\n width: 100%;\n font-size: 15px;\n\n &:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n\n &[disabled] {\n border: $input-border;\n box-shadow: none;\n opacity: 0.4;\n }\n }\n }\n\n .invalid {\n input {\n &[type='text'] {\n border: $input-error-border;\n box-shadow: $input-error-boxshadow;\n }\n }\n }\n\n .error-tooltip {\n animation: fade-up-tt 450ms;\n background: $red-60;\n border-radius: 2px;\n color: $white;\n inset-inline-start: 3px;\n padding: 5px 12px;\n position: absolute;\n top: 44px;\n z-index: 1;\n\n // tooltip caret\n &::before {\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n inset-inline-start: 12px;\n position: absolute;\n text-indent: -999px;\n top: -7px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n }\n }\n\n .actions {\n justify-content: flex-end;\n\n button {\n margin-inline-start: 10px;\n margin-inline-end: 0;\n }\n }\n\n @media (max-width: $break-point-medium) {\n .fields-and-preview {\n flex-direction: column;\n\n .top-site-outer {\n margin-inline-start: 0;\n }\n }\n }\n\n // prevent text selection of keyword label when clicking to select\n .title {\n -moz-user-select: none;\n }\n\n // CSS styled checkbox\n [type='checkbox']:not(:checked),\n [type='checkbox']:checked {\n inset-inline-start: -9999px;\n position: absolute;\n }\n\n [type='checkbox']:not(:checked) + label,\n [type='checkbox']:checked + label {\n cursor: pointer;\n display: block;\n position: relative;\n }\n\n $checkbox-offset: -8px;\n\n [type='checkbox']:not(:checked) + label::before,\n [type='checkbox']:checked + label::before {\n background: var(--newtab-background-color);\n border: $input-border;\n border-radius: $border-radius;\n content: '';\n height: 21px;\n left: $checkbox-offset;\n position: absolute;\n top: $checkbox-offset;\n width: 21px;\n z-index: 1;\n\n [dir='rtl'] & {\n left: auto;\n right: $checkbox-offset;\n }\n }\n\n // checkmark\n [type='checkbox']:not(:checked) + label::after,\n [type='checkbox']:checked + label::after {\n background: url('chrome://global/skin/icons/check.svg') no-repeat center center; // sass-lint:disable-line no-url-domains\n content: '';\n height: 21px;\n left: $checkbox-offset;\n position: absolute;\n top: $checkbox-offset;\n width: 21px;\n -moz-context-properties: fill;\n fill: var(--newtab-link-primary-color);\n z-index: 2;\n\n [dir='rtl'] & {\n left: auto;\n right: $checkbox-offset;\n }\n }\n\n // when selected, highlight the tile\n [type='checkbox']:checked + label {\n .tile {\n box-shadow: 0 0 0 2px var(--newtab-link-primary-color);\n }\n }\n\n // checkmark changes\n [type='checkbox']:not(:checked) + label::after {\n opacity: 0;\n }\n\n [type='checkbox']:checked + label::after {\n opacity: 1;\n }\n\n // accessibility\n [type='checkbox']:checked:focus + label::before,\n [type='checkbox']:not(:checked):focus + label::before {\n border: 1px dotted var(--newtab-link-primary-color);\n }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n 0% {\n opacity: 0;\n transform: translateY(15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", - ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n // 3n for normal cards, 4n for compact cards\n :nth-child(3n),\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: var(--newtab-icon-secondary-color);\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: var(--newtab-text-primary-color);\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n }\n }\n}\n\n.top-stories-bottom-container {\n color: var(--newtab-section-navigation-text-color);\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n display: flex;\n justify-content: space-between;\n\n a {\n color: var(--newtab-link-secondary-color);\n font-weight: bold;\n\n &.more-recommendations {\n font-weight: normal;\n font-size: 13px;\n }\n }\n\n @media (min-width: $break-point-large) {\n line-height: 16px;\n height: 16px;\n }\n}\n\n@media (min-width: $break-point-widest) {\n .sections-list {\n // Compact cards stay the same size but normal cards get bigger.\n .normal-cards {\n .section-list {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", + ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n // 3n for normal cards, 4n for compact cards\n :nth-child(3n),\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: var(--newtab-icon-secondary-color);\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: var(--newtab-text-primary-color);\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n }\n }\n}\n\n.top-stories-bottom-container {\n color: var(--newtab-section-navigation-text-color);\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n display: flex;\n justify-content: space-between;\n\n a {\n color: var(--newtab-link-secondary-color);\n font-weight: bold;\n\n &.more-recommendations {\n font-weight: normal;\n font-size: 13px;\n }\n }\n}\n\n@media (min-width: $break-point-widest) {\n .sections-list {\n // Compact cards stay the same size but normal cards get bigger.\n .normal-cards {\n .section-list {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", ".activity-stream {\n &.welcome {\n overflow: hidden;\n }\n\n &:not(.welcome) {\n .overlay-wrapper {\n display: none;\n }\n }\n}\n\n.overlay-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n z-index: 21000;\n transition: opacity 0.4s;\n opacity: 0;\n overflow-x: auto;\n\n &.show {\n transition: none;\n opacity: 1;\n\n .firstrun-sign-in {\n transition: opacity 1.5s, transform 1.5s;\n transition-delay: 0.2s;\n transform: translateY(-50%) scale(1);\n opacity: 1;\n\n @media screen and (max-width: 790px) {\n float: none;\n margin: auto;\n top: 190px;\n margin-bottom: 100px;\n }\n }\n\n .firstrun-firefox-logo {\n transition: opacity 2.3s;\n opacity: 1;\n }\n\n .firstrun-title,\n .firstrun-content,\n .firstrun-link {\n transition: transform 0.5s, opacity 0.8s;\n transform: translateY(0);\n opacity: 1;\n }\n\n .firstrun-title {\n transition-delay: 0.2s;\n }\n\n .firstrun-content {\n transition-delay: 0.4s;\n }\n\n .firstrun-link {\n transition-delay: 0.6s;\n }\n\n .fxaccounts-container {\n transition: none;\n opacity: 1;\n }\n }\n}\n\n.background,\nbody.hide-main { // sass-lint:disable-line no-qualifying-elements\n width: 100%;\n height: 100%;\n display: block;\n background-image: url('#{$image-path}fox-tail.png'), $about-welcome-gradient;\n background-position-x: center;\n background-position-y: -200px, top;\n background-repeat: no-repeat;\n background-size: cover;\n position: fixed;\n}\n\n.firstrun-sign-in {\n transform: translateY(-50%) scale(0.8);\n position: relative;\n top: 50%;\n width: 358px;\n opacity: 0;\n background-color: $white;\n float: inline-end;\n color: $grey-90;\n text-align: center;\n padding: 10px;\n\n form {\n position: relative;\n }\n\n .extra-links {\n font-size: 12px;\n max-width: 340px;\n margin: 17px 50px;\n color: $about-welcome-extra-links;\n cursor: default;\n\n a {\n color: $grey-50;\n cursor: pointer;\n text-decoration: underline;\n }\n\n a:hover,\n a:active,\n a:focus {\n color: $blue-50;\n }\n }\n\n .email-input {\n box-shadow: none;\n margin: auto;\n width: 244px;\n display: block;\n height: 40px;\n padding-inline-start: 20px;\n border: 1px solid $grey-50;\n border-radius: 2px;\n font-size: 16px;\n transition: border-color 150ms, box-shadow 150ms;\n\n &:hover {\n border-color: $grey-90;\n }\n\n &:focus {\n border-color: $blue-50;\n box-shadow: 0 0 0 3px $email-input-focus;\n }\n\n &.invalid {\n border-color: $red-60;\n }\n\n &.invalid:focus {\n box-shadow: 0 0 0 3px $email-input-invalid;\n }\n }\n\n .form-header {\n font-size: 22px;\n margin: 15px auto;\n }\n\n .form-header .sub-header {\n font-size: 14px;\n margin-top: 4px;\n display: block;\n }\n\n button {\n display: block;\n cursor: pointer;\n margin: 10px auto 0;\n }\n\n .continue-button {\n font-size: 18px;\n height: 43px;\n width: 250px;\n padding: 8px 0;\n border: 0;\n border-radius: 4px;\n color: $white;\n background-color: $blue-60;\n transition: background-color 150ms;\n\n &:not([disabled]):active,\n &:not([disabled]):hover {\n background: $blue-70;\n border-color: $blue-80;\n }\n }\n\n .skip-button {\n font-size: 13px;\n margin-top: 20px;\n margin-bottom: 20px;\n background-color: $grey-10;\n color: $blue-50;\n border: 1px solid $blue-50;\n border-radius: 2px;\n min-height: 24px;\n padding: 5px 10px;\n transition: background-color 150ms, color 150ms, border-color 150ms;\n\n &[disabled] {\n background-color: $grey-20;\n border-color: $grey-40;\n color: $grey-50;\n cursor: default;\n opacity: 0.5;\n }\n\n &:not([disabled]):hover {\n background-color: $blue-50;\n border-color: $blue-60;\n color: $white;\n }\n }\n}\n\n.firstrun-left-divider {\n position: relative;\n float: inline-start;\n clear: both;\n width: 435px;\n\n @media screen and (max-width: 825px) {\n width: 400px;\n }\n\n @media screen and (max-width: 790px) {\n margin: auto;\n float: none;\n width: 352px;\n text-align: center;\n }\n}\n\n.firstrun-content {\n line-height: 1.5;\n margin-bottom: 48px;\n max-width: 352px;\n background: url('#{$image-path}sync-devices.svg') bottom center no-repeat;\n padding-bottom: 210px;\n}\n\na.firstrun-link { // sass-lint:disable-line no-qualifying-elements\n color: $white;\n display: block;\n text-decoration: underline;\n\n &:hover,\n &:active,\n &:focus {\n color: $white;\n }\n}\n\n.firstrun-title {\n background: url('chrome://branding/content/about-logo.png') top left no-repeat;\n background-size: 90px 90px;\n margin: 40px 0 10px;\n padding-top: 110px;\n\n @media screen and (max-width: 790px) {\n background: url('chrome://branding/content/about-logo.png') top center no-repeat;\n background-size: 90px 90px;\n }\n\n &:dir(rtl) {\n background-position: top right;\n }\n}\n\n.fxaccounts-container {\n position: absolute;\n bottom: 0;\n right: 0;\n top: 0;\n left: 0;\n color: $white;\n height: 515px;\n margin: auto;\n width: 819px;\n z-index: 10;\n transition: opacity 0.3s;\n opacity: 0;\n\n @media screen and (max-width: 825px) {\n width: 784px;\n }\n\n @media screen and (max-width: 790px) {\n width: auto;\n height: 100%;\n }\n}\n\n.firstrun-title,\n.firstrun-content,\n.firstrun-link {\n opacity: 0;\n transform: translateY(-5px);\n}\n\n.error {\n display: none;\n}\n\n.error.active {\n display: block;\n padding: 5px 12px;\n animation: fade-down 450ms;\n font-size: 12px;\n font-weight: 500;\n color: $white;\n background-color: $red-60;\n position: absolute;\n inset-inline-start: 50px;\n top: -28px;\n border-radius: 2px;\n\n &::before {\n inset-inline-start: 12px;\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n position: absolute;\n text-indent: -999px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n}\n\n@keyframes fade-down {\n 0% {\n opacity: 0;\n transform: translateY(-15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", ".topics {\n ul {\n margin: 0;\n padding: 0;\n @media (min-width: $break-point-large) {\n display: inline;\n padding-inline-start: 12px;\n }\n }\n\n ul li {\n display: inline-block;\n\n &::after {\n content: '•';\n padding: 8px;\n }\n\n &:last-child::after {\n content: none;\n }\n }\n}\n", ".search-wrapper {\n $search-height: 48px;\n $search-icon-size: 24px;\n $search-icon-padding: 12px;\n $search-icon-width: 2 * $search-icon-padding + $search-icon-size -2;\n $search-button-width: 48px;\n $glyph-forward: url('chrome://browser/skin/forward.svg');\n\n padding: 34px 0 64px;\n\n @media (max-height: 700px) {\n & {\n padding: 0 0 30px;\n }\n }\n\n .only-search & {\n padding: 0 0 64px;\n }\n\n .logo-and-wordmark {\n $logo-size: 97px;\n $wordmark-size: 142px;\n\n align-items: center;\n display: flex;\n justify-content: center;\n margin-bottom: 49px;\n\n .logo {\n background: url('chrome://branding/content/icon128.png') no-repeat center center;\n background-size: $logo-size;\n display: inline-block;\n height: $logo-size;\n width: $logo-size;\n }\n\n .wordmark {\n background: url('#{$image-path}firefox-wordmark.svg') no-repeat center center;\n background-size: $wordmark-size;\n -moz-context-properties: fill;\n display: inline-block;\n fill: var(--newtab-search-wordmark-color);\n height: $logo-size;\n margin-inline-start: 15px;\n width: $wordmark-size;\n }\n\n @media (max-width: $break-point-medium - 1) {\n $logo-size-small: 64px;\n $wordmark-small-size: 100px;\n\n .logo {\n background-size: $logo-size-small;\n height: $logo-size-small;\n width: $logo-size-small;\n }\n\n .wordmark {\n background-size: $wordmark-small-size;\n height: $logo-size-small;\n width: $wordmark-small-size;\n }\n }\n }\n\n .search-inner-wrapper {\n cursor: default;\n display: flex;\n height: $search-height;\n margin: 0 auto;\n position: relative;\n width: $searchbar-width-small;\n\n @media (min-width: $break-point-medium) {\n width: $searchbar-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $searchbar-width-large;\n }\n }\n\n input {\n background: var(--newtab-textbox-background-color) var(--newtab-search-icon) $search-icon-padding center no-repeat;\n background-size: $search-icon-size;\n border: solid 1px var(--newtab-search-border-color);\n box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n font-size: 15px;\n -moz-context-properties: fill;\n fill: var(--newtab-search-icon-color);\n padding: 0;\n padding-inline-end: $search-button-width;\n padding-inline-start: $search-icon-width;\n width: 100%;\n\n &:dir(rtl) {\n background-position-x: right $search-icon-padding;\n }\n }\n\n &:hover input {\n box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n }\n\n .search-inner-wrapper:active input,\n input:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n\n .search-button {\n background: $glyph-forward no-repeat center center;\n background-size: 16px 16px;\n border: 0;\n border-radius: 0 $border-radius $border-radius 0;\n -moz-context-properties: fill;\n fill: var(--newtab-search-icon-color);\n height: 100%;\n inset-inline-end: 0;\n position: absolute;\n width: $search-button-width;\n\n &:focus,\n &:hover {\n background-color: $grey-90-10;\n cursor: pointer;\n }\n\n &:active {\n background-color: $grey-90-20;\n }\n\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n }\n}\n\n@media (min-height: 701px) {\n .fixed-search {\n main {\n padding-top: 146px;\n }\n\n .search-wrapper {\n $search-header-bar-height: 95px;\n $search-height: 35px;\n $search-icon-size: 16px;\n $search-icon-padding: 16px;\n\n background-color: var(--newtab-search-header-background-color);\n border-bottom: solid 1px var(--newtab-border-secondary-color);\n height: $search-header-bar-height;\n left: 0;\n padding: 30px 0;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 9;\n\n .search-inner-wrapper {\n height: $search-height;\n }\n\n input {\n background-position-x: $search-icon-padding;\n background-size: $search-icon-size;\n\n &:dir(rtl) {\n background-position-x: right $search-icon-padding;\n }\n }\n }\n }\n}\n\n@at-root {\n // Adjust the style of the contentSearchUI-generated table\n .contentSearchSuggestionTable {\n background-color: var(--newtab-search-dropdown-color);\n border: 0;\n box-shadow: $context-menu-shadow;\n transform: translateY($textbox-shadow-size);\n\n .contentSearchHeader {\n background-color: var(--newtab-search-dropdown-header-color);\n color: var(--newtab-text-secondary-color);\n }\n\n .contentSearchHeader,\n .contentSearchSettingsButton {\n border-color: var(--newtab-border-secondary-color);\n }\n\n .contentSearchSuggestionsList {\n border: 0;\n }\n\n .contentSearchOneOffsTable {\n background-color: var(--newtab-search-dropdown-header-color);\n border-top: solid 1px var(--newtab-border-secondary-color);\n }\n\n .contentSearchSearchWithHeaderSearchText {\n color: var(--newtab-text-primary-color);\n }\n\n .contentSearchSuggestionsContainer {\n background-color: var(--newtab-search-dropdown-color);\n }\n\n .contentSearchSuggestionRow {\n &.selected {\n background: var(--newtab-element-hover-color);\n color: var(--newtab-text-primary-color);\n\n &:active {\n background: var(--newtab-element-active-color);\n }\n\n .historyIcon {\n fill: var(--newtab-icon-secondary-color);\n }\n }\n }\n\n .contentSearchOneOffsTable {\n .contentSearchSuggestionsContainer {\n background-color: var(--newtab-search-dropdown-header-color);\n }\n }\n\n .contentSearchOneOffItem {\n // Make the border slightly shorter by offsetting from the top and bottom\n $border-offset: 18%;\n\n background-image: none;\n border-image: linear-gradient(transparent $border-offset, var(--newtab-border-secondary-color) $border-offset, var(--newtab-border-secondary-color) 100% - $border-offset, transparent 100% - $border-offset) 1;\n border-inline-end: 1px solid;\n position: relative;\n\n &.selected {\n background: var(--newtab-element-hover-color);\n }\n\n &:active {\n background: var(--newtab-element-active-color);\n }\n }\n\n .contentSearchSettingsButton {\n &:hover {\n background: var(--newtab-element-hover-color);\n color: var(--newtab-text-primary-color);\n }\n }\n }\n\n .contentSearchHeaderRow > td > img,\n .contentSearchSuggestionRow > td > .historyIcon {\n margin-inline-start: 7px;\n margin-inline-end: 15px;\n }\n}\n", @@ -50,17 +50,17 @@ ".card-outer {\n @include context-menu-button;\n background: var(--newtab-card-background-color);\n border-radius: $border-radius;\n display: inline-block;\n height: $card-height;\n margin-inline-end: $base-gutter;\n position: relative;\n width: 100%;\n\n &.placeholder {\n background: transparent;\n\n .card {\n box-shadow: inset $inner-box-shadow;\n }\n\n .card-preview-image-outer,\n .card-context {\n display: none;\n }\n }\n\n .card {\n border-radius: $border-radius;\n box-shadow: var(--newtab-card-shadow);\n height: 100%;\n }\n\n > a {\n color: inherit;\n display: block;\n height: 100%;\n outline: none;\n position: absolute;\n width: 100%;\n\n &:-moz-any(.active, :focus) {\n .card {\n @include fade-in-card;\n }\n\n .card-title {\n color: var(--newtab-link-primary-color);\n }\n }\n }\n\n &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n @include fade-in-card;\n @include context-menu-button-hover;\n outline: none;\n\n .card-title {\n color: var(--newtab-link-primary-color);\n }\n\n .alternate ~ .card-host-name {\n display: none;\n }\n\n .card-host-name.alternate {\n display: block;\n }\n }\n\n .card-preview-image-outer {\n background-color: $grey-30;\n border-radius: $border-radius $border-radius 0 0;\n height: $card-preview-image-height;\n overflow: hidden;\n position: relative;\n\n [lwt-newtab-brighttext] & {\n background-color: $grey-60;\n }\n\n &::after {\n border-bottom: 1px solid var(--newtab-card-hairline-color);\n bottom: 0;\n content: '';\n position: absolute;\n width: 100%;\n }\n\n .card-preview-image {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n opacity: 0;\n transition: opacity 1s $photon-easing;\n width: 100%;\n\n &.loaded {\n opacity: 1;\n }\n }\n }\n\n .card-details {\n padding: 15px 16px 12px;\n }\n\n .card-text {\n max-height: 4 * $card-text-line-height + $card-title-margin;\n overflow: hidden;\n\n &.no-host-name,\n &.no-context {\n max-height: 5 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name.no-context {\n max-height: 6 * $card-text-line-height + $card-title-margin;\n }\n\n &:not(.no-description) .card-title {\n max-height: 3 * $card-text-line-height;\n overflow: hidden;\n }\n }\n\n .card-host-name {\n color: var(--newtab-text-secondary-color);\n font-size: 10px;\n overflow: hidden;\n padding-bottom: 4px;\n text-overflow: ellipsis;\n text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n white-space: nowrap;\n }\n\n .card-host-name.alternate { display: none; }\n\n .card-title {\n font-size: 14px;\n font-weight: 600;\n line-height: $card-text-line-height;\n margin: 0 0 $card-title-margin;\n word-wrap: break-word;\n }\n\n .card-description {\n font-size: 12px;\n line-height: $card-text-line-height;\n margin: 0;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .card-context {\n bottom: 0;\n color: var(--newtab-text-secondary-color);\n display: flex;\n font-size: 11px;\n inset-inline-start: 0;\n padding: 9px 16px 9px 14px;\n position: absolute;\n }\n\n .card-context-icon {\n fill: var(--newtab-text-secondary-color);\n height: 22px;\n margin-inline-end: 6px;\n }\n\n .card-context-label {\n flex-grow: 1;\n line-height: 22px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.normal-cards {\n .card-outer {\n // Wide layout styles\n @media (min-width: $break-point-widest) {\n $line-height: 23px;\n height: $card-height-large;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-large;\n }\n\n .card-details {\n padding: 13px 16px 12px;\n }\n\n .card-text {\n max-height: 6 * $line-height + $card-title-margin;\n }\n\n .card-host-name {\n font-size: 12px;\n padding-bottom: 5px;\n }\n\n .card-title {\n font-size: 17px;\n line-height: $line-height;\n margin-bottom: 0;\n }\n\n .card-text:not(.no-description) {\n .card-title {\n max-height: 3 * $line-height;\n }\n }\n\n .card-description {\n font-size: 15px;\n line-height: $line-height;\n }\n\n .card-context {\n bottom: 4px;\n font-size: 14px;\n }\n }\n }\n}\n\n.compact-cards {\n $card-detail-vertical-spacing: 12px;\n $card-title-font-size: 12px;\n\n .card-outer {\n height: $card-height-compact;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-compact;\n }\n\n .card-details {\n padding: $card-detail-vertical-spacing 16px;\n }\n\n .card-host-name {\n line-height: 10px;\n }\n\n .card-text {\n .card-title,\n &:not(.no-description) .card-title {\n font-size: $card-title-font-size;\n line-height: $card-title-font-size + 1;\n max-height: $card-title-font-size + 5;\n overflow: hidden;\n padding: 0 0 4px;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n\n .card-description {\n display: none;\n }\n\n .card-context {\n $icon-size: 16px;\n $container-size: 32px;\n background-color: var(--newtab-card-background-color);\n border-radius: $container-size / 2;\n clip-path: inset(-1px -1px $container-size - ($card-height-compact - $card-preview-image-height-compact - 2 * $card-detail-vertical-spacing));\n height: $container-size;\n width: $container-size;\n padding: ($container-size - $icon-size) / 2;\n top: $card-preview-image-height-compact - $icon-size;\n inset-inline-end: 12px;\n inset-inline-start: auto;\n\n &::after {\n border: 1px solid var(--newtab-card-hairline-color);\n border-bottom: 0;\n border-radius: ($container-size / 2) + 1 ($container-size / 2) + 1 0 0;\n content: '';\n position: absolute;\n height: ($container-size + 2) / 2;\n width: $container-size + 2;\n top: -1px;\n left: -1px;\n }\n\n .card-context-icon {\n margin-inline-end: 0;\n height: $icon-size;\n width: $icon-size;\n\n &.icon-bookmark-added {\n fill: $bookmark-icon-fill;\n }\n\n &.icon-download {\n fill: $download-icon-fill;\n }\n\n &.icon-pocket {\n fill: $pocket-icon-fill;\n }\n }\n\n .card-context-label {\n display: none;\n }\n }\n }\n\n @media not all and (min-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n}\n", ".manual-migration-container {\n color: var(--newtab-text-conditional-color);\n font-size: 13px;\n line-height: 15px;\n margin-bottom: $section-spacing;\n text-align: center;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n text-align: left;\n }\n\n p {\n margin: 0;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: flex;\n justify-content: space-between;\n }\n }\n\n .icon {\n display: none;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: block;\n fill: var(--newtab-icon-secondary-color);\n margin-inline-end: 6px;\n }\n }\n}\n\n.manual-migration-actions {\n border: 0;\n display: block;\n flex-wrap: nowrap;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n padding: 0;\n }\n\n button {\n align-self: center;\n height: 26px;\n margin: 0;\n margin-inline-start: 20px;\n padding: 0 12px;\n }\n}\n", ".collapsible-section {\n padding: $section-vertical-padding $section-horizontal-padding;\n transition-delay: 100ms;\n transition-duration: 100ms;\n transition-property: background-color;\n\n .section-title {\n font-size: $section-title-font-size;\n font-weight: bold;\n margin: 0;\n\n span {\n color: var(--newtab-section-header-text-color);\n display: inline-block;\n fill: var(--newtab-section-header-text-color);\n vertical-align: middle;\n }\n\n .click-target-container {\n vertical-align: top;\n\n .click-target {\n cursor: pointer;\n white-space: nowrap;\n }\n }\n\n .collapsible-arrow {\n margin-inline-start: 8px;\n margin-top: -1px;\n }\n }\n\n .section-top-bar {\n min-height: 19px;\n margin-bottom: 13px;\n position: relative;\n\n .context-menu-button {\n background: url('chrome://browser/skin/page-action.svg') no-repeat right center;\n border: 0;\n cursor: pointer;\n fill: var(--newtab-section-header-text-color);\n height: 100%;\n inset-inline-end: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition-duration: 200ms;\n transition-property: opacity;\n width: $context-menu-button-size;\n\n &:-moz-any(:active, :focus, :hover) {\n fill: $grey-90;\n opacity: 1;\n }\n }\n\n .context-menu {\n top: 16px;\n }\n\n @media (max-width: $break-point-widest + $card-width * 1.5) {\n @include context-menu-open-left;\n }\n }\n\n &:hover,\n &.active {\n .section-top-bar {\n .context-menu-button {\n opacity: 1;\n }\n }\n }\n\n &.active {\n background: var(--newtab-element-hover-color);\n border-radius: 4px;\n\n .section-top-bar {\n .context-menu-button {\n fill: var(--newtab-section-active-contextmenu-color);\n }\n }\n }\n\n .learn-more-link {\n font-size: 11px;\n margin-inline-start: 12px;\n\n a span {\n color: var(--newtab-link-secondary-color);\n }\n }\n\n .section-body-fallback {\n height: $card-height;\n }\n\n .section-body {\n // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n $horizontal-padding: 7px;\n margin: 0 (-$horizontal-padding);\n padding: 0 $horizontal-padding;\n\n &.animating {\n overflow: hidden;\n pointer-events: none;\n }\n }\n\n &.animation-enabled {\n .section-title {\n .collapsible-arrow {\n transition: transform 0.5s $photon-easing;\n }\n }\n\n .section-body {\n transition: max-height 0.5s $photon-easing;\n }\n }\n\n &.collapsed {\n .section-body {\n max-height: 0;\n overflow: hidden;\n }\n }\n}\n", - "\n.asrouter-admin {\n $border-color: var(--newtab-border-secondary-color);\n $monospace: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace;\n max-width: 996px;\n margin: 0 auto;\n font-size: 14px;\n // Reset .outer-wrapper styles\n display: inherit;\n padding: 0 0 92px;\n\n h1 {\n font-weight: 200;\n font-size: 32px;\n }\n\n h2 .button {\n font-size: 14px;\n padding: 6px 12px;\n margin-inline-start: 5px;\n margin-bottom: 0;\n }\n\n table {\n border-collapse: collapse;\n width: 100%;\n }\n\n .sourceLabel {\n background: $grey-20;\n padding: 2px 5px;\n border-radius: 3px;\n\n &.isDisabled {\n background: $email-input-invalid;\n color: $red-60;\n }\n }\n\n .message-item {\n &:first-child td {\n border-top: 1px solid $border-color;\n }\n\n td {\n vertical-align: top;\n border-bottom: 1px solid $border-color;\n padding: 8px;\n\n\n\n &.min {\n width: 1%;\n white-space: nowrap;\n }\n\n &:first-child {\n border-left: 1px solid $border-color;\n }\n\n &:last-child {\n border-right: 1px solid $border-color;\n }\n }\n\n &.current {\n .message-id span {\n background: $yellow-50;\n padding: 2px 5px;\n\n [lwt-newtab-brighttext] & {\n color: $black;\n }\n }\n }\n\n &.blocked {\n .message-id,\n .message-summary {\n opacity: 0.5;\n }\n\n .message-id {\n opacity: 0.5;\n }\n }\n\n .message-id {\n font-family: $monospace;\n font-size: 12px;\n }\n }\n\n pre {\n background: var(--newtab-textbox-background-color);\n margin: 0;\n padding: 8px;\n font-size: 12px;\n max-width: 750px;\n overflow: auto;\n font-family: $monospace;\n }\n\n .errorState {\n border: 1px solid $red-60;\n }\n}\n", - ".pocket-logged-in-cta {\n $max-button-width: 130px;\n $min-button-height: 18px;\n font-size: 13px;\n margin-inline-end: 20px;\n display: inline-block;\n\n .pocket-cta-button {\n background: $blue-60;\n letter-spacing: -0.34px;\n color: $white;\n border-radius: 4px;\n cursor: pointer;\n max-width: $max-button-width;\n // The button height is 2px taller than the rest of the cta text.\n // So I move it up by 1px to align with the rest of the cta text.\n margin-top: -1px;\n min-height: $min-button-height;\n padding: 0 8px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-size: 11px;\n margin-inline-end: 10px;\n }\n\n .cta-text {\n font-weight: normal;\n font-size: 13px;\n }\n\n .pocket-cta-button,\n .cta-text {\n vertical-align: top;\n }\n}\n", - ".more-recommendations {\n display: flex;\n align-items: center;\n white-space: nowrap;\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: var(--newtab-link-secondary-color);\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n}\n", + "\n.asrouter-admin {\n $border-color: var(--newtab-border-secondary-color);\n $monospace: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace;\n max-width: 996px;\n margin: 0 auto;\n font-size: 14px;\n // Reset .outer-wrapper styles\n display: inherit;\n padding: 0 0 92px;\n\n h1 {\n font-weight: 200;\n font-size: 32px;\n }\n\n h2 .button {\n font-size: 14px;\n padding: 6px 12px;\n margin-inline-start: 5px;\n margin-bottom: 0;\n }\n\n table {\n border-collapse: collapse;\n width: 100%;\n }\n\n .sourceLabel {\n background: $grey-20;\n padding: 2px 5px;\n border-radius: 3px;\n\n &.isDisabled {\n background: $email-input-invalid;\n color: $red-60;\n }\n }\n\n .message-item {\n &:first-child td {\n border-top: 1px solid $border-color;\n }\n\n td {\n vertical-align: top;\n border-bottom: 1px solid $border-color;\n padding: 8px;\n\n\n\n &.min {\n width: 1%;\n white-space: nowrap;\n }\n\n &:first-child {\n border-left: 1px solid $border-color;\n }\n\n &:last-child {\n border-right: 1px solid $border-color;\n }\n }\n\n &.current {\n .message-id span {\n background: $yellow-50;\n padding: 2px 5px;\n\n [lwt-newtab-brighttext] & {\n color: $black;\n }\n }\n }\n\n &.blocked {\n .message-id,\n .message-summary {\n opacity: 0.5;\n }\n\n .message-id {\n opacity: 0.5;\n }\n }\n\n .message-id {\n font-family: $monospace;\n font-size: 12px;\n }\n }\n\n .providerUrl {\n font-size: 12px;\n }\n\n pre {\n background: var(--newtab-textbox-background-color);\n margin: 0;\n padding: 8px;\n font-size: 12px;\n max-width: 750px;\n overflow: auto;\n font-family: $monospace;\n }\n\n .errorState {\n border: 1px solid $red-60;\n }\n}\n", + ".pocket-logged-in-cta {\n $max-button-width: 130px;\n $min-button-height: 18px;\n font-size: 13px;\n margin-inline-end: 20px;\n display: inline-block;\n\n .pocket-cta-button {\n background: $blue-60;\n letter-spacing: -0.34px;\n color: $white;\n border-radius: 4px;\n cursor: pointer;\n max-width: $max-button-width;\n // The button height is 2px taller than the rest of the cta text.\n // So I move it up by 1px to align with the rest of the cta text.\n margin-top: -1px;\n min-height: $min-button-height;\n padding: 0 8px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-size: 11px;\n margin-inline-end: 10px;\n }\n\n .cta-text {\n font-weight: normal;\n font-size: 13px;\n line-height: 1.230769231; // (16 / 13) –> 16px computed\n }\n\n .pocket-cta-button,\n .cta-text {\n vertical-align: top;\n }\n}\n", + ".more-recommendations {\n display: flex;\n align-items: center;\n white-space: nowrap;\n line-height: 1.230769231; // (16 / 13) -> 16px computed\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: var(--newtab-link-secondary-color);\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n}\n", ".ASRouterButton {\n font-weight: bold;\n white-space: nowrap;\n border-radius: 4px;\n border: 1px solid var(--newtab-border-secondary-color);\n background-color: var(--newtab-button-secondary-color);\n font-family: inherit;\n padding: 8px 15px;\n margin-inline-start: 12px;\n color: inherit;\n cursor: pointer;\n\n .tall & {\n margin-inline-start: 20px;\n }\n\n &.primary {\n border: 1px solid var(--newtab-button-primary-color);\n background-color: var(--newtab-button-primary-color);\n color: $grey-10;\n }\n\n &.secondary {\n background: var(--newtab-button-secondary-color);\n border: 1px solid var(--newtab-border-primary-color);\n font-size: 14px;\n font-weight: 600;\n }\n}\n", ".SnippetBaseContainer {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: var(--newtab-snippets-background-color);\n color: var(--newtab-text-primary-color);\n font-size: 12px;\n line-height: 16px;\n border-top: 1px solid var(--newtab-snippets-hairline-color);\n box-shadow: $shadow-secondary;\n display: flex;\n align-items: center;\n\n a {\n cursor: pointer;\n color: var(--newtab-link-primary-color);\n text-decoration: underline;\n\n [lwt-newtab-brighttext] & {\n font-weight: bold;\n }\n }\n\n .innerWrapper {\n margin: 0 auto;\n display: flex;\n align-items: center;\n padding: 12px $section-horizontal-padding;\n\n // This is to account for the block button on smaller screens\n padding-inline-end: 36px;\n @media (min-width: $break-point-large) {\n padding-inline-end: $section-horizontal-padding;\n }\n\n max-width: $wrapper-max-width-large;\n @media (min-width: $break-point-widest) {\n max-width: $wrapper-max-width-widest;\n }\n }\n\n .blockButton {\n display: none;\n background: none;\n border: 0;\n position: absolute;\n top: 50%;\n inset-inline-end: 12px;\n height: 16px;\n width: 16px;\n background-image: url('resource://activity-stream/data/content/assets/glyph-dismiss-16.svg');\n -moz-context-properties: fill;\n fill: var(--newtab-icon-primary-color);\n opacity: 0.5;\n margin-top: -8px;\n padding: 0;\n cursor: pointer;\n\n @media (min-width: 766px) {\n inset-inline-end: 24px;\n }\n }\n\n &:hover .blockButton {\n display: block;\n }\n\n .icon {\n height: 42px;\n width: 42px;\n margin-inline-end: 12px;\n flex-shrink: 0;\n }\n}\n\n.snippets-preview-banner {\n font-size: 15px;\n line-height: 42px;\n color: $grey-60-70;\n background: $grey-30-60;\n text-align: center;\n position: absolute;\n top: 0;\n width: 100%;\n\n span {\n vertical-align: middle;\n }\n}\n", ".activity-stream {\n &.modal-open {\n overflow: hidden;\n }\n}\n\n.modalOverlayOuter {\n background: $white;\n opacity: 0.93;\n height: 100%;\n position: fixed;\n top: 0;\n width: 100%;\n display: none;\n z-index: 1100;\n\n &.active {\n display: block;\n }\n}\n\n.modalOverlayInner {\n width: 960px;\n height: 570px;\n position: fixed;\n top: calc(50% - 285px); // halfway down minus half the height of the modal\n left: calc(50% - 480px); // halfway across minus half the width of the modal\n background: $white;\n box-shadow: 0 1px 15px 0 $black-30;\n border-radius: 4px;\n display: none;\n z-index: 1101;\n\n\n // modal takes over entire screen\n @media(max-width: 960px) {\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n box-shadow: none;\n border-radius: 0;\n }\n\n // if modal is short enough, add a vertical scroll bar\n @media(max-width: 850px) and (max-height: 730px) {\n overflow-y: scroll;\n }\n\n // if modal is narrow enough, add a vertical scroll bar\n @media(max-width: 650px) and (max-height: 600px) {\n overflow-y: scroll;\n }\n\n &.active {\n display: block;\n }\n\n h2 {\n color: $grey-60;\n text-align: center;\n font-weight: 200;\n margin-top: 30px;\n font-size: 28px;\n line-height: 37px;\n letter-spacing: -0.13px;\n\n @media(max-width: 960px) {\n margin-top: 100px;\n }\n\n @media(max-width: 850px) {\n margin-top: 30px;\n }\n }\n\n .footer {\n border-top: 1px solid $grey-30;\n height: 70px;\n width: 100%;\n position: absolute;\n bottom: 0;\n text-align: center;\n background-color: $white;\n\n // if modal is short enough, footer becomes sticky\n @media(max-width: 850px) and (max-height: 730px) {\n position: sticky;\n }\n\n // if modal is narrow enough, footer becomes sticky\n @media(max-width: 650px) and (max-height: 600px) {\n position: sticky;\n }\n\n .modalButton {\n margin-top: 20px;\n min-width: 150px;\n height: 30px;\n padding: 4px 30px 6px;\n font-size: 15px;\n\n &:focus,\n &.active,\n &:hover {\n box-shadow: 0 0 0 5px $grey-30;\n transition: box-shadow 150ms;\n }\n }\n }\n}\n", ".SimpleSnippet {\n &.tall {\n padding: 27px 0;\n }\n\n p em {\n color: $grey-90;\n font-style: normal;\n background: $yellow-50;\n }\n\n &.bold,\n &.takeover {\n .donation-form-url,\n .donation-amount {\n padding-top: 8px;\n padding-bottom: 8px;\n }\n }\n\n &.bold {\n height: 176px;\n\n .body {\n font-size: 14px;\n line-height: 20px;\n margin-bottom: 20px;\n }\n\n .icon {\n width: 71px;\n height: 71px;\n }\n }\n\n &.takeover {\n height: 344px;\n\n .body {\n font-size: 16px;\n line-height: 24px;\n margin-bottom: 35px;\n }\n\n .icon {\n width: 79px;\n height: 79px;\n }\n }\n\n .title {\n display: inline;\n font-size: inherit;\n margin: 0;\n }\n\n .titleIcon {\n background-repeat: no-repeat;\n background-size: 14px;\n height: 16px;\n width: 16px;\n margin-top: 2px;\n margin-inline-end: 2px;\n display: inline-block;\n vertical-align: top;\n }\n\n .body {\n display: inline;\n margin: 0;\n }\n\n &.tall .icon {\n margin-inline-end: 20px;\n }\n\n &.takeover,\n &.bold {\n .icon {\n margin-inline-end: 20px;\n }\n }\n\n .icon {\n align-self: flex-start;\n }\n\n .ASRouterButton {\n cursor: pointer;\n }\n}\n", - ".SubmitFormSnippet {\n flex-direction: column;\n flex: 1 1 100%;\n width: 100%;\n\n &.send_to_device_snippet {\n text-align: center;\n\n .message {\n font-size: 16px;\n }\n }\n\n .ASRouterButton {\n &.primary {\n flex: 1 1 0;\n }\n }\n\n .scene2Icon {\n width: 100%;\n\n img {\n width: 98px;\n display: inline-block;\n }\n }\n\n form {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .message {\n font-size: 14px;\n align-self: stretch;\n flex: 0 0 100%;\n\n p {\n margin-top: 0;\n }\n }\n\n .privacyNotice {\n color: var(--newtab-text-secondary-color);\n flex: 0 0 100%;\n\n p {\n margin-bottom: 0;\n }\n }\n\n .innerWrapper {\n max-width: 670px;\n flex-wrap: wrap;\n justify-items: center;\n padding-top: 40px;\n padding-bottom: 40px;\n }\n\n .footer {\n width: 100%;\n margin: 0 auto;\n text-align: right;\n background-color: var(--newtab-background-color);\n padding: 10px 0;\n\n .footer-content {\n margin: 0 auto;\n max-width: 768px;\n width: 100%;\n text-align: right;\n }\n }\n\n input {\n &.mainInput {\n border-radius: 3px;\n background-color: var(--newtab-textbox-background-color);\n border: $input-border;\n padding: 0 8px;\n height: 100%;\n font-size: 15px;\n width: 50%;\n\n &:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n }\n }\n}\n\n.submissionStatus {\n text-align: center;\n font-size: 14px;\n padding: 20px 0;\n\n .submitStatusTitle {\n font-size: 20px;\n }\n}\n", - ".onboardingMessageContainer {\n display: grid;\n grid-column-gap: 21px;\n grid-template-columns: auto auto auto;\n padding-left: 30px;\n padding-right: 30px;\n\n // at 850px, the cards go from vertical layout to horizontal layout\n @media(max-width: 850px) {\n grid-template-columns: none;\n grid-template-rows: auto auto auto;\n padding-left: 110px;\n padding-right: 110px;\n }\n}\n\n.onboardingMessage {\n height: 340px;\n text-align: center;\n padding: 13px;\n font-weight: 200;\n\n // at 850px, img floats left, content floats right next to it\n @media(max-width: 850px) {\n height: 170px;\n text-align: left;\n padding: 10px;\n border-bottom: 1px solid $grey-30;\n display: flex;\n margin-bottom: 11px;\n\n &:last-child {\n border: 0;\n }\n\n .onboardingContent {\n padding-left: 10px;\n height: 100%;\n\n > span > h3 {\n margin-top: 0;\n margin-bottom: 4px;\n font-weight: 400;\n }\n\n > span > p {\n margin-top: 0;\n line-height: 22px;\n font-size: 15px;\n }\n }\n }\n\n @media(max-width: 650px) {\n height: 250px;\n }\n\n .onboardingMessageImage {\n height: 100px;\n width: 120px;\n background-size: 120px;\n background-position: center center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n\n\n @media(max-width: 850px) {\n height: 75px;\n min-width: 80px;\n background-size: 80px;\n }\n\n &.addons {\n background-image: url('resource://activity-stream/data/content/assets/illustration-addons@2x.png');\n }\n\n &.privatebrowsing {\n background-image: url('resource://activity-stream/data/content/assets/illustration-privatebrowsing@2x.png');\n }\n\n &.screenshots {\n background-image: url('resource://activity-stream/data/content/assets/illustration-screenshots@2x.png');\n }\n\n &.gift {\n background-image: url('resource://activity-stream/data/content/assets/illustration-gift@2x.png');\n }\n }\n\n .onboardingContent {\n height: 175px;\n\n > span > h3 {\n color: $grey-90;\n margin-bottom: 8px;\n font-weight: 400;\n }\n\n > span > p {\n color: $grey-60;\n margin-top: 0;\n height: 180px;\n margin-bottom: 12px;\n font-size: 15px;\n line-height: 22px;\n\n @media(max-width: 650px) {\n margin-bottom: 0;\n height: 160px;\n }\n }\n }\n\n .onboardingButton {\n background-color: $grey-90-10;\n border: 0;\n width: 150px;\n height: 30px;\n margin-bottom: 23px;\n padding: 4px 0 6px;\n font-size: 15px;\n\n // at 850px, the button shimmies down and to the right\n @media(max-width: 850px) {\n float: right;\n margin-top: -105px;\n margin-inline-end: -10px;\n }\n\n @media(max-width: 650px) {\n float: none;\n }\n\n &:focus,\n &.active,\n &:hover {\n box-shadow: 0 0 0 5px $grey-30;\n transition: box-shadow 150ms;\n }\n }\n\n\n &::before {\n content: '';\n height: 230px;\n width: 1px;\n position: absolute;\n background-color: $grey-30;\n margin-top: 40px;\n margin-inline-start: 215px;\n\n // at 850px, the line goes from vertical to horizontal\n @media(max-width: 850px) {\n content: none;\n }\n }\n\n &:last-child::before {\n content: none;\n }\n}\n", + ".SubmitFormSnippet {\n flex-direction: column;\n flex: 1 1 100%;\n width: 100%;\n\n &.send_to_device_snippet {\n text-align: center;\n\n .message {\n font-size: 16px;\n }\n }\n\n .ASRouterButton {\n &.primary {\n flex: 1 1 0;\n }\n }\n\n .scene2Icon {\n width: 100%;\n\n img {\n width: 98px;\n display: inline-block;\n }\n }\n\n .scene2Title {\n font-size: inherit;\n margin: 0;\n font-weight: bold;\n display: inline;\n }\n\n form {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .message {\n font-size: 14px;\n align-self: stretch;\n flex: 0 0 100%;\n\n p {\n margin-top: 0;\n }\n }\n\n .privacyNotice {\n color: var(--newtab-text-secondary-color);\n flex: 0 0 100%;\n\n p {\n margin-bottom: 0;\n }\n }\n\n .innerWrapper {\n max-width: 670px;\n flex-wrap: wrap;\n justify-items: center;\n padding-top: 40px;\n padding-bottom: 40px;\n }\n\n .footer {\n width: 100%;\n margin: 0 auto;\n text-align: right;\n background-color: var(--newtab-background-color);\n padding: 10px 0;\n\n .footer-content {\n margin: 0 auto;\n max-width: 768px;\n width: 100%;\n text-align: right;\n }\n }\n\n input {\n &.mainInput {\n border-radius: 3px;\n background-color: var(--newtab-textbox-background-color);\n border: $input-border;\n padding: 0 8px;\n height: 100%;\n font-size: 15px;\n width: 50%;\n\n &:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n }\n }\n}\n\n.submissionStatus {\n text-align: center;\n font-size: 14px;\n padding: 20px 0;\n\n .submitStatusTitle {\n font-size: 20px;\n }\n}\n", + ".onboardingMessageContainer {\n display: grid;\n grid-column-gap: 21px;\n grid-template-columns: auto auto auto;\n padding-left: 30px;\n padding-right: 30px;\n\n // at 850px, the cards go from vertical layout to horizontal layout\n @media(max-width: 850px) {\n grid-template-columns: none;\n grid-template-rows: auto auto auto;\n padding-left: 110px;\n padding-right: 110px;\n }\n}\n\n.onboardingMessage {\n height: 340px;\n text-align: center;\n padding: 13px;\n font-weight: 200;\n\n // at 850px, img floats left, content floats right next to it\n @media(max-width: 850px) {\n height: 170px;\n text-align: left;\n padding: 10px;\n border-bottom: 1px solid $grey-30;\n display: flex;\n margin-bottom: 11px;\n\n &:last-child {\n border: 0;\n }\n\n .onboardingContent {\n padding-left: 10px;\n height: 100%;\n\n > span > h3 {\n margin-top: 0;\n margin-bottom: 4px;\n font-weight: 400;\n }\n\n > span > p {\n margin-top: 0;\n line-height: 22px;\n font-size: 15px;\n }\n }\n }\n\n @media(max-width: 650px) {\n height: 250px;\n }\n\n .onboardingMessageImage {\n height: 100px;\n width: 120px;\n background-size: 120px;\n background-position: center center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n\n\n @media(max-width: 850px) {\n height: 75px;\n min-width: 80px;\n background-size: 80px;\n }\n\n &.addons {\n background-image: url('resource://activity-stream/data/content/assets/illustration-addons@2x.png');\n }\n\n &.privatebrowsing {\n background-image: url('resource://activity-stream/data/content/assets/illustration-privatebrowsing@2x.png');\n }\n\n &.screenshots {\n background-image: url('resource://activity-stream/data/content/assets/illustration-screenshots@2x.png');\n }\n\n &.gift {\n background-image: url('resource://activity-stream/data/content/assets/illustration-gift@2x.png');\n }\n\n &.sync {\n background-image: url('resource://activity-stream/data/content/assets/illustration-sync@2x.png');\n }\n }\n\n .onboardingContent {\n height: 175px;\n\n > span > h3 {\n color: $grey-90;\n margin-bottom: 8px;\n font-weight: 400;\n }\n\n > span > p {\n color: $grey-60;\n margin-top: 0;\n height: 180px;\n margin-bottom: 12px;\n font-size: 15px;\n line-height: 22px;\n\n @media(max-width: 650px) {\n margin-bottom: 0;\n height: 160px;\n }\n }\n }\n\n .onboardingButton {\n background-color: $grey-90-10;\n border: 0;\n width: 150px;\n height: 30px;\n margin-bottom: 23px;\n padding: 4px 0 6px;\n font-size: 15px;\n\n // at 850px, the button shimmies down and to the right\n @media(max-width: 850px) {\n float: right;\n margin-top: -105px;\n margin-inline-end: -10px;\n }\n\n @media(max-width: 650px) {\n float: none;\n }\n\n &:focus,\n &.active,\n &:hover {\n box-shadow: 0 0 0 5px $grey-30;\n transition: box-shadow 150ms;\n }\n }\n\n\n &::before {\n content: '';\n height: 230px;\n width: 1px;\n position: absolute;\n background-color: $grey-30;\n margin-top: 40px;\n margin-inline-start: 215px;\n\n // at 850px, the line goes from vertical to horizontal\n @media(max-width: 850px) {\n content: none;\n }\n }\n\n &:last-child::before {\n content: none;\n }\n}\n", ".EOYSnippetForm {\n margin-top: 12px;\n align-self: start;\n font-size: 12px;\n display: flex;\n align-items: center;\n\n .donation-amount,\n .donation-form-url {\n white-space: nowrap;\n font-size: 14px;\n padding: 5px 14px;\n border-radius: 2px;\n }\n\n .donation-amount {\n color: $grey-90;\n margin-inline-end: 18px;\n border: 1px solid $grey-40;\n background: $grey-10;\n cursor: pointer;\n }\n\n input {\n &[type='radio'] {\n opacity: 0;\n margin-inline-end: -18px;\n\n &:checked+.donation-amount {\n background: $grey-50;\n color: $white;\n border: 1px solid $grey-60;\n }\n }\n }\n\n .monthly-checkbox-container {\n width: 100%;\n }\n\n .donation-form-url {\n margin-inline-start: 18px;\n background-color: $snippets-donation-button-bg;\n border: 0;\n color: $white;\n align-self: flex-end;\n display: flex;\n cursor: pointer;\n }\n}\n" ], "names": [], - "mappings": "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" + "mappings": "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" } \ No newline at end of file diff --git a/browser/components/newtab/css/activity-stream-mac.css b/browser/components/newtab/css/activity-stream-mac.css index 02f9b3f9acc1f..b7a42e624e71a 100644 --- a/browser/components/newtab/css/activity-stream-mac.css +++ b/browser/components/newtab/css/activity-stream-mac.css @@ -916,10 +916,6 @@ main { .top-stories-bottom-container a.more-recommendations { font-weight: normal; font-size: 13px; } - @media (min-width: 866px) { - .top-stories-bottom-container { - line-height: 16px; - height: 16px; } } @media (min-width: 1122px) { .sections-list .normal-cards .section-list { @@ -1843,6 +1839,8 @@ a.firstrun-link { .asrouter-admin .message-item .message-id { font-family: "SF Mono", "Monaco", "Inconsolata", "Fira Mono", "Droid Sans Mono", "Source Code Pro", monospace; font-size: 12px; } + .asrouter-admin .providerUrl { + font-size: 12px; } .asrouter-admin pre { background: var(--newtab-textbox-background-color); margin: 0; @@ -1875,7 +1873,8 @@ a.firstrun-link { margin-inline-end: 10px; } .pocket-logged-in-cta .cta-text { font-weight: normal; - font-size: 13px; } + font-size: 13px; + line-height: 1.230769231; } .pocket-logged-in-cta .pocket-cta-button, .pocket-logged-in-cta .cta-text { vertical-align: top; } @@ -1883,7 +1882,8 @@ a.firstrun-link { .more-recommendations { display: flex; align-items: center; - white-space: nowrap; } + white-space: nowrap; + line-height: 1.230769231; } .more-recommendations::after { background: url("../data/content/assets/topic-show-more-12.svg") no-repeat center center; content: ''; @@ -2151,6 +2151,11 @@ a.firstrun-link { .SubmitFormSnippet .scene2Icon img { width: 98px; display: inline-block; } + .SubmitFormSnippet .scene2Title { + font-size: inherit; + margin: 0; + font-weight: bold; + display: inline; } .SubmitFormSnippet form { display: flex; flex-direction: column; @@ -2265,6 +2270,8 @@ a.firstrun-link { background-image: url("resource://activity-stream/data/content/assets/illustration-screenshots@2x.png"); } .onboardingMessage .onboardingMessageImage.gift { background-image: url("resource://activity-stream/data/content/assets/illustration-gift@2x.png"); } + .onboardingMessage .onboardingMessageImage.sync { + background-image: url("resource://activity-stream/data/content/assets/illustration-sync@2x.png"); } .onboardingMessage .onboardingContent { height: 175px; } .onboardingMessage .onboardingContent > span > h3 { diff --git a/browser/components/newtab/css/activity-stream-mac.css.map b/browser/components/newtab/css/activity-stream-mac.css.map index cbe847b5eece6..96ea7de217003 100644 --- a/browser/components/newtab/css/activity-stream-mac.css.map +++ b/browser/components/newtab/css/activity-stream-mac.css.map @@ -41,7 +41,7 @@ ".outer-wrapper {\n color: var(--newtab-text-primary-color);\n display: flex;\n flex-grow: 1;\n min-height: 100vh;\n padding: ($section-spacing + $section-vertical-padding) $base-gutter $base-gutter;\n\n &.fixed-to-top {\n display: block;\n }\n\n &.only-search {\n display: block;\n padding-top: 134px;\n }\n\n a {\n color: var(--newtab-link-primary-color);\n }\n}\n\nmain {\n margin: auto;\n // Offset the snippets container so things at the bottom of the page are still\n // visible when snippets are visible. Adjust for other spacing.\n padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n\n @media (min-width: $break-point-widest) {\n width: $wrapper-max-width-widest;\n }\n\n section {\n margin-bottom: $section-spacing;\n position: relative;\n }\n\n .hide-main & {\n visibility: hidden;\n }\n\n}\n\n.base-content-fallback {\n // Make the error message be centered against the viewport\n height: 100vh;\n}\n\n.body-wrapper {\n // Hide certain elements so the page structure is fixed, e.g., placeholders,\n // while avoiding flashes of changing content, e.g., icons and text\n $selectors-to-hide: '\n .section-title,\n .sections-list .section:last-of-type,\n .topics\n ';\n\n #{$selectors-to-hide} {\n opacity: 0;\n }\n\n &.on {\n #{$selectors-to-hide} {\n opacity: 1;\n }\n }\n}\n\n.non-collapsible-section {\n padding: 0 $section-horizontal-padding;\n}\n\n.prefs-button {\n button {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n fill: var(--newtab-icon-primary-color);\n inset-inline-end: 15px;\n padding: 15px;\n position: fixed;\n top: 15px;\n z-index: 1000;\n\n &:hover,\n &:focus {\n background-color: var(--newtab-element-hover-color);\n }\n\n &:active {\n background-color: var(--newtab-element-active-color);\n }\n }\n}\n", ".as-error-fallback {\n align-items: center;\n border-radius: $border-radius;\n box-shadow: inset $inner-box-shadow;\n color: var(--newtab-text-conditional-color);\n display: flex;\n flex-direction: column;\n font-size: $error-fallback-font-size;\n justify-content: center;\n justify-items: center;\n line-height: $error-fallback-line-height;\n\n a {\n color: var(--newtab-text-conditional-color);\n text-decoration: underline;\n }\n}\n", "$top-sites-size: $grid-unit;\n$top-sites-border-radius: 6px;\n$top-sites-title-height: 30px;\n$top-sites-vertical-space: 8px;\n$screenshot-size: cover;\n$rich-icon-size: 96px;\n$default-icon-wrapper-size: 42px;\n$default-icon-size: 32px;\n$default-icon-offset: 6px;\n$half-base-gutter: $base-gutter / 2;\n$hover-transition-duration: 150ms;\n\n.top-sites {\n // Take back the margin from the bottom row of vertical spacing as well as the\n // extra whitespace below the title text as it's vertically centered.\n margin-bottom: $section-spacing - ($top-sites-vertical-space + $top-sites-title-height / 3);\n}\n\n.top-sites-list {\n list-style: none;\n margin: 0 (-$half-base-gutter);\n padding: 0;\n\n // Two columns\n @media (max-width: $break-point-medium) {\n :nth-child(2n+1) {\n @include context-menu-open-middle;\n }\n\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n // Four columns\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n :nth-child(4n+3) {\n @include context-menu-open-left;\n }\n }\n\n // Six columns\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(6n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n :nth-child(6n+5) {\n @include context-menu-open-left;\n }\n }\n\n // Eight columns\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(8n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n :nth-child(8n+7) {\n @include context-menu-open-left;\n }\n }\n\n @media (max-width: $break-point-medium) {\n .hide-for-narrow {\n display: none;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n\n li {\n margin: 0 0 $top-sites-vertical-space;\n }\n\n &:not(.dnd-active) {\n .top-site-outer:-moz-any(.active, :focus, :hover) {\n .tile {\n @include fade-in;\n }\n\n @include context-menu-button-hover;\n }\n }\n}\n\n// container for drop zone\n.top-site-outer {\n padding: 0 $half-base-gutter;\n display: inline-block;\n\n // container for context menu\n .top-site-inner {\n position: relative;\n\n > a {\n color: inherit;\n display: block;\n outline: none;\n\n &:-moz-any(.active, :focus) {\n .tile {\n @include fade-in;\n }\n }\n }\n }\n\n @include context-menu-button;\n\n .tile { // sass-lint:disable-block property-sort-order\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow, var(--newtab-card-shadow);\n cursor: pointer;\n height: $top-sites-size;\n position: relative;\n width: $top-sites-size;\n\n // For letter fallback\n align-items: center;\n color: var(--newtab-text-secondary-color);\n display: flex;\n font-size: 32px;\n font-weight: 200;\n justify-content: center;\n text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n transition: box-shadow $hover-transition-duration;\n\n &::before {\n content: attr(data-fallback);\n }\n }\n\n .screenshot {\n background-color: $white;\n background-position: top left;\n background-size: $screenshot-size;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition: opacity 1s;\n width: 100%;\n\n &.active {\n opacity: 1;\n }\n }\n\n // Some common styles for all icons (rich and default) in top sites\n .top-site-icon {\n background-color: var(--newtab-topsites-background-color);\n background-position: center center;\n background-repeat: no-repeat;\n border-radius: $top-sites-border-radius;\n box-shadow: var(--newtab-topsites-icon-shadow);\n position: absolute;\n }\n\n .rich-icon {\n background-size: cover;\n height: 100%;\n inset-inline-start: 0;\n top: 0;\n width: 100%;\n }\n\n .default-icon,\n .search-topsite {\n background-size: $default-icon-size;\n bottom: -$default-icon-offset;\n height: $default-icon-wrapper-size;\n inset-inline-end: -$default-icon-offset;\n width: $default-icon-wrapper-size;\n\n // for corner letter fallback\n align-items: center;\n display: flex;\n font-size: 20px;\n justify-content: center;\n\n &[data-fallback]::before {\n content: attr(data-fallback);\n }\n }\n\n .search-topsite {\n background-image: url('#{$image-path}glyph-search-16.svg');\n background-size: 26px;\n background-color: $blue-60;\n border-radius: $default-icon-wrapper-size;\n -moz-context-properties: fill;\n fill: $white;\n box-shadow: var(--newtab-card-shadow);\n transition-duration: $hover-transition-duration;\n transition-property: background-size, bottom, inset-inline-end, height, width;\n }\n\n &:hover .search-topsite {\n $hover-icon-wrapper-size: $default-icon-wrapper-size + 4;\n $hover-icon-offset: -$default-icon-offset - 3;\n\n background-size: 28px;\n border-radius: $hover-icon-wrapper-size;\n bottom: $hover-icon-offset;\n height: $hover-icon-wrapper-size;\n inset-inline-end: $hover-icon-offset;\n width: $hover-icon-wrapper-size;\n }\n\n // We want all search shortcuts to have a white background in case they have transparency.\n &.search-shortcut {\n .rich-icon {\n background-color: $white;\n }\n }\n\n .title {\n color: var(--newtab-topsites-label-color);\n font: message-box;\n height: $top-sites-title-height;\n line-height: $top-sites-title-height;\n text-align: center;\n width: $top-sites-size;\n position: relative;\n\n .icon {\n fill: var(--newtab-icon-tertiary-color);\n inset-inline-start: 0;\n position: absolute;\n top: 10px;\n }\n\n span {\n height: $top-sites-title-height;\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.pinned {\n span {\n padding: 0 13px;\n }\n }\n }\n\n .edit-button {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.placeholder {\n .tile {\n box-shadow: inset $inner-box-shadow;\n }\n\n .screenshot {\n display: none;\n }\n }\n\n &.dragged {\n .tile {\n background: $grey-20;\n box-shadow: none;\n\n *,\n &::before {\n display: none;\n }\n }\n\n .title {\n visibility: hidden;\n }\n }\n}\n\n.edit-topsites-wrapper {\n .modal {\n box-shadow: $shadow-secondary;\n left: 0;\n margin: 0 auto;\n max-height: calc(100% - 40px);\n overflow-y: auto;\n overflow-x: hidden;\n position: fixed;\n right: 0;\n top: 40px;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n }\n}\n\n.topsite-form {\n $form-width: 300px;\n $form-spacing: 32px;\n\n .section-title {\n font-size: 16px;\n margin: 0 0 16px;\n }\n\n .form-input-container {\n max-width: $form-width + 3 * $form-spacing + $rich-icon-size;\n margin: 0 auto;\n padding: $form-spacing;\n\n .top-site-outer {\n pointer-events: none;\n }\n }\n\n .search-shortcuts-container {\n max-width: 700px;\n margin: 0 auto;\n padding: $form-spacing;\n\n > div {\n margin-inline-end: -39px;\n }\n\n .top-site-outer {\n margin-inline-start: 0;\n margin-inline-end: 39px;\n }\n }\n\n .top-site-outer {\n padding: 0;\n margin: 24px 0 0;\n margin-inline-start: $form-spacing;\n }\n\n .fields-and-preview {\n display: flex;\n }\n\n label {\n font-size: $section-title-font-size;\n }\n\n .form-wrapper {\n width: 100%;\n\n .field {\n position: relative;\n\n .icon-clear-input {\n position: absolute;\n transform: translateY(-50%);\n top: 50%;\n inset-inline-end: 8px;\n }\n }\n\n .url {\n input:dir(ltr) {\n padding-right: 32px;\n }\n\n input:dir(rtl) {\n padding-left: 32px;\n\n &:not(:placeholder-shown) {\n direction: ltr;\n text-align: right;\n }\n }\n }\n\n .enable-custom-image-input {\n display: inline-block;\n font-size: 13px;\n margin-top: 4px;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n .custom-image-input-container {\n margin-top: 4px;\n\n .loading-container {\n width: 16px;\n height: 16px;\n overflow: hidden;\n position: absolute;\n transform: translateY(-50%);\n top: 50%;\n inset-inline-end: 8px;\n }\n\n // This animation is derived from Firefox's tab loading animation\n // See https://searchfox.org/mozilla-central/rev/b29daa46443b30612415c35be0a3c9c13b9dc5f6/browser/themes/shared/tabs.inc.css#208-216\n .loading-animation {\n @keyframes tab-throbber-animation {\n 100% { transform: translateX(-960px); }\n }\n\n @keyframes tab-throbber-animation-rtl {\n 100% { transform: translateX(960px); }\n }\n\n width: 960px;\n height: 16px;\n -moz-context-properties: fill;\n fill: $blue-50;\n background-image: url('chrome://browser/skin/tabbrowser/loading.svg');\n animation: tab-throbber-animation 1.05s steps(60) infinite;\n\n &:dir(rtl) {\n animation-name: tab-throbber-animation-rtl;\n }\n }\n }\n\n input {\n &[type='text'] {\n background-color: var(--newtab-textbox-background-color);\n border: $input-border;\n margin: 8px 0;\n padding: 0 8px;\n height: 32px;\n width: 100%;\n font-size: 15px;\n\n &:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n\n &[disabled] {\n border: $input-border;\n box-shadow: none;\n opacity: 0.4;\n }\n }\n }\n\n .invalid {\n input {\n &[type='text'] {\n border: $input-error-border;\n box-shadow: $input-error-boxshadow;\n }\n }\n }\n\n .error-tooltip {\n animation: fade-up-tt 450ms;\n background: $red-60;\n border-radius: 2px;\n color: $white;\n inset-inline-start: 3px;\n padding: 5px 12px;\n position: absolute;\n top: 44px;\n z-index: 1;\n\n // tooltip caret\n &::before {\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n inset-inline-start: 12px;\n position: absolute;\n text-indent: -999px;\n top: -7px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n }\n }\n\n .actions {\n justify-content: flex-end;\n\n button {\n margin-inline-start: 10px;\n margin-inline-end: 0;\n }\n }\n\n @media (max-width: $break-point-medium) {\n .fields-and-preview {\n flex-direction: column;\n\n .top-site-outer {\n margin-inline-start: 0;\n }\n }\n }\n\n // prevent text selection of keyword label when clicking to select\n .title {\n -moz-user-select: none;\n }\n\n // CSS styled checkbox\n [type='checkbox']:not(:checked),\n [type='checkbox']:checked {\n inset-inline-start: -9999px;\n position: absolute;\n }\n\n [type='checkbox']:not(:checked) + label,\n [type='checkbox']:checked + label {\n cursor: pointer;\n display: block;\n position: relative;\n }\n\n $checkbox-offset: -8px;\n\n [type='checkbox']:not(:checked) + label::before,\n [type='checkbox']:checked + label::before {\n background: var(--newtab-background-color);\n border: $input-border;\n border-radius: $border-radius;\n content: '';\n height: 21px;\n left: $checkbox-offset;\n position: absolute;\n top: $checkbox-offset;\n width: 21px;\n z-index: 1;\n\n [dir='rtl'] & {\n left: auto;\n right: $checkbox-offset;\n }\n }\n\n // checkmark\n [type='checkbox']:not(:checked) + label::after,\n [type='checkbox']:checked + label::after {\n background: url('chrome://global/skin/icons/check.svg') no-repeat center center; // sass-lint:disable-line no-url-domains\n content: '';\n height: 21px;\n left: $checkbox-offset;\n position: absolute;\n top: $checkbox-offset;\n width: 21px;\n -moz-context-properties: fill;\n fill: var(--newtab-link-primary-color);\n z-index: 2;\n\n [dir='rtl'] & {\n left: auto;\n right: $checkbox-offset;\n }\n }\n\n // when selected, highlight the tile\n [type='checkbox']:checked + label {\n .tile {\n box-shadow: 0 0 0 2px var(--newtab-link-primary-color);\n }\n }\n\n // checkmark changes\n [type='checkbox']:not(:checked) + label::after {\n opacity: 0;\n }\n\n [type='checkbox']:checked + label::after {\n opacity: 1;\n }\n\n // accessibility\n [type='checkbox']:checked:focus + label::before,\n [type='checkbox']:not(:checked):focus + label::before {\n border: 1px dotted var(--newtab-link-primary-color);\n }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n 0% {\n opacity: 0;\n transform: translateY(15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", - ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n // 3n for normal cards, 4n for compact cards\n :nth-child(3n),\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: var(--newtab-icon-secondary-color);\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: var(--newtab-text-primary-color);\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n }\n }\n}\n\n.top-stories-bottom-container {\n color: var(--newtab-section-navigation-text-color);\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n display: flex;\n justify-content: space-between;\n\n a {\n color: var(--newtab-link-secondary-color);\n font-weight: bold;\n\n &.more-recommendations {\n font-weight: normal;\n font-size: 13px;\n }\n }\n\n @media (min-width: $break-point-large) {\n line-height: 16px;\n height: 16px;\n }\n}\n\n@media (min-width: $break-point-widest) {\n .sections-list {\n // Compact cards stay the same size but normal cards get bigger.\n .normal-cards {\n .section-list {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", + ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n // 3n for normal cards, 4n for compact cards\n :nth-child(3n),\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: var(--newtab-icon-secondary-color);\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: var(--newtab-text-primary-color);\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n }\n }\n}\n\n.top-stories-bottom-container {\n color: var(--newtab-section-navigation-text-color);\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n display: flex;\n justify-content: space-between;\n\n a {\n color: var(--newtab-link-secondary-color);\n font-weight: bold;\n\n &.more-recommendations {\n font-weight: normal;\n font-size: 13px;\n }\n }\n}\n\n@media (min-width: $break-point-widest) {\n .sections-list {\n // Compact cards stay the same size but normal cards get bigger.\n .normal-cards {\n .section-list {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", ".activity-stream {\n &.welcome {\n overflow: hidden;\n }\n\n &:not(.welcome) {\n .overlay-wrapper {\n display: none;\n }\n }\n}\n\n.overlay-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n z-index: 21000;\n transition: opacity 0.4s;\n opacity: 0;\n overflow-x: auto;\n\n &.show {\n transition: none;\n opacity: 1;\n\n .firstrun-sign-in {\n transition: opacity 1.5s, transform 1.5s;\n transition-delay: 0.2s;\n transform: translateY(-50%) scale(1);\n opacity: 1;\n\n @media screen and (max-width: 790px) {\n float: none;\n margin: auto;\n top: 190px;\n margin-bottom: 100px;\n }\n }\n\n .firstrun-firefox-logo {\n transition: opacity 2.3s;\n opacity: 1;\n }\n\n .firstrun-title,\n .firstrun-content,\n .firstrun-link {\n transition: transform 0.5s, opacity 0.8s;\n transform: translateY(0);\n opacity: 1;\n }\n\n .firstrun-title {\n transition-delay: 0.2s;\n }\n\n .firstrun-content {\n transition-delay: 0.4s;\n }\n\n .firstrun-link {\n transition-delay: 0.6s;\n }\n\n .fxaccounts-container {\n transition: none;\n opacity: 1;\n }\n }\n}\n\n.background,\nbody.hide-main { // sass-lint:disable-line no-qualifying-elements\n width: 100%;\n height: 100%;\n display: block;\n background-image: url('#{$image-path}fox-tail.png'), $about-welcome-gradient;\n background-position-x: center;\n background-position-y: -200px, top;\n background-repeat: no-repeat;\n background-size: cover;\n position: fixed;\n}\n\n.firstrun-sign-in {\n transform: translateY(-50%) scale(0.8);\n position: relative;\n top: 50%;\n width: 358px;\n opacity: 0;\n background-color: $white;\n float: inline-end;\n color: $grey-90;\n text-align: center;\n padding: 10px;\n\n form {\n position: relative;\n }\n\n .extra-links {\n font-size: 12px;\n max-width: 340px;\n margin: 17px 50px;\n color: $about-welcome-extra-links;\n cursor: default;\n\n a {\n color: $grey-50;\n cursor: pointer;\n text-decoration: underline;\n }\n\n a:hover,\n a:active,\n a:focus {\n color: $blue-50;\n }\n }\n\n .email-input {\n box-shadow: none;\n margin: auto;\n width: 244px;\n display: block;\n height: 40px;\n padding-inline-start: 20px;\n border: 1px solid $grey-50;\n border-radius: 2px;\n font-size: 16px;\n transition: border-color 150ms, box-shadow 150ms;\n\n &:hover {\n border-color: $grey-90;\n }\n\n &:focus {\n border-color: $blue-50;\n box-shadow: 0 0 0 3px $email-input-focus;\n }\n\n &.invalid {\n border-color: $red-60;\n }\n\n &.invalid:focus {\n box-shadow: 0 0 0 3px $email-input-invalid;\n }\n }\n\n .form-header {\n font-size: 22px;\n margin: 15px auto;\n }\n\n .form-header .sub-header {\n font-size: 14px;\n margin-top: 4px;\n display: block;\n }\n\n button {\n display: block;\n cursor: pointer;\n margin: 10px auto 0;\n }\n\n .continue-button {\n font-size: 18px;\n height: 43px;\n width: 250px;\n padding: 8px 0;\n border: 0;\n border-radius: 4px;\n color: $white;\n background-color: $blue-60;\n transition: background-color 150ms;\n\n &:not([disabled]):active,\n &:not([disabled]):hover {\n background: $blue-70;\n border-color: $blue-80;\n }\n }\n\n .skip-button {\n font-size: 13px;\n margin-top: 20px;\n margin-bottom: 20px;\n background-color: $grey-10;\n color: $blue-50;\n border: 1px solid $blue-50;\n border-radius: 2px;\n min-height: 24px;\n padding: 5px 10px;\n transition: background-color 150ms, color 150ms, border-color 150ms;\n\n &[disabled] {\n background-color: $grey-20;\n border-color: $grey-40;\n color: $grey-50;\n cursor: default;\n opacity: 0.5;\n }\n\n &:not([disabled]):hover {\n background-color: $blue-50;\n border-color: $blue-60;\n color: $white;\n }\n }\n}\n\n.firstrun-left-divider {\n position: relative;\n float: inline-start;\n clear: both;\n width: 435px;\n\n @media screen and (max-width: 825px) {\n width: 400px;\n }\n\n @media screen and (max-width: 790px) {\n margin: auto;\n float: none;\n width: 352px;\n text-align: center;\n }\n}\n\n.firstrun-content {\n line-height: 1.5;\n margin-bottom: 48px;\n max-width: 352px;\n background: url('#{$image-path}sync-devices.svg') bottom center no-repeat;\n padding-bottom: 210px;\n}\n\na.firstrun-link { // sass-lint:disable-line no-qualifying-elements\n color: $white;\n display: block;\n text-decoration: underline;\n\n &:hover,\n &:active,\n &:focus {\n color: $white;\n }\n}\n\n.firstrun-title {\n background: url('chrome://branding/content/about-logo.png') top left no-repeat;\n background-size: 90px 90px;\n margin: 40px 0 10px;\n padding-top: 110px;\n\n @media screen and (max-width: 790px) {\n background: url('chrome://branding/content/about-logo.png') top center no-repeat;\n background-size: 90px 90px;\n }\n\n &:dir(rtl) {\n background-position: top right;\n }\n}\n\n.fxaccounts-container {\n position: absolute;\n bottom: 0;\n right: 0;\n top: 0;\n left: 0;\n color: $white;\n height: 515px;\n margin: auto;\n width: 819px;\n z-index: 10;\n transition: opacity 0.3s;\n opacity: 0;\n\n @media screen and (max-width: 825px) {\n width: 784px;\n }\n\n @media screen and (max-width: 790px) {\n width: auto;\n height: 100%;\n }\n}\n\n.firstrun-title,\n.firstrun-content,\n.firstrun-link {\n opacity: 0;\n transform: translateY(-5px);\n}\n\n.error {\n display: none;\n}\n\n.error.active {\n display: block;\n padding: 5px 12px;\n animation: fade-down 450ms;\n font-size: 12px;\n font-weight: 500;\n color: $white;\n background-color: $red-60;\n position: absolute;\n inset-inline-start: 50px;\n top: -28px;\n border-radius: 2px;\n\n &::before {\n inset-inline-start: 12px;\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n position: absolute;\n text-indent: -999px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n}\n\n@keyframes fade-down {\n 0% {\n opacity: 0;\n transform: translateY(-15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", ".topics {\n ul {\n margin: 0;\n padding: 0;\n @media (min-width: $break-point-large) {\n display: inline;\n padding-inline-start: 12px;\n }\n }\n\n ul li {\n display: inline-block;\n\n &::after {\n content: '•';\n padding: 8px;\n }\n\n &:last-child::after {\n content: none;\n }\n }\n}\n", ".search-wrapper {\n $search-height: 48px;\n $search-icon-size: 24px;\n $search-icon-padding: 12px;\n $search-icon-width: 2 * $search-icon-padding + $search-icon-size -2;\n $search-button-width: 48px;\n $glyph-forward: url('chrome://browser/skin/forward.svg');\n\n padding: 34px 0 64px;\n\n @media (max-height: 700px) {\n & {\n padding: 0 0 30px;\n }\n }\n\n .only-search & {\n padding: 0 0 64px;\n }\n\n .logo-and-wordmark {\n $logo-size: 97px;\n $wordmark-size: 142px;\n\n align-items: center;\n display: flex;\n justify-content: center;\n margin-bottom: 49px;\n\n .logo {\n background: url('chrome://branding/content/icon128.png') no-repeat center center;\n background-size: $logo-size;\n display: inline-block;\n height: $logo-size;\n width: $logo-size;\n }\n\n .wordmark {\n background: url('#{$image-path}firefox-wordmark.svg') no-repeat center center;\n background-size: $wordmark-size;\n -moz-context-properties: fill;\n display: inline-block;\n fill: var(--newtab-search-wordmark-color);\n height: $logo-size;\n margin-inline-start: 15px;\n width: $wordmark-size;\n }\n\n @media (max-width: $break-point-medium - 1) {\n $logo-size-small: 64px;\n $wordmark-small-size: 100px;\n\n .logo {\n background-size: $logo-size-small;\n height: $logo-size-small;\n width: $logo-size-small;\n }\n\n .wordmark {\n background-size: $wordmark-small-size;\n height: $logo-size-small;\n width: $wordmark-small-size;\n }\n }\n }\n\n .search-inner-wrapper {\n cursor: default;\n display: flex;\n height: $search-height;\n margin: 0 auto;\n position: relative;\n width: $searchbar-width-small;\n\n @media (min-width: $break-point-medium) {\n width: $searchbar-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $searchbar-width-large;\n }\n }\n\n input {\n background: var(--newtab-textbox-background-color) var(--newtab-search-icon) $search-icon-padding center no-repeat;\n background-size: $search-icon-size;\n border: solid 1px var(--newtab-search-border-color);\n box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n font-size: 15px;\n -moz-context-properties: fill;\n fill: var(--newtab-search-icon-color);\n padding: 0;\n padding-inline-end: $search-button-width;\n padding-inline-start: $search-icon-width;\n width: 100%;\n\n &:dir(rtl) {\n background-position-x: right $search-icon-padding;\n }\n }\n\n &:hover input {\n box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n }\n\n .search-inner-wrapper:active input,\n input:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n\n .search-button {\n background: $glyph-forward no-repeat center center;\n background-size: 16px 16px;\n border: 0;\n border-radius: 0 $border-radius $border-radius 0;\n -moz-context-properties: fill;\n fill: var(--newtab-search-icon-color);\n height: 100%;\n inset-inline-end: 0;\n position: absolute;\n width: $search-button-width;\n\n &:focus,\n &:hover {\n background-color: $grey-90-10;\n cursor: pointer;\n }\n\n &:active {\n background-color: $grey-90-20;\n }\n\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n }\n}\n\n@media (min-height: 701px) {\n .fixed-search {\n main {\n padding-top: 146px;\n }\n\n .search-wrapper {\n $search-header-bar-height: 95px;\n $search-height: 35px;\n $search-icon-size: 16px;\n $search-icon-padding: 16px;\n\n background-color: var(--newtab-search-header-background-color);\n border-bottom: solid 1px var(--newtab-border-secondary-color);\n height: $search-header-bar-height;\n left: 0;\n padding: 30px 0;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 9;\n\n .search-inner-wrapper {\n height: $search-height;\n }\n\n input {\n background-position-x: $search-icon-padding;\n background-size: $search-icon-size;\n\n &:dir(rtl) {\n background-position-x: right $search-icon-padding;\n }\n }\n }\n }\n}\n\n@at-root {\n // Adjust the style of the contentSearchUI-generated table\n .contentSearchSuggestionTable {\n background-color: var(--newtab-search-dropdown-color);\n border: 0;\n box-shadow: $context-menu-shadow;\n transform: translateY($textbox-shadow-size);\n\n .contentSearchHeader {\n background-color: var(--newtab-search-dropdown-header-color);\n color: var(--newtab-text-secondary-color);\n }\n\n .contentSearchHeader,\n .contentSearchSettingsButton {\n border-color: var(--newtab-border-secondary-color);\n }\n\n .contentSearchSuggestionsList {\n border: 0;\n }\n\n .contentSearchOneOffsTable {\n background-color: var(--newtab-search-dropdown-header-color);\n border-top: solid 1px var(--newtab-border-secondary-color);\n }\n\n .contentSearchSearchWithHeaderSearchText {\n color: var(--newtab-text-primary-color);\n }\n\n .contentSearchSuggestionsContainer {\n background-color: var(--newtab-search-dropdown-color);\n }\n\n .contentSearchSuggestionRow {\n &.selected {\n background: var(--newtab-element-hover-color);\n color: var(--newtab-text-primary-color);\n\n &:active {\n background: var(--newtab-element-active-color);\n }\n\n .historyIcon {\n fill: var(--newtab-icon-secondary-color);\n }\n }\n }\n\n .contentSearchOneOffsTable {\n .contentSearchSuggestionsContainer {\n background-color: var(--newtab-search-dropdown-header-color);\n }\n }\n\n .contentSearchOneOffItem {\n // Make the border slightly shorter by offsetting from the top and bottom\n $border-offset: 18%;\n\n background-image: none;\n border-image: linear-gradient(transparent $border-offset, var(--newtab-border-secondary-color) $border-offset, var(--newtab-border-secondary-color) 100% - $border-offset, transparent 100% - $border-offset) 1;\n border-inline-end: 1px solid;\n position: relative;\n\n &.selected {\n background: var(--newtab-element-hover-color);\n }\n\n &:active {\n background: var(--newtab-element-active-color);\n }\n }\n\n .contentSearchSettingsButton {\n &:hover {\n background: var(--newtab-element-hover-color);\n color: var(--newtab-text-primary-color);\n }\n }\n }\n\n .contentSearchHeaderRow > td > img,\n .contentSearchSuggestionRow > td > .historyIcon {\n margin-inline-start: 7px;\n margin-inline-end: 15px;\n }\n}\n", @@ -50,17 +50,17 @@ ".card-outer {\n @include context-menu-button;\n background: var(--newtab-card-background-color);\n border-radius: $border-radius;\n display: inline-block;\n height: $card-height;\n margin-inline-end: $base-gutter;\n position: relative;\n width: 100%;\n\n &.placeholder {\n background: transparent;\n\n .card {\n box-shadow: inset $inner-box-shadow;\n }\n\n .card-preview-image-outer,\n .card-context {\n display: none;\n }\n }\n\n .card {\n border-radius: $border-radius;\n box-shadow: var(--newtab-card-shadow);\n height: 100%;\n }\n\n > a {\n color: inherit;\n display: block;\n height: 100%;\n outline: none;\n position: absolute;\n width: 100%;\n\n &:-moz-any(.active, :focus) {\n .card {\n @include fade-in-card;\n }\n\n .card-title {\n color: var(--newtab-link-primary-color);\n }\n }\n }\n\n &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n @include fade-in-card;\n @include context-menu-button-hover;\n outline: none;\n\n .card-title {\n color: var(--newtab-link-primary-color);\n }\n\n .alternate ~ .card-host-name {\n display: none;\n }\n\n .card-host-name.alternate {\n display: block;\n }\n }\n\n .card-preview-image-outer {\n background-color: $grey-30;\n border-radius: $border-radius $border-radius 0 0;\n height: $card-preview-image-height;\n overflow: hidden;\n position: relative;\n\n [lwt-newtab-brighttext] & {\n background-color: $grey-60;\n }\n\n &::after {\n border-bottom: 1px solid var(--newtab-card-hairline-color);\n bottom: 0;\n content: '';\n position: absolute;\n width: 100%;\n }\n\n .card-preview-image {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n opacity: 0;\n transition: opacity 1s $photon-easing;\n width: 100%;\n\n &.loaded {\n opacity: 1;\n }\n }\n }\n\n .card-details {\n padding: 15px 16px 12px;\n }\n\n .card-text {\n max-height: 4 * $card-text-line-height + $card-title-margin;\n overflow: hidden;\n\n &.no-host-name,\n &.no-context {\n max-height: 5 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name.no-context {\n max-height: 6 * $card-text-line-height + $card-title-margin;\n }\n\n &:not(.no-description) .card-title {\n max-height: 3 * $card-text-line-height;\n overflow: hidden;\n }\n }\n\n .card-host-name {\n color: var(--newtab-text-secondary-color);\n font-size: 10px;\n overflow: hidden;\n padding-bottom: 4px;\n text-overflow: ellipsis;\n text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n white-space: nowrap;\n }\n\n .card-host-name.alternate { display: none; }\n\n .card-title {\n font-size: 14px;\n font-weight: 600;\n line-height: $card-text-line-height;\n margin: 0 0 $card-title-margin;\n word-wrap: break-word;\n }\n\n .card-description {\n font-size: 12px;\n line-height: $card-text-line-height;\n margin: 0;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .card-context {\n bottom: 0;\n color: var(--newtab-text-secondary-color);\n display: flex;\n font-size: 11px;\n inset-inline-start: 0;\n padding: 9px 16px 9px 14px;\n position: absolute;\n }\n\n .card-context-icon {\n fill: var(--newtab-text-secondary-color);\n height: 22px;\n margin-inline-end: 6px;\n }\n\n .card-context-label {\n flex-grow: 1;\n line-height: 22px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.normal-cards {\n .card-outer {\n // Wide layout styles\n @media (min-width: $break-point-widest) {\n $line-height: 23px;\n height: $card-height-large;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-large;\n }\n\n .card-details {\n padding: 13px 16px 12px;\n }\n\n .card-text {\n max-height: 6 * $line-height + $card-title-margin;\n }\n\n .card-host-name {\n font-size: 12px;\n padding-bottom: 5px;\n }\n\n .card-title {\n font-size: 17px;\n line-height: $line-height;\n margin-bottom: 0;\n }\n\n .card-text:not(.no-description) {\n .card-title {\n max-height: 3 * $line-height;\n }\n }\n\n .card-description {\n font-size: 15px;\n line-height: $line-height;\n }\n\n .card-context {\n bottom: 4px;\n font-size: 14px;\n }\n }\n }\n}\n\n.compact-cards {\n $card-detail-vertical-spacing: 12px;\n $card-title-font-size: 12px;\n\n .card-outer {\n height: $card-height-compact;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-compact;\n }\n\n .card-details {\n padding: $card-detail-vertical-spacing 16px;\n }\n\n .card-host-name {\n line-height: 10px;\n }\n\n .card-text {\n .card-title,\n &:not(.no-description) .card-title {\n font-size: $card-title-font-size;\n line-height: $card-title-font-size + 1;\n max-height: $card-title-font-size + 5;\n overflow: hidden;\n padding: 0 0 4px;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n\n .card-description {\n display: none;\n }\n\n .card-context {\n $icon-size: 16px;\n $container-size: 32px;\n background-color: var(--newtab-card-background-color);\n border-radius: $container-size / 2;\n clip-path: inset(-1px -1px $container-size - ($card-height-compact - $card-preview-image-height-compact - 2 * $card-detail-vertical-spacing));\n height: $container-size;\n width: $container-size;\n padding: ($container-size - $icon-size) / 2;\n top: $card-preview-image-height-compact - $icon-size;\n inset-inline-end: 12px;\n inset-inline-start: auto;\n\n &::after {\n border: 1px solid var(--newtab-card-hairline-color);\n border-bottom: 0;\n border-radius: ($container-size / 2) + 1 ($container-size / 2) + 1 0 0;\n content: '';\n position: absolute;\n height: ($container-size + 2) / 2;\n width: $container-size + 2;\n top: -1px;\n left: -1px;\n }\n\n .card-context-icon {\n margin-inline-end: 0;\n height: $icon-size;\n width: $icon-size;\n\n &.icon-bookmark-added {\n fill: $bookmark-icon-fill;\n }\n\n &.icon-download {\n fill: $download-icon-fill;\n }\n\n &.icon-pocket {\n fill: $pocket-icon-fill;\n }\n }\n\n .card-context-label {\n display: none;\n }\n }\n }\n\n @media not all and (min-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n}\n", ".manual-migration-container {\n color: var(--newtab-text-conditional-color);\n font-size: 13px;\n line-height: 15px;\n margin-bottom: $section-spacing;\n text-align: center;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n text-align: left;\n }\n\n p {\n margin: 0;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: flex;\n justify-content: space-between;\n }\n }\n\n .icon {\n display: none;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: block;\n fill: var(--newtab-icon-secondary-color);\n margin-inline-end: 6px;\n }\n }\n}\n\n.manual-migration-actions {\n border: 0;\n display: block;\n flex-wrap: nowrap;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n padding: 0;\n }\n\n button {\n align-self: center;\n height: 26px;\n margin: 0;\n margin-inline-start: 20px;\n padding: 0 12px;\n }\n}\n", ".collapsible-section {\n padding: $section-vertical-padding $section-horizontal-padding;\n transition-delay: 100ms;\n transition-duration: 100ms;\n transition-property: background-color;\n\n .section-title {\n font-size: $section-title-font-size;\n font-weight: bold;\n margin: 0;\n\n span {\n color: var(--newtab-section-header-text-color);\n display: inline-block;\n fill: var(--newtab-section-header-text-color);\n vertical-align: middle;\n }\n\n .click-target-container {\n vertical-align: top;\n\n .click-target {\n cursor: pointer;\n white-space: nowrap;\n }\n }\n\n .collapsible-arrow {\n margin-inline-start: 8px;\n margin-top: -1px;\n }\n }\n\n .section-top-bar {\n min-height: 19px;\n margin-bottom: 13px;\n position: relative;\n\n .context-menu-button {\n background: url('chrome://browser/skin/page-action.svg') no-repeat right center;\n border: 0;\n cursor: pointer;\n fill: var(--newtab-section-header-text-color);\n height: 100%;\n inset-inline-end: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition-duration: 200ms;\n transition-property: opacity;\n width: $context-menu-button-size;\n\n &:-moz-any(:active, :focus, :hover) {\n fill: $grey-90;\n opacity: 1;\n }\n }\n\n .context-menu {\n top: 16px;\n }\n\n @media (max-width: $break-point-widest + $card-width * 1.5) {\n @include context-menu-open-left;\n }\n }\n\n &:hover,\n &.active {\n .section-top-bar {\n .context-menu-button {\n opacity: 1;\n }\n }\n }\n\n &.active {\n background: var(--newtab-element-hover-color);\n border-radius: 4px;\n\n .section-top-bar {\n .context-menu-button {\n fill: var(--newtab-section-active-contextmenu-color);\n }\n }\n }\n\n .learn-more-link {\n font-size: 11px;\n margin-inline-start: 12px;\n\n a span {\n color: var(--newtab-link-secondary-color);\n }\n }\n\n .section-body-fallback {\n height: $card-height;\n }\n\n .section-body {\n // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n $horizontal-padding: 7px;\n margin: 0 (-$horizontal-padding);\n padding: 0 $horizontal-padding;\n\n &.animating {\n overflow: hidden;\n pointer-events: none;\n }\n }\n\n &.animation-enabled {\n .section-title {\n .collapsible-arrow {\n transition: transform 0.5s $photon-easing;\n }\n }\n\n .section-body {\n transition: max-height 0.5s $photon-easing;\n }\n }\n\n &.collapsed {\n .section-body {\n max-height: 0;\n overflow: hidden;\n }\n }\n}\n", - "\n.asrouter-admin {\n $border-color: var(--newtab-border-secondary-color);\n $monospace: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace;\n max-width: 996px;\n margin: 0 auto;\n font-size: 14px;\n // Reset .outer-wrapper styles\n display: inherit;\n padding: 0 0 92px;\n\n h1 {\n font-weight: 200;\n font-size: 32px;\n }\n\n h2 .button {\n font-size: 14px;\n padding: 6px 12px;\n margin-inline-start: 5px;\n margin-bottom: 0;\n }\n\n table {\n border-collapse: collapse;\n width: 100%;\n }\n\n .sourceLabel {\n background: $grey-20;\n padding: 2px 5px;\n border-radius: 3px;\n\n &.isDisabled {\n background: $email-input-invalid;\n color: $red-60;\n }\n }\n\n .message-item {\n &:first-child td {\n border-top: 1px solid $border-color;\n }\n\n td {\n vertical-align: top;\n border-bottom: 1px solid $border-color;\n padding: 8px;\n\n\n\n &.min {\n width: 1%;\n white-space: nowrap;\n }\n\n &:first-child {\n border-left: 1px solid $border-color;\n }\n\n &:last-child {\n border-right: 1px solid $border-color;\n }\n }\n\n &.current {\n .message-id span {\n background: $yellow-50;\n padding: 2px 5px;\n\n [lwt-newtab-brighttext] & {\n color: $black;\n }\n }\n }\n\n &.blocked {\n .message-id,\n .message-summary {\n opacity: 0.5;\n }\n\n .message-id {\n opacity: 0.5;\n }\n }\n\n .message-id {\n font-family: $monospace;\n font-size: 12px;\n }\n }\n\n pre {\n background: var(--newtab-textbox-background-color);\n margin: 0;\n padding: 8px;\n font-size: 12px;\n max-width: 750px;\n overflow: auto;\n font-family: $monospace;\n }\n\n .errorState {\n border: 1px solid $red-60;\n }\n}\n", - ".pocket-logged-in-cta {\n $max-button-width: 130px;\n $min-button-height: 18px;\n font-size: 13px;\n margin-inline-end: 20px;\n display: inline-block;\n\n .pocket-cta-button {\n background: $blue-60;\n letter-spacing: -0.34px;\n color: $white;\n border-radius: 4px;\n cursor: pointer;\n max-width: $max-button-width;\n // The button height is 2px taller than the rest of the cta text.\n // So I move it up by 1px to align with the rest of the cta text.\n margin-top: -1px;\n min-height: $min-button-height;\n padding: 0 8px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-size: 11px;\n margin-inline-end: 10px;\n }\n\n .cta-text {\n font-weight: normal;\n font-size: 13px;\n }\n\n .pocket-cta-button,\n .cta-text {\n vertical-align: top;\n }\n}\n", - ".more-recommendations {\n display: flex;\n align-items: center;\n white-space: nowrap;\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: var(--newtab-link-secondary-color);\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n}\n", + "\n.asrouter-admin {\n $border-color: var(--newtab-border-secondary-color);\n $monospace: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace;\n max-width: 996px;\n margin: 0 auto;\n font-size: 14px;\n // Reset .outer-wrapper styles\n display: inherit;\n padding: 0 0 92px;\n\n h1 {\n font-weight: 200;\n font-size: 32px;\n }\n\n h2 .button {\n font-size: 14px;\n padding: 6px 12px;\n margin-inline-start: 5px;\n margin-bottom: 0;\n }\n\n table {\n border-collapse: collapse;\n width: 100%;\n }\n\n .sourceLabel {\n background: $grey-20;\n padding: 2px 5px;\n border-radius: 3px;\n\n &.isDisabled {\n background: $email-input-invalid;\n color: $red-60;\n }\n }\n\n .message-item {\n &:first-child td {\n border-top: 1px solid $border-color;\n }\n\n td {\n vertical-align: top;\n border-bottom: 1px solid $border-color;\n padding: 8px;\n\n\n\n &.min {\n width: 1%;\n white-space: nowrap;\n }\n\n &:first-child {\n border-left: 1px solid $border-color;\n }\n\n &:last-child {\n border-right: 1px solid $border-color;\n }\n }\n\n &.current {\n .message-id span {\n background: $yellow-50;\n padding: 2px 5px;\n\n [lwt-newtab-brighttext] & {\n color: $black;\n }\n }\n }\n\n &.blocked {\n .message-id,\n .message-summary {\n opacity: 0.5;\n }\n\n .message-id {\n opacity: 0.5;\n }\n }\n\n .message-id {\n font-family: $monospace;\n font-size: 12px;\n }\n }\n\n .providerUrl {\n font-size: 12px;\n }\n\n pre {\n background: var(--newtab-textbox-background-color);\n margin: 0;\n padding: 8px;\n font-size: 12px;\n max-width: 750px;\n overflow: auto;\n font-family: $monospace;\n }\n\n .errorState {\n border: 1px solid $red-60;\n }\n}\n", + ".pocket-logged-in-cta {\n $max-button-width: 130px;\n $min-button-height: 18px;\n font-size: 13px;\n margin-inline-end: 20px;\n display: inline-block;\n\n .pocket-cta-button {\n background: $blue-60;\n letter-spacing: -0.34px;\n color: $white;\n border-radius: 4px;\n cursor: pointer;\n max-width: $max-button-width;\n // The button height is 2px taller than the rest of the cta text.\n // So I move it up by 1px to align with the rest of the cta text.\n margin-top: -1px;\n min-height: $min-button-height;\n padding: 0 8px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-size: 11px;\n margin-inline-end: 10px;\n }\n\n .cta-text {\n font-weight: normal;\n font-size: 13px;\n line-height: 1.230769231; // (16 / 13) –> 16px computed\n }\n\n .pocket-cta-button,\n .cta-text {\n vertical-align: top;\n }\n}\n", + ".more-recommendations {\n display: flex;\n align-items: center;\n white-space: nowrap;\n line-height: 1.230769231; // (16 / 13) -> 16px computed\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: var(--newtab-link-secondary-color);\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n}\n", ".ASRouterButton {\n font-weight: bold;\n white-space: nowrap;\n border-radius: 4px;\n border: 1px solid var(--newtab-border-secondary-color);\n background-color: var(--newtab-button-secondary-color);\n font-family: inherit;\n padding: 8px 15px;\n margin-inline-start: 12px;\n color: inherit;\n cursor: pointer;\n\n .tall & {\n margin-inline-start: 20px;\n }\n\n &.primary {\n border: 1px solid var(--newtab-button-primary-color);\n background-color: var(--newtab-button-primary-color);\n color: $grey-10;\n }\n\n &.secondary {\n background: var(--newtab-button-secondary-color);\n border: 1px solid var(--newtab-border-primary-color);\n font-size: 14px;\n font-weight: 600;\n }\n}\n", ".SnippetBaseContainer {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: var(--newtab-snippets-background-color);\n color: var(--newtab-text-primary-color);\n font-size: 12px;\n line-height: 16px;\n border-top: 1px solid var(--newtab-snippets-hairline-color);\n box-shadow: $shadow-secondary;\n display: flex;\n align-items: center;\n\n a {\n cursor: pointer;\n color: var(--newtab-link-primary-color);\n text-decoration: underline;\n\n [lwt-newtab-brighttext] & {\n font-weight: bold;\n }\n }\n\n .innerWrapper {\n margin: 0 auto;\n display: flex;\n align-items: center;\n padding: 12px $section-horizontal-padding;\n\n // This is to account for the block button on smaller screens\n padding-inline-end: 36px;\n @media (min-width: $break-point-large) {\n padding-inline-end: $section-horizontal-padding;\n }\n\n max-width: $wrapper-max-width-large;\n @media (min-width: $break-point-widest) {\n max-width: $wrapper-max-width-widest;\n }\n }\n\n .blockButton {\n display: none;\n background: none;\n border: 0;\n position: absolute;\n top: 50%;\n inset-inline-end: 12px;\n height: 16px;\n width: 16px;\n background-image: url('resource://activity-stream/data/content/assets/glyph-dismiss-16.svg');\n -moz-context-properties: fill;\n fill: var(--newtab-icon-primary-color);\n opacity: 0.5;\n margin-top: -8px;\n padding: 0;\n cursor: pointer;\n\n @media (min-width: 766px) {\n inset-inline-end: 24px;\n }\n }\n\n &:hover .blockButton {\n display: block;\n }\n\n .icon {\n height: 42px;\n width: 42px;\n margin-inline-end: 12px;\n flex-shrink: 0;\n }\n}\n\n.snippets-preview-banner {\n font-size: 15px;\n line-height: 42px;\n color: $grey-60-70;\n background: $grey-30-60;\n text-align: center;\n position: absolute;\n top: 0;\n width: 100%;\n\n span {\n vertical-align: middle;\n }\n}\n", ".activity-stream {\n &.modal-open {\n overflow: hidden;\n }\n}\n\n.modalOverlayOuter {\n background: $white;\n opacity: 0.93;\n height: 100%;\n position: fixed;\n top: 0;\n width: 100%;\n display: none;\n z-index: 1100;\n\n &.active {\n display: block;\n }\n}\n\n.modalOverlayInner {\n width: 960px;\n height: 570px;\n position: fixed;\n top: calc(50% - 285px); // halfway down minus half the height of the modal\n left: calc(50% - 480px); // halfway across minus half the width of the modal\n background: $white;\n box-shadow: 0 1px 15px 0 $black-30;\n border-radius: 4px;\n display: none;\n z-index: 1101;\n\n\n // modal takes over entire screen\n @media(max-width: 960px) {\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n box-shadow: none;\n border-radius: 0;\n }\n\n // if modal is short enough, add a vertical scroll bar\n @media(max-width: 850px) and (max-height: 730px) {\n overflow-y: scroll;\n }\n\n // if modal is narrow enough, add a vertical scroll bar\n @media(max-width: 650px) and (max-height: 600px) {\n overflow-y: scroll;\n }\n\n &.active {\n display: block;\n }\n\n h2 {\n color: $grey-60;\n text-align: center;\n font-weight: 200;\n margin-top: 30px;\n font-size: 28px;\n line-height: 37px;\n letter-spacing: -0.13px;\n\n @media(max-width: 960px) {\n margin-top: 100px;\n }\n\n @media(max-width: 850px) {\n margin-top: 30px;\n }\n }\n\n .footer {\n border-top: 1px solid $grey-30;\n height: 70px;\n width: 100%;\n position: absolute;\n bottom: 0;\n text-align: center;\n background-color: $white;\n\n // if modal is short enough, footer becomes sticky\n @media(max-width: 850px) and (max-height: 730px) {\n position: sticky;\n }\n\n // if modal is narrow enough, footer becomes sticky\n @media(max-width: 650px) and (max-height: 600px) {\n position: sticky;\n }\n\n .modalButton {\n margin-top: 20px;\n min-width: 150px;\n height: 30px;\n padding: 4px 30px 6px;\n font-size: 15px;\n\n &:focus,\n &.active,\n &:hover {\n box-shadow: 0 0 0 5px $grey-30;\n transition: box-shadow 150ms;\n }\n }\n }\n}\n", ".SimpleSnippet {\n &.tall {\n padding: 27px 0;\n }\n\n p em {\n color: $grey-90;\n font-style: normal;\n background: $yellow-50;\n }\n\n &.bold,\n &.takeover {\n .donation-form-url,\n .donation-amount {\n padding-top: 8px;\n padding-bottom: 8px;\n }\n }\n\n &.bold {\n height: 176px;\n\n .body {\n font-size: 14px;\n line-height: 20px;\n margin-bottom: 20px;\n }\n\n .icon {\n width: 71px;\n height: 71px;\n }\n }\n\n &.takeover {\n height: 344px;\n\n .body {\n font-size: 16px;\n line-height: 24px;\n margin-bottom: 35px;\n }\n\n .icon {\n width: 79px;\n height: 79px;\n }\n }\n\n .title {\n display: inline;\n font-size: inherit;\n margin: 0;\n }\n\n .titleIcon {\n background-repeat: no-repeat;\n background-size: 14px;\n height: 16px;\n width: 16px;\n margin-top: 2px;\n margin-inline-end: 2px;\n display: inline-block;\n vertical-align: top;\n }\n\n .body {\n display: inline;\n margin: 0;\n }\n\n &.tall .icon {\n margin-inline-end: 20px;\n }\n\n &.takeover,\n &.bold {\n .icon {\n margin-inline-end: 20px;\n }\n }\n\n .icon {\n align-self: flex-start;\n }\n\n .ASRouterButton {\n cursor: pointer;\n }\n}\n", - ".SubmitFormSnippet {\n flex-direction: column;\n flex: 1 1 100%;\n width: 100%;\n\n &.send_to_device_snippet {\n text-align: center;\n\n .message {\n font-size: 16px;\n }\n }\n\n .ASRouterButton {\n &.primary {\n flex: 1 1 0;\n }\n }\n\n .scene2Icon {\n width: 100%;\n\n img {\n width: 98px;\n display: inline-block;\n }\n }\n\n form {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .message {\n font-size: 14px;\n align-self: stretch;\n flex: 0 0 100%;\n\n p {\n margin-top: 0;\n }\n }\n\n .privacyNotice {\n color: var(--newtab-text-secondary-color);\n flex: 0 0 100%;\n\n p {\n margin-bottom: 0;\n }\n }\n\n .innerWrapper {\n max-width: 670px;\n flex-wrap: wrap;\n justify-items: center;\n padding-top: 40px;\n padding-bottom: 40px;\n }\n\n .footer {\n width: 100%;\n margin: 0 auto;\n text-align: right;\n background-color: var(--newtab-background-color);\n padding: 10px 0;\n\n .footer-content {\n margin: 0 auto;\n max-width: 768px;\n width: 100%;\n text-align: right;\n }\n }\n\n input {\n &.mainInput {\n border-radius: 3px;\n background-color: var(--newtab-textbox-background-color);\n border: $input-border;\n padding: 0 8px;\n height: 100%;\n font-size: 15px;\n width: 50%;\n\n &:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n }\n }\n}\n\n.submissionStatus {\n text-align: center;\n font-size: 14px;\n padding: 20px 0;\n\n .submitStatusTitle {\n font-size: 20px;\n }\n}\n", - ".onboardingMessageContainer {\n display: grid;\n grid-column-gap: 21px;\n grid-template-columns: auto auto auto;\n padding-left: 30px;\n padding-right: 30px;\n\n // at 850px, the cards go from vertical layout to horizontal layout\n @media(max-width: 850px) {\n grid-template-columns: none;\n grid-template-rows: auto auto auto;\n padding-left: 110px;\n padding-right: 110px;\n }\n}\n\n.onboardingMessage {\n height: 340px;\n text-align: center;\n padding: 13px;\n font-weight: 200;\n\n // at 850px, img floats left, content floats right next to it\n @media(max-width: 850px) {\n height: 170px;\n text-align: left;\n padding: 10px;\n border-bottom: 1px solid $grey-30;\n display: flex;\n margin-bottom: 11px;\n\n &:last-child {\n border: 0;\n }\n\n .onboardingContent {\n padding-left: 10px;\n height: 100%;\n\n > span > h3 {\n margin-top: 0;\n margin-bottom: 4px;\n font-weight: 400;\n }\n\n > span > p {\n margin-top: 0;\n line-height: 22px;\n font-size: 15px;\n }\n }\n }\n\n @media(max-width: 650px) {\n height: 250px;\n }\n\n .onboardingMessageImage {\n height: 100px;\n width: 120px;\n background-size: 120px;\n background-position: center center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n\n\n @media(max-width: 850px) {\n height: 75px;\n min-width: 80px;\n background-size: 80px;\n }\n\n &.addons {\n background-image: url('resource://activity-stream/data/content/assets/illustration-addons@2x.png');\n }\n\n &.privatebrowsing {\n background-image: url('resource://activity-stream/data/content/assets/illustration-privatebrowsing@2x.png');\n }\n\n &.screenshots {\n background-image: url('resource://activity-stream/data/content/assets/illustration-screenshots@2x.png');\n }\n\n &.gift {\n background-image: url('resource://activity-stream/data/content/assets/illustration-gift@2x.png');\n }\n }\n\n .onboardingContent {\n height: 175px;\n\n > span > h3 {\n color: $grey-90;\n margin-bottom: 8px;\n font-weight: 400;\n }\n\n > span > p {\n color: $grey-60;\n margin-top: 0;\n height: 180px;\n margin-bottom: 12px;\n font-size: 15px;\n line-height: 22px;\n\n @media(max-width: 650px) {\n margin-bottom: 0;\n height: 160px;\n }\n }\n }\n\n .onboardingButton {\n background-color: $grey-90-10;\n border: 0;\n width: 150px;\n height: 30px;\n margin-bottom: 23px;\n padding: 4px 0 6px;\n font-size: 15px;\n\n // at 850px, the button shimmies down and to the right\n @media(max-width: 850px) {\n float: right;\n margin-top: -105px;\n margin-inline-end: -10px;\n }\n\n @media(max-width: 650px) {\n float: none;\n }\n\n &:focus,\n &.active,\n &:hover {\n box-shadow: 0 0 0 5px $grey-30;\n transition: box-shadow 150ms;\n }\n }\n\n\n &::before {\n content: '';\n height: 230px;\n width: 1px;\n position: absolute;\n background-color: $grey-30;\n margin-top: 40px;\n margin-inline-start: 215px;\n\n // at 850px, the line goes from vertical to horizontal\n @media(max-width: 850px) {\n content: none;\n }\n }\n\n &:last-child::before {\n content: none;\n }\n}\n", + ".SubmitFormSnippet {\n flex-direction: column;\n flex: 1 1 100%;\n width: 100%;\n\n &.send_to_device_snippet {\n text-align: center;\n\n .message {\n font-size: 16px;\n }\n }\n\n .ASRouterButton {\n &.primary {\n flex: 1 1 0;\n }\n }\n\n .scene2Icon {\n width: 100%;\n\n img {\n width: 98px;\n display: inline-block;\n }\n }\n\n .scene2Title {\n font-size: inherit;\n margin: 0;\n font-weight: bold;\n display: inline;\n }\n\n form {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .message {\n font-size: 14px;\n align-self: stretch;\n flex: 0 0 100%;\n\n p {\n margin-top: 0;\n }\n }\n\n .privacyNotice {\n color: var(--newtab-text-secondary-color);\n flex: 0 0 100%;\n\n p {\n margin-bottom: 0;\n }\n }\n\n .innerWrapper {\n max-width: 670px;\n flex-wrap: wrap;\n justify-items: center;\n padding-top: 40px;\n padding-bottom: 40px;\n }\n\n .footer {\n width: 100%;\n margin: 0 auto;\n text-align: right;\n background-color: var(--newtab-background-color);\n padding: 10px 0;\n\n .footer-content {\n margin: 0 auto;\n max-width: 768px;\n width: 100%;\n text-align: right;\n }\n }\n\n input {\n &.mainInput {\n border-radius: 3px;\n background-color: var(--newtab-textbox-background-color);\n border: $input-border;\n padding: 0 8px;\n height: 100%;\n font-size: 15px;\n width: 50%;\n\n &:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n }\n }\n}\n\n.submissionStatus {\n text-align: center;\n font-size: 14px;\n padding: 20px 0;\n\n .submitStatusTitle {\n font-size: 20px;\n }\n}\n", + ".onboardingMessageContainer {\n display: grid;\n grid-column-gap: 21px;\n grid-template-columns: auto auto auto;\n padding-left: 30px;\n padding-right: 30px;\n\n // at 850px, the cards go from vertical layout to horizontal layout\n @media(max-width: 850px) {\n grid-template-columns: none;\n grid-template-rows: auto auto auto;\n padding-left: 110px;\n padding-right: 110px;\n }\n}\n\n.onboardingMessage {\n height: 340px;\n text-align: center;\n padding: 13px;\n font-weight: 200;\n\n // at 850px, img floats left, content floats right next to it\n @media(max-width: 850px) {\n height: 170px;\n text-align: left;\n padding: 10px;\n border-bottom: 1px solid $grey-30;\n display: flex;\n margin-bottom: 11px;\n\n &:last-child {\n border: 0;\n }\n\n .onboardingContent {\n padding-left: 10px;\n height: 100%;\n\n > span > h3 {\n margin-top: 0;\n margin-bottom: 4px;\n font-weight: 400;\n }\n\n > span > p {\n margin-top: 0;\n line-height: 22px;\n font-size: 15px;\n }\n }\n }\n\n @media(max-width: 650px) {\n height: 250px;\n }\n\n .onboardingMessageImage {\n height: 100px;\n width: 120px;\n background-size: 120px;\n background-position: center center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n\n\n @media(max-width: 850px) {\n height: 75px;\n min-width: 80px;\n background-size: 80px;\n }\n\n &.addons {\n background-image: url('resource://activity-stream/data/content/assets/illustration-addons@2x.png');\n }\n\n &.privatebrowsing {\n background-image: url('resource://activity-stream/data/content/assets/illustration-privatebrowsing@2x.png');\n }\n\n &.screenshots {\n background-image: url('resource://activity-stream/data/content/assets/illustration-screenshots@2x.png');\n }\n\n &.gift {\n background-image: url('resource://activity-stream/data/content/assets/illustration-gift@2x.png');\n }\n\n &.sync {\n background-image: url('resource://activity-stream/data/content/assets/illustration-sync@2x.png');\n }\n }\n\n .onboardingContent {\n height: 175px;\n\n > span > h3 {\n color: $grey-90;\n margin-bottom: 8px;\n font-weight: 400;\n }\n\n > span > p {\n color: $grey-60;\n margin-top: 0;\n height: 180px;\n margin-bottom: 12px;\n font-size: 15px;\n line-height: 22px;\n\n @media(max-width: 650px) {\n margin-bottom: 0;\n height: 160px;\n }\n }\n }\n\n .onboardingButton {\n background-color: $grey-90-10;\n border: 0;\n width: 150px;\n height: 30px;\n margin-bottom: 23px;\n padding: 4px 0 6px;\n font-size: 15px;\n\n // at 850px, the button shimmies down and to the right\n @media(max-width: 850px) {\n float: right;\n margin-top: -105px;\n margin-inline-end: -10px;\n }\n\n @media(max-width: 650px) {\n float: none;\n }\n\n &:focus,\n &.active,\n &:hover {\n box-shadow: 0 0 0 5px $grey-30;\n transition: box-shadow 150ms;\n }\n }\n\n\n &::before {\n content: '';\n height: 230px;\n width: 1px;\n position: absolute;\n background-color: $grey-30;\n margin-top: 40px;\n margin-inline-start: 215px;\n\n // at 850px, the line goes from vertical to horizontal\n @media(max-width: 850px) {\n content: none;\n }\n }\n\n &:last-child::before {\n content: none;\n }\n}\n", ".EOYSnippetForm {\n margin-top: 12px;\n align-self: start;\n font-size: 12px;\n display: flex;\n align-items: center;\n\n .donation-amount,\n .donation-form-url {\n white-space: nowrap;\n font-size: 14px;\n padding: 5px 14px;\n border-radius: 2px;\n }\n\n .donation-amount {\n color: $grey-90;\n margin-inline-end: 18px;\n border: 1px solid $grey-40;\n background: $grey-10;\n cursor: pointer;\n }\n\n input {\n &[type='radio'] {\n opacity: 0;\n margin-inline-end: -18px;\n\n &:checked+.donation-amount {\n background: $grey-50;\n color: $white;\n border: 1px solid $grey-60;\n }\n }\n }\n\n .monthly-checkbox-container {\n width: 100%;\n }\n\n .donation-form-url {\n margin-inline-start: 18px;\n background-color: $snippets-donation-button-bg;\n border: 0;\n color: $white;\n align-self: flex-end;\n display: flex;\n cursor: pointer;\n }\n}\n" ], "names": [], - "mappings": "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" + "mappings": "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" } \ No newline at end of file diff --git a/browser/components/newtab/css/activity-stream-windows.css b/browser/components/newtab/css/activity-stream-windows.css index 7c39667b94b57..8e0e2de647649 100644 --- a/browser/components/newtab/css/activity-stream-windows.css +++ b/browser/components/newtab/css/activity-stream-windows.css @@ -913,10 +913,6 @@ main { .top-stories-bottom-container a.more-recommendations { font-weight: normal; font-size: 13px; } - @media (min-width: 866px) { - .top-stories-bottom-container { - line-height: 16px; - height: 16px; } } @media (min-width: 1122px) { .sections-list .normal-cards .section-list { @@ -1840,6 +1836,8 @@ a.firstrun-link { .asrouter-admin .message-item .message-id { font-family: "SF Mono", "Monaco", "Inconsolata", "Fira Mono", "Droid Sans Mono", "Source Code Pro", monospace; font-size: 12px; } + .asrouter-admin .providerUrl { + font-size: 12px; } .asrouter-admin pre { background: var(--newtab-textbox-background-color); margin: 0; @@ -1872,7 +1870,8 @@ a.firstrun-link { margin-inline-end: 10px; } .pocket-logged-in-cta .cta-text { font-weight: normal; - font-size: 13px; } + font-size: 13px; + line-height: 1.230769231; } .pocket-logged-in-cta .pocket-cta-button, .pocket-logged-in-cta .cta-text { vertical-align: top; } @@ -1880,7 +1879,8 @@ a.firstrun-link { .more-recommendations { display: flex; align-items: center; - white-space: nowrap; } + white-space: nowrap; + line-height: 1.230769231; } .more-recommendations::after { background: url("../data/content/assets/topic-show-more-12.svg") no-repeat center center; content: ''; @@ -2148,6 +2148,11 @@ a.firstrun-link { .SubmitFormSnippet .scene2Icon img { width: 98px; display: inline-block; } + .SubmitFormSnippet .scene2Title { + font-size: inherit; + margin: 0; + font-weight: bold; + display: inline; } .SubmitFormSnippet form { display: flex; flex-direction: column; @@ -2262,6 +2267,8 @@ a.firstrun-link { background-image: url("resource://activity-stream/data/content/assets/illustration-screenshots@2x.png"); } .onboardingMessage .onboardingMessageImage.gift { background-image: url("resource://activity-stream/data/content/assets/illustration-gift@2x.png"); } + .onboardingMessage .onboardingMessageImage.sync { + background-image: url("resource://activity-stream/data/content/assets/illustration-sync@2x.png"); } .onboardingMessage .onboardingContent { height: 175px; } .onboardingMessage .onboardingContent > span > h3 { diff --git a/browser/components/newtab/css/activity-stream-windows.css.map b/browser/components/newtab/css/activity-stream-windows.css.map index 1771653cb8f32..93ae87ae3fa37 100644 --- a/browser/components/newtab/css/activity-stream-windows.css.map +++ b/browser/components/newtab/css/activity-stream-windows.css.map @@ -41,7 +41,7 @@ ".outer-wrapper {\n color: var(--newtab-text-primary-color);\n display: flex;\n flex-grow: 1;\n min-height: 100vh;\n padding: ($section-spacing + $section-vertical-padding) $base-gutter $base-gutter;\n\n &.fixed-to-top {\n display: block;\n }\n\n &.only-search {\n display: block;\n padding-top: 134px;\n }\n\n a {\n color: var(--newtab-link-primary-color);\n }\n}\n\nmain {\n margin: auto;\n // Offset the snippets container so things at the bottom of the page are still\n // visible when snippets are visible. Adjust for other spacing.\n padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n\n @media (min-width: $break-point-widest) {\n width: $wrapper-max-width-widest;\n }\n\n section {\n margin-bottom: $section-spacing;\n position: relative;\n }\n\n .hide-main & {\n visibility: hidden;\n }\n\n}\n\n.base-content-fallback {\n // Make the error message be centered against the viewport\n height: 100vh;\n}\n\n.body-wrapper {\n // Hide certain elements so the page structure is fixed, e.g., placeholders,\n // while avoiding flashes of changing content, e.g., icons and text\n $selectors-to-hide: '\n .section-title,\n .sections-list .section:last-of-type,\n .topics\n ';\n\n #{$selectors-to-hide} {\n opacity: 0;\n }\n\n &.on {\n #{$selectors-to-hide} {\n opacity: 1;\n }\n }\n}\n\n.non-collapsible-section {\n padding: 0 $section-horizontal-padding;\n}\n\n.prefs-button {\n button {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n fill: var(--newtab-icon-primary-color);\n inset-inline-end: 15px;\n padding: 15px;\n position: fixed;\n top: 15px;\n z-index: 1000;\n\n &:hover,\n &:focus {\n background-color: var(--newtab-element-hover-color);\n }\n\n &:active {\n background-color: var(--newtab-element-active-color);\n }\n }\n}\n", ".as-error-fallback {\n align-items: center;\n border-radius: $border-radius;\n box-shadow: inset $inner-box-shadow;\n color: var(--newtab-text-conditional-color);\n display: flex;\n flex-direction: column;\n font-size: $error-fallback-font-size;\n justify-content: center;\n justify-items: center;\n line-height: $error-fallback-line-height;\n\n a {\n color: var(--newtab-text-conditional-color);\n text-decoration: underline;\n }\n}\n", "$top-sites-size: $grid-unit;\n$top-sites-border-radius: 6px;\n$top-sites-title-height: 30px;\n$top-sites-vertical-space: 8px;\n$screenshot-size: cover;\n$rich-icon-size: 96px;\n$default-icon-wrapper-size: 42px;\n$default-icon-size: 32px;\n$default-icon-offset: 6px;\n$half-base-gutter: $base-gutter / 2;\n$hover-transition-duration: 150ms;\n\n.top-sites {\n // Take back the margin from the bottom row of vertical spacing as well as the\n // extra whitespace below the title text as it's vertically centered.\n margin-bottom: $section-spacing - ($top-sites-vertical-space + $top-sites-title-height / 3);\n}\n\n.top-sites-list {\n list-style: none;\n margin: 0 (-$half-base-gutter);\n padding: 0;\n\n // Two columns\n @media (max-width: $break-point-medium) {\n :nth-child(2n+1) {\n @include context-menu-open-middle;\n }\n\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n // Four columns\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n :nth-child(4n+3) {\n @include context-menu-open-left;\n }\n }\n\n // Six columns\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(6n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n :nth-child(6n+5) {\n @include context-menu-open-left;\n }\n }\n\n // Eight columns\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(8n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n :nth-child(8n+7) {\n @include context-menu-open-left;\n }\n }\n\n @media (max-width: $break-point-medium) {\n .hide-for-narrow {\n display: none;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n\n li {\n margin: 0 0 $top-sites-vertical-space;\n }\n\n &:not(.dnd-active) {\n .top-site-outer:-moz-any(.active, :focus, :hover) {\n .tile {\n @include fade-in;\n }\n\n @include context-menu-button-hover;\n }\n }\n}\n\n// container for drop zone\n.top-site-outer {\n padding: 0 $half-base-gutter;\n display: inline-block;\n\n // container for context menu\n .top-site-inner {\n position: relative;\n\n > a {\n color: inherit;\n display: block;\n outline: none;\n\n &:-moz-any(.active, :focus) {\n .tile {\n @include fade-in;\n }\n }\n }\n }\n\n @include context-menu-button;\n\n .tile { // sass-lint:disable-block property-sort-order\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow, var(--newtab-card-shadow);\n cursor: pointer;\n height: $top-sites-size;\n position: relative;\n width: $top-sites-size;\n\n // For letter fallback\n align-items: center;\n color: var(--newtab-text-secondary-color);\n display: flex;\n font-size: 32px;\n font-weight: 200;\n justify-content: center;\n text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n transition: box-shadow $hover-transition-duration;\n\n &::before {\n content: attr(data-fallback);\n }\n }\n\n .screenshot {\n background-color: $white;\n background-position: top left;\n background-size: $screenshot-size;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition: opacity 1s;\n width: 100%;\n\n &.active {\n opacity: 1;\n }\n }\n\n // Some common styles for all icons (rich and default) in top sites\n .top-site-icon {\n background-color: var(--newtab-topsites-background-color);\n background-position: center center;\n background-repeat: no-repeat;\n border-radius: $top-sites-border-radius;\n box-shadow: var(--newtab-topsites-icon-shadow);\n position: absolute;\n }\n\n .rich-icon {\n background-size: cover;\n height: 100%;\n inset-inline-start: 0;\n top: 0;\n width: 100%;\n }\n\n .default-icon,\n .search-topsite {\n background-size: $default-icon-size;\n bottom: -$default-icon-offset;\n height: $default-icon-wrapper-size;\n inset-inline-end: -$default-icon-offset;\n width: $default-icon-wrapper-size;\n\n // for corner letter fallback\n align-items: center;\n display: flex;\n font-size: 20px;\n justify-content: center;\n\n &[data-fallback]::before {\n content: attr(data-fallback);\n }\n }\n\n .search-topsite {\n background-image: url('#{$image-path}glyph-search-16.svg');\n background-size: 26px;\n background-color: $blue-60;\n border-radius: $default-icon-wrapper-size;\n -moz-context-properties: fill;\n fill: $white;\n box-shadow: var(--newtab-card-shadow);\n transition-duration: $hover-transition-duration;\n transition-property: background-size, bottom, inset-inline-end, height, width;\n }\n\n &:hover .search-topsite {\n $hover-icon-wrapper-size: $default-icon-wrapper-size + 4;\n $hover-icon-offset: -$default-icon-offset - 3;\n\n background-size: 28px;\n border-radius: $hover-icon-wrapper-size;\n bottom: $hover-icon-offset;\n height: $hover-icon-wrapper-size;\n inset-inline-end: $hover-icon-offset;\n width: $hover-icon-wrapper-size;\n }\n\n // We want all search shortcuts to have a white background in case they have transparency.\n &.search-shortcut {\n .rich-icon {\n background-color: $white;\n }\n }\n\n .title {\n color: var(--newtab-topsites-label-color);\n font: message-box;\n height: $top-sites-title-height;\n line-height: $top-sites-title-height;\n text-align: center;\n width: $top-sites-size;\n position: relative;\n\n .icon {\n fill: var(--newtab-icon-tertiary-color);\n inset-inline-start: 0;\n position: absolute;\n top: 10px;\n }\n\n span {\n height: $top-sites-title-height;\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.pinned {\n span {\n padding: 0 13px;\n }\n }\n }\n\n .edit-button {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.placeholder {\n .tile {\n box-shadow: inset $inner-box-shadow;\n }\n\n .screenshot {\n display: none;\n }\n }\n\n &.dragged {\n .tile {\n background: $grey-20;\n box-shadow: none;\n\n *,\n &::before {\n display: none;\n }\n }\n\n .title {\n visibility: hidden;\n }\n }\n}\n\n.edit-topsites-wrapper {\n .modal {\n box-shadow: $shadow-secondary;\n left: 0;\n margin: 0 auto;\n max-height: calc(100% - 40px);\n overflow-y: auto;\n overflow-x: hidden;\n position: fixed;\n right: 0;\n top: 40px;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n }\n}\n\n.topsite-form {\n $form-width: 300px;\n $form-spacing: 32px;\n\n .section-title {\n font-size: 16px;\n margin: 0 0 16px;\n }\n\n .form-input-container {\n max-width: $form-width + 3 * $form-spacing + $rich-icon-size;\n margin: 0 auto;\n padding: $form-spacing;\n\n .top-site-outer {\n pointer-events: none;\n }\n }\n\n .search-shortcuts-container {\n max-width: 700px;\n margin: 0 auto;\n padding: $form-spacing;\n\n > div {\n margin-inline-end: -39px;\n }\n\n .top-site-outer {\n margin-inline-start: 0;\n margin-inline-end: 39px;\n }\n }\n\n .top-site-outer {\n padding: 0;\n margin: 24px 0 0;\n margin-inline-start: $form-spacing;\n }\n\n .fields-and-preview {\n display: flex;\n }\n\n label {\n font-size: $section-title-font-size;\n }\n\n .form-wrapper {\n width: 100%;\n\n .field {\n position: relative;\n\n .icon-clear-input {\n position: absolute;\n transform: translateY(-50%);\n top: 50%;\n inset-inline-end: 8px;\n }\n }\n\n .url {\n input:dir(ltr) {\n padding-right: 32px;\n }\n\n input:dir(rtl) {\n padding-left: 32px;\n\n &:not(:placeholder-shown) {\n direction: ltr;\n text-align: right;\n }\n }\n }\n\n .enable-custom-image-input {\n display: inline-block;\n font-size: 13px;\n margin-top: 4px;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n .custom-image-input-container {\n margin-top: 4px;\n\n .loading-container {\n width: 16px;\n height: 16px;\n overflow: hidden;\n position: absolute;\n transform: translateY(-50%);\n top: 50%;\n inset-inline-end: 8px;\n }\n\n // This animation is derived from Firefox's tab loading animation\n // See https://searchfox.org/mozilla-central/rev/b29daa46443b30612415c35be0a3c9c13b9dc5f6/browser/themes/shared/tabs.inc.css#208-216\n .loading-animation {\n @keyframes tab-throbber-animation {\n 100% { transform: translateX(-960px); }\n }\n\n @keyframes tab-throbber-animation-rtl {\n 100% { transform: translateX(960px); }\n }\n\n width: 960px;\n height: 16px;\n -moz-context-properties: fill;\n fill: $blue-50;\n background-image: url('chrome://browser/skin/tabbrowser/loading.svg');\n animation: tab-throbber-animation 1.05s steps(60) infinite;\n\n &:dir(rtl) {\n animation-name: tab-throbber-animation-rtl;\n }\n }\n }\n\n input {\n &[type='text'] {\n background-color: var(--newtab-textbox-background-color);\n border: $input-border;\n margin: 8px 0;\n padding: 0 8px;\n height: 32px;\n width: 100%;\n font-size: 15px;\n\n &:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n\n &[disabled] {\n border: $input-border;\n box-shadow: none;\n opacity: 0.4;\n }\n }\n }\n\n .invalid {\n input {\n &[type='text'] {\n border: $input-error-border;\n box-shadow: $input-error-boxshadow;\n }\n }\n }\n\n .error-tooltip {\n animation: fade-up-tt 450ms;\n background: $red-60;\n border-radius: 2px;\n color: $white;\n inset-inline-start: 3px;\n padding: 5px 12px;\n position: absolute;\n top: 44px;\n z-index: 1;\n\n // tooltip caret\n &::before {\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n inset-inline-start: 12px;\n position: absolute;\n text-indent: -999px;\n top: -7px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n }\n }\n\n .actions {\n justify-content: flex-end;\n\n button {\n margin-inline-start: 10px;\n margin-inline-end: 0;\n }\n }\n\n @media (max-width: $break-point-medium) {\n .fields-and-preview {\n flex-direction: column;\n\n .top-site-outer {\n margin-inline-start: 0;\n }\n }\n }\n\n // prevent text selection of keyword label when clicking to select\n .title {\n -moz-user-select: none;\n }\n\n // CSS styled checkbox\n [type='checkbox']:not(:checked),\n [type='checkbox']:checked {\n inset-inline-start: -9999px;\n position: absolute;\n }\n\n [type='checkbox']:not(:checked) + label,\n [type='checkbox']:checked + label {\n cursor: pointer;\n display: block;\n position: relative;\n }\n\n $checkbox-offset: -8px;\n\n [type='checkbox']:not(:checked) + label::before,\n [type='checkbox']:checked + label::before {\n background: var(--newtab-background-color);\n border: $input-border;\n border-radius: $border-radius;\n content: '';\n height: 21px;\n left: $checkbox-offset;\n position: absolute;\n top: $checkbox-offset;\n width: 21px;\n z-index: 1;\n\n [dir='rtl'] & {\n left: auto;\n right: $checkbox-offset;\n }\n }\n\n // checkmark\n [type='checkbox']:not(:checked) + label::after,\n [type='checkbox']:checked + label::after {\n background: url('chrome://global/skin/icons/check.svg') no-repeat center center; // sass-lint:disable-line no-url-domains\n content: '';\n height: 21px;\n left: $checkbox-offset;\n position: absolute;\n top: $checkbox-offset;\n width: 21px;\n -moz-context-properties: fill;\n fill: var(--newtab-link-primary-color);\n z-index: 2;\n\n [dir='rtl'] & {\n left: auto;\n right: $checkbox-offset;\n }\n }\n\n // when selected, highlight the tile\n [type='checkbox']:checked + label {\n .tile {\n box-shadow: 0 0 0 2px var(--newtab-link-primary-color);\n }\n }\n\n // checkmark changes\n [type='checkbox']:not(:checked) + label::after {\n opacity: 0;\n }\n\n [type='checkbox']:checked + label::after {\n opacity: 1;\n }\n\n // accessibility\n [type='checkbox']:checked:focus + label::before,\n [type='checkbox']:not(:checked):focus + label::before {\n border: 1px dotted var(--newtab-link-primary-color);\n }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n 0% {\n opacity: 0;\n transform: translateY(15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", - ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n // 3n for normal cards, 4n for compact cards\n :nth-child(3n),\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: var(--newtab-icon-secondary-color);\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: var(--newtab-text-primary-color);\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n }\n }\n}\n\n.top-stories-bottom-container {\n color: var(--newtab-section-navigation-text-color);\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n display: flex;\n justify-content: space-between;\n\n a {\n color: var(--newtab-link-secondary-color);\n font-weight: bold;\n\n &.more-recommendations {\n font-weight: normal;\n font-size: 13px;\n }\n }\n\n @media (min-width: $break-point-large) {\n line-height: 16px;\n height: 16px;\n }\n}\n\n@media (min-width: $break-point-widest) {\n .sections-list {\n // Compact cards stay the same size but normal cards get bigger.\n .normal-cards {\n .section-list {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", + ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n // 3n for normal cards, 4n for compact cards\n :nth-child(3n),\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: var(--newtab-icon-secondary-color);\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: var(--newtab-text-primary-color);\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n }\n }\n}\n\n.top-stories-bottom-container {\n color: var(--newtab-section-navigation-text-color);\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n display: flex;\n justify-content: space-between;\n\n a {\n color: var(--newtab-link-secondary-color);\n font-weight: bold;\n\n &.more-recommendations {\n font-weight: normal;\n font-size: 13px;\n }\n }\n}\n\n@media (min-width: $break-point-widest) {\n .sections-list {\n // Compact cards stay the same size but normal cards get bigger.\n .normal-cards {\n .section-list {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", ".activity-stream {\n &.welcome {\n overflow: hidden;\n }\n\n &:not(.welcome) {\n .overlay-wrapper {\n display: none;\n }\n }\n}\n\n.overlay-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n z-index: 21000;\n transition: opacity 0.4s;\n opacity: 0;\n overflow-x: auto;\n\n &.show {\n transition: none;\n opacity: 1;\n\n .firstrun-sign-in {\n transition: opacity 1.5s, transform 1.5s;\n transition-delay: 0.2s;\n transform: translateY(-50%) scale(1);\n opacity: 1;\n\n @media screen and (max-width: 790px) {\n float: none;\n margin: auto;\n top: 190px;\n margin-bottom: 100px;\n }\n }\n\n .firstrun-firefox-logo {\n transition: opacity 2.3s;\n opacity: 1;\n }\n\n .firstrun-title,\n .firstrun-content,\n .firstrun-link {\n transition: transform 0.5s, opacity 0.8s;\n transform: translateY(0);\n opacity: 1;\n }\n\n .firstrun-title {\n transition-delay: 0.2s;\n }\n\n .firstrun-content {\n transition-delay: 0.4s;\n }\n\n .firstrun-link {\n transition-delay: 0.6s;\n }\n\n .fxaccounts-container {\n transition: none;\n opacity: 1;\n }\n }\n}\n\n.background,\nbody.hide-main { // sass-lint:disable-line no-qualifying-elements\n width: 100%;\n height: 100%;\n display: block;\n background-image: url('#{$image-path}fox-tail.png'), $about-welcome-gradient;\n background-position-x: center;\n background-position-y: -200px, top;\n background-repeat: no-repeat;\n background-size: cover;\n position: fixed;\n}\n\n.firstrun-sign-in {\n transform: translateY(-50%) scale(0.8);\n position: relative;\n top: 50%;\n width: 358px;\n opacity: 0;\n background-color: $white;\n float: inline-end;\n color: $grey-90;\n text-align: center;\n padding: 10px;\n\n form {\n position: relative;\n }\n\n .extra-links {\n font-size: 12px;\n max-width: 340px;\n margin: 17px 50px;\n color: $about-welcome-extra-links;\n cursor: default;\n\n a {\n color: $grey-50;\n cursor: pointer;\n text-decoration: underline;\n }\n\n a:hover,\n a:active,\n a:focus {\n color: $blue-50;\n }\n }\n\n .email-input {\n box-shadow: none;\n margin: auto;\n width: 244px;\n display: block;\n height: 40px;\n padding-inline-start: 20px;\n border: 1px solid $grey-50;\n border-radius: 2px;\n font-size: 16px;\n transition: border-color 150ms, box-shadow 150ms;\n\n &:hover {\n border-color: $grey-90;\n }\n\n &:focus {\n border-color: $blue-50;\n box-shadow: 0 0 0 3px $email-input-focus;\n }\n\n &.invalid {\n border-color: $red-60;\n }\n\n &.invalid:focus {\n box-shadow: 0 0 0 3px $email-input-invalid;\n }\n }\n\n .form-header {\n font-size: 22px;\n margin: 15px auto;\n }\n\n .form-header .sub-header {\n font-size: 14px;\n margin-top: 4px;\n display: block;\n }\n\n button {\n display: block;\n cursor: pointer;\n margin: 10px auto 0;\n }\n\n .continue-button {\n font-size: 18px;\n height: 43px;\n width: 250px;\n padding: 8px 0;\n border: 0;\n border-radius: 4px;\n color: $white;\n background-color: $blue-60;\n transition: background-color 150ms;\n\n &:not([disabled]):active,\n &:not([disabled]):hover {\n background: $blue-70;\n border-color: $blue-80;\n }\n }\n\n .skip-button {\n font-size: 13px;\n margin-top: 20px;\n margin-bottom: 20px;\n background-color: $grey-10;\n color: $blue-50;\n border: 1px solid $blue-50;\n border-radius: 2px;\n min-height: 24px;\n padding: 5px 10px;\n transition: background-color 150ms, color 150ms, border-color 150ms;\n\n &[disabled] {\n background-color: $grey-20;\n border-color: $grey-40;\n color: $grey-50;\n cursor: default;\n opacity: 0.5;\n }\n\n &:not([disabled]):hover {\n background-color: $blue-50;\n border-color: $blue-60;\n color: $white;\n }\n }\n}\n\n.firstrun-left-divider {\n position: relative;\n float: inline-start;\n clear: both;\n width: 435px;\n\n @media screen and (max-width: 825px) {\n width: 400px;\n }\n\n @media screen and (max-width: 790px) {\n margin: auto;\n float: none;\n width: 352px;\n text-align: center;\n }\n}\n\n.firstrun-content {\n line-height: 1.5;\n margin-bottom: 48px;\n max-width: 352px;\n background: url('#{$image-path}sync-devices.svg') bottom center no-repeat;\n padding-bottom: 210px;\n}\n\na.firstrun-link { // sass-lint:disable-line no-qualifying-elements\n color: $white;\n display: block;\n text-decoration: underline;\n\n &:hover,\n &:active,\n &:focus {\n color: $white;\n }\n}\n\n.firstrun-title {\n background: url('chrome://branding/content/about-logo.png') top left no-repeat;\n background-size: 90px 90px;\n margin: 40px 0 10px;\n padding-top: 110px;\n\n @media screen and (max-width: 790px) {\n background: url('chrome://branding/content/about-logo.png') top center no-repeat;\n background-size: 90px 90px;\n }\n\n &:dir(rtl) {\n background-position: top right;\n }\n}\n\n.fxaccounts-container {\n position: absolute;\n bottom: 0;\n right: 0;\n top: 0;\n left: 0;\n color: $white;\n height: 515px;\n margin: auto;\n width: 819px;\n z-index: 10;\n transition: opacity 0.3s;\n opacity: 0;\n\n @media screen and (max-width: 825px) {\n width: 784px;\n }\n\n @media screen and (max-width: 790px) {\n width: auto;\n height: 100%;\n }\n}\n\n.firstrun-title,\n.firstrun-content,\n.firstrun-link {\n opacity: 0;\n transform: translateY(-5px);\n}\n\n.error {\n display: none;\n}\n\n.error.active {\n display: block;\n padding: 5px 12px;\n animation: fade-down 450ms;\n font-size: 12px;\n font-weight: 500;\n color: $white;\n background-color: $red-60;\n position: absolute;\n inset-inline-start: 50px;\n top: -28px;\n border-radius: 2px;\n\n &::before {\n inset-inline-start: 12px;\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n position: absolute;\n text-indent: -999px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n}\n\n@keyframes fade-down {\n 0% {\n opacity: 0;\n transform: translateY(-15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", ".topics {\n ul {\n margin: 0;\n padding: 0;\n @media (min-width: $break-point-large) {\n display: inline;\n padding-inline-start: 12px;\n }\n }\n\n ul li {\n display: inline-block;\n\n &::after {\n content: '•';\n padding: 8px;\n }\n\n &:last-child::after {\n content: none;\n }\n }\n}\n", ".search-wrapper {\n $search-height: 48px;\n $search-icon-size: 24px;\n $search-icon-padding: 12px;\n $search-icon-width: 2 * $search-icon-padding + $search-icon-size -2;\n $search-button-width: 48px;\n $glyph-forward: url('chrome://browser/skin/forward.svg');\n\n padding: 34px 0 64px;\n\n @media (max-height: 700px) {\n & {\n padding: 0 0 30px;\n }\n }\n\n .only-search & {\n padding: 0 0 64px;\n }\n\n .logo-and-wordmark {\n $logo-size: 97px;\n $wordmark-size: 142px;\n\n align-items: center;\n display: flex;\n justify-content: center;\n margin-bottom: 49px;\n\n .logo {\n background: url('chrome://branding/content/icon128.png') no-repeat center center;\n background-size: $logo-size;\n display: inline-block;\n height: $logo-size;\n width: $logo-size;\n }\n\n .wordmark {\n background: url('#{$image-path}firefox-wordmark.svg') no-repeat center center;\n background-size: $wordmark-size;\n -moz-context-properties: fill;\n display: inline-block;\n fill: var(--newtab-search-wordmark-color);\n height: $logo-size;\n margin-inline-start: 15px;\n width: $wordmark-size;\n }\n\n @media (max-width: $break-point-medium - 1) {\n $logo-size-small: 64px;\n $wordmark-small-size: 100px;\n\n .logo {\n background-size: $logo-size-small;\n height: $logo-size-small;\n width: $logo-size-small;\n }\n\n .wordmark {\n background-size: $wordmark-small-size;\n height: $logo-size-small;\n width: $wordmark-small-size;\n }\n }\n }\n\n .search-inner-wrapper {\n cursor: default;\n display: flex;\n height: $search-height;\n margin: 0 auto;\n position: relative;\n width: $searchbar-width-small;\n\n @media (min-width: $break-point-medium) {\n width: $searchbar-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $searchbar-width-large;\n }\n }\n\n input {\n background: var(--newtab-textbox-background-color) var(--newtab-search-icon) $search-icon-padding center no-repeat;\n background-size: $search-icon-size;\n border: solid 1px var(--newtab-search-border-color);\n box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n font-size: 15px;\n -moz-context-properties: fill;\n fill: var(--newtab-search-icon-color);\n padding: 0;\n padding-inline-end: $search-button-width;\n padding-inline-start: $search-icon-width;\n width: 100%;\n\n &:dir(rtl) {\n background-position-x: right $search-icon-padding;\n }\n }\n\n &:hover input {\n box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n }\n\n .search-inner-wrapper:active input,\n input:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n\n .search-button {\n background: $glyph-forward no-repeat center center;\n background-size: 16px 16px;\n border: 0;\n border-radius: 0 $border-radius $border-radius 0;\n -moz-context-properties: fill;\n fill: var(--newtab-search-icon-color);\n height: 100%;\n inset-inline-end: 0;\n position: absolute;\n width: $search-button-width;\n\n &:focus,\n &:hover {\n background-color: $grey-90-10;\n cursor: pointer;\n }\n\n &:active {\n background-color: $grey-90-20;\n }\n\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n }\n}\n\n@media (min-height: 701px) {\n .fixed-search {\n main {\n padding-top: 146px;\n }\n\n .search-wrapper {\n $search-header-bar-height: 95px;\n $search-height: 35px;\n $search-icon-size: 16px;\n $search-icon-padding: 16px;\n\n background-color: var(--newtab-search-header-background-color);\n border-bottom: solid 1px var(--newtab-border-secondary-color);\n height: $search-header-bar-height;\n left: 0;\n padding: 30px 0;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 9;\n\n .search-inner-wrapper {\n height: $search-height;\n }\n\n input {\n background-position-x: $search-icon-padding;\n background-size: $search-icon-size;\n\n &:dir(rtl) {\n background-position-x: right $search-icon-padding;\n }\n }\n }\n }\n}\n\n@at-root {\n // Adjust the style of the contentSearchUI-generated table\n .contentSearchSuggestionTable {\n background-color: var(--newtab-search-dropdown-color);\n border: 0;\n box-shadow: $context-menu-shadow;\n transform: translateY($textbox-shadow-size);\n\n .contentSearchHeader {\n background-color: var(--newtab-search-dropdown-header-color);\n color: var(--newtab-text-secondary-color);\n }\n\n .contentSearchHeader,\n .contentSearchSettingsButton {\n border-color: var(--newtab-border-secondary-color);\n }\n\n .contentSearchSuggestionsList {\n border: 0;\n }\n\n .contentSearchOneOffsTable {\n background-color: var(--newtab-search-dropdown-header-color);\n border-top: solid 1px var(--newtab-border-secondary-color);\n }\n\n .contentSearchSearchWithHeaderSearchText {\n color: var(--newtab-text-primary-color);\n }\n\n .contentSearchSuggestionsContainer {\n background-color: var(--newtab-search-dropdown-color);\n }\n\n .contentSearchSuggestionRow {\n &.selected {\n background: var(--newtab-element-hover-color);\n color: var(--newtab-text-primary-color);\n\n &:active {\n background: var(--newtab-element-active-color);\n }\n\n .historyIcon {\n fill: var(--newtab-icon-secondary-color);\n }\n }\n }\n\n .contentSearchOneOffsTable {\n .contentSearchSuggestionsContainer {\n background-color: var(--newtab-search-dropdown-header-color);\n }\n }\n\n .contentSearchOneOffItem {\n // Make the border slightly shorter by offsetting from the top and bottom\n $border-offset: 18%;\n\n background-image: none;\n border-image: linear-gradient(transparent $border-offset, var(--newtab-border-secondary-color) $border-offset, var(--newtab-border-secondary-color) 100% - $border-offset, transparent 100% - $border-offset) 1;\n border-inline-end: 1px solid;\n position: relative;\n\n &.selected {\n background: var(--newtab-element-hover-color);\n }\n\n &:active {\n background: var(--newtab-element-active-color);\n }\n }\n\n .contentSearchSettingsButton {\n &:hover {\n background: var(--newtab-element-hover-color);\n color: var(--newtab-text-primary-color);\n }\n }\n }\n\n .contentSearchHeaderRow > td > img,\n .contentSearchSuggestionRow > td > .historyIcon {\n margin-inline-start: 7px;\n margin-inline-end: 15px;\n }\n}\n", @@ -50,17 +50,17 @@ ".card-outer {\n @include context-menu-button;\n background: var(--newtab-card-background-color);\n border-radius: $border-radius;\n display: inline-block;\n height: $card-height;\n margin-inline-end: $base-gutter;\n position: relative;\n width: 100%;\n\n &.placeholder {\n background: transparent;\n\n .card {\n box-shadow: inset $inner-box-shadow;\n }\n\n .card-preview-image-outer,\n .card-context {\n display: none;\n }\n }\n\n .card {\n border-radius: $border-radius;\n box-shadow: var(--newtab-card-shadow);\n height: 100%;\n }\n\n > a {\n color: inherit;\n display: block;\n height: 100%;\n outline: none;\n position: absolute;\n width: 100%;\n\n &:-moz-any(.active, :focus) {\n .card {\n @include fade-in-card;\n }\n\n .card-title {\n color: var(--newtab-link-primary-color);\n }\n }\n }\n\n &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n @include fade-in-card;\n @include context-menu-button-hover;\n outline: none;\n\n .card-title {\n color: var(--newtab-link-primary-color);\n }\n\n .alternate ~ .card-host-name {\n display: none;\n }\n\n .card-host-name.alternate {\n display: block;\n }\n }\n\n .card-preview-image-outer {\n background-color: $grey-30;\n border-radius: $border-radius $border-radius 0 0;\n height: $card-preview-image-height;\n overflow: hidden;\n position: relative;\n\n [lwt-newtab-brighttext] & {\n background-color: $grey-60;\n }\n\n &::after {\n border-bottom: 1px solid var(--newtab-card-hairline-color);\n bottom: 0;\n content: '';\n position: absolute;\n width: 100%;\n }\n\n .card-preview-image {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n opacity: 0;\n transition: opacity 1s $photon-easing;\n width: 100%;\n\n &.loaded {\n opacity: 1;\n }\n }\n }\n\n .card-details {\n padding: 15px 16px 12px;\n }\n\n .card-text {\n max-height: 4 * $card-text-line-height + $card-title-margin;\n overflow: hidden;\n\n &.no-host-name,\n &.no-context {\n max-height: 5 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name.no-context {\n max-height: 6 * $card-text-line-height + $card-title-margin;\n }\n\n &:not(.no-description) .card-title {\n max-height: 3 * $card-text-line-height;\n overflow: hidden;\n }\n }\n\n .card-host-name {\n color: var(--newtab-text-secondary-color);\n font-size: 10px;\n overflow: hidden;\n padding-bottom: 4px;\n text-overflow: ellipsis;\n text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n white-space: nowrap;\n }\n\n .card-host-name.alternate { display: none; }\n\n .card-title {\n font-size: 14px;\n font-weight: 600;\n line-height: $card-text-line-height;\n margin: 0 0 $card-title-margin;\n word-wrap: break-word;\n }\n\n .card-description {\n font-size: 12px;\n line-height: $card-text-line-height;\n margin: 0;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .card-context {\n bottom: 0;\n color: var(--newtab-text-secondary-color);\n display: flex;\n font-size: 11px;\n inset-inline-start: 0;\n padding: 9px 16px 9px 14px;\n position: absolute;\n }\n\n .card-context-icon {\n fill: var(--newtab-text-secondary-color);\n height: 22px;\n margin-inline-end: 6px;\n }\n\n .card-context-label {\n flex-grow: 1;\n line-height: 22px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.normal-cards {\n .card-outer {\n // Wide layout styles\n @media (min-width: $break-point-widest) {\n $line-height: 23px;\n height: $card-height-large;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-large;\n }\n\n .card-details {\n padding: 13px 16px 12px;\n }\n\n .card-text {\n max-height: 6 * $line-height + $card-title-margin;\n }\n\n .card-host-name {\n font-size: 12px;\n padding-bottom: 5px;\n }\n\n .card-title {\n font-size: 17px;\n line-height: $line-height;\n margin-bottom: 0;\n }\n\n .card-text:not(.no-description) {\n .card-title {\n max-height: 3 * $line-height;\n }\n }\n\n .card-description {\n font-size: 15px;\n line-height: $line-height;\n }\n\n .card-context {\n bottom: 4px;\n font-size: 14px;\n }\n }\n }\n}\n\n.compact-cards {\n $card-detail-vertical-spacing: 12px;\n $card-title-font-size: 12px;\n\n .card-outer {\n height: $card-height-compact;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-compact;\n }\n\n .card-details {\n padding: $card-detail-vertical-spacing 16px;\n }\n\n .card-host-name {\n line-height: 10px;\n }\n\n .card-text {\n .card-title,\n &:not(.no-description) .card-title {\n font-size: $card-title-font-size;\n line-height: $card-title-font-size + 1;\n max-height: $card-title-font-size + 5;\n overflow: hidden;\n padding: 0 0 4px;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n\n .card-description {\n display: none;\n }\n\n .card-context {\n $icon-size: 16px;\n $container-size: 32px;\n background-color: var(--newtab-card-background-color);\n border-radius: $container-size / 2;\n clip-path: inset(-1px -1px $container-size - ($card-height-compact - $card-preview-image-height-compact - 2 * $card-detail-vertical-spacing));\n height: $container-size;\n width: $container-size;\n padding: ($container-size - $icon-size) / 2;\n top: $card-preview-image-height-compact - $icon-size;\n inset-inline-end: 12px;\n inset-inline-start: auto;\n\n &::after {\n border: 1px solid var(--newtab-card-hairline-color);\n border-bottom: 0;\n border-radius: ($container-size / 2) + 1 ($container-size / 2) + 1 0 0;\n content: '';\n position: absolute;\n height: ($container-size + 2) / 2;\n width: $container-size + 2;\n top: -1px;\n left: -1px;\n }\n\n .card-context-icon {\n margin-inline-end: 0;\n height: $icon-size;\n width: $icon-size;\n\n &.icon-bookmark-added {\n fill: $bookmark-icon-fill;\n }\n\n &.icon-download {\n fill: $download-icon-fill;\n }\n\n &.icon-pocket {\n fill: $pocket-icon-fill;\n }\n }\n\n .card-context-label {\n display: none;\n }\n }\n }\n\n @media not all and (min-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n}\n", ".manual-migration-container {\n color: var(--newtab-text-conditional-color);\n font-size: 13px;\n line-height: 15px;\n margin-bottom: $section-spacing;\n text-align: center;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n text-align: left;\n }\n\n p {\n margin: 0;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: flex;\n justify-content: space-between;\n }\n }\n\n .icon {\n display: none;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: block;\n fill: var(--newtab-icon-secondary-color);\n margin-inline-end: 6px;\n }\n }\n}\n\n.manual-migration-actions {\n border: 0;\n display: block;\n flex-wrap: nowrap;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n padding: 0;\n }\n\n button {\n align-self: center;\n height: 26px;\n margin: 0;\n margin-inline-start: 20px;\n padding: 0 12px;\n }\n}\n", ".collapsible-section {\n padding: $section-vertical-padding $section-horizontal-padding;\n transition-delay: 100ms;\n transition-duration: 100ms;\n transition-property: background-color;\n\n .section-title {\n font-size: $section-title-font-size;\n font-weight: bold;\n margin: 0;\n\n span {\n color: var(--newtab-section-header-text-color);\n display: inline-block;\n fill: var(--newtab-section-header-text-color);\n vertical-align: middle;\n }\n\n .click-target-container {\n vertical-align: top;\n\n .click-target {\n cursor: pointer;\n white-space: nowrap;\n }\n }\n\n .collapsible-arrow {\n margin-inline-start: 8px;\n margin-top: -1px;\n }\n }\n\n .section-top-bar {\n min-height: 19px;\n margin-bottom: 13px;\n position: relative;\n\n .context-menu-button {\n background: url('chrome://browser/skin/page-action.svg') no-repeat right center;\n border: 0;\n cursor: pointer;\n fill: var(--newtab-section-header-text-color);\n height: 100%;\n inset-inline-end: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition-duration: 200ms;\n transition-property: opacity;\n width: $context-menu-button-size;\n\n &:-moz-any(:active, :focus, :hover) {\n fill: $grey-90;\n opacity: 1;\n }\n }\n\n .context-menu {\n top: 16px;\n }\n\n @media (max-width: $break-point-widest + $card-width * 1.5) {\n @include context-menu-open-left;\n }\n }\n\n &:hover,\n &.active {\n .section-top-bar {\n .context-menu-button {\n opacity: 1;\n }\n }\n }\n\n &.active {\n background: var(--newtab-element-hover-color);\n border-radius: 4px;\n\n .section-top-bar {\n .context-menu-button {\n fill: var(--newtab-section-active-contextmenu-color);\n }\n }\n }\n\n .learn-more-link {\n font-size: 11px;\n margin-inline-start: 12px;\n\n a span {\n color: var(--newtab-link-secondary-color);\n }\n }\n\n .section-body-fallback {\n height: $card-height;\n }\n\n .section-body {\n // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n $horizontal-padding: 7px;\n margin: 0 (-$horizontal-padding);\n padding: 0 $horizontal-padding;\n\n &.animating {\n overflow: hidden;\n pointer-events: none;\n }\n }\n\n &.animation-enabled {\n .section-title {\n .collapsible-arrow {\n transition: transform 0.5s $photon-easing;\n }\n }\n\n .section-body {\n transition: max-height 0.5s $photon-easing;\n }\n }\n\n &.collapsed {\n .section-body {\n max-height: 0;\n overflow: hidden;\n }\n }\n}\n", - "\n.asrouter-admin {\n $border-color: var(--newtab-border-secondary-color);\n $monospace: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace;\n max-width: 996px;\n margin: 0 auto;\n font-size: 14px;\n // Reset .outer-wrapper styles\n display: inherit;\n padding: 0 0 92px;\n\n h1 {\n font-weight: 200;\n font-size: 32px;\n }\n\n h2 .button {\n font-size: 14px;\n padding: 6px 12px;\n margin-inline-start: 5px;\n margin-bottom: 0;\n }\n\n table {\n border-collapse: collapse;\n width: 100%;\n }\n\n .sourceLabel {\n background: $grey-20;\n padding: 2px 5px;\n border-radius: 3px;\n\n &.isDisabled {\n background: $email-input-invalid;\n color: $red-60;\n }\n }\n\n .message-item {\n &:first-child td {\n border-top: 1px solid $border-color;\n }\n\n td {\n vertical-align: top;\n border-bottom: 1px solid $border-color;\n padding: 8px;\n\n\n\n &.min {\n width: 1%;\n white-space: nowrap;\n }\n\n &:first-child {\n border-left: 1px solid $border-color;\n }\n\n &:last-child {\n border-right: 1px solid $border-color;\n }\n }\n\n &.current {\n .message-id span {\n background: $yellow-50;\n padding: 2px 5px;\n\n [lwt-newtab-brighttext] & {\n color: $black;\n }\n }\n }\n\n &.blocked {\n .message-id,\n .message-summary {\n opacity: 0.5;\n }\n\n .message-id {\n opacity: 0.5;\n }\n }\n\n .message-id {\n font-family: $monospace;\n font-size: 12px;\n }\n }\n\n pre {\n background: var(--newtab-textbox-background-color);\n margin: 0;\n padding: 8px;\n font-size: 12px;\n max-width: 750px;\n overflow: auto;\n font-family: $monospace;\n }\n\n .errorState {\n border: 1px solid $red-60;\n }\n}\n", - ".pocket-logged-in-cta {\n $max-button-width: 130px;\n $min-button-height: 18px;\n font-size: 13px;\n margin-inline-end: 20px;\n display: inline-block;\n\n .pocket-cta-button {\n background: $blue-60;\n letter-spacing: -0.34px;\n color: $white;\n border-radius: 4px;\n cursor: pointer;\n max-width: $max-button-width;\n // The button height is 2px taller than the rest of the cta text.\n // So I move it up by 1px to align with the rest of the cta text.\n margin-top: -1px;\n min-height: $min-button-height;\n padding: 0 8px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-size: 11px;\n margin-inline-end: 10px;\n }\n\n .cta-text {\n font-weight: normal;\n font-size: 13px;\n }\n\n .pocket-cta-button,\n .cta-text {\n vertical-align: top;\n }\n}\n", - ".more-recommendations {\n display: flex;\n align-items: center;\n white-space: nowrap;\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: var(--newtab-link-secondary-color);\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n}\n", + "\n.asrouter-admin {\n $border-color: var(--newtab-border-secondary-color);\n $monospace: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace;\n max-width: 996px;\n margin: 0 auto;\n font-size: 14px;\n // Reset .outer-wrapper styles\n display: inherit;\n padding: 0 0 92px;\n\n h1 {\n font-weight: 200;\n font-size: 32px;\n }\n\n h2 .button {\n font-size: 14px;\n padding: 6px 12px;\n margin-inline-start: 5px;\n margin-bottom: 0;\n }\n\n table {\n border-collapse: collapse;\n width: 100%;\n }\n\n .sourceLabel {\n background: $grey-20;\n padding: 2px 5px;\n border-radius: 3px;\n\n &.isDisabled {\n background: $email-input-invalid;\n color: $red-60;\n }\n }\n\n .message-item {\n &:first-child td {\n border-top: 1px solid $border-color;\n }\n\n td {\n vertical-align: top;\n border-bottom: 1px solid $border-color;\n padding: 8px;\n\n\n\n &.min {\n width: 1%;\n white-space: nowrap;\n }\n\n &:first-child {\n border-left: 1px solid $border-color;\n }\n\n &:last-child {\n border-right: 1px solid $border-color;\n }\n }\n\n &.current {\n .message-id span {\n background: $yellow-50;\n padding: 2px 5px;\n\n [lwt-newtab-brighttext] & {\n color: $black;\n }\n }\n }\n\n &.blocked {\n .message-id,\n .message-summary {\n opacity: 0.5;\n }\n\n .message-id {\n opacity: 0.5;\n }\n }\n\n .message-id {\n font-family: $monospace;\n font-size: 12px;\n }\n }\n\n .providerUrl {\n font-size: 12px;\n }\n\n pre {\n background: var(--newtab-textbox-background-color);\n margin: 0;\n padding: 8px;\n font-size: 12px;\n max-width: 750px;\n overflow: auto;\n font-family: $monospace;\n }\n\n .errorState {\n border: 1px solid $red-60;\n }\n}\n", + ".pocket-logged-in-cta {\n $max-button-width: 130px;\n $min-button-height: 18px;\n font-size: 13px;\n margin-inline-end: 20px;\n display: inline-block;\n\n .pocket-cta-button {\n background: $blue-60;\n letter-spacing: -0.34px;\n color: $white;\n border-radius: 4px;\n cursor: pointer;\n max-width: $max-button-width;\n // The button height is 2px taller than the rest of the cta text.\n // So I move it up by 1px to align with the rest of the cta text.\n margin-top: -1px;\n min-height: $min-button-height;\n padding: 0 8px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-size: 11px;\n margin-inline-end: 10px;\n }\n\n .cta-text {\n font-weight: normal;\n font-size: 13px;\n line-height: 1.230769231; // (16 / 13) –> 16px computed\n }\n\n .pocket-cta-button,\n .cta-text {\n vertical-align: top;\n }\n}\n", + ".more-recommendations {\n display: flex;\n align-items: center;\n white-space: nowrap;\n line-height: 1.230769231; // (16 / 13) -> 16px computed\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: var(--newtab-link-secondary-color);\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n}\n", ".ASRouterButton {\n font-weight: bold;\n white-space: nowrap;\n border-radius: 4px;\n border: 1px solid var(--newtab-border-secondary-color);\n background-color: var(--newtab-button-secondary-color);\n font-family: inherit;\n padding: 8px 15px;\n margin-inline-start: 12px;\n color: inherit;\n cursor: pointer;\n\n .tall & {\n margin-inline-start: 20px;\n }\n\n &.primary {\n border: 1px solid var(--newtab-button-primary-color);\n background-color: var(--newtab-button-primary-color);\n color: $grey-10;\n }\n\n &.secondary {\n background: var(--newtab-button-secondary-color);\n border: 1px solid var(--newtab-border-primary-color);\n font-size: 14px;\n font-weight: 600;\n }\n}\n", ".SnippetBaseContainer {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: var(--newtab-snippets-background-color);\n color: var(--newtab-text-primary-color);\n font-size: 12px;\n line-height: 16px;\n border-top: 1px solid var(--newtab-snippets-hairline-color);\n box-shadow: $shadow-secondary;\n display: flex;\n align-items: center;\n\n a {\n cursor: pointer;\n color: var(--newtab-link-primary-color);\n text-decoration: underline;\n\n [lwt-newtab-brighttext] & {\n font-weight: bold;\n }\n }\n\n .innerWrapper {\n margin: 0 auto;\n display: flex;\n align-items: center;\n padding: 12px $section-horizontal-padding;\n\n // This is to account for the block button on smaller screens\n padding-inline-end: 36px;\n @media (min-width: $break-point-large) {\n padding-inline-end: $section-horizontal-padding;\n }\n\n max-width: $wrapper-max-width-large;\n @media (min-width: $break-point-widest) {\n max-width: $wrapper-max-width-widest;\n }\n }\n\n .blockButton {\n display: none;\n background: none;\n border: 0;\n position: absolute;\n top: 50%;\n inset-inline-end: 12px;\n height: 16px;\n width: 16px;\n background-image: url('resource://activity-stream/data/content/assets/glyph-dismiss-16.svg');\n -moz-context-properties: fill;\n fill: var(--newtab-icon-primary-color);\n opacity: 0.5;\n margin-top: -8px;\n padding: 0;\n cursor: pointer;\n\n @media (min-width: 766px) {\n inset-inline-end: 24px;\n }\n }\n\n &:hover .blockButton {\n display: block;\n }\n\n .icon {\n height: 42px;\n width: 42px;\n margin-inline-end: 12px;\n flex-shrink: 0;\n }\n}\n\n.snippets-preview-banner {\n font-size: 15px;\n line-height: 42px;\n color: $grey-60-70;\n background: $grey-30-60;\n text-align: center;\n position: absolute;\n top: 0;\n width: 100%;\n\n span {\n vertical-align: middle;\n }\n}\n", ".activity-stream {\n &.modal-open {\n overflow: hidden;\n }\n}\n\n.modalOverlayOuter {\n background: $white;\n opacity: 0.93;\n height: 100%;\n position: fixed;\n top: 0;\n width: 100%;\n display: none;\n z-index: 1100;\n\n &.active {\n display: block;\n }\n}\n\n.modalOverlayInner {\n width: 960px;\n height: 570px;\n position: fixed;\n top: calc(50% - 285px); // halfway down minus half the height of the modal\n left: calc(50% - 480px); // halfway across minus half the width of the modal\n background: $white;\n box-shadow: 0 1px 15px 0 $black-30;\n border-radius: 4px;\n display: none;\n z-index: 1101;\n\n\n // modal takes over entire screen\n @media(max-width: 960px) {\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n box-shadow: none;\n border-radius: 0;\n }\n\n // if modal is short enough, add a vertical scroll bar\n @media(max-width: 850px) and (max-height: 730px) {\n overflow-y: scroll;\n }\n\n // if modal is narrow enough, add a vertical scroll bar\n @media(max-width: 650px) and (max-height: 600px) {\n overflow-y: scroll;\n }\n\n &.active {\n display: block;\n }\n\n h2 {\n color: $grey-60;\n text-align: center;\n font-weight: 200;\n margin-top: 30px;\n font-size: 28px;\n line-height: 37px;\n letter-spacing: -0.13px;\n\n @media(max-width: 960px) {\n margin-top: 100px;\n }\n\n @media(max-width: 850px) {\n margin-top: 30px;\n }\n }\n\n .footer {\n border-top: 1px solid $grey-30;\n height: 70px;\n width: 100%;\n position: absolute;\n bottom: 0;\n text-align: center;\n background-color: $white;\n\n // if modal is short enough, footer becomes sticky\n @media(max-width: 850px) and (max-height: 730px) {\n position: sticky;\n }\n\n // if modal is narrow enough, footer becomes sticky\n @media(max-width: 650px) and (max-height: 600px) {\n position: sticky;\n }\n\n .modalButton {\n margin-top: 20px;\n min-width: 150px;\n height: 30px;\n padding: 4px 30px 6px;\n font-size: 15px;\n\n &:focus,\n &.active,\n &:hover {\n box-shadow: 0 0 0 5px $grey-30;\n transition: box-shadow 150ms;\n }\n }\n }\n}\n", ".SimpleSnippet {\n &.tall {\n padding: 27px 0;\n }\n\n p em {\n color: $grey-90;\n font-style: normal;\n background: $yellow-50;\n }\n\n &.bold,\n &.takeover {\n .donation-form-url,\n .donation-amount {\n padding-top: 8px;\n padding-bottom: 8px;\n }\n }\n\n &.bold {\n height: 176px;\n\n .body {\n font-size: 14px;\n line-height: 20px;\n margin-bottom: 20px;\n }\n\n .icon {\n width: 71px;\n height: 71px;\n }\n }\n\n &.takeover {\n height: 344px;\n\n .body {\n font-size: 16px;\n line-height: 24px;\n margin-bottom: 35px;\n }\n\n .icon {\n width: 79px;\n height: 79px;\n }\n }\n\n .title {\n display: inline;\n font-size: inherit;\n margin: 0;\n }\n\n .titleIcon {\n background-repeat: no-repeat;\n background-size: 14px;\n height: 16px;\n width: 16px;\n margin-top: 2px;\n margin-inline-end: 2px;\n display: inline-block;\n vertical-align: top;\n }\n\n .body {\n display: inline;\n margin: 0;\n }\n\n &.tall .icon {\n margin-inline-end: 20px;\n }\n\n &.takeover,\n &.bold {\n .icon {\n margin-inline-end: 20px;\n }\n }\n\n .icon {\n align-self: flex-start;\n }\n\n .ASRouterButton {\n cursor: pointer;\n }\n}\n", - ".SubmitFormSnippet {\n flex-direction: column;\n flex: 1 1 100%;\n width: 100%;\n\n &.send_to_device_snippet {\n text-align: center;\n\n .message {\n font-size: 16px;\n }\n }\n\n .ASRouterButton {\n &.primary {\n flex: 1 1 0;\n }\n }\n\n .scene2Icon {\n width: 100%;\n\n img {\n width: 98px;\n display: inline-block;\n }\n }\n\n form {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .message {\n font-size: 14px;\n align-self: stretch;\n flex: 0 0 100%;\n\n p {\n margin-top: 0;\n }\n }\n\n .privacyNotice {\n color: var(--newtab-text-secondary-color);\n flex: 0 0 100%;\n\n p {\n margin-bottom: 0;\n }\n }\n\n .innerWrapper {\n max-width: 670px;\n flex-wrap: wrap;\n justify-items: center;\n padding-top: 40px;\n padding-bottom: 40px;\n }\n\n .footer {\n width: 100%;\n margin: 0 auto;\n text-align: right;\n background-color: var(--newtab-background-color);\n padding: 10px 0;\n\n .footer-content {\n margin: 0 auto;\n max-width: 768px;\n width: 100%;\n text-align: right;\n }\n }\n\n input {\n &.mainInput {\n border-radius: 3px;\n background-color: var(--newtab-textbox-background-color);\n border: $input-border;\n padding: 0 8px;\n height: 100%;\n font-size: 15px;\n width: 50%;\n\n &:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n }\n }\n}\n\n.submissionStatus {\n text-align: center;\n font-size: 14px;\n padding: 20px 0;\n\n .submitStatusTitle {\n font-size: 20px;\n }\n}\n", - ".onboardingMessageContainer {\n display: grid;\n grid-column-gap: 21px;\n grid-template-columns: auto auto auto;\n padding-left: 30px;\n padding-right: 30px;\n\n // at 850px, the cards go from vertical layout to horizontal layout\n @media(max-width: 850px) {\n grid-template-columns: none;\n grid-template-rows: auto auto auto;\n padding-left: 110px;\n padding-right: 110px;\n }\n}\n\n.onboardingMessage {\n height: 340px;\n text-align: center;\n padding: 13px;\n font-weight: 200;\n\n // at 850px, img floats left, content floats right next to it\n @media(max-width: 850px) {\n height: 170px;\n text-align: left;\n padding: 10px;\n border-bottom: 1px solid $grey-30;\n display: flex;\n margin-bottom: 11px;\n\n &:last-child {\n border: 0;\n }\n\n .onboardingContent {\n padding-left: 10px;\n height: 100%;\n\n > span > h3 {\n margin-top: 0;\n margin-bottom: 4px;\n font-weight: 400;\n }\n\n > span > p {\n margin-top: 0;\n line-height: 22px;\n font-size: 15px;\n }\n }\n }\n\n @media(max-width: 650px) {\n height: 250px;\n }\n\n .onboardingMessageImage {\n height: 100px;\n width: 120px;\n background-size: 120px;\n background-position: center center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n\n\n @media(max-width: 850px) {\n height: 75px;\n min-width: 80px;\n background-size: 80px;\n }\n\n &.addons {\n background-image: url('resource://activity-stream/data/content/assets/illustration-addons@2x.png');\n }\n\n &.privatebrowsing {\n background-image: url('resource://activity-stream/data/content/assets/illustration-privatebrowsing@2x.png');\n }\n\n &.screenshots {\n background-image: url('resource://activity-stream/data/content/assets/illustration-screenshots@2x.png');\n }\n\n &.gift {\n background-image: url('resource://activity-stream/data/content/assets/illustration-gift@2x.png');\n }\n }\n\n .onboardingContent {\n height: 175px;\n\n > span > h3 {\n color: $grey-90;\n margin-bottom: 8px;\n font-weight: 400;\n }\n\n > span > p {\n color: $grey-60;\n margin-top: 0;\n height: 180px;\n margin-bottom: 12px;\n font-size: 15px;\n line-height: 22px;\n\n @media(max-width: 650px) {\n margin-bottom: 0;\n height: 160px;\n }\n }\n }\n\n .onboardingButton {\n background-color: $grey-90-10;\n border: 0;\n width: 150px;\n height: 30px;\n margin-bottom: 23px;\n padding: 4px 0 6px;\n font-size: 15px;\n\n // at 850px, the button shimmies down and to the right\n @media(max-width: 850px) {\n float: right;\n margin-top: -105px;\n margin-inline-end: -10px;\n }\n\n @media(max-width: 650px) {\n float: none;\n }\n\n &:focus,\n &.active,\n &:hover {\n box-shadow: 0 0 0 5px $grey-30;\n transition: box-shadow 150ms;\n }\n }\n\n\n &::before {\n content: '';\n height: 230px;\n width: 1px;\n position: absolute;\n background-color: $grey-30;\n margin-top: 40px;\n margin-inline-start: 215px;\n\n // at 850px, the line goes from vertical to horizontal\n @media(max-width: 850px) {\n content: none;\n }\n }\n\n &:last-child::before {\n content: none;\n }\n}\n", + ".SubmitFormSnippet {\n flex-direction: column;\n flex: 1 1 100%;\n width: 100%;\n\n &.send_to_device_snippet {\n text-align: center;\n\n .message {\n font-size: 16px;\n }\n }\n\n .ASRouterButton {\n &.primary {\n flex: 1 1 0;\n }\n }\n\n .scene2Icon {\n width: 100%;\n\n img {\n width: 98px;\n display: inline-block;\n }\n }\n\n .scene2Title {\n font-size: inherit;\n margin: 0;\n font-weight: bold;\n display: inline;\n }\n\n form {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .message {\n font-size: 14px;\n align-self: stretch;\n flex: 0 0 100%;\n\n p {\n margin-top: 0;\n }\n }\n\n .privacyNotice {\n color: var(--newtab-text-secondary-color);\n flex: 0 0 100%;\n\n p {\n margin-bottom: 0;\n }\n }\n\n .innerWrapper {\n max-width: 670px;\n flex-wrap: wrap;\n justify-items: center;\n padding-top: 40px;\n padding-bottom: 40px;\n }\n\n .footer {\n width: 100%;\n margin: 0 auto;\n text-align: right;\n background-color: var(--newtab-background-color);\n padding: 10px 0;\n\n .footer-content {\n margin: 0 auto;\n max-width: 768px;\n width: 100%;\n text-align: right;\n }\n }\n\n input {\n &.mainInput {\n border-radius: 3px;\n background-color: var(--newtab-textbox-background-color);\n border: $input-border;\n padding: 0 8px;\n height: 100%;\n font-size: 15px;\n width: 50%;\n\n &:focus {\n border: $input-border-active;\n box-shadow: var(--newtab-textbox-focus-boxshadow);\n }\n }\n }\n}\n\n.submissionStatus {\n text-align: center;\n font-size: 14px;\n padding: 20px 0;\n\n .submitStatusTitle {\n font-size: 20px;\n }\n}\n", + ".onboardingMessageContainer {\n display: grid;\n grid-column-gap: 21px;\n grid-template-columns: auto auto auto;\n padding-left: 30px;\n padding-right: 30px;\n\n // at 850px, the cards go from vertical layout to horizontal layout\n @media(max-width: 850px) {\n grid-template-columns: none;\n grid-template-rows: auto auto auto;\n padding-left: 110px;\n padding-right: 110px;\n }\n}\n\n.onboardingMessage {\n height: 340px;\n text-align: center;\n padding: 13px;\n font-weight: 200;\n\n // at 850px, img floats left, content floats right next to it\n @media(max-width: 850px) {\n height: 170px;\n text-align: left;\n padding: 10px;\n border-bottom: 1px solid $grey-30;\n display: flex;\n margin-bottom: 11px;\n\n &:last-child {\n border: 0;\n }\n\n .onboardingContent {\n padding-left: 10px;\n height: 100%;\n\n > span > h3 {\n margin-top: 0;\n margin-bottom: 4px;\n font-weight: 400;\n }\n\n > span > p {\n margin-top: 0;\n line-height: 22px;\n font-size: 15px;\n }\n }\n }\n\n @media(max-width: 650px) {\n height: 250px;\n }\n\n .onboardingMessageImage {\n height: 100px;\n width: 120px;\n background-size: 120px;\n background-position: center center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n\n\n @media(max-width: 850px) {\n height: 75px;\n min-width: 80px;\n background-size: 80px;\n }\n\n &.addons {\n background-image: url('resource://activity-stream/data/content/assets/illustration-addons@2x.png');\n }\n\n &.privatebrowsing {\n background-image: url('resource://activity-stream/data/content/assets/illustration-privatebrowsing@2x.png');\n }\n\n &.screenshots {\n background-image: url('resource://activity-stream/data/content/assets/illustration-screenshots@2x.png');\n }\n\n &.gift {\n background-image: url('resource://activity-stream/data/content/assets/illustration-gift@2x.png');\n }\n\n &.sync {\n background-image: url('resource://activity-stream/data/content/assets/illustration-sync@2x.png');\n }\n }\n\n .onboardingContent {\n height: 175px;\n\n > span > h3 {\n color: $grey-90;\n margin-bottom: 8px;\n font-weight: 400;\n }\n\n > span > p {\n color: $grey-60;\n margin-top: 0;\n height: 180px;\n margin-bottom: 12px;\n font-size: 15px;\n line-height: 22px;\n\n @media(max-width: 650px) {\n margin-bottom: 0;\n height: 160px;\n }\n }\n }\n\n .onboardingButton {\n background-color: $grey-90-10;\n border: 0;\n width: 150px;\n height: 30px;\n margin-bottom: 23px;\n padding: 4px 0 6px;\n font-size: 15px;\n\n // at 850px, the button shimmies down and to the right\n @media(max-width: 850px) {\n float: right;\n margin-top: -105px;\n margin-inline-end: -10px;\n }\n\n @media(max-width: 650px) {\n float: none;\n }\n\n &:focus,\n &.active,\n &:hover {\n box-shadow: 0 0 0 5px $grey-30;\n transition: box-shadow 150ms;\n }\n }\n\n\n &::before {\n content: '';\n height: 230px;\n width: 1px;\n position: absolute;\n background-color: $grey-30;\n margin-top: 40px;\n margin-inline-start: 215px;\n\n // at 850px, the line goes from vertical to horizontal\n @media(max-width: 850px) {\n content: none;\n }\n }\n\n &:last-child::before {\n content: none;\n }\n}\n", ".EOYSnippetForm {\n margin-top: 12px;\n align-self: start;\n font-size: 12px;\n display: flex;\n align-items: center;\n\n .donation-amount,\n .donation-form-url {\n white-space: nowrap;\n font-size: 14px;\n padding: 5px 14px;\n border-radius: 2px;\n }\n\n .donation-amount {\n color: $grey-90;\n margin-inline-end: 18px;\n border: 1px solid $grey-40;\n background: $grey-10;\n cursor: pointer;\n }\n\n input {\n &[type='radio'] {\n opacity: 0;\n margin-inline-end: -18px;\n\n &:checked+.donation-amount {\n background: $grey-50;\n color: $white;\n border: 1px solid $grey-60;\n }\n }\n }\n\n .monthly-checkbox-container {\n width: 100%;\n }\n\n .donation-form-url {\n margin-inline-start: 18px;\n background-color: $snippets-donation-button-bg;\n border: 0;\n color: $white;\n align-self: flex-end;\n display: flex;\n cursor: pointer;\n }\n}\n" ], "names": [], - "mappings": "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" + "mappings": "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" } \ No newline at end of file diff --git a/browser/components/newtab/data/content/activity-stream.bundle.js b/browser/components/newtab/data/content/activity-stream.bundle.js index fb7d761beb455..7396d3c7dbbd2 100644 --- a/browser/components/newtab/data/content/activity-stream.bundle.js +++ b/browser/components/newtab/data/content/activity-stream.bundle.js @@ -93,17 +93,17 @@ __webpack_require__.r(__webpack_exports__); /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var content_src_lib_snippets__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3); /* harmony import */ var content_src_asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4); -/* harmony import */ var content_src_components_Base_Base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12); -/* harmony import */ var content_src_lib_detect_user_session_start__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(40); -/* harmony import */ var content_src_lib_asroutercontent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41); +/* harmony import */ var content_src_components_Base_Base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14); +/* harmony import */ var content_src_lib_detect_user_session_start__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42); +/* harmony import */ var content_src_lib_asroutercontent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43); /* harmony import */ var content_src_lib_init_store__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5); -/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16); +/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(18); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_7__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(11); +/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(13); /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_9__); -/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(45); +/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(47); @@ -747,10 +747,6 @@ class SnippetsProvider { })(); } - _noSnippetFallback() { - // TODO - } - _showRemoteSnippets() { const snippetsEl = document.getElementById(this.elementId); const payload = this.snippetsMap.get("snippets"); @@ -772,6 +768,8 @@ class SnippetsProvider { // eslint-disable-next-line no-unsanitized/property snippetsEl.innerHTML = payload; + this._logIfDevtools("Successfully added snippets."); + // Scripts injected by innerHTML are inactive, so we have to relocate them // through DOM manipulation to activate their contents. for (const scriptEl of snippetsEl.getElementsByTagName("script")) { @@ -790,6 +788,13 @@ class SnippetsProvider { } } + // istanbul ignore next + _logIfDevtools(text) { + if (this.devtoolsEnabled) { + console.log("Legacy snippets:", text); // eslint-disable-line no-console + } + } + /** * init - Fetch the snippet payload and show snippets * @@ -806,9 +811,12 @@ class SnippetsProvider { Object.assign(_this4, { appData: {}, elementId: "snippets", - connect: true + connect: true, + devtoolsEnabled: false }, options); + _this4._logIfDevtools("Initializing..."); + // Add listener so we know when snippets are blocked on other pages if (global.RPMAddMessageListener) { global.RPMAddMessageListener("ActivityStream:MainToContent", _this4._onAction); @@ -840,12 +848,14 @@ class SnippetsProvider { try { _this4._showRemoteSnippets(); } catch (e) { - _this4._noSnippetFallback(e); + _this4._logIfDevtools("Problem inserting remote snippets!"); + console.error(e); // eslint-disable-line no-console } window.dispatchEvent(new Event(SNIPPETS_ENABLED_EVENT)); _this4.initialized = true; + _this4._logIfDevtools("Finished initializing."); })(); } @@ -892,11 +902,7 @@ function addSnippetsSubscriber(store) { // Don't call init multiple times !initializing && location.href !== "about:welcome" && location.hash !== "#asrouter") { initializing = true; - yield snippets.init({ appData: state.Snippets }); - // istanbul ignore if - if (state.Prefs.values["asrouter.devtoolsEnabled"]) { - console.log("Legacy snippets initialized"); // eslint-disable-line no-console - } + yield snippets.init({ appData: state.Snippets, devtoolsEnabled: state.Prefs.values["asrouter.devtoolsEnabled"] }); initializing = false; /** If we should remove snippets... */ @@ -928,13 +934,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var content_src_lib_init_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5); /* harmony import */ var _rich_text_strings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7); /* harmony import */ var _components_ImpressionsWrapper_ImpressionsWrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8); -/* harmony import */ var fluent_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44); -/* harmony import */ var _templates_OnboardingMessage_OnboardingMessage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(46); +/* harmony import */ var fluent_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(46); +/* harmony import */ var _templates_OnboardingMessage_OnboardingMessage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(11); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(11); +/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(13); /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_7__); -/* harmony import */ var _templates_template_manifest__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(42); +/* harmony import */ var _templates_template_manifest__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; @@ -1394,7 +1400,7 @@ module.exports = Redux; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RICH_TEXT_KEYS", function() { return RICH_TEXT_KEYS; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "generateMessages", function() { return generateMessages; }); -/* harmony import */ var fluent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43); +/* harmony import */ var fluent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(45); /** @@ -1519,12 +1525,163 @@ module.exports = PropTypes; /***/ }), /* 11 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OnboardingMessage", function() { return OnboardingMessage; }); +/* harmony import */ var _components_ModalOverlay_ModalOverlay__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + + + + +class OnboardingCard extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent { + constructor(props) { + super(props); + this.onClick = this.onClick.bind(this); + } + + onClick() { + const { props } = this; + const ping = { + event: "CLICK_BUTTON", + message_id: props.id, + id: props.UISurface + }; + props.sendUserActionTelemetry(ping); + props.onAction(props.content.button_action); + } + + render() { + const { content } = this.props; + return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + "div", + { className: "onboardingMessage" }, + react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", { className: `onboardingMessageImage ${content.icon}` }), + react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + "div", + { className: "onboardingContent" }, + react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + "span", + null, + react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + "h3", + null, + " ", + content.title, + " " + ), + react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + "p", + null, + " ", + content.text, + " " + ) + ), + react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + "span", + null, + react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + "button", + { tabIndex: "1", className: "button onboardingButton", onClick: this.onClick }, + " ", + content.button_label, + " " + ) + ) + ) + ); + } +} + +class OnboardingMessage extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent { + render() { + const { props } = this; + const { button_label, header } = props.extraTemplateStrings; + return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + _components_ModalOverlay_ModalOverlay__WEBPACK_IMPORTED_MODULE_0__["ModalOverlay"], + _extends({}, props, { button_label: button_label, title: header }), + react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + "div", + { className: "onboardingMessageContainer" }, + props.bundle.map(message => react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(OnboardingCard, _extends({ key: message.id, + sendUserActionTelemetry: props.sendUserActionTelemetry, + onAction: props.onAction, + UISurface: props.UISurface + }, message))) + ) + ); + } +} + +/***/ }), +/* 12 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ModalOverlay", function() { return ModalOverlay; }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + + +class ModalOverlay extends react__WEBPACK_IMPORTED_MODULE_0___default.a.PureComponent { + componentWillMount() { + this.setState({ active: true }); + document.body.classList.add("modal-open"); + } + + componentWillUnmount() { + document.body.classList.remove("modal-open"); + this.setState({ active: false }); + } + + render() { + const { active } = this.state; + const { title, button_label } = this.props; + return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement( + "div", + null, + react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { className: `modalOverlayOuter ${active ? "active" : ""}` }), + react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement( + "div", + { className: `modalOverlayInner ${active ? "active" : ""}` }, + react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement( + "h2", + null, + " ", + title, + " " + ), + this.props.children, + react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement( + "div", + { className: "footer" }, + react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement( + "button", + { tabIndex: "2", onClick: this.props.onDoneButton, className: "button primary modalButton" }, + " ", + button_label, + " " + ) + ) + ) + ); + } +} + +/***/ }), +/* 13 */ /***/ (function(module, exports) { module.exports = ReactDOM; /***/ }), -/* 12 */ +/* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1533,20 +1690,20 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseContent", function() { return BaseContent; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Base", function() { return Base; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var content_src_components_ASRouterAdmin_ASRouterAdmin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14); -/* harmony import */ var content_src_components_ConfirmDialog_ConfirmDialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15); -/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16); +/* harmony import */ var content_src_components_ASRouterAdmin_ASRouterAdmin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); +/* harmony import */ var content_src_components_ConfirmDialog_ConfirmDialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17); +/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(17); -/* harmony import */ var content_src_components_ManualMigration_ManualMigration__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18); -/* harmony import */ var common_PrerenderData_jsm__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(19); +/* harmony import */ var content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(19); +/* harmony import */ var content_src_components_ManualMigration_ManualMigration__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20); +/* harmony import */ var common_PrerenderData_jsm__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(21); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var content_src_components_Search_Search__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(20); -/* harmony import */ var content_src_components_Sections_Sections__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(22); -/* harmony import */ var content_src_components_StartupOverlay_StartupOverlay__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(39); +/* harmony import */ var content_src_components_Search_Search__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(22); +/* harmony import */ var content_src_components_Sections_Sections__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(24); +/* harmony import */ var content_src_components_StartupOverlay_StartupOverlay__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(41); @@ -1737,25 +1894,27 @@ const Base = Object(react_redux__WEBPACK_IMPORTED_MODULE_4__["connect"])(state = /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1))) /***/ }), -/* 13 */ +/* 15 */ /***/ (function(module, exports) { module.exports = ReactIntl; /***/ }), -/* 14 */ +/* 16 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ASRouterAdmin", function() { return ASRouterAdmin; }); /* harmony import */ var _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _asrouter_components_ModalOverlay_ModalOverlay__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); + -class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent { +class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_2___default.a.PureComponent { constructor(props) { super(props); this.onMessage = this.onMessage.bind(this); @@ -1765,7 +1924,17 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom this.findOtherBundledMessagesOfSameTemplate = this.findOtherBundledMessagesOfSameTemplate.bind(this); this.handleExpressionEval = this.handleExpressionEval.bind(this); this.onChangeTargetingParameters = this.onChangeTargetingParameters.bind(this); - this.state = { messageFilter: "all", evaluationStatus: {}, stringTargetingParameters: null }; + this.onCopyTargetingParams = this.onCopyTargetingParams.bind(this); + this.onPasteTargetingParams = this.onPasteTargetingParams.bind(this); + this.onNewTargetingParams = this.onNewTargetingParams.bind(this); + this.state = { + messageFilter: "all", + evaluationStatus: {}, + stringTargetingParameters: null, + newStringTargetingParameters: null, + copiedToClipboard: false, + pasteFromClipboard: false + }; } onMessage({ data: action }) { @@ -1843,7 +2012,6 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom onChangeTargetingParameters(event) { const { name } = event.target; const { value } = event.target; - this.refs.evaluationStatus.innerText = ""; this.setState(({ stringTargetingParameters }) => { let targetingParametersError = null; @@ -1856,13 +2024,93 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom targetingParametersError = { id: name }; } - return { stringTargetingParameters: updatedParameters, targetingParametersError }; + return { + copiedToClipboard: false, + evaluationStatus: {}, + stringTargetingParameters: updatedParameters, + targetingParametersError + }; }); } + handleEnabledToggle(event) { + const provider = this.state.providerPrefs.find(p => p.id === event.target.dataset.provider); + const userPrefInfo = this.state.userPrefs; + + const isUserEnabled = provider.id in userPrefInfo ? userPrefInfo[provider.id] : true; + const isSystemEnabled = provider.enabled; + const isEnabling = event.target.checked; + + if (isEnabling) { + if (!isUserEnabled) { + _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_0__["ASRouterUtils"].sendMessage({ type: "SET_PROVIDER_USER_PREF", data: { id: provider.id, value: true } }); + } + if (!isSystemEnabled) { + _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_0__["ASRouterUtils"].sendMessage({ type: "ENABLE_PROVIDER", data: provider.id }); + } + } else { + _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_0__["ASRouterUtils"].sendMessage({ type: "DISABLE_PROVIDER", data: provider.id }); + } + + this.setState({ messageFilter: "all" }); + } + + handleUserPrefToggle(event) { + const action = { type: "SET_PROVIDER_USER_PREF", data: { id: event.target.dataset.provider, value: event.target.checked } }; + _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_0__["ASRouterUtils"].sendMessage(action); + this.setState({ messageFilter: "all" }); + } + + onChangeMessageFilter(event) { + this.setState({ messageFilter: event.target.value }); + } + + // Simulate a copy event that sets to clipboard all targeting paramters and values + onCopyTargetingParams(event) { + const stringTargetingParameters = Object.assign({}, this.state.stringTargetingParameters); + for (const key of Object.keys(stringTargetingParameters)) { + // If the value is not set the parameter will be lost when we stringify + if (stringTargetingParameters[key] === undefined) { + stringTargetingParameters[key] = null; + } + } + const setClipboardData = e => { + e.preventDefault(); + e.clipboardData.setData("text", JSON.stringify(stringTargetingParameters, null, 2)); + document.removeEventListener("copy", setClipboardData); + this.setState({ copiedToClipboard: true }); + }; + + document.addEventListener("copy", setClipboardData); + + document.execCommand("copy"); + } + + // Copy all clipboard data to targeting parameters + onPasteTargetingParams(event) { + this.setState(({ pasteFromClipboard }) => ({ + pasteFromClipboard: !pasteFromClipboard, + newStringTargetingParameters: "" + })); + } + + onNewTargetingParams(event) { + this.setState({ newStringTargetingParameters: event.target.value }); + event.target.classList.remove("errorState"); + this.refs.targetingParamsEval.innerText = ""; + + try { + const stringTargetingParameters = JSON.parse(event.target.value); + this.setState({ stringTargetingParameters }); + } catch (e) { + event.target.classList.add("errorState"); + this.refs.targetingParamsEval.innerText = e.message; + } + } + renderMessageItem(msg) { const isCurrent = msg.id === this.state.lastMessageId; - const isBlocked = this.state.messageBlockList.includes(msg.id); + const isBlocked = this.state.messageBlockList.includes(msg.id) || this.state.messageBlockList.includes(msg.campaign); const impressions = this.state.messageImpressions[msg.id] ? this.state.messageImpressions[msg.id].length : 0; let itemClassName = "message-item"; @@ -1873,42 +2121,42 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom itemClassName += " blocked"; } - return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "tr", { className: itemClassName, key: msg.id }, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", { className: "message-id" }, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "span", null, msg.id, " ", - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("br", null) + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("br", null) ) ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "button", { className: `button ${isBlocked ? "" : " primary"}`, onClick: isBlocked ? this.handleUnblock(msg) : this.handleBlock(msg) }, isBlocked ? "Unblock" : "Block" ), - isBlocked ? null : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + isBlocked ? null : react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "button", { className: "button", onClick: this.handleOverride(msg.id) }, "Show" ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("br", null), + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("br", null), "(", impressions, " impressions)" ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", { className: "message-summary" }, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "pre", null, JSON.stringify(msg, null, 2) @@ -1922,10 +2170,10 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom return null; } const messagesToShow = this.state.messageFilter === "all" ? this.state.messages : this.state.messages.filter(message => message.provider === this.state.messageFilter); - return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "table", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "tbody", null, messagesToShow.map(msg => this.renderMessageItem(msg)) @@ -1933,27 +2181,23 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom ); } - onChangeMessageFilter(event) { - this.setState({ messageFilter: event.target.value }); - } - renderMessageFilter() { if (!this.state.providers) { return null; } - return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "p", null, "Show messages from ", - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "select", { value: this.state.messageFilter, onChange: this.onChangeMessageFilter }, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "option", { value: "all" }, "all providers" ), - this.state.providers.map(provider => react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + this.state.providers.map(provider => react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "option", { key: provider.id, value: provider.id }, provider.id @@ -1963,70 +2207,47 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom } renderTableHead() { - return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "thead", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "tr", { className: "message-item" }, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("td", { className: "min" }), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("td", { className: "min" }), + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", { className: "min" }, "Provider ID" ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, "Source" ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", - null, + { className: "min" }, + "Cohort" + ), + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( + "td", + { className: "min" }, "Last Updated" ) ) ); } - handleEnabledToggle(event) { - const provider = this.state.providerPrefs.find(p => p.id === event.target.dataset.provider); - const userPrefInfo = this.state.userPrefs; - - const isUserEnabled = provider.id in userPrefInfo ? userPrefInfo[provider.id] : true; - const isSystemEnabled = provider.enabled; - const isEnabling = event.target.checked; - - if (isEnabling) { - if (!isUserEnabled) { - _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_0__["ASRouterUtils"].sendMessage({ type: "SET_PROVIDER_USER_PREF", data: { id: provider.id, value: true } }); - } - if (!isSystemEnabled) { - _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_0__["ASRouterUtils"].sendMessage({ type: "ENABLE_PROVIDER", data: provider.id }); - } - } else { - _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_0__["ASRouterUtils"].sendMessage({ type: "DISABLE_PROVIDER", data: provider.id }); - } - - this.setState({ messageFilter: "all" }); - } - - handleUserPrefToggle(event) { - const action = { type: "SET_PROVIDER_USER_PREF", data: { id: event.target.dataset.provider, value: event.target.checked } }; - _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_0__["ASRouterUtils"].sendMessage(action); - this.setState({ messageFilter: "all" }); - } - renderProviders() { const providersConfig = this.state.providerPrefs; const providerInfo = this.state.providers; const userPrefInfo = this.state.userPrefs; - return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "table", null, this.renderTableHead(), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "tbody", null, providersConfig.map((provider, i) => { @@ -2037,19 +2258,16 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom let label = "local"; if (provider.type === "remote") { - let displayUrl = ""; - try { - displayUrl = `(${new URL(info.url).hostname})`; - } catch (err) {} - label = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + label = react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "span", null, - "endpoint ", - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + "endpoint (", + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "a", - { target: "_blank", href: info.url }, - displayUrl - ) + { className: "providerUrl", target: "_blank", href: info.url }, + info.url + ), + ")" ); } else if (provider.type === "remote-settings") { label = `remote settings (${provider.bucket})`; @@ -2066,29 +2284,34 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom label = `disabled via ${reasonsDisabled.join(", ")}`; } - return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "tr", { className: "message-item", key: i }, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, - isTestProvider ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("input", { type: "checkbox", disabled: true, readOnly: true, checked: true }) : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("input", { type: "checkbox", "data-provider": provider.id, checked: isUserEnabled && isSystemEnabled, onChange: this.handleEnabledToggle }) + isTestProvider ? react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("input", { type: "checkbox", disabled: true, readOnly: true, checked: true }) : react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("input", { type: "checkbox", "data-provider": provider.id, checked: isUserEnabled && isSystemEnabled, onChange: this.handleEnabledToggle }) ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, provider.id ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "span", { className: `sourceLabel${isUserEnabled && isSystemEnabled ? "" : " isDisabled"}` }, label ) ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( + "td", + null, + provider.cohort + ), + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", { style: { whiteSpace: "nowrap" } }, info.lastUpdated ? new Date(info.lastUpdated).toLocaleString() : "" @@ -2099,46 +2322,67 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom ); } + renderPasteModal() { + if (!this.state.pasteFromClipboard) { + return null; + } + const errors = this.refs.targetingParamsEval && this.refs.targetingParamsEval.innerText.length; + return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( + _asrouter_components_ModalOverlay_ModalOverlay__WEBPACK_IMPORTED_MODULE_1__["ModalOverlay"], + { title: "New targeting parameters", button_label: errors ? "Cancel" : "Done", onDoneButton: this.onPasteTargetingParams }, + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( + "div", + { className: "onboardingMessage" }, + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( + "p", + null, + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("textarea", { onChange: this.onNewTargetingParams, value: this.state.newStringTargetingParameters, autoFocus: true, rows: "20", cols: "60" }) + ), + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("p", { ref: "targetingParamsEval" }) + ) + ); + } + renderTargetingParameters() { // There was no error and the result is truthy const success = this.state.evaluationStatus.success && !!this.state.evaluationStatus.result; const result = JSON.stringify(this.state.evaluationStatus.result, null, 2) || "(Empty result)"; - return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "table", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "tbody", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "tr", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "h2", null, "Evaluate JEXL expression" ) ) ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "tr", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "p", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("textarea", { ref: "expressionInput", rows: "10", cols: "60", placeholder: "Evaluate JEXL expressions and mock parameters by changing their values below" }) + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("textarea", { ref: "expressionInput", rows: "10", cols: "60", placeholder: "Evaluate JEXL expressions and mock parameters by changing their values below" }) ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "p", null, "Status: ", - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "span", { ref: "evaluationStatus" }, success ? "✅" : "❌", @@ -2147,44 +2391,62 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom ) ) ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "button", { className: "ASRouterButton secondary", onClick: this.handleExpressionEval }, "Evaluate" ) ) ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "tr", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "h2", null, "Modify targeting parameters" ) ) ), + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( + "tr", + null, + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( + "td", + null, + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( + "button", + { className: "ASRouterButton secondary", onClick: this.onCopyTargetingParams, disabled: this.state.copiedToClipboard }, + this.state.copiedToClipboard ? "Parameters copied!" : "Copy parameters" + ), + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( + "button", + { className: "ASRouterButton secondary", onClick: this.onPasteTargetingParams, disabled: this.state.pasteFromClipboard }, + "Paste parameters" + ) + ) + ), this.state.stringTargetingParameters && Object.keys(this.state.stringTargetingParameters).map((param, i) => { const value = this.state.stringTargetingParameters[param]; const errorState = this.state.targetingParametersError && this.state.targetingParametersError.id === param; const className = errorState ? "errorState" : ""; - const inputComp = (value && value.length) > 30 ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("textarea", { name: param, className: className, value: value, rows: "10", cols: "60", onChange: this.onChangeTargetingParameters }) : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("input", { name: param, className: className, value: value, onChange: this.onChangeTargetingParameters }); + const inputComp = (value && value.length) > 30 ? react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("textarea", { name: param, className: className, value: value, rows: "10", cols: "60", onChange: this.onChangeTargetingParameters }) : react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("input", { name: param, className: className, value: value, onChange: this.onChangeTargetingParameters }); - return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "tr", { key: i }, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, param ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "td", null, inputComp @@ -2196,50 +2458,51 @@ class ASRouterAdmin extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom } render() { - return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "div", { className: "asrouter-admin outer-wrapper" }, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "h1", null, "AS Router Admin" ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "h2", null, "Targeting Utilities" ), - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "button", { className: "button", onClick: this.expireCache }, "Expire Cache" ), " (This expires the cache in ASR Targeting for bookmarks and top sites)", - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "h2", null, "Message Providers ", - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "button", { title: "Restore all provider settings that ship with Firefox", className: "button", onClick: this.resetPref }, "Restore default prefs" ) ), this.state.providers ? this.renderProviders() : null, - react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement( + react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement( "h2", null, "Messages" ), this.renderMessageFilter(), this.renderMessages(), + this.renderPasteModal(), this.renderTargetingParameters() ); } } /***/ }), -/* 15 */ +/* 17 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2247,9 +2510,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_ConfirmDialog", function() { return _ConfirmDialog; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConfirmDialog", function() { return ConfirmDialog; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); @@ -2351,20 +2614,20 @@ class _ConfirmDialog extends react__WEBPACK_IMPORTED_MODULE_3___default.a.PureCo const ConfirmDialog = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["connect"])(state => state.Dialog)(_ConfirmDialog); /***/ }), -/* 16 */ +/* 18 */ /***/ (function(module, exports) { module.exports = ReactRedux; /***/ }), -/* 17 */ +/* 19 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ErrorBoundaryFallback", function() { return ErrorBoundaryFallback; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ErrorBoundary", function() { return ErrorBoundary; }); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); @@ -2444,7 +2707,7 @@ class ErrorBoundary extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureCom ErrorBoundary.defaultProps = { FallbackComponent: ErrorBoundaryFallback }; /***/ }), -/* 18 */ +/* 20 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2452,9 +2715,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_ManualMigration", function() { return _ManualMigration; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ManualMigration", function() { return ManualMigration; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); @@ -2519,7 +2782,7 @@ class _ManualMigration extends react__WEBPACK_IMPORTED_MODULE_3___default.a.Pure const ManualMigration = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["connect"])()(_ManualMigration); /***/ }), -/* 19 */ +/* 21 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2621,19 +2884,19 @@ var PrerenderData = new _PrerenderData({ }); /***/ }), -/* 20 */ +/* 22 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_Search", function() { return _Search; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Search", function() { return Search; }); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); -/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); +/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var content_src_lib_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21); +/* harmony import */ var content_src_lib_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__); /* globals ContentSearchUIController */ @@ -2749,7 +3012,7 @@ class _Search extends react__WEBPACK_IMPORTED_MODULE_4___default.a.PureComponent const Search = Object(react_redux__WEBPACK_IMPORTED_MODULE_2__["connect"])()(Object(react_intl__WEBPACK_IMPORTED_MODULE_0__["injectIntl"])(_Search)); /***/ }), -/* 21 */ +/* 23 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2759,7 +3022,7 @@ const IS_NEWTAB = global.document && global.document.documentURI === "about:newt /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1))) /***/ }), -/* 22 */ +/* 24 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2769,19 +3032,19 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_Sections", function() { return _Sections; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Sections", function() { return Sections; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var content_src_components_Card_Card__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); +/* harmony import */ var content_src_components_Card_Card__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var content_src_components_CollapsibleSection_CollapsibleSection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(27); -/* harmony import */ var content_src_components_ComponentPerfTimer_ComponentPerfTimer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30); -/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(16); +/* harmony import */ var content_src_components_CollapsibleSection_CollapsibleSection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29); +/* harmony import */ var content_src_components_ComponentPerfTimer_ComponentPerfTimer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(32); +/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var content_src_components_MoreRecommendations_MoreRecommendations__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(32); -/* harmony import */ var content_src_components_PocketLoggedInCta_PocketLoggedInCta__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(33); +/* harmony import */ var content_src_components_MoreRecommendations_MoreRecommendations__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(34); +/* harmony import */ var content_src_components_PocketLoggedInCta_PocketLoggedInCta__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(35); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var content_src_components_Topics_Topics__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(34); -/* harmony import */ var content_src_components_TopSites_TopSites__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(35); +/* harmony import */ var content_src_components_Topics_Topics__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(36); +/* harmony import */ var content_src_components_TopSites_TopSites__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(37); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; @@ -3096,7 +3359,7 @@ const Sections = Object(react_redux__WEBPACK_IMPORTED_MODULE_5__["connect"])(sta /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1))) /***/ }), -/* 23 */ +/* 25 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3323,7 +3586,7 @@ const LinkMenuOptions = { }; /***/ }), -/* 24 */ +/* 26 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3331,12 +3594,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_LinkMenu", function() { return _LinkMenu; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LinkMenu", function() { return LinkMenu; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var content_src_components_ContextMenu_ContextMenu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13); +/* harmony import */ var content_src_components_ContextMenu_ContextMenu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var content_src_lib_link_menu_options__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23); +/* harmony import */ var content_src_lib_link_menu_options__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__); @@ -3397,7 +3660,7 @@ const getState = state => ({ isPrivateBrowsingEnabled: state.Prefs.values.isPriv const LinkMenu = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["connect"])(getState)(Object(react_intl__WEBPACK_IMPORTED_MODULE_3__["injectIntl"])(_LinkMenu)); /***/ }), -/* 25 */ +/* 27 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3496,7 +3759,7 @@ class ContextMenuItem extends react__WEBPACK_IMPORTED_MODULE_0___default.a.PureC /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1))) /***/ }), -/* 26 */ +/* 28 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3553,21 +3816,21 @@ const ScreenshotUtils = { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1))) /***/ }), -/* 27 */ +/* 29 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_CollapsibleSection", function() { return _CollapsibleSection; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CollapsibleSection", function() { return CollapsibleSection; }); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); -/* harmony import */ var content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17); +/* harmony import */ var content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var content_src_components_SectionMenu_SectionMenu__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(28); -/* harmony import */ var content_src_lib_section_menu_options__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29); +/* harmony import */ var content_src_components_SectionMenu_SectionMenu__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30); +/* harmony import */ var content_src_lib_section_menu_options__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(31); @@ -3809,7 +4072,7 @@ const CollapsibleSection = Object(react_intl__WEBPACK_IMPORTED_MODULE_0__["injec /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1))) /***/ }), -/* 28 */ +/* 30 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3817,12 +4080,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_SectionMenu", function() { return _SectionMenu; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SectionMenu", function() { return SectionMenu; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var content_src_components_ContextMenu_ContextMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13); +/* harmony import */ var content_src_components_ContextMenu_ContextMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var content_src_lib_section_menu_options__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29); +/* harmony import */ var content_src_lib_section_menu_options__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(31); @@ -3881,7 +4144,7 @@ class _SectionMenu extends react__WEBPACK_IMPORTED_MODULE_3___default.a.PureComp const SectionMenu = Object(react_intl__WEBPACK_IMPORTED_MODULE_2__["injectIntl"])(_SectionMenu); /***/ }), -/* 29 */ +/* 31 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3970,14 +4233,14 @@ const SectionMenuOptions = { }; /***/ }), -/* 30 */ +/* 32 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentPerfTimer", function() { return ComponentPerfTimer; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var common_PerfService_jsm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31); +/* harmony import */ var common_PerfService_jsm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); @@ -4144,7 +4407,7 @@ class ComponentPerfTimer extends react__WEBPACK_IMPORTED_MODULE_2___default.a.Co } /***/ }), -/* 31 */ +/* 33 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4279,13 +4542,13 @@ _PerfService.prototype = { var perfService = new _PerfService(); /***/ }), -/* 32 */ +/* 34 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MoreRecommendations", function() { return MoreRecommendations; }); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); @@ -4307,16 +4570,16 @@ class MoreRecommendations extends react__WEBPACK_IMPORTED_MODULE_1___default.a.P } /***/ }), -/* 33 */ +/* 35 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_PocketLoggedInCta", function() { return _PocketLoggedInCta; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PocketLoggedInCta", function() { return PocketLoggedInCta; }); -/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16); +/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15); /* 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__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); @@ -4351,14 +4614,14 @@ class _PocketLoggedInCta extends react__WEBPACK_IMPORTED_MODULE_2___default.a.Pu const PocketLoggedInCta = Object(react_redux__WEBPACK_IMPORTED_MODULE_0__["connect"])(state => ({ Pocket: state.Pocket }))(_PocketLoggedInCta); /***/ }), -/* 34 */ +/* 36 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Topic", function() { return Topic; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Topics", function() { return Topics; }); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); @@ -4401,7 +4664,7 @@ class Topics extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent } /***/ }), -/* 35 */ +/* 37 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4409,19 +4672,19 @@ __webpack_require__.r(__webpack_exports__); /* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_TopSites", function() { return _TopSites; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TopSites", function() { return TopSites; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var _TopSitesConstants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36); -/* harmony import */ var content_src_components_CollapsibleSection_CollapsibleSection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27); -/* harmony import */ var content_src_components_ComponentPerfTimer_ComponentPerfTimer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30); -/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16); +/* harmony import */ var _TopSitesConstants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); +/* harmony import */ var content_src_components_CollapsibleSection_CollapsibleSection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29); +/* harmony import */ var content_src_components_ComponentPerfTimer_ComponentPerfTimer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32); +/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _SearchShortcutsForm__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(37); -/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(45); -/* harmony import */ var _TopSiteForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(48); -/* harmony import */ var _TopSite__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(38); +/* harmony import */ var _SearchShortcutsForm__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(39); +/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(47); +/* harmony import */ var _TopSiteForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(49); +/* harmony import */ var _TopSite__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(40); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; @@ -4610,7 +4873,7 @@ const TopSites = Object(react_redux__WEBPACK_IMPORTED_MODULE_4__["connect"])(sta /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1))) /***/ }), -/* 36 */ +/* 38 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4630,18 +4893,18 @@ const MIN_RICH_FAVICON_SIZE = 96; const MIN_CORNER_FAVICON_SIZE = 16; /***/ }), -/* 37 */ +/* 39 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SearchShortcutsForm", function() { return SearchShortcutsForm; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15); /* 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__(9); /* 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__(36); +/* harmony import */ var _TopSitesConstants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(38); @@ -4810,7 +5073,7 @@ class SearchShortcutsForm extends react__WEBPACK_IMPORTED_MODULE_2___default.a.P } /***/ }), -/* 38 */ +/* 40 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4821,14 +5084,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_TopSiteList", function() { return _TopSiteList; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TopSiteList", function() { return TopSiteList; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _TopSitesConstants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36); -/* harmony import */ var content_src_components_LinkMenu_LinkMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24); +/* harmony import */ var _TopSitesConstants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38); +/* harmony import */ var content_src_components_LinkMenu_LinkMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var content_src_lib_screenshot_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26); -/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(45); +/* harmony import */ var content_src_lib_screenshot_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28); +/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(47); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; @@ -5017,7 +5280,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, tabIndex: "0", onKeyPress: this.onKeyPress, onClick: onClick, draggable: true }, + { href: link.searchTopSite ? undefined : 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 }, @@ -5353,7 +5616,7 @@ class _TopSiteList extends react__WEBPACK_IMPORTED_MODULE_4___default.a.PureComp const TopSiteList = Object(react_intl__WEBPACK_IMPORTED_MODULE_1__["injectIntl"])(_TopSiteList); /***/ }), -/* 39 */ +/* 41 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -5361,9 +5624,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_StartupOverlay", function() { return _StartupOverlay; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StartupOverlay", function() { return StartupOverlay; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13); +/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15); /* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); +/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); @@ -5581,14 +5844,14 @@ const getState = state => ({ fxa_endpoint: state.Prefs.values.fxa_endpoint }); const StartupOverlay = Object(react_redux__WEBPACK_IMPORTED_MODULE_2__["connect"])(getState)(Object(react_intl__WEBPACK_IMPORTED_MODULE_1__["injectIntl"])(_StartupOverlay)); /***/ }), -/* 40 */ +/* 42 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DetectUserSessionStart", function() { return DetectUserSessionStart; }); /* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var common_PerfService_jsm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31); +/* harmony import */ var common_PerfService_jsm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33); @@ -5656,7 +5919,7 @@ class DetectUserSessionStart { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1))) /***/ }), -/* 41 */ +/* 43 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -5679,7 +5942,7 @@ function enableASRouterContent(store, asrouterContent) { } /***/ }), -/* 42 */ +/* 44 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -5716,7 +5979,7 @@ const Button = props => { ); }; // EXTERNAL MODULE: ./node_modules/fluent-react/src/index.js + 7 modules -var src = __webpack_require__(44); +var src = __webpack_require__(46); // EXTERNAL MODULE: ./content-src/asrouter/rich-text-strings.js var rich_text_strings = __webpack_require__(7); @@ -6264,6 +6527,12 @@ class SubmitFormSnippet_SubmitFormSnippet extends external_React_default.a.PureC external_React_default.a.createElement( "p", null, + content.scene2_title ? external_React_default.a.createElement( + "h3", + { className: "scene2Title" }, + content.scene2_title + ) : null, + " ", content.scene2_text ) ), @@ -6341,12 +6610,14 @@ var NewsletterSnippet_extends = Object.assign || function (target) { for (var i const NewsletterSnippet = props => { const extendedContent = Object.assign({ - form_action: "https://basket.mozilla.org/subscribe.json" + form_action: "https://basket.mozilla.org/subscribe.json", + scene2_email_placeholder_text: "Your Email Here", + scene2_button_label: "Sign Me Up" }, props.content, { hidden_inputs: Object.assign({ newsletters: props.content.scene2_newsletter || "mozilla-foundation", fmt: "H", - lang: "en-US", + lang: props.content.locale || "en-US", source_url: `https://snippets.mozilla.com/show/${props.id}` }, props.content.hidden_inputs) }); @@ -6446,7 +6717,7 @@ const SnippetsTemplates = { }; /***/ }), -/* 43 */ +/* 45 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -8547,7 +8818,7 @@ function ftl(strings) { /***/ }), -/* 44 */ +/* 46 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -8560,7 +8831,7 @@ var external_PropTypes_ = __webpack_require__(10); var external_PropTypes_default = /*#__PURE__*/__webpack_require__.n(external_PropTypes_); // EXTERNAL MODULE: ./node_modules/fluent/src/index.js + 8 modules -var src = __webpack_require__(43); +var src = __webpack_require__(45); // CONCATENATED MODULE: ./node_modules/fluent-react/src/localization.js @@ -9062,7 +9333,7 @@ localized_Localized.propTypes = { /***/ }), -/* 45 */ +/* 47 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -9544,151 +9815,7 @@ function Pocket(prevState = INITIAL_STATE.Pocket, action) { var reducers = { TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket }; /***/ }), -/* 46 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - -// EXTERNAL MODULE: external "React" -var external_React_ = __webpack_require__(9); -var external_React_default = /*#__PURE__*/__webpack_require__.n(external_React_); - -// CONCATENATED MODULE: ./content-src/asrouter/components/ModalOverlay/ModalOverlay.jsx - - -class ModalOverlay_ModalOverlay extends external_React_default.a.PureComponent { - componentWillMount() { - this.setState({ active: true }); - document.body.classList.add("modal-open"); - } - - componentWillUnmount() { - document.body.classList.remove("modal-open"); - this.setState({ active: false }); - } - - render() { - const { active } = this.state; - const { title, button_label } = this.props; - return external_React_default.a.createElement( - "div", - null, - external_React_default.a.createElement("div", { className: `modalOverlayOuter ${active ? "active" : ""}` }), - external_React_default.a.createElement( - "div", - { className: `modalOverlayInner ${active ? "active" : ""}` }, - external_React_default.a.createElement( - "h2", - null, - " ", - title, - " " - ), - this.props.children, - external_React_default.a.createElement( - "div", - { className: "footer" }, - external_React_default.a.createElement( - "button", - { tabIndex: "2", onClick: this.props.onDoneButton, className: "button primary modalButton" }, - " ", - button_label, - " " - ) - ) - ) - ); - } -} -// CONCATENATED MODULE: ./content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.jsx -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OnboardingMessage", function() { return OnboardingMessage_OnboardingMessage; }); -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - - - - -class OnboardingMessage_OnboardingCard extends external_React_default.a.PureComponent { - constructor(props) { - super(props); - this.onClick = this.onClick.bind(this); - } - - onClick() { - const { props } = this; - const ping = { - event: "CLICK_BUTTON", - message_id: props.id, - id: props.UISurface - }; - props.sendUserActionTelemetry(ping); - props.onAction(props.content.button_action); - } - - render() { - const { content } = this.props; - return external_React_default.a.createElement( - "div", - { className: "onboardingMessage" }, - external_React_default.a.createElement("div", { className: `onboardingMessageImage ${content.icon}` }), - external_React_default.a.createElement( - "div", - { className: "onboardingContent" }, - external_React_default.a.createElement( - "span", - null, - external_React_default.a.createElement( - "h3", - null, - " ", - content.title, - " " - ), - external_React_default.a.createElement( - "p", - null, - " ", - content.text, - " " - ) - ), - external_React_default.a.createElement( - "span", - null, - external_React_default.a.createElement( - "button", - { tabIndex: "1", className: "button onboardingButton", onClick: this.onClick }, - " ", - content.button_label, - " " - ) - ) - ) - ); - } -} - -class OnboardingMessage_OnboardingMessage extends external_React_default.a.PureComponent { - render() { - const { props } = this; - const { button_label, header } = props.extraTemplateStrings; - return external_React_default.a.createElement( - ModalOverlay_ModalOverlay, - _extends({}, props, { button_label: button_label, title: header }), - external_React_default.a.createElement( - "div", - { className: "onboardingMessageContainer" }, - props.bundle.map(message => external_React_default.a.createElement(OnboardingMessage_OnboardingCard, _extends({ key: message.id, - sendUserActionTelemetry: props.sendUserActionTelemetry, - onAction: props.onAction, - UISurface: props.UISurface - }, message))) - ) - ); - } -} - -/***/ }), -/* 47 */ +/* 48 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -9697,7 +9824,7 @@ class OnboardingMessage_OnboardingMessage extends external_React_default.a.PureC var Actions = __webpack_require__(2); // EXTERNAL MODULE: external "ReactIntl" -var external_ReactIntl_ = __webpack_require__(13); +var external_ReactIntl_ = __webpack_require__(15); // CONCATENATED MODULE: ./content-src/components/Card/types.js const cardContextTypes = { @@ -9727,20 +9854,20 @@ const cardContextTypes = { } }; // EXTERNAL MODULE: external "ReactRedux" -var external_ReactRedux_ = __webpack_require__(16); +var external_ReactRedux_ = __webpack_require__(18); // EXTERNAL MODULE: ./content-src/lib/link-menu-options.js -var link_menu_options = __webpack_require__(23); +var link_menu_options = __webpack_require__(25); // EXTERNAL MODULE: ./content-src/components/LinkMenu/LinkMenu.jsx -var LinkMenu = __webpack_require__(24); +var LinkMenu = __webpack_require__(26); // EXTERNAL MODULE: external "React" var external_React_ = __webpack_require__(9); var external_React_default = /*#__PURE__*/__webpack_require__.n(external_React_); // EXTERNAL MODULE: ./content-src/lib/screenshot-utils.js -var screenshot_utils = __webpack_require__(26); +var screenshot_utils = __webpack_require__(28); // CONCATENATED MODULE: ./content-src/components/Card/Card.jsx /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_Card", function() { return Card_Card; }); @@ -10052,7 +10179,7 @@ const Card = Object(external_ReactRedux_["connect"])(state => ({ platform: state const PlaceholderCard = props => external_React_default.a.createElement(Card, { placeholder: true, className: props.className }); /***/ }), -/* 48 */ +/* 49 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -10061,14 +10188,14 @@ const PlaceholderCard = props => external_React_default.a.createElement(Card, { var Actions = __webpack_require__(2); // EXTERNAL MODULE: external "ReactIntl" -var external_ReactIntl_ = __webpack_require__(13); +var external_ReactIntl_ = __webpack_require__(15); // EXTERNAL MODULE: external "React" var external_React_ = __webpack_require__(9); var external_React_default = /*#__PURE__*/__webpack_require__.n(external_React_); // EXTERNAL MODULE: ./content-src/components/TopSites/TopSitesConstants.js -var TopSitesConstants = __webpack_require__(36); +var TopSitesConstants = __webpack_require__(38); // CONCATENATED MODULE: ./content-src/components/TopSites/TopSiteFormInput.jsx @@ -10146,7 +10273,7 @@ TopSiteFormInput_TopSiteFormInput.defaultProps = { validationError: false }; // EXTERNAL MODULE: ./content-src/components/TopSites/TopSite.jsx -var TopSite = __webpack_require__(38); +var TopSite = __webpack_require__(40); // CONCATENATED MODULE: ./content-src/components/TopSites/TopSiteForm.jsx /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TopSiteForm", function() { return TopSiteForm_TopSiteForm; }); diff --git a/browser/components/newtab/data/content/activity-stream.bundle.js.map b/browser/components/newtab/data/content/activity-stream.bundle.js.map index a175d2cb1950b..3782ecb0eac9e 100644 --- a/browser/components/newtab/data/content/activity-stream.bundle.js.map +++ b/browser/components/newtab/data/content/activity-stream.bundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./content-src/activity-stream.jsx","webpack:///(webpack)/buildin/global.js","webpack:///./common/Actions.jsm","webpack:///./content-src/lib/snippets.js","webpack:///./content-src/asrouter/asrouter-content.jsx","webpack:///./content-src/lib/init-store.js","webpack:///external \"Redux\"","webpack:///./content-src/asrouter/rich-text-strings.js","webpack:///./content-src/asrouter/components/ImpressionsWrapper/ImpressionsWrapper.jsx","webpack:///external \"React\"","webpack:///external \"PropTypes\"","webpack:///external \"ReactDOM\"","webpack:///./content-src/components/Base/Base.jsx","webpack:///external \"ReactIntl\"","webpack:///./content-src/components/ASRouterAdmin/ASRouterAdmin.jsx","webpack:///./content-src/components/ConfirmDialog/ConfirmDialog.jsx","webpack:///external \"ReactRedux\"","webpack:///./content-src/components/ErrorBoundary/ErrorBoundary.jsx","webpack:///./content-src/components/ManualMigration/ManualMigration.jsx","webpack:///./common/PrerenderData.jsm","webpack:///./content-src/components/Search/Search.jsx","webpack:///./content-src/lib/constants.js","webpack:///./content-src/components/Sections/Sections.jsx","webpack:///./content-src/lib/link-menu-options.js","webpack:///./content-src/components/LinkMenu/LinkMenu.jsx","webpack:///./content-src/components/ContextMenu/ContextMenu.jsx","webpack:///./content-src/lib/screenshot-utils.js","webpack:///./content-src/components/CollapsibleSection/CollapsibleSection.jsx","webpack:///./content-src/components/SectionMenu/SectionMenu.jsx","webpack:///./content-src/lib/section-menu-options.js","webpack:///./content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx","webpack:///./common/PerfService.jsm","webpack:///./content-src/components/MoreRecommendations/MoreRecommendations.jsx","webpack:///./content-src/components/PocketLoggedInCta/PocketLoggedInCta.jsx","webpack:///./content-src/components/Topics/Topics.jsx","webpack:///./content-src/components/TopSites/TopSites.jsx","webpack:///./content-src/components/TopSites/TopSitesConstants.js","webpack:///./content-src/components/TopSites/SearchShortcutsForm.jsx","webpack:///./content-src/components/TopSites/TopSite.jsx","webpack:///./content-src/components/StartupOverlay/StartupOverlay.jsx","webpack:///./content-src/lib/detect-user-session-start.js","webpack:///./content-src/lib/asroutercontent.js","webpack:///./content-src/asrouter/components/Button/Button.jsx","webpack:///./content-src/asrouter/template-utils.js","webpack:///./content-src/asrouter/components/RichText/RichText.jsx","webpack:///./content-src/asrouter/components/SnippetBase/SnippetBase.jsx","webpack:///./content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.jsx","webpack:///./content-src/asrouter/templates/EOYSnippet/EOYSnippet.jsx","webpack:///./content-src/asrouter/templates/SubmitFormSnippet/SubmitFormSnippet.jsx","webpack:///./content-src/asrouter/templates/FXASignupSnippet/FXASignupSnippet.jsx","webpack:///./content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.jsx","webpack:///./content-src/asrouter/templates/SendToDeviceSnippet/isEmailOrPhoneNumber.js","webpack:///./content-src/asrouter/templates/SendToDeviceSnippet/SendToDeviceSnippet.jsx","webpack:///./content-src/asrouter/templates/template-manifest.jsx","webpack:///./node_modules/fluent/src/parser.js","webpack:///./node_modules/fluent/src/types.js","webpack:///./node_modules/fluent/src/builtins.js","webpack:///./node_modules/fluent/src/resolver.js","webpack:///./node_modules/fluent/src/context.js","webpack:///./node_modules/fluent/src/cached_iterable.js","webpack:///./node_modules/fluent/src/fallback.js","webpack:///./node_modules/fluent/src/util.js","webpack:///./node_modules/fluent/src/index.js","webpack:///./node_modules/fluent-react/src/localization.js","webpack:///./node_modules/fluent-react/src/provider.js","webpack:///./node_modules/fluent-react/src/with_localization.js","webpack:///./node_modules/fluent-react/src/markup.js","webpack:///./node_modules/fluent-react/vendor/omittedCloseTags.js","webpack:///./node_modules/fluent-react/vendor/voidElementTags.js","webpack:///./node_modules/fluent-react/src/localized.js","webpack:///./node_modules/fluent-react/src/index.js","webpack:///./common/Dedupe.jsm","webpack:///./common/Reducers.jsm","webpack:///./content-src/asrouter/components/ModalOverlay/ModalOverlay.jsx","webpack:///./content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.jsx","webpack:///./content-src/components/Card/types.js","webpack:///./content-src/components/Card/Card.jsx","webpack:///./content-src/components/TopSites/TopSiteFormInput.jsx","webpack:///./content-src/components/TopSites/TopSiteForm.jsx"],"names":["store","initStore","global","gActivityStreamPrerenderedState","asrouterContent","sendEventOrAddListener","dispatch","ac","AlsoToMain","type","at","NEW_TAB_STATE_REQUEST","ReactDOM","hydrate","document","location","href","documentElement","lang","gActivityStreamStrings","getElementById","enableASRouterContent","addSnippetsSubscriber","globalImportContext","Window","BACKGROUND_PROCESS","UI_CODE","actionTypes","ASRouterActions","_RouteMessage","action","options","meta","from","to","Error","forEach","o","fromTarget","skipLocal","CONTENT_MESSAGE_TYPE","MAIN_MESSAGE_TYPE","OnlyToMain","BroadcastToContent","AlsoToOneContent","target","skipMain","toTarget","OnlyToOneContent","AlsoToPreloaded","PRELOAD_MESSAGE_TYPE","UserEvent","data","TELEMETRY_USER_EVENT","ASRouterUserEvent","AS_ROUTER_TELEMETRY_USER_EVENT","UndesiredEvent","importContext","TELEMETRY_UNDESIRED_EVENT","PerfEvent","TELEMETRY_PERFORMANCE_EVENT","ImpressionStats","TELEMETRY_IMPRESSION_STATS","SetPref","name","value","SET_PREF","WebExtEvent","source","isSendToMain","isBroadcastToContent","isSendToOneContent","isSendToPreloaded","isFromMain","getPortIdOfSender","DATABASE_NAME","DATABASE_VERSION","SNIPPETS_OBJECTSTORE_NAME","SNIPPETS_UPDATE_INTERVAL_MS","SNIPPETS_ENABLED_EVENT","SNIPPETS_DISABLED_EVENT","SnippetsMap","Map","constructor","_db","_dispatch","set","key","_dbTransaction","db","put","delete","clear","SNIPPETS_BLOCKLIST_CLEARED","blockList","get","blockSnippetById","id","includes","push","SNIPPETS_BLOCKLIST_UPDATED","disableOnboarding","showFirefoxAccounts","SHOW_FIREFOX_ACCOUNTS","getTotalBookmarksCount","Promise","resolve","TOTAL_BOOKMARKS_REQUEST","RPMAddMessageListener","onMessage","TOTAL_BOOKMARKS_RESPONSE","RPMRemoveMessageListener","getAddonsInfo","ADDONS_INFO_REQUEST","ADDONS_INFO_RESPONSE","connect","_openDB","_restoreFromDb","modifier","reject","transaction","objectStore","onsuccess","event","onerror","error","openRequest","indexedDB","open","deleteDatabase","onupgradeneeded","result","objectStoreNames","contains","createObjectStore","err","console","onversionchange","versionChangeEvent","close","cursorRequest","openCursor","cursor","continue","SnippetsProvider","gSnippetsMap","_onAction","bind","snippetsMap","_refreshSnippets","cachedVersion","appData","version","lastUpdate","needsUpdate","Date","now","snippetsURL","response","fetch","status","payload","text","e","_noSnippetFallback","_showRemoteSnippets","snippetsEl","elementId","innerHTML","scriptEl","getElementsByTagName","relocatedScript","createElement","parentNode","replaceChild","msg","SNIPPET_BLOCKED","concat","style","display","init","Object","assign","keys","window","dispatchEvent","Event","initialized","uninit","snippets","initializing","subscribe","state","getState","Prefs","values","ASRouter","allowLegacySnippets","disableSnippets","Snippets","hash","log","INCOMING_MESSAGE_NAME","OUTGOING_MESSAGE_NAME","ASR_CONTAINER_ID","ASRouterUtils","addListener","listener","removeListener","sendMessage","RPMSendAsyncMessage","blockById","dismissById","blockBundle","bundle","executeAction","button_action","unblockById","unblockBundle","overrideMessage","sendTelemetry","ping","getPreviewEndpoint","params","URLSearchParams","slice","indexOf","endpoint","URL","url","snippetId","shouldSendImpressionOnUpdate","nextProps","prevProps","message","ASRouterUISurface","React","PureComponent","props","onMessageFromParent","sendClick","sendImpression","sendUserActionTelemetry","extraProps","message_id","eventType","provider","metric","dataset","args","content","do_not_autoblock","onBlockById","onDismissById","clearBundle","setState","componentWillMount","trigger","componentWillUnmount","renderSnippets","SnippetComponent","SnippetsTemplates","template","generateMessages","renderOnboarding","renderPreviewBanner","render","defaultProps","ASRouterContent","containerElement","_mount","zIndex","body","appendChild","_unmount","unmountComponentAtNode","MERGE_STORE_ACTION","EARLY_QUEUED_ACTIONS","SAVE_SESSION_PERF_DATA","PAGE_PRERENDERED","mergeStateReducer","mainReducer","prevState","messageMiddleware","next","au","rehydrationMiddleware","_didRehydrate","isMergeStoreAction","isRehydrationRequest","_didRequestInitialState","INIT","queueEarlyMessageMiddleware","_receivedFromMain","_earlyActionQueue","reducers","initialState","createStore","combineReducers","applyMiddleware","ex","dump","JSON","stringify","stack","RICH_TEXT_CONFIG","RICH_TEXT_KEYS","cx","attrs","attrsToTry","Array","isArray","string","length","attr","pop","addMessages","VISIBLE","VISIBILITY_CHANGE_EVENT","ImpressionsWrapper","sendImpressionOrAddListener","visibilityState","_onVisibilityChange","removeEventListener","addEventListener","componentDidMount","sendOnMount","componentDidUpdate","children","PrefsButton","injectIntl","onClick","intl","formatMessage","addLocaleDataForReactIntl","locale","addLocaleData","parentLocale","debounce","func","wait","timer","wakeUp","setTimeout","apply","_Base","isFirstrun","classList","add","isPrerendered","updateTheme","componentWillUpdate","bodyClassName","filter","v","join","className","App","strings","prefs","BaseContent","openPreferences","onWindowScroll","fixedSearch","SCROLL_THRESHOLD","scrollY","SETTINGS_OPEN","shouldBeFixedToTop","PrerenderData","arePrefsValid","noSectionsEnabled","Sections","section","enabled","outerClassName","showSearch","migrationExpired","Base","ASRouterAdmin","handleEnabledToggle","handleUserPrefToggle","onChangeMessageFilter","findOtherBundledMessagesOfSameTemplate","handleExpressionEval","onChangeTargetingParameters","messageFilter","evaluationStatus","stringTargetingParameters","param","targetingParameters","messages","bundled","handleBlock","handleUnblock","handleOverride","expireCache","resetPref","context","parse","expression","refs","expressionInput","innerText","targetingParametersError","updatedParameters","renderMessageItem","isCurrent","lastMessageId","isBlocked","messageBlockList","impressions","messageImpressions","itemClassName","renderMessages","messagesToShow","map","renderMessageFilter","providers","renderTableHead","providerPrefs","find","p","userPrefInfo","userPrefs","isUserEnabled","isSystemEnabled","isEnabling","checked","renderProviders","providersConfig","providerInfo","i","isTestProvider","info","label","displayUrl","hostname","bucket","reasonsDisabled","whiteSpace","lastUpdated","toLocaleString","renderTargetingParameters","success","errorState","inputComp","_ConfirmDialog","_handleCancelBtn","_handleConfirmBtn","DIALOG_CANCEL","eventSource","onConfirm","_renderModalMessage","message_body","body_string_id","visible","icon","cancel_button_string_id","confirm_button_string_id","ConfirmDialog","Dialog","ErrorBoundaryFallback","windowObj","reload","defaultClass","ErrorBoundary","hasError","componentDidCatch","FallbackComponent","_ManualMigration","onLaunchTour","onCancelTour","MIGRATION_START","MIGRATION_CANCEL","ManualMigration","_PrerenderData","initialPrefs","initialSections","_setValidation","validation","_validation","invalidatingPrefs","_invalidatingPrefs","reduce","oneOf","getPref","indexedDBPrefs","some","anyModifiedPrefs","prefName","pref","order","title","_Search","onInputMount","handleEvent","detail","gContentSearchController","search","input","healthReportKey","IS_NEWTAB","searchSource","ContentSearchUIController","showLogo","Search","documentURI","CARDS_PER_ROW_DEFAULT","CARDS_PER_ROW_COMPACT_WIDE","getFormattedMessage","Section","numRows","rowsPref","maxRows","_dispatchImpressionStats","cardsPerRow","compactCards","matchMedia","matches","maxCards","cards","rows","needsImpressionStats","tiles","link","guid","impressionCardGuids","sendImpressionStatsOrAddListener","shouldSendImpressionStats","collapsed","sendNewTabRehydrated","isCollapsed","wasCollapsed","renderNotified","NEW_TAB_REHYDRATED","Pocket","topics","emptyState","read_more_endpoint","contextMenuOptions","learnMore","privacyNoticeURL","isFirst","isLast","waitingForSpoc","maxCardsPerRow","maxCardsOnNarrow","pocketCta","isUserLoggedIn","useCta","isPocketLoggedInDefined","shouldShowPocketCta","shouldShowTopics","realRows","shouldShowEmptyState","usePlaceholder","isWebExtension","sectionClassName","feed","padding","startsWith","SectionIntl","_Sections","renderSections","sections","enabledSections","sectionOrder","showTopSites","expectedCount","sectionId","split","commonProps","s","_OpenInPrivateWindow","site","OPEN_PRIVATE_WINDOW","referrer","userEvent","GetPlatformString","platform","LinkMenuOptions","Separator","EmptyItem","RemoveBookmark","DELETE_BOOKMARK_BY_ID","bookmarkGuid","AddBookmark","BOOKMARK_URL","OpenInNewWindow","OPEN_NEW_WINDOW","typedBonus","BlockUrl","index","BLOCK_URL","open_url","pocket_id","impression","block","pos","WebExtDismiss","string_id","WEBEXT_DISMISS","action_position","DeleteUrl","isEnabled","siteInfo","DIALOG_OPEN","DELETE_HISTORY_URL","forceBlock","ShowFile","SHOW_DOWNLOAD_FILE","OpenFile","OPEN_DOWNLOAD_FILE","CopyDownloadLink","COPY_DOWNLOAD_LINK","GoToDownloadPage","OPEN_LINK","disabled","RemoveDownload","REMOVE_DOWNLOAD_FILE","PinTopSite","searchTopSite","TOP_SITES_PIN","UnpinTopSite","TOP_SITES_UNPIN","SaveToPocket","SAVE_TO_POCKET","pocket","DeleteFromPocket","DELETE_FROM_POCKET","ArchiveFromPocket","ARCHIVE_FROM_POCKET","EditTopSite","TOP_SITES_EDIT","CheckBookmark","CheckPinTopSite","isPinned","CheckSavedToPocket","CheckBookmarkOrArchive","OpenInPrivateWindow","DEFAULT_SITE_MENU_OPTIONS","_LinkMenu","getOptions","isPrivateBrowsingEnabled","propOptions","isDefault","option","userEventData","first","last","onUpdate","LinkMenu","ContextMenu","hideContext","stopPropagation","ContextMenuItem","onKeyDown","shiftKey","ScreenshotUtils","isBlob","isLocal","image","path","createLocalImageObject","remoteImage","createObjectURL","maybeRevokeBlobObjectURL","localImage","revokeObjectURL","isRemoteImageLocal","_CollapsibleSection","onBodyMount","onHeaderClick","onTransitionEnd","enableOrDisableAnimation","onMenuButtonClick","onMenuButtonMouseEnter","onMenuButtonMouseLeave","onMenuUpdate","enableAnimation","isAnimating","menuButtonHover","showContextMenu","sectionBody","scrollHeight","node","undefined","maxHeight","_getSectionBodyHeight","SectionMenuOptions","CheckCollapsed","div","currentTarget","renderIcon","backgroundImage","preventDefault","isCollapsible","extraMenuOptions","showPrefName","active","bodyStyle","CollapsibleSection","DEFAULT_SECTION_MENU_OPTIONS","WEBEXT_SECTION_MENU_OPTIONS","_SectionMenu","extraOptions","splice","SectionMenu","MoveUp","SECTION_MOVE","direction","MoveDown","RemoveSection","CollapseSection","UPDATE_SECTION_PREFS","ExpandSection","ManageSection","ManageWebExtension","OPEN_WEBEXT_SETTINGS","AddTopSite","AddSearchShortcut","TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL","PrivacyNotice","RECORDED_SECTIONS","ComponentPerfTimer","Component","perfSvc","_sendBadStateEvent","_sendPaintedEvent","_reportMissingData","_timestampHandled","_recordedFirstRender","_maybeSendPaintedEvent","_afterFramePaint","callback","requestAnimationFrame","_maybeSendBadStateEvent","_ensureFirstRenderTsRecorded","mark","dataReadyKey","firstRenderKey","parseInt","getMostRecentAbsMarkStartByName","ChromeUtils","import","usablePerfObj","Services","appShell","hiddenDOMWindow","performance","_PerfService","performanceObj","_perf","prototype","str","getEntriesByName","timeOrigin","absNow","entries","mostRecentEntry","startTime","MoreRecommendations","_PocketLoggedInCta","ctaUrl","ctaButton","ctaText","PocketLoggedInCta","Topic","Topics","t","topSiteIconType","customScreenshotURL","tippyTopIcon","faviconRef","faviconSize","screenshot","countTopSitesIconsTypes","topSites","countTopSitesTypes","acc","_TopSites","onEditFormClose","onSearchShortcutsFormClose","_dispatchTopSitesStats","_getVisibleTopSites","topSitesIconsStats","topSitesPinned","searchShortcuts","topsites_icon_stats","topsites_pinned","topsites_search_shortcuts","sitesPerRow","TopSites","TopSitesRows","TOP_SITES_CANCEL_EDIT","TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL","editForm","showSearchShortcutsForm","topSitesRows","TOP_SITES_SOURCE","TOP_SITES_CONTEXT_MENU_OPTIONS","TOP_SITES_SEARCH_SHORTCUTS_CONTEXT_MENU_OPTIONS","MIN_RICH_FAVICON_SIZE","MIN_CORNER_FAVICON_SIZE","SelectableSearchShortcut","shortcut","selected","imageStyle","keyword","onChange","SearchShortcutsForm","handleChange","onCancelButtonClick","onSaveButtonClick","shortcuts","isSelected","row","ev","onClose","pinQueue","unpinQueue","alreadyPinned","_searchTopSite","searchVendor","shortURL","UPDATE_PINNED_SEARCH_SHORTCUTS","addedShortcuts","deletedShortcuts","search_vendor","TopSiteLink","screenshotImage","onDragEvent","onKeyPress","_allowDrop","dataTransfer","types","dragged","effectAllowed","setData","blur","button","getNextStateFromProps","imageInState","nextState","componentWillReceiveProps","defaultStyle","isDraggable","topSiteOuterClassName","isDragged","letterFallback","imageClassName","showSmallFavicon","smallFaviconStyle","smallFaviconFallback","hasScreenshotImage","backgroundColor","favicon","draggableProps","onDragEnd","onDragStart","onMouseDown","TopSite","onLinkClick","_getTelemetryInfo","icon_type","iconType","card_type","altKey","ctrlKey","metaKey","FILL_SEARCH_TERM","onActivate","isContextMenuOpen","activeIndex","TopSitePlaceholder","onEditButtonClick","_TopSiteList","DEFAULT_STATE","draggedIndex","draggedSite","draggedTitle","topSitesPreview","prevTopSites","newTopSites","dropped","_makeTopSitesPreview","TOP_SITES_INSERT","draggedFromIndex","_getTopSites","pinnedOnly","unpinned","siteToInsert","holeIndex","indexStep","shiftingStep","nextIndex","preview","shift","topSitesUI","maxNarrowVisibleIndex","l","slotProps","TopSiteList","_StartupOverlay","onInputChange","onSubmit","clickSkip","initScene","removeOverlay","onInputInvalid","emailInput","overlayRemoved","flowId","flowBeginTime","didFetch","fxa_endpoint","fxaParams","json","show","remove","previousSibling","_getFormInfo","has_flow_params","focus","termsLink","privacyLink","terms","privacy","StartupOverlay","DetectUserSessionStart","_store","_perfService","perfService","_sendEvent","visibility_event_rcvd_ts","ALLOWED_STYLE_TAGS","Button","tag","border","safeURI","protocol","isAllowed","warn","ALLOWED_TAGS","b","u","strong","em","br","convertLinks","links","doNotAutoBlock","linkTag","RichText","localization_id","customElements","onBlockClicked","UISurface","onBlock","renderDismissButton","footerDismiss","onDismiss","scene2_dismiss_button_text","block_button_text","containerClassName","textStyle","DEFAULT_ICON_PATH","onButtonClick","button_url","onAction","button_action_args","renderTitle","renderTitleIcon","titleIcon","title_icon","renderButton","button_color","button_background_color","button_label","renderText","tall","extraContent","handleSubmit","setFrequencyValue","frequencyCheckbox","form","querySelector","submit","renderDonations","fieldNames","numberFormat","Intl","NumberFormat","navigator","language","currency","currency_code","minimumFractionDigits","selected_button","btnStyle","color","donation_form_url","form_method","field","idx","button_name","amount","format","monthly_checkbox_label_text","text_color","background_color","customElement","highlight_color","test","EOYSnippet","extendedContent","expandSnippet","expanded","signupSubmitted","signupSuccess","disableForm","toUpperCase","formData","processFormData","mainInput","FormData","fetchRequest","Request","method","preventDismiss","renderHiddenFormInputs","hidden_inputs","renderDisclaimer","scene2_disclaimer_html","renderFormPrivacyNotice","scene2_privacy_html","renderSignupSubmitted","isSuccess","successTitle","success_title","bodyText","success_text","error_text","retryButtonText","scene1_button_label","validateInput","setCustomValidity","renderInput","placholder","scene2_email_placeholder_text","scene2_input_placeholder","inputType","renderSignupView","containerClass","scene2_icon","scene2_text","form_action","scene2_button_label","getFirstSceneContent","substr","FXASignupSnippet","userAgent","match","firefox_version","entrypoint","service","utm_source","utm_content","utm_campaign","utm_term","NewsletterSnippet","newsletters","scene2_newsletter","fmt","source_url","isEmailOrPhoneNumber","val","email_re","check_email","check_phone","isNaN","include_sms","append","message_id_sms","country","message_id_email","encodeURIComponent","SendToDeviceSnippet","simple_snippet","newsletter_snippet","fxa_signup_snippet","send_to_device_snippet","eoy_snippet","MAX_PLACEABLES","entryIdentifierRe","identifierRe","functionIdentifierRe","RuntimeParser","getResource","_source","_index","_length","errors","skipWS","getEntry","SyntaxError","skipToNextEntryStart","ch","skipComment","skipSection","getMessage","skipInlineWS","getVariantName","getEntryIdentifier","getPattern","lineStart","getAttributes","skipBlankLines","ptr","getIdentifier","re","lastIndex","exec","toString","start","cc","charCodeAt","getString","substring","eol","firstLineContent","getComplexPattern","buffer","placeables","blankLinesStart","blankLinesEnd","ch2","getPlaceable","variants","getVariants","exp","vars","def","selector","getSelectorExpression","literal","getLiteral","getVariantKey","getCallArgs","fun","lastIndexOf","getNumber","num","defaultIndex","cc0","cc1","parser","FluentType","opts","valueOf","FluentNone","FluentNumber","parseFloat","ctx","nf","_memoizeIntlObject","other","FluentDateTime","dtf","DateTimeFormat","FluentSymbol","pr","PluralRules","select","arg","merge","argopts","unwrapped","opt","MAX_PLACEABLE_LENGTH","FSI","PDI","DefaultMember","env","members","RangeError","MessageReference","_terms","_messages","ReferenceError","VariantExpression","Type","isVariantList","variant","variantKey","AttributeExpression","attrName","SelectExpression","keyCanMatch","expr","Pattern","ExternalArgument","FunctionReference","CallExpression","member","hasOwnProperty","TypeError","_functions","builtins","callee","posargs","keyargs","ptn","dirty","has","useIsolating","_useIsolating","elem","part","WeakSet","locales","functions","_intls","WeakMap","Symbol","iterator","hasMessage","ctor","cache","CachedIterable","iterable","asyncIterator","seen","cur","touchNext","done","mapContextSync","ids","getContextForId","remainingCount","foundContexts","fill","mapContextAsync","nonBlank","line","countIndent","indent","ftl","code","lines","indents","common","Math","min","RegExp","replace","contexts","subs","Set","comp","unsubscribe","setMessages","relocalize","getMessageContext","formatCompound","mcx","fallback","isReactLocalization","propName","prop","l10n","getChildContext","Children","only","LocalizationProvider","childContextTypes","propTypes","PropTypes","element","isRequired","isIterable","componentName","withLocalization","Inner","WithLocalization","forceUpdate","displayName","contextTypes","component","TEMPLATE","parseMarkup","omittedCloseTags","area","base","col","embed","hr","img","keygen","track","wbr","voidElementTags","menuitem","reMarkup","toArguments","elems","propname","propval","isValidElement","toLowerCase","messageValue","messageAttrs","localizedProps","cloneElement","translationNodes","childNodes","translatedChildren","childNode","nodeType","TEXT_NODE","textContent","localName","sourceChild","Localized","Dedupe","createKey","defaultCreateKey","item","group","groups","globalKeys","valueMap","m","TOP_SITES_DEFAULT_ROWS","TOP_SITES_MAX_SITES_PER_ROW","dedupe","INITIAL_STATE","AS_ROUTER_INITIALIZED","AS_ROUTER_PREF_CHANGED","insertPinned","pinned","pinnedUrls","newLinks","pinIndex","hasMatch","newRows","TOP_SITES_UPDATED","TOP_SITES_PREFS_UPDATED","previewResponse","PREVIEW_RESPONSE","previewUrl","PREVIEW_REQUEST","PREVIEW_REQUEST_CANCEL","SCREENSHOT_UPDATED","PLACES_BOOKMARK_ADDED","bookmarkTitle","dateAdded","bookmarkDateCreated","PLACES_BOOKMARK_REMOVED","newSite","PLACES_LINK_DELETED","UPDATE_SEARCH_SHORTCUTS","SNIPPETS_PREVIEW_MODE","newValues","PREFS_INITIAL_VALUES","PREF_CHANGED","newState","SECTION_DEREGISTER","SECTION_REGISTER","SECTION_UPDATE","card","dedupeConfigurations","dedupeConf","dedupedRows","dedupeFrom","dedupeSectionId","dedupeSection","SECTION_UPDATE_CARD","PLACES_SAVED_TO_POCKET","PLACES_LINK_BLOCKED","SNIPPETS_DATA","SNIPPETS_RESET","POCKET_WAITING_FOR_SPOC","POCKET_LOGGED_IN","POCKET_CTA","cta_button","cta_text","cta_url","use_cta","onDoneButton","header","extraTemplateStrings","cardContextTypes","history","intlID","bookmark","trending","download","gImageLoading","activeCard","imageLoaded","cardImage","maybeLoadImage","imageUrl","loaderPromise","loader","Image","src","catch","then","WEBEXT_CLICK","click","_Card","hasImage","placeholder","description","Card","PlaceholderCard","validationError","onMount","shouldFocus","showClearButton","onClear","typeUrl","titleId","loading","placeholderId","errorMessageId","TopSiteFormInput","customScreenshotUrl","showCustomScreenshotForm","onClearScreenshotInput","onLabelChange","onUrlChange","onClearUrlClick","onDoneButtonClick","onCustomScreenshotUrlChange","onPreviewButtonClick","onEnableScreenshotUrlForm","validateUrl","_updateCustomScreenshotInput","validateForm","cleanUrl","_tryParseUrl","validProtocols","urlObj","validateCustomScreenshotUrl","validate","_renderCustomScreenshotInput","requestFailed","isLoading","showAsAdd","previous","changed","previewMode","previewLink","TopSiteForm"],"mappings":"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","file":"activity-stream.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addSnippetsSubscriber} from \"content-src/lib/snippets\";\nimport {ASRouterContent} from \"content-src/asrouter/asrouter-content\";\nimport {Base} from \"content-src/components/Base/Base\";\nimport {DetectUserSessionStart} from \"content-src/lib/detect-user-session-start\";\nimport {enableASRouterContent} from \"content-src/lib/asroutercontent\";\nimport {initStore} from \"content-src/lib/init-store\";\nimport {Provider} from \"react-redux\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {reducers} from \"common/Reducers.jsm\";\n\nconst store = initStore(reducers, global.gActivityStreamPrerenderedState);\nconst asrouterContent = new ASRouterContent();\n\nnew DetectUserSessionStart(store).sendEventOrAddListener();\n\n// If we are starting in a prerendered state, we must wait until the first render\n// to request state rehydration (see Base.jsx). If we are NOT in a prerendered state,\n// we can request it immedately.\nif (!global.gActivityStreamPrerenderedState) {\n store.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n}\n\nReactDOM.hydrate(\n \n, document.getElementById(\"root\"));\n\nenableASRouterContent(store, asrouterContent);\naddSnippetsSubscriber(store);\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nthis.MAIN_MESSAGE_TYPE = \"ActivityStream:Main\";\nthis.CONTENT_MESSAGE_TYPE = \"ActivityStream:Content\";\nthis.PRELOAD_MESSAGE_TYPE = \"ActivityStream:PreloadedBrowser\";\nthis.UI_CODE = 1;\nthis.BACKGROUND_PROCESS = 2;\n\n/**\n * globalImportContext - Are we in UI code (i.e. react, a dom) or some kind of background process?\n * Use this in action creators if you need different logic\n * for ui/background processes.\n */\nconst globalImportContext = typeof Window === \"undefined\" ? BACKGROUND_PROCESS : UI_CODE;\n// Export for tests\nthis.globalImportContext = globalImportContext;\n\n// Create an object that avoids accidental differing key/value pairs:\n// {\n// INIT: \"INIT\",\n// UNINIT: \"UNINIT\"\n// }\nconst actionTypes = {};\nfor (const type of [\n \"ADDONS_INFO_REQUEST\",\n \"ADDONS_INFO_RESPONSE\",\n \"ARCHIVE_FROM_POCKET\",\n \"AS_ROUTER_INITIALIZED\",\n \"AS_ROUTER_PREF_CHANGED\",\n \"AS_ROUTER_TELEMETRY_USER_EVENT\",\n \"BLOCK_URL\",\n \"BOOKMARK_URL\",\n \"COPY_DOWNLOAD_LINK\",\n \"DELETE_BOOKMARK_BY_ID\",\n \"DELETE_FROM_POCKET\",\n \"DELETE_HISTORY_URL\",\n \"DIALOG_CANCEL\",\n \"DIALOG_OPEN\",\n \"DOWNLOAD_CHANGED\",\n \"FILL_SEARCH_TERM\",\n \"INIT\",\n \"MIGRATION_CANCEL\",\n \"MIGRATION_COMPLETED\",\n \"MIGRATION_START\",\n \"NEW_TAB_INIT\",\n \"NEW_TAB_INITIAL_STATE\",\n \"NEW_TAB_LOAD\",\n \"NEW_TAB_REHYDRATED\",\n \"NEW_TAB_STATE_REQUEST\",\n \"NEW_TAB_UNLOAD\",\n \"OPEN_DOWNLOAD_FILE\",\n \"OPEN_LINK\",\n \"OPEN_NEW_WINDOW\",\n \"OPEN_PRIVATE_WINDOW\",\n \"OPEN_WEBEXT_SETTINGS\",\n \"PAGE_PRERENDERED\",\n \"PLACES_BOOKMARK_ADDED\",\n \"PLACES_BOOKMARK_REMOVED\",\n \"PLACES_HISTORY_CLEARED\",\n \"PLACES_LINKS_CHANGED\",\n \"PLACES_LINK_BLOCKED\",\n \"PLACES_LINK_DELETED\",\n \"PLACES_SAVED_TO_POCKET\",\n \"POCKET_CTA\",\n \"POCKET_LOGGED_IN\",\n \"POCKET_WAITING_FOR_SPOC\",\n \"PREFS_INITIAL_VALUES\",\n \"PREF_CHANGED\",\n \"PREVIEW_REQUEST\",\n \"PREVIEW_REQUEST_CANCEL\",\n \"PREVIEW_RESPONSE\",\n \"REMOVE_DOWNLOAD_FILE\",\n \"RICH_ICON_MISSING\",\n \"SAVE_SESSION_PERF_DATA\",\n \"SAVE_TO_POCKET\",\n \"SCREENSHOT_UPDATED\",\n \"SECTION_DEREGISTER\",\n \"SECTION_DISABLE\",\n \"SECTION_ENABLE\",\n \"SECTION_MOVE\",\n \"SECTION_OPTIONS_CHANGED\",\n \"SECTION_REGISTER\",\n \"SECTION_UPDATE\",\n \"SECTION_UPDATE_CARD\",\n \"SETTINGS_CLOSE\",\n \"SETTINGS_OPEN\",\n \"SET_PREF\",\n \"SHOW_DOWNLOAD_FILE\",\n \"SHOW_FIREFOX_ACCOUNTS\",\n \"SKIPPED_SIGNIN\",\n \"SNIPPETS_BLOCKLIST_CLEARED\",\n \"SNIPPETS_BLOCKLIST_UPDATED\",\n \"SNIPPETS_DATA\",\n \"SNIPPETS_PREVIEW_MODE\",\n \"SNIPPETS_RESET\",\n \"SNIPPET_BLOCKED\",\n \"SUBMIT_EMAIL\",\n \"SYSTEM_TICK\",\n \"TELEMETRY_IMPRESSION_STATS\",\n \"TELEMETRY_PERFORMANCE_EVENT\",\n \"TELEMETRY_UNDESIRED_EVENT\",\n \"TELEMETRY_USER_EVENT\",\n \"TOP_SITES_CANCEL_EDIT\",\n \"TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL\",\n \"TOP_SITES_EDIT\",\n \"TOP_SITES_INSERT\",\n \"TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL\",\n \"TOP_SITES_PIN\",\n \"TOP_SITES_PREFS_UPDATED\",\n \"TOP_SITES_UNPIN\",\n \"TOP_SITES_UPDATED\",\n \"TOTAL_BOOKMARKS_REQUEST\",\n \"TOTAL_BOOKMARKS_RESPONSE\",\n \"UNINIT\",\n \"UPDATE_PINNED_SEARCH_SHORTCUTS\",\n \"UPDATE_SEARCH_SHORTCUTS\",\n \"UPDATE_SECTION_PREFS\",\n \"WEBEXT_CLICK\",\n \"WEBEXT_DISMISS\",\n]) {\n actionTypes[type] = type;\n}\n\n// These are acceptable actions for AS Router messages to have. They can show up\n// as call-to-action buttons in snippets, onboarding tour, etc.\nconst ASRouterActions = {};\nfor (const type of [\n \"INSTALL_ADDON_FROM_URL\",\n \"OPEN_APPLICATIONS_MENU\",\n \"OPEN_PRIVATE_BROWSER_WINDOW\",\n \"OPEN_URL\",\n \"OPEN_ABOUT_PAGE\",\n \"OPEN_PREFERENCES_PAGE\",\n \"SHOW_FIREFOX_ACCOUNTS\",\n]) {\n ASRouterActions[type] = type;\n}\n\n// Helper function for creating routed actions between content and main\n// Not intended to be used by consumers\nfunction _RouteMessage(action, options) {\n const meta = action.meta ? {...action.meta} : {};\n if (!options || !options.from || !options.to) {\n throw new Error(\"Routed Messages must have options as the second parameter, and must at least include a .from and .to property.\");\n }\n // For each of these fields, if they are passed as an option,\n // add them to the action. If they are not defined, remove them.\n [\"from\", \"to\", \"toTarget\", \"fromTarget\", \"skipMain\", \"skipLocal\"].forEach(o => {\n if (typeof options[o] !== \"undefined\") {\n meta[o] = options[o];\n } else if (meta[o]) {\n delete meta[o];\n }\n });\n return {...action, meta};\n}\n\n/**\n * AlsoToMain - Creates a message that will be dispatched locally and also sent to the Main process.\n *\n * @param {object} action Any redux action (required)\n * @param {object} options\n * @param {bool} skipLocal Used by OnlyToMain to skip the main reducer\n * @param {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToMain(action, fromTarget, skipLocal) {\n return _RouteMessage(action, {\n from: CONTENT_MESSAGE_TYPE,\n to: MAIN_MESSAGE_TYPE,\n fromTarget,\n skipLocal,\n });\n}\n\n/**\n * OnlyToMain - Creates a message that will be sent to the Main process and skip the local reducer.\n *\n * @param {object} action Any redux action (required)\n * @param {object} options\n * @param {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToMain(action, fromTarget) {\n return AlsoToMain(action, fromTarget, true);\n}\n\n/**\n * BroadcastToContent - Creates a message that will be dispatched to main and sent to ALL content processes.\n *\n * @param {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction BroadcastToContent(action) {\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: CONTENT_MESSAGE_TYPE,\n });\n}\n\n/**\n * AlsoToOneContent - Creates a message that will be will be dispatched to the main store\n * and also sent to a particular Content process.\n *\n * @param {object} action Any redux action (required)\n * @param {string} target The id of a content port\n * @param {bool} skipMain Used by OnlyToOneContent to skip the main process\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToOneContent(action, target, skipMain) {\n if (!target) {\n throw new Error(\"You must provide a target ID as the second parameter of AlsoToOneContent. If you want to send to all content processes, use BroadcastToContent\");\n }\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: CONTENT_MESSAGE_TYPE,\n toTarget: target,\n skipMain,\n });\n}\n\n/**\n * OnlyToOneContent - Creates a message that will be sent to a particular Content process\n * and skip the main reducer.\n *\n * @param {object} action Any redux action (required)\n * @param {string} target The id of a content port\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToOneContent(action, target) {\n return AlsoToOneContent(action, target, true);\n}\n\n/**\n * AlsoToPreloaded - Creates a message that dispatched to the main reducer and also sent to the preloaded tab.\n *\n * @param {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToPreloaded(action) {\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: PRELOAD_MESSAGE_TYPE,\n });\n}\n\n/**\n * UserEvent - A telemetry ping indicating a user action. This should only\n * be sent from the UI during a user session.\n *\n * @param {object} data Fields to include in the ping (source, etc.)\n * @return {object} An AlsoToMain action\n */\nfunction UserEvent(data) {\n return AlsoToMain({\n type: actionTypes.TELEMETRY_USER_EVENT,\n data,\n });\n}\n\n/**\n * ASRouterUserEvent - A telemetry ping indicating a user action from AS router. This should only\n * be sent from the UI during a user session.\n *\n * @param {object} data Fields to include in the ping (source, etc.)\n * @return {object} An AlsoToMain action\n */\nfunction ASRouterUserEvent(data) {\n return AlsoToMain({\n type: actionTypes.AS_ROUTER_TELEMETRY_USER_EVENT,\n data,\n });\n}\n\n/**\n * UndesiredEvent - A telemetry ping indicating an undesired state.\n *\n * @param {object} data Fields to include in the ping (value, etc.)\n * @param {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction UndesiredEvent(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_UNDESIRED_EVENT,\n data,\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * PerfEvent - A telemetry ping indicating a performance-related event.\n *\n * @param {object} data Fields to include in the ping (value, etc.)\n * @param {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction PerfEvent(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_PERFORMANCE_EVENT,\n data,\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * ImpressionStats - A telemetry ping indicating an impression stats.\n *\n * @param {object} data Fields to include in the ping\n * @param {int} importContext (For testing) Override the import context for testing.\n * #return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction ImpressionStats(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_IMPRESSION_STATS,\n data,\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction SetPref(name, value, importContext = globalImportContext) {\n const action = {type: actionTypes.SET_PREF, data: {name, value}};\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction WebExtEvent(type, data, importContext = globalImportContext) {\n if (!data || !data.source) {\n throw new Error(\"WebExtEvent actions should include a property \\\"source\\\", the id of the webextension that should receive the event.\");\n }\n const action = {type, data};\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nthis.actionTypes = actionTypes;\nthis.ASRouterActions = ASRouterActions;\n\nthis.actionCreators = {\n BroadcastToContent,\n UserEvent,\n ASRouterUserEvent,\n UndesiredEvent,\n PerfEvent,\n ImpressionStats,\n AlsoToOneContent,\n OnlyToOneContent,\n AlsoToMain,\n OnlyToMain,\n AlsoToPreloaded,\n SetPref,\n WebExtEvent,\n};\n\n// These are helpers to test for certain kinds of actions\nthis.actionUtils = {\n isSendToMain(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.to === MAIN_MESSAGE_TYPE && action.meta.from === CONTENT_MESSAGE_TYPE;\n },\n isBroadcastToContent(action) {\n if (!action.meta) {\n return false;\n }\n if (action.meta.to === CONTENT_MESSAGE_TYPE && !action.meta.toTarget) {\n return true;\n }\n return false;\n },\n isSendToOneContent(action) {\n if (!action.meta) {\n return false;\n }\n if (action.meta.to === CONTENT_MESSAGE_TYPE && action.meta.toTarget) {\n return true;\n }\n return false;\n },\n isSendToPreloaded(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.to === PRELOAD_MESSAGE_TYPE &&\n action.meta.from === MAIN_MESSAGE_TYPE;\n },\n isFromMain(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.from === MAIN_MESSAGE_TYPE &&\n action.meta.to === CONTENT_MESSAGE_TYPE;\n },\n getPortIdOfSender(action) {\n return (action.meta && action.meta.fromTarget) || null;\n },\n _RouteMessage,\n};\n\nconst EXPORTED_SYMBOLS = [\n \"actionTypes\",\n \"actionCreators\",\n \"actionUtils\",\n \"ASRouterActions\",\n \"globalImportContext\",\n \"UI_CODE\",\n \"BACKGROUND_PROCESS\",\n \"MAIN_MESSAGE_TYPE\",\n \"CONTENT_MESSAGE_TYPE\",\n \"PRELOAD_MESSAGE_TYPE\",\n];\n","const DATABASE_NAME = \"snippets_db\";\nconst DATABASE_VERSION = 1;\nconst SNIPPETS_OBJECTSTORE_NAME = \"snippets\";\nexport const SNIPPETS_UPDATE_INTERVAL_MS = 14400000; // 4 hours.\n\nconst SNIPPETS_ENABLED_EVENT = \"Snippets:Enabled\";\nconst SNIPPETS_DISABLED_EVENT = \"Snippets:Disabled\";\n\nimport {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * SnippetsMap - A utility for cacheing values related to the snippet. It has\n * the same interface as a Map, but is optionally backed by\n * indexedDB for persistent storage.\n * Call .connect() to open a database connection and restore any\n * previously cached data, if necessary.\n *\n */\nexport class SnippetsMap extends Map {\n constructor(dispatch) {\n super();\n this._db = null;\n this._dispatch = dispatch;\n }\n\n set(key, value) {\n super.set(key, value);\n return this._dbTransaction(db => db.put(value, key));\n }\n\n delete(key) {\n super.delete(key);\n return this._dbTransaction(db => db.delete(key));\n }\n\n clear() {\n super.clear();\n this._dispatch(ac.OnlyToMain({type: at.SNIPPETS_BLOCKLIST_CLEARED}));\n return this._dbTransaction(db => db.clear());\n }\n\n get blockList() {\n return this.get(\"blockList\") || [];\n }\n\n /**\n * blockSnippetById - Blocks a snippet given an id\n *\n * @param {str|int} id The id of the snippet\n * @return {Promise} Resolves when the id has been written to indexedDB,\n * or immediately if the snippetMap is not connected\n */\n async blockSnippetById(id) {\n if (!id) {\n return;\n }\n const {blockList} = this;\n if (!blockList.includes(id)) {\n blockList.push(id);\n this._dispatch(ac.AlsoToMain({type: at.SNIPPETS_BLOCKLIST_UPDATED, data: id}));\n await this.set(\"blockList\", blockList);\n }\n }\n\n disableOnboarding() {}\n\n showFirefoxAccounts() {\n this._dispatch(ac.AlsoToMain({type: at.SHOW_FIREFOX_ACCOUNTS}));\n }\n\n getTotalBookmarksCount() {\n return new Promise(resolve => {\n this._dispatch(ac.OnlyToMain({type: at.TOTAL_BOOKMARKS_REQUEST}));\n global.RPMAddMessageListener(\"ActivityStream:MainToContent\", function onMessage({data: action}) {\n if (action.type === at.TOTAL_BOOKMARKS_RESPONSE) {\n resolve(action.data);\n global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", onMessage);\n }\n });\n });\n }\n\n getAddonsInfo() {\n return new Promise(resolve => {\n this._dispatch(ac.OnlyToMain({type: at.ADDONS_INFO_REQUEST}));\n global.RPMAddMessageListener(\"ActivityStream:MainToContent\", function onMessage({data: action}) {\n if (action.type === at.ADDONS_INFO_RESPONSE) {\n resolve(action.data);\n global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", onMessage);\n }\n });\n });\n }\n\n /**\n * connect - Attaches an indexedDB back-end to the Map so that any set values\n * are also cached in a store. It also restores any existing values\n * that are already stored in the indexedDB store.\n *\n * @return {type} description\n */\n async connect() {\n // Open the connection\n const db = await this._openDB();\n\n // Restore any existing values\n await this._restoreFromDb(db);\n\n // Attach a reference to the db\n this._db = db;\n }\n\n /**\n * _dbTransaction - Returns a db transaction wrapped with the given modifier\n * function as a Promise. If the db has not been connected,\n * it resolves immediately.\n *\n * @param {func} modifier A function to call with the transaction\n * @return {obj} A Promise that resolves when the transaction has\n * completed or errored\n */\n _dbTransaction(modifier) {\n if (!this._db) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const transaction = modifier(\n this._db\n .transaction(SNIPPETS_OBJECTSTORE_NAME, \"readwrite\")\n .objectStore(SNIPPETS_OBJECTSTORE_NAME)\n );\n transaction.onsuccess = event => resolve();\n\n /* istanbul ignore next */\n transaction.onerror = event => reject(transaction.error);\n });\n }\n\n _openDB() {\n return new Promise((resolve, reject) => {\n const openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n\n /* istanbul ignore next */\n openRequest.onerror = event => {\n // Try to delete the old database so that we can start this process over\n // next time.\n indexedDB.deleteDatabase(DATABASE_NAME);\n reject(event);\n };\n\n openRequest.onupgradeneeded = event => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {\n db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);\n }\n };\n\n openRequest.onsuccess = event => {\n let db = event.target.result;\n\n /* istanbul ignore next */\n db.onerror = err => console.error(err); // eslint-disable-line no-console\n /* istanbul ignore next */\n db.onversionchange = versionChangeEvent => versionChangeEvent.target.close();\n\n resolve(db);\n };\n });\n }\n\n _restoreFromDb(db) {\n return new Promise((resolve, reject) => {\n let cursorRequest;\n try {\n cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)\n .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();\n } catch (err) {\n // istanbul ignore next\n reject(err);\n // istanbul ignore next\n return;\n }\n\n /* istanbul ignore next */\n cursorRequest.onerror = event => reject(event);\n\n cursorRequest.onsuccess = event => {\n let cursor = event.target.result;\n // Populate the cache from the persistent storage.\n if (cursor) {\n if (cursor.value !== \"blockList\") {\n this.set(cursor.key, cursor.value);\n }\n cursor.continue();\n } else {\n // We are done.\n resolve();\n }\n };\n });\n }\n}\n\n/**\n * SnippetsProvider - Initializes a SnippetsMap and loads snippets from a\n * remote location, or else default snippets if the remote\n * snippets cannot be retrieved.\n */\nexport class SnippetsProvider {\n constructor(dispatch) {\n // Initialize the Snippets Map and attaches it to a global so that\n // the snippet payload can interact with it.\n global.gSnippetsMap = new SnippetsMap(dispatch);\n this._onAction = this._onAction.bind(this);\n }\n\n get snippetsMap() {\n return global.gSnippetsMap;\n }\n\n async _refreshSnippets() {\n // Check if the cached version of of the snippets in snippetsMap. If it's too\n // old, blow away the entire snippetsMap.\n const cachedVersion = this.snippetsMap.get(\"snippets-cached-version\");\n\n if (cachedVersion !== this.appData.version) {\n this.snippetsMap.clear();\n }\n\n // Has enough time passed for us to require an update?\n const lastUpdate = this.snippetsMap.get(\"snippets-last-update\");\n const needsUpdate = !(lastUpdate >= 0) || Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS;\n\n if (needsUpdate && this.appData.snippetsURL) {\n this.snippetsMap.set(\"snippets-last-update\", Date.now());\n try {\n const response = await fetch(this.appData.snippetsURL);\n if (response.status === 200) {\n const payload = await response.text();\n\n this.snippetsMap.set(\"snippets\", payload);\n this.snippetsMap.set(\"snippets-cached-version\", this.appData.version);\n }\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n _noSnippetFallback() {\n // TODO\n }\n\n _showRemoteSnippets() {\n const snippetsEl = document.getElementById(this.elementId);\n const payload = this.snippetsMap.get(\"snippets\");\n\n if (!snippetsEl) {\n throw new Error(`No element was found with id '${this.elementId}'.`);\n }\n\n // This could happen if fetching failed\n if (!payload) {\n throw new Error(\"No remote snippets were found in gSnippetsMap.\");\n }\n\n if (typeof payload !== \"string\") {\n throw new Error(\"Snippet payload was incorrectly formatted\");\n }\n\n // Note that injecting snippets can throw if they're invalid XML.\n // eslint-disable-next-line no-unsanitized/property\n snippetsEl.innerHTML = payload;\n\n // Scripts injected by innerHTML are inactive, so we have to relocate them\n // through DOM manipulation to activate their contents.\n for (const scriptEl of snippetsEl.getElementsByTagName(\"script\")) {\n const relocatedScript = document.createElement(\"script\");\n relocatedScript.text = scriptEl.text;\n scriptEl.parentNode.replaceChild(relocatedScript, scriptEl);\n }\n }\n\n _onAction(msg) {\n if (msg.data.type === at.SNIPPET_BLOCKED) {\n if (!this.snippetsMap.blockList.includes(msg.data.data)) {\n this.snippetsMap.set(\"blockList\", this.snippetsMap.blockList.concat(msg.data.data));\n document.getElementById(\"snippets-container\").style.display = \"none\";\n }\n }\n }\n\n /**\n * init - Fetch the snippet payload and show snippets\n *\n * @param {obj} options\n * @param {str} options.appData.snippetsURL The URL from which we fetch snippets\n * @param {int} options.appData.version The current snippets version\n * @param {str} options.elementId The id of the element in which to inject snippets\n * @param {bool} options.connect Should gSnippetsMap connect to indexedDB?\n */\n async init(options) {\n Object.assign(this, {\n appData: {},\n elementId: \"snippets\",\n connect: true,\n }, options);\n\n // Add listener so we know when snippets are blocked on other pages\n if (global.RPMAddMessageListener) {\n global.RPMAddMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n }\n\n // TODO: Requires enabling indexedDB on newtab\n // Restore the snippets map from indexedDB\n if (this.connect) {\n try {\n await this.snippetsMap.connect();\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n\n // Cache app data values so they can be accessible from gSnippetsMap\n for (const key of Object.keys(this.appData)) {\n if (key === \"blockList\") {\n this.snippetsMap.set(\"blockList\", this.appData[key]);\n } else {\n this.snippetsMap.set(`appData.${key}`, this.appData[key]);\n }\n }\n\n // Refresh snippets, if enough time has passed.\n await this._refreshSnippets();\n\n // Try showing remote snippets, falling back to defaults if necessary.\n try {\n this._showRemoteSnippets();\n } catch (e) {\n this._noSnippetFallback(e);\n }\n\n window.dispatchEvent(new Event(SNIPPETS_ENABLED_EVENT));\n\n this.initialized = true;\n }\n\n uninit() {\n window.dispatchEvent(new Event(SNIPPETS_DISABLED_EVENT));\n if (global.RPMRemoveMessageListener) {\n global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n }\n this.initialized = false;\n }\n}\n\n/**\n * addSnippetsSubscriber - Creates a SnippetsProvider that Initializes\n * when the store has received the appropriate\n * Snippet data.\n *\n * @param {obj} store The redux store\n * @return {obj} Returns the snippets instance, asrouterContent instance and unsubscribe function\n */\nexport function addSnippetsSubscriber(store) {\n const snippets = new SnippetsProvider(store.dispatch);\n\n let initializing = false;\n\n store.subscribe(async () => {\n const state = store.getState();\n\n /**\n * Sorry this code is so complicated. It will be removed soon.\n * This is what the different values actually mean:\n *\n * ASRouter.initialized Is ASRouter.jsm initialised?\n * ASRouter.allowLegacySnippets Are ASRouter snippets turned OFF (i.e. legacy snippets are allowed)\n * state.Prefs.values[\"feeds.snippets\"] User preference for snippets\n * state.Snippets.initialized Is SnippetsFeed.jsm initialised?\n * snippets.initialized Is in-content snippets currently initialised?\n * state.Prefs.values.disableSnippets This pref is used to disable legacy snippets in an emergency\n * in a way that is not user-editable (true = disabled)\n */\n\n /** If we should initialize snippets... */\n if (\n state.Prefs.values[\"feeds.snippets\"] &&\n state.ASRouter.initialized &&\n state.ASRouter.allowLegacySnippets &&\n !state.Prefs.values.disableSnippets &&\n state.Snippets.initialized &&\n !snippets.initialized &&\n // Don't call init multiple times\n !initializing &&\n location.href !== \"about:welcome\" &&\n location.hash !== \"#asrouter\"\n ) {\n initializing = true;\n await snippets.init({appData: state.Snippets});\n // istanbul ignore if\n if (state.Prefs.values[\"asrouter.devtoolsEnabled\"]) {\n console.log(\"Legacy snippets initialized\"); // eslint-disable-line no-console\n }\n initializing = false;\n\n /** If we should remove snippets... */\n } else if (\n (\n state.Prefs.values[\"feeds.snippets\"] === false ||\n state.Prefs.values.disableSnippets === true ||\n (state.ASRouter.initialized && !state.ASRouter.allowLegacySnippets)\n ) &&\n snippets.initialized\n ) {\n // Remove snippets\n snippets.uninit();\n // istanbul ignore if\n if (state.Prefs.values[\"asrouter.devtoolsEnabled\"]) {\n console.log(\"Legacy snippets removed\"); // eslint-disable-line no-console\n }\n }\n });\n\n // Returned for testing purposes\n return {snippets};\n}\n","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {OUTGOING_MESSAGE_NAME as AS_GENERAL_OUTGOING_MESSAGE_NAME} from \"content-src/lib/init-store\";\nimport {generateMessages} from \"./rich-text-strings\";\nimport {ImpressionsWrapper} from \"./components/ImpressionsWrapper/ImpressionsWrapper\";\nimport {LocalizationProvider} from \"fluent-react\";\nimport {OnboardingMessage} from \"./templates/OnboardingMessage/OnboardingMessage\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {SnippetsTemplates} from \"./templates/template-manifest\";\n\nconst INCOMING_MESSAGE_NAME = \"ASRouter:parent-to-child\";\nconst OUTGOING_MESSAGE_NAME = \"ASRouter:child-to-parent\";\nconst ASR_CONTAINER_ID = \"asr-newtab-container\";\n\nexport const ASRouterUtils = {\n addListener(listener) {\n global.RPMAddMessageListener(INCOMING_MESSAGE_NAME, listener);\n },\n removeListener(listener) {\n global.RPMRemoveMessageListener(INCOMING_MESSAGE_NAME, listener);\n },\n sendMessage(action) {\n global.RPMSendAsyncMessage(OUTGOING_MESSAGE_NAME, action);\n },\n blockById(id, options) {\n ASRouterUtils.sendMessage({type: \"BLOCK_MESSAGE_BY_ID\", data: {id, ...options}});\n },\n dismissById(id) {\n ASRouterUtils.sendMessage({type: \"DISMISS_MESSAGE_BY_ID\", data: {id}});\n },\n blockBundle(bundle) {\n ASRouterUtils.sendMessage({type: \"BLOCK_BUNDLE\", data: {bundle}});\n },\n executeAction(button_action) {\n ASRouterUtils.sendMessage({\n type: \"USER_ACTION\",\n data: button_action,\n });\n },\n unblockById(id) {\n ASRouterUtils.sendMessage({type: \"UNBLOCK_MESSAGE_BY_ID\", data: {id}});\n },\n unblockBundle(bundle) {\n ASRouterUtils.sendMessage({type: \"UNBLOCK_BUNDLE\", data: {bundle}});\n },\n overrideMessage(id) {\n ASRouterUtils.sendMessage({type: \"OVERRIDE_MESSAGE\", data: {id}});\n },\n sendTelemetry(ping) {\n const payload = ac.ASRouterUserEvent(ping);\n global.RPMSendAsyncMessage(AS_GENERAL_OUTGOING_MESSAGE_NAME, payload);\n },\n getPreviewEndpoint() {\n if (window.location.href.includes(\"endpoint\")) {\n const params = new URLSearchParams(window.location.href.slice(window.location.href.indexOf(\"endpoint\")));\n try {\n const endpoint = new URL(params.get(\"endpoint\"));\n return {\n url: endpoint.href,\n snippetId: params.get(\"snippetId\"),\n };\n } catch (e) {}\n }\n\n return null;\n },\n};\n\n// Note: nextProps/prevProps refer to props passed to , not \nfunction shouldSendImpressionOnUpdate(nextProps, prevProps) {\n return (nextProps.message.id && (!prevProps.message || prevProps.message.id !== nextProps.message.id));\n}\n\nexport class ASRouterUISurface extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onMessageFromParent = this.onMessageFromParent.bind(this);\n this.sendClick = this.sendClick.bind(this);\n this.sendImpression = this.sendImpression.bind(this);\n this.sendUserActionTelemetry = this.sendUserActionTelemetry.bind(this);\n this.state = {message: {}, bundle: {}};\n }\n\n sendUserActionTelemetry(extraProps = {}) {\n const {message, bundle} = this.state;\n if (!message && !extraProps.message_id) {\n throw new Error(`You must provide a message_id for bundled messages`);\n }\n const eventType = `${message.provider || bundle.provider}_user_event`;\n ASRouterUtils.sendTelemetry({\n message_id: message.id || extraProps.message_id,\n source: extraProps.id,\n action: eventType,\n ...extraProps,\n });\n }\n\n sendImpression(extraProps) {\n if (this.state.message.provider === \"preview\") {\n return;\n }\n\n ASRouterUtils.sendMessage({type: \"IMPRESSION\", data: this.state.message});\n this.sendUserActionTelemetry({event: \"IMPRESSION\", ...extraProps});\n }\n\n // If link has a `metric` data attribute send it as part of the `value`\n // telemetry field which can have arbitrary values.\n // Used for router messages with links as part of the content.\n sendClick(event) {\n const metric = {\n value: event.target.dataset.metric,\n // Used for the `source` of the event. Needed to differentiate\n // from other snippet or onboarding events that may occur.\n id: \"NEWTAB_FOOTER_BAR_CONTENT\",\n };\n const action = {\n type: event.target.dataset.action,\n data: {args: event.target.dataset.args},\n };\n if (action.type) {\n ASRouterUtils.executeAction(action);\n }\n if (!this.state.message.content.do_not_autoblock && !event.target.dataset.do_not_autoblock) {\n ASRouterUtils.blockById(this.state.message.id);\n }\n if (this.state.message.provider !== \"preview\") {\n this.sendUserActionTelemetry({event: \"CLICK_BUTTON\", ...metric});\n }\n }\n\n onBlockById(id) {\n return options => ASRouterUtils.blockById(id, options);\n }\n\n onDismissById(id) {\n return () => ASRouterUtils.dismissById(id);\n }\n\n clearBundle(bundle) {\n return () => ASRouterUtils.blockBundle(bundle);\n }\n\n onMessageFromParent({data: action}) {\n switch (action.type) {\n case \"SET_MESSAGE\":\n this.setState({message: action.data});\n break;\n case \"SET_BUNDLED_MESSAGES\":\n this.setState({bundle: action.data});\n break;\n case \"CLEAR_MESSAGE\":\n if (action.data.id === this.state.message.id) {\n this.setState({message: {}});\n }\n break;\n case \"CLEAR_PROVIDER\":\n if (action.data.id === this.state.message.provider) {\n this.setState({message: {}});\n }\n break;\n case \"CLEAR_BUNDLE\":\n if (this.state.bundle.bundle) {\n this.setState({bundle: {}});\n }\n break;\n case \"CLEAR_ALL\":\n this.setState({message: {}, bundle: {}});\n }\n }\n\n componentWillMount() {\n const endpoint = ASRouterUtils.getPreviewEndpoint();\n ASRouterUtils.addListener(this.onMessageFromParent);\n\n // If we are loading about:welcome we want to trigger the onboarding messages\n if (this.props.document.location.href === \"about:welcome\") {\n ASRouterUtils.sendMessage({type: \"TRIGGER\", data: {trigger: {id: \"firstRun\"}}});\n } else {\n ASRouterUtils.sendMessage({type: \"SNIPPETS_REQUEST\", data: {endpoint}});\n }\n }\n\n componentWillUnmount() {\n ASRouterUtils.removeListener(this.onMessageFromParent);\n }\n\n renderSnippets() {\n const SnippetComponent = SnippetsTemplates[this.state.message.template];\n const {content} = this.state.message;\n\n return (\n \n \n \n \n );\n }\n\n renderOnboarding() {\n return (\n );\n }\n\n renderPreviewBanner() {\n if (this.state.message.provider !== \"preview\") {\n return null;\n }\n\n return (\n \n \n Preview Purposes Only\n \n );\n }\n\n render() {\n const {message, bundle} = this.state;\n if (!message.id && !bundle.template) { return null; }\n return (\n \n {this.renderPreviewBanner()}\n {bundle.template === \"onboarding\" ? this.renderOnboarding() : this.renderSnippets()}\n \n );\n }\n}\n\nASRouterUISurface.defaultProps = {document: global.document};\n\nexport class ASRouterContent {\n constructor() {\n this.initialized = false;\n this.containerElement = null;\n }\n\n _mount() {\n this.containerElement = global.document.getElementById(ASR_CONTAINER_ID);\n if (!this.containerElement) {\n this.containerElement = global.document.createElement(\"div\");\n this.containerElement.id = ASR_CONTAINER_ID;\n this.containerElement.style.zIndex = 1;\n global.document.body.appendChild(this.containerElement);\n }\n\n ReactDOM.render(, this.containerElement);\n }\n\n _unmount() {\n ReactDOM.unmountComponentAtNode(this.containerElement);\n }\n\n init() {\n this._mount();\n this.initialized = true;\n }\n\n uninit() {\n if (this.initialized) {\n this._unmount();\n this.initialized = false;\n }\n }\n}\n","/* eslint-env mozilla/frame-script */\n\nimport {actionCreators as ac, actionTypes as at, actionUtils as au} from \"common/Actions.jsm\";\nimport {applyMiddleware, combineReducers, createStore} from \"redux\";\n\nexport const MERGE_STORE_ACTION = \"NEW_TAB_INITIAL_STATE\";\nexport const OUTGOING_MESSAGE_NAME = \"ActivityStream:ContentToMain\";\nexport const INCOMING_MESSAGE_NAME = \"ActivityStream:MainToContent\";\nexport const EARLY_QUEUED_ACTIONS = [at.SAVE_SESSION_PERF_DATA, at.PAGE_PRERENDERED];\n\n/**\n * A higher-order function which returns a reducer that, on MERGE_STORE action,\n * will return the action.data object merged into the previous state.\n *\n * For all other actions, it merely calls mainReducer.\n *\n * Because we want this to merge the entire state object, it's written as a\n * higher order function which takes the main reducer (itself often a call to\n * combineReducers) as a parameter.\n *\n * @param {function} mainReducer reducer to call if action != MERGE_STORE_ACTION\n * @return {function} a reducer that, on MERGE_STORE_ACTION action,\n * will return the action.data object merged\n * into the previous state, and the result\n * of calling mainReducer otherwise.\n */\nfunction mergeStateReducer(mainReducer) {\n return (prevState, action) => {\n if (action.type === MERGE_STORE_ACTION) {\n return {...prevState, ...action.data};\n }\n\n return mainReducer(prevState, action);\n };\n}\n\n/**\n * messageMiddleware - Middleware that looks for SentToMain type actions, and sends them if necessary\n */\nconst messageMiddleware = store => next => action => {\n const skipLocal = action.meta && action.meta.skipLocal;\n if (au.isSendToMain(action)) {\n RPMSendAsyncMessage(OUTGOING_MESSAGE_NAME, action);\n }\n if (!skipLocal) {\n next(action);\n }\n};\n\nexport const rehydrationMiddleware = store => next => action => {\n if (store._didRehydrate) {\n return next(action);\n }\n\n const isMergeStoreAction = action.type === MERGE_STORE_ACTION;\n const isRehydrationRequest = action.type === at.NEW_TAB_STATE_REQUEST;\n\n if (isRehydrationRequest) {\n store._didRequestInitialState = true;\n return next(action);\n }\n\n if (isMergeStoreAction) {\n store._didRehydrate = true;\n return next(action);\n }\n\n // If init happened after our request was made, we need to re-request\n if (store._didRequestInitialState && action.type === at.INIT) {\n return next(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n }\n\n if (au.isBroadcastToContent(action) || au.isSendToOneContent(action) || au.isSendToPreloaded(action)) {\n // Note that actions received before didRehydrate will not be dispatched\n // because this could negatively affect preloading and the the state\n // will be replaced by rehydration anyway.\n return null;\n }\n\n return next(action);\n};\n\n/**\n * This middleware queues up all the EARLY_QUEUED_ACTIONS until it receives\n * the first action from main. This is useful for those actions for main which\n * require higher reliability, i.e. the action will not be lost in the case\n * that it gets sent before the main is ready to receive it. Conversely, any\n * actions allowed early are accepted to be ignorable or re-sendable.\n */\nexport const queueEarlyMessageMiddleware = store => next => action => {\n if (store._receivedFromMain) {\n next(action);\n } else if (au.isFromMain(action)) {\n next(action);\n store._receivedFromMain = true;\n // Sending out all the early actions as main is ready now\n if (store._earlyActionQueue) {\n store._earlyActionQueue.forEach(next);\n store._earlyActionQueue = [];\n }\n } else if (EARLY_QUEUED_ACTIONS.includes(action.type)) {\n store._earlyActionQueue = store._earlyActionQueue || [];\n store._earlyActionQueue.push(action);\n } else {\n // Let any other type of action go through\n next(action);\n }\n};\n\n/**\n * initStore - Create a store and listen for incoming actions\n *\n * @param {object} reducers An object containing Redux reducers\n * @param {object} intialState (optional) The initial state of the store, if desired\n * @return {object} A redux store\n */\nexport function initStore(reducers, initialState) {\n const store = createStore(\n mergeStateReducer(combineReducers(reducers)),\n initialState,\n global.RPMAddMessageListener && applyMiddleware(rehydrationMiddleware, queueEarlyMessageMiddleware, messageMiddleware)\n );\n\n store._didRehydrate = false;\n store._didRequestInitialState = false;\n\n if (global.RPMAddMessageListener) {\n global.RPMAddMessageListener(INCOMING_MESSAGE_NAME, msg => {\n try {\n store.dispatch(msg.data);\n } catch (ex) {\n console.error(\"Content msg:\", msg, \"Dispatch error: \", ex); // eslint-disable-line no-console\n dump(`Content msg: ${JSON.stringify(msg)}\\nDispatch error: ${ex}\\n${ex.stack}`);\n }\n });\n }\n\n return store;\n}\n","module.exports = Redux;","import {MessageContext} from \"fluent\";\n\n/**\n * Properties that allow rich text MUST be added to this list.\n * key: the localization_id that should be used\n * value: a property or array of properties on the message.content object\n */\nconst RICH_TEXT_CONFIG = {\n \"text\": [\"text\", \"scene1_text\"],\n \"privacy_html\": \"scene2_privacy_html\",\n \"disclaimer_html\": \"scene2_disclaimer_html\",\n};\n\nexport const RICH_TEXT_KEYS = Object.keys(RICH_TEXT_CONFIG);\n\n/**\n * Generates an array of messages suitable for fluent's localization provider\n * including all needed strings for rich text.\n * @param {object} content A .content object from an ASR message (i.e. message.content)\n * @returns {MessageContext[]} A array containing the fluent message context\n */\nexport function generateMessages(content) {\n const cx = new MessageContext(\"en-US\");\n\n RICH_TEXT_KEYS.forEach(key => {\n const attrs = RICH_TEXT_CONFIG[key];\n const attrsToTry = Array.isArray(attrs) ? [...attrs] : [attrs];\n let string = \"\";\n while (!string && attrsToTry.length) {\n const attr = attrsToTry.pop();\n string = content[attr];\n }\n cx.addMessages(`${key} = ${string}`);\n });\n return [cx];\n}\n","import React from \"react\";\n\nexport const VISIBLE = \"visible\";\nexport const VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\n/**\n * Component wrapper used to send telemetry pings on every impression.\n */\nexport class ImpressionsWrapper extends React.PureComponent {\n // This sends an event when a user sees a set of new content. If content\n // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n // only send the event if the page becomes visible again.\n sendImpressionOrAddListener() {\n if (this.props.document.visibilityState === VISIBLE) {\n this.props.sendImpression({id: this.props.id});\n } else {\n // We should only ever send the latest impression stats ping, so remove any\n // older listeners.\n if (this._onVisibilityChange) {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n\n // When the page becomes visible, send the impression stats ping if the section isn't collapsed.\n this._onVisibilityChange = () => {\n if (this.props.document.visibilityState === VISIBLE) {\n this.props.sendImpression({id: this.props.id});\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n };\n this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n componentWillUnmount() {\n if (this._onVisibilityChange) {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n componentDidMount() {\n if (this.props.sendOnMount) {\n this.sendImpressionOrAddListener();\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.shouldSendImpressionOnUpdate(this.props, prevProps)) {\n this.sendImpressionOrAddListener();\n }\n }\n\n render() {\n return this.props.children;\n }\n}\n\nImpressionsWrapper.defaultProps = {\n document: global.document,\n sendOnMount: true,\n};\n","module.exports = React;","module.exports = PropTypes;","module.exports = ReactDOM;","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addLocaleData, injectIntl, IntlProvider} from \"react-intl\";\nimport {ASRouterAdmin} from \"content-src/components/ASRouterAdmin/ASRouterAdmin\";\nimport {ConfirmDialog} from \"content-src/components/ConfirmDialog/ConfirmDialog\";\nimport {connect} from \"react-redux\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport {ManualMigration} from \"content-src/components/ManualMigration/ManualMigration\";\nimport {PrerenderData} from \"common/PrerenderData.jsm\";\nimport React from \"react\";\nimport {Search} from \"content-src/components/Search/Search\";\nimport {Sections} from \"content-src/components/Sections/Sections\";\nimport {StartupOverlay} from \"content-src/components/StartupOverlay/StartupOverlay\";\n\nconst PrefsButton = injectIntl(props => (\n \n \n \n));\n\n// Add the locale data for pluralization and relative-time formatting for now,\n// this just uses english locale data. We can make this more sophisticated if\n// more features are needed.\nfunction addLocaleDataForReactIntl(locale) {\n addLocaleData([{locale, parentLocale: \"en\"}]);\n}\n\n// Returns a function will not be continuously triggered when called. The\n// function will be triggered if called again after `wait` milliseconds.\nfunction debounce(func, wait) {\n let timer;\n return (...args) => {\n if (timer) { return; }\n\n let wakeUp = () => { timer = null; };\n\n timer = setTimeout(wakeUp, wait);\n func.apply(this, args);\n };\n}\n\nexport class _Base extends React.PureComponent {\n componentWillMount() {\n const {locale} = this.props;\n addLocaleDataForReactIntl(locale);\n if (this.props.isFirstrun) {\n global.document.body.classList.add(\"welcome\", \"hide-main\");\n }\n }\n\n componentDidMount() {\n // Request state AFTER the first render to ensure we don't cause the\n // prerendered DOM to be unmounted. Otherwise, NEW_TAB_STATE_REQUEST is\n // dispatched right after the store is ready.\n if (this.props.isPrerendered) {\n this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n this.props.dispatch(ac.AlsoToMain({type: at.PAGE_PRERENDERED}));\n }\n }\n\n componentWillUnmount() {\n this.updateTheme();\n }\n\n componentWillUpdate() {\n this.updateTheme();\n }\n\n updateTheme() {\n const bodyClassName = [\n \"activity-stream\",\n // If we skipped the about:welcome overlay and removed the CSS classes\n // we don't want to add them back to the Activity Stream view\n document.body.classList.contains(\"welcome\") ? \"welcome\" : \"\",\n document.body.classList.contains(\"hide-main\") ? \"hide-main\" : \"\",\n ].filter(v => v).join(\" \");\n global.document.body.className = bodyClassName;\n }\n\n render() {\n const {props} = this;\n const {App, locale, strings} = props;\n const {initialized} = App;\n\n const prefs = props.Prefs.values;\n if (prefs[\"asrouter.devtoolsEnabled\"]) {\n if (window.location.hash === \"#asrouter\") {\n return ();\n }\n console.log(\"ASRouter devtools enabled. To access visit %cabout:newtab#asrouter\", \"font-weight: bold\"); // eslint-disable-line no-console\n }\n\n if (!props.isPrerendered && !initialized) {\n return null;\n }\n\n return (\n \n \n \n );\n }\n}\n\nexport class BaseContent extends React.PureComponent {\n constructor(props) {\n super(props);\n this.openPreferences = this.openPreferences.bind(this);\n this.onWindowScroll = debounce(this.onWindowScroll.bind(this), 5);\n this.state = {fixedSearch: false};\n }\n\n componentDidMount() {\n global.addEventListener(\"scroll\", this.onWindowScroll);\n }\n\n componentWillUnmount() {\n global.removeEventListener(\"scroll\", this.onWindowScroll);\n }\n\n onWindowScroll() {\n const SCROLL_THRESHOLD = 34;\n if (global.scrollY > SCROLL_THRESHOLD && !this.state.fixedSearch) {\n this.setState({fixedSearch: true});\n } else if (global.scrollY <= SCROLL_THRESHOLD && this.state.fixedSearch) {\n this.setState({fixedSearch: false});\n }\n }\n\n openPreferences() {\n this.props.dispatch(ac.OnlyToMain({type: at.SETTINGS_OPEN}));\n this.props.dispatch(ac.UserEvent({event: \"OPEN_NEWTAB_PREFS\"}));\n }\n\n render() {\n const {props} = this;\n const {App} = props;\n const {initialized} = App;\n const prefs = props.Prefs.values;\n\n const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]);\n const noSectionsEnabled = !prefs[\"feeds.topsites\"] && props.Sections.filter(section => section.enabled).length === 0;\n\n const outerClassName = [\n \"outer-wrapper\",\n shouldBeFixedToTop && \"fixed-to-top\",\n prefs.showSearch && this.state.fixedSearch && !noSectionsEnabled && \"fixed-search\",\n prefs.showSearch && noSectionsEnabled && \"only-search\",\n ].filter(v => v).join(\" \");\n\n return (\n \n \n \n {prefs.showSearch &&\n \n \n \n \n \n }\n \n {!prefs.migrationExpired &&\n \n \n \n }\n \n \n \n \n \n \n {this.props.isFirstrun && }\n );\n }\n}\n\nexport const Base = connect(state => ({App: state.App, Prefs: state.Prefs, Sections: state.Sections}))(_Base);\n","module.exports = ReactIntl;","import {ASRouterUtils} from \"../../asrouter/asrouter-content\";\nimport React from \"react\";\n\nexport class ASRouterAdmin extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onMessage = this.onMessage.bind(this);\n this.handleEnabledToggle = this.handleEnabledToggle.bind(this);\n this.handleUserPrefToggle = this.handleUserPrefToggle.bind(this);\n this.onChangeMessageFilter = this.onChangeMessageFilter.bind(this);\n this.findOtherBundledMessagesOfSameTemplate = this.findOtherBundledMessagesOfSameTemplate.bind(this);\n this.handleExpressionEval = this.handleExpressionEval.bind(this);\n this.onChangeTargetingParameters = this.onChangeTargetingParameters.bind(this);\n this.state = {messageFilter: \"all\", evaluationStatus: {}, stringTargetingParameters: null};\n }\n\n onMessage({data: action}) {\n if (action.type === \"ADMIN_SET_STATE\") {\n this.setState(action.data);\n if (!this.state.stringTargetingParameters) {\n const stringTargetingParameters = {};\n for (const param of Object.keys(action.data.targetingParameters)) {\n stringTargetingParameters[param] = JSON.stringify(action.data.targetingParameters[param], null, 2);\n }\n this.setState({stringTargetingParameters});\n }\n }\n }\n\n componentWillMount() {\n const endpoint = ASRouterUtils.getPreviewEndpoint();\n ASRouterUtils.sendMessage({type: \"ADMIN_CONNECT_STATE\", data: {endpoint}});\n ASRouterUtils.addListener(this.onMessage);\n }\n\n componentWillUnmount() {\n ASRouterUtils.removeListener(this.onMessage);\n }\n\n findOtherBundledMessagesOfSameTemplate(template) {\n return this.state.messages.filter(msg => msg.template === template && msg.bundled);\n }\n\n handleBlock(msg) {\n if (msg.bundled) {\n // If we are blocking a message that belongs to a bundle, block all other messages that are bundled of that same template\n let bundle = this.findOtherBundledMessagesOfSameTemplate(msg.template);\n return () => ASRouterUtils.blockBundle(bundle);\n }\n return () => ASRouterUtils.blockById(msg.id);\n }\n\n handleUnblock(msg) {\n if (msg.bundled) {\n // If we are unblocking a message that belongs to a bundle, unblock all other messages that are bundled of that same template\n let bundle = this.findOtherBundledMessagesOfSameTemplate(msg.template);\n return () => ASRouterUtils.unblockBundle(bundle);\n }\n return () => ASRouterUtils.unblockById(msg.id);\n }\n\n handleOverride(id) {\n return () => ASRouterUtils.overrideMessage(id);\n }\n\n expireCache() {\n ASRouterUtils.sendMessage({type: \"EXPIRE_QUERY_CACHE\"});\n }\n\n resetPref() {\n ASRouterUtils.sendMessage({type: \"RESET_PROVIDER_PREF\"});\n }\n\n handleExpressionEval() {\n const context = {};\n for (const param of Object.keys(this.state.stringTargetingParameters)) {\n const value = this.state.stringTargetingParameters[param];\n context[param] = value ? JSON.parse(value) : null;\n }\n ASRouterUtils.sendMessage({\n type: \"EVALUATE_JEXL_EXPRESSION\",\n data: {\n expression: this.refs.expressionInput.value,\n context,\n },\n });\n }\n\n onChangeTargetingParameters(event) {\n const {name} = event.target;\n const {value} = event.target;\n this.refs.evaluationStatus.innerText = \"\";\n\n this.setState(({stringTargetingParameters}) => {\n let targetingParametersError = null;\n const updatedParameters = {...stringTargetingParameters};\n updatedParameters[name] = value;\n try {\n JSON.parse(value);\n } catch (e) {\n console.log(`Error parsing value of parameter ${name}`); // eslint-disable-line no-console\n targetingParametersError = {id: name};\n }\n\n return {stringTargetingParameters: updatedParameters, targetingParametersError};\n });\n }\n\n renderMessageItem(msg) {\n const isCurrent = msg.id === this.state.lastMessageId;\n const isBlocked = this.state.messageBlockList.includes(msg.id);\n const impressions = this.state.messageImpressions[msg.id] ? this.state.messageImpressions[msg.id].length : 0;\n\n let itemClassName = \"message-item\";\n if (isCurrent) { itemClassName += \" current\"; }\n if (isBlocked) { itemClassName += \" blocked\"; }\n\n return (\n {msg.id} \n \n {isBlocked ? \"Unblock\" : \"Block\"}\n {isBlocked ? null : Show}\n ({impressions} impressions)\n \n \n {JSON.stringify(msg, null, 2)}\n \n );\n }\n\n renderMessages() {\n if (!this.state.messages) {\n return null;\n }\n const messagesToShow = this.state.messageFilter === \"all\" ? this.state.messages : this.state.messages.filter(message => message.provider === this.state.messageFilter);\n return (\n {messagesToShow.map(msg => this.renderMessageItem(msg))}\n );\n }\n\n onChangeMessageFilter(event) {\n this.setState({messageFilter: event.target.value});\n }\n\n renderMessageFilter() {\n if (!this.state.providers) {\n return null;\n }\n return (Show messages from \n all providers\n {this.state.providers.map(provider => ({provider.id}))}\n );\n }\n\n renderTableHead() {\n return (\n \n \n Provider ID\n Source\n Last Updated\n \n );\n }\n\n handleEnabledToggle(event) {\n const provider = this.state.providerPrefs.find(p => p.id === event.target.dataset.provider);\n const userPrefInfo = this.state.userPrefs;\n\n const isUserEnabled = provider.id in userPrefInfo ? userPrefInfo[provider.id] : true;\n const isSystemEnabled = provider.enabled;\n const isEnabling = event.target.checked;\n\n if (isEnabling) {\n if (!isUserEnabled) {\n ASRouterUtils.sendMessage({type: \"SET_PROVIDER_USER_PREF\", data: {id: provider.id, value: true}});\n }\n if (!isSystemEnabled) {\n ASRouterUtils.sendMessage({type: \"ENABLE_PROVIDER\", data: provider.id});\n }\n } else {\n ASRouterUtils.sendMessage({type: \"DISABLE_PROVIDER\", data: provider.id});\n }\n\n this.setState({messageFilter: \"all\"});\n }\n\n handleUserPrefToggle(event) {\n const action = {type: \"SET_PROVIDER_USER_PREF\", data: {id: event.target.dataset.provider, value: event.target.checked}};\n ASRouterUtils.sendMessage(action);\n this.setState({messageFilter: \"all\"});\n }\n\n renderProviders() {\n const providersConfig = this.state.providerPrefs;\n const providerInfo = this.state.providers;\n const userPrefInfo = this.state.userPrefs;\n\n return ({this.renderTableHead()}\n {providersConfig.map((provider, i) => {\n const isTestProvider = provider.id === \"snippets_local_testing\";\n const info = providerInfo.find(p => p.id === provider.id) || {};\n const isUserEnabled = provider.id in userPrefInfo ? userPrefInfo[provider.id] : true;\n const isSystemEnabled = (isTestProvider || provider.enabled);\n\n let label = \"local\";\n if (provider.type === \"remote\") {\n let displayUrl = \"\";\n try {\n displayUrl = `(${new URL(info.url).hostname})`;\n } catch (err) {}\n label = (endpoint {displayUrl});\n } else if (provider.type === \"remote-settings\") {\n label = `remote settings (${provider.bucket})`;\n }\n\n let reasonsDisabled = [];\n if (!isSystemEnabled) {\n reasonsDisabled.push(\"system pref\");\n }\n if (!isUserEnabled) {\n reasonsDisabled.push(\"user pref\");\n }\n if (reasonsDisabled.length) {\n label = `disabled via ${reasonsDisabled.join(\", \")}`;\n }\n\n return (\n\n {isTestProvider ? : }\n {provider.id}\n {label}\n {info.lastUpdated ? new Date(info.lastUpdated).toLocaleString() : \"\"}\n );\n })}\n );\n }\n\n renderTargetingParameters() {\n // There was no error and the result is truthy\n const success = this.state.evaluationStatus.success && !!this.state.evaluationStatus.result;\n const result = JSON.stringify(this.state.evaluationStatus.result, null, 2) || \"(Empty result)\";\n\n return (\n Evaluate JEXL expression\n \n \n \n Status: {success ? \"✅\" : \"❌\"}, Result: {result}\n \n \n Evaluate\n \n \n Modify targeting parameters\n {this.state.stringTargetingParameters && Object.keys(this.state.stringTargetingParameters).map((param, i) => {\n const value = this.state.stringTargetingParameters[param];\n const errorState = this.state.targetingParametersError && this.state.targetingParametersError.id === param;\n const className = errorState ? \"errorState\" : \"\";\n const inputComp = (value && value.length) > 30 ?\n :\n ;\n\n return (\n {param}\n {inputComp}\n );\n })}\n );\n }\n\n render() {\n return (\n AS Router Admin\n Targeting Utilities\n Expire Cache (This expires the cache in ASR Targeting for bookmarks and top sites)\n Message Providers Restore default prefs\n\n {this.state.providers ? this.renderProviders() : null}\n Messages\n {this.renderMessageFilter()}\n {this.renderMessages()}\n {this.renderTargetingParameters()}\n );\n }\n}\n","import {actionCreators as ac, actionTypes} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * ConfirmDialog component.\n * One primary action button, one cancel button.\n *\n * Content displayed is controlled by `data` prop the component receives.\n * Example:\n * data: {\n * // Any sort of data needed to be passed around by actions.\n * payload: site.url,\n * // Primary button AlsoToMain action.\n * action: \"DELETE_HISTORY_URL\",\n * // Primary button USerEvent action.\n * userEvent: \"DELETE\",\n * // Array of locale ids to display.\n * message_body: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n * // Text for primary button.\n * confirm_button_string_id: \"menu_action_delete\"\n * },\n */\nexport class _ConfirmDialog extends React.PureComponent {\n constructor(props) {\n super(props);\n this._handleCancelBtn = this._handleCancelBtn.bind(this);\n this._handleConfirmBtn = this._handleConfirmBtn.bind(this);\n }\n\n _handleCancelBtn() {\n this.props.dispatch({type: actionTypes.DIALOG_CANCEL});\n this.props.dispatch(ac.UserEvent({event: actionTypes.DIALOG_CANCEL, source: this.props.data.eventSource}));\n }\n\n _handleConfirmBtn() {\n this.props.data.onConfirm.forEach(this.props.dispatch);\n }\n\n _renderModalMessage() {\n const message_body = this.props.data.body_string_id;\n\n if (!message_body) {\n return null;\n }\n\n return (\n {message_body.map(msg => )}\n );\n }\n\n render() {\n if (!this.props.visible) {\n return null;\n }\n\n return (\n \n \n \n {this.props.data.icon && }\n {this._renderModalMessage()}\n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport const ConfirmDialog = connect(state => state.Dialog)(_ConfirmDialog);\n","module.exports = ReactRedux;","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class ErrorBoundaryFallback extends React.PureComponent {\n constructor(props) {\n super(props);\n this.windowObj = this.props.windowObj || window;\n this.onClick = this.onClick.bind(this);\n }\n\n /**\n * Since we only get here if part of the page has crashed, do a\n * forced reload to give us the best chance at recovering.\n */\n onClick() {\n this.windowObj.location.reload(true);\n }\n\n render() {\n const defaultClass = \"as-error-fallback\";\n let className;\n if (\"className\" in this.props) {\n className = `${this.props.className} ${defaultClass}`;\n } else {\n className = defaultClass;\n }\n\n // href=\"#\" to force normal link styling stuff (eg cursor on hover)\n return (\n \n \n \n \n \n \n \n \n \n \n );\n }\n}\nErrorBoundaryFallback.defaultProps = {className: \"as-error-fallback\"};\n\nexport class ErrorBoundary extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {hasError: false};\n }\n\n componentDidCatch(error, info) {\n this.setState({hasError: true});\n }\n\n render() {\n if (!this.state.hasError) {\n return (this.props.children);\n }\n\n return ;\n }\n}\n\nErrorBoundary.defaultProps = {FallbackComponent: ErrorBoundaryFallback};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * Manual migration component used to start the profile import wizard.\n * Message is presented temporarily and will go away if:\n * 1. User clicks \"No Thanks\"\n * 2. User completed the data import\n * 3. After 3 active days\n * 4. User clicks \"Cancel\" on the import wizard (currently not implemented).\n */\nexport class _ManualMigration extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onLaunchTour = this.onLaunchTour.bind(this);\n this.onCancelTour = this.onCancelTour.bind(this);\n }\n\n onLaunchTour() {\n this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_START}));\n this.props.dispatch(ac.UserEvent({event: at.MIGRATION_START}));\n }\n\n onCancelTour() {\n this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_CANCEL}));\n this.props.dispatch(ac.UserEvent({event: at.MIGRATION_CANCEL}));\n }\n\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport const ManualMigration = connect()(_ManualMigration);\n","class _PrerenderData {\n constructor(options) {\n this.initialPrefs = options.initialPrefs;\n this.initialSections = options.initialSections;\n this._setValidation(options.validation);\n }\n\n get validation() {\n return this._validation;\n }\n\n set validation(value) {\n this._setValidation(value);\n }\n\n get invalidatingPrefs() {\n return this._invalidatingPrefs;\n }\n\n // This is needed so we can use it in the constructor\n _setValidation(value = []) {\n this._validation = value;\n this._invalidatingPrefs = value.reduce((result, next) => {\n if (typeof next === \"string\") {\n result.push(next);\n return result;\n } else if (next && next.oneOf) {\n return result.concat(next.oneOf);\n } else if (next && next.indexedDB) {\n return result.concat(next.indexedDB);\n }\n throw new Error(\"Your validation configuration is not properly configured\");\n }, []);\n }\n\n arePrefsValid(getPref, indexedDBPrefs) {\n for (const prefs of this.validation) {\n // {oneOf: [\"foo\", \"bar\"]}\n if (prefs && prefs.oneOf && !prefs.oneOf.some(name => getPref(name) === this.initialPrefs[name])) {\n return false;\n\n // {indexedDB: [\"foo\", \"bar\"]}\n } else if (indexedDBPrefs && prefs && prefs.indexedDB) {\n const anyModifiedPrefs = prefs.indexedDB.some(prefName => indexedDBPrefs.some(pref => pref && pref[prefName]));\n if (anyModifiedPrefs) {\n return false;\n }\n // \"foo\"\n } else if (getPref(prefs) !== this.initialPrefs[prefs]) {\n return false;\n }\n }\n return true;\n }\n}\n\nthis.PrerenderData = new _PrerenderData({\n initialPrefs: {\n \"migrationExpired\": true,\n \"feeds.topsites\": true,\n \"showSearch\": true,\n \"topSitesRows\": 1,\n \"feeds.section.topstories\": true,\n \"feeds.section.highlights\": true,\n \"sectionOrder\": \"topsites,topstories,highlights\",\n \"collapsed\": false,\n },\n // Prefs listed as invalidating will prevent the prerendered version\n // of AS from being used if their value is something other than what is listed\n // here. This is required because some preferences cause the page layout to be\n // too different for the prerendered version to be used. Unfortunately, this\n // will result in users who have modified some of their preferences not being\n // able to get the benefits of prerendering.\n validation: [\n \"feeds.topsites\",\n \"showSearch\",\n \"topSitesRows\",\n \"sectionOrder\",\n // This means if either of these are set to their default values,\n // prerendering can be used.\n {oneOf: [\"feeds.section.topstories\", \"feeds.section.highlights\"]},\n // If any component has the following preference set to `true` it will\n // invalidate the prerendered version.\n {indexedDB: [\"collapsed\"]},\n ],\n initialSections: [\n {\n enabled: true,\n icon: \"pocket\",\n id: \"topstories\",\n order: 1,\n title: {id: \"header_recommended_by\", values: {provider: \"Pocket\"}},\n },\n {\n enabled: true,\n id: \"highlights\",\n icon: \"highlights\",\n order: 2,\n title: {id: \"header_highlights\"},\n },\n ],\n});\n\nthis._PrerenderData = _PrerenderData;\nconst EXPORTED_SYMBOLS = [\"PrerenderData\", \"_PrerenderData\"];\n","/* globals ContentSearchUIController */\n\"use strict\";\n\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {IS_NEWTAB} from \"content-src/lib/constants\";\nimport React from \"react\";\n\nexport class _Search extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.onInputMount = this.onInputMount.bind(this);\n }\n\n handleEvent(event) {\n // Also track search events with our own telemetry\n if (event.detail.type === \"Search\") {\n this.props.dispatch(ac.UserEvent({event: \"SEARCH\"}));\n }\n }\n\n onClick(event) {\n window.gContentSearchController.search(event);\n }\n\n componentWillUnmount() {\n delete window.gContentSearchController;\n }\n\n onInputMount(input) {\n if (input) {\n // The \"healthReportKey\" and needs to be \"newtab\" or \"abouthome\" so that\n // BrowserUsageTelemetry.jsm knows to handle events with this name, and\n // can add the appropriate telemetry probes for search. Without the correct\n // name, certain tests like browser_UsageTelemetry_content.js will fail\n // (See github ticket #2348 for more details)\n const healthReportKey = IS_NEWTAB ? \"newtab\" : \"abouthome\";\n\n // The \"searchSource\" needs to be \"newtab\" or \"homepage\" and is sent with\n // the search data and acts as context for the search request (See\n // nsISearchEngine.getSubmission). It is necessary so that search engine\n // plugins can correctly atribute referrals. (See github ticket #3321 for\n // more details)\n const searchSource = IS_NEWTAB ? \"newtab\" : \"homepage\";\n\n // gContentSearchController needs to exist as a global so that tests for\n // the existing about:home can find it; and so it allows these tests to pass.\n // In the future, when activity stream is default about:home, this can be renamed\n window.gContentSearchController = new ContentSearchUIController(input, input.parentNode,\n healthReportKey, searchSource);\n addEventListener(\"ContentSearchClient\", this);\n } else {\n window.gContentSearchController = null;\n removeEventListener(\"ContentSearchClient\", this);\n }\n }\n\n /*\n * Do not change the ID on the input field, as legacy newtab code\n * specifically looks for the id 'newtab-search-text' on input fields\n * in order to execute searches in various tests\n */\n render() {\n return (\n {this.props.showLogo &&\n \n \n \n \n }\n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport const Search = connect()(injectIntl(_Search));\n","export const IS_NEWTAB = global.document && global.document.documentURI === \"about:newtab\";\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {Card, PlaceholderCard} from \"content-src/components/Card/Card\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport {MoreRecommendations} from \"content-src/components/MoreRecommendations/MoreRecommendations\";\nimport {PocketLoggedInCta} from \"content-src/components/PocketLoggedInCta/PocketLoggedInCta\";\nimport React from \"react\";\nimport {Topics} from \"content-src/components/Topics/Topics\";\nimport {TopSites} from \"content-src/components/TopSites/TopSites\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\nconst CARDS_PER_ROW_DEFAULT = 3;\nconst CARDS_PER_ROW_COMPACT_WIDE = 4;\n\nfunction getFormattedMessage(message) {\n return typeof message === \"string\" ? {message} : ;\n}\n\nexport class Section extends React.PureComponent {\n get numRows() {\n const {rowsPref, maxRows, Prefs} = this.props;\n return rowsPref ? Prefs.values[rowsPref] : maxRows;\n }\n\n _dispatchImpressionStats() {\n const {props} = this;\n let cardsPerRow = CARDS_PER_ROW_DEFAULT;\n if (props.compactCards && global.matchMedia(`(min-width: 1072px)`).matches) {\n // If the section has compact cards and the viewport is wide enough, we show\n // 4 columns instead of 3.\n // $break-point-widest = 1072px (from _variables.scss)\n cardsPerRow = CARDS_PER_ROW_COMPACT_WIDE;\n }\n const maxCards = cardsPerRow * this.numRows;\n const cards = props.rows.slice(0, maxCards);\n\n if (this.needsImpressionStats(cards)) {\n props.dispatch(ac.ImpressionStats({\n source: props.eventSource,\n tiles: cards.map(link => ({id: link.guid})),\n }));\n this.impressionCardGuids = cards.map(link => link.guid);\n }\n }\n\n // This sends an event when a user sees a set of new content. If content\n // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n // only send the event if the page becomes visible again.\n sendImpressionStatsOrAddListener() {\n const {props} = this;\n\n if (!props.shouldSendImpressionStats || !props.dispatch) {\n return;\n }\n\n if (props.document.visibilityState === VISIBLE) {\n this._dispatchImpressionStats();\n } else {\n // We should only ever send the latest impression stats ping, so remove any\n // older listeners.\n if (this._onVisibilityChange) {\n props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n\n // When the page becomes visible, send the impression stats ping if the section isn't collapsed.\n this._onVisibilityChange = () => {\n if (props.document.visibilityState === VISIBLE) {\n if (!this.props.pref.collapsed) {\n this._dispatchImpressionStats();\n }\n props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n };\n props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n componentWillMount() {\n this.sendNewTabRehydrated(this.props.initialized);\n }\n\n componentDidMount() {\n if (this.props.rows.length && !this.props.pref.collapsed) {\n this.sendImpressionStatsOrAddListener();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {props} = this;\n const isCollapsed = props.pref.collapsed;\n const wasCollapsed = prevProps.pref.collapsed;\n if (\n // Don't send impression stats for the empty state\n props.rows.length &&\n (\n // We only want to send impression stats if the content of the cards has changed\n // and the section is not collapsed...\n (props.rows !== prevProps.rows && !isCollapsed) ||\n // or if we are expanding a section that was collapsed.\n (wasCollapsed && !isCollapsed)\n )\n ) {\n this.sendImpressionStatsOrAddListener();\n }\n }\n\n componentWillUpdate(nextProps) {\n this.sendNewTabRehydrated(nextProps.initialized);\n }\n\n componentWillUnmount() {\n if (this._onVisibilityChange) {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n needsImpressionStats(cards) {\n if (!this.impressionCardGuids || (this.impressionCardGuids.length !== cards.length)) {\n return true;\n }\n\n for (let i = 0; i < cards.length; i++) {\n if (cards[i].guid !== this.impressionCardGuids[i]) {\n return true;\n }\n }\n\n return false;\n }\n\n // The NEW_TAB_REHYDRATED event is used to inform feeds that their\n // data has been consumed e.g. for counting the number of tabs that\n // have rendered that data.\n sendNewTabRehydrated(initialized) {\n if (initialized && !this.renderNotified) {\n this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_REHYDRATED, data: {}}));\n this.renderNotified = true;\n }\n }\n\n render() {\n const {\n id, eventSource, title, icon, rows, Pocket, topics,\n emptyState, dispatch, compactCards, read_more_endpoint,\n contextMenuOptions, initialized, learnMore,\n pref, privacyNoticeURL, isFirst, isLast,\n } = this.props;\n\n const waitingForSpoc = id === \"topstories\" && this.props.Pocket.waitingForSpoc;\n const maxCardsPerRow = compactCards ? CARDS_PER_ROW_COMPACT_WIDE : CARDS_PER_ROW_DEFAULT;\n const {numRows} = this;\n const maxCards = maxCardsPerRow * numRows;\n const maxCardsOnNarrow = CARDS_PER_ROW_DEFAULT * numRows;\n\n const {pocketCta, isUserLoggedIn} = Pocket || {};\n const {useCta} = pocketCta || {};\n\n // Don't display anything until we have a definitve result from Pocket,\n // to avoid a flash of logged out state while we render.\n const isPocketLoggedInDefined = (isUserLoggedIn === true || isUserLoggedIn === false);\n\n const shouldShowPocketCta = (id === \"topstories\" &&\n useCta && isUserLoggedIn === false);\n\n // Show topics only for top stories and if it has loaded with topics.\n // The classs .top-stories-bottom-container ensures content doesn't shift as things load.\n const shouldShowTopics = (id === \"topstories\" &&\n (topics && topics.length > 0) &&\n ((useCta && isUserLoggedIn === true) || (!useCta && isPocketLoggedInDefined)));\n\n const realRows = rows.slice(0, maxCards);\n\n // The empty state should only be shown after we have initialized and there is no content.\n // Otherwise, we should show placeholders.\n const shouldShowEmptyState = initialized && !rows.length;\n\n const cards = [];\n if (!shouldShowEmptyState) {\n for (let i = 0; i < maxCards; i++) {\n const link = realRows[i];\n // On narrow viewports, we only show 3 cards per row. We'll mark the rest as\n // .hide-for-narrow to hide in CSS via @media query.\n const className = (i >= maxCardsOnNarrow) ? \"hide-for-narrow\" : \"\";\n let usePlaceholder = !link;\n // If we are in the third card and waiting for spoc,\n // use the placeholder.\n if (!usePlaceholder && i === 2 && waitingForSpoc) {\n usePlaceholder = true;\n }\n cards.push(!usePlaceholder ? (\n \n ) : (\n \n ));\n }\n }\n\n const sectionClassName = [\n \"section\",\n compactCards ? \"compact-cards\" : \"normal-cards\",\n ].join(\" \");\n\n // <-- React component\n // <-- HTML5 element\n return (\n \n\n {!shouldShowEmptyState && (\n {cards}\n )}\n {shouldShowEmptyState &&\n \n \n {emptyState.icon && emptyState.icon.startsWith(\"moz-extension://\") ?\n :\n }\n \n {getFormattedMessage(emptyState.message)}\n \n \n }\n {id === \"topstories\" &&\n \n \n {shouldShowTopics && }\n {shouldShowPocketCta && }\n \n \n {read_more_endpoint &&\n }\n \n }\n \n );\n }\n}\n\nSection.defaultProps = {\n document: global.document,\n rows: [],\n emptyState: {},\n pref: {},\n title: \"\",\n};\n\nexport const SectionIntl = connect(state => ({Prefs: state.Prefs, Pocket: state.Pocket}))(injectIntl(Section));\n\nexport class _Sections extends React.PureComponent {\n renderSections() {\n const sections = [];\n const enabledSections = this.props.Sections.filter(section => section.enabled);\n const {sectionOrder, \"feeds.topsites\": showTopSites} = this.props.Prefs.values;\n // Enabled sections doesn't include Top Sites, so we add it if enabled.\n const expectedCount = enabledSections.length + ~~showTopSites;\n\n for (const sectionId of sectionOrder.split(\",\")) {\n const commonProps = {\n key: sectionId,\n isFirst: sections.length === 0,\n isLast: sections.length === expectedCount - 1,\n };\n if (sectionId === \"topsites\" && showTopSites) {\n sections.push();\n } else {\n const section = enabledSections.find(s => s.id === sectionId);\n if (section) {\n sections.push();\n }\n }\n }\n return sections;\n }\n\n render() {\n return (\n \n {this.renderSections()}\n \n );\n }\n}\n\nexport const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs}))(_Sections);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\nconst _OpenInPrivateWindow = site => ({\n id: \"menu_action_open_private_window\",\n icon: \"new-window-private\",\n action: ac.OnlyToMain({\n type: at.OPEN_PRIVATE_WINDOW,\n data: {url: site.url, referrer: site.referrer},\n }),\n userEvent: \"OPEN_PRIVATE_WINDOW\",\n});\n\nexport const GetPlatformString = platform => {\n switch (platform) {\n case \"win\":\n return \"menu_action_show_file_windows\";\n case \"macosx\":\n return \"menu_action_show_file_mac_os\";\n case \"linux\":\n return \"menu_action_show_file_linux\";\n default:\n return \"menu_action_show_file_default\";\n }\n};\n\n/**\n * List of functions that return items that can be included as menu options in a\n * LinkMenu. All functions take the site as the first parameter, and optionally\n * the index of the site.\n */\nexport const LinkMenuOptions = {\n Separator: () => ({type: \"separator\"}),\n EmptyItem: () => ({type: \"empty\"}),\n RemoveBookmark: site => ({\n id: \"menu_action_remove_bookmark\",\n icon: \"bookmark-added\",\n action: ac.AlsoToMain({\n type: at.DELETE_BOOKMARK_BY_ID,\n data: site.bookmarkGuid,\n }),\n userEvent: \"BOOKMARK_DELETE\",\n }),\n AddBookmark: site => ({\n id: \"menu_action_bookmark\",\n icon: \"bookmark-hollow\",\n action: ac.AlsoToMain({\n type: at.BOOKMARK_URL,\n data: {url: site.url, title: site.title, type: site.type},\n }),\n userEvent: \"BOOKMARK_ADD\",\n }),\n OpenInNewWindow: site => ({\n id: \"menu_action_open_new_window\",\n icon: \"new-window\",\n action: ac.AlsoToMain({\n type: at.OPEN_NEW_WINDOW,\n data: {\n referrer: site.referrer,\n typedBonus: site.typedBonus,\n url: site.url,\n },\n }),\n userEvent: \"OPEN_NEW_WINDOW\",\n }),\n BlockUrl: (site, index, eventSource) => ({\n id: \"menu_action_dismiss\",\n icon: \"dismiss\",\n action: ac.AlsoToMain({\n type: at.BLOCK_URL,\n data: {url: site.open_url || site.url, pocket_id: site.pocket_id},\n }),\n impression: ac.ImpressionStats({\n source: eventSource,\n block: 0,\n tiles: [{id: site.guid, pos: index}],\n }),\n userEvent: \"BLOCK\",\n }),\n\n // This is an option for web extentions which will result in remove items from\n // memory and notify the web extenion, rather than using the built-in block list.\n WebExtDismiss: (site, index, eventSource) => ({\n id: \"menu_action_webext_dismiss\",\n string_id: \"menu_action_dismiss\",\n icon: \"dismiss\",\n action: ac.WebExtEvent(at.WEBEXT_DISMISS, {\n source: eventSource,\n url: site.url,\n action_position: index,\n }),\n }),\n DeleteUrl: (site, index, eventSource, isEnabled, siteInfo) => ({\n id: \"menu_action_delete\",\n icon: \"delete\",\n action: {\n type: at.DIALOG_OPEN,\n data: {\n onConfirm: [\n ac.AlsoToMain({type: at.DELETE_HISTORY_URL, data: {url: site.url, pocket_id: site.pocket_id, forceBlock: site.bookmarkGuid}}),\n ac.UserEvent(Object.assign({event: \"DELETE\", source: eventSource, action_position: index}, siteInfo)),\n ],\n eventSource,\n body_string_id: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n confirm_button_string_id: \"menu_action_delete\",\n cancel_button_string_id: \"topsites_form_cancel_button\",\n icon: \"modal-delete\",\n },\n },\n userEvent: \"DIALOG_OPEN\",\n }),\n ShowFile: (site, index, eventSource, isEnabled, siteInfo, platform) => ({\n id: GetPlatformString(platform),\n icon: \"search\",\n action: ac.OnlyToMain({\n type: at.SHOW_DOWNLOAD_FILE,\n data: {url: site.url},\n }),\n }),\n OpenFile: site => ({\n id: \"menu_action_open_file\",\n icon: \"open-file\",\n action: ac.OnlyToMain({\n type: at.OPEN_DOWNLOAD_FILE,\n data: {url: site.url},\n }),\n }),\n CopyDownloadLink: site => ({\n id: \"menu_action_copy_download_link\",\n icon: \"copy\",\n action: ac.OnlyToMain({\n type: at.COPY_DOWNLOAD_LINK,\n data: {url: site.url},\n }),\n }),\n GoToDownloadPage: site => ({\n id: \"menu_action_go_to_download_page\",\n icon: \"download\",\n action: ac.OnlyToMain({\n type: at.OPEN_LINK,\n data: {url: site.referrer},\n }),\n disabled: !site.referrer,\n }),\n RemoveDownload: site => ({\n id: \"menu_action_remove_download\",\n icon: \"delete\",\n action: ac.OnlyToMain({\n type: at.REMOVE_DOWNLOAD_FILE,\n data: {url: site.url},\n }),\n }),\n PinTopSite: ({url, searchTopSite, label}, index) => ({\n id: \"menu_action_pin\",\n icon: \"pin\",\n action: ac.AlsoToMain({\n type: at.TOP_SITES_PIN,\n data: {\n site: {\n url,\n ...(searchTopSite && {searchTopSite, label}),\n },\n index,\n },\n }),\n userEvent: \"PIN\",\n }),\n UnpinTopSite: site => ({\n id: \"menu_action_unpin\",\n icon: \"unpin\",\n action: ac.AlsoToMain({\n type: at.TOP_SITES_UNPIN,\n data: {site: {url: site.url}},\n }),\n userEvent: \"UNPIN\",\n }),\n SaveToPocket: (site, index, eventSource) => ({\n id: \"menu_action_save_to_pocket\",\n icon: \"pocket-save\",\n action: ac.AlsoToMain({\n type: at.SAVE_TO_POCKET,\n data: {site: {url: site.url, title: site.title}},\n }),\n impression: ac.ImpressionStats({\n source: eventSource,\n pocket: 0,\n tiles: [{id: site.guid, pos: index}],\n }),\n userEvent: \"SAVE_TO_POCKET\",\n }),\n DeleteFromPocket: site => ({\n id: \"menu_action_delete_pocket\",\n icon: \"delete\",\n action: ac.AlsoToMain({\n type: at.DELETE_FROM_POCKET,\n data: {pocket_id: site.pocket_id},\n }),\n userEvent: \"DELETE_FROM_POCKET\",\n }),\n ArchiveFromPocket: site => ({\n id: \"menu_action_archive_pocket\",\n icon: \"check\",\n action: ac.AlsoToMain({\n type: at.ARCHIVE_FROM_POCKET,\n data: {pocket_id: site.pocket_id},\n }),\n userEvent: \"ARCHIVE_FROM_POCKET\",\n }),\n EditTopSite: (site, index) => ({\n id: \"edit_topsites_button_text\",\n icon: \"edit\",\n action: {\n type: at.TOP_SITES_EDIT,\n data: {index},\n },\n }),\n CheckBookmark: site => (site.bookmarkGuid ? LinkMenuOptions.RemoveBookmark(site) : LinkMenuOptions.AddBookmark(site)),\n CheckPinTopSite: (site, index) => (site.isPinned ? LinkMenuOptions.UnpinTopSite(site) : LinkMenuOptions.PinTopSite(site, index)),\n CheckSavedToPocket: (site, index) => (site.pocket_id ? LinkMenuOptions.DeleteFromPocket(site) : LinkMenuOptions.SaveToPocket(site, index)),\n CheckBookmarkOrArchive: site => (site.pocket_id ? LinkMenuOptions.ArchiveFromPocket(site) : LinkMenuOptions.CheckBookmark(site)),\n OpenInPrivateWindow: (site, index, eventSource, isEnabled) => (isEnabled ? _OpenInPrivateWindow(site) : LinkMenuOptions.EmptyItem()),\n};\n","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {ContextMenu} from \"content-src/components/ContextMenu/ContextMenu\";\nimport {injectIntl} from \"react-intl\";\nimport {LinkMenuOptions} from \"content-src/lib/link-menu-options\";\nimport React from \"react\";\n\nconst DEFAULT_SITE_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\", \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\"];\n\nexport class _LinkMenu extends React.PureComponent {\n getOptions() {\n const {props} = this;\n const {site, index, source, isPrivateBrowsingEnabled, siteInfo, platform} = props;\n\n // Handle special case of default site\n const propOptions = (!site.isDefault || site.searchTopSite) ? props.options : DEFAULT_SITE_MENU_OPTIONS;\n\n const options = propOptions.map(o => LinkMenuOptions[o](site, index, source, isPrivateBrowsingEnabled, siteInfo, platform)).map(option => {\n const {action, impression, id, string_id, type, userEvent} = option;\n if (!type && id) {\n option.label = props.intl.formatMessage({id: string_id || id});\n option.onClick = () => {\n props.dispatch(action);\n if (userEvent) {\n const userEventData = Object.assign({\n event: userEvent,\n source,\n action_position: index,\n }, siteInfo);\n props.dispatch(ac.UserEvent(userEventData));\n }\n if (impression && props.shouldSendImpressionStats) {\n props.dispatch(impression);\n }\n };\n }\n return option;\n });\n\n // This is for accessibility to support making each item tabbable.\n // We want to know which item is the first and which item\n // is the last, so we can close the context menu accordingly.\n options[0].first = true;\n options[options.length - 1].last = true;\n return options;\n }\n\n render() {\n return ();\n }\n}\n\nconst getState = state => ({isPrivateBrowsingEnabled: state.Prefs.values.isPrivateBrowsingEnabled, platform: state.Prefs.values.platform});\nexport const LinkMenu = connect(getState)(injectIntl(_LinkMenu));\n","import React from \"react\";\n\nexport class ContextMenu extends React.PureComponent {\n constructor(props) {\n super(props);\n this.hideContext = this.hideContext.bind(this);\n this.onClick = this.onClick.bind(this);\n }\n\n hideContext() {\n this.props.onUpdate(false);\n }\n\n componentDidMount() {\n setTimeout(() => {\n global.addEventListener(\"click\", this.hideContext);\n }, 0);\n }\n\n componentWillUnmount() {\n global.removeEventListener(\"click\", this.hideContext);\n }\n\n onClick(event) {\n // Eat all clicks on the context menu so they don't bubble up to window.\n // This prevents the context menu from closing when clicking disabled items\n // or the separators.\n event.stopPropagation();\n }\n\n render() {\n return (\n \n {this.props.options.map((option, i) => (option.type === \"separator\" ?\n () :\n (option.type !== \"empty\" && )\n ))}\n \n );\n }\n}\n\nexport class ContextMenuItem extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n }\n\n onClick() {\n this.props.hideContext();\n this.props.option.onClick();\n }\n\n onKeyDown(event) {\n const {option} = this.props;\n switch (event.key) {\n case \"Tab\":\n // tab goes down in context menu, shift + tab goes up in context menu\n // if we're on the last item, one more tab will close the context menu\n // similarly, if we're on the first item, one more shift + tab will close it\n if ((event.shiftKey && option.first) || (!event.shiftKey && option.last)) {\n this.props.hideContext();\n }\n break;\n case \"Enter\":\n this.props.hideContext();\n option.onClick();\n break;\n }\n }\n\n render() {\n const {option} = this.props;\n return (\n \n \n {option.icon && }\n {option.label}\n \n );\n }\n}\n","/**\n * List of helper functions for screenshot-based images.\n *\n * There are two kinds of images:\n * 1. Remote Image: This is the image from the main process and it refers to\n * the image in the React props. This can either be an object with the `data`\n * and `path` properties, if it is a blob, or a string, if it is a normal image.\n * 2. Local Image: This is the image object in the content process and it refers\n * to the image *object* in the React component's state. All local image\n * objects have the `url` property, and an additional property `path`, if they\n * are blobs.\n */\nexport const ScreenshotUtils = {\n isBlob(isLocal, image) {\n return !!(image && image.path && ((!isLocal && image.data) || (isLocal && image.url)));\n },\n\n // This should always be called with a remote image and not a local image.\n createLocalImageObject(remoteImage) {\n if (!remoteImage) {\n return null;\n }\n if (this.isBlob(false, remoteImage)) {\n return {url: global.URL.createObjectURL(remoteImage.data), path: remoteImage.path};\n }\n return {url: remoteImage};\n },\n\n // Revokes the object URL of the image if the local image is a blob.\n // This should always be called with a local image and not a remote image.\n maybeRevokeBlobObjectURL(localImage) {\n if (this.isBlob(true, localImage)) {\n global.URL.revokeObjectURL(localImage.url);\n }\n },\n\n // Checks if remoteImage and localImage are the same.\n isRemoteImageLocal(localImage, remoteImage) {\n // Both remoteImage and localImage are present.\n if (remoteImage && localImage) {\n return this.isBlob(false, remoteImage) ?\n localImage.path === remoteImage.path :\n localImage.url === remoteImage;\n }\n\n // This will only handle the remaining three possible outcomes.\n // (i.e. everything except when both image and localImage are present)\n return !remoteImage && !localImage;\n },\n};\n","import {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport React from \"react\";\nimport {SectionMenu} from \"content-src/components/SectionMenu/SectionMenu\";\nimport {SectionMenuOptions} from \"content-src/lib/section-menu-options\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\nfunction getFormattedMessage(message) {\n return typeof message === \"string\" ? {message} : ;\n}\n\nexport class _CollapsibleSection extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onBodyMount = this.onBodyMount.bind(this);\n this.onHeaderClick = this.onHeaderClick.bind(this);\n this.onTransitionEnd = this.onTransitionEnd.bind(this);\n this.enableOrDisableAnimation = this.enableOrDisableAnimation.bind(this);\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuButtonMouseEnter = this.onMenuButtonMouseEnter.bind(this);\n this.onMenuButtonMouseLeave = this.onMenuButtonMouseLeave.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n this.state = {enableAnimation: true, isAnimating: false, menuButtonHover: false, showContextMenu: false};\n }\n\n componentWillMount() {\n this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n }\n\n componentWillUpdate(nextProps) {\n // Check if we're about to go from expanded to collapsed\n if (!this.props.collapsed && nextProps.collapsed) {\n // This next line forces a layout flush of the section body, which has a\n // max-height style set, so that the upcoming collapse animation can\n // animate from that height to the collapsed height. Without this, the\n // update is coalesced and there's no animation from no-max-height to 0.\n this.sectionBody.scrollHeight; // eslint-disable-line no-unused-expressions\n }\n }\n\n componentWillUnmount() {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n }\n\n enableOrDisableAnimation() {\n // Only animate the collapse/expand for visible tabs.\n const visible = this.props.document.visibilityState === VISIBLE;\n if (this.state.enableAnimation !== visible) {\n this.setState({enableAnimation: visible});\n }\n }\n\n onBodyMount(node) {\n this.sectionBody = node;\n }\n\n onHeaderClick() {\n // If this.sectionBody is unset, it means that we're in some sort of error\n // state, probably displaying the error fallback, so we won't be able to\n // compute the height, and we don't want to persist the preference.\n // If props.collapsed is undefined handler shouldn't do anything.\n if (!this.sectionBody || this.props.collapsed === undefined) {\n return;\n }\n\n // Get the current height of the body so max-height transitions can work\n this.setState({\n isAnimating: true,\n maxHeight: `${this._getSectionBodyHeight()}px`,\n });\n const {action, userEvent} = SectionMenuOptions.CheckCollapsed(this.props);\n this.props.dispatch(action);\n this.props.dispatch(ac.UserEvent({\n event: userEvent,\n source: this.props.source,\n }));\n }\n\n _getSectionBodyHeight() {\n const div = this.sectionBody;\n if (div.style.display === \"none\") {\n // If the div isn't displayed, we can't get it's height. So we display it\n // to get the height (it doesn't show up because max-height is set to 0px\n // in CSS). We don't undo this because we are about to expand the section.\n div.style.display = \"block\";\n }\n return div.scrollHeight;\n }\n\n onTransitionEnd(event) {\n // Only update the animating state for our own transition (not a child's)\n if (event.target === event.currentTarget) {\n this.setState({isAnimating: false});\n }\n }\n\n renderIcon() {\n const {icon} = this.props;\n if (icon && icon.startsWith(\"moz-extension://\")) {\n return ;\n }\n return ;\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.setState({showContextMenu: true});\n }\n\n onMenuButtonMouseEnter() {\n this.setState({menuButtonHover: true});\n }\n\n onMenuButtonMouseLeave() {\n this.setState({menuButtonHover: false});\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n render() {\n const isCollapsible = this.props.collapsed !== undefined;\n const {enableAnimation, isAnimating, maxHeight, menuButtonHover, showContextMenu} = this.state;\n const {id, eventSource, collapsed, learnMore, title, extraMenuOptions, showPrefName, privacyNoticeURL, dispatch, isFirst, isLast, isWebExtension} = this.props;\n const active = menuButtonHover || showContextMenu;\n let bodyStyle;\n if (isAnimating && !collapsed) {\n bodyStyle = {maxHeight};\n } else if (!isAnimating && collapsed) {\n bodyStyle = {display: \"none\"};\n }\n return (\n \n \n \n \n \n {this.renderIcon()}\n {getFormattedMessage(title)}\n \n \n {isCollapsible && }\n \n \n {learnMore &&\n \n \n \n \n \n }\n \n \n \n \n \n \n \n \n \n {showContextMenu &&\n \n }\n \n \n \n \n {this.props.children}\n \n \n \n );\n }\n}\n\n_CollapsibleSection.defaultProps = {\n document: global.document || {\n addEventListener: () => {},\n removeEventListener: () => {},\n visibilityState: \"hidden\",\n },\n Prefs: {values: {}},\n};\n\nexport const CollapsibleSection = injectIntl(_CollapsibleSection);\n","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {ContextMenu} from \"content-src/components/ContextMenu/ContextMenu\";\nimport {injectIntl} from \"react-intl\";\nimport React from \"react\";\nimport {SectionMenuOptions} from \"content-src/lib/section-menu-options\";\n\nconst DEFAULT_SECTION_MENU_OPTIONS = [\"MoveUp\", \"MoveDown\", \"Separator\", \"RemoveSection\", \"CheckCollapsed\", \"Separator\", \"ManageSection\"];\nconst WEBEXT_SECTION_MENU_OPTIONS = [\"MoveUp\", \"MoveDown\", \"Separator\", \"CheckCollapsed\", \"Separator\", \"ManageWebExtension\"];\n\nexport class _SectionMenu extends React.PureComponent {\n getOptions() {\n const {props} = this;\n\n const propOptions = props.isWebExtension ? [...WEBEXT_SECTION_MENU_OPTIONS] : [...DEFAULT_SECTION_MENU_OPTIONS];\n // Prepend custom options and a separator\n if (props.extraOptions) {\n propOptions.splice(0, 0, ...props.extraOptions, \"Separator\");\n }\n // Insert privacy notice before the last option (\"ManageSection\")\n if (props.privacyNoticeURL) {\n propOptions.splice(-1, 0, \"PrivacyNotice\");\n }\n\n const options = propOptions.map(o => SectionMenuOptions[o](props)).map(option => {\n const {action, id, type, userEvent} = option;\n if (!type && id) {\n option.label = props.intl.formatMessage({id});\n option.onClick = () => {\n props.dispatch(action);\n if (userEvent) {\n props.dispatch(ac.UserEvent({\n event: userEvent,\n source: props.source,\n }));\n }\n };\n }\n return option;\n });\n\n // This is for accessibility to support making each item tabbable.\n // We want to know which item is the first and which item\n // is the last, so we can close the context menu accordingly.\n options[0].first = true;\n options[options.length - 1].last = true;\n return options;\n }\n\n render() {\n return ();\n }\n}\n\nexport const SectionMenu = injectIntl(_SectionMenu);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * List of functions that return items that can be included as menu options in a\n * SectionMenu. All functions take the section as the only parameter.\n */\nexport const SectionMenuOptions = {\n Separator: () => ({type: \"separator\"}),\n MoveUp: section => ({\n id: \"section_menu_action_move_up\",\n icon: \"arrowhead-up\",\n action: ac.OnlyToMain({\n type: at.SECTION_MOVE,\n data: {id: section.id, direction: -1},\n }),\n userEvent: \"MENU_MOVE_UP\",\n disabled: !!section.isFirst,\n }),\n MoveDown: section => ({\n id: \"section_menu_action_move_down\",\n icon: \"arrowhead-down\",\n action: ac.OnlyToMain({\n type: at.SECTION_MOVE,\n data: {id: section.id, direction: +1},\n }),\n userEvent: \"MENU_MOVE_DOWN\",\n disabled: !!section.isLast,\n }),\n RemoveSection: section => ({\n id: \"section_menu_action_remove_section\",\n icon: \"dismiss\",\n action: ac.SetPref(section.showPrefName, false),\n userEvent: \"MENU_REMOVE\",\n }),\n CollapseSection: section => ({\n id: \"section_menu_action_collapse_section\",\n icon: \"minimize\",\n action: ac.OnlyToMain({type: at.UPDATE_SECTION_PREFS, data: {id: section.id, value: {collapsed: true}}}),\n userEvent: \"MENU_COLLAPSE\",\n }),\n ExpandSection: section => ({\n id: \"section_menu_action_expand_section\",\n icon: \"maximize\",\n action: ac.OnlyToMain({type: at.UPDATE_SECTION_PREFS, data: {id: section.id, value: {collapsed: false}}}),\n userEvent: \"MENU_EXPAND\",\n }),\n ManageSection: section => ({\n id: \"section_menu_action_manage_section\",\n icon: \"settings\",\n action: ac.OnlyToMain({type: at.SETTINGS_OPEN}),\n userEvent: \"MENU_MANAGE\",\n }),\n ManageWebExtension: section => ({\n id: \"section_menu_action_manage_webext\",\n icon: \"settings\",\n action: ac.OnlyToMain({type: at.OPEN_WEBEXT_SETTINGS, data: section.id}),\n }),\n AddTopSite: section => ({\n id: \"section_menu_action_add_topsite\",\n icon: \"add\",\n action: {type: at.TOP_SITES_EDIT, data: {index: -1}},\n userEvent: \"MENU_ADD_TOPSITE\",\n }),\n AddSearchShortcut: section => ({\n id: \"section_menu_action_add_search_engine\",\n icon: \"search\",\n action: {type: at.TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL},\n userEvent: \"MENU_ADD_SEARCH\",\n }),\n PrivacyNotice: section => ({\n id: \"section_menu_action_privacy_notice\",\n icon: \"info\",\n action: ac.OnlyToMain({\n type: at.OPEN_LINK,\n data: {url: section.privacyNoticeURL},\n }),\n userEvent: \"MENU_PRIVACY_NOTICE\",\n }),\n CheckCollapsed: section => (section.collapsed ? SectionMenuOptions.ExpandSection(section) : SectionMenuOptions.CollapseSection(section)),\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\nimport React from \"react\";\n\n// Currently record only a fixed set of sections. This will prevent data\n// from custom sections from showing up or from topstories.\nconst RECORDED_SECTIONS = [\"highlights\", \"topsites\"];\n\nexport class ComponentPerfTimer extends React.Component {\n constructor(props) {\n super(props);\n // Just for test dependency injection:\n this.perfSvc = this.props.perfSvc || perfSvc;\n\n this._sendBadStateEvent = this._sendBadStateEvent.bind(this);\n this._sendPaintedEvent = this._sendPaintedEvent.bind(this);\n this._reportMissingData = false;\n this._timestampHandled = false;\n this._recordedFirstRender = false;\n }\n\n componentDidMount() {\n if (!RECORDED_SECTIONS.includes(this.props.id)) {\n return;\n }\n\n this._maybeSendPaintedEvent();\n }\n\n componentDidUpdate() {\n if (!RECORDED_SECTIONS.includes(this.props.id)) {\n return;\n }\n\n this._maybeSendPaintedEvent();\n }\n\n /**\n * Call the given callback after the upcoming frame paints.\n *\n * @note Both setTimeout and requestAnimationFrame are throttled when the page\n * is hidden, so this callback may get called up to a second or so after the\n * requestAnimationFrame \"paint\" for hidden tabs.\n *\n * Newtabs hidden while loading will presumably be fairly rare (other than\n * preloaded tabs, which we will be filtering out on the server side), so such\n * cases should get lost in the noise.\n *\n * If we decide that it's important to find out when something that's hidden\n * has \"painted\", however, another option is to post a message to this window.\n * That should happen even faster than setTimeout, and, at least as of this\n * writing, it's not throttled in hidden windows in Firefox.\n *\n * @param {Function} callback\n *\n * @returns void\n */\n _afterFramePaint(callback) {\n requestAnimationFrame(() => setTimeout(callback, 0));\n }\n\n _maybeSendBadStateEvent() {\n // Follow up bugs:\n // https://github.com/mozilla/activity-stream/issues/3691\n if (!this.props.initialized) {\n // Remember to report back when data is available.\n this._reportMissingData = true;\n } else if (this._reportMissingData) {\n this._reportMissingData = false;\n // Report how long it took for component to become initialized.\n this._sendBadStateEvent();\n }\n }\n\n _maybeSendPaintedEvent() {\n // If we've already handled a timestamp, don't do it again.\n if (this._timestampHandled || !this.props.initialized) {\n return;\n }\n\n // And if we haven't, we're doing so now, so remember that. Even if\n // something goes wrong in the callback, we can't try again, as we'd be\n // sending back the wrong data, and we have to do it here, so that other\n // calls to this method while waiting for the next frame won't also try to\n // handle it.\n this._timestampHandled = true;\n this._afterFramePaint(this._sendPaintedEvent);\n }\n\n /**\n * Triggered by call to render. Only first call goes through due to\n * `_recordedFirstRender`.\n */\n _ensureFirstRenderTsRecorded() {\n // Used as t0 for recording how long component took to initialize.\n if (!this._recordedFirstRender) {\n this._recordedFirstRender = true;\n // topsites_first_render_ts, highlights_first_render_ts.\n const key = `${this.props.id}_first_render_ts`;\n this.perfSvc.mark(key);\n }\n }\n\n /**\n * Creates `TELEMETRY_UNDESIRED_EVENT` with timestamp in ms\n * of how much longer the data took to be ready for display than it would\n * have been the ideal case.\n * https://github.com/mozilla/ping-centre/issues/98\n */\n _sendBadStateEvent() {\n // highlights_data_ready_ts, topsites_data_ready_ts.\n const dataReadyKey = `${this.props.id}_data_ready_ts`;\n this.perfSvc.mark(dataReadyKey);\n\n try {\n const firstRenderKey = `${this.props.id}_first_render_ts`;\n // value has to be Int32.\n const value = parseInt(this.perfSvc.getMostRecentAbsMarkStartByName(dataReadyKey) -\n this.perfSvc.getMostRecentAbsMarkStartByName(firstRenderKey), 10);\n this.props.dispatch(ac.OnlyToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n // highlights_data_late_by_ms, topsites_data_late_by_ms.\n data: {[`${this.props.id}_data_late_by_ms`]: value},\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true.\n }\n }\n\n _sendPaintedEvent() {\n // Record first_painted event but only send if topsites.\n if (this.props.id !== \"topsites\") {\n return;\n }\n\n // topsites_first_painted_ts.\n const key = `${this.props.id}_first_painted_ts`;\n this.perfSvc.mark(key);\n\n try {\n const data = {};\n data[key] = this.perfSvc.getMostRecentAbsMarkStartByName(key);\n\n this.props.dispatch(ac.OnlyToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data,\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true. We should at least not blow up, and should continue\n // to set this._timestampHandled to avoid going through this again.\n }\n }\n\n render() {\n if (RECORDED_SECTIONS.includes(this.props.id)) {\n this._ensureFirstRenderTsRecorded();\n this._maybeSendBadStateEvent();\n }\n return this.props.children;\n }\n}\n","/* globals Services */\n\"use strict\";\n\n/* istanbul ignore if */\nif (typeof ChromeUtils !== \"undefined\") {\n ChromeUtils.import(\"resource://gre/modules/Services.jsm\");\n}\n\nlet usablePerfObj;\n\n/* istanbul ignore if */\n/* istanbul ignore else */\nif (typeof Services !== \"undefined\") {\n // Borrow the high-resolution timer from the hidden window....\n usablePerfObj = Services.appShell.hiddenDOMWindow.performance;\n} else if (typeof performance !== \"undefined\") {\n // we must be running in content space\n // eslint-disable-next-line no-undef\n usablePerfObj = performance;\n} else {\n // This is a dummy object so this file doesn't crash in the node prerendering\n // task.\n usablePerfObj = {\n now() {},\n mark() {},\n };\n}\n\nfunction _PerfService(options) {\n // For testing, so that we can use a fake Window.performance object with\n // known state.\n if (options && options.performanceObj) {\n this._perf = options.performanceObj;\n } else {\n this._perf = usablePerfObj;\n }\n}\n\n_PerfService.prototype = {\n /**\n * Calls the underlying mark() method on the appropriate Window.performance\n * object to add a mark with the given name to the appropriate performance\n * timeline.\n *\n * @param {String} name the name to give the current mark\n * @return {void}\n */\n mark: function mark(str) {\n this._perf.mark(str);\n },\n\n /**\n * Calls the underlying getEntriesByName on the appropriate Window.performance\n * object.\n *\n * @param {String} name\n * @param {String} type eg \"mark\"\n * @return {Array} Performance* objects\n */\n getEntriesByName: function getEntriesByName(name, type) {\n return this._perf.getEntriesByName(name, type);\n },\n\n /**\n * The timeOrigin property from the appropriate performance object.\n * Used to ensure that timestamps from the add-on code and the content code\n * are comparable.\n *\n * @note If this is called from a context without a window\n * (eg a JSM in chrome), it will return the timeOrigin of the XUL hidden\n * window, which appears to be the first created window (and thus\n * timeOrigin) in the browser. Note also, however, there is also a private\n * hidden window, presumably for private browsing, which appears to be\n * created dynamically later. Exactly how/when that shows up needs to be\n * investigated.\n *\n * @return {Number} A double of milliseconds with a precision of 0.5us.\n */\n get timeOrigin() {\n return this._perf.timeOrigin;\n },\n\n /**\n * Returns the \"absolute\" version of performance.now(), i.e. one that\n * should ([bug 1401406](https://bugzilla.mozilla.org/show_bug.cgi?id=1401406)\n * be comparable across both chrome and content.\n *\n * @return {Number}\n */\n absNow: function absNow() {\n return this.timeOrigin + this._perf.now();\n },\n\n /**\n * This returns the absolute startTime from the most recent performance.mark()\n * with the given name.\n *\n * @param {String} name the name to lookup the start time for\n *\n * @return {Number} the returned start time, as a DOMHighResTimeStamp\n *\n * @throws {Error} \"No Marks with the name ...\" if none are available\n *\n * @note Always surround calls to this by try/catch. Otherwise your code\n * may fail when the `privacy.resistFingerprinting` pref is true. When\n * this pref is set, all attempts to get marks will likely fail, which will\n * cause this method to throw.\n *\n * See [bug 1369303](https://bugzilla.mozilla.org/show_bug.cgi?id=1369303)\n * for more info.\n */\n getMostRecentAbsMarkStartByName(name) {\n let entries = this.getEntriesByName(name, \"mark\");\n\n if (!entries.length) {\n throw new Error(`No marks with the name ${name}`);\n }\n\n let mostRecentEntry = entries[entries.length - 1];\n return this._perf.timeOrigin + mostRecentEntry.startTime;\n },\n};\n\nthis.perfService = new _PerfService();\nconst EXPORTED_SYMBOLS = [\"_PerfService\", \"perfService\"];\n","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class MoreRecommendations extends React.PureComponent {\n render() {\n const {read_more_endpoint} = this.props;\n if (read_more_endpoint) {\n return (\n \n \n \n );\n }\n return null;\n }\n}\n","import {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class _PocketLoggedInCta extends React.PureComponent {\n render() {\n const {pocketCta} = this.props.Pocket;\n return (\n \n \n {pocketCta.ctaButton ? pocketCta.ctaButton : }\n \n\n \n \n {pocketCta.ctaText ? pocketCta.ctaText : }\n \n \n \n );\n }\n}\n\nexport const PocketLoggedInCta = connect(state => ({Pocket: state.Pocket}))(_PocketLoggedInCta);\n","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class Topic extends React.PureComponent {\n render() {\n const {url, name} = this.props;\n return ({name});\n }\n}\n\nexport class Topics extends React.PureComponent {\n render() {\n const {topics} = this.props;\n return (\n \n \n {topics && topics.map(t => )}\n \n );\n }\n}\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {MIN_CORNER_FAVICON_SIZE, MIN_RICH_FAVICON_SIZE, TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport {injectIntl} from \"react-intl\";\nimport React from \"react\";\nimport {SearchShortcutsForm} from \"./SearchShortcutsForm\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\nimport {TopSiteForm} from \"./TopSiteForm\";\nimport {TopSiteList} from \"./TopSite\";\n\nfunction topSiteIconType(link) {\n if (link.customScreenshotURL) {\n return \"custom_screenshot\";\n }\n if (link.tippyTopIcon || link.faviconRef === \"tippytop\") {\n return \"tippytop\";\n }\n if (link.faviconSize >= MIN_RICH_FAVICON_SIZE) {\n return \"rich_icon\";\n }\n if (link.screenshot && link.faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n return \"screenshot_with_icon\";\n }\n if (link.screenshot) {\n return \"screenshot\";\n }\n return \"no_image\";\n}\n\n/**\n * Iterates through TopSites and counts types of images.\n * @param acc Accumulator for reducer.\n * @param topsite Entry in TopSites.\n */\nfunction countTopSitesIconsTypes(topSites) {\n const countTopSitesTypes = (acc, link) => {\n acc[topSiteIconType(link)]++;\n return acc;\n };\n\n return topSites.reduce(countTopSitesTypes, {\n \"custom_screenshot\": 0,\n \"screenshot_with_icon\": 0,\n \"screenshot\": 0,\n \"tippytop\": 0,\n \"rich_icon\": 0,\n \"no_image\": 0,\n });\n}\n\nexport class _TopSites extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onEditFormClose = this.onEditFormClose.bind(this);\n this.onSearchShortcutsFormClose = this.onSearchShortcutsFormClose.bind(this);\n }\n\n /**\n * Dispatch session statistics about the quality of TopSites icons and pinned count.\n */\n _dispatchTopSitesStats() {\n const topSites = this._getVisibleTopSites();\n const topSitesIconsStats = countTopSitesIconsTypes(topSites);\n const topSitesPinned = topSites.filter(site => !!site.isPinned).length;\n const searchShortcuts = topSites.filter(site => !!site.searchTopSite).length;\n // Dispatch telemetry event with the count of TopSites images types.\n this.props.dispatch(ac.AlsoToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data: {\n topsites_icon_stats: topSitesIconsStats,\n topsites_pinned: topSitesPinned,\n topsites_search_shortcuts: searchShortcuts,\n },\n }));\n }\n\n /**\n * Return the TopSites that are visible based on prefs and window width.\n */\n _getVisibleTopSites() {\n // We hide 2 sites per row when not in the wide layout.\n let sitesPerRow = TOP_SITES_MAX_SITES_PER_ROW;\n // $break-point-widest = 1072px (from _variables.scss)\n if (!global.matchMedia(`(min-width: 1072px)`).matches) {\n sitesPerRow -= 2;\n }\n return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * sitesPerRow);\n }\n\n componentDidUpdate() {\n this._dispatchTopSitesStats();\n }\n\n componentDidMount() {\n this._dispatchTopSitesStats();\n }\n\n onEditFormClose() {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_EDIT_CLOSE\",\n }));\n this.props.dispatch({type: at.TOP_SITES_CANCEL_EDIT});\n }\n\n onSearchShortcutsFormClose() {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"SEARCH_EDIT_CLOSE\",\n }));\n this.props.dispatch({type: at.TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL});\n }\n\n render() {\n const {props} = this;\n const {editForm, showSearchShortcutsForm} = props.TopSites;\n const extraMenuOptions = [\"AddTopSite\"];\n if (props.Prefs.values[\"improvesearch.topSiteSearchShortcuts\"]) {\n extraMenuOptions.push(\"AddSearchShortcut\");\n }\n\n return (\n \n \n \n {editForm &&\n \n \n \n \n \n \n }\n {showSearchShortcutsForm &&\n \n \n \n \n \n \n }\n \n \n );\n }\n}\n\nexport const TopSites = connect(state => ({\n TopSites: state.TopSites,\n Prefs: state.Prefs,\n TopSitesRows: state.Prefs.values.topSitesRows,\n}))(injectIntl(_TopSites));\n","export const TOP_SITES_SOURCE = \"TOP_SITES\";\nexport const TOP_SITES_CONTEXT_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\",\n \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\", \"DeleteUrl\"];\n// the special top site for search shortcut experiment can only have the option to unpin (which removes) the topsite\nexport const TOP_SITES_SEARCH_SHORTCUTS_CONTEXT_MENU_OPTIONS = [\"CheckPinTopSite\", \"Separator\", \"BlockUrl\"];\n// minimum size necessary to show a rich icon instead of a screenshot\nexport const MIN_RICH_FAVICON_SIZE = 96;\n// minimum size necessary to show any icon in the top left corner with a screenshot\nexport const MIN_CORNER_FAVICON_SIZE = 16;\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_SOURCE} from \"./TopSitesConstants\";\n\nclass SelectableSearchShortcut extends React.PureComponent {\n render() {\n const {shortcut, selected} = this.props;\n const imageStyle = {backgroundImage: `url(\"${shortcut.tippyTopIcon}\")`};\n return (\n \n \n \n \n \n \n \n \n \n \n {shortcut.keyword}\n \n \n \n \n \n );\n }\n}\n\nexport class SearchShortcutsForm extends React.PureComponent {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n this.onSaveButtonClick = this.onSaveButtonClick.bind(this);\n\n // clone the shortcuts and add them to the state so we can add isSelected property\n const shortcuts = [];\n const {rows, searchShortcuts} = props.TopSites;\n searchShortcuts.forEach(shortcut => {\n shortcuts.push({\n ...shortcut,\n isSelected: !!rows.find(row => row && row.isPinned && row.searchTopSite && row.label === shortcut.keyword),\n });\n });\n this.state = {shortcuts};\n }\n\n handleChange(event) {\n const {target} = event;\n const {name, checked} = target;\n this.setState(prevState => {\n const shortcuts = prevState.shortcuts.slice();\n let shortcut = shortcuts.find(({keyword}) => keyword === name);\n shortcut.isSelected = checked;\n return {shortcuts};\n });\n }\n\n onCancelButtonClick(ev) {\n ev.preventDefault();\n this.props.onClose();\n }\n\n onSaveButtonClick(ev) {\n ev.preventDefault();\n\n // Check if there were any changes and act accordingly\n const {rows} = this.props.TopSites;\n const pinQueue = [];\n const unpinQueue = [];\n this.state.shortcuts.forEach(shortcut => {\n const alreadyPinned = rows.find(row => row && row.isPinned && row.searchTopSite && row.label === shortcut.keyword);\n if (shortcut.isSelected && !alreadyPinned) {\n pinQueue.push(this._searchTopSite(shortcut));\n } else if (!shortcut.isSelected && alreadyPinned) {\n unpinQueue.push({url: alreadyPinned.url, searchVendor: shortcut.shortURL});\n }\n });\n\n // Tell the feed to do the work.\n this.props.dispatch(ac.OnlyToMain({\n type: at.UPDATE_PINNED_SEARCH_SHORTCUTS,\n data: {\n addedShortcuts: pinQueue,\n deletedShortcuts: unpinQueue,\n },\n }));\n\n // Send the Telemetry pings.\n pinQueue.forEach(shortcut => {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"SEARCH_EDIT_ADD\",\n value: {search_vendor: shortcut.searchVendor},\n }));\n });\n unpinQueue.forEach(shortcut => {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"SEARCH_EDIT_DELETE\",\n value: {search_vendor: shortcut.searchVendor},\n }));\n });\n\n this.props.onClose();\n }\n\n _searchTopSite(shortcut) {\n return {\n url: shortcut.url,\n searchTopSite: true,\n label: shortcut.keyword,\n searchVendor: shortcut.shortURL,\n };\n }\n\n render() {\n return (\n \n \n \n \n \n \n {this.state.shortcuts.map(shortcut => )}\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {\n MIN_CORNER_FAVICON_SIZE,\n MIN_RICH_FAVICON_SIZE,\n TOP_SITES_CONTEXT_MENU_OPTIONS,\n TOP_SITES_SEARCH_SHORTCUTS_CONTEXT_MENU_OPTIONS,\n TOP_SITES_SOURCE,\n} from \"./TopSitesConstants\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {ScreenshotUtils} from \"content-src/lib/screenshot-utils\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\n\nexport class TopSiteLink extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {screenshotImage: null};\n this.onDragEvent = this.onDragEvent.bind(this);\n this.onKeyPress = this.onKeyPress.bind(this);\n }\n\n /*\n * Helper to determine whether the drop zone should allow a drop. We only allow\n * dropping top sites for now.\n */\n _allowDrop(e) {\n return e.dataTransfer.types.includes(\"text/topsite-index\");\n }\n\n onDragEvent(event) {\n switch (event.type) {\n case \"click\":\n // Stop any link clicks if we started any dragging\n if (this.dragged) {\n event.preventDefault();\n }\n break;\n case \"dragstart\":\n this.dragged = true;\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(\"text/topsite-index\", this.props.index);\n event.target.blur();\n this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title);\n break;\n case \"dragend\":\n this.props.onDragEvent(event);\n break;\n case \"dragenter\":\n case \"dragover\":\n case \"drop\":\n if (this._allowDrop(event)) {\n event.preventDefault();\n this.props.onDragEvent(event, this.props.index);\n }\n break;\n case \"mousedown\":\n // Block the scroll wheel from appearing for middle clicks on search top sites\n if (event.button === 1 && this.props.link.searchTopSite) {\n event.preventDefault();\n }\n // Reset at the first mouse event of a potential drag\n this.dragged = false;\n break;\n }\n }\n\n /**\n * Helper to obtain the next state based on nextProps and prevState.\n *\n * NOTE: Rename this method to getDerivedStateFromProps when we update React\n * to >= 16.3. We will need to update tests as well. We cannot rename this\n * method to getDerivedStateFromProps now because there is a mismatch in\n * the React version that we are using for both testing and production.\n * (i.e. react-test-render => \"16.3.2\", react => \"16.2.0\").\n *\n * See https://github.com/airbnb/enzyme/blob/master/packages/enzyme-adapter-react-16/package.json#L43.\n */\n static getNextStateFromProps(nextProps, prevState) {\n const {screenshot} = nextProps.link;\n const imageInState = ScreenshotUtils.isRemoteImageLocal(prevState.screenshotImage, screenshot);\n if (imageInState) {\n return null;\n }\n\n // Since image was updated, attempt to revoke old image blob URL, if it exists.\n ScreenshotUtils.maybeRevokeBlobObjectURL(prevState.screenshotImage);\n\n return {screenshotImage: ScreenshotUtils.createLocalImageObject(screenshot)};\n }\n\n // NOTE: Remove this function when we update React to >= 16.3 since React will\n // call getDerivedStateFromProps automatically. We will also need to\n // rename getNextStateFromProps to getDerivedStateFromProps.\n componentWillMount() {\n const nextState = TopSiteLink.getNextStateFromProps(this.props, this.state);\n if (nextState) {\n this.setState(nextState);\n }\n }\n\n // NOTE: Remove this function when we update React to >= 16.3 since React will\n // call getDerivedStateFromProps automatically. We will also need to\n // rename getNextStateFromProps to getDerivedStateFromProps.\n componentWillReceiveProps(nextProps) {\n const nextState = TopSiteLink.getNextStateFromProps(nextProps, this.state);\n if (nextState) {\n this.setState(nextState);\n }\n }\n\n componentWillUnmount() {\n ScreenshotUtils.maybeRevokeBlobObjectURL(this.state.screenshotImage);\n }\n\n onKeyPress(event) {\n // If we have tabbed to a search shortcut top site, and we click 'enter',\n // we should execute the onClick function. This needs to be added because\n // search top sites are anchor tags without an href. See bug 1483135\n if (this.props.link.searchTopSite && event.key === \"Enter\") {\n this.props.onClick(event);\n }\n }\n\n render() {\n const {children, className, defaultStyle, isDraggable, link, onClick, title} = this.props;\n const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : \"\"}${link.isDragged ? \" dragged\" : \"\"}${link.searchTopSite ? \" search-shortcut\" : \"\"}`;\n const {tippyTopIcon, faviconSize} = link;\n const [letterFallback] = title;\n let imageClassName;\n let imageStyle;\n let showSmallFavicon = false;\n let smallFaviconStyle;\n let smallFaviconFallback;\n let hasScreenshotImage = this.state.screenshotImage && this.state.screenshotImage.url;\n if (defaultStyle) { // force no styles (letter fallback) even if the link has imagery\n smallFaviconFallback = false;\n } else if (link.searchTopSite) {\n imageClassName = \"top-site-icon rich-icon\";\n imageStyle = {\n backgroundColor: link.backgroundColor,\n backgroundImage: `url(${tippyTopIcon})`,\n };\n smallFaviconStyle = {backgroundImage: `url(${tippyTopIcon})`};\n } else if (link.customScreenshotURL) {\n // assume high quality custom screenshot and use rich icon styles and class names\n imageClassName = \"top-site-icon rich-icon\";\n imageStyle = {\n backgroundColor: link.backgroundColor,\n backgroundImage: hasScreenshotImage ? `url(${this.state.screenshotImage.url})` : \"none\",\n };\n } else if (tippyTopIcon || faviconSize >= MIN_RICH_FAVICON_SIZE) {\n // styles and class names for top sites with rich icons\n imageClassName = \"top-site-icon rich-icon\";\n imageStyle = {\n backgroundColor: link.backgroundColor,\n backgroundImage: `url(${tippyTopIcon || link.favicon})`,\n };\n } else {\n // styles and class names for top sites with screenshot + small icon in top left corner\n imageClassName = `screenshot${hasScreenshotImage ? \" active\" : \"\"}`;\n imageStyle = {backgroundImage: hasScreenshotImage ? `url(${this.state.screenshotImage.url})` : \"none\"};\n\n // only show a favicon in top left if it's greater than 16x16\n if (faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n showSmallFavicon = true;\n smallFaviconStyle = {backgroundImage: `url(${link.favicon})`};\n } else if (hasScreenshotImage) {\n // Don't show a small favicon if there is no screenshot, because that\n // would result in two fallback icons\n showSmallFavicon = true;\n smallFaviconFallback = true;\n }\n }\n let draggableProps = {};\n if (isDraggable) {\n draggableProps = {\n onClick: this.onDragEvent,\n onDragEnd: this.onDragEvent,\n onDragStart: this.onDragEvent,\n onMouseDown: this.onDragEvent,\n };\n }\n return (\n \n \n \n \n {link.searchTopSite && }\n {showSmallFavicon && }\n \n \n {link.isPinned && }\n {title}\n \n \n {children}\n \n );\n }\n}\nTopSiteLink.defaultProps = {\n title: \"\",\n link: {},\n isDraggable: true,\n};\n\nexport class TopSite extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {showContextMenu: false};\n this.onLinkClick = this.onLinkClick.bind(this);\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n }\n\n /**\n * Report to telemetry additional information about the item.\n */\n _getTelemetryInfo() {\n const value = {icon_type: this.props.link.iconType};\n // Filter out \"not_pinned\" type for being the default\n if (this.props.link.isPinned) {\n value.card_type = \"pinned\";\n }\n if (this.props.link.searchTopSite) {\n // Set the card_type as \"search\" regardless of its pinning status\n value.card_type = \"search\";\n value.search_vendor = this.props.link.hostname;\n }\n return {value};\n }\n\n userEvent(event) {\n this.props.dispatch(ac.UserEvent(Object.assign({\n event,\n source: TOP_SITES_SOURCE,\n action_position: this.props.index,\n }, this._getTelemetryInfo())));\n }\n\n onLinkClick(event) {\n this.userEvent(\"CLICK\");\n\n // Specially handle a top site link click for \"typed\" frecency bonus as\n // specified as a property on the link.\n event.preventDefault();\n const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n if (!this.props.link.searchTopSite) {\n this.props.dispatch(ac.OnlyToMain({\n type: at.OPEN_LINK,\n data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}}),\n }));\n } else {\n this.props.dispatch(ac.OnlyToMain({\n type: at.FILL_SEARCH_TERM,\n data: {label: this.props.link.label},\n }));\n }\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.props.onActivate(this.props.index);\n this.setState({showContextMenu: true});\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n render() {\n const {props} = this;\n const {link} = props;\n const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index;\n const title = link.label || link.hostname;\n return (\n \n \n \n \n \n \n {isContextMenuOpen &&\n \n }\n \n );\n }\n}\nTopSite.defaultProps = {\n link: {},\n onActivate() {},\n};\n\nexport class TopSitePlaceholder extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onEditButtonClick = this.onEditButtonClick.bind(this);\n }\n\n onEditButtonClick() {\n this.props.dispatch(\n {type: at.TOP_SITES_EDIT, data: {index: this.props.index}});\n }\n\n render() {\n return (\n \n );\n }\n}\n\nexport class _TopSiteList extends React.PureComponent {\n static get DEFAULT_STATE() {\n return {\n activeIndex: null,\n draggedIndex: null,\n draggedSite: null,\n draggedTitle: null,\n topSitesPreview: null,\n };\n }\n\n constructor(props) {\n super(props);\n this.state = _TopSiteList.DEFAULT_STATE;\n this.onDragEvent = this.onDragEvent.bind(this);\n this.onActivate = this.onActivate.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.state.draggedSite) {\n const prevTopSites = this.props.TopSites && this.props.TopSites.rows;\n const newTopSites = nextProps.TopSites && nextProps.TopSites.rows;\n if (prevTopSites && prevTopSites[this.state.draggedIndex] &&\n prevTopSites[this.state.draggedIndex].url === this.state.draggedSite.url &&\n (!newTopSites[this.state.draggedIndex] || newTopSites[this.state.draggedIndex].url !== this.state.draggedSite.url)) {\n // We got the new order from the redux store via props. We can clear state now.\n this.setState(_TopSiteList.DEFAULT_STATE);\n }\n }\n }\n\n userEvent(event, index) {\n this.props.dispatch(ac.UserEvent({\n event,\n source: TOP_SITES_SOURCE,\n action_position: index,\n }));\n }\n\n onDragEvent(event, index, link, title) {\n switch (event.type) {\n case \"dragstart\":\n this.dropped = false;\n this.setState({\n draggedIndex: index,\n draggedSite: link,\n draggedTitle: title,\n activeIndex: null,\n });\n this.userEvent(\"DRAG\", index);\n break;\n case \"dragend\":\n if (!this.dropped) {\n // If there was no drop event, reset the state to the default.\n this.setState(_TopSiteList.DEFAULT_STATE);\n }\n break;\n case \"dragenter\":\n if (index === this.state.draggedIndex) {\n this.setState({topSitesPreview: null});\n } else {\n this.setState({topSitesPreview: this._makeTopSitesPreview(index)});\n }\n break;\n case \"drop\":\n if (index !== this.state.draggedIndex) {\n this.dropped = true;\n this.props.dispatch(ac.AlsoToMain({\n type: at.TOP_SITES_INSERT,\n data: {\n site: {\n url: this.state.draggedSite.url,\n label: this.state.draggedTitle,\n customScreenshotURL: this.state.draggedSite.customScreenshotURL,\n // Only if the search topsites experiment is enabled\n ...(this.state.draggedSite.searchTopSite && {searchTopSite: true}),\n },\n index,\n draggedFromIndex: this.state.draggedIndex,\n },\n }));\n this.userEvent(\"DROP\", index);\n }\n break;\n }\n }\n\n _getTopSites() {\n // Make a copy of the sites to truncate or extend to desired length\n let topSites = this.props.TopSites.rows.slice();\n topSites.length = this.props.TopSitesRows * TOP_SITES_MAX_SITES_PER_ROW;\n return topSites;\n }\n\n /**\n * Make a preview of the topsites that will be the result of dropping the currently\n * dragged site at the specified index.\n */\n _makeTopSitesPreview(index) {\n const topSites = this._getTopSites();\n topSites[this.state.draggedIndex] = null;\n const pinnedOnly = topSites.map(site => ((site && site.isPinned) ? site : null));\n const unpinned = topSites.filter(site => site && !site.isPinned);\n const siteToInsert = Object.assign({}, this.state.draggedSite, {isPinned: true, isDragged: true});\n if (!pinnedOnly[index]) {\n pinnedOnly[index] = siteToInsert;\n } else {\n // Find the hole to shift the pinned site(s) towards. We shift towards the\n // hole left by the site being dragged.\n let holeIndex = index;\n const indexStep = index > this.state.draggedIndex ? -1 : 1;\n while (pinnedOnly[holeIndex]) {\n holeIndex += indexStep;\n }\n\n // Shift towards the hole.\n const shiftingStep = index > this.state.draggedIndex ? 1 : -1;\n while (holeIndex !== index) {\n const nextIndex = holeIndex + shiftingStep;\n pinnedOnly[holeIndex] = pinnedOnly[nextIndex];\n holeIndex = nextIndex;\n }\n pinnedOnly[index] = siteToInsert;\n }\n\n // Fill in the remaining holes with unpinned sites.\n const preview = pinnedOnly;\n for (let i = 0; i < preview.length; i++) {\n if (!preview[i]) {\n preview[i] = unpinned.shift() || null;\n }\n }\n\n return preview;\n }\n\n onActivate(index) {\n this.setState({activeIndex: index});\n }\n\n render() {\n const {props} = this;\n const topSites = this.state.topSitesPreview || this._getTopSites();\n const topSitesUI = [];\n const commonProps = {\n onDragEvent: this.onDragEvent,\n dispatch: props.dispatch,\n intl: props.intl,\n };\n // We assign a key to each placeholder slot. We need it to be independent\n // of the slot index (i below) so that the keys used stay the same during\n // drag and drop reordering and the underlying DOM nodes are reused.\n // This mostly (only?) affects linux so be sure to test on linux before changing.\n let holeIndex = 0;\n\n // On narrow viewports, we only show 6 sites per row. We'll mark the rest as\n // .hide-for-narrow to hide in CSS via @media query.\n const maxNarrowVisibleIndex = props.TopSitesRows * 6;\n\n for (let i = 0, l = topSites.length; i < l; i++) {\n const link = topSites[i] && Object.assign({}, topSites[i], {iconType: this.props.topSiteIconType(topSites[i])});\n const slotProps = {\n key: link ? link.url : holeIndex++,\n index: i,\n };\n if (i >= maxNarrowVisibleIndex) {\n slotProps.className = \"hide-for-narrow\";\n }\n topSitesUI.push(!link ? (\n \n ) : (\n \n ));\n }\n return (\n {topSitesUI}\n );\n }\n}\n\nexport const TopSiteList = injectIntl(_TopSiteList);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\n\nexport class _StartupOverlay extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onInputChange = this.onInputChange.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n this.clickSkip = this.clickSkip.bind(this);\n this.initScene = this.initScene.bind(this);\n this.removeOverlay = this.removeOverlay.bind(this);\n this.onInputInvalid = this.onInputInvalid.bind(this);\n\n this.state = {\n emailInput: \"\",\n overlayRemoved: false,\n flowId: \"\",\n flowBeginTime: 0,\n };\n this.didFetch = false;\n }\n\n async componentWillUpdate() {\n if (this.props.fxa_endpoint && !this.didFetch) {\n try {\n this.didFetch = true;\n const fxaParams = \"entrypoint=activity-stream-firstrun&utm_source=activity-stream&utm_campaign=firstrun&form_type=email\";\n const response = await fetch(`${this.props.fxa_endpoint}/metrics-flow?${fxaParams}`);\n if (response.status === 200) {\n const {flowId, flowBeginTime} = await response.json();\n this.setState({flowId, flowBeginTime});\n } else {\n this.props.dispatch(ac.OnlyToMain({type: at.TELEMETRY_UNDESIRED_EVENT, data: {event: \"FXA_METRICS_FETCH_ERROR\", value: response.status}}));\n }\n } catch (error) {\n this.props.dispatch(ac.OnlyToMain({type: at.TELEMETRY_UNDESIRED_EVENT, data: {event: \"FXA_METRICS_ERROR\"}}));\n }\n }\n }\n\n componentDidMount() {\n this.initScene();\n }\n\n initScene() {\n // Timeout to allow the scene to render once before attaching the attribute\n // to trigger the animation.\n setTimeout(() => {\n this.setState({show: true});\n }, 10);\n }\n\n removeOverlay() {\n window.removeEventListener(\"visibilitychange\", this.removeOverlay);\n document.body.classList.remove(\"hide-main\");\n this.setState({show: false});\n setTimeout(() => {\n // Allow scrolling and fully remove overlay after animation finishes.\n document.body.classList.remove(\"welcome\");\n this.setState({overlayRemoved: true});\n }, 400);\n }\n\n onInputChange(e) {\n let error = e.target.previousSibling;\n this.setState({emailInput: e.target.value});\n error.classList.remove(\"active\");\n e.target.classList.remove(\"invalid\");\n }\n\n onSubmit() {\n this.props.dispatch(ac.UserEvent({event: \"SUBMIT_EMAIL\", ...this._getFormInfo()}));\n\n window.addEventListener(\"visibilitychange\", this.removeOverlay);\n }\n\n clickSkip() {\n this.props.dispatch(ac.UserEvent({event: \"SKIPPED_SIGNIN\", ...this._getFormInfo()}));\n this.removeOverlay();\n }\n\n /**\n * Report to telemetry additional information about the form submission.\n */\n _getFormInfo() {\n const value = {has_flow_params: this.state.flowId.length > 0};\n return {value};\n }\n\n onInputInvalid(e) {\n let error = e.target.previousSibling;\n error.classList.add(\"active\");\n e.target.classList.add(\"invalid\");\n e.preventDefault(); // Override built-in form validation popup\n e.target.focus();\n }\n\n render() {\n // When skipping the onboarding tour we show AS but we are still on\n // about:welcome, prop.isFirstrun is true and StartupOverlay is rendered\n if (this.state.overlayRemoved) {\n return null;\n }\n\n let termsLink = ();\n let privacyLink = ();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.props.intl.formatMessage({id: \"firstrun_invalid_input\"})}\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nconst getState = state => ({fxa_endpoint: state.Prefs.values.fxa_endpoint});\nexport const StartupOverlay = connect(getState)(injectIntl(_StartupOverlay));\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\nexport class DetectUserSessionStart {\n constructor(store, options = {}) {\n this._store = store;\n // Overrides for testing\n this.document = options.document || global.document;\n this._perfService = options.perfService || perfSvc;\n this._onVisibilityChange = this._onVisibilityChange.bind(this);\n }\n\n /**\n * sendEventOrAddListener - Notify immediately if the page is already visible,\n * or else set up a listener for when visibility changes.\n * This is needed for accurate session tracking for telemetry,\n * because tabs are pre-loaded.\n */\n sendEventOrAddListener() {\n if (this.document.visibilityState === VISIBLE) {\n // If the document is already visible, to the user, send a notification\n // immediately that a session has started.\n this._sendEvent();\n } else {\n // If the document is not visible, listen for when it does become visible.\n this.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n /**\n * _sendEvent - Sends a message to the main process to indicate the current\n * tab is now visible to the user, includes the\n * visibility_event_rcvd_ts time in ms from the UNIX epoch.\n */\n _sendEvent() {\n this._perfService.mark(\"visibility_event_rcvd_ts\");\n\n try {\n let visibility_event_rcvd_ts = this._perfService\n .getMostRecentAbsMarkStartByName(\"visibility_event_rcvd_ts\");\n\n this._store.dispatch(ac.AlsoToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data: {visibility_event_rcvd_ts},\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true. We should at least not blow up.\n }\n }\n\n /**\n * _onVisibilityChange - If the visibility has changed to visible, sends a notification\n * and removes the event listener. This should only be called once per tab.\n */\n _onVisibilityChange() {\n if (this.document.visibilityState === VISIBLE) {\n this._sendEvent();\n this.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n}\n","export function enableASRouterContent(store, asrouterContent) {\n // Enable asrouter content\n store.subscribe(() => {\n const state = store.getState();\n if (!state.ASRouter.initialized) {\n return;\n }\n\n if (!asrouterContent.initialized) {\n asrouterContent.init();\n }\n });\n // Return this for testing purposes\n return {asrouterContent};\n}\n","import React from \"react\";\n\nconst ALLOWED_STYLE_TAGS = [\"color\", \"backgroundColor\"];\n\nexport const Button = props => {\n const style = {};\n\n // Add allowed style tags from props, e.g. props.color becomes style={color: props.color}\n for (const tag of ALLOWED_STYLE_TAGS) {\n if (typeof props[tag] !== \"undefined\") {\n style[tag] = props[tag];\n }\n }\n // remove border if bg is set to something custom\n if (style.backgroundColor) {\n style.border = \"0\";\n }\n\n return (\n {props.children}\n );\n};\n","export function safeURI(url) {\n if (!url) {\n return \"\";\n }\n const {protocol} = new URL(url);\n const isAllowed = [\n \"http:\",\n \"https:\",\n \"data:\",\n \"resource:\",\n \"chrome:\",\n ].includes(protocol);\n if (!isAllowed) {\n console.warn(`The protocol ${protocol} is not allowed for template URLs.`); // eslint-disable-line no-console\n }\n return isAllowed ? url : \"\";\n}\n","import {Localized} from \"fluent-react\";\nimport React from \"react\";\nimport {RICH_TEXT_KEYS} from \"../../rich-text-strings\";\nimport {safeURI} from \"../../template-utils\";\n\n// Elements allowed in snippet content\nconst ALLOWED_TAGS = {\n b: ,\n i: ,\n u: ,\n strong: ,\n em: ,\n br: ,\n};\n\n/**\n * Transform an object (tag name: {url}) into (tag name: anchor) where the url\n * is used as href, in order to render links inside a Fluent.Localized component.\n */\nexport function convertLinks(links, sendClick, doNotAutoBlock) {\n if (links) {\n return Object.keys(links).reduce((acc, linkTag) => {\n const {action} = links[linkTag];\n // Setting the value to false will not include the attribute in the anchor\n const url = action ? false : safeURI(links[linkTag].url);\n\n acc[linkTag] = ();\n return acc;\n }, {});\n }\n\n return null;\n}\n\n/**\n * Message wrapper used to sanitize markup and render HTML.\n */\nexport function RichText(props) {\n if (!RICH_TEXT_KEYS.includes(props.localization_id)) {\n throw new Error(`ASRouter: ${props.localization_id} is not a valid rich text property. If you want it to be processed, you need to add it to asrouter/rich-text-strings.js`);\n }\n return (\n \n {props.text}\n \n );\n}\n","import React from \"react\";\n\nexport class SnippetBase extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onBlockClicked = this.onBlockClicked.bind(this);\n }\n\n onBlockClicked() {\n if (this.props.provider !== \"preview\") {\n this.props.sendUserActionTelemetry({event: \"BLOCK\", id: this.props.UISurface});\n }\n\n this.props.onBlock();\n }\n\n renderDismissButton() {\n if (this.props.footerDismiss) {\n return (\n \n \n \n {this.props.content.scene2_dismiss_button_text}\n \n \n \n );\n }\n\n return (\n \n );\n }\n\n render() {\n const {props} = this;\n\n const containerClassName = `SnippetBaseContainer${props.className ? ` ${props.className}` : \"\"}`;\n\n return (\n \n {props.children}\n \n {this.renderDismissButton()}\n );\n }\n}\n","import {Button} from \"../../components/Button/Button\";\nimport React from \"react\";\nimport {RichText} from \"../../components/RichText/RichText\";\nimport {safeURI} from \"../../template-utils\";\nimport {SnippetBase} from \"../../components/SnippetBase/SnippetBase\";\n\nconst DEFAULT_ICON_PATH = \"chrome://branding/content/icon64.png\";\n\nexport class SimpleSnippet extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onButtonClick = this.onButtonClick.bind(this);\n }\n\n onButtonClick() {\n if (this.props.provider !== \"preview\") {\n this.props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", id: this.props.UISurface});\n }\n const {button_url} = this.props.content;\n // If button_url is defined handle it as OPEN_URL action\n const type = this.props.content.button_action || (button_url && \"OPEN_URL\");\n this.props.onAction({\n type,\n data: {args: this.props.content.button_action_args || button_url},\n });\n if (!this.props.content.do_not_autoblock) {\n this.props.onBlock();\n }\n }\n\n renderTitle() {\n const {title} = this.props.content;\n return title ? {title} : null;\n }\n\n renderTitleIcon() {\n const titleIcon = safeURI(this.props.content.title_icon);\n return titleIcon ? : null;\n }\n\n renderButton() {\n const {props} = this;\n if (!props.content.button_action && !props.onButtonClick && !props.content.button_url) {\n return null;\n }\n\n return (\n {props.content.button_label}\n );\n }\n\n renderText() {\n const {props} = this;\n return ();\n }\n\n render() {\n const {props} = this;\n let className = \"SimpleSnippet\";\n if (props.className) {\n className += ` ${props.className}`;\n }\n if (props.content.tall) {\n className += \" tall\";\n }\n return (\n \n \n {this.renderTitleIcon()} {this.renderTitle()} {this.renderText()}\n {this.props.extraContent}\n \n {{this.renderButton()}}\n );\n }\n}\n","import React from \"react\";\nimport {SimpleSnippet} from \"../SimpleSnippet/SimpleSnippet\";\n\nclass EOYSnippetBase extends React.PureComponent {\n constructor(props) {\n super(props);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n /**\n * setFrequencyValue - `frequency` form parameter value should be `monthly`\n * if `monthly-checkbox` is selected or `single` otherwise\n */\n setFrequencyValue() {\n const frequencyCheckbox = this.refs.form.querySelector(\"#monthly-checkbox\");\n if (frequencyCheckbox.checked) {\n this.refs.form.querySelector(\"[name='frequency']\").value = \"monthly\";\n }\n }\n\n handleSubmit(event) {\n event.preventDefault();\n this.setFrequencyValue();\n this.refs.form.submit();\n if (!this.props.content.do_not_autoblock) {\n this.props.onBlock();\n }\n }\n\n renderDonations() {\n const fieldNames = [\"first\", \"second\", \"third\", \"fourth\"];\n const numberFormat = new Intl.NumberFormat(this.props.content.locale || navigator.language, {\n style: \"currency\",\n currency: this.props.content.currency_code,\n minimumFractionDigits: 0,\n });\n // Default to `second` button\n const {selected_button} = this.props.content;\n const btnStyle = {\n color: this.props.content.button_color,\n backgroundColor: this.props.content.button_background_color,\n };\n\n return (\n {fieldNames.map((field, idx) => {\n const button_name = `donation_amount_${field}`;\n const amount = this.props.content[button_name];\n return (\n \n \n {numberFormat.format(amount)}\n \n );\n })}\n\n \n \n \n {this.props.content.monthly_checkbox_label_text}\n \n \n\n \n \n this.props.content[`donation_amount_${field}`])} />\n {this.props.content.button_label}\n );\n }\n\n render() {\n const textStyle = {\n color: this.props.content.text_color,\n backgroundColor: this.props.content.background_color,\n };\n const customElement = ;\n return ();\n }\n}\n\nexport const EOYSnippet = props => {\n const extendedContent = {\n monthly_checkbox_label_text: \"Make my donation monthly\",\n locale: \"en-US\",\n currency_code: \"usd\",\n selected_button: \"donation_amount_second\",\n ...props.content,\n };\n\n return ();\n};\n","import {Button} from \"../../components/Button/Button\";\nimport React from \"react\";\nimport {RichText} from \"../../components/RichText/RichText\";\nimport {SimpleSnippet} from \"../SimpleSnippet/SimpleSnippet\";\nimport {SnippetBase} from \"../../components/SnippetBase/SnippetBase\";\n\nexport class SubmitFormSnippet extends React.PureComponent {\n constructor(props) {\n super(props);\n this.expandSnippet = this.expandSnippet.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.onInputChange = this.onInputChange.bind(this);\n this.state = {\n expanded: false,\n signupSubmitted: false,\n signupSuccess: false,\n disableForm: false,\n };\n }\n\n async handleSubmit(event) {\n let json;\n\n if (this.state.disableForm) {\n return;\n }\n\n event.preventDefault();\n this.setState({disableForm: true});\n this.props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", value: \"conversion-subscribe-activation\", id: \"NEWTAB_FOOTER_BAR_CONTENT\"});\n\n if (this.props.form_method.toUpperCase() === \"GET\") {\n this.refs.form.submit();\n return;\n }\n\n const {url, formData} = this.props.processFormData ?\n this.props.processFormData(this.refs.mainInput, this.props) :\n {url: this.refs.form.action, formData: new FormData(this.refs.form)};\n\n try {\n const fetchRequest = new Request(url, {body: formData, method: \"POST\"});\n const response = await fetch(fetchRequest);\n json = await response.json();\n } catch (err) {\n console.log(err); // eslint-disable-line no-console\n }\n\n if (json && json.status === \"ok\") {\n this.setState({signupSuccess: true, signupSubmitted: true});\n if (!this.props.content.do_not_autoblock) {\n this.props.onBlock({preventDismiss: true});\n }\n this.props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", value: \"subscribe-success\", id: \"NEWTAB_FOOTER_BAR_CONTENT\"});\n } else {\n console.error(\"There was a problem submitting the form\", json || \"[No JSON response]\"); // eslint-disable-line no-console\n this.setState({signupSuccess: false, signupSubmitted: true});\n this.props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", value: \"subscribe-error\", id: \"NEWTAB_FOOTER_BAR_CONTENT\"});\n }\n\n this.setState({disableForm: false});\n }\n\n expandSnippet() {\n this.setState({\n expanded: true,\n signupSuccess: false,\n signupSubmitted: false,\n });\n }\n\n renderHiddenFormInputs() {\n const {hidden_inputs} = this.props.content;\n\n if (!hidden_inputs) {\n return null;\n }\n\n return Object.keys(hidden_inputs).map((key, idx) => );\n }\n\n renderDisclaimer() {\n const {content} = this.props;\n if (!content.scene2_disclaimer_html) {\n return null;\n }\n return (\n \n );\n }\n\n renderFormPrivacyNotice() {\n const {content} = this.props;\n if (!content.scene2_privacy_html) {\n return null;\n }\n return (\n \n \n \n \n \n );\n }\n\n renderSignupSubmitted() {\n const {content} = this.props;\n const isSuccess = this.state.signupSuccess;\n const successTitle = isSuccess && content.success_title;\n const bodyText = isSuccess ? content.success_text : content.error_text;\n const retryButtonText = content.scene1_button_label;\n return (\n {successTitle ? {successTitle} : null}\n {bodyText}{isSuccess ? null : {retryButtonText}}\n );\n }\n\n onInputChange(event) {\n if (!this.props.validateInput) {\n return;\n }\n const hasError = this.props.validateInput(event.target.value, this.props.content);\n event.target.setCustomValidity(hasError);\n }\n\n renderInput() {\n const placholder = this.props.content.scene2_email_placeholder_text || this.props.content.scene2_input_placeholder;\n return ();\n }\n\n renderSignupView() {\n const {content} = this.props;\n const containerClass = `SubmitFormSnippet ${this.props.className}`;\n return (\n {content.scene2_icon ? : null}\n \n {content.scene2_text}\n \n \n {this.renderHiddenFormInputs()}\n \n {this.renderInput()}\n {content.scene2_button_label}\n \n {this.renderFormPrivacyNotice() || this.renderDisclaimer()}\n \n );\n }\n\n getFirstSceneContent() {\n return Object.keys(this.props.content).filter(key => key.includes(\"scene1\")).reduce((acc, key) => {\n acc[key.substr(7)] = this.props.content[key];\n return acc;\n }, {});\n }\n\n render() {\n const content = {...this.props.content, ...this.getFirstSceneContent()};\n\n if (this.state.signupSubmitted) {\n return this.renderSignupSubmitted();\n }\n if (this.state.expanded) {\n return this.renderSignupView();\n }\n return ;\n }\n}\n","import React from \"react\";\nimport {SubmitFormSnippet} from \"../SubmitFormSnippet/SubmitFormSnippet.jsx\";\n\nexport const FXASignupSnippet = props => {\n const userAgent = window.navigator.userAgent.match(/Firefox\\/([0-9]+)\\./);\n const firefox_version = userAgent ? parseInt(userAgent[1], 10) : 0;\n const extendedContent = {\n form_action: \"https://accounts.firefox.com/\",\n ...props.content,\n hidden_inputs: {\n action: \"email\",\n context: \"fx_desktop_v3\",\n entrypoint: \"snippets\",\n service: \"sync\",\n utm_source: \"snippet\",\n utm_content: firefox_version,\n utm_campaign: props.content.utm_campaign,\n utm_term: props.content.utm_term,\n ...props.content.hidden_inputs,\n },\n };\n\n return ();\n};\n","import React from \"react\";\nimport {SubmitFormSnippet} from \"../SubmitFormSnippet/SubmitFormSnippet.jsx\";\n\nexport const NewsletterSnippet = props => {\n const extendedContent = {\n form_action: \"https://basket.mozilla.org/subscribe.json\",\n ...props.content,\n hidden_inputs: {\n newsletters: props.content.scene2_newsletter || \"mozilla-foundation\",\n fmt: \"H\",\n lang: \"en-US\",\n source_url: `https://snippets.mozilla.com/show/${props.id}`,\n ...props.content.hidden_inputs,\n },\n };\n\n return ();\n};\n","/**\n * Checks if a given string is an email or phone number or neither\n * @param {string} val The user input\n * @param {ASRMessageContent} content .content property on ASR message\n * @returns {\"email\"|\"phone\"|\"\"} The type of the input\n */\nexport function isEmailOrPhoneNumber(val, content) {\n const {locale} = content;\n // http://emailregex.com/\n const email_re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n const check_email = email_re.test(val);\n let check_phone; // depends on locale\n switch (locale) {\n case \"en-US\":\n case \"en-CA\":\n // allow 10-11 digits in case user wants to enter country code\n check_phone = val.length >= 10 && val.length <= 11 && !isNaN(val);\n break;\n case \"de\":\n // allow between 2 and 12 digits for german phone numbers\n check_phone = val.length >= 2 && val.length <= 12 && !isNaN(val);\n break;\n // this case should never be hit, but good to have a fallback just in case\n default:\n check_phone = !isNaN(val);\n break;\n }\n if (check_email) {\n return \"email\";\n } else if (check_phone) {\n return \"phone\";\n }\n return \"\";\n}\n","import {isEmailOrPhoneNumber} from \"./isEmailOrPhoneNumber\";\nimport React from \"react\";\nimport {SubmitFormSnippet} from \"../SubmitFormSnippet/SubmitFormSnippet.jsx\";\n\nfunction validateInput(value, content) {\n const type = isEmailOrPhoneNumber(value, content);\n return type ? \"\" : \"Must be an email or a phone number.\";\n}\n\nfunction processFormData(input, message) {\n const {content} = message;\n const type = content.include_sms ? isEmailOrPhoneNumber(input.value, content) : \"email\";\n const formData = new FormData();\n let url;\n if (type === \"phone\") {\n url = \"https://basket.mozilla.org/news/subscribe_sms/\";\n formData.append(\"mobile_number\", input.value);\n formData.append(\"msg_name\", content.message_id_sms);\n formData.append(\"country\", content.country);\n } else if (type === \"email\") {\n url = \"https://basket.mozilla.org/news/subscribe/\";\n formData.append(\"email\", input.value);\n formData.append(\"newsletters\", content.message_id_email);\n formData.append(\"source_url\", encodeURIComponent(`https://snippets.mozilla.com/show/${message.id}`));\n }\n formData.append(\"lang\", content.locale);\n return {formData, url};\n}\n\nexport const SendToDeviceSnippet = props => (\n \n);\n","import {EOYSnippet} from \"./EOYSnippet/EOYSnippet\";\nimport {FXASignupSnippet} from \"./FXASignupSnippet/FXASignupSnippet\";\nimport {NewsletterSnippet} from \"./NewsletterSnippet/NewsletterSnippet\";\nimport {SendToDeviceSnippet} from \"./SendToDeviceSnippet/SendToDeviceSnippet\";\nimport {SimpleSnippet} from \"./SimpleSnippet/SimpleSnippet\";\n\n// Key names matching schema name of templates\nexport const SnippetsTemplates = {\n simple_snippet: SimpleSnippet,\n newsletter_snippet: NewsletterSnippet,\n fxa_signup_snippet: FXASignupSnippet,\n send_to_device_snippet: SendToDeviceSnippet,\n eoy_snippet: EOYSnippet,\n};\n","/* eslint no-magic-numbers: [0] */\n\nconst MAX_PLACEABLES = 100;\n\nconst entryIdentifierRe = /-?[a-zA-Z][a-zA-Z0-9_-]*/y;\nconst identifierRe = /[a-zA-Z][a-zA-Z0-9_-]*/y;\nconst functionIdentifierRe = /^[A-Z][A-Z_?-]*$/;\n\n/**\n * The `Parser` class is responsible for parsing FTL resources.\n *\n * It's only public method is `getResource(source)` which takes an FTL string\n * and returns a two element Array with an Object of entries generated from the\n * source as the first element and an array of SyntaxError objects as the\n * second.\n *\n * This parser is optimized for runtime performance.\n *\n * There is an equivalent of this parser in syntax/parser which is\n * generating full AST which is useful for FTL tools.\n */\nclass RuntimeParser {\n /**\n * Parse FTL code into entries formattable by the MessageContext.\n *\n * Given a string of FTL syntax, return a map of entries that can be passed\n * to MessageContext.format and a list of errors encountered during parsing.\n *\n * @param {String} string\n * @returns {Array}\n */\n getResource(string) {\n this._source = string;\n this._index = 0;\n this._length = string.length;\n this.entries = {};\n\n const errors = [];\n\n this.skipWS();\n while (this._index < this._length) {\n try {\n this.getEntry();\n } catch (e) {\n if (e instanceof SyntaxError) {\n errors.push(e);\n\n this.skipToNextEntryStart();\n } else {\n throw e;\n }\n }\n this.skipWS();\n }\n\n return [this.entries, errors];\n }\n\n /**\n * Parse the source string from the current index as an FTL entry\n * and add it to object's entries property.\n *\n * @private\n */\n getEntry() {\n // The index here should either be at the beginning of the file\n // or right after new line.\n if (this._index !== 0 &&\n this._source[this._index - 1] !== \"\\n\") {\n throw this.error(`Expected an entry to start\n at the beginning of the file or on a new line.`);\n }\n\n const ch = this._source[this._index];\n\n // We don't care about comments or sections at runtime\n if (ch === \"/\" ||\n (ch === \"#\" &&\n [\" \", \"#\", \"\\n\"].includes(this._source[this._index + 1]))) {\n this.skipComment();\n return;\n }\n\n if (ch === \"[\") {\n this.skipSection();\n return;\n }\n\n this.getMessage();\n }\n\n /**\n * Skip the section entry from the current index.\n *\n * @private\n */\n skipSection() {\n this._index += 1;\n if (this._source[this._index] !== \"[\") {\n throw this.error('Expected \"[[\" to open a section');\n }\n\n this._index += 1;\n\n this.skipInlineWS();\n this.getVariantName();\n this.skipInlineWS();\n\n if (this._source[this._index] !== \"]\" ||\n this._source[this._index + 1] !== \"]\") {\n throw this.error('Expected \"]]\" to close a section');\n }\n\n this._index += 2;\n }\n\n /**\n * Parse the source string from the current index as an FTL message\n * and add it to the entries property on the Parser.\n *\n * @private\n */\n getMessage() {\n const id = this.getEntryIdentifier();\n\n this.skipInlineWS();\n\n if (this._source[this._index] === \"=\") {\n this._index++;\n }\n\n this.skipInlineWS();\n\n const val = this.getPattern();\n\n if (id.startsWith(\"-\") && val === null) {\n throw this.error(\"Expected term to have a value\");\n }\n\n let attrs = null;\n\n if (this._source[this._index] === \" \") {\n const lineStart = this._index;\n this.skipInlineWS();\n\n if (this._source[this._index] === \".\") {\n this._index = lineStart;\n attrs = this.getAttributes();\n }\n }\n\n if (attrs === null && typeof val === \"string\") {\n this.entries[id] = val;\n } else {\n if (val === null && attrs === null) {\n throw this.error(\"Expected message to have a value or attributes\");\n }\n\n this.entries[id] = {};\n\n if (val !== null) {\n this.entries[id].val = val;\n }\n\n if (attrs !== null) {\n this.entries[id].attrs = attrs;\n }\n }\n }\n\n /**\n * Skip whitespace.\n *\n * @private\n */\n skipWS() {\n let ch = this._source[this._index];\n while (ch === \" \" || ch === \"\\n\" || ch === \"\\t\" || ch === \"\\r\") {\n ch = this._source[++this._index];\n }\n }\n\n /**\n * Skip inline whitespace (space and \\t).\n *\n * @private\n */\n skipInlineWS() {\n let ch = this._source[this._index];\n while (ch === \" \" || ch === \"\\t\") {\n ch = this._source[++this._index];\n }\n }\n\n /**\n * Skip blank lines.\n *\n * @private\n */\n skipBlankLines() {\n while (true) {\n const ptr = this._index;\n\n this.skipInlineWS();\n\n if (this._source[this._index] === \"\\n\") {\n this._index += 1;\n } else {\n this._index = ptr;\n break;\n }\n }\n }\n\n /**\n * Get identifier using the provided regex.\n *\n * By default this will get identifiers of public messages, attributes and\n * external arguments (without the $).\n *\n * @returns {String}\n * @private\n */\n getIdentifier(re = identifierRe) {\n re.lastIndex = this._index;\n const result = re.exec(this._source);\n\n if (result === null) {\n this._index += 1;\n throw this.error(`Expected an identifier [${re.toString()}]`);\n }\n\n this._index = re.lastIndex;\n return result[0];\n }\n\n /**\n * Get identifier of a Message or a Term (staring with a dash).\n *\n * @returns {String}\n * @private\n */\n getEntryIdentifier() {\n return this.getIdentifier(entryIdentifierRe);\n }\n\n /**\n * Get Variant name.\n *\n * @returns {Object}\n * @private\n */\n getVariantName() {\n let name = \"\";\n\n const start = this._index;\n let cc = this._source.charCodeAt(this._index);\n\n if ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n cc === 95 || cc === 32) { // _ \n cc = this._source.charCodeAt(++this._index);\n } else {\n throw this.error(\"Expected a keyword (starting with [a-zA-Z_])\");\n }\n\n while ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n (cc >= 48 && cc <= 57) || // 0-9\n cc === 95 || cc === 45 || cc === 32) { // _- \n cc = this._source.charCodeAt(++this._index);\n }\n\n // If we encountered the end of name, we want to test if the last\n // collected character is a space.\n // If it is, we will backtrack to the last non-space character because\n // the keyword cannot end with a space character.\n while (this._source.charCodeAt(this._index - 1) === 32) {\n this._index--;\n }\n\n name += this._source.slice(start, this._index);\n\n return { type: \"varname\", name };\n }\n\n /**\n * Get simple string argument enclosed in `\"`.\n *\n * @returns {String}\n * @private\n */\n getString() {\n const start = this._index + 1;\n\n while (++this._index < this._length) {\n const ch = this._source[this._index];\n\n if (ch === '\"') {\n break;\n }\n\n if (ch === \"\\n\") {\n throw this.error(\"Unterminated string expression\");\n }\n }\n\n return this._source.substring(start, this._index++);\n }\n\n /**\n * Parses a Message pattern.\n * Message Pattern may be a simple string or an array of strings\n * and placeable expressions.\n *\n * @returns {String|Array}\n * @private\n */\n getPattern() {\n // We're going to first try to see if the pattern is simple.\n // If it is we can just look for the end of the line and read the string.\n //\n // Then, if either the line contains a placeable opening `{` or the\n // next line starts an indentation, we switch to complex pattern.\n const start = this._index;\n let eol = this._source.indexOf(\"\\n\", this._index);\n\n if (eol === -1) {\n eol = this._length;\n }\n\n const firstLineContent = start !== eol ?\n this._source.slice(start, eol) : null;\n\n if (firstLineContent && firstLineContent.includes(\"{\")) {\n return this.getComplexPattern();\n }\n\n this._index = eol + 1;\n\n this.skipBlankLines();\n\n if (this._source[this._index] !== \" \") {\n // No indentation means we're done with this message. Callers should check\n // if the return value here is null. It may be OK for messages, but not OK\n // for terms, attributes and variants.\n return firstLineContent;\n }\n\n const lineStart = this._index;\n\n this.skipInlineWS();\n\n if (this._source[this._index] === \".\") {\n // The pattern is followed by an attribute. Rewind _index to the first\n // column of the current line as expected by getAttributes.\n this._index = lineStart;\n return firstLineContent;\n }\n\n if (firstLineContent) {\n // It's a multiline pattern which started on the same line as the\n // identifier. Reparse the whole pattern to make sure we get all of it.\n this._index = start;\n }\n\n return this.getComplexPattern();\n }\n\n /**\n * Parses a complex Message pattern.\n * This function is called by getPattern when the message is multiline,\n * or contains escape chars or placeables.\n * It does full parsing of complex patterns.\n *\n * @returns {Array}\n * @private\n */\n /* eslint-disable complexity */\n getComplexPattern() {\n let buffer = \"\";\n const content = [];\n let placeables = 0;\n\n let ch = this._source[this._index];\n\n while (this._index < this._length) {\n // This block handles multi-line strings combining strings separated\n // by new line.\n if (ch === \"\\n\") {\n this._index++;\n\n // We want to capture the start and end pointers\n // around blank lines and add them to the buffer\n // but only if the blank lines are in the middle\n // of the string.\n const blankLinesStart = this._index;\n this.skipBlankLines();\n const blankLinesEnd = this._index;\n\n\n if (this._source[this._index] !== \" \") {\n break;\n }\n this.skipInlineWS();\n\n if (this._source[this._index] === \"}\" ||\n this._source[this._index] === \"[\" ||\n this._source[this._index] === \"*\" ||\n this._source[this._index] === \".\") {\n this._index = blankLinesEnd;\n break;\n }\n\n buffer += this._source.substring(blankLinesStart, blankLinesEnd);\n\n if (buffer.length || content.length) {\n buffer += \"\\n\";\n }\n ch = this._source[this._index];\n continue;\n } else if (ch === \"\\\\\") {\n const ch2 = this._source[this._index + 1];\n if (ch2 === '\"' || ch2 === \"{\" || ch2 === \"\\\\\") {\n ch = ch2;\n this._index++;\n }\n } else if (ch === \"{\") {\n // Push the buffer to content array right before placeable\n if (buffer.length) {\n content.push(buffer);\n }\n if (placeables > MAX_PLACEABLES - 1) {\n throw this.error(\n `Too many placeables, maximum allowed is ${MAX_PLACEABLES}`);\n }\n buffer = \"\";\n content.push(this.getPlaceable());\n\n this._index++;\n\n ch = this._source[this._index];\n placeables++;\n continue;\n }\n\n if (ch) {\n buffer += ch;\n }\n this._index++;\n ch = this._source[this._index];\n }\n\n if (content.length === 0) {\n return buffer.length ? buffer : null;\n }\n\n if (buffer.length) {\n content.push(buffer);\n }\n\n return content;\n }\n /* eslint-enable complexity */\n\n /**\n * Parses a single placeable in a Message pattern and returns its\n * expression.\n *\n * @returns {Object}\n * @private\n */\n getPlaceable() {\n const start = ++this._index;\n\n this.skipWS();\n\n if (this._source[this._index] === \"*\" ||\n (this._source[this._index] === \"[\" &&\n this._source[this._index + 1] !== \"]\")) {\n const variants = this.getVariants();\n\n return {\n type: \"sel\",\n exp: null,\n vars: variants[0],\n def: variants[1]\n };\n }\n\n // Rewind the index and only support in-line white-space now.\n this._index = start;\n this.skipInlineWS();\n\n const selector = this.getSelectorExpression();\n\n this.skipWS();\n\n const ch = this._source[this._index];\n\n if (ch === \"}\") {\n if (selector.type === \"attr\" && selector.id.name.startsWith(\"-\")) {\n throw this.error(\n \"Attributes of private messages cannot be interpolated.\"\n );\n }\n\n return selector;\n }\n\n if (ch !== \"-\" || this._source[this._index + 1] !== \">\") {\n throw this.error('Expected \"}\" or \"->\"');\n }\n\n if (selector.type === \"ref\") {\n throw this.error(\"Message references cannot be used as selectors.\");\n }\n\n if (selector.type === \"var\") {\n throw this.error(\"Variants cannot be used as selectors.\");\n }\n\n if (selector.type === \"attr\" && !selector.id.name.startsWith(\"-\")) {\n throw this.error(\n \"Attributes of public messages cannot be used as selectors.\"\n );\n }\n\n\n this._index += 2; // ->\n\n this.skipInlineWS();\n\n if (this._source[this._index] !== \"\\n\") {\n throw this.error(\"Variants should be listed in a new line\");\n }\n\n this.skipWS();\n\n const variants = this.getVariants();\n\n if (variants[0].length === 0) {\n throw this.error(\"Expected members for the select expression\");\n }\n\n return {\n type: \"sel\",\n exp: selector,\n vars: variants[0],\n def: variants[1]\n };\n }\n\n /**\n * Parses a selector expression.\n *\n * @returns {Object}\n * @private\n */\n getSelectorExpression() {\n const literal = this.getLiteral();\n\n if (literal.type !== \"ref\") {\n return literal;\n }\n\n if (this._source[this._index] === \".\") {\n this._index++;\n\n const name = this.getIdentifier();\n this._index++;\n return {\n type: \"attr\",\n id: literal,\n name\n };\n }\n\n if (this._source[this._index] === \"[\") {\n this._index++;\n\n const key = this.getVariantKey();\n this._index++;\n return {\n type: \"var\",\n id: literal,\n key\n };\n }\n\n if (this._source[this._index] === \"(\") {\n this._index++;\n const args = this.getCallArgs();\n\n if (!functionIdentifierRe.test(literal.name)) {\n throw this.error(\"Function names must be all upper-case\");\n }\n\n this._index++;\n\n literal.type = \"fun\";\n\n return {\n type: \"call\",\n fun: literal,\n args\n };\n }\n\n return literal;\n }\n\n /**\n * Parses call arguments for a CallExpression.\n *\n * @returns {Array}\n * @private\n */\n getCallArgs() {\n const args = [];\n\n while (this._index < this._length) {\n this.skipInlineWS();\n\n if (this._source[this._index] === \")\") {\n return args;\n }\n\n const exp = this.getSelectorExpression();\n\n // MessageReference in this place may be an entity reference, like:\n // `call(foo)`, or, if it's followed by `:` it will be a key-value pair.\n if (exp.type !== \"ref\") {\n args.push(exp);\n } else {\n this.skipInlineWS();\n\n if (this._source[this._index] === \":\") {\n this._index++;\n this.skipInlineWS();\n\n const val = this.getSelectorExpression();\n\n // If the expression returned as a value of the argument\n // is not a quote delimited string or number, throw.\n //\n // We don't have to check here if the pattern is quote delimited\n // because that's the only type of string allowed in expressions.\n if (typeof val === \"string\" ||\n Array.isArray(val) ||\n val.type === \"num\") {\n args.push({\n type: \"narg\",\n name: exp.name,\n val\n });\n } else {\n this._index = this._source.lastIndexOf(\":\", this._index) + 1;\n throw this.error(\n \"Expected string in quotes, number.\");\n }\n\n } else {\n args.push(exp);\n }\n }\n\n this.skipInlineWS();\n\n if (this._source[this._index] === \")\") {\n break;\n } else if (this._source[this._index] === \",\") {\n this._index++;\n } else {\n throw this.error('Expected \",\" or \")\"');\n }\n }\n\n return args;\n }\n\n /**\n * Parses an FTL Number.\n *\n * @returns {Object}\n * @private\n */\n getNumber() {\n let num = \"\";\n let cc = this._source.charCodeAt(this._index);\n\n // The number literal may start with negative sign `-`.\n if (cc === 45) {\n num += \"-\";\n cc = this._source.charCodeAt(++this._index);\n }\n\n // next, we expect at least one digit\n if (cc < 48 || cc > 57) {\n throw this.error(`Unknown literal \"${num}\"`);\n }\n\n // followed by potentially more digits\n while (cc >= 48 && cc <= 57) {\n num += this._source[this._index++];\n cc = this._source.charCodeAt(this._index);\n }\n\n // followed by an optional decimal separator `.`\n if (cc === 46) {\n num += this._source[this._index++];\n cc = this._source.charCodeAt(this._index);\n\n // followed by at least one digit\n if (cc < 48 || cc > 57) {\n throw this.error(`Unknown literal \"${num}\"`);\n }\n\n // and optionally more digits\n while (cc >= 48 && cc <= 57) {\n num += this._source[this._index++];\n cc = this._source.charCodeAt(this._index);\n }\n }\n\n return {\n type: \"num\",\n val: num\n };\n }\n\n /**\n * Parses a list of Message attributes.\n *\n * @returns {Object}\n * @private\n */\n getAttributes() {\n const attrs = {};\n\n while (this._index < this._length) {\n if (this._source[this._index] !== \" \") {\n break;\n }\n this.skipInlineWS();\n\n if (this._source[this._index] !== \".\") {\n break;\n }\n this._index++;\n\n const key = this.getIdentifier();\n\n this.skipInlineWS();\n\n if (this._source[this._index] !== \"=\") {\n throw this.error('Expected \"=\"');\n }\n this._index++;\n\n this.skipInlineWS();\n\n const val = this.getPattern();\n\n if (val === null) {\n throw this.error(\"Expected attribute to have a value\");\n }\n\n if (typeof val === \"string\") {\n attrs[key] = val;\n } else {\n attrs[key] = {\n val\n };\n }\n\n this.skipBlankLines();\n }\n\n return attrs;\n }\n\n /**\n * Parses a list of Selector variants.\n *\n * @returns {Array}\n * @private\n */\n getVariants() {\n const variants = [];\n let index = 0;\n let defaultIndex;\n\n while (this._index < this._length) {\n const ch = this._source[this._index];\n\n if ((ch !== \"[\" || this._source[this._index + 1] === \"[\") &&\n ch !== \"*\") {\n break;\n }\n if (ch === \"*\") {\n this._index++;\n defaultIndex = index;\n }\n\n if (this._source[this._index] !== \"[\") {\n throw this.error('Expected \"[\"');\n }\n\n this._index++;\n\n const key = this.getVariantKey();\n\n this.skipInlineWS();\n\n const val = this.getPattern();\n\n if (val === null) {\n throw this.error(\"Expected variant to have a value\");\n }\n\n variants[index++] = {key, val};\n\n this.skipWS();\n }\n\n return [variants, defaultIndex];\n }\n\n /**\n * Parses a Variant key.\n *\n * @returns {String}\n * @private\n */\n getVariantKey() {\n // VariantKey may be a Keyword or Number\n\n const cc = this._source.charCodeAt(this._index);\n let literal;\n\n if ((cc >= 48 && cc <= 57) || cc === 45) {\n literal = this.getNumber();\n } else {\n literal = this.getVariantName();\n }\n\n if (this._source[this._index] !== \"]\") {\n throw this.error('Expected \"]\"');\n }\n\n this._index++;\n return literal;\n }\n\n /**\n * Parses an FTL literal.\n *\n * @returns {Object}\n * @private\n */\n getLiteral() {\n const cc0 = this._source.charCodeAt(this._index);\n\n if (cc0 === 36) { // $\n this._index++;\n return {\n type: \"ext\",\n name: this.getIdentifier()\n };\n }\n\n const cc1 = cc0 === 45 // -\n // Peek at the next character after the dash.\n ? this._source.charCodeAt(this._index + 1)\n // Or keep using the character at the current index.\n : cc0;\n\n if ((cc1 >= 97 && cc1 <= 122) || // a-z\n (cc1 >= 65 && cc1 <= 90)) { // A-Z\n return {\n type: \"ref\",\n name: this.getEntryIdentifier()\n };\n }\n\n if ((cc1 >= 48 && cc1 <= 57)) { // 0-9\n return this.getNumber();\n }\n\n if (cc0 === 34) { // \"\n return this.getString();\n }\n\n throw this.error(\"Expected literal\");\n }\n\n /**\n * Skips an FTL comment.\n *\n * @private\n */\n skipComment() {\n // At runtime, we don't care about comments so we just have\n // to parse them properly and skip their content.\n let eol = this._source.indexOf(\"\\n\", this._index);\n\n while (eol !== -1 &&\n ((this._source[eol + 1] === \"/\" && this._source[eol + 2] === \"/\") ||\n (this._source[eol + 1] === \"#\" &&\n [\" \", \"#\"].includes(this._source[eol + 2])))) {\n this._index = eol + 3;\n\n eol = this._source.indexOf(\"\\n\", this._index);\n\n if (eol === -1) {\n break;\n }\n }\n\n if (eol === -1) {\n this._index = this._length;\n } else {\n this._index = eol + 1;\n }\n }\n\n /**\n * Creates a new SyntaxError object with a given message.\n *\n * @param {String} message\n * @returns {Object}\n * @private\n */\n error(message) {\n return new SyntaxError(message);\n }\n\n /**\n * Skips to the beginning of a next entry after the current position.\n * This is used to mark the boundary of junk entry in case of error,\n * and recover from the returned position.\n *\n * @private\n */\n skipToNextEntryStart() {\n let start = this._index;\n\n while (true) {\n if (start === 0 || this._source[start - 1] === \"\\n\") {\n const cc = this._source.charCodeAt(start);\n\n if ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n cc === 47 || cc === 91) { // /[\n this._index = start;\n return;\n }\n }\n\n start = this._source.indexOf(\"\\n\", start);\n\n if (start === -1) {\n this._index = this._length;\n return;\n }\n start++;\n }\n }\n}\n\n/**\n * Parses an FTL string using RuntimeParser and returns the generated\n * object with entries and a list of errors.\n *\n * @param {String} string\n * @returns {Array}\n */\nexport default function parse(string) {\n const parser = new RuntimeParser();\n return parser.getResource(string);\n}\n","/* global Intl */\n\n/**\n * The `FluentType` class is the base of Fluent's type system.\n *\n * Fluent types wrap JavaScript values and store additional configuration for\n * them, which can then be used in the `toString` method together with a proper\n * `Intl` formatter.\n */\nexport class FluentType {\n\n /**\n * Create an `FluentType` instance.\n *\n * @param {Any} value - JavaScript value to wrap.\n * @param {Object} opts - Configuration.\n * @returns {FluentType}\n */\n constructor(value, opts) {\n this.value = value;\n this.opts = opts;\n }\n\n /**\n * Unwrap the raw value stored by this `FluentType`.\n *\n * @returns {Any}\n */\n valueOf() {\n return this.value;\n }\n\n /**\n * Format this instance of `FluentType` to a string.\n *\n * Formatted values are suitable for use outside of the `MessageContext`.\n * This method can use `Intl` formatters memoized by the `MessageContext`\n * instance passed as an argument.\n *\n * @param {MessageContext} [ctx]\n * @returns {string}\n */\n toString() {\n throw new Error(\"Subclasses of FluentType must implement toString.\");\n }\n}\n\nexport class FluentNone extends FluentType {\n toString() {\n return this.value || \"???\";\n }\n}\n\nexport class FluentNumber extends FluentType {\n constructor(value, opts) {\n super(parseFloat(value), opts);\n }\n\n toString(ctx) {\n try {\n const nf = ctx._memoizeIntlObject(\n Intl.NumberFormat, this.opts\n );\n return nf.format(this.value);\n } catch (e) {\n // XXX Report the error.\n return this.value;\n }\n }\n\n /**\n * Compare the object with another instance of a FluentType.\n *\n * @param {MessageContext} ctx\n * @param {FluentType} other\n * @returns {bool}\n */\n match(ctx, other) {\n if (other instanceof FluentNumber) {\n return this.value === other.value;\n }\n return false;\n }\n}\n\nexport class FluentDateTime extends FluentType {\n constructor(value, opts) {\n super(new Date(value), opts);\n }\n\n toString(ctx) {\n try {\n const dtf = ctx._memoizeIntlObject(\n Intl.DateTimeFormat, this.opts\n );\n return dtf.format(this.value);\n } catch (e) {\n // XXX Report the error.\n return this.value;\n }\n }\n}\n\nexport class FluentSymbol extends FluentType {\n toString() {\n return this.value;\n }\n\n /**\n * Compare the object with another instance of a FluentType.\n *\n * @param {MessageContext} ctx\n * @param {FluentType} other\n * @returns {bool}\n */\n match(ctx, other) {\n if (other instanceof FluentSymbol) {\n return this.value === other.value;\n } else if (typeof other === \"string\") {\n return this.value === other;\n } else if (other instanceof FluentNumber) {\n const pr = ctx._memoizeIntlObject(\n Intl.PluralRules, other.opts\n );\n return this.value === pr.select(other.value);\n }\n return false;\n }\n}\n","/**\n * @overview\n *\n * The FTL resolver ships with a number of functions built-in.\n *\n * Each function take two arguments:\n * - args - an array of positional args\n * - opts - an object of key-value args\n *\n * Arguments to functions are guaranteed to already be instances of\n * `FluentType`. Functions must return `FluentType` objects as well.\n */\n\nimport { FluentNumber, FluentDateTime } from \"./types\";\n\nexport default {\n \"NUMBER\": ([arg], opts) =>\n new FluentNumber(arg.valueOf(), merge(arg.opts, opts)),\n \"DATETIME\": ([arg], opts) =>\n new FluentDateTime(arg.valueOf(), merge(arg.opts, opts)),\n};\n\nfunction merge(argopts, opts) {\n return Object.assign({}, argopts, values(opts));\n}\n\nfunction values(opts) {\n const unwrapped = {};\n for (const [name, opt] of Object.entries(opts)) {\n unwrapped[name] = opt.valueOf();\n }\n return unwrapped;\n}\n","/**\n * @overview\n *\n * The role of the Fluent resolver is to format a translation object to an\n * instance of `FluentType` or an array of instances.\n *\n * Translations can contain references to other messages or external arguments,\n * conditional logic in form of select expressions, traits which describe their\n * grammatical features, and can use Fluent builtins which make use of the\n * `Intl` formatters to format numbers, dates, lists and more into the\n * context's language. See the documentation of the Fluent syntax for more\n * information.\n *\n * In case of errors the resolver will try to salvage as much of the\n * translation as possible. In rare situations where the resolver didn't know\n * how to recover from an error it will return an instance of `FluentNone`.\n *\n * `MessageReference`, `VariantExpression`, `AttributeExpression` and\n * `SelectExpression` resolve to raw Runtime Entries objects and the result of\n * the resolution needs to be passed into `Type` to get their real value.\n * This is useful for composing expressions. Consider:\n *\n * brand-name[nominative]\n *\n * which is a `VariantExpression` with properties `id: MessageReference` and\n * `key: Keyword`. If `MessageReference` was resolved eagerly, it would\n * instantly resolve to the value of the `brand-name` message. Instead, we\n * want to get the message object and look for its `nominative` variant.\n *\n * All other expressions (except for `FunctionReference` which is only used in\n * `CallExpression`) resolve to an instance of `FluentType`. The caller should\n * use the `toString` method to convert the instance to a native value.\n *\n *\n * All functions in this file pass around a special object called `env`.\n * This object stores a set of elements used by all resolve functions:\n *\n * * {MessageContext} ctx\n * context for which the given resolution is happening\n * * {Object} args\n * list of developer provided arguments that can be used\n * * {Array} errors\n * list of errors collected while resolving\n * * {WeakSet} dirty\n * Set of patterns already encountered during this resolution.\n * This is used to prevent cyclic resolutions.\n */\n\n\nimport { FluentType, FluentNone, FluentNumber, FluentDateTime, FluentSymbol }\n from \"./types\";\nimport builtins from \"./builtins\";\n\n// Prevent expansion of too long placeables.\nconst MAX_PLACEABLE_LENGTH = 2500;\n\n// Unicode bidi isolation characters.\nconst FSI = \"\\u2068\";\nconst PDI = \"\\u2069\";\n\n\n/**\n * Helper for choosing the default value from a set of members.\n *\n * Used in SelectExpressions and Type.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} members\n * Hash map of variants from which the default value is to be selected.\n * @param {Number} def\n * The index of the default variant.\n * @returns {FluentType}\n * @private\n */\nfunction DefaultMember(env, members, def) {\n if (members[def]) {\n return members[def];\n }\n\n const { errors } = env;\n errors.push(new RangeError(\"No default\"));\n return new FluentNone();\n}\n\n\n/**\n * Resolve a reference to another message.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} id\n * The identifier of the message to be resolved.\n * @param {String} id.name\n * The name of the identifier.\n * @returns {FluentType}\n * @private\n */\nfunction MessageReference(env, {name}) {\n const { ctx, errors } = env;\n const message = name.startsWith(\"-\")\n ? ctx._terms.get(name)\n : ctx._messages.get(name);\n\n if (!message) {\n const err = name.startsWith(\"-\")\n ? new ReferenceError(`Unknown term: ${name}`)\n : new ReferenceError(`Unknown message: ${name}`);\n errors.push(err);\n return new FluentNone(name);\n }\n\n return message;\n}\n\n/**\n * Resolve a variant expression to the variant object.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {Object} expr.id\n * An Identifier of a message for which the variant is resolved.\n * @param {Object} expr.id.name\n * Name a message for which the variant is resolved.\n * @param {Object} expr.key\n * Variant key to be resolved.\n * @returns {FluentType}\n * @private\n */\nfunction VariantExpression(env, {id, key}) {\n const message = MessageReference(env, id);\n if (message instanceof FluentNone) {\n return message;\n }\n\n const { ctx, errors } = env;\n const keyword = Type(env, key);\n\n function isVariantList(node) {\n return Array.isArray(node) &&\n node[0].type === \"sel\" &&\n node[0].exp === null;\n }\n\n if (isVariantList(message.val)) {\n // Match the specified key against keys of each variant, in order.\n for (const variant of message.val[0].vars) {\n const variantKey = Type(env, variant.key);\n if (keyword.match(ctx, variantKey)) {\n return variant;\n }\n }\n }\n\n errors.push(new ReferenceError(`Unknown variant: ${keyword.toString(ctx)}`));\n return Type(env, message);\n}\n\n\n/**\n * Resolve an attribute expression to the attribute object.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {String} expr.id\n * An ID of a message for which the attribute is resolved.\n * @param {String} expr.name\n * Name of the attribute to be resolved.\n * @returns {FluentType}\n * @private\n */\nfunction AttributeExpression(env, {id, name}) {\n const message = MessageReference(env, id);\n if (message instanceof FluentNone) {\n return message;\n }\n\n if (message.attrs) {\n // Match the specified name against keys of each attribute.\n for (const attrName in message.attrs) {\n if (name === attrName) {\n return message.attrs[name];\n }\n }\n }\n\n const { errors } = env;\n errors.push(new ReferenceError(`Unknown attribute: ${name}`));\n return Type(env, message);\n}\n\n/**\n * Resolve a select expression to the member object.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {String} expr.exp\n * Selector expression\n * @param {Array} expr.vars\n * List of variants for the select expression.\n * @param {Number} expr.def\n * Index of the default variant.\n * @returns {FluentType}\n * @private\n */\nfunction SelectExpression(env, {exp, vars, def}) {\n if (exp === null) {\n return DefaultMember(env, vars, def);\n }\n\n const selector = Type(env, exp);\n if (selector instanceof FluentNone) {\n return DefaultMember(env, vars, def);\n }\n\n // Match the selector against keys of each variant, in order.\n for (const variant of vars) {\n const key = Type(env, variant.key);\n const keyCanMatch =\n key instanceof FluentNumber || key instanceof FluentSymbol;\n\n if (!keyCanMatch) {\n continue;\n }\n\n const { ctx } = env;\n\n if (key.match(ctx, selector)) {\n return variant;\n }\n }\n\n return DefaultMember(env, vars, def);\n}\n\n\n/**\n * Resolve expression to a Fluent type.\n *\n * JavaScript strings are a special case. Since they natively have the\n * `toString` method they can be used as if they were a Fluent type without\n * paying the cost of creating a instance of one.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression object to be resolved into a Fluent type.\n * @returns {FluentType}\n * @private\n */\nfunction Type(env, expr) {\n // A fast-path for strings which are the most common case, and for\n // `FluentNone` which doesn't require any additional logic.\n if (typeof expr === \"string\" || expr instanceof FluentNone) {\n return expr;\n }\n\n // The Runtime AST (Entries) encodes patterns (complex strings with\n // placeables) as Arrays.\n if (Array.isArray(expr)) {\n return Pattern(env, expr);\n }\n\n\n switch (expr.type) {\n case \"varname\":\n return new FluentSymbol(expr.name);\n case \"num\":\n return new FluentNumber(expr.val);\n case \"ext\":\n return ExternalArgument(env, expr);\n case \"fun\":\n return FunctionReference(env, expr);\n case \"call\":\n return CallExpression(env, expr);\n case \"ref\": {\n const message = MessageReference(env, expr);\n return Type(env, message);\n }\n case \"attr\": {\n const attr = AttributeExpression(env, expr);\n return Type(env, attr);\n }\n case \"var\": {\n const variant = VariantExpression(env, expr);\n return Type(env, variant);\n }\n case \"sel\": {\n const member = SelectExpression(env, expr);\n return Type(env, member);\n }\n case undefined: {\n // If it's a node with a value, resolve the value.\n if (expr.val !== null && expr.val !== undefined) {\n return Type(env, expr.val);\n }\n\n const { errors } = env;\n errors.push(new RangeError(\"No value\"));\n return new FluentNone();\n }\n default:\n return new FluentNone();\n }\n}\n\n/**\n * Resolve a reference to an external argument.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {String} expr.name\n * Name of an argument to be returned.\n * @returns {FluentType}\n * @private\n */\nfunction ExternalArgument(env, {name}) {\n const { args, errors } = env;\n\n if (!args || !args.hasOwnProperty(name)) {\n errors.push(new ReferenceError(`Unknown external: ${name}`));\n return new FluentNone(name);\n }\n\n const arg = args[name];\n\n // Return early if the argument already is an instance of FluentType.\n if (arg instanceof FluentType) {\n return arg;\n }\n\n // Convert the argument to a Fluent type.\n switch (typeof arg) {\n case \"string\":\n return arg;\n case \"number\":\n return new FluentNumber(arg);\n case \"object\":\n if (arg instanceof Date) {\n return new FluentDateTime(arg);\n }\n default:\n errors.push(\n new TypeError(`Unsupported external type: ${name}, ${typeof arg}`)\n );\n return new FluentNone(name);\n }\n}\n\n/**\n * Resolve a reference to a function.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {String} expr.name\n * Name of the function to be returned.\n * @returns {Function}\n * @private\n */\nfunction FunctionReference(env, {name}) {\n // Some functions are built-in. Others may be provided by the runtime via\n // the `MessageContext` constructor.\n const { ctx: { _functions }, errors } = env;\n const func = _functions[name] || builtins[name];\n\n if (!func) {\n errors.push(new ReferenceError(`Unknown function: ${name}()`));\n return new FluentNone(`${name}()`);\n }\n\n if (typeof func !== \"function\") {\n errors.push(new TypeError(`Function ${name}() is not callable`));\n return new FluentNone(`${name}()`);\n }\n\n return func;\n}\n\n/**\n * Resolve a call to a Function with positional and key-value arguments.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {Object} expr.fun\n * FTL Function object.\n * @param {Array} expr.args\n * FTL Function argument list.\n * @returns {FluentType}\n * @private\n */\nfunction CallExpression(env, {fun, args}) {\n const callee = FunctionReference(env, fun);\n\n if (callee instanceof FluentNone) {\n return callee;\n }\n\n const posargs = [];\n const keyargs = {};\n\n for (const arg of args) {\n if (arg.type === \"narg\") {\n keyargs[arg.name] = Type(env, arg.val);\n } else {\n posargs.push(Type(env, arg));\n }\n }\n\n try {\n return callee(posargs, keyargs);\n } catch (e) {\n // XXX Report errors.\n return new FluentNone();\n }\n}\n\n/**\n * Resolve a pattern (a complex string with placeables).\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Array} ptn\n * Array of pattern elements.\n * @returns {Array}\n * @private\n */\nfunction Pattern(env, ptn) {\n const { ctx, dirty, errors } = env;\n\n if (dirty.has(ptn)) {\n errors.push(new RangeError(\"Cyclic reference\"));\n return new FluentNone();\n }\n\n // Tag the pattern as dirty for the purpose of the current resolution.\n dirty.add(ptn);\n const result = [];\n\n // Wrap interpolations with Directional Isolate Formatting characters\n // only when the pattern has more than one element.\n const useIsolating = ctx._useIsolating && ptn.length > 1;\n\n for (const elem of ptn) {\n if (typeof elem === \"string\") {\n result.push(elem);\n continue;\n }\n\n const part = Type(env, elem).toString(ctx);\n\n if (useIsolating) {\n result.push(FSI);\n }\n\n if (part.length > MAX_PLACEABLE_LENGTH) {\n errors.push(\n new RangeError(\n \"Too many characters in placeable \" +\n `(${part.length}, max allowed is ${MAX_PLACEABLE_LENGTH})`\n )\n );\n result.push(part.slice(MAX_PLACEABLE_LENGTH));\n } else {\n result.push(part);\n }\n\n if (useIsolating) {\n result.push(PDI);\n }\n }\n\n dirty.delete(ptn);\n return result.join(\"\");\n}\n\n/**\n * Format a translation into a string.\n *\n * @param {MessageContext} ctx\n * A MessageContext instance which will be used to resolve the\n * contextual information of the message.\n * @param {Object} args\n * List of arguments provided by the developer which can be accessed\n * from the message.\n * @param {Object} message\n * An object with the Message to be resolved.\n * @param {Array} errors\n * An error array that any encountered errors will be appended to.\n * @returns {FluentType}\n */\nexport default function resolve(ctx, args, message, errors = []) {\n const env = {\n ctx, args, errors, dirty: new WeakSet()\n };\n return Type(env, message).toString(ctx);\n}\n","import resolve from \"./resolver\";\nimport parse from \"./parser\";\n\n/**\n * Message contexts are single-language stores of translations. They are\n * responsible for parsing translation resources in the Fluent syntax and can\n * format translation units (entities) to strings.\n *\n * Always use `MessageContext.format` to retrieve translation units from\n * a context. Translations can contain references to other entities or\n * external arguments, conditional logic in form of select expressions, traits\n * which describe their grammatical features, and can use Fluent builtins which\n * make use of the `Intl` formatters to format numbers, dates, lists and more\n * into the context's language. See the documentation of the Fluent syntax for\n * more information.\n */\nexport class MessageContext {\n\n /**\n * Create an instance of `MessageContext`.\n *\n * The `locales` argument is used to instantiate `Intl` formatters used by\n * translations. The `options` object can be used to configure the context.\n *\n * Examples:\n *\n * const ctx = new MessageContext(locales);\n *\n * const ctx = new MessageContext(locales, { useIsolating: false });\n *\n * const ctx = new MessageContext(locales, {\n * useIsolating: true,\n * functions: {\n * NODE_ENV: () => process.env.NODE_ENV\n * }\n * });\n *\n * Available options:\n *\n * - `functions` - an object of additional functions available to\n * translations as builtins.\n *\n * - `useIsolating` - boolean specifying whether to use Unicode isolation\n * marks (FSI, PDI) for bidi interpolations.\n *\n * @param {string|Array} locales - Locale or locales of the context\n * @param {Object} [options]\n * @returns {MessageContext}\n */\n constructor(locales, { functions = {}, useIsolating = true } = {}) {\n this.locales = Array.isArray(locales) ? locales : [locales];\n\n this._terms = new Map();\n this._messages = new Map();\n this._functions = functions;\n this._useIsolating = useIsolating;\n this._intls = new WeakMap();\n }\n\n /*\n * Return an iterator over public `[id, message]` pairs.\n *\n * @returns {Iterator}\n */\n get messages() {\n return this._messages[Symbol.iterator]();\n }\n\n /*\n * Check if a message is present in the context.\n *\n * @param {string} id - The identifier of the message to check.\n * @returns {bool}\n */\n hasMessage(id) {\n return this._messages.has(id);\n }\n\n /*\n * Return the internal representation of a message.\n *\n * The internal representation should only be used as an argument to\n * `MessageContext.format`.\n *\n * @param {string} id - The identifier of the message to check.\n * @returns {Any}\n */\n getMessage(id) {\n return this._messages.get(id);\n }\n\n /**\n * Add a translation resource to the context.\n *\n * The translation resource must use the Fluent syntax. It will be parsed by\n * the context and each translation unit (message) will be available in the\n * context by its identifier.\n *\n * ctx.addMessages('foo = Foo');\n * ctx.getMessage('foo');\n *\n * // Returns a raw representation of the 'foo' message.\n *\n * Parsed entities should be formatted with the `format` method in case they\n * contain logic (references, select expressions etc.).\n *\n * @param {string} source - Text resource with translations.\n * @returns {Array}\n */\n addMessages(source) {\n const [entries, errors] = parse(source);\n for (const id in entries) {\n if (id.startsWith(\"-\")) {\n // Identifiers starting with a dash (-) define terms. Terms are private\n // and cannot be retrieved from MessageContext.\n if (this._terms.has(id)) {\n errors.push(`Attempt to override an existing term: \"${id}\"`);\n continue;\n }\n this._terms.set(id, entries[id]);\n } else {\n if (this._messages.has(id)) {\n errors.push(`Attempt to override an existing message: \"${id}\"`);\n continue;\n }\n this._messages.set(id, entries[id]);\n }\n }\n\n return errors;\n }\n\n /**\n * Format a message to a string or null.\n *\n * Format a raw `message` from the context into a string (or a null if it has\n * a null value). `args` will be used to resolve references to external\n * arguments inside of the translation.\n *\n * In case of errors `format` will try to salvage as much of the translation\n * as possible and will still return a string. For performance reasons, the\n * encountered errors are not returned but instead are appended to the\n * `errors` array passed as the third argument.\n *\n * const errors = [];\n * ctx.addMessages('hello = Hello, { $name }!');\n * const hello = ctx.getMessage('hello');\n * ctx.format(hello, { name: 'Jane' }, errors);\n *\n * // Returns 'Hello, Jane!' and `errors` is empty.\n *\n * ctx.format(hello, undefined, errors);\n *\n * // Returns 'Hello, name!' and `errors` is now:\n *\n * []\n *\n * @param {Object | string} message\n * @param {Object | undefined} args\n * @param {Array} errors\n * @returns {?string}\n */\n format(message, args, errors) {\n // optimize entities which are simple strings with no attributes\n if (typeof message === \"string\") {\n return message;\n }\n\n // optimize simple-string entities with attributes\n if (typeof message.val === \"string\") {\n return message.val;\n }\n\n // optimize entities with null values\n if (message.val === undefined) {\n return null;\n }\n\n return resolve(this, args, message, errors);\n }\n\n _memoizeIntlObject(ctor, opts) {\n const cache = this._intls.get(ctor) || {};\n const id = JSON.stringify(opts);\n\n if (!cache[id]) {\n cache[id] = new ctor(this.locales, opts);\n this._intls.set(ctor, cache);\n }\n\n return cache[id];\n }\n}\n","/*\n * CachedIterable caches the elements yielded by an iterable.\n *\n * It can be used to iterate over an iterable many times without depleting the\n * iterable.\n */\nexport default class CachedIterable {\n /**\n * Create an `CachedIterable` instance.\n *\n * @param {Iterable} iterable\n * @returns {CachedIterable}\n */\n constructor(iterable) {\n if (Symbol.asyncIterator in Object(iterable)) {\n this.iterator = iterable[Symbol.asyncIterator]();\n } else if (Symbol.iterator in Object(iterable)) {\n this.iterator = iterable[Symbol.iterator]();\n } else {\n throw new TypeError(\"Argument must implement the iteration protocol.\");\n }\n\n this.seen = [];\n }\n\n [Symbol.iterator]() {\n const { seen, iterator } = this;\n let cur = 0;\n\n return {\n next() {\n if (seen.length <= cur) {\n seen.push(iterator.next());\n }\n return seen[cur++];\n }\n };\n }\n\n [Symbol.asyncIterator]() {\n const { seen, iterator } = this;\n let cur = 0;\n\n return {\n async next() {\n if (seen.length <= cur) {\n seen.push(await iterator.next());\n }\n return seen[cur++];\n }\n };\n }\n\n /**\n * This method allows user to consume the next element from the iterator\n * into the cache.\n */\n touchNext() {\n const { seen, iterator } = this;\n if (seen.length === 0 || seen[seen.length - 1].done === false) {\n seen.push(iterator.next());\n }\n }\n}\n","/*\n * @overview\n *\n * Functions for managing ordered sequences of MessageContexts.\n *\n * An ordered iterable of MessageContext instances can represent the current\n * negotiated fallback chain of languages. This iterable can be used to find\n * the best existing translation for a given identifier.\n *\n * The mapContext* methods can be used to find the first MessageContext in the\n * given iterable which contains the translation with the given identifier. If\n * the iterable is ordered according to the result of a language negotiation\n * the returned MessageContext contains the best available translation.\n *\n * A simple function which formats translations based on the identifier might\n * be implemented as follows:\n *\n * formatString(id, args) {\n * const ctx = mapContextSync(contexts, id);\n *\n * if (ctx === null) {\n * return id;\n * }\n *\n * const msg = ctx.getMessage(id);\n * return ctx.format(msg, args);\n * }\n *\n * In order to pass an iterator to mapContext*, wrap it in CachedIterable.\n * This allows multiple calls to mapContext* without advancing and eventually\n * depleting the iterator.\n *\n * function *generateMessages() {\n * // Some lazy logic for yielding MessageContexts.\n * yield *[ctx1, ctx2];\n * }\n *\n * const contexts = new CachedIterable(generateMessages());\n * const ctx = mapContextSync(contexts, id);\n *\n */\n\n/*\n * Synchronously map an identifier or an array of identifiers to the best\n * `MessageContext` instance(s).\n *\n * @param {Iterable} iterable\n * @param {string|Array} ids\n * @returns {MessageContext|Array}\n */\nexport function mapContextSync(iterable, ids) {\n if (!Array.isArray(ids)) {\n return getContextForId(iterable, ids);\n }\n\n return ids.map(\n id => getContextForId(iterable, id)\n );\n}\n\n/*\n * Find the best `MessageContext` with the translation for `id`.\n */\nfunction getContextForId(iterable, id) {\n for (const context of iterable) {\n if (context.hasMessage(id)) {\n return context;\n }\n }\n\n return null;\n}\n\n/*\n * Asynchronously map an identifier or an array of identifiers to the best\n * `MessageContext` instance(s).\n *\n * @param {AsyncIterable} iterable\n * @param {string|Array} ids\n * @returns {Promise>}\n */\nexport async function mapContextAsync(iterable, ids) {\n if (!Array.isArray(ids)) {\n for await (const context of iterable) {\n if (context.hasMessage(ids)) {\n return context;\n }\n }\n }\n\n let remainingCount = ids.length;\n const foundContexts = new Array(remainingCount).fill(null);\n\n for await (const context of iterable) {\n // XXX Switch to const [index, id] of id.entries() when we move to Babel 7.\n // See https://github.com/babel/babel/issues/5880.\n for (let index = 0; index < ids.length; index++) {\n const id = ids[index];\n if (!foundContexts[index] && context.hasMessage(id)) {\n foundContexts[index] = context;\n remainingCount--;\n }\n\n // Return early when all ids have been mapped to contexts.\n if (remainingCount === 0) {\n return foundContexts;\n }\n }\n }\n\n return foundContexts;\n}\n","function nonBlank(line) {\n return !/^\\s*$/.test(line);\n}\n\nfunction countIndent(line) {\n const [indent] = line.match(/^\\s*/);\n return indent.length;\n}\n\n/**\n * Template literal tag for dedenting FTL code.\n *\n * Strip the common indent of non-blank lines. Remove blank lines.\n *\n * @param {Array} strings\n */\nexport function ftl(strings) {\n const [code] = strings;\n const lines = code.split(\"\\n\").filter(nonBlank);\n const indents = lines.map(countIndent);\n const common = Math.min(...indents);\n const indent = new RegExp(`^\\\\s{${common}}`);\n\n return lines.map(\n line => line.replace(indent, \"\")\n ).join(\"\\n\");\n}\n","/*\n * @module fluent\n * @overview\n *\n * `fluent` is a JavaScript implementation of Project Fluent, a localization\n * framework designed to unleash the expressive power of the natural language.\n *\n */\n\nexport { default as _parse } from \"./parser\";\n\nexport { MessageContext } from \"./context\";\nexport {\n FluentType as MessageArgument,\n FluentNumber as MessageNumberArgument,\n FluentDateTime as MessageDateTimeArgument,\n} from \"./types\";\n\nexport { default as CachedIterable } from \"./cached_iterable\";\nexport { mapContextSync, mapContextAsync } from \"./fallback\";\n\nexport { ftl } from \"./util\";\n","import { CachedIterable, mapContextSync } from \"fluent\";\n\n/*\n * `ReactLocalization` handles translation formatting and fallback.\n *\n * The current negotiated fallback chain of languages is stored in the\n * `ReactLocalization` instance in form of an iterable of `MessageContext`\n * instances. This iterable is used to find the best existing translation for\n * a given identifier.\n *\n * `Localized` components must subscribe to the changes of the\n * `ReactLocalization`'s fallback chain. When the fallback chain changes (the\n * `messages` iterable is set anew), all subscribed compontent must relocalize.\n *\n * The `ReactLocalization` class instances are exposed to `Localized` elements\n * via the `LocalizationProvider` component.\n */\nexport default class ReactLocalization {\n constructor(messages) {\n this.contexts = new CachedIterable(messages);\n this.subs = new Set();\n }\n\n /*\n * Subscribe a `Localized` component to changes of `messages`.\n */\n subscribe(comp) {\n this.subs.add(comp);\n }\n\n /*\n * Unsubscribe a `Localized` component from `messages` changes.\n */\n unsubscribe(comp) {\n this.subs.delete(comp);\n }\n\n /*\n * Set a new `messages` iterable and trigger the retranslation.\n */\n setMessages(messages) {\n this.contexts = new CachedIterable(messages);\n\n // Update all subscribed Localized components.\n this.subs.forEach(comp => comp.relocalize());\n }\n\n getMessageContext(id) {\n return mapContextSync(this.contexts, id);\n }\n\n formatCompound(mcx, msg, args) {\n const value = mcx.format(msg, args);\n\n if (msg.attrs) {\n var attrs = {};\n for (const name of Object.keys(msg.attrs)) {\n attrs[name] = mcx.format(msg.attrs[name], args);\n }\n }\n\n return { value, attrs };\n }\n\n /*\n * Find a translation by `id` and format it to a string using `args`.\n */\n getString(id, args, fallback) {\n const mcx = this.getMessageContext(id);\n\n if (mcx === null) {\n return fallback || id;\n }\n\n const msg = mcx.getMessage(id);\n return mcx.format(msg, args);\n }\n}\n\nexport function isReactLocalization(props, propName) {\n const prop = props[propName];\n\n if (prop instanceof ReactLocalization) {\n return null;\n }\n\n return new Error(\n `The ${propName} context field must be an instance of ReactLocalization.`\n );\n}\n","import { Component, Children } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport ReactLocalization, { isReactLocalization} from \"./localization\";\n\n/*\n * The Provider component for the `ReactLocalization` class.\n *\n * Exposes a `ReactLocalization` instance to all descendants via React's\n * context feature. It makes translations available to all localizable\n * elements in the descendant's render tree without the need to pass them\n * explicitly.\n *\n * \n * …\n * \n *\n * The `LocalizationProvider` component takes one prop: `messages`. It should\n * be an iterable of `MessageContext` instances in order of the user's\n * preferred languages. The `MessageContext` instances will be used by\n * `ReactLocalization` to format translations. If a translation is missing in\n * one instance, `ReactLocalization` will fall back to the next one.\n */\nexport default class LocalizationProvider extends Component {\n constructor(props) {\n super(props);\n const { messages } = props;\n\n if (messages === undefined) {\n throw new Error(\"LocalizationProvider must receive the messages prop.\");\n }\n\n if (!messages[Symbol.iterator]) {\n throw new Error(\"The messages prop must be an iterable.\");\n }\n\n this.l10n = new ReactLocalization(messages);\n }\n\n getChildContext() {\n return {\n l10n: this.l10n\n };\n }\n\n componentWillReceiveProps(next) {\n const { messages } = next;\n\n if (messages !== this.props.messages) {\n this.l10n.setMessages(messages);\n }\n }\n\n render() {\n return Children.only(this.props.children);\n }\n}\n\nLocalizationProvider.childContextTypes = {\n l10n: isReactLocalization\n};\n\nLocalizationProvider.propTypes = {\n children: PropTypes.element.isRequired,\n messages: isIterable\n};\n\nfunction isIterable(props, propName, componentName) {\n const prop = props[propName];\n\n if (Symbol.iterator in Object(prop)) {\n return null;\n }\n\n return new Error(\n `The ${propName} prop supplied to ${componentName} must be an iterable.`\n );\n}\n","import { createElement, Component } from \"react\";\n\nimport { isReactLocalization } from \"./localization\";\n\nexport default function withLocalization(Inner) {\n class WithLocalization extends Component {\n componentDidMount() {\n const { l10n } = this.context;\n\n if (l10n) {\n l10n.subscribe(this);\n }\n }\n\n componentWillUnmount() {\n const { l10n } = this.context;\n\n if (l10n) {\n l10n.unsubscribe(this);\n }\n }\n\n /*\n * Rerender this component in a new language.\n */\n relocalize() {\n // When the `ReactLocalization`'s fallback chain changes, update the\n // component.\n this.forceUpdate();\n }\n\n /*\n * Find a translation by `id` and format it to a string using `args`.\n */\n getString(id, args, fallback) {\n const { l10n } = this.context;\n\n if (!l10n) {\n return fallback || id;\n }\n\n return l10n.getString(id, args, fallback);\n }\n\n render() {\n return createElement(\n Inner,\n Object.assign(\n // getString needs to be re-bound on updates to trigger a re-render\n { getString: (...args) => this.getString(...args) },\n this.props\n )\n );\n }\n }\n\n WithLocalization.displayName = `WithLocalization(${displayName(Inner)})`;\n\n WithLocalization.contextTypes = {\n l10n: isReactLocalization\n };\n\n return WithLocalization;\n}\n\nfunction displayName(component) {\n return component.displayName || component.name || \"Component\";\n}\n","/* eslint-env browser */\n\nconst TEMPLATE = document.createElement(\"template\");\n\nexport function parseMarkup(str) {\n TEMPLATE.innerHTML = str;\n return TEMPLATE.content;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in this directory.\n */\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true,\n // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\nexport default omittedCloseTags;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in this directory.\n */\n\nimport omittedCloseTags from './omittedCloseTags';\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = {\n menuitem: true,\n ...omittedCloseTags,\n};\n\nexport default voidElementTags;\n","import { isValidElement, cloneElement, Component, Children } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isReactLocalization } from \"./localization\";\nimport { parseMarkup } from \"./markup\";\nimport VOID_ELEMENTS from \"../vendor/voidElementTags\";\n\n// Match the opening angle bracket (<) in HTML tags, and HTML entities like\n// &, &, &.\nconst reMarkup = /<|?\\w+;/;\n\n/*\n * Prepare props passed to `Localized` for formatting.\n */\nfunction toArguments(props) {\n const args = {};\n const elems = {};\n\n for (const [propname, propval] of Object.entries(props)) {\n if (propname.startsWith(\"$\")) {\n const name = propname.substr(1);\n args[name] = propval;\n } else if (isValidElement(propval)) {\n // We'll try to match localNames of elements found in the translation with\n // names of elements passed as props. localNames are always lowercase.\n const name = propname.toLowerCase();\n elems[name] = propval;\n }\n }\n\n return [args, elems];\n}\n\n/*\n * The `Localized` class renders its child with translated props and children.\n *\n * \n * {'Hello, world!'}\n * \n *\n * The `id` prop should be the unique identifier of the translation. Any\n * attributes found in the translation will be applied to the wrapped element.\n *\n * Arguments to the translation can be passed as `$`-prefixed props on\n * `Localized`.\n *\n * \n * {'Hello, { $username }!'}\n * \n *\n * It's recommended that the contents of the wrapped component be a string\n * expression. The string will be used as the ultimate fallback if no\n * translation is available. It also makes it easy to grep for strings in the\n * source code.\n */\nexport default class Localized extends Component {\n componentDidMount() {\n const { l10n } = this.context;\n\n if (l10n) {\n l10n.subscribe(this);\n }\n }\n\n componentWillUnmount() {\n const { l10n } = this.context;\n\n if (l10n) {\n l10n.unsubscribe(this);\n }\n }\n\n /*\n * Rerender this component in a new language.\n */\n relocalize() {\n // When the `ReactLocalization`'s fallback chain changes, update the\n // component.\n this.forceUpdate();\n }\n\n render() {\n const { l10n } = this.context;\n const { id, attrs, children } = this.props;\n const elem = Children.only(children);\n\n if (!l10n) {\n // Use the wrapped component as fallback.\n return elem;\n }\n\n const mcx = l10n.getMessageContext(id);\n\n if (mcx === null) {\n // Use the wrapped component as fallback.\n return elem;\n }\n\n const msg = mcx.getMessage(id);\n const [args, elems] = toArguments(this.props);\n const {\n value: messageValue,\n attrs: messageAttrs\n } = l10n.formatCompound(mcx, msg, args);\n\n // The default is to forbid all message attributes. If the attrs prop exists\n // on the Localized instance, only set message attributes which have been\n // explicitly allowed by the developer.\n if (attrs && messageAttrs) {\n var localizedProps = {};\n\n for (const [name, value] of Object.entries(messageAttrs)) {\n if (attrs[name]) {\n localizedProps[name] = value;\n }\n }\n }\n\n // If the wrapped component is a known void element, explicitly dismiss the\n // message value and do not pass it to cloneElement in order to avoid the\n // \"void element tags must neither have `children` nor use\n // `dangerouslySetInnerHTML`\" error.\n if (elem.type in VOID_ELEMENTS) {\n return cloneElement(elem, localizedProps);\n }\n\n // If the message has a null value, we're only interested in its attributes.\n // Do not pass the null value to cloneElement as it would nuke all children\n // of the wrapped component.\n if (messageValue === null) {\n return cloneElement(elem, localizedProps);\n }\n\n // If the message value doesn't contain any markup nor any HTML entities,\n // insert it as the only child of the wrapped component.\n if (!reMarkup.test(messageValue)) {\n return cloneElement(elem, localizedProps, messageValue);\n }\n\n // If the message contains markup, parse it and try to match the children\n // found in the translation with the props passed to this Localized.\n const translationNodes = Array.from(parseMarkup(messageValue).childNodes);\n const translatedChildren = translationNodes.map(childNode => {\n if (childNode.nodeType === childNode.TEXT_NODE) {\n return childNode.textContent;\n }\n\n // If the child is not expected just take its textContent.\n if (!elems.hasOwnProperty(childNode.localName)) {\n return childNode.textContent;\n }\n\n const sourceChild = elems[childNode.localName];\n\n // If the element passed as a prop to is a known void element,\n // explicitly dismiss any textContent which might have accidentally been\n // defined in the translation to prevent the \"void element tags must not\n // have children\" error.\n if (sourceChild.type in VOID_ELEMENTS) {\n return sourceChild;\n }\n\n // TODO Protect contents of elements wrapped in \n // https://github.com/projectfluent/fluent.js/issues/184\n // TODO Control localizable attributes on elements passed as props\n // https://github.com/projectfluent/fluent.js/issues/185\n return cloneElement(sourceChild, null, childNode.textContent);\n });\n\n return cloneElement(elem, localizedProps, ...translatedChildren);\n }\n}\n\nLocalized.contextTypes = {\n l10n: isReactLocalization\n};\n\nLocalized.propTypes = {\n children: PropTypes.element.isRequired,\n};\n","/*\n * @module fluent-react\n * @overview\n *\n\n * `fluent-react` provides React bindings for Fluent. It takes advantage of\n * React's Components system and the virtual DOM. Translations are exposed to\n * components via the provider pattern.\n *\n * \n * \n * {'Hello, world!'}\n * \n * \n *\n * Consult the documentation of the `LocalizationProvider` and the `Localized`\n * components for more information.\n */\n\nexport { default as LocalizationProvider } from \"./provider\";\nexport { default as withLocalization } from \"./with_localization\";\nexport { default as Localized } from \"./localized\";\nexport { default as ReactLocalization, isReactLocalization }\n from \"./localization\";\n","this.Dedupe = class Dedupe {\n constructor(createKey) {\n this.createKey = createKey || this.defaultCreateKey;\n }\n\n defaultCreateKey(item) {\n return item;\n }\n\n /**\n * Dedupe any number of grouped elements favoring those from earlier groups.\n *\n * @param {Array} groups Contains an arbitrary number of arrays of elements.\n * @returns {Array} A matching array of each provided group deduped.\n */\n group(...groups) {\n const globalKeys = new Set();\n const result = [];\n for (const values of groups) {\n const valueMap = new Map();\n for (const value of values) {\n const key = this.createKey(value);\n if (!globalKeys.has(key) && !valueMap.has(key)) {\n valueMap.set(key, value);\n }\n }\n result.push(valueMap);\n valueMap.forEach((value, key) => globalKeys.add(key));\n }\n return result.map(m => Array.from(m.values()));\n }\n};\n\nconst EXPORTED_SYMBOLS = [\"Dedupe\"];\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nconst {actionTypes: at} = ChromeUtils.import(\"resource://activity-stream/common/Actions.jsm\", {});\nconst {Dedupe} = ChromeUtils.import(\"resource://activity-stream/common/Dedupe.jsm\", {});\n\nconst TOP_SITES_DEFAULT_ROWS = 1;\nconst TOP_SITES_MAX_SITES_PER_ROW = 8;\n\nconst dedupe = new Dedupe(site => site && site.url);\n\nconst INITIAL_STATE = {\n App: {\n // Have we received real data from the app yet?\n initialized: false,\n },\n ASRouter: {\n initialized: false,\n allowLegacySnippets: null,\n },\n Snippets: {initialized: false},\n TopSites: {\n // Have we received real data from history yet?\n initialized: false,\n // The history (and possibly default) links\n rows: [],\n // Used in content only to dispatch action to TopSiteForm.\n editForm: null,\n // Used in content only to open the SearchShortcutsForm modal.\n showSearchShortcutsForm: false,\n // The list of available search shortcuts.\n searchShortcuts: [],\n },\n Prefs: {\n initialized: false,\n values: {},\n },\n Dialog: {\n visible: false,\n data: {},\n },\n Sections: [],\n Pocket: {\n isUserLoggedIn: null,\n pocketCta: {},\n waitingForSpoc: true,\n },\n};\n\nfunction App(prevState = INITIAL_STATE.App, action) {\n switch (action.type) {\n case at.INIT:\n return Object.assign({}, prevState, action.data || {}, {initialized: true});\n default:\n return prevState;\n }\n}\n\nfunction ASRouter(prevState = INITIAL_STATE.ASRouter, action) {\n switch (action.type) {\n case at.AS_ROUTER_INITIALIZED:\n return {...action.data, initialized: true};\n case at.AS_ROUTER_PREF_CHANGED:\n return {...prevState, ...action.data};\n default:\n return prevState;\n }\n}\n\n/**\n * insertPinned - Inserts pinned links in their specified slots\n *\n * @param {array} a list of links\n * @param {array} a list of pinned links\n * @return {array} resulting list of links with pinned links inserted\n */\nfunction insertPinned(links, pinned) {\n // Remove any pinned links\n const pinnedUrls = pinned.map(link => link && link.url);\n let newLinks = links.filter(link => (link ? !pinnedUrls.includes(link.url) : false));\n newLinks = newLinks.map(link => {\n if (link && link.isPinned) {\n delete link.isPinned;\n delete link.pinIndex;\n }\n return link;\n });\n\n // Then insert them in their specified location\n pinned.forEach((val, index) => {\n if (!val) { return; }\n let link = Object.assign({}, val, {isPinned: true, pinIndex: index});\n if (index > newLinks.length) {\n newLinks[index] = link;\n } else {\n newLinks.splice(index, 0, link);\n }\n });\n\n return newLinks;\n}\n\nfunction TopSites(prevState = INITIAL_STATE.TopSites, action) {\n let hasMatch;\n let newRows;\n switch (action.type) {\n case at.TOP_SITES_UPDATED:\n if (!action.data || !action.data.links) {\n return prevState;\n }\n return Object.assign({}, prevState, {initialized: true, rows: action.data.links}, action.data.pref ? {pref: action.data.pref} : {});\n case at.TOP_SITES_PREFS_UPDATED:\n return Object.assign({}, prevState, {pref: action.data.pref});\n case at.TOP_SITES_EDIT:\n return Object.assign({}, prevState, {\n editForm: {\n index: action.data.index,\n previewResponse: null,\n },\n });\n case at.TOP_SITES_CANCEL_EDIT:\n return Object.assign({}, prevState, {editForm: null});\n case at.TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL:\n return Object.assign({}, prevState, {showSearchShortcutsForm: true});\n case at.TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL:\n return Object.assign({}, prevState, {showSearchShortcutsForm: false});\n case at.PREVIEW_RESPONSE:\n if (!prevState.editForm || action.data.url !== prevState.editForm.previewUrl) {\n return prevState;\n }\n return Object.assign({}, prevState, {\n editForm: {\n index: prevState.editForm.index,\n previewResponse: action.data.preview,\n previewUrl: action.data.url,\n },\n });\n case at.PREVIEW_REQUEST:\n if (!prevState.editForm) {\n return prevState;\n }\n return Object.assign({}, prevState, {\n editForm: {\n index: prevState.editForm.index,\n previewResponse: null,\n previewUrl: action.data.url,\n },\n });\n case at.PREVIEW_REQUEST_CANCEL:\n if (!prevState.editForm) {\n return prevState;\n }\n return Object.assign({}, prevState, {\n editForm: {\n index: prevState.editForm.index,\n previewResponse: null,\n },\n });\n case at.SCREENSHOT_UPDATED:\n newRows = prevState.rows.map(row => {\n if (row && row.url === action.data.url) {\n hasMatch = true;\n return Object.assign({}, row, {screenshot: action.data.screenshot});\n }\n return row;\n });\n return hasMatch ? Object.assign({}, prevState, {rows: newRows}) : prevState;\n case at.PLACES_BOOKMARK_ADDED:\n if (!action.data) {\n return prevState;\n }\n newRows = prevState.rows.map(site => {\n if (site && site.url === action.data.url) {\n const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n return Object.assign({}, site, {bookmarkGuid, bookmarkTitle, bookmarkDateCreated: dateAdded});\n }\n return site;\n });\n return Object.assign({}, prevState, {rows: newRows});\n case at.PLACES_BOOKMARK_REMOVED:\n if (!action.data) {\n return prevState;\n }\n newRows = prevState.rows.map(site => {\n if (site && site.url === action.data.url) {\n const newSite = Object.assign({}, site);\n delete newSite.bookmarkGuid;\n delete newSite.bookmarkTitle;\n delete newSite.bookmarkDateCreated;\n return newSite;\n }\n return site;\n });\n return Object.assign({}, prevState, {rows: newRows});\n case at.PLACES_LINK_DELETED:\n if (!action.data) {\n return prevState;\n }\n newRows = prevState.rows.filter(site => action.data.url !== site.url);\n return Object.assign({}, prevState, {rows: newRows});\n case at.UPDATE_SEARCH_SHORTCUTS:\n return {...prevState, searchShortcuts: action.data.searchShortcuts};\n case at.SNIPPETS_PREVIEW_MODE:\n return {...prevState, rows: []};\n default:\n return prevState;\n }\n}\n\nfunction Dialog(prevState = INITIAL_STATE.Dialog, action) {\n switch (action.type) {\n case at.DIALOG_OPEN:\n return Object.assign({}, prevState, {visible: true, data: action.data});\n case at.DIALOG_CANCEL:\n return Object.assign({}, prevState, {visible: false});\n case at.DELETE_HISTORY_URL:\n return Object.assign({}, INITIAL_STATE.Dialog);\n default:\n return prevState;\n }\n}\n\nfunction Prefs(prevState = INITIAL_STATE.Prefs, action) {\n let newValues;\n switch (action.type) {\n case at.PREFS_INITIAL_VALUES:\n return Object.assign({}, prevState, {initialized: true, values: action.data});\n case at.PREF_CHANGED:\n newValues = Object.assign({}, prevState.values);\n newValues[action.data.name] = action.data.value;\n return Object.assign({}, prevState, {values: newValues});\n default:\n return prevState;\n }\n}\n\nfunction Sections(prevState = INITIAL_STATE.Sections, action) {\n let hasMatch;\n let newState;\n switch (action.type) {\n case at.SECTION_DEREGISTER:\n return prevState.filter(section => section.id !== action.data);\n case at.SECTION_REGISTER:\n // If section exists in prevState, update it\n newState = prevState.map(section => {\n if (section && section.id === action.data.id) {\n hasMatch = true;\n return Object.assign({}, section, action.data);\n }\n return section;\n });\n // Otherwise, append it\n if (!hasMatch) {\n const initialized = !!(action.data.rows && action.data.rows.length > 0);\n const section = Object.assign({title: \"\", rows: [], enabled: false}, action.data, {initialized});\n newState.push(section);\n }\n return newState;\n case at.SECTION_UPDATE:\n newState = prevState.map(section => {\n if (section && section.id === action.data.id) {\n // If the action is updating rows, we should consider initialized to be true.\n // This can be overridden if initialized is defined in the action.data\n const initialized = action.data.rows ? {initialized: true} : {};\n\n // Make sure pinned cards stay at their current position when rows are updated.\n // Disabling a section (SECTION_UPDATE with empty rows) does not retain pinned cards.\n if (action.data.rows && action.data.rows.length > 0 && section.rows.find(card => card.pinned)) {\n const rows = Array.from(action.data.rows);\n section.rows.forEach((card, index) => {\n if (card.pinned) {\n // Only add it if it's not already there.\n if (rows[index].guid !== card.guid) {\n rows.splice(index, 0, card);\n }\n }\n });\n return Object.assign({}, section, initialized, Object.assign({}, action.data, {rows}));\n }\n\n return Object.assign({}, section, initialized, action.data);\n }\n return section;\n });\n\n if (!action.data.dedupeConfigurations) {\n return newState;\n }\n\n action.data.dedupeConfigurations.forEach(dedupeConf => {\n newState = newState.map(section => {\n if (section.id === dedupeConf.id) {\n const dedupedRows = dedupeConf.dedupeFrom.reduce((rows, dedupeSectionId) => {\n const dedupeSection = newState.find(s => s.id === dedupeSectionId);\n const [, newRows] = dedupe.group(dedupeSection.rows, rows);\n return newRows;\n }, section.rows);\n\n return Object.assign({}, section, {rows: dedupedRows});\n }\n\n return section;\n });\n });\n\n return newState;\n case at.SECTION_UPDATE_CARD:\n return prevState.map(section => {\n if (section && section.id === action.data.id && section.rows) {\n const newRows = section.rows.map(card => {\n if (card.url === action.data.url) {\n return Object.assign({}, card, action.data.options);\n }\n return card;\n });\n return Object.assign({}, section, {rows: newRows});\n }\n return section;\n });\n case at.PLACES_BOOKMARK_ADDED:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section => Object.assign({}, section, {\n rows: section.rows.map(item => {\n // find the item within the rows that is attempted to be bookmarked\n if (item.url === action.data.url) {\n const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n return Object.assign({}, item, {\n bookmarkGuid,\n bookmarkTitle,\n bookmarkDateCreated: dateAdded,\n type: \"bookmark\",\n });\n }\n return item;\n }),\n }));\n case at.PLACES_SAVED_TO_POCKET:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section => Object.assign({}, section, {\n rows: section.rows.map(item => {\n if (item.url === action.data.url) {\n return Object.assign({}, item, {\n open_url: action.data.open_url,\n pocket_id: action.data.pocket_id,\n title: action.data.title,\n type: \"pocket\",\n });\n }\n return item;\n }),\n }));\n case at.PLACES_BOOKMARK_REMOVED:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section => Object.assign({}, section, {\n rows: section.rows.map(item => {\n // find the bookmark within the rows that is attempted to be removed\n if (item.url === action.data.url) {\n const newSite = Object.assign({}, item);\n delete newSite.bookmarkGuid;\n delete newSite.bookmarkTitle;\n delete newSite.bookmarkDateCreated;\n if (!newSite.type || newSite.type === \"bookmark\") {\n newSite.type = \"history\";\n }\n return newSite;\n }\n return item;\n }),\n }));\n case at.PLACES_LINK_DELETED:\n case at.PLACES_LINK_BLOCKED:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section =>\n Object.assign({}, section, {rows: section.rows.filter(site => site.url !== action.data.url)}));\n case at.DELETE_FROM_POCKET:\n case at.ARCHIVE_FROM_POCKET:\n return prevState.map(section =>\n Object.assign({}, section, {rows: section.rows.filter(site => site.pocket_id !== action.data.pocket_id)}));\n case at.SNIPPETS_PREVIEW_MODE:\n return prevState.map(section => ({...section, rows: []}));\n default:\n return prevState;\n }\n}\n\nfunction Snippets(prevState = INITIAL_STATE.Snippets, action) {\n switch (action.type) {\n case at.SNIPPETS_DATA:\n return Object.assign({}, prevState, {initialized: true}, action.data);\n case at.SNIPPET_BLOCKED:\n return Object.assign({}, prevState, {blockList: prevState.blockList.concat(action.data)});\n case at.SNIPPETS_BLOCKLIST_CLEARED:\n return Object.assign({}, prevState, {blockList: []});\n case at.SNIPPETS_RESET:\n return INITIAL_STATE.Snippets;\n default:\n return prevState;\n }\n}\n\nfunction Pocket(prevState = INITIAL_STATE.Pocket, action) {\n switch (action.type) {\n case at.POCKET_WAITING_FOR_SPOC:\n return {...prevState, waitingForSpoc: action.data};\n case at.POCKET_LOGGED_IN:\n return {...prevState, isUserLoggedIn: !!action.data};\n case at.POCKET_CTA:\n return {\n ...prevState,\n pocketCta: {\n ctaButton: action.data.cta_button,\n ctaText: action.data.cta_text,\n ctaUrl: action.data.cta_url,\n useCta: action.data.use_cta,\n },\n };\n default:\n return prevState;\n }\n}\n\nthis.INITIAL_STATE = INITIAL_STATE;\nthis.TOP_SITES_DEFAULT_ROWS = TOP_SITES_DEFAULT_ROWS;\nthis.TOP_SITES_MAX_SITES_PER_ROW = TOP_SITES_MAX_SITES_PER_ROW;\n\nthis.reducers = {TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket};\n\nconst EXPORTED_SYMBOLS = [\"reducers\", \"INITIAL_STATE\", \"insertPinned\", \"TOP_SITES_DEFAULT_ROWS\", \"TOP_SITES_MAX_SITES_PER_ROW\"];\n","import React from \"react\";\n\nexport class ModalOverlay extends React.PureComponent {\n componentWillMount() {\n this.setState({active: true});\n document.body.classList.add(\"modal-open\");\n }\n\n componentWillUnmount() {\n document.body.classList.remove(\"modal-open\");\n this.setState({active: false});\n }\n\n render() {\n const {active} = this.state;\n const {title, button_label} = this.props;\n return (\n \n \n \n {title} \n {this.props.children}\n \n {button_label} \n \n \n \n );\n }\n}\n","import {ModalOverlay} from \"../../components/ModalOverlay/ModalOverlay\";\nimport React from \"react\";\n\nclass OnboardingCard extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n }\n\n onClick() {\n const {props} = this;\n const ping = {\n event: \"CLICK_BUTTON\",\n message_id: props.id,\n id: props.UISurface,\n };\n props.sendUserActionTelemetry(ping);\n props.onAction(props.content.button_action);\n }\n\n render() {\n const {content} = this.props;\n return (\n \n \n \n \n {content.title} \n {content.text} \n \n \n {content.button_label} \n \n \n \n );\n }\n}\n\nexport class OnboardingMessage extends React.PureComponent {\n render() {\n const {props} = this;\n const {button_label, header} = props.extraTemplateStrings;\n return (\n \n \n {props.bundle.map(message => (\n \n ))}\n \n \n );\n }\n}\n","export const cardContextTypes = {\n history: {\n intlID: \"type_label_visited\",\n icon: \"history-item\",\n },\n bookmark: {\n intlID: \"type_label_bookmarked\",\n icon: \"bookmark-added\",\n },\n trending: {\n intlID: \"type_label_recommended\",\n icon: \"trending\",\n },\n now: {\n intlID: \"type_label_now\",\n icon: \"now\",\n },\n pocket: {\n intlID: \"type_label_pocket\",\n icon: \"pocket\",\n },\n download: {\n intlID: \"type_label_downloaded\",\n icon: \"download\",\n },\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {cardContextTypes} from \"./types\";\nimport {connect} from \"react-redux\";\nimport {GetPlatformString} from \"content-src/lib/link-menu-options\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {ScreenshotUtils} from \"content-src/lib/screenshot-utils\";\n\n// Keep track of pending image loads to only request once\nconst gImageLoading = new Map();\n\n/**\n * Card component.\n * Cards are found within a Section component and contain information about a link such\n * as preview image, page title, page description, and some context about if the page\n * was visited, bookmarked, trending etc...\n * Each Section can make an unordered list of Cards which will create one instane of\n * this class. Each card will then get a context menu which reflects the actions that\n * can be done on this Card.\n */\nexport class _Card extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n activeCard: null,\n imageLoaded: false,\n showContextMenu: false,\n cardImage: null,\n };\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n this.onLinkClick = this.onLinkClick.bind(this);\n }\n\n /**\n * Helper to conditionally load an image and update state when it loads.\n */\n async maybeLoadImage() {\n // No need to load if it's already loaded or no image\n const {cardImage} = this.state;\n if (!cardImage) {\n return;\n }\n\n const imageUrl = cardImage.url;\n if (!this.state.imageLoaded) {\n // Initialize a promise to share a load across multiple card updates\n if (!gImageLoading.has(imageUrl)) {\n const loaderPromise = new Promise((resolve, reject) => {\n const loader = new Image();\n loader.addEventListener(\"load\", resolve);\n loader.addEventListener(\"error\", reject);\n loader.src = imageUrl;\n });\n\n // Save and remove the promise only while it's pending\n gImageLoading.set(imageUrl, loaderPromise);\n loaderPromise.catch(ex => ex).then(() => gImageLoading.delete(imageUrl)).catch();\n }\n\n // Wait for the image whether just started loading or reused promise\n await gImageLoading.get(imageUrl);\n\n // Only update state if we're still waiting to load the original image\n if (ScreenshotUtils.isRemoteImageLocal(this.state.cardImage, this.props.link.image) &&\n !this.state.imageLoaded) {\n this.setState({imageLoaded: true});\n }\n }\n }\n\n /**\n * Helper to obtain the next state based on nextProps and prevState.\n *\n * NOTE: Rename this method to getDerivedStateFromProps when we update React\n * to >= 16.3. We will need to update tests as well. We cannot rename this\n * method to getDerivedStateFromProps now because there is a mismatch in\n * the React version that we are using for both testing and production.\n * (i.e. react-test-render => \"16.3.2\", react => \"16.2.0\").\n *\n * See https://github.com/airbnb/enzyme/blob/master/packages/enzyme-adapter-react-16/package.json#L43.\n */\n static getNextStateFromProps(nextProps, prevState) {\n const {image} = nextProps.link;\n const imageInState = ScreenshotUtils.isRemoteImageLocal(prevState.cardImage, image);\n let nextState = null;\n\n // Image is updating.\n if (!imageInState && nextProps.link) {\n nextState = {imageLoaded: false};\n }\n\n if (imageInState) {\n return nextState;\n }\n\n // Since image was updated, attempt to revoke old image blob URL, if it exists.\n ScreenshotUtils.maybeRevokeBlobObjectURL(prevState.cardImage);\n\n nextState = nextState || {};\n nextState.cardImage = ScreenshotUtils.createLocalImageObject(image);\n\n return nextState;\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.setState({\n activeCard: this.props.index,\n showContextMenu: true,\n });\n }\n\n /**\n * Report to telemetry additional information about the item.\n */\n _getTelemetryInfo() {\n // Filter out \"history\" type for being the default\n if (this.props.link.type !== \"history\") {\n return {value: {card_type: this.props.link.type}};\n }\n\n return null;\n }\n\n onLinkClick(event) {\n event.preventDefault();\n if (this.props.link.type === \"download\") {\n this.props.dispatch(ac.OnlyToMain({\n type: at.SHOW_DOWNLOAD_FILE,\n data: this.props.link,\n }));\n } else {\n const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n this.props.dispatch(ac.OnlyToMain({\n type: at.OPEN_LINK,\n data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}}),\n }));\n }\n if (this.props.isWebExtension) {\n this.props.dispatch(ac.WebExtEvent(at.WEBEXT_CLICK, {\n source: this.props.eventSource,\n url: this.props.link.url,\n action_position: this.props.index,\n }));\n } else {\n this.props.dispatch(ac.UserEvent(Object.assign({\n event: \"CLICK\",\n source: this.props.eventSource,\n action_position: this.props.index,\n }, this._getTelemetryInfo())));\n\n if (this.props.shouldSendImpressionStats) {\n this.props.dispatch(ac.ImpressionStats({\n source: this.props.eventSource,\n click: 0,\n tiles: [{id: this.props.link.guid, pos: this.props.index}],\n }));\n }\n }\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n componentDidMount() {\n this.maybeLoadImage();\n }\n\n componentDidUpdate() {\n this.maybeLoadImage();\n }\n\n // NOTE: Remove this function when we update React to >= 16.3 since React will\n // call getDerivedStateFromProps automatically. We will also need to\n // rename getNextStateFromProps to getDerivedStateFromProps.\n componentWillMount() {\n const nextState = _Card.getNextStateFromProps(this.props, this.state);\n if (nextState) {\n this.setState(nextState);\n }\n }\n\n // NOTE: Remove this function when we update React to >= 16.3 since React will\n // call getDerivedStateFromProps automatically. We will also need to\n // rename getNextStateFromProps to getDerivedStateFromProps.\n componentWillReceiveProps(nextProps) {\n const nextState = _Card.getNextStateFromProps(nextProps, this.state);\n if (nextState) {\n this.setState(nextState);\n }\n }\n\n componentWillUnmount() {\n ScreenshotUtils.maybeRevokeBlobObjectURL(this.state.cardImage);\n }\n\n render() {\n const {index, className, link, dispatch, contextMenuOptions, eventSource, shouldSendImpressionStats} = this.props;\n const {props} = this;\n const isContextMenuOpen = this.state.showContextMenu && this.state.activeCard === index;\n // Display \"now\" as \"trending\" until we have new strings #3402\n const {icon, intlID} = cardContextTypes[link.type === \"now\" ? \"trending\" : link.type] || {};\n const hasImage = this.state.cardImage || link.hasImage;\n const imageStyle = {backgroundImage: this.state.cardImage ? `url(${this.state.cardImage.url})` : \"none\"};\n const outerClassName = [\n \"card-outer\",\n className,\n isContextMenuOpen && \"active\",\n props.placeholder && \"placeholder\",\n ].filter(v => v).join(\" \");\n\n return (\n \n \n \n {hasImage &&\n \n }\n \n \n {link.type === \"download\" && }\n {link.hostname &&\n \n {link.hostname.slice(0, 100)}{link.type === \"download\" && ` \\u2014 ${link.description}`}\n \n }\n \n {link.title}\n {link.description}\n \n \n {icon && !link.context && }\n {link.icon && link.context && }\n {intlID && !link.context && }\n {link.context && {link.context}}\n \n \n \n \n {!props.placeholder && \n {`Open context menu for ${link.title}`}\n }\n {isContextMenuOpen &&\n \n }\n );\n }\n}\n_Card.defaultProps = {link: {}};\nexport const Card = connect(state => ({platform: state.Prefs.values.platform}))(injectIntl(_Card));\nexport const PlaceholderCard = props => ;\n","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class TopSiteFormInput extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {validationError: this.props.validationError};\n this.onChange = this.onChange.bind(this);\n this.onMount = this.onMount.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.shouldFocus && !this.props.shouldFocus) {\n this.input.focus();\n }\n if (nextProps.validationError && !this.props.validationError) {\n this.setState({validationError: true});\n }\n // If the component is in an error state but the value was cleared by the parent\n if (this.state.validationError && !nextProps.value) {\n this.setState({validationError: false});\n }\n }\n\n onChange(ev) {\n if (this.state.validationError) {\n this.setState({validationError: false});\n }\n this.props.onChange(ev);\n }\n\n onMount(input) {\n this.input = input;\n }\n\n render() {\n const showClearButton = this.props.value && this.props.onClear;\n const {typeUrl} = this.props;\n const {validationError} = this.state;\n\n return (\n \n {this.props.loading ?\n :\n showClearButton && }\n \n {validationError &&\n }\n \n );\n }\n}\n\nTopSiteFormInput.defaultProps = {\n showClearButton: false,\n value: \"\",\n validationError: false,\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {TopSiteFormInput} from \"./TopSiteFormInput\";\nimport {TopSiteLink} from \"./TopSite\";\n\nexport class TopSiteForm extends React.PureComponent {\n constructor(props) {\n super(props);\n const {site} = props;\n this.state = {\n label: site ? (site.label || site.hostname) : \"\",\n url: site ? site.url : \"\",\n validationError: false,\n customScreenshotUrl: site ? site.customScreenshotURL : \"\",\n showCustomScreenshotForm: site ? site.customScreenshotURL : false,\n };\n this.onClearScreenshotInput = this.onClearScreenshotInput.bind(this);\n this.onLabelChange = this.onLabelChange.bind(this);\n this.onUrlChange = this.onUrlChange.bind(this);\n this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n this.onClearUrlClick = this.onClearUrlClick.bind(this);\n this.onDoneButtonClick = this.onDoneButtonClick.bind(this);\n this.onCustomScreenshotUrlChange = this.onCustomScreenshotUrlChange.bind(this);\n this.onPreviewButtonClick = this.onPreviewButtonClick.bind(this);\n this.onEnableScreenshotUrlForm = this.onEnableScreenshotUrlForm.bind(this);\n this.validateUrl = this.validateUrl.bind(this);\n }\n\n onLabelChange(event) {\n this.setState({\"label\": event.target.value});\n }\n\n onUrlChange(event) {\n this.setState({\n url: event.target.value,\n validationError: false,\n });\n }\n\n onClearUrlClick() {\n this.setState({\n url: \"\",\n validationError: false,\n });\n }\n\n onEnableScreenshotUrlForm() {\n this.setState({showCustomScreenshotForm: true});\n }\n\n _updateCustomScreenshotInput(customScreenshotUrl) {\n this.setState({\n customScreenshotUrl,\n validationError: false,\n });\n this.props.dispatch({type: at.PREVIEW_REQUEST_CANCEL});\n }\n\n onCustomScreenshotUrlChange(event) {\n this._updateCustomScreenshotInput(event.target.value);\n }\n\n onClearScreenshotInput() {\n this._updateCustomScreenshotInput(\"\");\n }\n\n onCancelButtonClick(ev) {\n ev.preventDefault();\n this.props.onClose();\n }\n\n onDoneButtonClick(ev) {\n ev.preventDefault();\n\n if (this.validateForm()) {\n const site = {url: this.cleanUrl(this.state.url)};\n const {index} = this.props;\n if (this.state.label !== \"\") {\n site.label = this.state.label;\n }\n\n if (this.state.customScreenshotUrl) {\n site.customScreenshotURL = this.cleanUrl(this.state.customScreenshotUrl);\n } else if (this.props.site && this.props.site.customScreenshotURL) {\n // Used to flag that previously cached screenshot should be removed\n site.customScreenshotURL = null;\n }\n this.props.dispatch(ac.AlsoToMain({\n type: at.TOP_SITES_PIN,\n data: {site, index},\n }));\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_EDIT\",\n action_position: index,\n }));\n\n this.props.onClose();\n }\n }\n\n onPreviewButtonClick(event) {\n event.preventDefault();\n if (this.validateForm()) {\n this.props.dispatch(ac.AlsoToMain({\n type: at.PREVIEW_REQUEST,\n data: {url: this.cleanUrl(this.state.customScreenshotUrl)},\n }));\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"PREVIEW_REQUEST\",\n }));\n }\n }\n\n cleanUrl(url) {\n // If we are missing a protocol, prepend http://\n if (!url.startsWith(\"http:\") && !url.startsWith(\"https:\")) {\n return `http://${url}`;\n }\n return url;\n }\n\n _tryParseUrl(url) {\n try {\n return new URL(url);\n } catch (e) {\n return null;\n }\n }\n\n validateUrl(url) {\n const validProtocols = [\"http:\", \"https:\"];\n const urlObj = this._tryParseUrl(url) || this._tryParseUrl(this.cleanUrl(url));\n\n return urlObj && validProtocols.includes(urlObj.protocol);\n }\n\n validateCustomScreenshotUrl() {\n const {customScreenshotUrl} = this.state;\n return !customScreenshotUrl || this.validateUrl(customScreenshotUrl);\n }\n\n validateForm() {\n const validate = this.validateUrl(this.state.url) && this.validateCustomScreenshotUrl();\n\n if (!validate) {\n this.setState({validationError: true});\n }\n\n return validate;\n }\n\n _renderCustomScreenshotInput() {\n const {customScreenshotUrl} = this.state;\n const requestFailed = this.props.previewResponse === \"\";\n const validationError = (this.state.validationError && !this.validateCustomScreenshotUrl()) || requestFailed;\n // Set focus on error if the url field is valid or when the input is first rendered and is empty\n const shouldFocus = (validationError && this.validateUrl(this.state.url)) || !customScreenshotUrl;\n const isLoading = this.props.previewResponse === null &&\n customScreenshotUrl && this.props.previewUrl === this.cleanUrl(customScreenshotUrl);\n\n if (!this.state.showCustomScreenshotForm) {\n return (\n \n );\n }\n return (\n \n );\n }\n\n render() {\n const {customScreenshotUrl} = this.state;\n const requestFailed = this.props.previewResponse === \"\";\n // For UI purposes, editing without an existing link is \"add\"\n const showAsAdd = !this.props.site;\n const previous = (this.props.site && this.props.site.customScreenshotURL) || \"\";\n const changed = customScreenshotUrl && this.cleanUrl(customScreenshotUrl) !== previous;\n // Preview mode if changes were made to the custom screenshot URL and no preview was received yet\n // or the request failed\n const previewMode = changed && !this.props.previewResponse;\n const previewLink = Object.assign({}, this.props.site);\n if (this.props.previewResponse) {\n previewLink.screenshot = this.props.previewResponse;\n previewLink.customScreenshotURL = this.props.previewUrl;\n }\n return (\n \n \n \n \n \n \n \n \n \n {this._renderCustomScreenshotInput()}\n \n \n \n \n \n \n \n \n {previewMode ?\n \n \n :\n \n \n }\n \n \n );\n }\n}\n\nTopSiteForm.defaultProps = {\n site: null,\n index: -1,\n};\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./content-src/activity-stream.jsx","webpack:///(webpack)/buildin/global.js","webpack:///./common/Actions.jsm","webpack:///./content-src/lib/snippets.js","webpack:///./content-src/asrouter/asrouter-content.jsx","webpack:///./content-src/lib/init-store.js","webpack:///external \"Redux\"","webpack:///./content-src/asrouter/rich-text-strings.js","webpack:///./content-src/asrouter/components/ImpressionsWrapper/ImpressionsWrapper.jsx","webpack:///external \"React\"","webpack:///external \"PropTypes\"","webpack:///./content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.jsx","webpack:///./content-src/asrouter/components/ModalOverlay/ModalOverlay.jsx","webpack:///external \"ReactDOM\"","webpack:///./content-src/components/Base/Base.jsx","webpack:///external \"ReactIntl\"","webpack:///./content-src/components/ASRouterAdmin/ASRouterAdmin.jsx","webpack:///./content-src/components/ConfirmDialog/ConfirmDialog.jsx","webpack:///external \"ReactRedux\"","webpack:///./content-src/components/ErrorBoundary/ErrorBoundary.jsx","webpack:///./content-src/components/ManualMigration/ManualMigration.jsx","webpack:///./common/PrerenderData.jsm","webpack:///./content-src/components/Search/Search.jsx","webpack:///./content-src/lib/constants.js","webpack:///./content-src/components/Sections/Sections.jsx","webpack:///./content-src/lib/link-menu-options.js","webpack:///./content-src/components/LinkMenu/LinkMenu.jsx","webpack:///./content-src/components/ContextMenu/ContextMenu.jsx","webpack:///./content-src/lib/screenshot-utils.js","webpack:///./content-src/components/CollapsibleSection/CollapsibleSection.jsx","webpack:///./content-src/components/SectionMenu/SectionMenu.jsx","webpack:///./content-src/lib/section-menu-options.js","webpack:///./content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx","webpack:///./common/PerfService.jsm","webpack:///./content-src/components/MoreRecommendations/MoreRecommendations.jsx","webpack:///./content-src/components/PocketLoggedInCta/PocketLoggedInCta.jsx","webpack:///./content-src/components/Topics/Topics.jsx","webpack:///./content-src/components/TopSites/TopSites.jsx","webpack:///./content-src/components/TopSites/TopSitesConstants.js","webpack:///./content-src/components/TopSites/SearchShortcutsForm.jsx","webpack:///./content-src/components/TopSites/TopSite.jsx","webpack:///./content-src/components/StartupOverlay/StartupOverlay.jsx","webpack:///./content-src/lib/detect-user-session-start.js","webpack:///./content-src/lib/asroutercontent.js","webpack:///./content-src/asrouter/components/Button/Button.jsx","webpack:///./content-src/asrouter/template-utils.js","webpack:///./content-src/asrouter/components/RichText/RichText.jsx","webpack:///./content-src/asrouter/components/SnippetBase/SnippetBase.jsx","webpack:///./content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.jsx","webpack:///./content-src/asrouter/templates/EOYSnippet/EOYSnippet.jsx","webpack:///./content-src/asrouter/templates/SubmitFormSnippet/SubmitFormSnippet.jsx","webpack:///./content-src/asrouter/templates/FXASignupSnippet/FXASignupSnippet.jsx","webpack:///./content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.jsx","webpack:///./content-src/asrouter/templates/SendToDeviceSnippet/isEmailOrPhoneNumber.js","webpack:///./content-src/asrouter/templates/SendToDeviceSnippet/SendToDeviceSnippet.jsx","webpack:///./content-src/asrouter/templates/template-manifest.jsx","webpack:///./node_modules/fluent/src/parser.js","webpack:///./node_modules/fluent/src/types.js","webpack:///./node_modules/fluent/src/builtins.js","webpack:///./node_modules/fluent/src/resolver.js","webpack:///./node_modules/fluent/src/context.js","webpack:///./node_modules/fluent/src/cached_iterable.js","webpack:///./node_modules/fluent/src/fallback.js","webpack:///./node_modules/fluent/src/util.js","webpack:///./node_modules/fluent/src/index.js","webpack:///./node_modules/fluent-react/src/localization.js","webpack:///./node_modules/fluent-react/src/provider.js","webpack:///./node_modules/fluent-react/src/with_localization.js","webpack:///./node_modules/fluent-react/src/markup.js","webpack:///./node_modules/fluent-react/vendor/omittedCloseTags.js","webpack:///./node_modules/fluent-react/vendor/voidElementTags.js","webpack:///./node_modules/fluent-react/src/localized.js","webpack:///./node_modules/fluent-react/src/index.js","webpack:///./common/Dedupe.jsm","webpack:///./common/Reducers.jsm","webpack:///./content-src/components/Card/types.js","webpack:///./content-src/components/Card/Card.jsx","webpack:///./content-src/components/TopSites/TopSiteFormInput.jsx","webpack:///./content-src/components/TopSites/TopSiteForm.jsx"],"names":["store","initStore","global","gActivityStreamPrerenderedState","asrouterContent","sendEventOrAddListener","dispatch","ac","AlsoToMain","type","at","NEW_TAB_STATE_REQUEST","ReactDOM","hydrate","document","location","href","documentElement","lang","gActivityStreamStrings","getElementById","enableASRouterContent","addSnippetsSubscriber","globalImportContext","Window","BACKGROUND_PROCESS","UI_CODE","actionTypes","ASRouterActions","_RouteMessage","action","options","meta","from","to","Error","forEach","o","fromTarget","skipLocal","CONTENT_MESSAGE_TYPE","MAIN_MESSAGE_TYPE","OnlyToMain","BroadcastToContent","AlsoToOneContent","target","skipMain","toTarget","OnlyToOneContent","AlsoToPreloaded","PRELOAD_MESSAGE_TYPE","UserEvent","data","TELEMETRY_USER_EVENT","ASRouterUserEvent","AS_ROUTER_TELEMETRY_USER_EVENT","UndesiredEvent","importContext","TELEMETRY_UNDESIRED_EVENT","PerfEvent","TELEMETRY_PERFORMANCE_EVENT","ImpressionStats","TELEMETRY_IMPRESSION_STATS","SetPref","name","value","SET_PREF","WebExtEvent","source","isSendToMain","isBroadcastToContent","isSendToOneContent","isSendToPreloaded","isFromMain","getPortIdOfSender","DATABASE_NAME","DATABASE_VERSION","SNIPPETS_OBJECTSTORE_NAME","SNIPPETS_UPDATE_INTERVAL_MS","SNIPPETS_ENABLED_EVENT","SNIPPETS_DISABLED_EVENT","SnippetsMap","Map","constructor","_db","_dispatch","set","key","_dbTransaction","db","put","delete","clear","SNIPPETS_BLOCKLIST_CLEARED","blockList","get","blockSnippetById","id","includes","push","SNIPPETS_BLOCKLIST_UPDATED","disableOnboarding","showFirefoxAccounts","SHOW_FIREFOX_ACCOUNTS","getTotalBookmarksCount","Promise","resolve","TOTAL_BOOKMARKS_REQUEST","RPMAddMessageListener","onMessage","TOTAL_BOOKMARKS_RESPONSE","RPMRemoveMessageListener","getAddonsInfo","ADDONS_INFO_REQUEST","ADDONS_INFO_RESPONSE","connect","_openDB","_restoreFromDb","modifier","reject","transaction","objectStore","onsuccess","event","onerror","error","openRequest","indexedDB","open","deleteDatabase","onupgradeneeded","result","objectStoreNames","contains","createObjectStore","err","console","onversionchange","versionChangeEvent","close","cursorRequest","openCursor","cursor","continue","SnippetsProvider","gSnippetsMap","_onAction","bind","snippetsMap","_refreshSnippets","cachedVersion","appData","version","lastUpdate","needsUpdate","Date","now","snippetsURL","response","fetch","status","payload","text","e","_showRemoteSnippets","snippetsEl","elementId","innerHTML","_logIfDevtools","scriptEl","getElementsByTagName","relocatedScript","createElement","parentNode","replaceChild","msg","SNIPPET_BLOCKED","concat","style","display","devtoolsEnabled","log","init","Object","assign","keys","window","dispatchEvent","Event","initialized","uninit","snippets","initializing","subscribe","state","getState","Prefs","values","ASRouter","allowLegacySnippets","disableSnippets","Snippets","hash","INCOMING_MESSAGE_NAME","OUTGOING_MESSAGE_NAME","ASR_CONTAINER_ID","ASRouterUtils","addListener","listener","removeListener","sendMessage","RPMSendAsyncMessage","blockById","dismissById","blockBundle","bundle","executeAction","button_action","unblockById","unblockBundle","overrideMessage","sendTelemetry","ping","getPreviewEndpoint","params","URLSearchParams","slice","indexOf","endpoint","URL","url","snippetId","shouldSendImpressionOnUpdate","nextProps","prevProps","message","ASRouterUISurface","React","PureComponent","props","onMessageFromParent","sendClick","sendImpression","sendUserActionTelemetry","extraProps","message_id","eventType","provider","metric","dataset","args","content","do_not_autoblock","onBlockById","onDismissById","clearBundle","setState","componentWillMount","trigger","componentWillUnmount","renderSnippets","SnippetComponent","SnippetsTemplates","template","generateMessages","renderOnboarding","renderPreviewBanner","render","defaultProps","ASRouterContent","containerElement","_mount","zIndex","body","appendChild","_unmount","unmountComponentAtNode","MERGE_STORE_ACTION","EARLY_QUEUED_ACTIONS","SAVE_SESSION_PERF_DATA","PAGE_PRERENDERED","mergeStateReducer","mainReducer","prevState","messageMiddleware","next","au","rehydrationMiddleware","_didRehydrate","isMergeStoreAction","isRehydrationRequest","_didRequestInitialState","INIT","queueEarlyMessageMiddleware","_receivedFromMain","_earlyActionQueue","reducers","initialState","createStore","combineReducers","applyMiddleware","ex","dump","JSON","stringify","stack","RICH_TEXT_CONFIG","RICH_TEXT_KEYS","cx","attrs","attrsToTry","Array","isArray","string","length","attr","pop","addMessages","VISIBLE","VISIBILITY_CHANGE_EVENT","ImpressionsWrapper","sendImpressionOrAddListener","visibilityState","_onVisibilityChange","removeEventListener","addEventListener","componentDidMount","sendOnMount","componentDidUpdate","children","OnboardingCard","onClick","UISurface","onAction","icon","title","button_label","OnboardingMessage","header","extraTemplateStrings","map","ModalOverlay","active","classList","add","remove","onDoneButton","PrefsButton","injectIntl","intl","formatMessage","addLocaleDataForReactIntl","locale","addLocaleData","parentLocale","debounce","func","wait","timer","wakeUp","setTimeout","apply","_Base","isFirstrun","isPrerendered","updateTheme","componentWillUpdate","bodyClassName","filter","v","join","className","App","strings","prefs","BaseContent","openPreferences","onWindowScroll","fixedSearch","SCROLL_THRESHOLD","scrollY","SETTINGS_OPEN","shouldBeFixedToTop","PrerenderData","arePrefsValid","noSectionsEnabled","Sections","section","enabled","outerClassName","showSearch","migrationExpired","Base","ASRouterAdmin","handleEnabledToggle","handleUserPrefToggle","onChangeMessageFilter","findOtherBundledMessagesOfSameTemplate","handleExpressionEval","onChangeTargetingParameters","onCopyTargetingParams","onPasteTargetingParams","onNewTargetingParams","messageFilter","evaluationStatus","stringTargetingParameters","newStringTargetingParameters","copiedToClipboard","pasteFromClipboard","param","targetingParameters","messages","bundled","handleBlock","handleUnblock","handleOverride","expireCache","resetPref","context","parse","expression","refs","expressionInput","targetingParametersError","updatedParameters","providerPrefs","find","p","userPrefInfo","userPrefs","isUserEnabled","isSystemEnabled","isEnabling","checked","undefined","setClipboardData","preventDefault","clipboardData","setData","execCommand","targetingParamsEval","innerText","renderMessageItem","isCurrent","lastMessageId","isBlocked","messageBlockList","campaign","impressions","messageImpressions","itemClassName","renderMessages","messagesToShow","renderMessageFilter","providers","renderTableHead","renderProviders","providersConfig","providerInfo","i","isTestProvider","info","label","bucket","reasonsDisabled","cohort","whiteSpace","lastUpdated","toLocaleString","renderPasteModal","errors","renderTargetingParameters","success","errorState","inputComp","_ConfirmDialog","_handleCancelBtn","_handleConfirmBtn","DIALOG_CANCEL","eventSource","onConfirm","_renderModalMessage","message_body","body_string_id","visible","cancel_button_string_id","confirm_button_string_id","ConfirmDialog","Dialog","ErrorBoundaryFallback","windowObj","reload","defaultClass","ErrorBoundary","hasError","componentDidCatch","FallbackComponent","_ManualMigration","onLaunchTour","onCancelTour","MIGRATION_START","MIGRATION_CANCEL","ManualMigration","_PrerenderData","initialPrefs","initialSections","_setValidation","validation","_validation","invalidatingPrefs","_invalidatingPrefs","reduce","oneOf","getPref","indexedDBPrefs","some","anyModifiedPrefs","prefName","pref","order","_Search","onInputMount","handleEvent","detail","gContentSearchController","search","input","healthReportKey","IS_NEWTAB","searchSource","ContentSearchUIController","showLogo","Search","documentURI","CARDS_PER_ROW_DEFAULT","CARDS_PER_ROW_COMPACT_WIDE","getFormattedMessage","Section","numRows","rowsPref","maxRows","_dispatchImpressionStats","cardsPerRow","compactCards","matchMedia","matches","maxCards","cards","rows","needsImpressionStats","tiles","link","guid","impressionCardGuids","sendImpressionStatsOrAddListener","shouldSendImpressionStats","collapsed","sendNewTabRehydrated","isCollapsed","wasCollapsed","renderNotified","NEW_TAB_REHYDRATED","Pocket","topics","emptyState","read_more_endpoint","contextMenuOptions","learnMore","privacyNoticeURL","isFirst","isLast","waitingForSpoc","maxCardsPerRow","maxCardsOnNarrow","pocketCta","isUserLoggedIn","useCta","isPocketLoggedInDefined","shouldShowPocketCta","shouldShowTopics","realRows","shouldShowEmptyState","usePlaceholder","isWebExtension","sectionClassName","feed","padding","startsWith","SectionIntl","_Sections","renderSections","sections","enabledSections","sectionOrder","showTopSites","expectedCount","sectionId","split","commonProps","s","_OpenInPrivateWindow","site","OPEN_PRIVATE_WINDOW","referrer","userEvent","GetPlatformString","platform","LinkMenuOptions","Separator","EmptyItem","RemoveBookmark","DELETE_BOOKMARK_BY_ID","bookmarkGuid","AddBookmark","BOOKMARK_URL","OpenInNewWindow","OPEN_NEW_WINDOW","typedBonus","BlockUrl","index","BLOCK_URL","open_url","pocket_id","impression","block","pos","WebExtDismiss","string_id","WEBEXT_DISMISS","action_position","DeleteUrl","isEnabled","siteInfo","DIALOG_OPEN","DELETE_HISTORY_URL","forceBlock","ShowFile","SHOW_DOWNLOAD_FILE","OpenFile","OPEN_DOWNLOAD_FILE","CopyDownloadLink","COPY_DOWNLOAD_LINK","GoToDownloadPage","OPEN_LINK","disabled","RemoveDownload","REMOVE_DOWNLOAD_FILE","PinTopSite","searchTopSite","TOP_SITES_PIN","UnpinTopSite","TOP_SITES_UNPIN","SaveToPocket","SAVE_TO_POCKET","pocket","DeleteFromPocket","DELETE_FROM_POCKET","ArchiveFromPocket","ARCHIVE_FROM_POCKET","EditTopSite","TOP_SITES_EDIT","CheckBookmark","CheckPinTopSite","isPinned","CheckSavedToPocket","CheckBookmarkOrArchive","OpenInPrivateWindow","DEFAULT_SITE_MENU_OPTIONS","_LinkMenu","getOptions","isPrivateBrowsingEnabled","propOptions","isDefault","option","userEventData","first","last","onUpdate","LinkMenu","ContextMenu","hideContext","stopPropagation","ContextMenuItem","onKeyDown","shiftKey","ScreenshotUtils","isBlob","isLocal","image","path","createLocalImageObject","remoteImage","createObjectURL","maybeRevokeBlobObjectURL","localImage","revokeObjectURL","isRemoteImageLocal","_CollapsibleSection","onBodyMount","onHeaderClick","onTransitionEnd","enableOrDisableAnimation","onMenuButtonClick","onMenuButtonMouseEnter","onMenuButtonMouseLeave","onMenuUpdate","enableAnimation","isAnimating","menuButtonHover","showContextMenu","sectionBody","scrollHeight","node","maxHeight","_getSectionBodyHeight","SectionMenuOptions","CheckCollapsed","div","currentTarget","renderIcon","backgroundImage","isCollapsible","extraMenuOptions","showPrefName","bodyStyle","CollapsibleSection","DEFAULT_SECTION_MENU_OPTIONS","WEBEXT_SECTION_MENU_OPTIONS","_SectionMenu","extraOptions","splice","SectionMenu","MoveUp","SECTION_MOVE","direction","MoveDown","RemoveSection","CollapseSection","UPDATE_SECTION_PREFS","ExpandSection","ManageSection","ManageWebExtension","OPEN_WEBEXT_SETTINGS","AddTopSite","AddSearchShortcut","TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL","PrivacyNotice","RECORDED_SECTIONS","ComponentPerfTimer","Component","perfSvc","_sendBadStateEvent","_sendPaintedEvent","_reportMissingData","_timestampHandled","_recordedFirstRender","_maybeSendPaintedEvent","_afterFramePaint","callback","requestAnimationFrame","_maybeSendBadStateEvent","_ensureFirstRenderTsRecorded","mark","dataReadyKey","firstRenderKey","parseInt","getMostRecentAbsMarkStartByName","ChromeUtils","import","usablePerfObj","Services","appShell","hiddenDOMWindow","performance","_PerfService","performanceObj","_perf","prototype","str","getEntriesByName","timeOrigin","absNow","entries","mostRecentEntry","startTime","MoreRecommendations","_PocketLoggedInCta","ctaUrl","ctaButton","ctaText","PocketLoggedInCta","Topic","Topics","t","topSiteIconType","customScreenshotURL","tippyTopIcon","faviconRef","faviconSize","screenshot","countTopSitesIconsTypes","topSites","countTopSitesTypes","acc","_TopSites","onEditFormClose","onSearchShortcutsFormClose","_dispatchTopSitesStats","_getVisibleTopSites","topSitesIconsStats","topSitesPinned","searchShortcuts","topsites_icon_stats","topsites_pinned","topsites_search_shortcuts","sitesPerRow","TopSites","TopSitesRows","TOP_SITES_CANCEL_EDIT","TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL","editForm","showSearchShortcutsForm","topSitesRows","TOP_SITES_SOURCE","TOP_SITES_CONTEXT_MENU_OPTIONS","TOP_SITES_SEARCH_SHORTCUTS_CONTEXT_MENU_OPTIONS","MIN_RICH_FAVICON_SIZE","MIN_CORNER_FAVICON_SIZE","SelectableSearchShortcut","shortcut","selected","imageStyle","keyword","onChange","SearchShortcutsForm","handleChange","onCancelButtonClick","onSaveButtonClick","shortcuts","isSelected","row","ev","onClose","pinQueue","unpinQueue","alreadyPinned","_searchTopSite","searchVendor","shortURL","UPDATE_PINNED_SEARCH_SHORTCUTS","addedShortcuts","deletedShortcuts","search_vendor","TopSiteLink","screenshotImage","onDragEvent","onKeyPress","_allowDrop","dataTransfer","types","dragged","effectAllowed","blur","button","getNextStateFromProps","imageInState","nextState","componentWillReceiveProps","defaultStyle","isDraggable","topSiteOuterClassName","isDragged","letterFallback","imageClassName","showSmallFavicon","smallFaviconStyle","smallFaviconFallback","hasScreenshotImage","backgroundColor","favicon","draggableProps","onDragEnd","onDragStart","onMouseDown","TopSite","onLinkClick","_getTelemetryInfo","icon_type","iconType","card_type","hostname","altKey","ctrlKey","metaKey","FILL_SEARCH_TERM","onActivate","isContextMenuOpen","activeIndex","TopSitePlaceholder","onEditButtonClick","_TopSiteList","DEFAULT_STATE","draggedIndex","draggedSite","draggedTitle","topSitesPreview","prevTopSites","newTopSites","dropped","_makeTopSitesPreview","TOP_SITES_INSERT","draggedFromIndex","_getTopSites","pinnedOnly","unpinned","siteToInsert","holeIndex","indexStep","shiftingStep","nextIndex","preview","shift","topSitesUI","maxNarrowVisibleIndex","l","slotProps","TopSiteList","_StartupOverlay","onInputChange","onSubmit","clickSkip","initScene","removeOverlay","onInputInvalid","emailInput","overlayRemoved","flowId","flowBeginTime","didFetch","fxa_endpoint","fxaParams","json","show","previousSibling","_getFormInfo","has_flow_params","focus","termsLink","privacyLink","terms","privacy","StartupOverlay","DetectUserSessionStart","_store","_perfService","perfService","_sendEvent","visibility_event_rcvd_ts","ALLOWED_STYLE_TAGS","Button","tag","border","safeURI","protocol","isAllowed","warn","ALLOWED_TAGS","b","u","strong","em","br","convertLinks","links","doNotAutoBlock","linkTag","RichText","localization_id","customElements","onBlockClicked","onBlock","renderDismissButton","footerDismiss","onDismiss","scene2_dismiss_button_text","block_button_text","containerClassName","textStyle","DEFAULT_ICON_PATH","onButtonClick","button_url","button_action_args","renderTitle","renderTitleIcon","titleIcon","title_icon","renderButton","button_color","button_background_color","renderText","tall","extraContent","handleSubmit","setFrequencyValue","frequencyCheckbox","form","querySelector","submit","renderDonations","fieldNames","numberFormat","Intl","NumberFormat","navigator","language","currency","currency_code","minimumFractionDigits","selected_button","btnStyle","color","donation_form_url","form_method","field","idx","button_name","amount","format","monthly_checkbox_label_text","text_color","background_color","customElement","highlight_color","test","EOYSnippet","extendedContent","expandSnippet","expanded","signupSubmitted","signupSuccess","disableForm","toUpperCase","formData","processFormData","mainInput","FormData","fetchRequest","Request","method","preventDismiss","renderHiddenFormInputs","hidden_inputs","renderDisclaimer","scene2_disclaimer_html","renderFormPrivacyNotice","scene2_privacy_html","renderSignupSubmitted","isSuccess","successTitle","success_title","bodyText","success_text","error_text","retryButtonText","scene1_button_label","validateInput","setCustomValidity","renderInput","placholder","scene2_email_placeholder_text","scene2_input_placeholder","inputType","renderSignupView","containerClass","scene2_icon","scene2_title","scene2_text","form_action","scene2_button_label","getFirstSceneContent","substr","FXASignupSnippet","userAgent","match","firefox_version","entrypoint","service","utm_source","utm_content","utm_campaign","utm_term","NewsletterSnippet","newsletters","scene2_newsletter","fmt","source_url","isEmailOrPhoneNumber","val","email_re","check_email","check_phone","isNaN","include_sms","append","message_id_sms","country","message_id_email","encodeURIComponent","SendToDeviceSnippet","simple_snippet","newsletter_snippet","fxa_signup_snippet","send_to_device_snippet","eoy_snippet","MAX_PLACEABLES","entryIdentifierRe","identifierRe","functionIdentifierRe","RuntimeParser","getResource","_source","_index","_length","skipWS","getEntry","SyntaxError","skipToNextEntryStart","ch","skipComment","skipSection","getMessage","skipInlineWS","getVariantName","getEntryIdentifier","getPattern","lineStart","getAttributes","skipBlankLines","ptr","getIdentifier","re","lastIndex","exec","toString","start","cc","charCodeAt","getString","substring","eol","firstLineContent","getComplexPattern","buffer","placeables","blankLinesStart","blankLinesEnd","ch2","getPlaceable","variants","getVariants","exp","vars","def","selector","getSelectorExpression","literal","getLiteral","getVariantKey","getCallArgs","fun","lastIndexOf","getNumber","num","defaultIndex","cc0","cc1","parser","FluentType","opts","valueOf","FluentNone","FluentNumber","parseFloat","ctx","nf","_memoizeIntlObject","other","FluentDateTime","dtf","DateTimeFormat","FluentSymbol","pr","PluralRules","select","arg","merge","argopts","unwrapped","opt","MAX_PLACEABLE_LENGTH","FSI","PDI","DefaultMember","env","members","RangeError","MessageReference","_terms","_messages","ReferenceError","VariantExpression","Type","isVariantList","variant","variantKey","AttributeExpression","attrName","SelectExpression","keyCanMatch","expr","Pattern","ExternalArgument","FunctionReference","CallExpression","member","hasOwnProperty","TypeError","_functions","builtins","callee","posargs","keyargs","ptn","dirty","has","useIsolating","_useIsolating","elem","part","WeakSet","locales","functions","_intls","WeakMap","Symbol","iterator","hasMessage","ctor","cache","CachedIterable","iterable","asyncIterator","seen","cur","touchNext","done","mapContextSync","ids","getContextForId","remainingCount","foundContexts","fill","mapContextAsync","nonBlank","line","countIndent","indent","ftl","code","lines","indents","common","Math","min","RegExp","replace","contexts","subs","Set","comp","unsubscribe","setMessages","relocalize","getMessageContext","formatCompound","mcx","fallback","isReactLocalization","propName","prop","l10n","getChildContext","Children","only","LocalizationProvider","childContextTypes","propTypes","PropTypes","element","isRequired","isIterable","componentName","withLocalization","Inner","WithLocalization","forceUpdate","displayName","contextTypes","component","TEMPLATE","parseMarkup","omittedCloseTags","area","base","col","embed","hr","img","keygen","track","wbr","voidElementTags","menuitem","reMarkup","toArguments","elems","propname","propval","isValidElement","toLowerCase","messageValue","messageAttrs","localizedProps","cloneElement","translationNodes","childNodes","translatedChildren","childNode","nodeType","TEXT_NODE","textContent","localName","sourceChild","Localized","Dedupe","createKey","defaultCreateKey","item","group","groups","globalKeys","valueMap","m","TOP_SITES_DEFAULT_ROWS","TOP_SITES_MAX_SITES_PER_ROW","dedupe","INITIAL_STATE","AS_ROUTER_INITIALIZED","AS_ROUTER_PREF_CHANGED","insertPinned","pinned","pinnedUrls","newLinks","pinIndex","hasMatch","newRows","TOP_SITES_UPDATED","TOP_SITES_PREFS_UPDATED","previewResponse","PREVIEW_RESPONSE","previewUrl","PREVIEW_REQUEST","PREVIEW_REQUEST_CANCEL","SCREENSHOT_UPDATED","PLACES_BOOKMARK_ADDED","bookmarkTitle","dateAdded","bookmarkDateCreated","PLACES_BOOKMARK_REMOVED","newSite","PLACES_LINK_DELETED","UPDATE_SEARCH_SHORTCUTS","SNIPPETS_PREVIEW_MODE","newValues","PREFS_INITIAL_VALUES","PREF_CHANGED","newState","SECTION_DEREGISTER","SECTION_REGISTER","SECTION_UPDATE","card","dedupeConfigurations","dedupeConf","dedupedRows","dedupeFrom","dedupeSectionId","dedupeSection","SECTION_UPDATE_CARD","PLACES_SAVED_TO_POCKET","PLACES_LINK_BLOCKED","SNIPPETS_DATA","SNIPPETS_RESET","POCKET_WAITING_FOR_SPOC","POCKET_LOGGED_IN","POCKET_CTA","cta_button","cta_text","cta_url","use_cta","cardContextTypes","history","intlID","bookmark","trending","download","gImageLoading","activeCard","imageLoaded","cardImage","maybeLoadImage","imageUrl","loaderPromise","loader","Image","src","catch","then","WEBEXT_CLICK","click","_Card","hasImage","placeholder","description","Card","PlaceholderCard","validationError","onMount","shouldFocus","showClearButton","onClear","typeUrl","titleId","loading","placeholderId","errorMessageId","TopSiteFormInput","customScreenshotUrl","showCustomScreenshotForm","onClearScreenshotInput","onLabelChange","onUrlChange","onClearUrlClick","onDoneButtonClick","onCustomScreenshotUrlChange","onPreviewButtonClick","onEnableScreenshotUrlForm","validateUrl","_updateCustomScreenshotInput","validateForm","cleanUrl","_tryParseUrl","validProtocols","urlObj","validateCustomScreenshotUrl","validate","_renderCustomScreenshotInput","requestFailed","isLoading","showAsAdd","previous","changed","previewMode","previewLink","TopSiteForm"],"mappings":"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","file":"activity-stream.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addSnippetsSubscriber} from \"content-src/lib/snippets\";\nimport {ASRouterContent} from \"content-src/asrouter/asrouter-content\";\nimport {Base} from \"content-src/components/Base/Base\";\nimport {DetectUserSessionStart} from \"content-src/lib/detect-user-session-start\";\nimport {enableASRouterContent} from \"content-src/lib/asroutercontent\";\nimport {initStore} from \"content-src/lib/init-store\";\nimport {Provider} from \"react-redux\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {reducers} from \"common/Reducers.jsm\";\n\nconst store = initStore(reducers, global.gActivityStreamPrerenderedState);\nconst asrouterContent = new ASRouterContent();\n\nnew DetectUserSessionStart(store).sendEventOrAddListener();\n\n// If we are starting in a prerendered state, we must wait until the first render\n// to request state rehydration (see Base.jsx). If we are NOT in a prerendered state,\n// we can request it immedately.\nif (!global.gActivityStreamPrerenderedState) {\n store.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n}\n\nReactDOM.hydrate(\n \n, document.getElementById(\"root\"));\n\nenableASRouterContent(store, asrouterContent);\naddSnippetsSubscriber(store);\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nthis.MAIN_MESSAGE_TYPE = \"ActivityStream:Main\";\nthis.CONTENT_MESSAGE_TYPE = \"ActivityStream:Content\";\nthis.PRELOAD_MESSAGE_TYPE = \"ActivityStream:PreloadedBrowser\";\nthis.UI_CODE = 1;\nthis.BACKGROUND_PROCESS = 2;\n\n/**\n * globalImportContext - Are we in UI code (i.e. react, a dom) or some kind of background process?\n * Use this in action creators if you need different logic\n * for ui/background processes.\n */\nconst globalImportContext = typeof Window === \"undefined\" ? BACKGROUND_PROCESS : UI_CODE;\n// Export for tests\nthis.globalImportContext = globalImportContext;\n\n// Create an object that avoids accidental differing key/value pairs:\n// {\n// INIT: \"INIT\",\n// UNINIT: \"UNINIT\"\n// }\nconst actionTypes = {};\nfor (const type of [\n \"ADDONS_INFO_REQUEST\",\n \"ADDONS_INFO_RESPONSE\",\n \"ARCHIVE_FROM_POCKET\",\n \"AS_ROUTER_INITIALIZED\",\n \"AS_ROUTER_PREF_CHANGED\",\n \"AS_ROUTER_TELEMETRY_USER_EVENT\",\n \"BLOCK_URL\",\n \"BOOKMARK_URL\",\n \"COPY_DOWNLOAD_LINK\",\n \"DELETE_BOOKMARK_BY_ID\",\n \"DELETE_FROM_POCKET\",\n \"DELETE_HISTORY_URL\",\n \"DIALOG_CANCEL\",\n \"DIALOG_OPEN\",\n \"DOWNLOAD_CHANGED\",\n \"FILL_SEARCH_TERM\",\n \"INIT\",\n \"MIGRATION_CANCEL\",\n \"MIGRATION_COMPLETED\",\n \"MIGRATION_START\",\n \"NEW_TAB_INIT\",\n \"NEW_TAB_INITIAL_STATE\",\n \"NEW_TAB_LOAD\",\n \"NEW_TAB_REHYDRATED\",\n \"NEW_TAB_STATE_REQUEST\",\n \"NEW_TAB_UNLOAD\",\n \"OPEN_DOWNLOAD_FILE\",\n \"OPEN_LINK\",\n \"OPEN_NEW_WINDOW\",\n \"OPEN_PRIVATE_WINDOW\",\n \"OPEN_WEBEXT_SETTINGS\",\n \"PAGE_PRERENDERED\",\n \"PLACES_BOOKMARK_ADDED\",\n \"PLACES_BOOKMARK_REMOVED\",\n \"PLACES_HISTORY_CLEARED\",\n \"PLACES_LINKS_CHANGED\",\n \"PLACES_LINK_BLOCKED\",\n \"PLACES_LINK_DELETED\",\n \"PLACES_SAVED_TO_POCKET\",\n \"POCKET_CTA\",\n \"POCKET_LOGGED_IN\",\n \"POCKET_WAITING_FOR_SPOC\",\n \"PREFS_INITIAL_VALUES\",\n \"PREF_CHANGED\",\n \"PREVIEW_REQUEST\",\n \"PREVIEW_REQUEST_CANCEL\",\n \"PREVIEW_RESPONSE\",\n \"REMOVE_DOWNLOAD_FILE\",\n \"RICH_ICON_MISSING\",\n \"SAVE_SESSION_PERF_DATA\",\n \"SAVE_TO_POCKET\",\n \"SCREENSHOT_UPDATED\",\n \"SECTION_DEREGISTER\",\n \"SECTION_DISABLE\",\n \"SECTION_ENABLE\",\n \"SECTION_MOVE\",\n \"SECTION_OPTIONS_CHANGED\",\n \"SECTION_REGISTER\",\n \"SECTION_UPDATE\",\n \"SECTION_UPDATE_CARD\",\n \"SETTINGS_CLOSE\",\n \"SETTINGS_OPEN\",\n \"SET_PREF\",\n \"SHOW_DOWNLOAD_FILE\",\n \"SHOW_FIREFOX_ACCOUNTS\",\n \"SKIPPED_SIGNIN\",\n \"SNIPPETS_BLOCKLIST_CLEARED\",\n \"SNIPPETS_BLOCKLIST_UPDATED\",\n \"SNIPPETS_DATA\",\n \"SNIPPETS_PREVIEW_MODE\",\n \"SNIPPETS_RESET\",\n \"SNIPPET_BLOCKED\",\n \"SUBMIT_EMAIL\",\n \"SYSTEM_TICK\",\n \"TELEMETRY_IMPRESSION_STATS\",\n \"TELEMETRY_PERFORMANCE_EVENT\",\n \"TELEMETRY_UNDESIRED_EVENT\",\n \"TELEMETRY_USER_EVENT\",\n \"TOP_SITES_CANCEL_EDIT\",\n \"TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL\",\n \"TOP_SITES_EDIT\",\n \"TOP_SITES_INSERT\",\n \"TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL\",\n \"TOP_SITES_PIN\",\n \"TOP_SITES_PREFS_UPDATED\",\n \"TOP_SITES_UNPIN\",\n \"TOP_SITES_UPDATED\",\n \"TOTAL_BOOKMARKS_REQUEST\",\n \"TOTAL_BOOKMARKS_RESPONSE\",\n \"UNINIT\",\n \"UPDATE_PINNED_SEARCH_SHORTCUTS\",\n \"UPDATE_SEARCH_SHORTCUTS\",\n \"UPDATE_SECTION_PREFS\",\n \"WEBEXT_CLICK\",\n \"WEBEXT_DISMISS\",\n]) {\n actionTypes[type] = type;\n}\n\n// These are acceptable actions for AS Router messages to have. They can show up\n// as call-to-action buttons in snippets, onboarding tour, etc.\nconst ASRouterActions = {};\nfor (const type of [\n \"INSTALL_ADDON_FROM_URL\",\n \"OPEN_APPLICATIONS_MENU\",\n \"OPEN_PRIVATE_BROWSER_WINDOW\",\n \"OPEN_URL\",\n \"OPEN_ABOUT_PAGE\",\n \"OPEN_PREFERENCES_PAGE\",\n \"SHOW_FIREFOX_ACCOUNTS\",\n]) {\n ASRouterActions[type] = type;\n}\n\n// Helper function for creating routed actions between content and main\n// Not intended to be used by consumers\nfunction _RouteMessage(action, options) {\n const meta = action.meta ? {...action.meta} : {};\n if (!options || !options.from || !options.to) {\n throw new Error(\"Routed Messages must have options as the second parameter, and must at least include a .from and .to property.\");\n }\n // For each of these fields, if they are passed as an option,\n // add them to the action. If they are not defined, remove them.\n [\"from\", \"to\", \"toTarget\", \"fromTarget\", \"skipMain\", \"skipLocal\"].forEach(o => {\n if (typeof options[o] !== \"undefined\") {\n meta[o] = options[o];\n } else if (meta[o]) {\n delete meta[o];\n }\n });\n return {...action, meta};\n}\n\n/**\n * AlsoToMain - Creates a message that will be dispatched locally and also sent to the Main process.\n *\n * @param {object} action Any redux action (required)\n * @param {object} options\n * @param {bool} skipLocal Used by OnlyToMain to skip the main reducer\n * @param {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToMain(action, fromTarget, skipLocal) {\n return _RouteMessage(action, {\n from: CONTENT_MESSAGE_TYPE,\n to: MAIN_MESSAGE_TYPE,\n fromTarget,\n skipLocal,\n });\n}\n\n/**\n * OnlyToMain - Creates a message that will be sent to the Main process and skip the local reducer.\n *\n * @param {object} action Any redux action (required)\n * @param {object} options\n * @param {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToMain(action, fromTarget) {\n return AlsoToMain(action, fromTarget, true);\n}\n\n/**\n * BroadcastToContent - Creates a message that will be dispatched to main and sent to ALL content processes.\n *\n * @param {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction BroadcastToContent(action) {\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: CONTENT_MESSAGE_TYPE,\n });\n}\n\n/**\n * AlsoToOneContent - Creates a message that will be will be dispatched to the main store\n * and also sent to a particular Content process.\n *\n * @param {object} action Any redux action (required)\n * @param {string} target The id of a content port\n * @param {bool} skipMain Used by OnlyToOneContent to skip the main process\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToOneContent(action, target, skipMain) {\n if (!target) {\n throw new Error(\"You must provide a target ID as the second parameter of AlsoToOneContent. If you want to send to all content processes, use BroadcastToContent\");\n }\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: CONTENT_MESSAGE_TYPE,\n toTarget: target,\n skipMain,\n });\n}\n\n/**\n * OnlyToOneContent - Creates a message that will be sent to a particular Content process\n * and skip the main reducer.\n *\n * @param {object} action Any redux action (required)\n * @param {string} target The id of a content port\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToOneContent(action, target) {\n return AlsoToOneContent(action, target, true);\n}\n\n/**\n * AlsoToPreloaded - Creates a message that dispatched to the main reducer and also sent to the preloaded tab.\n *\n * @param {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToPreloaded(action) {\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: PRELOAD_MESSAGE_TYPE,\n });\n}\n\n/**\n * UserEvent - A telemetry ping indicating a user action. This should only\n * be sent from the UI during a user session.\n *\n * @param {object} data Fields to include in the ping (source, etc.)\n * @return {object} An AlsoToMain action\n */\nfunction UserEvent(data) {\n return AlsoToMain({\n type: actionTypes.TELEMETRY_USER_EVENT,\n data,\n });\n}\n\n/**\n * ASRouterUserEvent - A telemetry ping indicating a user action from AS router. This should only\n * be sent from the UI during a user session.\n *\n * @param {object} data Fields to include in the ping (source, etc.)\n * @return {object} An AlsoToMain action\n */\nfunction ASRouterUserEvent(data) {\n return AlsoToMain({\n type: actionTypes.AS_ROUTER_TELEMETRY_USER_EVENT,\n data,\n });\n}\n\n/**\n * UndesiredEvent - A telemetry ping indicating an undesired state.\n *\n * @param {object} data Fields to include in the ping (value, etc.)\n * @param {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction UndesiredEvent(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_UNDESIRED_EVENT,\n data,\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * PerfEvent - A telemetry ping indicating a performance-related event.\n *\n * @param {object} data Fields to include in the ping (value, etc.)\n * @param {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction PerfEvent(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_PERFORMANCE_EVENT,\n data,\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * ImpressionStats - A telemetry ping indicating an impression stats.\n *\n * @param {object} data Fields to include in the ping\n * @param {int} importContext (For testing) Override the import context for testing.\n * #return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction ImpressionStats(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_IMPRESSION_STATS,\n data,\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction SetPref(name, value, importContext = globalImportContext) {\n const action = {type: actionTypes.SET_PREF, data: {name, value}};\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction WebExtEvent(type, data, importContext = globalImportContext) {\n if (!data || !data.source) {\n throw new Error(\"WebExtEvent actions should include a property \\\"source\\\", the id of the webextension that should receive the event.\");\n }\n const action = {type, data};\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nthis.actionTypes = actionTypes;\nthis.ASRouterActions = ASRouterActions;\n\nthis.actionCreators = {\n BroadcastToContent,\n UserEvent,\n ASRouterUserEvent,\n UndesiredEvent,\n PerfEvent,\n ImpressionStats,\n AlsoToOneContent,\n OnlyToOneContent,\n AlsoToMain,\n OnlyToMain,\n AlsoToPreloaded,\n SetPref,\n WebExtEvent,\n};\n\n// These are helpers to test for certain kinds of actions\nthis.actionUtils = {\n isSendToMain(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.to === MAIN_MESSAGE_TYPE && action.meta.from === CONTENT_MESSAGE_TYPE;\n },\n isBroadcastToContent(action) {\n if (!action.meta) {\n return false;\n }\n if (action.meta.to === CONTENT_MESSAGE_TYPE && !action.meta.toTarget) {\n return true;\n }\n return false;\n },\n isSendToOneContent(action) {\n if (!action.meta) {\n return false;\n }\n if (action.meta.to === CONTENT_MESSAGE_TYPE && action.meta.toTarget) {\n return true;\n }\n return false;\n },\n isSendToPreloaded(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.to === PRELOAD_MESSAGE_TYPE &&\n action.meta.from === MAIN_MESSAGE_TYPE;\n },\n isFromMain(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.from === MAIN_MESSAGE_TYPE &&\n action.meta.to === CONTENT_MESSAGE_TYPE;\n },\n getPortIdOfSender(action) {\n return (action.meta && action.meta.fromTarget) || null;\n },\n _RouteMessage,\n};\n\nconst EXPORTED_SYMBOLS = [\n \"actionTypes\",\n \"actionCreators\",\n \"actionUtils\",\n \"ASRouterActions\",\n \"globalImportContext\",\n \"UI_CODE\",\n \"BACKGROUND_PROCESS\",\n \"MAIN_MESSAGE_TYPE\",\n \"CONTENT_MESSAGE_TYPE\",\n \"PRELOAD_MESSAGE_TYPE\",\n];\n","const DATABASE_NAME = \"snippets_db\";\nconst DATABASE_VERSION = 1;\nconst SNIPPETS_OBJECTSTORE_NAME = \"snippets\";\nexport const SNIPPETS_UPDATE_INTERVAL_MS = 14400000; // 4 hours.\n\nconst SNIPPETS_ENABLED_EVENT = \"Snippets:Enabled\";\nconst SNIPPETS_DISABLED_EVENT = \"Snippets:Disabled\";\n\nimport {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * SnippetsMap - A utility for cacheing values related to the snippet. It has\n * the same interface as a Map, but is optionally backed by\n * indexedDB for persistent storage.\n * Call .connect() to open a database connection and restore any\n * previously cached data, if necessary.\n *\n */\nexport class SnippetsMap extends Map {\n constructor(dispatch) {\n super();\n this._db = null;\n this._dispatch = dispatch;\n }\n\n set(key, value) {\n super.set(key, value);\n return this._dbTransaction(db => db.put(value, key));\n }\n\n delete(key) {\n super.delete(key);\n return this._dbTransaction(db => db.delete(key));\n }\n\n clear() {\n super.clear();\n this._dispatch(ac.OnlyToMain({type: at.SNIPPETS_BLOCKLIST_CLEARED}));\n return this._dbTransaction(db => db.clear());\n }\n\n get blockList() {\n return this.get(\"blockList\") || [];\n }\n\n /**\n * blockSnippetById - Blocks a snippet given an id\n *\n * @param {str|int} id The id of the snippet\n * @return {Promise} Resolves when the id has been written to indexedDB,\n * or immediately if the snippetMap is not connected\n */\n async blockSnippetById(id) {\n if (!id) {\n return;\n }\n const {blockList} = this;\n if (!blockList.includes(id)) {\n blockList.push(id);\n this._dispatch(ac.AlsoToMain({type: at.SNIPPETS_BLOCKLIST_UPDATED, data: id}));\n await this.set(\"blockList\", blockList);\n }\n }\n\n disableOnboarding() {}\n\n showFirefoxAccounts() {\n this._dispatch(ac.AlsoToMain({type: at.SHOW_FIREFOX_ACCOUNTS}));\n }\n\n getTotalBookmarksCount() {\n return new Promise(resolve => {\n this._dispatch(ac.OnlyToMain({type: at.TOTAL_BOOKMARKS_REQUEST}));\n global.RPMAddMessageListener(\"ActivityStream:MainToContent\", function onMessage({data: action}) {\n if (action.type === at.TOTAL_BOOKMARKS_RESPONSE) {\n resolve(action.data);\n global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", onMessage);\n }\n });\n });\n }\n\n getAddonsInfo() {\n return new Promise(resolve => {\n this._dispatch(ac.OnlyToMain({type: at.ADDONS_INFO_REQUEST}));\n global.RPMAddMessageListener(\"ActivityStream:MainToContent\", function onMessage({data: action}) {\n if (action.type === at.ADDONS_INFO_RESPONSE) {\n resolve(action.data);\n global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", onMessage);\n }\n });\n });\n }\n\n /**\n * connect - Attaches an indexedDB back-end to the Map so that any set values\n * are also cached in a store. It also restores any existing values\n * that are already stored in the indexedDB store.\n *\n * @return {type} description\n */\n async connect() {\n // Open the connection\n const db = await this._openDB();\n\n // Restore any existing values\n await this._restoreFromDb(db);\n\n // Attach a reference to the db\n this._db = db;\n }\n\n /**\n * _dbTransaction - Returns a db transaction wrapped with the given modifier\n * function as a Promise. If the db has not been connected,\n * it resolves immediately.\n *\n * @param {func} modifier A function to call with the transaction\n * @return {obj} A Promise that resolves when the transaction has\n * completed or errored\n */\n _dbTransaction(modifier) {\n if (!this._db) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const transaction = modifier(\n this._db\n .transaction(SNIPPETS_OBJECTSTORE_NAME, \"readwrite\")\n .objectStore(SNIPPETS_OBJECTSTORE_NAME)\n );\n transaction.onsuccess = event => resolve();\n\n /* istanbul ignore next */\n transaction.onerror = event => reject(transaction.error);\n });\n }\n\n _openDB() {\n return new Promise((resolve, reject) => {\n const openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n\n /* istanbul ignore next */\n openRequest.onerror = event => {\n // Try to delete the old database so that we can start this process over\n // next time.\n indexedDB.deleteDatabase(DATABASE_NAME);\n reject(event);\n };\n\n openRequest.onupgradeneeded = event => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {\n db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);\n }\n };\n\n openRequest.onsuccess = event => {\n let db = event.target.result;\n\n /* istanbul ignore next */\n db.onerror = err => console.error(err); // eslint-disable-line no-console\n /* istanbul ignore next */\n db.onversionchange = versionChangeEvent => versionChangeEvent.target.close();\n\n resolve(db);\n };\n });\n }\n\n _restoreFromDb(db) {\n return new Promise((resolve, reject) => {\n let cursorRequest;\n try {\n cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)\n .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();\n } catch (err) {\n // istanbul ignore next\n reject(err);\n // istanbul ignore next\n return;\n }\n\n /* istanbul ignore next */\n cursorRequest.onerror = event => reject(event);\n\n cursorRequest.onsuccess = event => {\n let cursor = event.target.result;\n // Populate the cache from the persistent storage.\n if (cursor) {\n if (cursor.value !== \"blockList\") {\n this.set(cursor.key, cursor.value);\n }\n cursor.continue();\n } else {\n // We are done.\n resolve();\n }\n };\n });\n }\n}\n\n/**\n * SnippetsProvider - Initializes a SnippetsMap and loads snippets from a\n * remote location, or else default snippets if the remote\n * snippets cannot be retrieved.\n */\nexport class SnippetsProvider {\n constructor(dispatch) {\n // Initialize the Snippets Map and attaches it to a global so that\n // the snippet payload can interact with it.\n global.gSnippetsMap = new SnippetsMap(dispatch);\n this._onAction = this._onAction.bind(this);\n }\n\n get snippetsMap() {\n return global.gSnippetsMap;\n }\n\n async _refreshSnippets() {\n // Check if the cached version of of the snippets in snippetsMap. If it's too\n // old, blow away the entire snippetsMap.\n const cachedVersion = this.snippetsMap.get(\"snippets-cached-version\");\n\n if (cachedVersion !== this.appData.version) {\n this.snippetsMap.clear();\n }\n\n // Has enough time passed for us to require an update?\n const lastUpdate = this.snippetsMap.get(\"snippets-last-update\");\n const needsUpdate = !(lastUpdate >= 0) || Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS;\n\n if (needsUpdate && this.appData.snippetsURL) {\n this.snippetsMap.set(\"snippets-last-update\", Date.now());\n try {\n const response = await fetch(this.appData.snippetsURL);\n if (response.status === 200) {\n const payload = await response.text();\n\n this.snippetsMap.set(\"snippets\", payload);\n this.snippetsMap.set(\"snippets-cached-version\", this.appData.version);\n }\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n _showRemoteSnippets() {\n const snippetsEl = document.getElementById(this.elementId);\n const payload = this.snippetsMap.get(\"snippets\");\n\n if (!snippetsEl) {\n throw new Error(`No element was found with id '${this.elementId}'.`);\n }\n\n // This could happen if fetching failed\n if (!payload) {\n throw new Error(\"No remote snippets were found in gSnippetsMap.\");\n }\n\n if (typeof payload !== \"string\") {\n throw new Error(\"Snippet payload was incorrectly formatted\");\n }\n\n // Note that injecting snippets can throw if they're invalid XML.\n // eslint-disable-next-line no-unsanitized/property\n snippetsEl.innerHTML = payload;\n\n this._logIfDevtools(\"Successfully added snippets.\");\n\n // Scripts injected by innerHTML are inactive, so we have to relocate them\n // through DOM manipulation to activate their contents.\n for (const scriptEl of snippetsEl.getElementsByTagName(\"script\")) {\n const relocatedScript = document.createElement(\"script\");\n relocatedScript.text = scriptEl.text;\n scriptEl.parentNode.replaceChild(relocatedScript, scriptEl);\n }\n }\n\n _onAction(msg) {\n if (msg.data.type === at.SNIPPET_BLOCKED) {\n if (!this.snippetsMap.blockList.includes(msg.data.data)) {\n this.snippetsMap.set(\"blockList\", this.snippetsMap.blockList.concat(msg.data.data));\n document.getElementById(\"snippets-container\").style.display = \"none\";\n }\n }\n }\n\n // istanbul ignore next\n _logIfDevtools(text) {\n if (this.devtoolsEnabled) {\n console.log(\"Legacy snippets:\", text); // eslint-disable-line no-console\n }\n }\n\n /**\n * init - Fetch the snippet payload and show snippets\n *\n * @param {obj} options\n * @param {str} options.appData.snippetsURL The URL from which we fetch snippets\n * @param {int} options.appData.version The current snippets version\n * @param {str} options.elementId The id of the element in which to inject snippets\n * @param {bool} options.connect Should gSnippetsMap connect to indexedDB?\n */\n async init(options) {\n Object.assign(this, {\n appData: {},\n elementId: \"snippets\",\n connect: true,\n devtoolsEnabled: false,\n }, options);\n\n this._logIfDevtools(\"Initializing...\");\n\n // Add listener so we know when snippets are blocked on other pages\n if (global.RPMAddMessageListener) {\n global.RPMAddMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n }\n\n // TODO: Requires enabling indexedDB on newtab\n // Restore the snippets map from indexedDB\n if (this.connect) {\n try {\n await this.snippetsMap.connect();\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n\n // Cache app data values so they can be accessible from gSnippetsMap\n for (const key of Object.keys(this.appData)) {\n if (key === \"blockList\") {\n this.snippetsMap.set(\"blockList\", this.appData[key]);\n } else {\n this.snippetsMap.set(`appData.${key}`, this.appData[key]);\n }\n }\n\n // Refresh snippets, if enough time has passed.\n await this._refreshSnippets();\n\n // Try showing remote snippets, falling back to defaults if necessary.\n try {\n this._showRemoteSnippets();\n } catch (e) {\n this._logIfDevtools(\"Problem inserting remote snippets!\");\n console.error(e); // eslint-disable-line no-console\n }\n\n window.dispatchEvent(new Event(SNIPPETS_ENABLED_EVENT));\n\n this.initialized = true;\n this._logIfDevtools(\"Finished initializing.\");\n }\n\n uninit() {\n window.dispatchEvent(new Event(SNIPPETS_DISABLED_EVENT));\n if (global.RPMRemoveMessageListener) {\n global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n }\n this.initialized = false;\n }\n}\n\n/**\n * addSnippetsSubscriber - Creates a SnippetsProvider that Initializes\n * when the store has received the appropriate\n * Snippet data.\n *\n * @param {obj} store The redux store\n * @return {obj} Returns the snippets instance, asrouterContent instance and unsubscribe function\n */\nexport function addSnippetsSubscriber(store) {\n const snippets = new SnippetsProvider(store.dispatch);\n\n let initializing = false;\n\n store.subscribe(async () => {\n const state = store.getState();\n\n /**\n * Sorry this code is so complicated. It will be removed soon.\n * This is what the different values actually mean:\n *\n * ASRouter.initialized Is ASRouter.jsm initialised?\n * ASRouter.allowLegacySnippets Are ASRouter snippets turned OFF (i.e. legacy snippets are allowed)\n * state.Prefs.values[\"feeds.snippets\"] User preference for snippets\n * state.Snippets.initialized Is SnippetsFeed.jsm initialised?\n * snippets.initialized Is in-content snippets currently initialised?\n * state.Prefs.values.disableSnippets This pref is used to disable legacy snippets in an emergency\n * in a way that is not user-editable (true = disabled)\n */\n\n /** If we should initialize snippets... */\n if (\n state.Prefs.values[\"feeds.snippets\"] &&\n state.ASRouter.initialized &&\n state.ASRouter.allowLegacySnippets &&\n !state.Prefs.values.disableSnippets &&\n state.Snippets.initialized &&\n !snippets.initialized &&\n // Don't call init multiple times\n !initializing &&\n location.href !== \"about:welcome\" &&\n location.hash !== \"#asrouter\"\n ) {\n initializing = true;\n await snippets.init({appData: state.Snippets, devtoolsEnabled: state.Prefs.values[\"asrouter.devtoolsEnabled\"]});\n initializing = false;\n\n /** If we should remove snippets... */\n } else if (\n (\n state.Prefs.values[\"feeds.snippets\"] === false ||\n state.Prefs.values.disableSnippets === true ||\n (state.ASRouter.initialized && !state.ASRouter.allowLegacySnippets)\n ) &&\n snippets.initialized\n ) {\n // Remove snippets\n snippets.uninit();\n // istanbul ignore if\n if (state.Prefs.values[\"asrouter.devtoolsEnabled\"]) {\n console.log(\"Legacy snippets removed\"); // eslint-disable-line no-console\n }\n }\n });\n\n // Returned for testing purposes\n return {snippets};\n}\n","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {OUTGOING_MESSAGE_NAME as AS_GENERAL_OUTGOING_MESSAGE_NAME} from \"content-src/lib/init-store\";\nimport {generateMessages} from \"./rich-text-strings\";\nimport {ImpressionsWrapper} from \"./components/ImpressionsWrapper/ImpressionsWrapper\";\nimport {LocalizationProvider} from \"fluent-react\";\nimport {OnboardingMessage} from \"./templates/OnboardingMessage/OnboardingMessage\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {SnippetsTemplates} from \"./templates/template-manifest\";\n\nconst INCOMING_MESSAGE_NAME = \"ASRouter:parent-to-child\";\nconst OUTGOING_MESSAGE_NAME = \"ASRouter:child-to-parent\";\nconst ASR_CONTAINER_ID = \"asr-newtab-container\";\n\nexport const ASRouterUtils = {\n addListener(listener) {\n global.RPMAddMessageListener(INCOMING_MESSAGE_NAME, listener);\n },\n removeListener(listener) {\n global.RPMRemoveMessageListener(INCOMING_MESSAGE_NAME, listener);\n },\n sendMessage(action) {\n global.RPMSendAsyncMessage(OUTGOING_MESSAGE_NAME, action);\n },\n blockById(id, options) {\n ASRouterUtils.sendMessage({type: \"BLOCK_MESSAGE_BY_ID\", data: {id, ...options}});\n },\n dismissById(id) {\n ASRouterUtils.sendMessage({type: \"DISMISS_MESSAGE_BY_ID\", data: {id}});\n },\n blockBundle(bundle) {\n ASRouterUtils.sendMessage({type: \"BLOCK_BUNDLE\", data: {bundle}});\n },\n executeAction(button_action) {\n ASRouterUtils.sendMessage({\n type: \"USER_ACTION\",\n data: button_action,\n });\n },\n unblockById(id) {\n ASRouterUtils.sendMessage({type: \"UNBLOCK_MESSAGE_BY_ID\", data: {id}});\n },\n unblockBundle(bundle) {\n ASRouterUtils.sendMessage({type: \"UNBLOCK_BUNDLE\", data: {bundle}});\n },\n overrideMessage(id) {\n ASRouterUtils.sendMessage({type: \"OVERRIDE_MESSAGE\", data: {id}});\n },\n sendTelemetry(ping) {\n const payload = ac.ASRouterUserEvent(ping);\n global.RPMSendAsyncMessage(AS_GENERAL_OUTGOING_MESSAGE_NAME, payload);\n },\n getPreviewEndpoint() {\n if (window.location.href.includes(\"endpoint\")) {\n const params = new URLSearchParams(window.location.href.slice(window.location.href.indexOf(\"endpoint\")));\n try {\n const endpoint = new URL(params.get(\"endpoint\"));\n return {\n url: endpoint.href,\n snippetId: params.get(\"snippetId\"),\n };\n } catch (e) {}\n }\n\n return null;\n },\n};\n\n// Note: nextProps/prevProps refer to props passed to , not \nfunction shouldSendImpressionOnUpdate(nextProps, prevProps) {\n return (nextProps.message.id && (!prevProps.message || prevProps.message.id !== nextProps.message.id));\n}\n\nexport class ASRouterUISurface extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onMessageFromParent = this.onMessageFromParent.bind(this);\n this.sendClick = this.sendClick.bind(this);\n this.sendImpression = this.sendImpression.bind(this);\n this.sendUserActionTelemetry = this.sendUserActionTelemetry.bind(this);\n this.state = {message: {}, bundle: {}};\n }\n\n sendUserActionTelemetry(extraProps = {}) {\n const {message, bundle} = this.state;\n if (!message && !extraProps.message_id) {\n throw new Error(`You must provide a message_id for bundled messages`);\n }\n const eventType = `${message.provider || bundle.provider}_user_event`;\n ASRouterUtils.sendTelemetry({\n message_id: message.id || extraProps.message_id,\n source: extraProps.id,\n action: eventType,\n ...extraProps,\n });\n }\n\n sendImpression(extraProps) {\n if (this.state.message.provider === \"preview\") {\n return;\n }\n\n ASRouterUtils.sendMessage({type: \"IMPRESSION\", data: this.state.message});\n this.sendUserActionTelemetry({event: \"IMPRESSION\", ...extraProps});\n }\n\n // If link has a `metric` data attribute send it as part of the `value`\n // telemetry field which can have arbitrary values.\n // Used for router messages with links as part of the content.\n sendClick(event) {\n const metric = {\n value: event.target.dataset.metric,\n // Used for the `source` of the event. Needed to differentiate\n // from other snippet or onboarding events that may occur.\n id: \"NEWTAB_FOOTER_BAR_CONTENT\",\n };\n const action = {\n type: event.target.dataset.action,\n data: {args: event.target.dataset.args},\n };\n if (action.type) {\n ASRouterUtils.executeAction(action);\n }\n if (!this.state.message.content.do_not_autoblock && !event.target.dataset.do_not_autoblock) {\n ASRouterUtils.blockById(this.state.message.id);\n }\n if (this.state.message.provider !== \"preview\") {\n this.sendUserActionTelemetry({event: \"CLICK_BUTTON\", ...metric});\n }\n }\n\n onBlockById(id) {\n return options => ASRouterUtils.blockById(id, options);\n }\n\n onDismissById(id) {\n return () => ASRouterUtils.dismissById(id);\n }\n\n clearBundle(bundle) {\n return () => ASRouterUtils.blockBundle(bundle);\n }\n\n onMessageFromParent({data: action}) {\n switch (action.type) {\n case \"SET_MESSAGE\":\n this.setState({message: action.data});\n break;\n case \"SET_BUNDLED_MESSAGES\":\n this.setState({bundle: action.data});\n break;\n case \"CLEAR_MESSAGE\":\n if (action.data.id === this.state.message.id) {\n this.setState({message: {}});\n }\n break;\n case \"CLEAR_PROVIDER\":\n if (action.data.id === this.state.message.provider) {\n this.setState({message: {}});\n }\n break;\n case \"CLEAR_BUNDLE\":\n if (this.state.bundle.bundle) {\n this.setState({bundle: {}});\n }\n break;\n case \"CLEAR_ALL\":\n this.setState({message: {}, bundle: {}});\n }\n }\n\n componentWillMount() {\n const endpoint = ASRouterUtils.getPreviewEndpoint();\n ASRouterUtils.addListener(this.onMessageFromParent);\n\n // If we are loading about:welcome we want to trigger the onboarding messages\n if (this.props.document.location.href === \"about:welcome\") {\n ASRouterUtils.sendMessage({type: \"TRIGGER\", data: {trigger: {id: \"firstRun\"}}});\n } else {\n ASRouterUtils.sendMessage({type: \"SNIPPETS_REQUEST\", data: {endpoint}});\n }\n }\n\n componentWillUnmount() {\n ASRouterUtils.removeListener(this.onMessageFromParent);\n }\n\n renderSnippets() {\n const SnippetComponent = SnippetsTemplates[this.state.message.template];\n const {content} = this.state.message;\n\n return (\n \n \n \n \n );\n }\n\n renderOnboarding() {\n return (\n );\n }\n\n renderPreviewBanner() {\n if (this.state.message.provider !== \"preview\") {\n return null;\n }\n\n return (\n \n \n Preview Purposes Only\n \n );\n }\n\n render() {\n const {message, bundle} = this.state;\n if (!message.id && !bundle.template) { return null; }\n return (\n \n {this.renderPreviewBanner()}\n {bundle.template === \"onboarding\" ? this.renderOnboarding() : this.renderSnippets()}\n \n );\n }\n}\n\nASRouterUISurface.defaultProps = {document: global.document};\n\nexport class ASRouterContent {\n constructor() {\n this.initialized = false;\n this.containerElement = null;\n }\n\n _mount() {\n this.containerElement = global.document.getElementById(ASR_CONTAINER_ID);\n if (!this.containerElement) {\n this.containerElement = global.document.createElement(\"div\");\n this.containerElement.id = ASR_CONTAINER_ID;\n this.containerElement.style.zIndex = 1;\n global.document.body.appendChild(this.containerElement);\n }\n\n ReactDOM.render(, this.containerElement);\n }\n\n _unmount() {\n ReactDOM.unmountComponentAtNode(this.containerElement);\n }\n\n init() {\n this._mount();\n this.initialized = true;\n }\n\n uninit() {\n if (this.initialized) {\n this._unmount();\n this.initialized = false;\n }\n }\n}\n","/* eslint-env mozilla/frame-script */\n\nimport {actionCreators as ac, actionTypes as at, actionUtils as au} from \"common/Actions.jsm\";\nimport {applyMiddleware, combineReducers, createStore} from \"redux\";\n\nexport const MERGE_STORE_ACTION = \"NEW_TAB_INITIAL_STATE\";\nexport const OUTGOING_MESSAGE_NAME = \"ActivityStream:ContentToMain\";\nexport const INCOMING_MESSAGE_NAME = \"ActivityStream:MainToContent\";\nexport const EARLY_QUEUED_ACTIONS = [at.SAVE_SESSION_PERF_DATA, at.PAGE_PRERENDERED];\n\n/**\n * A higher-order function which returns a reducer that, on MERGE_STORE action,\n * will return the action.data object merged into the previous state.\n *\n * For all other actions, it merely calls mainReducer.\n *\n * Because we want this to merge the entire state object, it's written as a\n * higher order function which takes the main reducer (itself often a call to\n * combineReducers) as a parameter.\n *\n * @param {function} mainReducer reducer to call if action != MERGE_STORE_ACTION\n * @return {function} a reducer that, on MERGE_STORE_ACTION action,\n * will return the action.data object merged\n * into the previous state, and the result\n * of calling mainReducer otherwise.\n */\nfunction mergeStateReducer(mainReducer) {\n return (prevState, action) => {\n if (action.type === MERGE_STORE_ACTION) {\n return {...prevState, ...action.data};\n }\n\n return mainReducer(prevState, action);\n };\n}\n\n/**\n * messageMiddleware - Middleware that looks for SentToMain type actions, and sends them if necessary\n */\nconst messageMiddleware = store => next => action => {\n const skipLocal = action.meta && action.meta.skipLocal;\n if (au.isSendToMain(action)) {\n RPMSendAsyncMessage(OUTGOING_MESSAGE_NAME, action);\n }\n if (!skipLocal) {\n next(action);\n }\n};\n\nexport const rehydrationMiddleware = store => next => action => {\n if (store._didRehydrate) {\n return next(action);\n }\n\n const isMergeStoreAction = action.type === MERGE_STORE_ACTION;\n const isRehydrationRequest = action.type === at.NEW_TAB_STATE_REQUEST;\n\n if (isRehydrationRequest) {\n store._didRequestInitialState = true;\n return next(action);\n }\n\n if (isMergeStoreAction) {\n store._didRehydrate = true;\n return next(action);\n }\n\n // If init happened after our request was made, we need to re-request\n if (store._didRequestInitialState && action.type === at.INIT) {\n return next(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n }\n\n if (au.isBroadcastToContent(action) || au.isSendToOneContent(action) || au.isSendToPreloaded(action)) {\n // Note that actions received before didRehydrate will not be dispatched\n // because this could negatively affect preloading and the the state\n // will be replaced by rehydration anyway.\n return null;\n }\n\n return next(action);\n};\n\n/**\n * This middleware queues up all the EARLY_QUEUED_ACTIONS until it receives\n * the first action from main. This is useful for those actions for main which\n * require higher reliability, i.e. the action will not be lost in the case\n * that it gets sent before the main is ready to receive it. Conversely, any\n * actions allowed early are accepted to be ignorable or re-sendable.\n */\nexport const queueEarlyMessageMiddleware = store => next => action => {\n if (store._receivedFromMain) {\n next(action);\n } else if (au.isFromMain(action)) {\n next(action);\n store._receivedFromMain = true;\n // Sending out all the early actions as main is ready now\n if (store._earlyActionQueue) {\n store._earlyActionQueue.forEach(next);\n store._earlyActionQueue = [];\n }\n } else if (EARLY_QUEUED_ACTIONS.includes(action.type)) {\n store._earlyActionQueue = store._earlyActionQueue || [];\n store._earlyActionQueue.push(action);\n } else {\n // Let any other type of action go through\n next(action);\n }\n};\n\n/**\n * initStore - Create a store and listen for incoming actions\n *\n * @param {object} reducers An object containing Redux reducers\n * @param {object} intialState (optional) The initial state of the store, if desired\n * @return {object} A redux store\n */\nexport function initStore(reducers, initialState) {\n const store = createStore(\n mergeStateReducer(combineReducers(reducers)),\n initialState,\n global.RPMAddMessageListener && applyMiddleware(rehydrationMiddleware, queueEarlyMessageMiddleware, messageMiddleware)\n );\n\n store._didRehydrate = false;\n store._didRequestInitialState = false;\n\n if (global.RPMAddMessageListener) {\n global.RPMAddMessageListener(INCOMING_MESSAGE_NAME, msg => {\n try {\n store.dispatch(msg.data);\n } catch (ex) {\n console.error(\"Content msg:\", msg, \"Dispatch error: \", ex); // eslint-disable-line no-console\n dump(`Content msg: ${JSON.stringify(msg)}\\nDispatch error: ${ex}\\n${ex.stack}`);\n }\n });\n }\n\n return store;\n}\n","module.exports = Redux;","import {MessageContext} from \"fluent\";\n\n/**\n * Properties that allow rich text MUST be added to this list.\n * key: the localization_id that should be used\n * value: a property or array of properties on the message.content object\n */\nconst RICH_TEXT_CONFIG = {\n \"text\": [\"text\", \"scene1_text\"],\n \"privacy_html\": \"scene2_privacy_html\",\n \"disclaimer_html\": \"scene2_disclaimer_html\",\n};\n\nexport const RICH_TEXT_KEYS = Object.keys(RICH_TEXT_CONFIG);\n\n/**\n * Generates an array of messages suitable for fluent's localization provider\n * including all needed strings for rich text.\n * @param {object} content A .content object from an ASR message (i.e. message.content)\n * @returns {MessageContext[]} A array containing the fluent message context\n */\nexport function generateMessages(content) {\n const cx = new MessageContext(\"en-US\");\n\n RICH_TEXT_KEYS.forEach(key => {\n const attrs = RICH_TEXT_CONFIG[key];\n const attrsToTry = Array.isArray(attrs) ? [...attrs] : [attrs];\n let string = \"\";\n while (!string && attrsToTry.length) {\n const attr = attrsToTry.pop();\n string = content[attr];\n }\n cx.addMessages(`${key} = ${string}`);\n });\n return [cx];\n}\n","import React from \"react\";\n\nexport const VISIBLE = \"visible\";\nexport const VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\n/**\n * Component wrapper used to send telemetry pings on every impression.\n */\nexport class ImpressionsWrapper extends React.PureComponent {\n // This sends an event when a user sees a set of new content. If content\n // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n // only send the event if the page becomes visible again.\n sendImpressionOrAddListener() {\n if (this.props.document.visibilityState === VISIBLE) {\n this.props.sendImpression({id: this.props.id});\n } else {\n // We should only ever send the latest impression stats ping, so remove any\n // older listeners.\n if (this._onVisibilityChange) {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n\n // When the page becomes visible, send the impression stats ping if the section isn't collapsed.\n this._onVisibilityChange = () => {\n if (this.props.document.visibilityState === VISIBLE) {\n this.props.sendImpression({id: this.props.id});\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n };\n this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n componentWillUnmount() {\n if (this._onVisibilityChange) {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n componentDidMount() {\n if (this.props.sendOnMount) {\n this.sendImpressionOrAddListener();\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.shouldSendImpressionOnUpdate(this.props, prevProps)) {\n this.sendImpressionOrAddListener();\n }\n }\n\n render() {\n return this.props.children;\n }\n}\n\nImpressionsWrapper.defaultProps = {\n document: global.document,\n sendOnMount: true,\n};\n","module.exports = React;","module.exports = PropTypes;","import {ModalOverlay} from \"../../components/ModalOverlay/ModalOverlay\";\nimport React from \"react\";\n\nclass OnboardingCard extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n }\n\n onClick() {\n const {props} = this;\n const ping = {\n event: \"CLICK_BUTTON\",\n message_id: props.id,\n id: props.UISurface,\n };\n props.sendUserActionTelemetry(ping);\n props.onAction(props.content.button_action);\n }\n\n render() {\n const {content} = this.props;\n return (\n \n \n \n \n {content.title} \n {content.text} \n \n \n {content.button_label} \n \n \n \n );\n }\n}\n\nexport class OnboardingMessage extends React.PureComponent {\n render() {\n const {props} = this;\n const {button_label, header} = props.extraTemplateStrings;\n return (\n \n \n {props.bundle.map(message => (\n \n ))}\n \n \n );\n }\n}\n","import React from \"react\";\n\nexport class ModalOverlay extends React.PureComponent {\n componentWillMount() {\n this.setState({active: true});\n document.body.classList.add(\"modal-open\");\n }\n\n componentWillUnmount() {\n document.body.classList.remove(\"modal-open\");\n this.setState({active: false});\n }\n\n render() {\n const {active} = this.state;\n const {title, button_label} = this.props;\n return (\n \n \n \n {title} \n {this.props.children}\n \n {button_label} \n \n \n \n );\n }\n}\n","module.exports = ReactDOM;","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addLocaleData, injectIntl, IntlProvider} from \"react-intl\";\nimport {ASRouterAdmin} from \"content-src/components/ASRouterAdmin/ASRouterAdmin\";\nimport {ConfirmDialog} from \"content-src/components/ConfirmDialog/ConfirmDialog\";\nimport {connect} from \"react-redux\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport {ManualMigration} from \"content-src/components/ManualMigration/ManualMigration\";\nimport {PrerenderData} from \"common/PrerenderData.jsm\";\nimport React from \"react\";\nimport {Search} from \"content-src/components/Search/Search\";\nimport {Sections} from \"content-src/components/Sections/Sections\";\nimport {StartupOverlay} from \"content-src/components/StartupOverlay/StartupOverlay\";\n\nconst PrefsButton = injectIntl(props => (\n \n \n \n));\n\n// Add the locale data for pluralization and relative-time formatting for now,\n// this just uses english locale data. We can make this more sophisticated if\n// more features are needed.\nfunction addLocaleDataForReactIntl(locale) {\n addLocaleData([{locale, parentLocale: \"en\"}]);\n}\n\n// Returns a function will not be continuously triggered when called. The\n// function will be triggered if called again after `wait` milliseconds.\nfunction debounce(func, wait) {\n let timer;\n return (...args) => {\n if (timer) { return; }\n\n let wakeUp = () => { timer = null; };\n\n timer = setTimeout(wakeUp, wait);\n func.apply(this, args);\n };\n}\n\nexport class _Base extends React.PureComponent {\n componentWillMount() {\n const {locale} = this.props;\n addLocaleDataForReactIntl(locale);\n if (this.props.isFirstrun) {\n global.document.body.classList.add(\"welcome\", \"hide-main\");\n }\n }\n\n componentDidMount() {\n // Request state AFTER the first render to ensure we don't cause the\n // prerendered DOM to be unmounted. Otherwise, NEW_TAB_STATE_REQUEST is\n // dispatched right after the store is ready.\n if (this.props.isPrerendered) {\n this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n this.props.dispatch(ac.AlsoToMain({type: at.PAGE_PRERENDERED}));\n }\n }\n\n componentWillUnmount() {\n this.updateTheme();\n }\n\n componentWillUpdate() {\n this.updateTheme();\n }\n\n updateTheme() {\n const bodyClassName = [\n \"activity-stream\",\n // If we skipped the about:welcome overlay and removed the CSS classes\n // we don't want to add them back to the Activity Stream view\n document.body.classList.contains(\"welcome\") ? \"welcome\" : \"\",\n document.body.classList.contains(\"hide-main\") ? \"hide-main\" : \"\",\n ].filter(v => v).join(\" \");\n global.document.body.className = bodyClassName;\n }\n\n render() {\n const {props} = this;\n const {App, locale, strings} = props;\n const {initialized} = App;\n\n const prefs = props.Prefs.values;\n if (prefs[\"asrouter.devtoolsEnabled\"]) {\n if (window.location.hash === \"#asrouter\") {\n return ();\n }\n console.log(\"ASRouter devtools enabled. To access visit %cabout:newtab#asrouter\", \"font-weight: bold\"); // eslint-disable-line no-console\n }\n\n if (!props.isPrerendered && !initialized) {\n return null;\n }\n\n return (\n \n \n \n );\n }\n}\n\nexport class BaseContent extends React.PureComponent {\n constructor(props) {\n super(props);\n this.openPreferences = this.openPreferences.bind(this);\n this.onWindowScroll = debounce(this.onWindowScroll.bind(this), 5);\n this.state = {fixedSearch: false};\n }\n\n componentDidMount() {\n global.addEventListener(\"scroll\", this.onWindowScroll);\n }\n\n componentWillUnmount() {\n global.removeEventListener(\"scroll\", this.onWindowScroll);\n }\n\n onWindowScroll() {\n const SCROLL_THRESHOLD = 34;\n if (global.scrollY > SCROLL_THRESHOLD && !this.state.fixedSearch) {\n this.setState({fixedSearch: true});\n } else if (global.scrollY <= SCROLL_THRESHOLD && this.state.fixedSearch) {\n this.setState({fixedSearch: false});\n }\n }\n\n openPreferences() {\n this.props.dispatch(ac.OnlyToMain({type: at.SETTINGS_OPEN}));\n this.props.dispatch(ac.UserEvent({event: \"OPEN_NEWTAB_PREFS\"}));\n }\n\n render() {\n const {props} = this;\n const {App} = props;\n const {initialized} = App;\n const prefs = props.Prefs.values;\n\n const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]);\n const noSectionsEnabled = !prefs[\"feeds.topsites\"] && props.Sections.filter(section => section.enabled).length === 0;\n\n const outerClassName = [\n \"outer-wrapper\",\n shouldBeFixedToTop && \"fixed-to-top\",\n prefs.showSearch && this.state.fixedSearch && !noSectionsEnabled && \"fixed-search\",\n prefs.showSearch && noSectionsEnabled && \"only-search\",\n ].filter(v => v).join(\" \");\n\n return (\n \n \n \n {prefs.showSearch &&\n \n \n \n \n \n }\n \n {!prefs.migrationExpired &&\n \n \n \n }\n \n \n \n \n \n \n {this.props.isFirstrun && }\n );\n }\n}\n\nexport const Base = connect(state => ({App: state.App, Prefs: state.Prefs, Sections: state.Sections}))(_Base);\n","module.exports = ReactIntl;","import {ASRouterUtils} from \"../../asrouter/asrouter-content\";\nimport {ModalOverlay} from \"../../asrouter/components/ModalOverlay/ModalOverlay\";\nimport React from \"react\";\n\nexport class ASRouterAdmin extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onMessage = this.onMessage.bind(this);\n this.handleEnabledToggle = this.handleEnabledToggle.bind(this);\n this.handleUserPrefToggle = this.handleUserPrefToggle.bind(this);\n this.onChangeMessageFilter = this.onChangeMessageFilter.bind(this);\n this.findOtherBundledMessagesOfSameTemplate = this.findOtherBundledMessagesOfSameTemplate.bind(this);\n this.handleExpressionEval = this.handleExpressionEval.bind(this);\n this.onChangeTargetingParameters = this.onChangeTargetingParameters.bind(this);\n this.onCopyTargetingParams = this.onCopyTargetingParams.bind(this);\n this.onPasteTargetingParams = this.onPasteTargetingParams.bind(this);\n this.onNewTargetingParams = this.onNewTargetingParams.bind(this);\n this.state = {\n messageFilter: \"all\",\n evaluationStatus: {},\n stringTargetingParameters: null,\n newStringTargetingParameters: null,\n copiedToClipboard: false,\n pasteFromClipboard: false,\n };\n }\n\n onMessage({data: action}) {\n if (action.type === \"ADMIN_SET_STATE\") {\n this.setState(action.data);\n if (!this.state.stringTargetingParameters) {\n const stringTargetingParameters = {};\n for (const param of Object.keys(action.data.targetingParameters)) {\n stringTargetingParameters[param] = JSON.stringify(action.data.targetingParameters[param], null, 2);\n }\n this.setState({stringTargetingParameters});\n }\n }\n }\n\n componentWillMount() {\n const endpoint = ASRouterUtils.getPreviewEndpoint();\n ASRouterUtils.sendMessage({type: \"ADMIN_CONNECT_STATE\", data: {endpoint}});\n ASRouterUtils.addListener(this.onMessage);\n }\n\n componentWillUnmount() {\n ASRouterUtils.removeListener(this.onMessage);\n }\n\n findOtherBundledMessagesOfSameTemplate(template) {\n return this.state.messages.filter(msg => msg.template === template && msg.bundled);\n }\n\n handleBlock(msg) {\n if (msg.bundled) {\n // If we are blocking a message that belongs to a bundle, block all other messages that are bundled of that same template\n let bundle = this.findOtherBundledMessagesOfSameTemplate(msg.template);\n return () => ASRouterUtils.blockBundle(bundle);\n }\n return () => ASRouterUtils.blockById(msg.id);\n }\n\n handleUnblock(msg) {\n if (msg.bundled) {\n // If we are unblocking a message that belongs to a bundle, unblock all other messages that are bundled of that same template\n let bundle = this.findOtherBundledMessagesOfSameTemplate(msg.template);\n return () => ASRouterUtils.unblockBundle(bundle);\n }\n return () => ASRouterUtils.unblockById(msg.id);\n }\n\n handleOverride(id) {\n return () => ASRouterUtils.overrideMessage(id);\n }\n\n expireCache() {\n ASRouterUtils.sendMessage({type: \"EXPIRE_QUERY_CACHE\"});\n }\n\n resetPref() {\n ASRouterUtils.sendMessage({type: \"RESET_PROVIDER_PREF\"});\n }\n\n handleExpressionEval() {\n const context = {};\n for (const param of Object.keys(this.state.stringTargetingParameters)) {\n const value = this.state.stringTargetingParameters[param];\n context[param] = value ? JSON.parse(value) : null;\n }\n ASRouterUtils.sendMessage({\n type: \"EVALUATE_JEXL_EXPRESSION\",\n data: {\n expression: this.refs.expressionInput.value,\n context,\n },\n });\n }\n\n onChangeTargetingParameters(event) {\n const {name} = event.target;\n const {value} = event.target;\n\n this.setState(({stringTargetingParameters}) => {\n let targetingParametersError = null;\n const updatedParameters = {...stringTargetingParameters};\n updatedParameters[name] = value;\n try {\n JSON.parse(value);\n } catch (e) {\n console.log(`Error parsing value of parameter ${name}`); // eslint-disable-line no-console\n targetingParametersError = {id: name};\n }\n\n return {\n copiedToClipboard: false,\n evaluationStatus: {},\n stringTargetingParameters: updatedParameters,\n targetingParametersError,\n };\n });\n }\n\n handleEnabledToggle(event) {\n const provider = this.state.providerPrefs.find(p => p.id === event.target.dataset.provider);\n const userPrefInfo = this.state.userPrefs;\n\n const isUserEnabled = provider.id in userPrefInfo ? userPrefInfo[provider.id] : true;\n const isSystemEnabled = provider.enabled;\n const isEnabling = event.target.checked;\n\n if (isEnabling) {\n if (!isUserEnabled) {\n ASRouterUtils.sendMessage({type: \"SET_PROVIDER_USER_PREF\", data: {id: provider.id, value: true}});\n }\n if (!isSystemEnabled) {\n ASRouterUtils.sendMessage({type: \"ENABLE_PROVIDER\", data: provider.id});\n }\n } else {\n ASRouterUtils.sendMessage({type: \"DISABLE_PROVIDER\", data: provider.id});\n }\n\n this.setState({messageFilter: \"all\"});\n }\n\n handleUserPrefToggle(event) {\n const action = {type: \"SET_PROVIDER_USER_PREF\", data: {id: event.target.dataset.provider, value: event.target.checked}};\n ASRouterUtils.sendMessage(action);\n this.setState({messageFilter: \"all\"});\n }\n\n onChangeMessageFilter(event) {\n this.setState({messageFilter: event.target.value});\n }\n\n // Simulate a copy event that sets to clipboard all targeting paramters and values\n onCopyTargetingParams(event) {\n const stringTargetingParameters = {...this.state.stringTargetingParameters};\n for (const key of Object.keys(stringTargetingParameters)) {\n // If the value is not set the parameter will be lost when we stringify\n if (stringTargetingParameters[key] === undefined) {\n stringTargetingParameters[key] = null;\n }\n }\n const setClipboardData = e => {\n e.preventDefault();\n e.clipboardData.setData(\"text\", JSON.stringify(stringTargetingParameters, null, 2));\n document.removeEventListener(\"copy\", setClipboardData);\n this.setState({copiedToClipboard: true});\n };\n\n document.addEventListener(\"copy\", setClipboardData);\n\n document.execCommand(\"copy\");\n }\n\n // Copy all clipboard data to targeting parameters\n onPasteTargetingParams(event) {\n this.setState(({pasteFromClipboard}) => ({\n pasteFromClipboard: !pasteFromClipboard,\n newStringTargetingParameters: \"\",\n }));\n }\n\n onNewTargetingParams(event) {\n this.setState({newStringTargetingParameters: event.target.value});\n event.target.classList.remove(\"errorState\");\n this.refs.targetingParamsEval.innerText = \"\";\n\n try {\n const stringTargetingParameters = JSON.parse(event.target.value);\n this.setState({stringTargetingParameters});\n } catch (e) {\n event.target.classList.add(\"errorState\");\n this.refs.targetingParamsEval.innerText = e.message;\n }\n }\n\n renderMessageItem(msg) {\n const isCurrent = msg.id === this.state.lastMessageId;\n const isBlocked = this.state.messageBlockList.includes(msg.id) || this.state.messageBlockList.includes(msg.campaign);\n const impressions = this.state.messageImpressions[msg.id] ? this.state.messageImpressions[msg.id].length : 0;\n\n let itemClassName = \"message-item\";\n if (isCurrent) { itemClassName += \" current\"; }\n if (isBlocked) { itemClassName += \" blocked\"; }\n\n return (\n {msg.id} \n \n {isBlocked ? \"Unblock\" : \"Block\"}\n {isBlocked ? null : Show}\n ({impressions} impressions)\n \n \n {JSON.stringify(msg, null, 2)}\n \n );\n }\n\n renderMessages() {\n if (!this.state.messages) {\n return null;\n }\n const messagesToShow = this.state.messageFilter === \"all\" ? this.state.messages : this.state.messages.filter(message => message.provider === this.state.messageFilter);\n return (\n {messagesToShow.map(msg => this.renderMessageItem(msg))}\n );\n }\n\n renderMessageFilter() {\n if (!this.state.providers) {\n return null;\n }\n return (Show messages from \n all providers\n {this.state.providers.map(provider => ({provider.id}))}\n );\n }\n\n renderTableHead() {\n return (\n \n \n Provider ID\n Source\n Cohort\n Last Updated\n \n );\n }\n\n renderProviders() {\n const providersConfig = this.state.providerPrefs;\n const providerInfo = this.state.providers;\n const userPrefInfo = this.state.userPrefs;\n\n return ({this.renderTableHead()}\n {providersConfig.map((provider, i) => {\n const isTestProvider = provider.id === \"snippets_local_testing\";\n const info = providerInfo.find(p => p.id === provider.id) || {};\n const isUserEnabled = provider.id in userPrefInfo ? userPrefInfo[provider.id] : true;\n const isSystemEnabled = (isTestProvider || provider.enabled);\n\n let label = \"local\";\n if (provider.type === \"remote\") {\n label = (endpoint ({info.url}));\n } else if (provider.type === \"remote-settings\") {\n label = `remote settings (${provider.bucket})`;\n }\n\n let reasonsDisabled = [];\n if (!isSystemEnabled) {\n reasonsDisabled.push(\"system pref\");\n }\n if (!isUserEnabled) {\n reasonsDisabled.push(\"user pref\");\n }\n if (reasonsDisabled.length) {\n label = `disabled via ${reasonsDisabled.join(\", \")}`;\n }\n\n return (\n\n {isTestProvider ? : }\n {provider.id}\n {label}\n {provider.cohort}\n {info.lastUpdated ? new Date(info.lastUpdated).toLocaleString() : \"\"}\n );\n })}\n );\n }\n\n renderPasteModal() {\n if (!this.state.pasteFromClipboard) {\n return null;\n }\n const errors = this.refs.targetingParamsEval && this.refs.targetingParamsEval.innerText.length;\n return (\n \n \n \n \n \n \n \n \n );\n }\n\n renderTargetingParameters() {\n // There was no error and the result is truthy\n const success = this.state.evaluationStatus.success && !!this.state.evaluationStatus.result;\n const result = JSON.stringify(this.state.evaluationStatus.result, null, 2) || \"(Empty result)\";\n\n return (\n Evaluate JEXL expression\n \n \n \n Status: {success ? \"✅\" : \"❌\"}, Result: {result}\n \n \n Evaluate\n \n \n Modify targeting parameters\n \n \n \n {this.state.copiedToClipboard ? \"Parameters copied!\" : \"Copy parameters\"}\n \n \n Paste parameters\n \n \n \n {this.state.stringTargetingParameters && Object.keys(this.state.stringTargetingParameters).map((param, i) => {\n const value = this.state.stringTargetingParameters[param];\n const errorState = this.state.targetingParametersError && this.state.targetingParametersError.id === param;\n const className = errorState ? \"errorState\" : \"\";\n const inputComp = (value && value.length) > 30 ?\n :\n ;\n\n return (\n {param}\n {inputComp}\n );\n })}\n );\n }\n\n render() {\n return (\n AS Router Admin\n Targeting Utilities\n Expire Cache (This expires the cache in ASR Targeting for bookmarks and top sites)\n Message Providers Restore default prefs\n\n {this.state.providers ? this.renderProviders() : null}\n Messages\n {this.renderMessageFilter()}\n {this.renderMessages()}\n {this.renderPasteModal()}\n {this.renderTargetingParameters()}\n );\n }\n}\n","import {actionCreators as ac, actionTypes} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * ConfirmDialog component.\n * One primary action button, one cancel button.\n *\n * Content displayed is controlled by `data` prop the component receives.\n * Example:\n * data: {\n * // Any sort of data needed to be passed around by actions.\n * payload: site.url,\n * // Primary button AlsoToMain action.\n * action: \"DELETE_HISTORY_URL\",\n * // Primary button USerEvent action.\n * userEvent: \"DELETE\",\n * // Array of locale ids to display.\n * message_body: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n * // Text for primary button.\n * confirm_button_string_id: \"menu_action_delete\"\n * },\n */\nexport class _ConfirmDialog extends React.PureComponent {\n constructor(props) {\n super(props);\n this._handleCancelBtn = this._handleCancelBtn.bind(this);\n this._handleConfirmBtn = this._handleConfirmBtn.bind(this);\n }\n\n _handleCancelBtn() {\n this.props.dispatch({type: actionTypes.DIALOG_CANCEL});\n this.props.dispatch(ac.UserEvent({event: actionTypes.DIALOG_CANCEL, source: this.props.data.eventSource}));\n }\n\n _handleConfirmBtn() {\n this.props.data.onConfirm.forEach(this.props.dispatch);\n }\n\n _renderModalMessage() {\n const message_body = this.props.data.body_string_id;\n\n if (!message_body) {\n return null;\n }\n\n return (\n {message_body.map(msg => )}\n );\n }\n\n render() {\n if (!this.props.visible) {\n return null;\n }\n\n return (\n \n \n \n {this.props.data.icon && }\n {this._renderModalMessage()}\n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport const ConfirmDialog = connect(state => state.Dialog)(_ConfirmDialog);\n","module.exports = ReactRedux;","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class ErrorBoundaryFallback extends React.PureComponent {\n constructor(props) {\n super(props);\n this.windowObj = this.props.windowObj || window;\n this.onClick = this.onClick.bind(this);\n }\n\n /**\n * Since we only get here if part of the page has crashed, do a\n * forced reload to give us the best chance at recovering.\n */\n onClick() {\n this.windowObj.location.reload(true);\n }\n\n render() {\n const defaultClass = \"as-error-fallback\";\n let className;\n if (\"className\" in this.props) {\n className = `${this.props.className} ${defaultClass}`;\n } else {\n className = defaultClass;\n }\n\n // href=\"#\" to force normal link styling stuff (eg cursor on hover)\n return (\n \n \n \n \n \n \n \n \n \n \n );\n }\n}\nErrorBoundaryFallback.defaultProps = {className: \"as-error-fallback\"};\n\nexport class ErrorBoundary extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {hasError: false};\n }\n\n componentDidCatch(error, info) {\n this.setState({hasError: true});\n }\n\n render() {\n if (!this.state.hasError) {\n return (this.props.children);\n }\n\n return ;\n }\n}\n\nErrorBoundary.defaultProps = {FallbackComponent: ErrorBoundaryFallback};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * Manual migration component used to start the profile import wizard.\n * Message is presented temporarily and will go away if:\n * 1. User clicks \"No Thanks\"\n * 2. User completed the data import\n * 3. After 3 active days\n * 4. User clicks \"Cancel\" on the import wizard (currently not implemented).\n */\nexport class _ManualMigration extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onLaunchTour = this.onLaunchTour.bind(this);\n this.onCancelTour = this.onCancelTour.bind(this);\n }\n\n onLaunchTour() {\n this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_START}));\n this.props.dispatch(ac.UserEvent({event: at.MIGRATION_START}));\n }\n\n onCancelTour() {\n this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_CANCEL}));\n this.props.dispatch(ac.UserEvent({event: at.MIGRATION_CANCEL}));\n }\n\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport const ManualMigration = connect()(_ManualMigration);\n","class _PrerenderData {\n constructor(options) {\n this.initialPrefs = options.initialPrefs;\n this.initialSections = options.initialSections;\n this._setValidation(options.validation);\n }\n\n get validation() {\n return this._validation;\n }\n\n set validation(value) {\n this._setValidation(value);\n }\n\n get invalidatingPrefs() {\n return this._invalidatingPrefs;\n }\n\n // This is needed so we can use it in the constructor\n _setValidation(value = []) {\n this._validation = value;\n this._invalidatingPrefs = value.reduce((result, next) => {\n if (typeof next === \"string\") {\n result.push(next);\n return result;\n } else if (next && next.oneOf) {\n return result.concat(next.oneOf);\n } else if (next && next.indexedDB) {\n return result.concat(next.indexedDB);\n }\n throw new Error(\"Your validation configuration is not properly configured\");\n }, []);\n }\n\n arePrefsValid(getPref, indexedDBPrefs) {\n for (const prefs of this.validation) {\n // {oneOf: [\"foo\", \"bar\"]}\n if (prefs && prefs.oneOf && !prefs.oneOf.some(name => getPref(name) === this.initialPrefs[name])) {\n return false;\n\n // {indexedDB: [\"foo\", \"bar\"]}\n } else if (indexedDBPrefs && prefs && prefs.indexedDB) {\n const anyModifiedPrefs = prefs.indexedDB.some(prefName => indexedDBPrefs.some(pref => pref && pref[prefName]));\n if (anyModifiedPrefs) {\n return false;\n }\n // \"foo\"\n } else if (getPref(prefs) !== this.initialPrefs[prefs]) {\n return false;\n }\n }\n return true;\n }\n}\n\nthis.PrerenderData = new _PrerenderData({\n initialPrefs: {\n \"migrationExpired\": true,\n \"feeds.topsites\": true,\n \"showSearch\": true,\n \"topSitesRows\": 1,\n \"feeds.section.topstories\": true,\n \"feeds.section.highlights\": true,\n \"sectionOrder\": \"topsites,topstories,highlights\",\n \"collapsed\": false,\n },\n // Prefs listed as invalidating will prevent the prerendered version\n // of AS from being used if their value is something other than what is listed\n // here. This is required because some preferences cause the page layout to be\n // too different for the prerendered version to be used. Unfortunately, this\n // will result in users who have modified some of their preferences not being\n // able to get the benefits of prerendering.\n validation: [\n \"feeds.topsites\",\n \"showSearch\",\n \"topSitesRows\",\n \"sectionOrder\",\n // This means if either of these are set to their default values,\n // prerendering can be used.\n {oneOf: [\"feeds.section.topstories\", \"feeds.section.highlights\"]},\n // If any component has the following preference set to `true` it will\n // invalidate the prerendered version.\n {indexedDB: [\"collapsed\"]},\n ],\n initialSections: [\n {\n enabled: true,\n icon: \"pocket\",\n id: \"topstories\",\n order: 1,\n title: {id: \"header_recommended_by\", values: {provider: \"Pocket\"}},\n },\n {\n enabled: true,\n id: \"highlights\",\n icon: \"highlights\",\n order: 2,\n title: {id: \"header_highlights\"},\n },\n ],\n});\n\nthis._PrerenderData = _PrerenderData;\nconst EXPORTED_SYMBOLS = [\"PrerenderData\", \"_PrerenderData\"];\n","/* globals ContentSearchUIController */\n\"use strict\";\n\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {IS_NEWTAB} from \"content-src/lib/constants\";\nimport React from \"react\";\n\nexport class _Search extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.onInputMount = this.onInputMount.bind(this);\n }\n\n handleEvent(event) {\n // Also track search events with our own telemetry\n if (event.detail.type === \"Search\") {\n this.props.dispatch(ac.UserEvent({event: \"SEARCH\"}));\n }\n }\n\n onClick(event) {\n window.gContentSearchController.search(event);\n }\n\n componentWillUnmount() {\n delete window.gContentSearchController;\n }\n\n onInputMount(input) {\n if (input) {\n // The \"healthReportKey\" and needs to be \"newtab\" or \"abouthome\" so that\n // BrowserUsageTelemetry.jsm knows to handle events with this name, and\n // can add the appropriate telemetry probes for search. Without the correct\n // name, certain tests like browser_UsageTelemetry_content.js will fail\n // (See github ticket #2348 for more details)\n const healthReportKey = IS_NEWTAB ? \"newtab\" : \"abouthome\";\n\n // The \"searchSource\" needs to be \"newtab\" or \"homepage\" and is sent with\n // the search data and acts as context for the search request (See\n // nsISearchEngine.getSubmission). It is necessary so that search engine\n // plugins can correctly atribute referrals. (See github ticket #3321 for\n // more details)\n const searchSource = IS_NEWTAB ? \"newtab\" : \"homepage\";\n\n // gContentSearchController needs to exist as a global so that tests for\n // the existing about:home can find it; and so it allows these tests to pass.\n // In the future, when activity stream is default about:home, this can be renamed\n window.gContentSearchController = new ContentSearchUIController(input, input.parentNode,\n healthReportKey, searchSource);\n addEventListener(\"ContentSearchClient\", this);\n } else {\n window.gContentSearchController = null;\n removeEventListener(\"ContentSearchClient\", this);\n }\n }\n\n /*\n * Do not change the ID on the input field, as legacy newtab code\n * specifically looks for the id 'newtab-search-text' on input fields\n * in order to execute searches in various tests\n */\n render() {\n return (\n {this.props.showLogo &&\n \n \n \n \n }\n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport const Search = connect()(injectIntl(_Search));\n","export const IS_NEWTAB = global.document && global.document.documentURI === \"about:newtab\";\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {Card, PlaceholderCard} from \"content-src/components/Card/Card\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport {MoreRecommendations} from \"content-src/components/MoreRecommendations/MoreRecommendations\";\nimport {PocketLoggedInCta} from \"content-src/components/PocketLoggedInCta/PocketLoggedInCta\";\nimport React from \"react\";\nimport {Topics} from \"content-src/components/Topics/Topics\";\nimport {TopSites} from \"content-src/components/TopSites/TopSites\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\nconst CARDS_PER_ROW_DEFAULT = 3;\nconst CARDS_PER_ROW_COMPACT_WIDE = 4;\n\nfunction getFormattedMessage(message) {\n return typeof message === \"string\" ? {message} : ;\n}\n\nexport class Section extends React.PureComponent {\n get numRows() {\n const {rowsPref, maxRows, Prefs} = this.props;\n return rowsPref ? Prefs.values[rowsPref] : maxRows;\n }\n\n _dispatchImpressionStats() {\n const {props} = this;\n let cardsPerRow = CARDS_PER_ROW_DEFAULT;\n if (props.compactCards && global.matchMedia(`(min-width: 1072px)`).matches) {\n // If the section has compact cards and the viewport is wide enough, we show\n // 4 columns instead of 3.\n // $break-point-widest = 1072px (from _variables.scss)\n cardsPerRow = CARDS_PER_ROW_COMPACT_WIDE;\n }\n const maxCards = cardsPerRow * this.numRows;\n const cards = props.rows.slice(0, maxCards);\n\n if (this.needsImpressionStats(cards)) {\n props.dispatch(ac.ImpressionStats({\n source: props.eventSource,\n tiles: cards.map(link => ({id: link.guid})),\n }));\n this.impressionCardGuids = cards.map(link => link.guid);\n }\n }\n\n // This sends an event when a user sees a set of new content. If content\n // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n // only send the event if the page becomes visible again.\n sendImpressionStatsOrAddListener() {\n const {props} = this;\n\n if (!props.shouldSendImpressionStats || !props.dispatch) {\n return;\n }\n\n if (props.document.visibilityState === VISIBLE) {\n this._dispatchImpressionStats();\n } else {\n // We should only ever send the latest impression stats ping, so remove any\n // older listeners.\n if (this._onVisibilityChange) {\n props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n\n // When the page becomes visible, send the impression stats ping if the section isn't collapsed.\n this._onVisibilityChange = () => {\n if (props.document.visibilityState === VISIBLE) {\n if (!this.props.pref.collapsed) {\n this._dispatchImpressionStats();\n }\n props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n };\n props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n componentWillMount() {\n this.sendNewTabRehydrated(this.props.initialized);\n }\n\n componentDidMount() {\n if (this.props.rows.length && !this.props.pref.collapsed) {\n this.sendImpressionStatsOrAddListener();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {props} = this;\n const isCollapsed = props.pref.collapsed;\n const wasCollapsed = prevProps.pref.collapsed;\n if (\n // Don't send impression stats for the empty state\n props.rows.length &&\n (\n // We only want to send impression stats if the content of the cards has changed\n // and the section is not collapsed...\n (props.rows !== prevProps.rows && !isCollapsed) ||\n // or if we are expanding a section that was collapsed.\n (wasCollapsed && !isCollapsed)\n )\n ) {\n this.sendImpressionStatsOrAddListener();\n }\n }\n\n componentWillUpdate(nextProps) {\n this.sendNewTabRehydrated(nextProps.initialized);\n }\n\n componentWillUnmount() {\n if (this._onVisibilityChange) {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n needsImpressionStats(cards) {\n if (!this.impressionCardGuids || (this.impressionCardGuids.length !== cards.length)) {\n return true;\n }\n\n for (let i = 0; i < cards.length; i++) {\n if (cards[i].guid !== this.impressionCardGuids[i]) {\n return true;\n }\n }\n\n return false;\n }\n\n // The NEW_TAB_REHYDRATED event is used to inform feeds that their\n // data has been consumed e.g. for counting the number of tabs that\n // have rendered that data.\n sendNewTabRehydrated(initialized) {\n if (initialized && !this.renderNotified) {\n this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_REHYDRATED, data: {}}));\n this.renderNotified = true;\n }\n }\n\n render() {\n const {\n id, eventSource, title, icon, rows, Pocket, topics,\n emptyState, dispatch, compactCards, read_more_endpoint,\n contextMenuOptions, initialized, learnMore,\n pref, privacyNoticeURL, isFirst, isLast,\n } = this.props;\n\n const waitingForSpoc = id === \"topstories\" && this.props.Pocket.waitingForSpoc;\n const maxCardsPerRow = compactCards ? CARDS_PER_ROW_COMPACT_WIDE : CARDS_PER_ROW_DEFAULT;\n const {numRows} = this;\n const maxCards = maxCardsPerRow * numRows;\n const maxCardsOnNarrow = CARDS_PER_ROW_DEFAULT * numRows;\n\n const {pocketCta, isUserLoggedIn} = Pocket || {};\n const {useCta} = pocketCta || {};\n\n // Don't display anything until we have a definitve result from Pocket,\n // to avoid a flash of logged out state while we render.\n const isPocketLoggedInDefined = (isUserLoggedIn === true || isUserLoggedIn === false);\n\n const shouldShowPocketCta = (id === \"topstories\" &&\n useCta && isUserLoggedIn === false);\n\n // Show topics only for top stories and if it has loaded with topics.\n // The classs .top-stories-bottom-container ensures content doesn't shift as things load.\n const shouldShowTopics = (id === \"topstories\" &&\n (topics && topics.length > 0) &&\n ((useCta && isUserLoggedIn === true) || (!useCta && isPocketLoggedInDefined)));\n\n const realRows = rows.slice(0, maxCards);\n\n // The empty state should only be shown after we have initialized and there is no content.\n // Otherwise, we should show placeholders.\n const shouldShowEmptyState = initialized && !rows.length;\n\n const cards = [];\n if (!shouldShowEmptyState) {\n for (let i = 0; i < maxCards; i++) {\n const link = realRows[i];\n // On narrow viewports, we only show 3 cards per row. We'll mark the rest as\n // .hide-for-narrow to hide in CSS via @media query.\n const className = (i >= maxCardsOnNarrow) ? \"hide-for-narrow\" : \"\";\n let usePlaceholder = !link;\n // If we are in the third card and waiting for spoc,\n // use the placeholder.\n if (!usePlaceholder && i === 2 && waitingForSpoc) {\n usePlaceholder = true;\n }\n cards.push(!usePlaceholder ? (\n \n ) : (\n \n ));\n }\n }\n\n const sectionClassName = [\n \"section\",\n compactCards ? \"compact-cards\" : \"normal-cards\",\n ].join(\" \");\n\n // <-- React component\n // <-- HTML5 element\n return (\n \n\n {!shouldShowEmptyState && (\n {cards}\n )}\n {shouldShowEmptyState &&\n \n \n {emptyState.icon && emptyState.icon.startsWith(\"moz-extension://\") ?\n :\n }\n \n {getFormattedMessage(emptyState.message)}\n \n \n }\n {id === \"topstories\" &&\n \n \n {shouldShowTopics && }\n {shouldShowPocketCta && }\n \n \n {read_more_endpoint &&\n }\n \n }\n \n );\n }\n}\n\nSection.defaultProps = {\n document: global.document,\n rows: [],\n emptyState: {},\n pref: {},\n title: \"\",\n};\n\nexport const SectionIntl = connect(state => ({Prefs: state.Prefs, Pocket: state.Pocket}))(injectIntl(Section));\n\nexport class _Sections extends React.PureComponent {\n renderSections() {\n const sections = [];\n const enabledSections = this.props.Sections.filter(section => section.enabled);\n const {sectionOrder, \"feeds.topsites\": showTopSites} = this.props.Prefs.values;\n // Enabled sections doesn't include Top Sites, so we add it if enabled.\n const expectedCount = enabledSections.length + ~~showTopSites;\n\n for (const sectionId of sectionOrder.split(\",\")) {\n const commonProps = {\n key: sectionId,\n isFirst: sections.length === 0,\n isLast: sections.length === expectedCount - 1,\n };\n if (sectionId === \"topsites\" && showTopSites) {\n sections.push();\n } else {\n const section = enabledSections.find(s => s.id === sectionId);\n if (section) {\n sections.push();\n }\n }\n }\n return sections;\n }\n\n render() {\n return (\n \n {this.renderSections()}\n \n );\n }\n}\n\nexport const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs}))(_Sections);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\nconst _OpenInPrivateWindow = site => ({\n id: \"menu_action_open_private_window\",\n icon: \"new-window-private\",\n action: ac.OnlyToMain({\n type: at.OPEN_PRIVATE_WINDOW,\n data: {url: site.url, referrer: site.referrer},\n }),\n userEvent: \"OPEN_PRIVATE_WINDOW\",\n});\n\nexport const GetPlatformString = platform => {\n switch (platform) {\n case \"win\":\n return \"menu_action_show_file_windows\";\n case \"macosx\":\n return \"menu_action_show_file_mac_os\";\n case \"linux\":\n return \"menu_action_show_file_linux\";\n default:\n return \"menu_action_show_file_default\";\n }\n};\n\n/**\n * List of functions that return items that can be included as menu options in a\n * LinkMenu. All functions take the site as the first parameter, and optionally\n * the index of the site.\n */\nexport const LinkMenuOptions = {\n Separator: () => ({type: \"separator\"}),\n EmptyItem: () => ({type: \"empty\"}),\n RemoveBookmark: site => ({\n id: \"menu_action_remove_bookmark\",\n icon: \"bookmark-added\",\n action: ac.AlsoToMain({\n type: at.DELETE_BOOKMARK_BY_ID,\n data: site.bookmarkGuid,\n }),\n userEvent: \"BOOKMARK_DELETE\",\n }),\n AddBookmark: site => ({\n id: \"menu_action_bookmark\",\n icon: \"bookmark-hollow\",\n action: ac.AlsoToMain({\n type: at.BOOKMARK_URL,\n data: {url: site.url, title: site.title, type: site.type},\n }),\n userEvent: \"BOOKMARK_ADD\",\n }),\n OpenInNewWindow: site => ({\n id: \"menu_action_open_new_window\",\n icon: \"new-window\",\n action: ac.AlsoToMain({\n type: at.OPEN_NEW_WINDOW,\n data: {\n referrer: site.referrer,\n typedBonus: site.typedBonus,\n url: site.url,\n },\n }),\n userEvent: \"OPEN_NEW_WINDOW\",\n }),\n BlockUrl: (site, index, eventSource) => ({\n id: \"menu_action_dismiss\",\n icon: \"dismiss\",\n action: ac.AlsoToMain({\n type: at.BLOCK_URL,\n data: {url: site.open_url || site.url, pocket_id: site.pocket_id},\n }),\n impression: ac.ImpressionStats({\n source: eventSource,\n block: 0,\n tiles: [{id: site.guid, pos: index}],\n }),\n userEvent: \"BLOCK\",\n }),\n\n // This is an option for web extentions which will result in remove items from\n // memory and notify the web extenion, rather than using the built-in block list.\n WebExtDismiss: (site, index, eventSource) => ({\n id: \"menu_action_webext_dismiss\",\n string_id: \"menu_action_dismiss\",\n icon: \"dismiss\",\n action: ac.WebExtEvent(at.WEBEXT_DISMISS, {\n source: eventSource,\n url: site.url,\n action_position: index,\n }),\n }),\n DeleteUrl: (site, index, eventSource, isEnabled, siteInfo) => ({\n id: \"menu_action_delete\",\n icon: \"delete\",\n action: {\n type: at.DIALOG_OPEN,\n data: {\n onConfirm: [\n ac.AlsoToMain({type: at.DELETE_HISTORY_URL, data: {url: site.url, pocket_id: site.pocket_id, forceBlock: site.bookmarkGuid}}),\n ac.UserEvent(Object.assign({event: \"DELETE\", source: eventSource, action_position: index}, siteInfo)),\n ],\n eventSource,\n body_string_id: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n confirm_button_string_id: \"menu_action_delete\",\n cancel_button_string_id: \"topsites_form_cancel_button\",\n icon: \"modal-delete\",\n },\n },\n userEvent: \"DIALOG_OPEN\",\n }),\n ShowFile: (site, index, eventSource, isEnabled, siteInfo, platform) => ({\n id: GetPlatformString(platform),\n icon: \"search\",\n action: ac.OnlyToMain({\n type: at.SHOW_DOWNLOAD_FILE,\n data: {url: site.url},\n }),\n }),\n OpenFile: site => ({\n id: \"menu_action_open_file\",\n icon: \"open-file\",\n action: ac.OnlyToMain({\n type: at.OPEN_DOWNLOAD_FILE,\n data: {url: site.url},\n }),\n }),\n CopyDownloadLink: site => ({\n id: \"menu_action_copy_download_link\",\n icon: \"copy\",\n action: ac.OnlyToMain({\n type: at.COPY_DOWNLOAD_LINK,\n data: {url: site.url},\n }),\n }),\n GoToDownloadPage: site => ({\n id: \"menu_action_go_to_download_page\",\n icon: \"download\",\n action: ac.OnlyToMain({\n type: at.OPEN_LINK,\n data: {url: site.referrer},\n }),\n disabled: !site.referrer,\n }),\n RemoveDownload: site => ({\n id: \"menu_action_remove_download\",\n icon: \"delete\",\n action: ac.OnlyToMain({\n type: at.REMOVE_DOWNLOAD_FILE,\n data: {url: site.url},\n }),\n }),\n PinTopSite: ({url, searchTopSite, label}, index) => ({\n id: \"menu_action_pin\",\n icon: \"pin\",\n action: ac.AlsoToMain({\n type: at.TOP_SITES_PIN,\n data: {\n site: {\n url,\n ...(searchTopSite && {searchTopSite, label}),\n },\n index,\n },\n }),\n userEvent: \"PIN\",\n }),\n UnpinTopSite: site => ({\n id: \"menu_action_unpin\",\n icon: \"unpin\",\n action: ac.AlsoToMain({\n type: at.TOP_SITES_UNPIN,\n data: {site: {url: site.url}},\n }),\n userEvent: \"UNPIN\",\n }),\n SaveToPocket: (site, index, eventSource) => ({\n id: \"menu_action_save_to_pocket\",\n icon: \"pocket-save\",\n action: ac.AlsoToMain({\n type: at.SAVE_TO_POCKET,\n data: {site: {url: site.url, title: site.title}},\n }),\n impression: ac.ImpressionStats({\n source: eventSource,\n pocket: 0,\n tiles: [{id: site.guid, pos: index}],\n }),\n userEvent: \"SAVE_TO_POCKET\",\n }),\n DeleteFromPocket: site => ({\n id: \"menu_action_delete_pocket\",\n icon: \"delete\",\n action: ac.AlsoToMain({\n type: at.DELETE_FROM_POCKET,\n data: {pocket_id: site.pocket_id},\n }),\n userEvent: \"DELETE_FROM_POCKET\",\n }),\n ArchiveFromPocket: site => ({\n id: \"menu_action_archive_pocket\",\n icon: \"check\",\n action: ac.AlsoToMain({\n type: at.ARCHIVE_FROM_POCKET,\n data: {pocket_id: site.pocket_id},\n }),\n userEvent: \"ARCHIVE_FROM_POCKET\",\n }),\n EditTopSite: (site, index) => ({\n id: \"edit_topsites_button_text\",\n icon: \"edit\",\n action: {\n type: at.TOP_SITES_EDIT,\n data: {index},\n },\n }),\n CheckBookmark: site => (site.bookmarkGuid ? LinkMenuOptions.RemoveBookmark(site) : LinkMenuOptions.AddBookmark(site)),\n CheckPinTopSite: (site, index) => (site.isPinned ? LinkMenuOptions.UnpinTopSite(site) : LinkMenuOptions.PinTopSite(site, index)),\n CheckSavedToPocket: (site, index) => (site.pocket_id ? LinkMenuOptions.DeleteFromPocket(site) : LinkMenuOptions.SaveToPocket(site, index)),\n CheckBookmarkOrArchive: site => (site.pocket_id ? LinkMenuOptions.ArchiveFromPocket(site) : LinkMenuOptions.CheckBookmark(site)),\n OpenInPrivateWindow: (site, index, eventSource, isEnabled) => (isEnabled ? _OpenInPrivateWindow(site) : LinkMenuOptions.EmptyItem()),\n};\n","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {ContextMenu} from \"content-src/components/ContextMenu/ContextMenu\";\nimport {injectIntl} from \"react-intl\";\nimport {LinkMenuOptions} from \"content-src/lib/link-menu-options\";\nimport React from \"react\";\n\nconst DEFAULT_SITE_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\", \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\"];\n\nexport class _LinkMenu extends React.PureComponent {\n getOptions() {\n const {props} = this;\n const {site, index, source, isPrivateBrowsingEnabled, siteInfo, platform} = props;\n\n // Handle special case of default site\n const propOptions = (!site.isDefault || site.searchTopSite) ? props.options : DEFAULT_SITE_MENU_OPTIONS;\n\n const options = propOptions.map(o => LinkMenuOptions[o](site, index, source, isPrivateBrowsingEnabled, siteInfo, platform)).map(option => {\n const {action, impression, id, string_id, type, userEvent} = option;\n if (!type && id) {\n option.label = props.intl.formatMessage({id: string_id || id});\n option.onClick = () => {\n props.dispatch(action);\n if (userEvent) {\n const userEventData = Object.assign({\n event: userEvent,\n source,\n action_position: index,\n }, siteInfo);\n props.dispatch(ac.UserEvent(userEventData));\n }\n if (impression && props.shouldSendImpressionStats) {\n props.dispatch(impression);\n }\n };\n }\n return option;\n });\n\n // This is for accessibility to support making each item tabbable.\n // We want to know which item is the first and which item\n // is the last, so we can close the context menu accordingly.\n options[0].first = true;\n options[options.length - 1].last = true;\n return options;\n }\n\n render() {\n return ();\n }\n}\n\nconst getState = state => ({isPrivateBrowsingEnabled: state.Prefs.values.isPrivateBrowsingEnabled, platform: state.Prefs.values.platform});\nexport const LinkMenu = connect(getState)(injectIntl(_LinkMenu));\n","import React from \"react\";\n\nexport class ContextMenu extends React.PureComponent {\n constructor(props) {\n super(props);\n this.hideContext = this.hideContext.bind(this);\n this.onClick = this.onClick.bind(this);\n }\n\n hideContext() {\n this.props.onUpdate(false);\n }\n\n componentDidMount() {\n setTimeout(() => {\n global.addEventListener(\"click\", this.hideContext);\n }, 0);\n }\n\n componentWillUnmount() {\n global.removeEventListener(\"click\", this.hideContext);\n }\n\n onClick(event) {\n // Eat all clicks on the context menu so they don't bubble up to window.\n // This prevents the context menu from closing when clicking disabled items\n // or the separators.\n event.stopPropagation();\n }\n\n render() {\n return (\n \n {this.props.options.map((option, i) => (option.type === \"separator\" ?\n () :\n (option.type !== \"empty\" && )\n ))}\n \n );\n }\n}\n\nexport class ContextMenuItem extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n }\n\n onClick() {\n this.props.hideContext();\n this.props.option.onClick();\n }\n\n onKeyDown(event) {\n const {option} = this.props;\n switch (event.key) {\n case \"Tab\":\n // tab goes down in context menu, shift + tab goes up in context menu\n // if we're on the last item, one more tab will close the context menu\n // similarly, if we're on the first item, one more shift + tab will close it\n if ((event.shiftKey && option.first) || (!event.shiftKey && option.last)) {\n this.props.hideContext();\n }\n break;\n case \"Enter\":\n this.props.hideContext();\n option.onClick();\n break;\n }\n }\n\n render() {\n const {option} = this.props;\n return (\n \n \n {option.icon && }\n {option.label}\n \n );\n }\n}\n","/**\n * List of helper functions for screenshot-based images.\n *\n * There are two kinds of images:\n * 1. Remote Image: This is the image from the main process and it refers to\n * the image in the React props. This can either be an object with the `data`\n * and `path` properties, if it is a blob, or a string, if it is a normal image.\n * 2. Local Image: This is the image object in the content process and it refers\n * to the image *object* in the React component's state. All local image\n * objects have the `url` property, and an additional property `path`, if they\n * are blobs.\n */\nexport const ScreenshotUtils = {\n isBlob(isLocal, image) {\n return !!(image && image.path && ((!isLocal && image.data) || (isLocal && image.url)));\n },\n\n // This should always be called with a remote image and not a local image.\n createLocalImageObject(remoteImage) {\n if (!remoteImage) {\n return null;\n }\n if (this.isBlob(false, remoteImage)) {\n return {url: global.URL.createObjectURL(remoteImage.data), path: remoteImage.path};\n }\n return {url: remoteImage};\n },\n\n // Revokes the object URL of the image if the local image is a blob.\n // This should always be called with a local image and not a remote image.\n maybeRevokeBlobObjectURL(localImage) {\n if (this.isBlob(true, localImage)) {\n global.URL.revokeObjectURL(localImage.url);\n }\n },\n\n // Checks if remoteImage and localImage are the same.\n isRemoteImageLocal(localImage, remoteImage) {\n // Both remoteImage and localImage are present.\n if (remoteImage && localImage) {\n return this.isBlob(false, remoteImage) ?\n localImage.path === remoteImage.path :\n localImage.url === remoteImage;\n }\n\n // This will only handle the remaining three possible outcomes.\n // (i.e. everything except when both image and localImage are present)\n return !remoteImage && !localImage;\n },\n};\n","import {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport React from \"react\";\nimport {SectionMenu} from \"content-src/components/SectionMenu/SectionMenu\";\nimport {SectionMenuOptions} from \"content-src/lib/section-menu-options\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\nfunction getFormattedMessage(message) {\n return typeof message === \"string\" ? {message} : ;\n}\n\nexport class _CollapsibleSection extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onBodyMount = this.onBodyMount.bind(this);\n this.onHeaderClick = this.onHeaderClick.bind(this);\n this.onTransitionEnd = this.onTransitionEnd.bind(this);\n this.enableOrDisableAnimation = this.enableOrDisableAnimation.bind(this);\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuButtonMouseEnter = this.onMenuButtonMouseEnter.bind(this);\n this.onMenuButtonMouseLeave = this.onMenuButtonMouseLeave.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n this.state = {enableAnimation: true, isAnimating: false, menuButtonHover: false, showContextMenu: false};\n }\n\n componentWillMount() {\n this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n }\n\n componentWillUpdate(nextProps) {\n // Check if we're about to go from expanded to collapsed\n if (!this.props.collapsed && nextProps.collapsed) {\n // This next line forces a layout flush of the section body, which has a\n // max-height style set, so that the upcoming collapse animation can\n // animate from that height to the collapsed height. Without this, the\n // update is coalesced and there's no animation from no-max-height to 0.\n this.sectionBody.scrollHeight; // eslint-disable-line no-unused-expressions\n }\n }\n\n componentWillUnmount() {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n }\n\n enableOrDisableAnimation() {\n // Only animate the collapse/expand for visible tabs.\n const visible = this.props.document.visibilityState === VISIBLE;\n if (this.state.enableAnimation !== visible) {\n this.setState({enableAnimation: visible});\n }\n }\n\n onBodyMount(node) {\n this.sectionBody = node;\n }\n\n onHeaderClick() {\n // If this.sectionBody is unset, it means that we're in some sort of error\n // state, probably displaying the error fallback, so we won't be able to\n // compute the height, and we don't want to persist the preference.\n // If props.collapsed is undefined handler shouldn't do anything.\n if (!this.sectionBody || this.props.collapsed === undefined) {\n return;\n }\n\n // Get the current height of the body so max-height transitions can work\n this.setState({\n isAnimating: true,\n maxHeight: `${this._getSectionBodyHeight()}px`,\n });\n const {action, userEvent} = SectionMenuOptions.CheckCollapsed(this.props);\n this.props.dispatch(action);\n this.props.dispatch(ac.UserEvent({\n event: userEvent,\n source: this.props.source,\n }));\n }\n\n _getSectionBodyHeight() {\n const div = this.sectionBody;\n if (div.style.display === \"none\") {\n // If the div isn't displayed, we can't get it's height. So we display it\n // to get the height (it doesn't show up because max-height is set to 0px\n // in CSS). We don't undo this because we are about to expand the section.\n div.style.display = \"block\";\n }\n return div.scrollHeight;\n }\n\n onTransitionEnd(event) {\n // Only update the animating state for our own transition (not a child's)\n if (event.target === event.currentTarget) {\n this.setState({isAnimating: false});\n }\n }\n\n renderIcon() {\n const {icon} = this.props;\n if (icon && icon.startsWith(\"moz-extension://\")) {\n return ;\n }\n return ;\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.setState({showContextMenu: true});\n }\n\n onMenuButtonMouseEnter() {\n this.setState({menuButtonHover: true});\n }\n\n onMenuButtonMouseLeave() {\n this.setState({menuButtonHover: false});\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n render() {\n const isCollapsible = this.props.collapsed !== undefined;\n const {enableAnimation, isAnimating, maxHeight, menuButtonHover, showContextMenu} = this.state;\n const {id, eventSource, collapsed, learnMore, title, extraMenuOptions, showPrefName, privacyNoticeURL, dispatch, isFirst, isLast, isWebExtension} = this.props;\n const active = menuButtonHover || showContextMenu;\n let bodyStyle;\n if (isAnimating && !collapsed) {\n bodyStyle = {maxHeight};\n } else if (!isAnimating && collapsed) {\n bodyStyle = {display: \"none\"};\n }\n return (\n \n \n \n \n \n {this.renderIcon()}\n {getFormattedMessage(title)}\n \n \n {isCollapsible && }\n \n \n {learnMore &&\n \n \n \n \n \n }\n \n \n \n \n \n \n \n \n \n {showContextMenu &&\n \n }\n \n \n \n \n {this.props.children}\n \n \n \n );\n }\n}\n\n_CollapsibleSection.defaultProps = {\n document: global.document || {\n addEventListener: () => {},\n removeEventListener: () => {},\n visibilityState: \"hidden\",\n },\n Prefs: {values: {}},\n};\n\nexport const CollapsibleSection = injectIntl(_CollapsibleSection);\n","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {ContextMenu} from \"content-src/components/ContextMenu/ContextMenu\";\nimport {injectIntl} from \"react-intl\";\nimport React from \"react\";\nimport {SectionMenuOptions} from \"content-src/lib/section-menu-options\";\n\nconst DEFAULT_SECTION_MENU_OPTIONS = [\"MoveUp\", \"MoveDown\", \"Separator\", \"RemoveSection\", \"CheckCollapsed\", \"Separator\", \"ManageSection\"];\nconst WEBEXT_SECTION_MENU_OPTIONS = [\"MoveUp\", \"MoveDown\", \"Separator\", \"CheckCollapsed\", \"Separator\", \"ManageWebExtension\"];\n\nexport class _SectionMenu extends React.PureComponent {\n getOptions() {\n const {props} = this;\n\n const propOptions = props.isWebExtension ? [...WEBEXT_SECTION_MENU_OPTIONS] : [...DEFAULT_SECTION_MENU_OPTIONS];\n // Prepend custom options and a separator\n if (props.extraOptions) {\n propOptions.splice(0, 0, ...props.extraOptions, \"Separator\");\n }\n // Insert privacy notice before the last option (\"ManageSection\")\n if (props.privacyNoticeURL) {\n propOptions.splice(-1, 0, \"PrivacyNotice\");\n }\n\n const options = propOptions.map(o => SectionMenuOptions[o](props)).map(option => {\n const {action, id, type, userEvent} = option;\n if (!type && id) {\n option.label = props.intl.formatMessage({id});\n option.onClick = () => {\n props.dispatch(action);\n if (userEvent) {\n props.dispatch(ac.UserEvent({\n event: userEvent,\n source: props.source,\n }));\n }\n };\n }\n return option;\n });\n\n // This is for accessibility to support making each item tabbable.\n // We want to know which item is the first and which item\n // is the last, so we can close the context menu accordingly.\n options[0].first = true;\n options[options.length - 1].last = true;\n return options;\n }\n\n render() {\n return ();\n }\n}\n\nexport const SectionMenu = injectIntl(_SectionMenu);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * List of functions that return items that can be included as menu options in a\n * SectionMenu. All functions take the section as the only parameter.\n */\nexport const SectionMenuOptions = {\n Separator: () => ({type: \"separator\"}),\n MoveUp: section => ({\n id: \"section_menu_action_move_up\",\n icon: \"arrowhead-up\",\n action: ac.OnlyToMain({\n type: at.SECTION_MOVE,\n data: {id: section.id, direction: -1},\n }),\n userEvent: \"MENU_MOVE_UP\",\n disabled: !!section.isFirst,\n }),\n MoveDown: section => ({\n id: \"section_menu_action_move_down\",\n icon: \"arrowhead-down\",\n action: ac.OnlyToMain({\n type: at.SECTION_MOVE,\n data: {id: section.id, direction: +1},\n }),\n userEvent: \"MENU_MOVE_DOWN\",\n disabled: !!section.isLast,\n }),\n RemoveSection: section => ({\n id: \"section_menu_action_remove_section\",\n icon: \"dismiss\",\n action: ac.SetPref(section.showPrefName, false),\n userEvent: \"MENU_REMOVE\",\n }),\n CollapseSection: section => ({\n id: \"section_menu_action_collapse_section\",\n icon: \"minimize\",\n action: ac.OnlyToMain({type: at.UPDATE_SECTION_PREFS, data: {id: section.id, value: {collapsed: true}}}),\n userEvent: \"MENU_COLLAPSE\",\n }),\n ExpandSection: section => ({\n id: \"section_menu_action_expand_section\",\n icon: \"maximize\",\n action: ac.OnlyToMain({type: at.UPDATE_SECTION_PREFS, data: {id: section.id, value: {collapsed: false}}}),\n userEvent: \"MENU_EXPAND\",\n }),\n ManageSection: section => ({\n id: \"section_menu_action_manage_section\",\n icon: \"settings\",\n action: ac.OnlyToMain({type: at.SETTINGS_OPEN}),\n userEvent: \"MENU_MANAGE\",\n }),\n ManageWebExtension: section => ({\n id: \"section_menu_action_manage_webext\",\n icon: \"settings\",\n action: ac.OnlyToMain({type: at.OPEN_WEBEXT_SETTINGS, data: section.id}),\n }),\n AddTopSite: section => ({\n id: \"section_menu_action_add_topsite\",\n icon: \"add\",\n action: {type: at.TOP_SITES_EDIT, data: {index: -1}},\n userEvent: \"MENU_ADD_TOPSITE\",\n }),\n AddSearchShortcut: section => ({\n id: \"section_menu_action_add_search_engine\",\n icon: \"search\",\n action: {type: at.TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL},\n userEvent: \"MENU_ADD_SEARCH\",\n }),\n PrivacyNotice: section => ({\n id: \"section_menu_action_privacy_notice\",\n icon: \"info\",\n action: ac.OnlyToMain({\n type: at.OPEN_LINK,\n data: {url: section.privacyNoticeURL},\n }),\n userEvent: \"MENU_PRIVACY_NOTICE\",\n }),\n CheckCollapsed: section => (section.collapsed ? SectionMenuOptions.ExpandSection(section) : SectionMenuOptions.CollapseSection(section)),\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\nimport React from \"react\";\n\n// Currently record only a fixed set of sections. This will prevent data\n// from custom sections from showing up or from topstories.\nconst RECORDED_SECTIONS = [\"highlights\", \"topsites\"];\n\nexport class ComponentPerfTimer extends React.Component {\n constructor(props) {\n super(props);\n // Just for test dependency injection:\n this.perfSvc = this.props.perfSvc || perfSvc;\n\n this._sendBadStateEvent = this._sendBadStateEvent.bind(this);\n this._sendPaintedEvent = this._sendPaintedEvent.bind(this);\n this._reportMissingData = false;\n this._timestampHandled = false;\n this._recordedFirstRender = false;\n }\n\n componentDidMount() {\n if (!RECORDED_SECTIONS.includes(this.props.id)) {\n return;\n }\n\n this._maybeSendPaintedEvent();\n }\n\n componentDidUpdate() {\n if (!RECORDED_SECTIONS.includes(this.props.id)) {\n return;\n }\n\n this._maybeSendPaintedEvent();\n }\n\n /**\n * Call the given callback after the upcoming frame paints.\n *\n * @note Both setTimeout and requestAnimationFrame are throttled when the page\n * is hidden, so this callback may get called up to a second or so after the\n * requestAnimationFrame \"paint\" for hidden tabs.\n *\n * Newtabs hidden while loading will presumably be fairly rare (other than\n * preloaded tabs, which we will be filtering out on the server side), so such\n * cases should get lost in the noise.\n *\n * If we decide that it's important to find out when something that's hidden\n * has \"painted\", however, another option is to post a message to this window.\n * That should happen even faster than setTimeout, and, at least as of this\n * writing, it's not throttled in hidden windows in Firefox.\n *\n * @param {Function} callback\n *\n * @returns void\n */\n _afterFramePaint(callback) {\n requestAnimationFrame(() => setTimeout(callback, 0));\n }\n\n _maybeSendBadStateEvent() {\n // Follow up bugs:\n // https://github.com/mozilla/activity-stream/issues/3691\n if (!this.props.initialized) {\n // Remember to report back when data is available.\n this._reportMissingData = true;\n } else if (this._reportMissingData) {\n this._reportMissingData = false;\n // Report how long it took for component to become initialized.\n this._sendBadStateEvent();\n }\n }\n\n _maybeSendPaintedEvent() {\n // If we've already handled a timestamp, don't do it again.\n if (this._timestampHandled || !this.props.initialized) {\n return;\n }\n\n // And if we haven't, we're doing so now, so remember that. Even if\n // something goes wrong in the callback, we can't try again, as we'd be\n // sending back the wrong data, and we have to do it here, so that other\n // calls to this method while waiting for the next frame won't also try to\n // handle it.\n this._timestampHandled = true;\n this._afterFramePaint(this._sendPaintedEvent);\n }\n\n /**\n * Triggered by call to render. Only first call goes through due to\n * `_recordedFirstRender`.\n */\n _ensureFirstRenderTsRecorded() {\n // Used as t0 for recording how long component took to initialize.\n if (!this._recordedFirstRender) {\n this._recordedFirstRender = true;\n // topsites_first_render_ts, highlights_first_render_ts.\n const key = `${this.props.id}_first_render_ts`;\n this.perfSvc.mark(key);\n }\n }\n\n /**\n * Creates `TELEMETRY_UNDESIRED_EVENT` with timestamp in ms\n * of how much longer the data took to be ready for display than it would\n * have been the ideal case.\n * https://github.com/mozilla/ping-centre/issues/98\n */\n _sendBadStateEvent() {\n // highlights_data_ready_ts, topsites_data_ready_ts.\n const dataReadyKey = `${this.props.id}_data_ready_ts`;\n this.perfSvc.mark(dataReadyKey);\n\n try {\n const firstRenderKey = `${this.props.id}_first_render_ts`;\n // value has to be Int32.\n const value = parseInt(this.perfSvc.getMostRecentAbsMarkStartByName(dataReadyKey) -\n this.perfSvc.getMostRecentAbsMarkStartByName(firstRenderKey), 10);\n this.props.dispatch(ac.OnlyToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n // highlights_data_late_by_ms, topsites_data_late_by_ms.\n data: {[`${this.props.id}_data_late_by_ms`]: value},\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true.\n }\n }\n\n _sendPaintedEvent() {\n // Record first_painted event but only send if topsites.\n if (this.props.id !== \"topsites\") {\n return;\n }\n\n // topsites_first_painted_ts.\n const key = `${this.props.id}_first_painted_ts`;\n this.perfSvc.mark(key);\n\n try {\n const data = {};\n data[key] = this.perfSvc.getMostRecentAbsMarkStartByName(key);\n\n this.props.dispatch(ac.OnlyToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data,\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true. We should at least not blow up, and should continue\n // to set this._timestampHandled to avoid going through this again.\n }\n }\n\n render() {\n if (RECORDED_SECTIONS.includes(this.props.id)) {\n this._ensureFirstRenderTsRecorded();\n this._maybeSendBadStateEvent();\n }\n return this.props.children;\n }\n}\n","/* globals Services */\n\"use strict\";\n\n/* istanbul ignore if */\nif (typeof ChromeUtils !== \"undefined\") {\n ChromeUtils.import(\"resource://gre/modules/Services.jsm\");\n}\n\nlet usablePerfObj;\n\n/* istanbul ignore if */\n/* istanbul ignore else */\nif (typeof Services !== \"undefined\") {\n // Borrow the high-resolution timer from the hidden window....\n usablePerfObj = Services.appShell.hiddenDOMWindow.performance;\n} else if (typeof performance !== \"undefined\") {\n // we must be running in content space\n // eslint-disable-next-line no-undef\n usablePerfObj = performance;\n} else {\n // This is a dummy object so this file doesn't crash in the node prerendering\n // task.\n usablePerfObj = {\n now() {},\n mark() {},\n };\n}\n\nfunction _PerfService(options) {\n // For testing, so that we can use a fake Window.performance object with\n // known state.\n if (options && options.performanceObj) {\n this._perf = options.performanceObj;\n } else {\n this._perf = usablePerfObj;\n }\n}\n\n_PerfService.prototype = {\n /**\n * Calls the underlying mark() method on the appropriate Window.performance\n * object to add a mark with the given name to the appropriate performance\n * timeline.\n *\n * @param {String} name the name to give the current mark\n * @return {void}\n */\n mark: function mark(str) {\n this._perf.mark(str);\n },\n\n /**\n * Calls the underlying getEntriesByName on the appropriate Window.performance\n * object.\n *\n * @param {String} name\n * @param {String} type eg \"mark\"\n * @return {Array} Performance* objects\n */\n getEntriesByName: function getEntriesByName(name, type) {\n return this._perf.getEntriesByName(name, type);\n },\n\n /**\n * The timeOrigin property from the appropriate performance object.\n * Used to ensure that timestamps from the add-on code and the content code\n * are comparable.\n *\n * @note If this is called from a context without a window\n * (eg a JSM in chrome), it will return the timeOrigin of the XUL hidden\n * window, which appears to be the first created window (and thus\n * timeOrigin) in the browser. Note also, however, there is also a private\n * hidden window, presumably for private browsing, which appears to be\n * created dynamically later. Exactly how/when that shows up needs to be\n * investigated.\n *\n * @return {Number} A double of milliseconds with a precision of 0.5us.\n */\n get timeOrigin() {\n return this._perf.timeOrigin;\n },\n\n /**\n * Returns the \"absolute\" version of performance.now(), i.e. one that\n * should ([bug 1401406](https://bugzilla.mozilla.org/show_bug.cgi?id=1401406)\n * be comparable across both chrome and content.\n *\n * @return {Number}\n */\n absNow: function absNow() {\n return this.timeOrigin + this._perf.now();\n },\n\n /**\n * This returns the absolute startTime from the most recent performance.mark()\n * with the given name.\n *\n * @param {String} name the name to lookup the start time for\n *\n * @return {Number} the returned start time, as a DOMHighResTimeStamp\n *\n * @throws {Error} \"No Marks with the name ...\" if none are available\n *\n * @note Always surround calls to this by try/catch. Otherwise your code\n * may fail when the `privacy.resistFingerprinting` pref is true. When\n * this pref is set, all attempts to get marks will likely fail, which will\n * cause this method to throw.\n *\n * See [bug 1369303](https://bugzilla.mozilla.org/show_bug.cgi?id=1369303)\n * for more info.\n */\n getMostRecentAbsMarkStartByName(name) {\n let entries = this.getEntriesByName(name, \"mark\");\n\n if (!entries.length) {\n throw new Error(`No marks with the name ${name}`);\n }\n\n let mostRecentEntry = entries[entries.length - 1];\n return this._perf.timeOrigin + mostRecentEntry.startTime;\n },\n};\n\nthis.perfService = new _PerfService();\nconst EXPORTED_SYMBOLS = [\"_PerfService\", \"perfService\"];\n","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class MoreRecommendations extends React.PureComponent {\n render() {\n const {read_more_endpoint} = this.props;\n if (read_more_endpoint) {\n return (\n \n \n \n );\n }\n return null;\n }\n}\n","import {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class _PocketLoggedInCta extends React.PureComponent {\n render() {\n const {pocketCta} = this.props.Pocket;\n return (\n \n \n {pocketCta.ctaButton ? pocketCta.ctaButton : }\n \n\n \n \n {pocketCta.ctaText ? pocketCta.ctaText : }\n \n \n \n );\n }\n}\n\nexport const PocketLoggedInCta = connect(state => ({Pocket: state.Pocket}))(_PocketLoggedInCta);\n","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class Topic extends React.PureComponent {\n render() {\n const {url, name} = this.props;\n return ({name});\n }\n}\n\nexport class Topics extends React.PureComponent {\n render() {\n const {topics} = this.props;\n return (\n \n \n {topics && topics.map(t => )}\n \n );\n }\n}\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {MIN_CORNER_FAVICON_SIZE, MIN_RICH_FAVICON_SIZE, TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport {injectIntl} from \"react-intl\";\nimport React from \"react\";\nimport {SearchShortcutsForm} from \"./SearchShortcutsForm\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\nimport {TopSiteForm} from \"./TopSiteForm\";\nimport {TopSiteList} from \"./TopSite\";\n\nfunction topSiteIconType(link) {\n if (link.customScreenshotURL) {\n return \"custom_screenshot\";\n }\n if (link.tippyTopIcon || link.faviconRef === \"tippytop\") {\n return \"tippytop\";\n }\n if (link.faviconSize >= MIN_RICH_FAVICON_SIZE) {\n return \"rich_icon\";\n }\n if (link.screenshot && link.faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n return \"screenshot_with_icon\";\n }\n if (link.screenshot) {\n return \"screenshot\";\n }\n return \"no_image\";\n}\n\n/**\n * Iterates through TopSites and counts types of images.\n * @param acc Accumulator for reducer.\n * @param topsite Entry in TopSites.\n */\nfunction countTopSitesIconsTypes(topSites) {\n const countTopSitesTypes = (acc, link) => {\n acc[topSiteIconType(link)]++;\n return acc;\n };\n\n return topSites.reduce(countTopSitesTypes, {\n \"custom_screenshot\": 0,\n \"screenshot_with_icon\": 0,\n \"screenshot\": 0,\n \"tippytop\": 0,\n \"rich_icon\": 0,\n \"no_image\": 0,\n });\n}\n\nexport class _TopSites extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onEditFormClose = this.onEditFormClose.bind(this);\n this.onSearchShortcutsFormClose = this.onSearchShortcutsFormClose.bind(this);\n }\n\n /**\n * Dispatch session statistics about the quality of TopSites icons and pinned count.\n */\n _dispatchTopSitesStats() {\n const topSites = this._getVisibleTopSites();\n const topSitesIconsStats = countTopSitesIconsTypes(topSites);\n const topSitesPinned = topSites.filter(site => !!site.isPinned).length;\n const searchShortcuts = topSites.filter(site => !!site.searchTopSite).length;\n // Dispatch telemetry event with the count of TopSites images types.\n this.props.dispatch(ac.AlsoToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data: {\n topsites_icon_stats: topSitesIconsStats,\n topsites_pinned: topSitesPinned,\n topsites_search_shortcuts: searchShortcuts,\n },\n }));\n }\n\n /**\n * Return the TopSites that are visible based on prefs and window width.\n */\n _getVisibleTopSites() {\n // We hide 2 sites per row when not in the wide layout.\n let sitesPerRow = TOP_SITES_MAX_SITES_PER_ROW;\n // $break-point-widest = 1072px (from _variables.scss)\n if (!global.matchMedia(`(min-width: 1072px)`).matches) {\n sitesPerRow -= 2;\n }\n return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * sitesPerRow);\n }\n\n componentDidUpdate() {\n this._dispatchTopSitesStats();\n }\n\n componentDidMount() {\n this._dispatchTopSitesStats();\n }\n\n onEditFormClose() {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_EDIT_CLOSE\",\n }));\n this.props.dispatch({type: at.TOP_SITES_CANCEL_EDIT});\n }\n\n onSearchShortcutsFormClose() {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"SEARCH_EDIT_CLOSE\",\n }));\n this.props.dispatch({type: at.TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL});\n }\n\n render() {\n const {props} = this;\n const {editForm, showSearchShortcutsForm} = props.TopSites;\n const extraMenuOptions = [\"AddTopSite\"];\n if (props.Prefs.values[\"improvesearch.topSiteSearchShortcuts\"]) {\n extraMenuOptions.push(\"AddSearchShortcut\");\n }\n\n return (\n \n \n \n {editForm &&\n \n \n \n \n \n \n }\n {showSearchShortcutsForm &&\n \n \n \n \n \n \n }\n \n \n );\n }\n}\n\nexport const TopSites = connect(state => ({\n TopSites: state.TopSites,\n Prefs: state.Prefs,\n TopSitesRows: state.Prefs.values.topSitesRows,\n}))(injectIntl(_TopSites));\n","export const TOP_SITES_SOURCE = \"TOP_SITES\";\nexport const TOP_SITES_CONTEXT_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\",\n \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\", \"DeleteUrl\"];\n// the special top site for search shortcut experiment can only have the option to unpin (which removes) the topsite\nexport const TOP_SITES_SEARCH_SHORTCUTS_CONTEXT_MENU_OPTIONS = [\"CheckPinTopSite\", \"Separator\", \"BlockUrl\"];\n// minimum size necessary to show a rich icon instead of a screenshot\nexport const MIN_RICH_FAVICON_SIZE = 96;\n// minimum size necessary to show any icon in the top left corner with a screenshot\nexport const MIN_CORNER_FAVICON_SIZE = 16;\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_SOURCE} from \"./TopSitesConstants\";\n\nclass SelectableSearchShortcut extends React.PureComponent {\n render() {\n const {shortcut, selected} = this.props;\n const imageStyle = {backgroundImage: `url(\"${shortcut.tippyTopIcon}\")`};\n return (\n \n \n \n \n \n \n \n \n \n \n {shortcut.keyword}\n \n \n \n \n \n );\n }\n}\n\nexport class SearchShortcutsForm extends React.PureComponent {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n this.onSaveButtonClick = this.onSaveButtonClick.bind(this);\n\n // clone the shortcuts and add them to the state so we can add isSelected property\n const shortcuts = [];\n const {rows, searchShortcuts} = props.TopSites;\n searchShortcuts.forEach(shortcut => {\n shortcuts.push({\n ...shortcut,\n isSelected: !!rows.find(row => row && row.isPinned && row.searchTopSite && row.label === shortcut.keyword),\n });\n });\n this.state = {shortcuts};\n }\n\n handleChange(event) {\n const {target} = event;\n const {name, checked} = target;\n this.setState(prevState => {\n const shortcuts = prevState.shortcuts.slice();\n let shortcut = shortcuts.find(({keyword}) => keyword === name);\n shortcut.isSelected = checked;\n return {shortcuts};\n });\n }\n\n onCancelButtonClick(ev) {\n ev.preventDefault();\n this.props.onClose();\n }\n\n onSaveButtonClick(ev) {\n ev.preventDefault();\n\n // Check if there were any changes and act accordingly\n const {rows} = this.props.TopSites;\n const pinQueue = [];\n const unpinQueue = [];\n this.state.shortcuts.forEach(shortcut => {\n const alreadyPinned = rows.find(row => row && row.isPinned && row.searchTopSite && row.label === shortcut.keyword);\n if (shortcut.isSelected && !alreadyPinned) {\n pinQueue.push(this._searchTopSite(shortcut));\n } else if (!shortcut.isSelected && alreadyPinned) {\n unpinQueue.push({url: alreadyPinned.url, searchVendor: shortcut.shortURL});\n }\n });\n\n // Tell the feed to do the work.\n this.props.dispatch(ac.OnlyToMain({\n type: at.UPDATE_PINNED_SEARCH_SHORTCUTS,\n data: {\n addedShortcuts: pinQueue,\n deletedShortcuts: unpinQueue,\n },\n }));\n\n // Send the Telemetry pings.\n pinQueue.forEach(shortcut => {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"SEARCH_EDIT_ADD\",\n value: {search_vendor: shortcut.searchVendor},\n }));\n });\n unpinQueue.forEach(shortcut => {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"SEARCH_EDIT_DELETE\",\n value: {search_vendor: shortcut.searchVendor},\n }));\n });\n\n this.props.onClose();\n }\n\n _searchTopSite(shortcut) {\n return {\n url: shortcut.url,\n searchTopSite: true,\n label: shortcut.keyword,\n searchVendor: shortcut.shortURL,\n };\n }\n\n render() {\n return (\n \n \n \n \n \n \n {this.state.shortcuts.map(shortcut => )}\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {\n MIN_CORNER_FAVICON_SIZE,\n MIN_RICH_FAVICON_SIZE,\n TOP_SITES_CONTEXT_MENU_OPTIONS,\n TOP_SITES_SEARCH_SHORTCUTS_CONTEXT_MENU_OPTIONS,\n TOP_SITES_SOURCE,\n} from \"./TopSitesConstants\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {ScreenshotUtils} from \"content-src/lib/screenshot-utils\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\n\nexport class TopSiteLink extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {screenshotImage: null};\n this.onDragEvent = this.onDragEvent.bind(this);\n this.onKeyPress = this.onKeyPress.bind(this);\n }\n\n /*\n * Helper to determine whether the drop zone should allow a drop. We only allow\n * dropping top sites for now.\n */\n _allowDrop(e) {\n return e.dataTransfer.types.includes(\"text/topsite-index\");\n }\n\n onDragEvent(event) {\n switch (event.type) {\n case \"click\":\n // Stop any link clicks if we started any dragging\n if (this.dragged) {\n event.preventDefault();\n }\n break;\n case \"dragstart\":\n this.dragged = true;\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(\"text/topsite-index\", this.props.index);\n event.target.blur();\n this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title);\n break;\n case \"dragend\":\n this.props.onDragEvent(event);\n break;\n case \"dragenter\":\n case \"dragover\":\n case \"drop\":\n if (this._allowDrop(event)) {\n event.preventDefault();\n this.props.onDragEvent(event, this.props.index);\n }\n break;\n case \"mousedown\":\n // Block the scroll wheel from appearing for middle clicks on search top sites\n if (event.button === 1 && this.props.link.searchTopSite) {\n event.preventDefault();\n }\n // Reset at the first mouse event of a potential drag\n this.dragged = false;\n break;\n }\n }\n\n /**\n * Helper to obtain the next state based on nextProps and prevState.\n *\n * NOTE: Rename this method to getDerivedStateFromProps when we update React\n * to >= 16.3. We will need to update tests as well. We cannot rename this\n * method to getDerivedStateFromProps now because there is a mismatch in\n * the React version that we are using for both testing and production.\n * (i.e. react-test-render => \"16.3.2\", react => \"16.2.0\").\n *\n * See https://github.com/airbnb/enzyme/blob/master/packages/enzyme-adapter-react-16/package.json#L43.\n */\n static getNextStateFromProps(nextProps, prevState) {\n const {screenshot} = nextProps.link;\n const imageInState = ScreenshotUtils.isRemoteImageLocal(prevState.screenshotImage, screenshot);\n if (imageInState) {\n return null;\n }\n\n // Since image was updated, attempt to revoke old image blob URL, if it exists.\n ScreenshotUtils.maybeRevokeBlobObjectURL(prevState.screenshotImage);\n\n return {screenshotImage: ScreenshotUtils.createLocalImageObject(screenshot)};\n }\n\n // NOTE: Remove this function when we update React to >= 16.3 since React will\n // call getDerivedStateFromProps automatically. We will also need to\n // rename getNextStateFromProps to getDerivedStateFromProps.\n componentWillMount() {\n const nextState = TopSiteLink.getNextStateFromProps(this.props, this.state);\n if (nextState) {\n this.setState(nextState);\n }\n }\n\n // NOTE: Remove this function when we update React to >= 16.3 since React will\n // call getDerivedStateFromProps automatically. We will also need to\n // rename getNextStateFromProps to getDerivedStateFromProps.\n componentWillReceiveProps(nextProps) {\n const nextState = TopSiteLink.getNextStateFromProps(nextProps, this.state);\n if (nextState) {\n this.setState(nextState);\n }\n }\n\n componentWillUnmount() {\n ScreenshotUtils.maybeRevokeBlobObjectURL(this.state.screenshotImage);\n }\n\n onKeyPress(event) {\n // If we have tabbed to a search shortcut top site, and we click 'enter',\n // we should execute the onClick function. This needs to be added because\n // search top sites are anchor tags without an href. See bug 1483135\n if (this.props.link.searchTopSite && event.key === \"Enter\") {\n this.props.onClick(event);\n }\n }\n\n render() {\n const {children, className, defaultStyle, isDraggable, link, onClick, title} = this.props;\n const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : \"\"}${link.isDragged ? \" dragged\" : \"\"}${link.searchTopSite ? \" search-shortcut\" : \"\"}`;\n const {tippyTopIcon, faviconSize} = link;\n const [letterFallback] = title;\n let imageClassName;\n let imageStyle;\n let showSmallFavicon = false;\n let smallFaviconStyle;\n let smallFaviconFallback;\n let hasScreenshotImage = this.state.screenshotImage && this.state.screenshotImage.url;\n if (defaultStyle) { // force no styles (letter fallback) even if the link has imagery\n smallFaviconFallback = false;\n } else if (link.searchTopSite) {\n imageClassName = \"top-site-icon rich-icon\";\n imageStyle = {\n backgroundColor: link.backgroundColor,\n backgroundImage: `url(${tippyTopIcon})`,\n };\n smallFaviconStyle = {backgroundImage: `url(${tippyTopIcon})`};\n } else if (link.customScreenshotURL) {\n // assume high quality custom screenshot and use rich icon styles and class names\n imageClassName = \"top-site-icon rich-icon\";\n imageStyle = {\n backgroundColor: link.backgroundColor,\n backgroundImage: hasScreenshotImage ? `url(${this.state.screenshotImage.url})` : \"none\",\n };\n } else if (tippyTopIcon || faviconSize >= MIN_RICH_FAVICON_SIZE) {\n // styles and class names for top sites with rich icons\n imageClassName = \"top-site-icon rich-icon\";\n imageStyle = {\n backgroundColor: link.backgroundColor,\n backgroundImage: `url(${tippyTopIcon || link.favicon})`,\n };\n } else {\n // styles and class names for top sites with screenshot + small icon in top left corner\n imageClassName = `screenshot${hasScreenshotImage ? \" active\" : \"\"}`;\n imageStyle = {backgroundImage: hasScreenshotImage ? `url(${this.state.screenshotImage.url})` : \"none\"};\n\n // only show a favicon in top left if it's greater than 16x16\n if (faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n showSmallFavicon = true;\n smallFaviconStyle = {backgroundImage: `url(${link.favicon})`};\n } else if (hasScreenshotImage) {\n // Don't show a small favicon if there is no screenshot, because that\n // would result in two fallback icons\n showSmallFavicon = true;\n smallFaviconFallback = true;\n }\n }\n let draggableProps = {};\n if (isDraggable) {\n draggableProps = {\n onClick: this.onDragEvent,\n onDragEnd: this.onDragEvent,\n onDragStart: this.onDragEvent,\n onMouseDown: this.onDragEvent,\n };\n }\n return (\n \n \n \n \n {link.searchTopSite && }\n {showSmallFavicon && }\n \n \n {link.isPinned && }\n {title}\n \n \n {children}\n \n );\n }\n}\nTopSiteLink.defaultProps = {\n title: \"\",\n link: {},\n isDraggable: true,\n};\n\nexport class TopSite extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {showContextMenu: false};\n this.onLinkClick = this.onLinkClick.bind(this);\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n }\n\n /**\n * Report to telemetry additional information about the item.\n */\n _getTelemetryInfo() {\n const value = {icon_type: this.props.link.iconType};\n // Filter out \"not_pinned\" type for being the default\n if (this.props.link.isPinned) {\n value.card_type = \"pinned\";\n }\n if (this.props.link.searchTopSite) {\n // Set the card_type as \"search\" regardless of its pinning status\n value.card_type = \"search\";\n value.search_vendor = this.props.link.hostname;\n }\n return {value};\n }\n\n userEvent(event) {\n this.props.dispatch(ac.UserEvent(Object.assign({\n event,\n source: TOP_SITES_SOURCE,\n action_position: this.props.index,\n }, this._getTelemetryInfo())));\n }\n\n onLinkClick(event) {\n this.userEvent(\"CLICK\");\n\n // Specially handle a top site link click for \"typed\" frecency bonus as\n // specified as a property on the link.\n event.preventDefault();\n const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n if (!this.props.link.searchTopSite) {\n this.props.dispatch(ac.OnlyToMain({\n type: at.OPEN_LINK,\n data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}}),\n }));\n } else {\n this.props.dispatch(ac.OnlyToMain({\n type: at.FILL_SEARCH_TERM,\n data: {label: this.props.link.label},\n }));\n }\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.props.onActivate(this.props.index);\n this.setState({showContextMenu: true});\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n render() {\n const {props} = this;\n const {link} = props;\n const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index;\n const title = link.label || link.hostname;\n return (\n \n \n \n \n \n \n {isContextMenuOpen &&\n \n }\n \n );\n }\n}\nTopSite.defaultProps = {\n link: {},\n onActivate() {},\n};\n\nexport class TopSitePlaceholder extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onEditButtonClick = this.onEditButtonClick.bind(this);\n }\n\n onEditButtonClick() {\n this.props.dispatch(\n {type: at.TOP_SITES_EDIT, data: {index: this.props.index}});\n }\n\n render() {\n return (\n \n );\n }\n}\n\nexport class _TopSiteList extends React.PureComponent {\n static get DEFAULT_STATE() {\n return {\n activeIndex: null,\n draggedIndex: null,\n draggedSite: null,\n draggedTitle: null,\n topSitesPreview: null,\n };\n }\n\n constructor(props) {\n super(props);\n this.state = _TopSiteList.DEFAULT_STATE;\n this.onDragEvent = this.onDragEvent.bind(this);\n this.onActivate = this.onActivate.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.state.draggedSite) {\n const prevTopSites = this.props.TopSites && this.props.TopSites.rows;\n const newTopSites = nextProps.TopSites && nextProps.TopSites.rows;\n if (prevTopSites && prevTopSites[this.state.draggedIndex] &&\n prevTopSites[this.state.draggedIndex].url === this.state.draggedSite.url &&\n (!newTopSites[this.state.draggedIndex] || newTopSites[this.state.draggedIndex].url !== this.state.draggedSite.url)) {\n // We got the new order from the redux store via props. We can clear state now.\n this.setState(_TopSiteList.DEFAULT_STATE);\n }\n }\n }\n\n userEvent(event, index) {\n this.props.dispatch(ac.UserEvent({\n event,\n source: TOP_SITES_SOURCE,\n action_position: index,\n }));\n }\n\n onDragEvent(event, index, link, title) {\n switch (event.type) {\n case \"dragstart\":\n this.dropped = false;\n this.setState({\n draggedIndex: index,\n draggedSite: link,\n draggedTitle: title,\n activeIndex: null,\n });\n this.userEvent(\"DRAG\", index);\n break;\n case \"dragend\":\n if (!this.dropped) {\n // If there was no drop event, reset the state to the default.\n this.setState(_TopSiteList.DEFAULT_STATE);\n }\n break;\n case \"dragenter\":\n if (index === this.state.draggedIndex) {\n this.setState({topSitesPreview: null});\n } else {\n this.setState({topSitesPreview: this._makeTopSitesPreview(index)});\n }\n break;\n case \"drop\":\n if (index !== this.state.draggedIndex) {\n this.dropped = true;\n this.props.dispatch(ac.AlsoToMain({\n type: at.TOP_SITES_INSERT,\n data: {\n site: {\n url: this.state.draggedSite.url,\n label: this.state.draggedTitle,\n customScreenshotURL: this.state.draggedSite.customScreenshotURL,\n // Only if the search topsites experiment is enabled\n ...(this.state.draggedSite.searchTopSite && {searchTopSite: true}),\n },\n index,\n draggedFromIndex: this.state.draggedIndex,\n },\n }));\n this.userEvent(\"DROP\", index);\n }\n break;\n }\n }\n\n _getTopSites() {\n // Make a copy of the sites to truncate or extend to desired length\n let topSites = this.props.TopSites.rows.slice();\n topSites.length = this.props.TopSitesRows * TOP_SITES_MAX_SITES_PER_ROW;\n return topSites;\n }\n\n /**\n * Make a preview of the topsites that will be the result of dropping the currently\n * dragged site at the specified index.\n */\n _makeTopSitesPreview(index) {\n const topSites = this._getTopSites();\n topSites[this.state.draggedIndex] = null;\n const pinnedOnly = topSites.map(site => ((site && site.isPinned) ? site : null));\n const unpinned = topSites.filter(site => site && !site.isPinned);\n const siteToInsert = Object.assign({}, this.state.draggedSite, {isPinned: true, isDragged: true});\n if (!pinnedOnly[index]) {\n pinnedOnly[index] = siteToInsert;\n } else {\n // Find the hole to shift the pinned site(s) towards. We shift towards the\n // hole left by the site being dragged.\n let holeIndex = index;\n const indexStep = index > this.state.draggedIndex ? -1 : 1;\n while (pinnedOnly[holeIndex]) {\n holeIndex += indexStep;\n }\n\n // Shift towards the hole.\n const shiftingStep = index > this.state.draggedIndex ? 1 : -1;\n while (holeIndex !== index) {\n const nextIndex = holeIndex + shiftingStep;\n pinnedOnly[holeIndex] = pinnedOnly[nextIndex];\n holeIndex = nextIndex;\n }\n pinnedOnly[index] = siteToInsert;\n }\n\n // Fill in the remaining holes with unpinned sites.\n const preview = pinnedOnly;\n for (let i = 0; i < preview.length; i++) {\n if (!preview[i]) {\n preview[i] = unpinned.shift() || null;\n }\n }\n\n return preview;\n }\n\n onActivate(index) {\n this.setState({activeIndex: index});\n }\n\n render() {\n const {props} = this;\n const topSites = this.state.topSitesPreview || this._getTopSites();\n const topSitesUI = [];\n const commonProps = {\n onDragEvent: this.onDragEvent,\n dispatch: props.dispatch,\n intl: props.intl,\n };\n // We assign a key to each placeholder slot. We need it to be independent\n // of the slot index (i below) so that the keys used stay the same during\n // drag and drop reordering and the underlying DOM nodes are reused.\n // This mostly (only?) affects linux so be sure to test on linux before changing.\n let holeIndex = 0;\n\n // On narrow viewports, we only show 6 sites per row. We'll mark the rest as\n // .hide-for-narrow to hide in CSS via @media query.\n const maxNarrowVisibleIndex = props.TopSitesRows * 6;\n\n for (let i = 0, l = topSites.length; i < l; i++) {\n const link = topSites[i] && Object.assign({}, topSites[i], {iconType: this.props.topSiteIconType(topSites[i])});\n const slotProps = {\n key: link ? link.url : holeIndex++,\n index: i,\n };\n if (i >= maxNarrowVisibleIndex) {\n slotProps.className = \"hide-for-narrow\";\n }\n topSitesUI.push(!link ? (\n \n ) : (\n \n ));\n }\n return (\n {topSitesUI}\n );\n }\n}\n\nexport const TopSiteList = injectIntl(_TopSiteList);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\n\nexport class _StartupOverlay extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onInputChange = this.onInputChange.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n this.clickSkip = this.clickSkip.bind(this);\n this.initScene = this.initScene.bind(this);\n this.removeOverlay = this.removeOverlay.bind(this);\n this.onInputInvalid = this.onInputInvalid.bind(this);\n\n this.state = {\n emailInput: \"\",\n overlayRemoved: false,\n flowId: \"\",\n flowBeginTime: 0,\n };\n this.didFetch = false;\n }\n\n async componentWillUpdate() {\n if (this.props.fxa_endpoint && !this.didFetch) {\n try {\n this.didFetch = true;\n const fxaParams = \"entrypoint=activity-stream-firstrun&utm_source=activity-stream&utm_campaign=firstrun&form_type=email\";\n const response = await fetch(`${this.props.fxa_endpoint}/metrics-flow?${fxaParams}`);\n if (response.status === 200) {\n const {flowId, flowBeginTime} = await response.json();\n this.setState({flowId, flowBeginTime});\n } else {\n this.props.dispatch(ac.OnlyToMain({type: at.TELEMETRY_UNDESIRED_EVENT, data: {event: \"FXA_METRICS_FETCH_ERROR\", value: response.status}}));\n }\n } catch (error) {\n this.props.dispatch(ac.OnlyToMain({type: at.TELEMETRY_UNDESIRED_EVENT, data: {event: \"FXA_METRICS_ERROR\"}}));\n }\n }\n }\n\n componentDidMount() {\n this.initScene();\n }\n\n initScene() {\n // Timeout to allow the scene to render once before attaching the attribute\n // to trigger the animation.\n setTimeout(() => {\n this.setState({show: true});\n }, 10);\n }\n\n removeOverlay() {\n window.removeEventListener(\"visibilitychange\", this.removeOverlay);\n document.body.classList.remove(\"hide-main\");\n this.setState({show: false});\n setTimeout(() => {\n // Allow scrolling and fully remove overlay after animation finishes.\n document.body.classList.remove(\"welcome\");\n this.setState({overlayRemoved: true});\n }, 400);\n }\n\n onInputChange(e) {\n let error = e.target.previousSibling;\n this.setState({emailInput: e.target.value});\n error.classList.remove(\"active\");\n e.target.classList.remove(\"invalid\");\n }\n\n onSubmit() {\n this.props.dispatch(ac.UserEvent({event: \"SUBMIT_EMAIL\", ...this._getFormInfo()}));\n\n window.addEventListener(\"visibilitychange\", this.removeOverlay);\n }\n\n clickSkip() {\n this.props.dispatch(ac.UserEvent({event: \"SKIPPED_SIGNIN\", ...this._getFormInfo()}));\n this.removeOverlay();\n }\n\n /**\n * Report to telemetry additional information about the form submission.\n */\n _getFormInfo() {\n const value = {has_flow_params: this.state.flowId.length > 0};\n return {value};\n }\n\n onInputInvalid(e) {\n let error = e.target.previousSibling;\n error.classList.add(\"active\");\n e.target.classList.add(\"invalid\");\n e.preventDefault(); // Override built-in form validation popup\n e.target.focus();\n }\n\n render() {\n // When skipping the onboarding tour we show AS but we are still on\n // about:welcome, prop.isFirstrun is true and StartupOverlay is rendered\n if (this.state.overlayRemoved) {\n return null;\n }\n\n let termsLink = ();\n let privacyLink = ();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.props.intl.formatMessage({id: \"firstrun_invalid_input\"})}\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nconst getState = state => ({fxa_endpoint: state.Prefs.values.fxa_endpoint});\nexport const StartupOverlay = connect(getState)(injectIntl(_StartupOverlay));\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\nexport class DetectUserSessionStart {\n constructor(store, options = {}) {\n this._store = store;\n // Overrides for testing\n this.document = options.document || global.document;\n this._perfService = options.perfService || perfSvc;\n this._onVisibilityChange = this._onVisibilityChange.bind(this);\n }\n\n /**\n * sendEventOrAddListener - Notify immediately if the page is already visible,\n * or else set up a listener for when visibility changes.\n * This is needed for accurate session tracking for telemetry,\n * because tabs are pre-loaded.\n */\n sendEventOrAddListener() {\n if (this.document.visibilityState === VISIBLE) {\n // If the document is already visible, to the user, send a notification\n // immediately that a session has started.\n this._sendEvent();\n } else {\n // If the document is not visible, listen for when it does become visible.\n this.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n /**\n * _sendEvent - Sends a message to the main process to indicate the current\n * tab is now visible to the user, includes the\n * visibility_event_rcvd_ts time in ms from the UNIX epoch.\n */\n _sendEvent() {\n this._perfService.mark(\"visibility_event_rcvd_ts\");\n\n try {\n let visibility_event_rcvd_ts = this._perfService\n .getMostRecentAbsMarkStartByName(\"visibility_event_rcvd_ts\");\n\n this._store.dispatch(ac.AlsoToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data: {visibility_event_rcvd_ts},\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true. We should at least not blow up.\n }\n }\n\n /**\n * _onVisibilityChange - If the visibility has changed to visible, sends a notification\n * and removes the event listener. This should only be called once per tab.\n */\n _onVisibilityChange() {\n if (this.document.visibilityState === VISIBLE) {\n this._sendEvent();\n this.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n}\n","export function enableASRouterContent(store, asrouterContent) {\n // Enable asrouter content\n store.subscribe(() => {\n const state = store.getState();\n if (!state.ASRouter.initialized) {\n return;\n }\n\n if (!asrouterContent.initialized) {\n asrouterContent.init();\n }\n });\n // Return this for testing purposes\n return {asrouterContent};\n}\n","import React from \"react\";\n\nconst ALLOWED_STYLE_TAGS = [\"color\", \"backgroundColor\"];\n\nexport const Button = props => {\n const style = {};\n\n // Add allowed style tags from props, e.g. props.color becomes style={color: props.color}\n for (const tag of ALLOWED_STYLE_TAGS) {\n if (typeof props[tag] !== \"undefined\") {\n style[tag] = props[tag];\n }\n }\n // remove border if bg is set to something custom\n if (style.backgroundColor) {\n style.border = \"0\";\n }\n\n return (\n {props.children}\n );\n};\n","export function safeURI(url) {\n if (!url) {\n return \"\";\n }\n const {protocol} = new URL(url);\n const isAllowed = [\n \"http:\",\n \"https:\",\n \"data:\",\n \"resource:\",\n \"chrome:\",\n ].includes(protocol);\n if (!isAllowed) {\n console.warn(`The protocol ${protocol} is not allowed for template URLs.`); // eslint-disable-line no-console\n }\n return isAllowed ? url : \"\";\n}\n","import {Localized} from \"fluent-react\";\nimport React from \"react\";\nimport {RICH_TEXT_KEYS} from \"../../rich-text-strings\";\nimport {safeURI} from \"../../template-utils\";\n\n// Elements allowed in snippet content\nconst ALLOWED_TAGS = {\n b: ,\n i: ,\n u: ,\n strong: ,\n em: ,\n br: ,\n};\n\n/**\n * Transform an object (tag name: {url}) into (tag name: anchor) where the url\n * is used as href, in order to render links inside a Fluent.Localized component.\n */\nexport function convertLinks(links, sendClick, doNotAutoBlock) {\n if (links) {\n return Object.keys(links).reduce((acc, linkTag) => {\n const {action} = links[linkTag];\n // Setting the value to false will not include the attribute in the anchor\n const url = action ? false : safeURI(links[linkTag].url);\n\n acc[linkTag] = ();\n return acc;\n }, {});\n }\n\n return null;\n}\n\n/**\n * Message wrapper used to sanitize markup and render HTML.\n */\nexport function RichText(props) {\n if (!RICH_TEXT_KEYS.includes(props.localization_id)) {\n throw new Error(`ASRouter: ${props.localization_id} is not a valid rich text property. If you want it to be processed, you need to add it to asrouter/rich-text-strings.js`);\n }\n return (\n \n {props.text}\n \n );\n}\n","import React from \"react\";\n\nexport class SnippetBase extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onBlockClicked = this.onBlockClicked.bind(this);\n }\n\n onBlockClicked() {\n if (this.props.provider !== \"preview\") {\n this.props.sendUserActionTelemetry({event: \"BLOCK\", id: this.props.UISurface});\n }\n\n this.props.onBlock();\n }\n\n renderDismissButton() {\n if (this.props.footerDismiss) {\n return (\n \n \n \n {this.props.content.scene2_dismiss_button_text}\n \n \n \n );\n }\n\n return (\n \n );\n }\n\n render() {\n const {props} = this;\n\n const containerClassName = `SnippetBaseContainer${props.className ? ` ${props.className}` : \"\"}`;\n\n return (\n \n {props.children}\n \n {this.renderDismissButton()}\n );\n }\n}\n","import {Button} from \"../../components/Button/Button\";\nimport React from \"react\";\nimport {RichText} from \"../../components/RichText/RichText\";\nimport {safeURI} from \"../../template-utils\";\nimport {SnippetBase} from \"../../components/SnippetBase/SnippetBase\";\n\nconst DEFAULT_ICON_PATH = \"chrome://branding/content/icon64.png\";\n\nexport class SimpleSnippet extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onButtonClick = this.onButtonClick.bind(this);\n }\n\n onButtonClick() {\n if (this.props.provider !== \"preview\") {\n this.props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", id: this.props.UISurface});\n }\n const {button_url} = this.props.content;\n // If button_url is defined handle it as OPEN_URL action\n const type = this.props.content.button_action || (button_url && \"OPEN_URL\");\n this.props.onAction({\n type,\n data: {args: this.props.content.button_action_args || button_url},\n });\n if (!this.props.content.do_not_autoblock) {\n this.props.onBlock();\n }\n }\n\n renderTitle() {\n const {title} = this.props.content;\n return title ? {title} : null;\n }\n\n renderTitleIcon() {\n const titleIcon = safeURI(this.props.content.title_icon);\n return titleIcon ? : null;\n }\n\n renderButton() {\n const {props} = this;\n if (!props.content.button_action && !props.onButtonClick && !props.content.button_url) {\n return null;\n }\n\n return (\n {props.content.button_label}\n );\n }\n\n renderText() {\n const {props} = this;\n return ();\n }\n\n render() {\n const {props} = this;\n let className = \"SimpleSnippet\";\n if (props.className) {\n className += ` ${props.className}`;\n }\n if (props.content.tall) {\n className += \" tall\";\n }\n return (\n \n \n {this.renderTitleIcon()} {this.renderTitle()} {this.renderText()}\n {this.props.extraContent}\n \n {{this.renderButton()}}\n );\n }\n}\n","import React from \"react\";\nimport {SimpleSnippet} from \"../SimpleSnippet/SimpleSnippet\";\n\nclass EOYSnippetBase extends React.PureComponent {\n constructor(props) {\n super(props);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n /**\n * setFrequencyValue - `frequency` form parameter value should be `monthly`\n * if `monthly-checkbox` is selected or `single` otherwise\n */\n setFrequencyValue() {\n const frequencyCheckbox = this.refs.form.querySelector(\"#monthly-checkbox\");\n if (frequencyCheckbox.checked) {\n this.refs.form.querySelector(\"[name='frequency']\").value = \"monthly\";\n }\n }\n\n handleSubmit(event) {\n event.preventDefault();\n this.setFrequencyValue();\n this.refs.form.submit();\n if (!this.props.content.do_not_autoblock) {\n this.props.onBlock();\n }\n }\n\n renderDonations() {\n const fieldNames = [\"first\", \"second\", \"third\", \"fourth\"];\n const numberFormat = new Intl.NumberFormat(this.props.content.locale || navigator.language, {\n style: \"currency\",\n currency: this.props.content.currency_code,\n minimumFractionDigits: 0,\n });\n // Default to `second` button\n const {selected_button} = this.props.content;\n const btnStyle = {\n color: this.props.content.button_color,\n backgroundColor: this.props.content.button_background_color,\n };\n\n return (\n {fieldNames.map((field, idx) => {\n const button_name = `donation_amount_${field}`;\n const amount = this.props.content[button_name];\n return (\n \n \n {numberFormat.format(amount)}\n \n );\n })}\n\n \n \n \n {this.props.content.monthly_checkbox_label_text}\n \n \n\n \n \n this.props.content[`donation_amount_${field}`])} />\n {this.props.content.button_label}\n );\n }\n\n render() {\n const textStyle = {\n color: this.props.content.text_color,\n backgroundColor: this.props.content.background_color,\n };\n const customElement = ;\n return ();\n }\n}\n\nexport const EOYSnippet = props => {\n const extendedContent = {\n monthly_checkbox_label_text: \"Make my donation monthly\",\n locale: \"en-US\",\n currency_code: \"usd\",\n selected_button: \"donation_amount_second\",\n ...props.content,\n };\n\n return ();\n};\n","import {Button} from \"../../components/Button/Button\";\nimport React from \"react\";\nimport {RichText} from \"../../components/RichText/RichText\";\nimport {SimpleSnippet} from \"../SimpleSnippet/SimpleSnippet\";\nimport {SnippetBase} from \"../../components/SnippetBase/SnippetBase\";\n\nexport class SubmitFormSnippet extends React.PureComponent {\n constructor(props) {\n super(props);\n this.expandSnippet = this.expandSnippet.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.onInputChange = this.onInputChange.bind(this);\n this.state = {\n expanded: false,\n signupSubmitted: false,\n signupSuccess: false,\n disableForm: false,\n };\n }\n\n async handleSubmit(event) {\n let json;\n\n if (this.state.disableForm) {\n return;\n }\n\n event.preventDefault();\n this.setState({disableForm: true});\n this.props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", value: \"conversion-subscribe-activation\", id: \"NEWTAB_FOOTER_BAR_CONTENT\"});\n\n if (this.props.form_method.toUpperCase() === \"GET\") {\n this.refs.form.submit();\n return;\n }\n\n const {url, formData} = this.props.processFormData ?\n this.props.processFormData(this.refs.mainInput, this.props) :\n {url: this.refs.form.action, formData: new FormData(this.refs.form)};\n\n try {\n const fetchRequest = new Request(url, {body: formData, method: \"POST\"});\n const response = await fetch(fetchRequest);\n json = await response.json();\n } catch (err) {\n console.log(err); // eslint-disable-line no-console\n }\n\n if (json && json.status === \"ok\") {\n this.setState({signupSuccess: true, signupSubmitted: true});\n if (!this.props.content.do_not_autoblock) {\n this.props.onBlock({preventDismiss: true});\n }\n this.props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", value: \"subscribe-success\", id: \"NEWTAB_FOOTER_BAR_CONTENT\"});\n } else {\n console.error(\"There was a problem submitting the form\", json || \"[No JSON response]\"); // eslint-disable-line no-console\n this.setState({signupSuccess: false, signupSubmitted: true});\n this.props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", value: \"subscribe-error\", id: \"NEWTAB_FOOTER_BAR_CONTENT\"});\n }\n\n this.setState({disableForm: false});\n }\n\n expandSnippet() {\n this.setState({\n expanded: true,\n signupSuccess: false,\n signupSubmitted: false,\n });\n }\n\n renderHiddenFormInputs() {\n const {hidden_inputs} = this.props.content;\n\n if (!hidden_inputs) {\n return null;\n }\n\n return Object.keys(hidden_inputs).map((key, idx) => );\n }\n\n renderDisclaimer() {\n const {content} = this.props;\n if (!content.scene2_disclaimer_html) {\n return null;\n }\n return (\n \n );\n }\n\n renderFormPrivacyNotice() {\n const {content} = this.props;\n if (!content.scene2_privacy_html) {\n return null;\n }\n return (\n \n \n \n \n \n );\n }\n\n renderSignupSubmitted() {\n const {content} = this.props;\n const isSuccess = this.state.signupSuccess;\n const successTitle = isSuccess && content.success_title;\n const bodyText = isSuccess ? content.success_text : content.error_text;\n const retryButtonText = content.scene1_button_label;\n return (\n {successTitle ? {successTitle} : null}\n {bodyText}{isSuccess ? null : {retryButtonText}}\n );\n }\n\n onInputChange(event) {\n if (!this.props.validateInput) {\n return;\n }\n const hasError = this.props.validateInput(event.target.value, this.props.content);\n event.target.setCustomValidity(hasError);\n }\n\n renderInput() {\n const placholder = this.props.content.scene2_email_placeholder_text || this.props.content.scene2_input_placeholder;\n return ();\n }\n\n renderSignupView() {\n const {content} = this.props;\n const containerClass = `SubmitFormSnippet ${this.props.className}`;\n return (\n {content.scene2_icon ? : null}\n \n {content.scene2_title ? {content.scene2_title} : null} {content.scene2_text}\n \n \n {this.renderHiddenFormInputs()}\n \n {this.renderInput()}\n {content.scene2_button_label}\n \n {this.renderFormPrivacyNotice() || this.renderDisclaimer()}\n \n );\n }\n\n getFirstSceneContent() {\n return Object.keys(this.props.content).filter(key => key.includes(\"scene1\")).reduce((acc, key) => {\n acc[key.substr(7)] = this.props.content[key];\n return acc;\n }, {});\n }\n\n render() {\n const content = {...this.props.content, ...this.getFirstSceneContent()};\n\n if (this.state.signupSubmitted) {\n return this.renderSignupSubmitted();\n }\n if (this.state.expanded) {\n return this.renderSignupView();\n }\n return ;\n }\n}\n","import React from \"react\";\nimport {SubmitFormSnippet} from \"../SubmitFormSnippet/SubmitFormSnippet.jsx\";\n\nexport const FXASignupSnippet = props => {\n const userAgent = window.navigator.userAgent.match(/Firefox\\/([0-9]+)\\./);\n const firefox_version = userAgent ? parseInt(userAgent[1], 10) : 0;\n const extendedContent = {\n form_action: \"https://accounts.firefox.com/\",\n ...props.content,\n hidden_inputs: {\n action: \"email\",\n context: \"fx_desktop_v3\",\n entrypoint: \"snippets\",\n service: \"sync\",\n utm_source: \"snippet\",\n utm_content: firefox_version,\n utm_campaign: props.content.utm_campaign,\n utm_term: props.content.utm_term,\n ...props.content.hidden_inputs,\n },\n };\n\n return ();\n};\n","import React from \"react\";\nimport {SubmitFormSnippet} from \"../SubmitFormSnippet/SubmitFormSnippet.jsx\";\n\nexport const NewsletterSnippet = props => {\n const extendedContent = {\n form_action: \"https://basket.mozilla.org/subscribe.json\",\n scene2_email_placeholder_text: \"Your Email Here\",\n scene2_button_label: \"Sign Me Up\",\n ...props.content,\n hidden_inputs: {\n newsletters: props.content.scene2_newsletter || \"mozilla-foundation\",\n fmt: \"H\",\n lang: props.content.locale || \"en-US\",\n source_url: `https://snippets.mozilla.com/show/${props.id}`,\n ...props.content.hidden_inputs,\n },\n };\n\n return ();\n};\n","/**\n * Checks if a given string is an email or phone number or neither\n * @param {string} val The user input\n * @param {ASRMessageContent} content .content property on ASR message\n * @returns {\"email\"|\"phone\"|\"\"} The type of the input\n */\nexport function isEmailOrPhoneNumber(val, content) {\n const {locale} = content;\n // http://emailregex.com/\n const email_re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n const check_email = email_re.test(val);\n let check_phone; // depends on locale\n switch (locale) {\n case \"en-US\":\n case \"en-CA\":\n // allow 10-11 digits in case user wants to enter country code\n check_phone = val.length >= 10 && val.length <= 11 && !isNaN(val);\n break;\n case \"de\":\n // allow between 2 and 12 digits for german phone numbers\n check_phone = val.length >= 2 && val.length <= 12 && !isNaN(val);\n break;\n // this case should never be hit, but good to have a fallback just in case\n default:\n check_phone = !isNaN(val);\n break;\n }\n if (check_email) {\n return \"email\";\n } else if (check_phone) {\n return \"phone\";\n }\n return \"\";\n}\n","import {isEmailOrPhoneNumber} from \"./isEmailOrPhoneNumber\";\nimport React from \"react\";\nimport {SubmitFormSnippet} from \"../SubmitFormSnippet/SubmitFormSnippet.jsx\";\n\nfunction validateInput(value, content) {\n const type = isEmailOrPhoneNumber(value, content);\n return type ? \"\" : \"Must be an email or a phone number.\";\n}\n\nfunction processFormData(input, message) {\n const {content} = message;\n const type = content.include_sms ? isEmailOrPhoneNumber(input.value, content) : \"email\";\n const formData = new FormData();\n let url;\n if (type === \"phone\") {\n url = \"https://basket.mozilla.org/news/subscribe_sms/\";\n formData.append(\"mobile_number\", input.value);\n formData.append(\"msg_name\", content.message_id_sms);\n formData.append(\"country\", content.country);\n } else if (type === \"email\") {\n url = \"https://basket.mozilla.org/news/subscribe/\";\n formData.append(\"email\", input.value);\n formData.append(\"newsletters\", content.message_id_email);\n formData.append(\"source_url\", encodeURIComponent(`https://snippets.mozilla.com/show/${message.id}`));\n }\n formData.append(\"lang\", content.locale);\n return {formData, url};\n}\n\nexport const SendToDeviceSnippet = props => (\n \n);\n","import {EOYSnippet} from \"./EOYSnippet/EOYSnippet\";\nimport {FXASignupSnippet} from \"./FXASignupSnippet/FXASignupSnippet\";\nimport {NewsletterSnippet} from \"./NewsletterSnippet/NewsletterSnippet\";\nimport {SendToDeviceSnippet} from \"./SendToDeviceSnippet/SendToDeviceSnippet\";\nimport {SimpleSnippet} from \"./SimpleSnippet/SimpleSnippet\";\n\n// Key names matching schema name of templates\nexport const SnippetsTemplates = {\n simple_snippet: SimpleSnippet,\n newsletter_snippet: NewsletterSnippet,\n fxa_signup_snippet: FXASignupSnippet,\n send_to_device_snippet: SendToDeviceSnippet,\n eoy_snippet: EOYSnippet,\n};\n","/* eslint no-magic-numbers: [0] */\n\nconst MAX_PLACEABLES = 100;\n\nconst entryIdentifierRe = /-?[a-zA-Z][a-zA-Z0-9_-]*/y;\nconst identifierRe = /[a-zA-Z][a-zA-Z0-9_-]*/y;\nconst functionIdentifierRe = /^[A-Z][A-Z_?-]*$/;\n\n/**\n * The `Parser` class is responsible for parsing FTL resources.\n *\n * It's only public method is `getResource(source)` which takes an FTL string\n * and returns a two element Array with an Object of entries generated from the\n * source as the first element and an array of SyntaxError objects as the\n * second.\n *\n * This parser is optimized for runtime performance.\n *\n * There is an equivalent of this parser in syntax/parser which is\n * generating full AST which is useful for FTL tools.\n */\nclass RuntimeParser {\n /**\n * Parse FTL code into entries formattable by the MessageContext.\n *\n * Given a string of FTL syntax, return a map of entries that can be passed\n * to MessageContext.format and a list of errors encountered during parsing.\n *\n * @param {String} string\n * @returns {Array}\n */\n getResource(string) {\n this._source = string;\n this._index = 0;\n this._length = string.length;\n this.entries = {};\n\n const errors = [];\n\n this.skipWS();\n while (this._index < this._length) {\n try {\n this.getEntry();\n } catch (e) {\n if (e instanceof SyntaxError) {\n errors.push(e);\n\n this.skipToNextEntryStart();\n } else {\n throw e;\n }\n }\n this.skipWS();\n }\n\n return [this.entries, errors];\n }\n\n /**\n * Parse the source string from the current index as an FTL entry\n * and add it to object's entries property.\n *\n * @private\n */\n getEntry() {\n // The index here should either be at the beginning of the file\n // or right after new line.\n if (this._index !== 0 &&\n this._source[this._index - 1] !== \"\\n\") {\n throw this.error(`Expected an entry to start\n at the beginning of the file or on a new line.`);\n }\n\n const ch = this._source[this._index];\n\n // We don't care about comments or sections at runtime\n if (ch === \"/\" ||\n (ch === \"#\" &&\n [\" \", \"#\", \"\\n\"].includes(this._source[this._index + 1]))) {\n this.skipComment();\n return;\n }\n\n if (ch === \"[\") {\n this.skipSection();\n return;\n }\n\n this.getMessage();\n }\n\n /**\n * Skip the section entry from the current index.\n *\n * @private\n */\n skipSection() {\n this._index += 1;\n if (this._source[this._index] !== \"[\") {\n throw this.error('Expected \"[[\" to open a section');\n }\n\n this._index += 1;\n\n this.skipInlineWS();\n this.getVariantName();\n this.skipInlineWS();\n\n if (this._source[this._index] !== \"]\" ||\n this._source[this._index + 1] !== \"]\") {\n throw this.error('Expected \"]]\" to close a section');\n }\n\n this._index += 2;\n }\n\n /**\n * Parse the source string from the current index as an FTL message\n * and add it to the entries property on the Parser.\n *\n * @private\n */\n getMessage() {\n const id = this.getEntryIdentifier();\n\n this.skipInlineWS();\n\n if (this._source[this._index] === \"=\") {\n this._index++;\n }\n\n this.skipInlineWS();\n\n const val = this.getPattern();\n\n if (id.startsWith(\"-\") && val === null) {\n throw this.error(\"Expected term to have a value\");\n }\n\n let attrs = null;\n\n if (this._source[this._index] === \" \") {\n const lineStart = this._index;\n this.skipInlineWS();\n\n if (this._source[this._index] === \".\") {\n this._index = lineStart;\n attrs = this.getAttributes();\n }\n }\n\n if (attrs === null && typeof val === \"string\") {\n this.entries[id] = val;\n } else {\n if (val === null && attrs === null) {\n throw this.error(\"Expected message to have a value or attributes\");\n }\n\n this.entries[id] = {};\n\n if (val !== null) {\n this.entries[id].val = val;\n }\n\n if (attrs !== null) {\n this.entries[id].attrs = attrs;\n }\n }\n }\n\n /**\n * Skip whitespace.\n *\n * @private\n */\n skipWS() {\n let ch = this._source[this._index];\n while (ch === \" \" || ch === \"\\n\" || ch === \"\\t\" || ch === \"\\r\") {\n ch = this._source[++this._index];\n }\n }\n\n /**\n * Skip inline whitespace (space and \\t).\n *\n * @private\n */\n skipInlineWS() {\n let ch = this._source[this._index];\n while (ch === \" \" || ch === \"\\t\") {\n ch = this._source[++this._index];\n }\n }\n\n /**\n * Skip blank lines.\n *\n * @private\n */\n skipBlankLines() {\n while (true) {\n const ptr = this._index;\n\n this.skipInlineWS();\n\n if (this._source[this._index] === \"\\n\") {\n this._index += 1;\n } else {\n this._index = ptr;\n break;\n }\n }\n }\n\n /**\n * Get identifier using the provided regex.\n *\n * By default this will get identifiers of public messages, attributes and\n * external arguments (without the $).\n *\n * @returns {String}\n * @private\n */\n getIdentifier(re = identifierRe) {\n re.lastIndex = this._index;\n const result = re.exec(this._source);\n\n if (result === null) {\n this._index += 1;\n throw this.error(`Expected an identifier [${re.toString()}]`);\n }\n\n this._index = re.lastIndex;\n return result[0];\n }\n\n /**\n * Get identifier of a Message or a Term (staring with a dash).\n *\n * @returns {String}\n * @private\n */\n getEntryIdentifier() {\n return this.getIdentifier(entryIdentifierRe);\n }\n\n /**\n * Get Variant name.\n *\n * @returns {Object}\n * @private\n */\n getVariantName() {\n let name = \"\";\n\n const start = this._index;\n let cc = this._source.charCodeAt(this._index);\n\n if ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n cc === 95 || cc === 32) { // _ \n cc = this._source.charCodeAt(++this._index);\n } else {\n throw this.error(\"Expected a keyword (starting with [a-zA-Z_])\");\n }\n\n while ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n (cc >= 48 && cc <= 57) || // 0-9\n cc === 95 || cc === 45 || cc === 32) { // _- \n cc = this._source.charCodeAt(++this._index);\n }\n\n // If we encountered the end of name, we want to test if the last\n // collected character is a space.\n // If it is, we will backtrack to the last non-space character because\n // the keyword cannot end with a space character.\n while (this._source.charCodeAt(this._index - 1) === 32) {\n this._index--;\n }\n\n name += this._source.slice(start, this._index);\n\n return { type: \"varname\", name };\n }\n\n /**\n * Get simple string argument enclosed in `\"`.\n *\n * @returns {String}\n * @private\n */\n getString() {\n const start = this._index + 1;\n\n while (++this._index < this._length) {\n const ch = this._source[this._index];\n\n if (ch === '\"') {\n break;\n }\n\n if (ch === \"\\n\") {\n throw this.error(\"Unterminated string expression\");\n }\n }\n\n return this._source.substring(start, this._index++);\n }\n\n /**\n * Parses a Message pattern.\n * Message Pattern may be a simple string or an array of strings\n * and placeable expressions.\n *\n * @returns {String|Array}\n * @private\n */\n getPattern() {\n // We're going to first try to see if the pattern is simple.\n // If it is we can just look for the end of the line and read the string.\n //\n // Then, if either the line contains a placeable opening `{` or the\n // next line starts an indentation, we switch to complex pattern.\n const start = this._index;\n let eol = this._source.indexOf(\"\\n\", this._index);\n\n if (eol === -1) {\n eol = this._length;\n }\n\n const firstLineContent = start !== eol ?\n this._source.slice(start, eol) : null;\n\n if (firstLineContent && firstLineContent.includes(\"{\")) {\n return this.getComplexPattern();\n }\n\n this._index = eol + 1;\n\n this.skipBlankLines();\n\n if (this._source[this._index] !== \" \") {\n // No indentation means we're done with this message. Callers should check\n // if the return value here is null. It may be OK for messages, but not OK\n // for terms, attributes and variants.\n return firstLineContent;\n }\n\n const lineStart = this._index;\n\n this.skipInlineWS();\n\n if (this._source[this._index] === \".\") {\n // The pattern is followed by an attribute. Rewind _index to the first\n // column of the current line as expected by getAttributes.\n this._index = lineStart;\n return firstLineContent;\n }\n\n if (firstLineContent) {\n // It's a multiline pattern which started on the same line as the\n // identifier. Reparse the whole pattern to make sure we get all of it.\n this._index = start;\n }\n\n return this.getComplexPattern();\n }\n\n /**\n * Parses a complex Message pattern.\n * This function is called by getPattern when the message is multiline,\n * or contains escape chars or placeables.\n * It does full parsing of complex patterns.\n *\n * @returns {Array}\n * @private\n */\n /* eslint-disable complexity */\n getComplexPattern() {\n let buffer = \"\";\n const content = [];\n let placeables = 0;\n\n let ch = this._source[this._index];\n\n while (this._index < this._length) {\n // This block handles multi-line strings combining strings separated\n // by new line.\n if (ch === \"\\n\") {\n this._index++;\n\n // We want to capture the start and end pointers\n // around blank lines and add them to the buffer\n // but only if the blank lines are in the middle\n // of the string.\n const blankLinesStart = this._index;\n this.skipBlankLines();\n const blankLinesEnd = this._index;\n\n\n if (this._source[this._index] !== \" \") {\n break;\n }\n this.skipInlineWS();\n\n if (this._source[this._index] === \"}\" ||\n this._source[this._index] === \"[\" ||\n this._source[this._index] === \"*\" ||\n this._source[this._index] === \".\") {\n this._index = blankLinesEnd;\n break;\n }\n\n buffer += this._source.substring(blankLinesStart, blankLinesEnd);\n\n if (buffer.length || content.length) {\n buffer += \"\\n\";\n }\n ch = this._source[this._index];\n continue;\n } else if (ch === \"\\\\\") {\n const ch2 = this._source[this._index + 1];\n if (ch2 === '\"' || ch2 === \"{\" || ch2 === \"\\\\\") {\n ch = ch2;\n this._index++;\n }\n } else if (ch === \"{\") {\n // Push the buffer to content array right before placeable\n if (buffer.length) {\n content.push(buffer);\n }\n if (placeables > MAX_PLACEABLES - 1) {\n throw this.error(\n `Too many placeables, maximum allowed is ${MAX_PLACEABLES}`);\n }\n buffer = \"\";\n content.push(this.getPlaceable());\n\n this._index++;\n\n ch = this._source[this._index];\n placeables++;\n continue;\n }\n\n if (ch) {\n buffer += ch;\n }\n this._index++;\n ch = this._source[this._index];\n }\n\n if (content.length === 0) {\n return buffer.length ? buffer : null;\n }\n\n if (buffer.length) {\n content.push(buffer);\n }\n\n return content;\n }\n /* eslint-enable complexity */\n\n /**\n * Parses a single placeable in a Message pattern and returns its\n * expression.\n *\n * @returns {Object}\n * @private\n */\n getPlaceable() {\n const start = ++this._index;\n\n this.skipWS();\n\n if (this._source[this._index] === \"*\" ||\n (this._source[this._index] === \"[\" &&\n this._source[this._index + 1] !== \"]\")) {\n const variants = this.getVariants();\n\n return {\n type: \"sel\",\n exp: null,\n vars: variants[0],\n def: variants[1]\n };\n }\n\n // Rewind the index and only support in-line white-space now.\n this._index = start;\n this.skipInlineWS();\n\n const selector = this.getSelectorExpression();\n\n this.skipWS();\n\n const ch = this._source[this._index];\n\n if (ch === \"}\") {\n if (selector.type === \"attr\" && selector.id.name.startsWith(\"-\")) {\n throw this.error(\n \"Attributes of private messages cannot be interpolated.\"\n );\n }\n\n return selector;\n }\n\n if (ch !== \"-\" || this._source[this._index + 1] !== \">\") {\n throw this.error('Expected \"}\" or \"->\"');\n }\n\n if (selector.type === \"ref\") {\n throw this.error(\"Message references cannot be used as selectors.\");\n }\n\n if (selector.type === \"var\") {\n throw this.error(\"Variants cannot be used as selectors.\");\n }\n\n if (selector.type === \"attr\" && !selector.id.name.startsWith(\"-\")) {\n throw this.error(\n \"Attributes of public messages cannot be used as selectors.\"\n );\n }\n\n\n this._index += 2; // ->\n\n this.skipInlineWS();\n\n if (this._source[this._index] !== \"\\n\") {\n throw this.error(\"Variants should be listed in a new line\");\n }\n\n this.skipWS();\n\n const variants = this.getVariants();\n\n if (variants[0].length === 0) {\n throw this.error(\"Expected members for the select expression\");\n }\n\n return {\n type: \"sel\",\n exp: selector,\n vars: variants[0],\n def: variants[1]\n };\n }\n\n /**\n * Parses a selector expression.\n *\n * @returns {Object}\n * @private\n */\n getSelectorExpression() {\n const literal = this.getLiteral();\n\n if (literal.type !== \"ref\") {\n return literal;\n }\n\n if (this._source[this._index] === \".\") {\n this._index++;\n\n const name = this.getIdentifier();\n this._index++;\n return {\n type: \"attr\",\n id: literal,\n name\n };\n }\n\n if (this._source[this._index] === \"[\") {\n this._index++;\n\n const key = this.getVariantKey();\n this._index++;\n return {\n type: \"var\",\n id: literal,\n key\n };\n }\n\n if (this._source[this._index] === \"(\") {\n this._index++;\n const args = this.getCallArgs();\n\n if (!functionIdentifierRe.test(literal.name)) {\n throw this.error(\"Function names must be all upper-case\");\n }\n\n this._index++;\n\n literal.type = \"fun\";\n\n return {\n type: \"call\",\n fun: literal,\n args\n };\n }\n\n return literal;\n }\n\n /**\n * Parses call arguments for a CallExpression.\n *\n * @returns {Array}\n * @private\n */\n getCallArgs() {\n const args = [];\n\n while (this._index < this._length) {\n this.skipInlineWS();\n\n if (this._source[this._index] === \")\") {\n return args;\n }\n\n const exp = this.getSelectorExpression();\n\n // MessageReference in this place may be an entity reference, like:\n // `call(foo)`, or, if it's followed by `:` it will be a key-value pair.\n if (exp.type !== \"ref\") {\n args.push(exp);\n } else {\n this.skipInlineWS();\n\n if (this._source[this._index] === \":\") {\n this._index++;\n this.skipInlineWS();\n\n const val = this.getSelectorExpression();\n\n // If the expression returned as a value of the argument\n // is not a quote delimited string or number, throw.\n //\n // We don't have to check here if the pattern is quote delimited\n // because that's the only type of string allowed in expressions.\n if (typeof val === \"string\" ||\n Array.isArray(val) ||\n val.type === \"num\") {\n args.push({\n type: \"narg\",\n name: exp.name,\n val\n });\n } else {\n this._index = this._source.lastIndexOf(\":\", this._index) + 1;\n throw this.error(\n \"Expected string in quotes, number.\");\n }\n\n } else {\n args.push(exp);\n }\n }\n\n this.skipInlineWS();\n\n if (this._source[this._index] === \")\") {\n break;\n } else if (this._source[this._index] === \",\") {\n this._index++;\n } else {\n throw this.error('Expected \",\" or \")\"');\n }\n }\n\n return args;\n }\n\n /**\n * Parses an FTL Number.\n *\n * @returns {Object}\n * @private\n */\n getNumber() {\n let num = \"\";\n let cc = this._source.charCodeAt(this._index);\n\n // The number literal may start with negative sign `-`.\n if (cc === 45) {\n num += \"-\";\n cc = this._source.charCodeAt(++this._index);\n }\n\n // next, we expect at least one digit\n if (cc < 48 || cc > 57) {\n throw this.error(`Unknown literal \"${num}\"`);\n }\n\n // followed by potentially more digits\n while (cc >= 48 && cc <= 57) {\n num += this._source[this._index++];\n cc = this._source.charCodeAt(this._index);\n }\n\n // followed by an optional decimal separator `.`\n if (cc === 46) {\n num += this._source[this._index++];\n cc = this._source.charCodeAt(this._index);\n\n // followed by at least one digit\n if (cc < 48 || cc > 57) {\n throw this.error(`Unknown literal \"${num}\"`);\n }\n\n // and optionally more digits\n while (cc >= 48 && cc <= 57) {\n num += this._source[this._index++];\n cc = this._source.charCodeAt(this._index);\n }\n }\n\n return {\n type: \"num\",\n val: num\n };\n }\n\n /**\n * Parses a list of Message attributes.\n *\n * @returns {Object}\n * @private\n */\n getAttributes() {\n const attrs = {};\n\n while (this._index < this._length) {\n if (this._source[this._index] !== \" \") {\n break;\n }\n this.skipInlineWS();\n\n if (this._source[this._index] !== \".\") {\n break;\n }\n this._index++;\n\n const key = this.getIdentifier();\n\n this.skipInlineWS();\n\n if (this._source[this._index] !== \"=\") {\n throw this.error('Expected \"=\"');\n }\n this._index++;\n\n this.skipInlineWS();\n\n const val = this.getPattern();\n\n if (val === null) {\n throw this.error(\"Expected attribute to have a value\");\n }\n\n if (typeof val === \"string\") {\n attrs[key] = val;\n } else {\n attrs[key] = {\n val\n };\n }\n\n this.skipBlankLines();\n }\n\n return attrs;\n }\n\n /**\n * Parses a list of Selector variants.\n *\n * @returns {Array}\n * @private\n */\n getVariants() {\n const variants = [];\n let index = 0;\n let defaultIndex;\n\n while (this._index < this._length) {\n const ch = this._source[this._index];\n\n if ((ch !== \"[\" || this._source[this._index + 1] === \"[\") &&\n ch !== \"*\") {\n break;\n }\n if (ch === \"*\") {\n this._index++;\n defaultIndex = index;\n }\n\n if (this._source[this._index] !== \"[\") {\n throw this.error('Expected \"[\"');\n }\n\n this._index++;\n\n const key = this.getVariantKey();\n\n this.skipInlineWS();\n\n const val = this.getPattern();\n\n if (val === null) {\n throw this.error(\"Expected variant to have a value\");\n }\n\n variants[index++] = {key, val};\n\n this.skipWS();\n }\n\n return [variants, defaultIndex];\n }\n\n /**\n * Parses a Variant key.\n *\n * @returns {String}\n * @private\n */\n getVariantKey() {\n // VariantKey may be a Keyword or Number\n\n const cc = this._source.charCodeAt(this._index);\n let literal;\n\n if ((cc >= 48 && cc <= 57) || cc === 45) {\n literal = this.getNumber();\n } else {\n literal = this.getVariantName();\n }\n\n if (this._source[this._index] !== \"]\") {\n throw this.error('Expected \"]\"');\n }\n\n this._index++;\n return literal;\n }\n\n /**\n * Parses an FTL literal.\n *\n * @returns {Object}\n * @private\n */\n getLiteral() {\n const cc0 = this._source.charCodeAt(this._index);\n\n if (cc0 === 36) { // $\n this._index++;\n return {\n type: \"ext\",\n name: this.getIdentifier()\n };\n }\n\n const cc1 = cc0 === 45 // -\n // Peek at the next character after the dash.\n ? this._source.charCodeAt(this._index + 1)\n // Or keep using the character at the current index.\n : cc0;\n\n if ((cc1 >= 97 && cc1 <= 122) || // a-z\n (cc1 >= 65 && cc1 <= 90)) { // A-Z\n return {\n type: \"ref\",\n name: this.getEntryIdentifier()\n };\n }\n\n if ((cc1 >= 48 && cc1 <= 57)) { // 0-9\n return this.getNumber();\n }\n\n if (cc0 === 34) { // \"\n return this.getString();\n }\n\n throw this.error(\"Expected literal\");\n }\n\n /**\n * Skips an FTL comment.\n *\n * @private\n */\n skipComment() {\n // At runtime, we don't care about comments so we just have\n // to parse them properly and skip their content.\n let eol = this._source.indexOf(\"\\n\", this._index);\n\n while (eol !== -1 &&\n ((this._source[eol + 1] === \"/\" && this._source[eol + 2] === \"/\") ||\n (this._source[eol + 1] === \"#\" &&\n [\" \", \"#\"].includes(this._source[eol + 2])))) {\n this._index = eol + 3;\n\n eol = this._source.indexOf(\"\\n\", this._index);\n\n if (eol === -1) {\n break;\n }\n }\n\n if (eol === -1) {\n this._index = this._length;\n } else {\n this._index = eol + 1;\n }\n }\n\n /**\n * Creates a new SyntaxError object with a given message.\n *\n * @param {String} message\n * @returns {Object}\n * @private\n */\n error(message) {\n return new SyntaxError(message);\n }\n\n /**\n * Skips to the beginning of a next entry after the current position.\n * This is used to mark the boundary of junk entry in case of error,\n * and recover from the returned position.\n *\n * @private\n */\n skipToNextEntryStart() {\n let start = this._index;\n\n while (true) {\n if (start === 0 || this._source[start - 1] === \"\\n\") {\n const cc = this._source.charCodeAt(start);\n\n if ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n cc === 47 || cc === 91) { // /[\n this._index = start;\n return;\n }\n }\n\n start = this._source.indexOf(\"\\n\", start);\n\n if (start === -1) {\n this._index = this._length;\n return;\n }\n start++;\n }\n }\n}\n\n/**\n * Parses an FTL string using RuntimeParser and returns the generated\n * object with entries and a list of errors.\n *\n * @param {String} string\n * @returns {Array}\n */\nexport default function parse(string) {\n const parser = new RuntimeParser();\n return parser.getResource(string);\n}\n","/* global Intl */\n\n/**\n * The `FluentType` class is the base of Fluent's type system.\n *\n * Fluent types wrap JavaScript values and store additional configuration for\n * them, which can then be used in the `toString` method together with a proper\n * `Intl` formatter.\n */\nexport class FluentType {\n\n /**\n * Create an `FluentType` instance.\n *\n * @param {Any} value - JavaScript value to wrap.\n * @param {Object} opts - Configuration.\n * @returns {FluentType}\n */\n constructor(value, opts) {\n this.value = value;\n this.opts = opts;\n }\n\n /**\n * Unwrap the raw value stored by this `FluentType`.\n *\n * @returns {Any}\n */\n valueOf() {\n return this.value;\n }\n\n /**\n * Format this instance of `FluentType` to a string.\n *\n * Formatted values are suitable for use outside of the `MessageContext`.\n * This method can use `Intl` formatters memoized by the `MessageContext`\n * instance passed as an argument.\n *\n * @param {MessageContext} [ctx]\n * @returns {string}\n */\n toString() {\n throw new Error(\"Subclasses of FluentType must implement toString.\");\n }\n}\n\nexport class FluentNone extends FluentType {\n toString() {\n return this.value || \"???\";\n }\n}\n\nexport class FluentNumber extends FluentType {\n constructor(value, opts) {\n super(parseFloat(value), opts);\n }\n\n toString(ctx) {\n try {\n const nf = ctx._memoizeIntlObject(\n Intl.NumberFormat, this.opts\n );\n return nf.format(this.value);\n } catch (e) {\n // XXX Report the error.\n return this.value;\n }\n }\n\n /**\n * Compare the object with another instance of a FluentType.\n *\n * @param {MessageContext} ctx\n * @param {FluentType} other\n * @returns {bool}\n */\n match(ctx, other) {\n if (other instanceof FluentNumber) {\n return this.value === other.value;\n }\n return false;\n }\n}\n\nexport class FluentDateTime extends FluentType {\n constructor(value, opts) {\n super(new Date(value), opts);\n }\n\n toString(ctx) {\n try {\n const dtf = ctx._memoizeIntlObject(\n Intl.DateTimeFormat, this.opts\n );\n return dtf.format(this.value);\n } catch (e) {\n // XXX Report the error.\n return this.value;\n }\n }\n}\n\nexport class FluentSymbol extends FluentType {\n toString() {\n return this.value;\n }\n\n /**\n * Compare the object with another instance of a FluentType.\n *\n * @param {MessageContext} ctx\n * @param {FluentType} other\n * @returns {bool}\n */\n match(ctx, other) {\n if (other instanceof FluentSymbol) {\n return this.value === other.value;\n } else if (typeof other === \"string\") {\n return this.value === other;\n } else if (other instanceof FluentNumber) {\n const pr = ctx._memoizeIntlObject(\n Intl.PluralRules, other.opts\n );\n return this.value === pr.select(other.value);\n }\n return false;\n }\n}\n","/**\n * @overview\n *\n * The FTL resolver ships with a number of functions built-in.\n *\n * Each function take two arguments:\n * - args - an array of positional args\n * - opts - an object of key-value args\n *\n * Arguments to functions are guaranteed to already be instances of\n * `FluentType`. Functions must return `FluentType` objects as well.\n */\n\nimport { FluentNumber, FluentDateTime } from \"./types\";\n\nexport default {\n \"NUMBER\": ([arg], opts) =>\n new FluentNumber(arg.valueOf(), merge(arg.opts, opts)),\n \"DATETIME\": ([arg], opts) =>\n new FluentDateTime(arg.valueOf(), merge(arg.opts, opts)),\n};\n\nfunction merge(argopts, opts) {\n return Object.assign({}, argopts, values(opts));\n}\n\nfunction values(opts) {\n const unwrapped = {};\n for (const [name, opt] of Object.entries(opts)) {\n unwrapped[name] = opt.valueOf();\n }\n return unwrapped;\n}\n","/**\n * @overview\n *\n * The role of the Fluent resolver is to format a translation object to an\n * instance of `FluentType` or an array of instances.\n *\n * Translations can contain references to other messages or external arguments,\n * conditional logic in form of select expressions, traits which describe their\n * grammatical features, and can use Fluent builtins which make use of the\n * `Intl` formatters to format numbers, dates, lists and more into the\n * context's language. See the documentation of the Fluent syntax for more\n * information.\n *\n * In case of errors the resolver will try to salvage as much of the\n * translation as possible. In rare situations where the resolver didn't know\n * how to recover from an error it will return an instance of `FluentNone`.\n *\n * `MessageReference`, `VariantExpression`, `AttributeExpression` and\n * `SelectExpression` resolve to raw Runtime Entries objects and the result of\n * the resolution needs to be passed into `Type` to get their real value.\n * This is useful for composing expressions. Consider:\n *\n * brand-name[nominative]\n *\n * which is a `VariantExpression` with properties `id: MessageReference` and\n * `key: Keyword`. If `MessageReference` was resolved eagerly, it would\n * instantly resolve to the value of the `brand-name` message. Instead, we\n * want to get the message object and look for its `nominative` variant.\n *\n * All other expressions (except for `FunctionReference` which is only used in\n * `CallExpression`) resolve to an instance of `FluentType`. The caller should\n * use the `toString` method to convert the instance to a native value.\n *\n *\n * All functions in this file pass around a special object called `env`.\n * This object stores a set of elements used by all resolve functions:\n *\n * * {MessageContext} ctx\n * context for which the given resolution is happening\n * * {Object} args\n * list of developer provided arguments that can be used\n * * {Array} errors\n * list of errors collected while resolving\n * * {WeakSet} dirty\n * Set of patterns already encountered during this resolution.\n * This is used to prevent cyclic resolutions.\n */\n\n\nimport { FluentType, FluentNone, FluentNumber, FluentDateTime, FluentSymbol }\n from \"./types\";\nimport builtins from \"./builtins\";\n\n// Prevent expansion of too long placeables.\nconst MAX_PLACEABLE_LENGTH = 2500;\n\n// Unicode bidi isolation characters.\nconst FSI = \"\\u2068\";\nconst PDI = \"\\u2069\";\n\n\n/**\n * Helper for choosing the default value from a set of members.\n *\n * Used in SelectExpressions and Type.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} members\n * Hash map of variants from which the default value is to be selected.\n * @param {Number} def\n * The index of the default variant.\n * @returns {FluentType}\n * @private\n */\nfunction DefaultMember(env, members, def) {\n if (members[def]) {\n return members[def];\n }\n\n const { errors } = env;\n errors.push(new RangeError(\"No default\"));\n return new FluentNone();\n}\n\n\n/**\n * Resolve a reference to another message.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} id\n * The identifier of the message to be resolved.\n * @param {String} id.name\n * The name of the identifier.\n * @returns {FluentType}\n * @private\n */\nfunction MessageReference(env, {name}) {\n const { ctx, errors } = env;\n const message = name.startsWith(\"-\")\n ? ctx._terms.get(name)\n : ctx._messages.get(name);\n\n if (!message) {\n const err = name.startsWith(\"-\")\n ? new ReferenceError(`Unknown term: ${name}`)\n : new ReferenceError(`Unknown message: ${name}`);\n errors.push(err);\n return new FluentNone(name);\n }\n\n return message;\n}\n\n/**\n * Resolve a variant expression to the variant object.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {Object} expr.id\n * An Identifier of a message for which the variant is resolved.\n * @param {Object} expr.id.name\n * Name a message for which the variant is resolved.\n * @param {Object} expr.key\n * Variant key to be resolved.\n * @returns {FluentType}\n * @private\n */\nfunction VariantExpression(env, {id, key}) {\n const message = MessageReference(env, id);\n if (message instanceof FluentNone) {\n return message;\n }\n\n const { ctx, errors } = env;\n const keyword = Type(env, key);\n\n function isVariantList(node) {\n return Array.isArray(node) &&\n node[0].type === \"sel\" &&\n node[0].exp === null;\n }\n\n if (isVariantList(message.val)) {\n // Match the specified key against keys of each variant, in order.\n for (const variant of message.val[0].vars) {\n const variantKey = Type(env, variant.key);\n if (keyword.match(ctx, variantKey)) {\n return variant;\n }\n }\n }\n\n errors.push(new ReferenceError(`Unknown variant: ${keyword.toString(ctx)}`));\n return Type(env, message);\n}\n\n\n/**\n * Resolve an attribute expression to the attribute object.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {String} expr.id\n * An ID of a message for which the attribute is resolved.\n * @param {String} expr.name\n * Name of the attribute to be resolved.\n * @returns {FluentType}\n * @private\n */\nfunction AttributeExpression(env, {id, name}) {\n const message = MessageReference(env, id);\n if (message instanceof FluentNone) {\n return message;\n }\n\n if (message.attrs) {\n // Match the specified name against keys of each attribute.\n for (const attrName in message.attrs) {\n if (name === attrName) {\n return message.attrs[name];\n }\n }\n }\n\n const { errors } = env;\n errors.push(new ReferenceError(`Unknown attribute: ${name}`));\n return Type(env, message);\n}\n\n/**\n * Resolve a select expression to the member object.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {String} expr.exp\n * Selector expression\n * @param {Array} expr.vars\n * List of variants for the select expression.\n * @param {Number} expr.def\n * Index of the default variant.\n * @returns {FluentType}\n * @private\n */\nfunction SelectExpression(env, {exp, vars, def}) {\n if (exp === null) {\n return DefaultMember(env, vars, def);\n }\n\n const selector = Type(env, exp);\n if (selector instanceof FluentNone) {\n return DefaultMember(env, vars, def);\n }\n\n // Match the selector against keys of each variant, in order.\n for (const variant of vars) {\n const key = Type(env, variant.key);\n const keyCanMatch =\n key instanceof FluentNumber || key instanceof FluentSymbol;\n\n if (!keyCanMatch) {\n continue;\n }\n\n const { ctx } = env;\n\n if (key.match(ctx, selector)) {\n return variant;\n }\n }\n\n return DefaultMember(env, vars, def);\n}\n\n\n/**\n * Resolve expression to a Fluent type.\n *\n * JavaScript strings are a special case. Since they natively have the\n * `toString` method they can be used as if they were a Fluent type without\n * paying the cost of creating a instance of one.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression object to be resolved into a Fluent type.\n * @returns {FluentType}\n * @private\n */\nfunction Type(env, expr) {\n // A fast-path for strings which are the most common case, and for\n // `FluentNone` which doesn't require any additional logic.\n if (typeof expr === \"string\" || expr instanceof FluentNone) {\n return expr;\n }\n\n // The Runtime AST (Entries) encodes patterns (complex strings with\n // placeables) as Arrays.\n if (Array.isArray(expr)) {\n return Pattern(env, expr);\n }\n\n\n switch (expr.type) {\n case \"varname\":\n return new FluentSymbol(expr.name);\n case \"num\":\n return new FluentNumber(expr.val);\n case \"ext\":\n return ExternalArgument(env, expr);\n case \"fun\":\n return FunctionReference(env, expr);\n case \"call\":\n return CallExpression(env, expr);\n case \"ref\": {\n const message = MessageReference(env, expr);\n return Type(env, message);\n }\n case \"attr\": {\n const attr = AttributeExpression(env, expr);\n return Type(env, attr);\n }\n case \"var\": {\n const variant = VariantExpression(env, expr);\n return Type(env, variant);\n }\n case \"sel\": {\n const member = SelectExpression(env, expr);\n return Type(env, member);\n }\n case undefined: {\n // If it's a node with a value, resolve the value.\n if (expr.val !== null && expr.val !== undefined) {\n return Type(env, expr.val);\n }\n\n const { errors } = env;\n errors.push(new RangeError(\"No value\"));\n return new FluentNone();\n }\n default:\n return new FluentNone();\n }\n}\n\n/**\n * Resolve a reference to an external argument.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {String} expr.name\n * Name of an argument to be returned.\n * @returns {FluentType}\n * @private\n */\nfunction ExternalArgument(env, {name}) {\n const { args, errors } = env;\n\n if (!args || !args.hasOwnProperty(name)) {\n errors.push(new ReferenceError(`Unknown external: ${name}`));\n return new FluentNone(name);\n }\n\n const arg = args[name];\n\n // Return early if the argument already is an instance of FluentType.\n if (arg instanceof FluentType) {\n return arg;\n }\n\n // Convert the argument to a Fluent type.\n switch (typeof arg) {\n case \"string\":\n return arg;\n case \"number\":\n return new FluentNumber(arg);\n case \"object\":\n if (arg instanceof Date) {\n return new FluentDateTime(arg);\n }\n default:\n errors.push(\n new TypeError(`Unsupported external type: ${name}, ${typeof arg}`)\n );\n return new FluentNone(name);\n }\n}\n\n/**\n * Resolve a reference to a function.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {String} expr.name\n * Name of the function to be returned.\n * @returns {Function}\n * @private\n */\nfunction FunctionReference(env, {name}) {\n // Some functions are built-in. Others may be provided by the runtime via\n // the `MessageContext` constructor.\n const { ctx: { _functions }, errors } = env;\n const func = _functions[name] || builtins[name];\n\n if (!func) {\n errors.push(new ReferenceError(`Unknown function: ${name}()`));\n return new FluentNone(`${name}()`);\n }\n\n if (typeof func !== \"function\") {\n errors.push(new TypeError(`Function ${name}() is not callable`));\n return new FluentNone(`${name}()`);\n }\n\n return func;\n}\n\n/**\n * Resolve a call to a Function with positional and key-value arguments.\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Object} expr\n * An expression to be resolved.\n * @param {Object} expr.fun\n * FTL Function object.\n * @param {Array} expr.args\n * FTL Function argument list.\n * @returns {FluentType}\n * @private\n */\nfunction CallExpression(env, {fun, args}) {\n const callee = FunctionReference(env, fun);\n\n if (callee instanceof FluentNone) {\n return callee;\n }\n\n const posargs = [];\n const keyargs = {};\n\n for (const arg of args) {\n if (arg.type === \"narg\") {\n keyargs[arg.name] = Type(env, arg.val);\n } else {\n posargs.push(Type(env, arg));\n }\n }\n\n try {\n return callee(posargs, keyargs);\n } catch (e) {\n // XXX Report errors.\n return new FluentNone();\n }\n}\n\n/**\n * Resolve a pattern (a complex string with placeables).\n *\n * @param {Object} env\n * Resolver environment object.\n * @param {Array} ptn\n * Array of pattern elements.\n * @returns {Array}\n * @private\n */\nfunction Pattern(env, ptn) {\n const { ctx, dirty, errors } = env;\n\n if (dirty.has(ptn)) {\n errors.push(new RangeError(\"Cyclic reference\"));\n return new FluentNone();\n }\n\n // Tag the pattern as dirty for the purpose of the current resolution.\n dirty.add(ptn);\n const result = [];\n\n // Wrap interpolations with Directional Isolate Formatting characters\n // only when the pattern has more than one element.\n const useIsolating = ctx._useIsolating && ptn.length > 1;\n\n for (const elem of ptn) {\n if (typeof elem === \"string\") {\n result.push(elem);\n continue;\n }\n\n const part = Type(env, elem).toString(ctx);\n\n if (useIsolating) {\n result.push(FSI);\n }\n\n if (part.length > MAX_PLACEABLE_LENGTH) {\n errors.push(\n new RangeError(\n \"Too many characters in placeable \" +\n `(${part.length}, max allowed is ${MAX_PLACEABLE_LENGTH})`\n )\n );\n result.push(part.slice(MAX_PLACEABLE_LENGTH));\n } else {\n result.push(part);\n }\n\n if (useIsolating) {\n result.push(PDI);\n }\n }\n\n dirty.delete(ptn);\n return result.join(\"\");\n}\n\n/**\n * Format a translation into a string.\n *\n * @param {MessageContext} ctx\n * A MessageContext instance which will be used to resolve the\n * contextual information of the message.\n * @param {Object} args\n * List of arguments provided by the developer which can be accessed\n * from the message.\n * @param {Object} message\n * An object with the Message to be resolved.\n * @param {Array} errors\n * An error array that any encountered errors will be appended to.\n * @returns {FluentType}\n */\nexport default function resolve(ctx, args, message, errors = []) {\n const env = {\n ctx, args, errors, dirty: new WeakSet()\n };\n return Type(env, message).toString(ctx);\n}\n","import resolve from \"./resolver\";\nimport parse from \"./parser\";\n\n/**\n * Message contexts are single-language stores of translations. They are\n * responsible for parsing translation resources in the Fluent syntax and can\n * format translation units (entities) to strings.\n *\n * Always use `MessageContext.format` to retrieve translation units from\n * a context. Translations can contain references to other entities or\n * external arguments, conditional logic in form of select expressions, traits\n * which describe their grammatical features, and can use Fluent builtins which\n * make use of the `Intl` formatters to format numbers, dates, lists and more\n * into the context's language. See the documentation of the Fluent syntax for\n * more information.\n */\nexport class MessageContext {\n\n /**\n * Create an instance of `MessageContext`.\n *\n * The `locales` argument is used to instantiate `Intl` formatters used by\n * translations. The `options` object can be used to configure the context.\n *\n * Examples:\n *\n * const ctx = new MessageContext(locales);\n *\n * const ctx = new MessageContext(locales, { useIsolating: false });\n *\n * const ctx = new MessageContext(locales, {\n * useIsolating: true,\n * functions: {\n * NODE_ENV: () => process.env.NODE_ENV\n * }\n * });\n *\n * Available options:\n *\n * - `functions` - an object of additional functions available to\n * translations as builtins.\n *\n * - `useIsolating` - boolean specifying whether to use Unicode isolation\n * marks (FSI, PDI) for bidi interpolations.\n *\n * @param {string|Array} locales - Locale or locales of the context\n * @param {Object} [options]\n * @returns {MessageContext}\n */\n constructor(locales, { functions = {}, useIsolating = true } = {}) {\n this.locales = Array.isArray(locales) ? locales : [locales];\n\n this._terms = new Map();\n this._messages = new Map();\n this._functions = functions;\n this._useIsolating = useIsolating;\n this._intls = new WeakMap();\n }\n\n /*\n * Return an iterator over public `[id, message]` pairs.\n *\n * @returns {Iterator}\n */\n get messages() {\n return this._messages[Symbol.iterator]();\n }\n\n /*\n * Check if a message is present in the context.\n *\n * @param {string} id - The identifier of the message to check.\n * @returns {bool}\n */\n hasMessage(id) {\n return this._messages.has(id);\n }\n\n /*\n * Return the internal representation of a message.\n *\n * The internal representation should only be used as an argument to\n * `MessageContext.format`.\n *\n * @param {string} id - The identifier of the message to check.\n * @returns {Any}\n */\n getMessage(id) {\n return this._messages.get(id);\n }\n\n /**\n * Add a translation resource to the context.\n *\n * The translation resource must use the Fluent syntax. It will be parsed by\n * the context and each translation unit (message) will be available in the\n * context by its identifier.\n *\n * ctx.addMessages('foo = Foo');\n * ctx.getMessage('foo');\n *\n * // Returns a raw representation of the 'foo' message.\n *\n * Parsed entities should be formatted with the `format` method in case they\n * contain logic (references, select expressions etc.).\n *\n * @param {string} source - Text resource with translations.\n * @returns {Array}\n */\n addMessages(source) {\n const [entries, errors] = parse(source);\n for (const id in entries) {\n if (id.startsWith(\"-\")) {\n // Identifiers starting with a dash (-) define terms. Terms are private\n // and cannot be retrieved from MessageContext.\n if (this._terms.has(id)) {\n errors.push(`Attempt to override an existing term: \"${id}\"`);\n continue;\n }\n this._terms.set(id, entries[id]);\n } else {\n if (this._messages.has(id)) {\n errors.push(`Attempt to override an existing message: \"${id}\"`);\n continue;\n }\n this._messages.set(id, entries[id]);\n }\n }\n\n return errors;\n }\n\n /**\n * Format a message to a string or null.\n *\n * Format a raw `message` from the context into a string (or a null if it has\n * a null value). `args` will be used to resolve references to external\n * arguments inside of the translation.\n *\n * In case of errors `format` will try to salvage as much of the translation\n * as possible and will still return a string. For performance reasons, the\n * encountered errors are not returned but instead are appended to the\n * `errors` array passed as the third argument.\n *\n * const errors = [];\n * ctx.addMessages('hello = Hello, { $name }!');\n * const hello = ctx.getMessage('hello');\n * ctx.format(hello, { name: 'Jane' }, errors);\n *\n * // Returns 'Hello, Jane!' and `errors` is empty.\n *\n * ctx.format(hello, undefined, errors);\n *\n * // Returns 'Hello, name!' and `errors` is now:\n *\n * []\n *\n * @param {Object | string} message\n * @param {Object | undefined} args\n * @param {Array} errors\n * @returns {?string}\n */\n format(message, args, errors) {\n // optimize entities which are simple strings with no attributes\n if (typeof message === \"string\") {\n return message;\n }\n\n // optimize simple-string entities with attributes\n if (typeof message.val === \"string\") {\n return message.val;\n }\n\n // optimize entities with null values\n if (message.val === undefined) {\n return null;\n }\n\n return resolve(this, args, message, errors);\n }\n\n _memoizeIntlObject(ctor, opts) {\n const cache = this._intls.get(ctor) || {};\n const id = JSON.stringify(opts);\n\n if (!cache[id]) {\n cache[id] = new ctor(this.locales, opts);\n this._intls.set(ctor, cache);\n }\n\n return cache[id];\n }\n}\n","/*\n * CachedIterable caches the elements yielded by an iterable.\n *\n * It can be used to iterate over an iterable many times without depleting the\n * iterable.\n */\nexport default class CachedIterable {\n /**\n * Create an `CachedIterable` instance.\n *\n * @param {Iterable} iterable\n * @returns {CachedIterable}\n */\n constructor(iterable) {\n if (Symbol.asyncIterator in Object(iterable)) {\n this.iterator = iterable[Symbol.asyncIterator]();\n } else if (Symbol.iterator in Object(iterable)) {\n this.iterator = iterable[Symbol.iterator]();\n } else {\n throw new TypeError(\"Argument must implement the iteration protocol.\");\n }\n\n this.seen = [];\n }\n\n [Symbol.iterator]() {\n const { seen, iterator } = this;\n let cur = 0;\n\n return {\n next() {\n if (seen.length <= cur) {\n seen.push(iterator.next());\n }\n return seen[cur++];\n }\n };\n }\n\n [Symbol.asyncIterator]() {\n const { seen, iterator } = this;\n let cur = 0;\n\n return {\n async next() {\n if (seen.length <= cur) {\n seen.push(await iterator.next());\n }\n return seen[cur++];\n }\n };\n }\n\n /**\n * This method allows user to consume the next element from the iterator\n * into the cache.\n */\n touchNext() {\n const { seen, iterator } = this;\n if (seen.length === 0 || seen[seen.length - 1].done === false) {\n seen.push(iterator.next());\n }\n }\n}\n","/*\n * @overview\n *\n * Functions for managing ordered sequences of MessageContexts.\n *\n * An ordered iterable of MessageContext instances can represent the current\n * negotiated fallback chain of languages. This iterable can be used to find\n * the best existing translation for a given identifier.\n *\n * The mapContext* methods can be used to find the first MessageContext in the\n * given iterable which contains the translation with the given identifier. If\n * the iterable is ordered according to the result of a language negotiation\n * the returned MessageContext contains the best available translation.\n *\n * A simple function which formats translations based on the identifier might\n * be implemented as follows:\n *\n * formatString(id, args) {\n * const ctx = mapContextSync(contexts, id);\n *\n * if (ctx === null) {\n * return id;\n * }\n *\n * const msg = ctx.getMessage(id);\n * return ctx.format(msg, args);\n * }\n *\n * In order to pass an iterator to mapContext*, wrap it in CachedIterable.\n * This allows multiple calls to mapContext* without advancing and eventually\n * depleting the iterator.\n *\n * function *generateMessages() {\n * // Some lazy logic for yielding MessageContexts.\n * yield *[ctx1, ctx2];\n * }\n *\n * const contexts = new CachedIterable(generateMessages());\n * const ctx = mapContextSync(contexts, id);\n *\n */\n\n/*\n * Synchronously map an identifier or an array of identifiers to the best\n * `MessageContext` instance(s).\n *\n * @param {Iterable} iterable\n * @param {string|Array} ids\n * @returns {MessageContext|Array}\n */\nexport function mapContextSync(iterable, ids) {\n if (!Array.isArray(ids)) {\n return getContextForId(iterable, ids);\n }\n\n return ids.map(\n id => getContextForId(iterable, id)\n );\n}\n\n/*\n * Find the best `MessageContext` with the translation for `id`.\n */\nfunction getContextForId(iterable, id) {\n for (const context of iterable) {\n if (context.hasMessage(id)) {\n return context;\n }\n }\n\n return null;\n}\n\n/*\n * Asynchronously map an identifier or an array of identifiers to the best\n * `MessageContext` instance(s).\n *\n * @param {AsyncIterable} iterable\n * @param {string|Array} ids\n * @returns {Promise>}\n */\nexport async function mapContextAsync(iterable, ids) {\n if (!Array.isArray(ids)) {\n for await (const context of iterable) {\n if (context.hasMessage(ids)) {\n return context;\n }\n }\n }\n\n let remainingCount = ids.length;\n const foundContexts = new Array(remainingCount).fill(null);\n\n for await (const context of iterable) {\n // XXX Switch to const [index, id] of id.entries() when we move to Babel 7.\n // See https://github.com/babel/babel/issues/5880.\n for (let index = 0; index < ids.length; index++) {\n const id = ids[index];\n if (!foundContexts[index] && context.hasMessage(id)) {\n foundContexts[index] = context;\n remainingCount--;\n }\n\n // Return early when all ids have been mapped to contexts.\n if (remainingCount === 0) {\n return foundContexts;\n }\n }\n }\n\n return foundContexts;\n}\n","function nonBlank(line) {\n return !/^\\s*$/.test(line);\n}\n\nfunction countIndent(line) {\n const [indent] = line.match(/^\\s*/);\n return indent.length;\n}\n\n/**\n * Template literal tag for dedenting FTL code.\n *\n * Strip the common indent of non-blank lines. Remove blank lines.\n *\n * @param {Array} strings\n */\nexport function ftl(strings) {\n const [code] = strings;\n const lines = code.split(\"\\n\").filter(nonBlank);\n const indents = lines.map(countIndent);\n const common = Math.min(...indents);\n const indent = new RegExp(`^\\\\s{${common}}`);\n\n return lines.map(\n line => line.replace(indent, \"\")\n ).join(\"\\n\");\n}\n","/*\n * @module fluent\n * @overview\n *\n * `fluent` is a JavaScript implementation of Project Fluent, a localization\n * framework designed to unleash the expressive power of the natural language.\n *\n */\n\nexport { default as _parse } from \"./parser\";\n\nexport { MessageContext } from \"./context\";\nexport {\n FluentType as MessageArgument,\n FluentNumber as MessageNumberArgument,\n FluentDateTime as MessageDateTimeArgument,\n} from \"./types\";\n\nexport { default as CachedIterable } from \"./cached_iterable\";\nexport { mapContextSync, mapContextAsync } from \"./fallback\";\n\nexport { ftl } from \"./util\";\n","import { CachedIterable, mapContextSync } from \"fluent\";\n\n/*\n * `ReactLocalization` handles translation formatting and fallback.\n *\n * The current negotiated fallback chain of languages is stored in the\n * `ReactLocalization` instance in form of an iterable of `MessageContext`\n * instances. This iterable is used to find the best existing translation for\n * a given identifier.\n *\n * `Localized` components must subscribe to the changes of the\n * `ReactLocalization`'s fallback chain. When the fallback chain changes (the\n * `messages` iterable is set anew), all subscribed compontent must relocalize.\n *\n * The `ReactLocalization` class instances are exposed to `Localized` elements\n * via the `LocalizationProvider` component.\n */\nexport default class ReactLocalization {\n constructor(messages) {\n this.contexts = new CachedIterable(messages);\n this.subs = new Set();\n }\n\n /*\n * Subscribe a `Localized` component to changes of `messages`.\n */\n subscribe(comp) {\n this.subs.add(comp);\n }\n\n /*\n * Unsubscribe a `Localized` component from `messages` changes.\n */\n unsubscribe(comp) {\n this.subs.delete(comp);\n }\n\n /*\n * Set a new `messages` iterable and trigger the retranslation.\n */\n setMessages(messages) {\n this.contexts = new CachedIterable(messages);\n\n // Update all subscribed Localized components.\n this.subs.forEach(comp => comp.relocalize());\n }\n\n getMessageContext(id) {\n return mapContextSync(this.contexts, id);\n }\n\n formatCompound(mcx, msg, args) {\n const value = mcx.format(msg, args);\n\n if (msg.attrs) {\n var attrs = {};\n for (const name of Object.keys(msg.attrs)) {\n attrs[name] = mcx.format(msg.attrs[name], args);\n }\n }\n\n return { value, attrs };\n }\n\n /*\n * Find a translation by `id` and format it to a string using `args`.\n */\n getString(id, args, fallback) {\n const mcx = this.getMessageContext(id);\n\n if (mcx === null) {\n return fallback || id;\n }\n\n const msg = mcx.getMessage(id);\n return mcx.format(msg, args);\n }\n}\n\nexport function isReactLocalization(props, propName) {\n const prop = props[propName];\n\n if (prop instanceof ReactLocalization) {\n return null;\n }\n\n return new Error(\n `The ${propName} context field must be an instance of ReactLocalization.`\n );\n}\n","import { Component, Children } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport ReactLocalization, { isReactLocalization} from \"./localization\";\n\n/*\n * The Provider component for the `ReactLocalization` class.\n *\n * Exposes a `ReactLocalization` instance to all descendants via React's\n * context feature. It makes translations available to all localizable\n * elements in the descendant's render tree without the need to pass them\n * explicitly.\n *\n * \n * …\n * \n *\n * The `LocalizationProvider` component takes one prop: `messages`. It should\n * be an iterable of `MessageContext` instances in order of the user's\n * preferred languages. The `MessageContext` instances will be used by\n * `ReactLocalization` to format translations. If a translation is missing in\n * one instance, `ReactLocalization` will fall back to the next one.\n */\nexport default class LocalizationProvider extends Component {\n constructor(props) {\n super(props);\n const { messages } = props;\n\n if (messages === undefined) {\n throw new Error(\"LocalizationProvider must receive the messages prop.\");\n }\n\n if (!messages[Symbol.iterator]) {\n throw new Error(\"The messages prop must be an iterable.\");\n }\n\n this.l10n = new ReactLocalization(messages);\n }\n\n getChildContext() {\n return {\n l10n: this.l10n\n };\n }\n\n componentWillReceiveProps(next) {\n const { messages } = next;\n\n if (messages !== this.props.messages) {\n this.l10n.setMessages(messages);\n }\n }\n\n render() {\n return Children.only(this.props.children);\n }\n}\n\nLocalizationProvider.childContextTypes = {\n l10n: isReactLocalization\n};\n\nLocalizationProvider.propTypes = {\n children: PropTypes.element.isRequired,\n messages: isIterable\n};\n\nfunction isIterable(props, propName, componentName) {\n const prop = props[propName];\n\n if (Symbol.iterator in Object(prop)) {\n return null;\n }\n\n return new Error(\n `The ${propName} prop supplied to ${componentName} must be an iterable.`\n );\n}\n","import { createElement, Component } from \"react\";\n\nimport { isReactLocalization } from \"./localization\";\n\nexport default function withLocalization(Inner) {\n class WithLocalization extends Component {\n componentDidMount() {\n const { l10n } = this.context;\n\n if (l10n) {\n l10n.subscribe(this);\n }\n }\n\n componentWillUnmount() {\n const { l10n } = this.context;\n\n if (l10n) {\n l10n.unsubscribe(this);\n }\n }\n\n /*\n * Rerender this component in a new language.\n */\n relocalize() {\n // When the `ReactLocalization`'s fallback chain changes, update the\n // component.\n this.forceUpdate();\n }\n\n /*\n * Find a translation by `id` and format it to a string using `args`.\n */\n getString(id, args, fallback) {\n const { l10n } = this.context;\n\n if (!l10n) {\n return fallback || id;\n }\n\n return l10n.getString(id, args, fallback);\n }\n\n render() {\n return createElement(\n Inner,\n Object.assign(\n // getString needs to be re-bound on updates to trigger a re-render\n { getString: (...args) => this.getString(...args) },\n this.props\n )\n );\n }\n }\n\n WithLocalization.displayName = `WithLocalization(${displayName(Inner)})`;\n\n WithLocalization.contextTypes = {\n l10n: isReactLocalization\n };\n\n return WithLocalization;\n}\n\nfunction displayName(component) {\n return component.displayName || component.name || \"Component\";\n}\n","/* eslint-env browser */\n\nconst TEMPLATE = document.createElement(\"template\");\n\nexport function parseMarkup(str) {\n TEMPLATE.innerHTML = str;\n return TEMPLATE.content;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in this directory.\n */\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true,\n // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\nexport default omittedCloseTags;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in this directory.\n */\n\nimport omittedCloseTags from './omittedCloseTags';\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = {\n menuitem: true,\n ...omittedCloseTags,\n};\n\nexport default voidElementTags;\n","import { isValidElement, cloneElement, Component, Children } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isReactLocalization } from \"./localization\";\nimport { parseMarkup } from \"./markup\";\nimport VOID_ELEMENTS from \"../vendor/voidElementTags\";\n\n// Match the opening angle bracket (<) in HTML tags, and HTML entities like\n// &, &, &.\nconst reMarkup = /<|?\\w+;/;\n\n/*\n * Prepare props passed to `Localized` for formatting.\n */\nfunction toArguments(props) {\n const args = {};\n const elems = {};\n\n for (const [propname, propval] of Object.entries(props)) {\n if (propname.startsWith(\"$\")) {\n const name = propname.substr(1);\n args[name] = propval;\n } else if (isValidElement(propval)) {\n // We'll try to match localNames of elements found in the translation with\n // names of elements passed as props. localNames are always lowercase.\n const name = propname.toLowerCase();\n elems[name] = propval;\n }\n }\n\n return [args, elems];\n}\n\n/*\n * The `Localized` class renders its child with translated props and children.\n *\n * \n * {'Hello, world!'}\n * \n *\n * The `id` prop should be the unique identifier of the translation. Any\n * attributes found in the translation will be applied to the wrapped element.\n *\n * Arguments to the translation can be passed as `$`-prefixed props on\n * `Localized`.\n *\n * \n * {'Hello, { $username }!'}\n * \n *\n * It's recommended that the contents of the wrapped component be a string\n * expression. The string will be used as the ultimate fallback if no\n * translation is available. It also makes it easy to grep for strings in the\n * source code.\n */\nexport default class Localized extends Component {\n componentDidMount() {\n const { l10n } = this.context;\n\n if (l10n) {\n l10n.subscribe(this);\n }\n }\n\n componentWillUnmount() {\n const { l10n } = this.context;\n\n if (l10n) {\n l10n.unsubscribe(this);\n }\n }\n\n /*\n * Rerender this component in a new language.\n */\n relocalize() {\n // When the `ReactLocalization`'s fallback chain changes, update the\n // component.\n this.forceUpdate();\n }\n\n render() {\n const { l10n } = this.context;\n const { id, attrs, children } = this.props;\n const elem = Children.only(children);\n\n if (!l10n) {\n // Use the wrapped component as fallback.\n return elem;\n }\n\n const mcx = l10n.getMessageContext(id);\n\n if (mcx === null) {\n // Use the wrapped component as fallback.\n return elem;\n }\n\n const msg = mcx.getMessage(id);\n const [args, elems] = toArguments(this.props);\n const {\n value: messageValue,\n attrs: messageAttrs\n } = l10n.formatCompound(mcx, msg, args);\n\n // The default is to forbid all message attributes. If the attrs prop exists\n // on the Localized instance, only set message attributes which have been\n // explicitly allowed by the developer.\n if (attrs && messageAttrs) {\n var localizedProps = {};\n\n for (const [name, value] of Object.entries(messageAttrs)) {\n if (attrs[name]) {\n localizedProps[name] = value;\n }\n }\n }\n\n // If the wrapped component is a known void element, explicitly dismiss the\n // message value and do not pass it to cloneElement in order to avoid the\n // \"void element tags must neither have `children` nor use\n // `dangerouslySetInnerHTML`\" error.\n if (elem.type in VOID_ELEMENTS) {\n return cloneElement(elem, localizedProps);\n }\n\n // If the message has a null value, we're only interested in its attributes.\n // Do not pass the null value to cloneElement as it would nuke all children\n // of the wrapped component.\n if (messageValue === null) {\n return cloneElement(elem, localizedProps);\n }\n\n // If the message value doesn't contain any markup nor any HTML entities,\n // insert it as the only child of the wrapped component.\n if (!reMarkup.test(messageValue)) {\n return cloneElement(elem, localizedProps, messageValue);\n }\n\n // If the message contains markup, parse it and try to match the children\n // found in the translation with the props passed to this Localized.\n const translationNodes = Array.from(parseMarkup(messageValue).childNodes);\n const translatedChildren = translationNodes.map(childNode => {\n if (childNode.nodeType === childNode.TEXT_NODE) {\n return childNode.textContent;\n }\n\n // If the child is not expected just take its textContent.\n if (!elems.hasOwnProperty(childNode.localName)) {\n return childNode.textContent;\n }\n\n const sourceChild = elems[childNode.localName];\n\n // If the element passed as a prop to is a known void element,\n // explicitly dismiss any textContent which might have accidentally been\n // defined in the translation to prevent the \"void element tags must not\n // have children\" error.\n if (sourceChild.type in VOID_ELEMENTS) {\n return sourceChild;\n }\n\n // TODO Protect contents of elements wrapped in \n // https://github.com/projectfluent/fluent.js/issues/184\n // TODO Control localizable attributes on elements passed as props\n // https://github.com/projectfluent/fluent.js/issues/185\n return cloneElement(sourceChild, null, childNode.textContent);\n });\n\n return cloneElement(elem, localizedProps, ...translatedChildren);\n }\n}\n\nLocalized.contextTypes = {\n l10n: isReactLocalization\n};\n\nLocalized.propTypes = {\n children: PropTypes.element.isRequired,\n};\n","/*\n * @module fluent-react\n * @overview\n *\n\n * `fluent-react` provides React bindings for Fluent. It takes advantage of\n * React's Components system and the virtual DOM. Translations are exposed to\n * components via the provider pattern.\n *\n * \n * \n * {'Hello, world!'}\n * \n * \n *\n * Consult the documentation of the `LocalizationProvider` and the `Localized`\n * components for more information.\n */\n\nexport { default as LocalizationProvider } from \"./provider\";\nexport { default as withLocalization } from \"./with_localization\";\nexport { default as Localized } from \"./localized\";\nexport { default as ReactLocalization, isReactLocalization }\n from \"./localization\";\n","this.Dedupe = class Dedupe {\n constructor(createKey) {\n this.createKey = createKey || this.defaultCreateKey;\n }\n\n defaultCreateKey(item) {\n return item;\n }\n\n /**\n * Dedupe any number of grouped elements favoring those from earlier groups.\n *\n * @param {Array} groups Contains an arbitrary number of arrays of elements.\n * @returns {Array} A matching array of each provided group deduped.\n */\n group(...groups) {\n const globalKeys = new Set();\n const result = [];\n for (const values of groups) {\n const valueMap = new Map();\n for (const value of values) {\n const key = this.createKey(value);\n if (!globalKeys.has(key) && !valueMap.has(key)) {\n valueMap.set(key, value);\n }\n }\n result.push(valueMap);\n valueMap.forEach((value, key) => globalKeys.add(key));\n }\n return result.map(m => Array.from(m.values()));\n }\n};\n\nconst EXPORTED_SYMBOLS = [\"Dedupe\"];\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nconst {actionTypes: at} = ChromeUtils.import(\"resource://activity-stream/common/Actions.jsm\", {});\nconst {Dedupe} = ChromeUtils.import(\"resource://activity-stream/common/Dedupe.jsm\", {});\n\nconst TOP_SITES_DEFAULT_ROWS = 1;\nconst TOP_SITES_MAX_SITES_PER_ROW = 8;\n\nconst dedupe = new Dedupe(site => site && site.url);\n\nconst INITIAL_STATE = {\n App: {\n // Have we received real data from the app yet?\n initialized: false,\n },\n ASRouter: {\n initialized: false,\n allowLegacySnippets: null,\n },\n Snippets: {initialized: false},\n TopSites: {\n // Have we received real data from history yet?\n initialized: false,\n // The history (and possibly default) links\n rows: [],\n // Used in content only to dispatch action to TopSiteForm.\n editForm: null,\n // Used in content only to open the SearchShortcutsForm modal.\n showSearchShortcutsForm: false,\n // The list of available search shortcuts.\n searchShortcuts: [],\n },\n Prefs: {\n initialized: false,\n values: {},\n },\n Dialog: {\n visible: false,\n data: {},\n },\n Sections: [],\n Pocket: {\n isUserLoggedIn: null,\n pocketCta: {},\n waitingForSpoc: true,\n },\n};\n\nfunction App(prevState = INITIAL_STATE.App, action) {\n switch (action.type) {\n case at.INIT:\n return Object.assign({}, prevState, action.data || {}, {initialized: true});\n default:\n return prevState;\n }\n}\n\nfunction ASRouter(prevState = INITIAL_STATE.ASRouter, action) {\n switch (action.type) {\n case at.AS_ROUTER_INITIALIZED:\n return {...action.data, initialized: true};\n case at.AS_ROUTER_PREF_CHANGED:\n return {...prevState, ...action.data};\n default:\n return prevState;\n }\n}\n\n/**\n * insertPinned - Inserts pinned links in their specified slots\n *\n * @param {array} a list of links\n * @param {array} a list of pinned links\n * @return {array} resulting list of links with pinned links inserted\n */\nfunction insertPinned(links, pinned) {\n // Remove any pinned links\n const pinnedUrls = pinned.map(link => link && link.url);\n let newLinks = links.filter(link => (link ? !pinnedUrls.includes(link.url) : false));\n newLinks = newLinks.map(link => {\n if (link && link.isPinned) {\n delete link.isPinned;\n delete link.pinIndex;\n }\n return link;\n });\n\n // Then insert them in their specified location\n pinned.forEach((val, index) => {\n if (!val) { return; }\n let link = Object.assign({}, val, {isPinned: true, pinIndex: index});\n if (index > newLinks.length) {\n newLinks[index] = link;\n } else {\n newLinks.splice(index, 0, link);\n }\n });\n\n return newLinks;\n}\n\nfunction TopSites(prevState = INITIAL_STATE.TopSites, action) {\n let hasMatch;\n let newRows;\n switch (action.type) {\n case at.TOP_SITES_UPDATED:\n if (!action.data || !action.data.links) {\n return prevState;\n }\n return Object.assign({}, prevState, {initialized: true, rows: action.data.links}, action.data.pref ? {pref: action.data.pref} : {});\n case at.TOP_SITES_PREFS_UPDATED:\n return Object.assign({}, prevState, {pref: action.data.pref});\n case at.TOP_SITES_EDIT:\n return Object.assign({}, prevState, {\n editForm: {\n index: action.data.index,\n previewResponse: null,\n },\n });\n case at.TOP_SITES_CANCEL_EDIT:\n return Object.assign({}, prevState, {editForm: null});\n case at.TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL:\n return Object.assign({}, prevState, {showSearchShortcutsForm: true});\n case at.TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL:\n return Object.assign({}, prevState, {showSearchShortcutsForm: false});\n case at.PREVIEW_RESPONSE:\n if (!prevState.editForm || action.data.url !== prevState.editForm.previewUrl) {\n return prevState;\n }\n return Object.assign({}, prevState, {\n editForm: {\n index: prevState.editForm.index,\n previewResponse: action.data.preview,\n previewUrl: action.data.url,\n },\n });\n case at.PREVIEW_REQUEST:\n if (!prevState.editForm) {\n return prevState;\n }\n return Object.assign({}, prevState, {\n editForm: {\n index: prevState.editForm.index,\n previewResponse: null,\n previewUrl: action.data.url,\n },\n });\n case at.PREVIEW_REQUEST_CANCEL:\n if (!prevState.editForm) {\n return prevState;\n }\n return Object.assign({}, prevState, {\n editForm: {\n index: prevState.editForm.index,\n previewResponse: null,\n },\n });\n case at.SCREENSHOT_UPDATED:\n newRows = prevState.rows.map(row => {\n if (row && row.url === action.data.url) {\n hasMatch = true;\n return Object.assign({}, row, {screenshot: action.data.screenshot});\n }\n return row;\n });\n return hasMatch ? Object.assign({}, prevState, {rows: newRows}) : prevState;\n case at.PLACES_BOOKMARK_ADDED:\n if (!action.data) {\n return prevState;\n }\n newRows = prevState.rows.map(site => {\n if (site && site.url === action.data.url) {\n const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n return Object.assign({}, site, {bookmarkGuid, bookmarkTitle, bookmarkDateCreated: dateAdded});\n }\n return site;\n });\n return Object.assign({}, prevState, {rows: newRows});\n case at.PLACES_BOOKMARK_REMOVED:\n if (!action.data) {\n return prevState;\n }\n newRows = prevState.rows.map(site => {\n if (site && site.url === action.data.url) {\n const newSite = Object.assign({}, site);\n delete newSite.bookmarkGuid;\n delete newSite.bookmarkTitle;\n delete newSite.bookmarkDateCreated;\n return newSite;\n }\n return site;\n });\n return Object.assign({}, prevState, {rows: newRows});\n case at.PLACES_LINK_DELETED:\n if (!action.data) {\n return prevState;\n }\n newRows = prevState.rows.filter(site => action.data.url !== site.url);\n return Object.assign({}, prevState, {rows: newRows});\n case at.UPDATE_SEARCH_SHORTCUTS:\n return {...prevState, searchShortcuts: action.data.searchShortcuts};\n case at.SNIPPETS_PREVIEW_MODE:\n return {...prevState, rows: []};\n default:\n return prevState;\n }\n}\n\nfunction Dialog(prevState = INITIAL_STATE.Dialog, action) {\n switch (action.type) {\n case at.DIALOG_OPEN:\n return Object.assign({}, prevState, {visible: true, data: action.data});\n case at.DIALOG_CANCEL:\n return Object.assign({}, prevState, {visible: false});\n case at.DELETE_HISTORY_URL:\n return Object.assign({}, INITIAL_STATE.Dialog);\n default:\n return prevState;\n }\n}\n\nfunction Prefs(prevState = INITIAL_STATE.Prefs, action) {\n let newValues;\n switch (action.type) {\n case at.PREFS_INITIAL_VALUES:\n return Object.assign({}, prevState, {initialized: true, values: action.data});\n case at.PREF_CHANGED:\n newValues = Object.assign({}, prevState.values);\n newValues[action.data.name] = action.data.value;\n return Object.assign({}, prevState, {values: newValues});\n default:\n return prevState;\n }\n}\n\nfunction Sections(prevState = INITIAL_STATE.Sections, action) {\n let hasMatch;\n let newState;\n switch (action.type) {\n case at.SECTION_DEREGISTER:\n return prevState.filter(section => section.id !== action.data);\n case at.SECTION_REGISTER:\n // If section exists in prevState, update it\n newState = prevState.map(section => {\n if (section && section.id === action.data.id) {\n hasMatch = true;\n return Object.assign({}, section, action.data);\n }\n return section;\n });\n // Otherwise, append it\n if (!hasMatch) {\n const initialized = !!(action.data.rows && action.data.rows.length > 0);\n const section = Object.assign({title: \"\", rows: [], enabled: false}, action.data, {initialized});\n newState.push(section);\n }\n return newState;\n case at.SECTION_UPDATE:\n newState = prevState.map(section => {\n if (section && section.id === action.data.id) {\n // If the action is updating rows, we should consider initialized to be true.\n // This can be overridden if initialized is defined in the action.data\n const initialized = action.data.rows ? {initialized: true} : {};\n\n // Make sure pinned cards stay at their current position when rows are updated.\n // Disabling a section (SECTION_UPDATE with empty rows) does not retain pinned cards.\n if (action.data.rows && action.data.rows.length > 0 && section.rows.find(card => card.pinned)) {\n const rows = Array.from(action.data.rows);\n section.rows.forEach((card, index) => {\n if (card.pinned) {\n // Only add it if it's not already there.\n if (rows[index].guid !== card.guid) {\n rows.splice(index, 0, card);\n }\n }\n });\n return Object.assign({}, section, initialized, Object.assign({}, action.data, {rows}));\n }\n\n return Object.assign({}, section, initialized, action.data);\n }\n return section;\n });\n\n if (!action.data.dedupeConfigurations) {\n return newState;\n }\n\n action.data.dedupeConfigurations.forEach(dedupeConf => {\n newState = newState.map(section => {\n if (section.id === dedupeConf.id) {\n const dedupedRows = dedupeConf.dedupeFrom.reduce((rows, dedupeSectionId) => {\n const dedupeSection = newState.find(s => s.id === dedupeSectionId);\n const [, newRows] = dedupe.group(dedupeSection.rows, rows);\n return newRows;\n }, section.rows);\n\n return Object.assign({}, section, {rows: dedupedRows});\n }\n\n return section;\n });\n });\n\n return newState;\n case at.SECTION_UPDATE_CARD:\n return prevState.map(section => {\n if (section && section.id === action.data.id && section.rows) {\n const newRows = section.rows.map(card => {\n if (card.url === action.data.url) {\n return Object.assign({}, card, action.data.options);\n }\n return card;\n });\n return Object.assign({}, section, {rows: newRows});\n }\n return section;\n });\n case at.PLACES_BOOKMARK_ADDED:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section => Object.assign({}, section, {\n rows: section.rows.map(item => {\n // find the item within the rows that is attempted to be bookmarked\n if (item.url === action.data.url) {\n const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n return Object.assign({}, item, {\n bookmarkGuid,\n bookmarkTitle,\n bookmarkDateCreated: dateAdded,\n type: \"bookmark\",\n });\n }\n return item;\n }),\n }));\n case at.PLACES_SAVED_TO_POCKET:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section => Object.assign({}, section, {\n rows: section.rows.map(item => {\n if (item.url === action.data.url) {\n return Object.assign({}, item, {\n open_url: action.data.open_url,\n pocket_id: action.data.pocket_id,\n title: action.data.title,\n type: \"pocket\",\n });\n }\n return item;\n }),\n }));\n case at.PLACES_BOOKMARK_REMOVED:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section => Object.assign({}, section, {\n rows: section.rows.map(item => {\n // find the bookmark within the rows that is attempted to be removed\n if (item.url === action.data.url) {\n const newSite = Object.assign({}, item);\n delete newSite.bookmarkGuid;\n delete newSite.bookmarkTitle;\n delete newSite.bookmarkDateCreated;\n if (!newSite.type || newSite.type === \"bookmark\") {\n newSite.type = \"history\";\n }\n return newSite;\n }\n return item;\n }),\n }));\n case at.PLACES_LINK_DELETED:\n case at.PLACES_LINK_BLOCKED:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section =>\n Object.assign({}, section, {rows: section.rows.filter(site => site.url !== action.data.url)}));\n case at.DELETE_FROM_POCKET:\n case at.ARCHIVE_FROM_POCKET:\n return prevState.map(section =>\n Object.assign({}, section, {rows: section.rows.filter(site => site.pocket_id !== action.data.pocket_id)}));\n case at.SNIPPETS_PREVIEW_MODE:\n return prevState.map(section => ({...section, rows: []}));\n default:\n return prevState;\n }\n}\n\nfunction Snippets(prevState = INITIAL_STATE.Snippets, action) {\n switch (action.type) {\n case at.SNIPPETS_DATA:\n return Object.assign({}, prevState, {initialized: true}, action.data);\n case at.SNIPPET_BLOCKED:\n return Object.assign({}, prevState, {blockList: prevState.blockList.concat(action.data)});\n case at.SNIPPETS_BLOCKLIST_CLEARED:\n return Object.assign({}, prevState, {blockList: []});\n case at.SNIPPETS_RESET:\n return INITIAL_STATE.Snippets;\n default:\n return prevState;\n }\n}\n\nfunction Pocket(prevState = INITIAL_STATE.Pocket, action) {\n switch (action.type) {\n case at.POCKET_WAITING_FOR_SPOC:\n return {...prevState, waitingForSpoc: action.data};\n case at.POCKET_LOGGED_IN:\n return {...prevState, isUserLoggedIn: !!action.data};\n case at.POCKET_CTA:\n return {\n ...prevState,\n pocketCta: {\n ctaButton: action.data.cta_button,\n ctaText: action.data.cta_text,\n ctaUrl: action.data.cta_url,\n useCta: action.data.use_cta,\n },\n };\n default:\n return prevState;\n }\n}\n\nthis.INITIAL_STATE = INITIAL_STATE;\nthis.TOP_SITES_DEFAULT_ROWS = TOP_SITES_DEFAULT_ROWS;\nthis.TOP_SITES_MAX_SITES_PER_ROW = TOP_SITES_MAX_SITES_PER_ROW;\n\nthis.reducers = {TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket};\n\nconst EXPORTED_SYMBOLS = [\"reducers\", \"INITIAL_STATE\", \"insertPinned\", \"TOP_SITES_DEFAULT_ROWS\", \"TOP_SITES_MAX_SITES_PER_ROW\"];\n","export const cardContextTypes = {\n history: {\n intlID: \"type_label_visited\",\n icon: \"history-item\",\n },\n bookmark: {\n intlID: \"type_label_bookmarked\",\n icon: \"bookmark-added\",\n },\n trending: {\n intlID: \"type_label_recommended\",\n icon: \"trending\",\n },\n now: {\n intlID: \"type_label_now\",\n icon: \"now\",\n },\n pocket: {\n intlID: \"type_label_pocket\",\n icon: \"pocket\",\n },\n download: {\n intlID: \"type_label_downloaded\",\n icon: \"download\",\n },\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {cardContextTypes} from \"./types\";\nimport {connect} from \"react-redux\";\nimport {GetPlatformString} from \"content-src/lib/link-menu-options\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {ScreenshotUtils} from \"content-src/lib/screenshot-utils\";\n\n// Keep track of pending image loads to only request once\nconst gImageLoading = new Map();\n\n/**\n * Card component.\n * Cards are found within a Section component and contain information about a link such\n * as preview image, page title, page description, and some context about if the page\n * was visited, bookmarked, trending etc...\n * Each Section can make an unordered list of Cards which will create one instane of\n * this class. Each card will then get a context menu which reflects the actions that\n * can be done on this Card.\n */\nexport class _Card extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n activeCard: null,\n imageLoaded: false,\n showContextMenu: false,\n cardImage: null,\n };\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n this.onLinkClick = this.onLinkClick.bind(this);\n }\n\n /**\n * Helper to conditionally load an image and update state when it loads.\n */\n async maybeLoadImage() {\n // No need to load if it's already loaded or no image\n const {cardImage} = this.state;\n if (!cardImage) {\n return;\n }\n\n const imageUrl = cardImage.url;\n if (!this.state.imageLoaded) {\n // Initialize a promise to share a load across multiple card updates\n if (!gImageLoading.has(imageUrl)) {\n const loaderPromise = new Promise((resolve, reject) => {\n const loader = new Image();\n loader.addEventListener(\"load\", resolve);\n loader.addEventListener(\"error\", reject);\n loader.src = imageUrl;\n });\n\n // Save and remove the promise only while it's pending\n gImageLoading.set(imageUrl, loaderPromise);\n loaderPromise.catch(ex => ex).then(() => gImageLoading.delete(imageUrl)).catch();\n }\n\n // Wait for the image whether just started loading or reused promise\n await gImageLoading.get(imageUrl);\n\n // Only update state if we're still waiting to load the original image\n if (ScreenshotUtils.isRemoteImageLocal(this.state.cardImage, this.props.link.image) &&\n !this.state.imageLoaded) {\n this.setState({imageLoaded: true});\n }\n }\n }\n\n /**\n * Helper to obtain the next state based on nextProps and prevState.\n *\n * NOTE: Rename this method to getDerivedStateFromProps when we update React\n * to >= 16.3. We will need to update tests as well. We cannot rename this\n * method to getDerivedStateFromProps now because there is a mismatch in\n * the React version that we are using for both testing and production.\n * (i.e. react-test-render => \"16.3.2\", react => \"16.2.0\").\n *\n * See https://github.com/airbnb/enzyme/blob/master/packages/enzyme-adapter-react-16/package.json#L43.\n */\n static getNextStateFromProps(nextProps, prevState) {\n const {image} = nextProps.link;\n const imageInState = ScreenshotUtils.isRemoteImageLocal(prevState.cardImage, image);\n let nextState = null;\n\n // Image is updating.\n if (!imageInState && nextProps.link) {\n nextState = {imageLoaded: false};\n }\n\n if (imageInState) {\n return nextState;\n }\n\n // Since image was updated, attempt to revoke old image blob URL, if it exists.\n ScreenshotUtils.maybeRevokeBlobObjectURL(prevState.cardImage);\n\n nextState = nextState || {};\n nextState.cardImage = ScreenshotUtils.createLocalImageObject(image);\n\n return nextState;\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.setState({\n activeCard: this.props.index,\n showContextMenu: true,\n });\n }\n\n /**\n * Report to telemetry additional information about the item.\n */\n _getTelemetryInfo() {\n // Filter out \"history\" type for being the default\n if (this.props.link.type !== \"history\") {\n return {value: {card_type: this.props.link.type}};\n }\n\n return null;\n }\n\n onLinkClick(event) {\n event.preventDefault();\n if (this.props.link.type === \"download\") {\n this.props.dispatch(ac.OnlyToMain({\n type: at.SHOW_DOWNLOAD_FILE,\n data: this.props.link,\n }));\n } else {\n const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n this.props.dispatch(ac.OnlyToMain({\n type: at.OPEN_LINK,\n data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}}),\n }));\n }\n if (this.props.isWebExtension) {\n this.props.dispatch(ac.WebExtEvent(at.WEBEXT_CLICK, {\n source: this.props.eventSource,\n url: this.props.link.url,\n action_position: this.props.index,\n }));\n } else {\n this.props.dispatch(ac.UserEvent(Object.assign({\n event: \"CLICK\",\n source: this.props.eventSource,\n action_position: this.props.index,\n }, this._getTelemetryInfo())));\n\n if (this.props.shouldSendImpressionStats) {\n this.props.dispatch(ac.ImpressionStats({\n source: this.props.eventSource,\n click: 0,\n tiles: [{id: this.props.link.guid, pos: this.props.index}],\n }));\n }\n }\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n componentDidMount() {\n this.maybeLoadImage();\n }\n\n componentDidUpdate() {\n this.maybeLoadImage();\n }\n\n // NOTE: Remove this function when we update React to >= 16.3 since React will\n // call getDerivedStateFromProps automatically. We will also need to\n // rename getNextStateFromProps to getDerivedStateFromProps.\n componentWillMount() {\n const nextState = _Card.getNextStateFromProps(this.props, this.state);\n if (nextState) {\n this.setState(nextState);\n }\n }\n\n // NOTE: Remove this function when we update React to >= 16.3 since React will\n // call getDerivedStateFromProps automatically. We will also need to\n // rename getNextStateFromProps to getDerivedStateFromProps.\n componentWillReceiveProps(nextProps) {\n const nextState = _Card.getNextStateFromProps(nextProps, this.state);\n if (nextState) {\n this.setState(nextState);\n }\n }\n\n componentWillUnmount() {\n ScreenshotUtils.maybeRevokeBlobObjectURL(this.state.cardImage);\n }\n\n render() {\n const {index, className, link, dispatch, contextMenuOptions, eventSource, shouldSendImpressionStats} = this.props;\n const {props} = this;\n const isContextMenuOpen = this.state.showContextMenu && this.state.activeCard === index;\n // Display \"now\" as \"trending\" until we have new strings #3402\n const {icon, intlID} = cardContextTypes[link.type === \"now\" ? \"trending\" : link.type] || {};\n const hasImage = this.state.cardImage || link.hasImage;\n const imageStyle = {backgroundImage: this.state.cardImage ? `url(${this.state.cardImage.url})` : \"none\"};\n const outerClassName = [\n \"card-outer\",\n className,\n isContextMenuOpen && \"active\",\n props.placeholder && \"placeholder\",\n ].filter(v => v).join(\" \");\n\n return (\n \n \n \n {hasImage &&\n \n }\n \n \n {link.type === \"download\" && }\n {link.hostname &&\n \n {link.hostname.slice(0, 100)}{link.type === \"download\" && ` \\u2014 ${link.description}`}\n \n }\n \n {link.title}\n {link.description}\n \n \n {icon && !link.context && }\n {link.icon && link.context && }\n {intlID && !link.context && }\n {link.context && {link.context}}\n \n \n \n \n {!props.placeholder && \n {`Open context menu for ${link.title}`}\n }\n {isContextMenuOpen &&\n \n }\n );\n }\n}\n_Card.defaultProps = {link: {}};\nexport const Card = connect(state => ({platform: state.Prefs.values.platform}))(injectIntl(_Card));\nexport const PlaceholderCard = props => ;\n","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class TopSiteFormInput extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {validationError: this.props.validationError};\n this.onChange = this.onChange.bind(this);\n this.onMount = this.onMount.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.shouldFocus && !this.props.shouldFocus) {\n this.input.focus();\n }\n if (nextProps.validationError && !this.props.validationError) {\n this.setState({validationError: true});\n }\n // If the component is in an error state but the value was cleared by the parent\n if (this.state.validationError && !nextProps.value) {\n this.setState({validationError: false});\n }\n }\n\n onChange(ev) {\n if (this.state.validationError) {\n this.setState({validationError: false});\n }\n this.props.onChange(ev);\n }\n\n onMount(input) {\n this.input = input;\n }\n\n render() {\n const showClearButton = this.props.value && this.props.onClear;\n const {typeUrl} = this.props;\n const {validationError} = this.state;\n\n return (\n \n {this.props.loading ?\n :\n showClearButton && }\n \n {validationError &&\n }\n \n );\n }\n}\n\nTopSiteFormInput.defaultProps = {\n showClearButton: false,\n value: \"\",\n validationError: false,\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {TopSiteFormInput} from \"./TopSiteFormInput\";\nimport {TopSiteLink} from \"./TopSite\";\n\nexport class TopSiteForm extends React.PureComponent {\n constructor(props) {\n super(props);\n const {site} = props;\n this.state = {\n label: site ? (site.label || site.hostname) : \"\",\n url: site ? site.url : \"\",\n validationError: false,\n customScreenshotUrl: site ? site.customScreenshotURL : \"\",\n showCustomScreenshotForm: site ? site.customScreenshotURL : false,\n };\n this.onClearScreenshotInput = this.onClearScreenshotInput.bind(this);\n this.onLabelChange = this.onLabelChange.bind(this);\n this.onUrlChange = this.onUrlChange.bind(this);\n this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n this.onClearUrlClick = this.onClearUrlClick.bind(this);\n this.onDoneButtonClick = this.onDoneButtonClick.bind(this);\n this.onCustomScreenshotUrlChange = this.onCustomScreenshotUrlChange.bind(this);\n this.onPreviewButtonClick = this.onPreviewButtonClick.bind(this);\n this.onEnableScreenshotUrlForm = this.onEnableScreenshotUrlForm.bind(this);\n this.validateUrl = this.validateUrl.bind(this);\n }\n\n onLabelChange(event) {\n this.setState({\"label\": event.target.value});\n }\n\n onUrlChange(event) {\n this.setState({\n url: event.target.value,\n validationError: false,\n });\n }\n\n onClearUrlClick() {\n this.setState({\n url: \"\",\n validationError: false,\n });\n }\n\n onEnableScreenshotUrlForm() {\n this.setState({showCustomScreenshotForm: true});\n }\n\n _updateCustomScreenshotInput(customScreenshotUrl) {\n this.setState({\n customScreenshotUrl,\n validationError: false,\n });\n this.props.dispatch({type: at.PREVIEW_REQUEST_CANCEL});\n }\n\n onCustomScreenshotUrlChange(event) {\n this._updateCustomScreenshotInput(event.target.value);\n }\n\n onClearScreenshotInput() {\n this._updateCustomScreenshotInput(\"\");\n }\n\n onCancelButtonClick(ev) {\n ev.preventDefault();\n this.props.onClose();\n }\n\n onDoneButtonClick(ev) {\n ev.preventDefault();\n\n if (this.validateForm()) {\n const site = {url: this.cleanUrl(this.state.url)};\n const {index} = this.props;\n if (this.state.label !== \"\") {\n site.label = this.state.label;\n }\n\n if (this.state.customScreenshotUrl) {\n site.customScreenshotURL = this.cleanUrl(this.state.customScreenshotUrl);\n } else if (this.props.site && this.props.site.customScreenshotURL) {\n // Used to flag that previously cached screenshot should be removed\n site.customScreenshotURL = null;\n }\n this.props.dispatch(ac.AlsoToMain({\n type: at.TOP_SITES_PIN,\n data: {site, index},\n }));\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_EDIT\",\n action_position: index,\n }));\n\n this.props.onClose();\n }\n }\n\n onPreviewButtonClick(event) {\n event.preventDefault();\n if (this.validateForm()) {\n this.props.dispatch(ac.AlsoToMain({\n type: at.PREVIEW_REQUEST,\n data: {url: this.cleanUrl(this.state.customScreenshotUrl)},\n }));\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"PREVIEW_REQUEST\",\n }));\n }\n }\n\n cleanUrl(url) {\n // If we are missing a protocol, prepend http://\n if (!url.startsWith(\"http:\") && !url.startsWith(\"https:\")) {\n return `http://${url}`;\n }\n return url;\n }\n\n _tryParseUrl(url) {\n try {\n return new URL(url);\n } catch (e) {\n return null;\n }\n }\n\n validateUrl(url) {\n const validProtocols = [\"http:\", \"https:\"];\n const urlObj = this._tryParseUrl(url) || this._tryParseUrl(this.cleanUrl(url));\n\n return urlObj && validProtocols.includes(urlObj.protocol);\n }\n\n validateCustomScreenshotUrl() {\n const {customScreenshotUrl} = this.state;\n return !customScreenshotUrl || this.validateUrl(customScreenshotUrl);\n }\n\n validateForm() {\n const validate = this.validateUrl(this.state.url) && this.validateCustomScreenshotUrl();\n\n if (!validate) {\n this.setState({validationError: true});\n }\n\n return validate;\n }\n\n _renderCustomScreenshotInput() {\n const {customScreenshotUrl} = this.state;\n const requestFailed = this.props.previewResponse === \"\";\n const validationError = (this.state.validationError && !this.validateCustomScreenshotUrl()) || requestFailed;\n // Set focus on error if the url field is valid or when the input is first rendered and is empty\n const shouldFocus = (validationError && this.validateUrl(this.state.url)) || !customScreenshotUrl;\n const isLoading = this.props.previewResponse === null &&\n customScreenshotUrl && this.props.previewUrl === this.cleanUrl(customScreenshotUrl);\n\n if (!this.state.showCustomScreenshotForm) {\n return (\n \n );\n }\n return (\n \n );\n }\n\n render() {\n const {customScreenshotUrl} = this.state;\n const requestFailed = this.props.previewResponse === \"\";\n // For UI purposes, editing without an existing link is \"add\"\n const showAsAdd = !this.props.site;\n const previous = (this.props.site && this.props.site.customScreenshotURL) || \"\";\n const changed = customScreenshotUrl && this.cleanUrl(customScreenshotUrl) !== previous;\n // Preview mode if changes were made to the custom screenshot URL and no preview was received yet\n // or the request failed\n const previewMode = changed && !this.props.previewResponse;\n const previewLink = Object.assign({}, this.props.site);\n if (this.props.previewResponse) {\n previewLink.screenshot = this.props.previewResponse;\n previewLink.customScreenshotURL = this.props.previewUrl;\n }\n return (\n \n \n \n \n \n \n \n \n \n {this._renderCustomScreenshotInput()}\n \n \n \n \n \n \n \n \n {previewMode ?\n \n \n :\n \n \n }\n \n \n );\n }\n}\n\nTopSiteForm.defaultProps = {\n site: null,\n index: -1,\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/browser/components/newtab/data/content/assets/illustration-sync@2x.png b/browser/components/newtab/data/content/assets/illustration-sync@2x.png new file mode 100644 index 0000000000000..90875f2fe19d6 Binary files /dev/null and b/browser/components/newtab/data/content/assets/illustration-sync@2x.png differ diff --git a/browser/components/newtab/docs/v2-system-addon/data_events.md b/browser/components/newtab/docs/v2-system-addon/data_events.md index 1828fa6442acf..25a93dc9c5cd5 100644 --- a/browser/components/newtab/docs/v2-system-addon/data_events.md +++ b/browser/components/newtab/docs/v2-system-addon/data_events.md @@ -33,14 +33,16 @@ Two encoded integers for about:newtab and about:home are combined in a bitwise f ## Page takeover ping -This ping is submitted once upon Activity Stream initialization if either about:home or about:newtab are set to a custom URL. It sends the category of the custom URL. +This ping is submitted once upon Activity Stream initialization if either about:home or about:newtab are set to a custom URL. It sends the category of the custom URL. It also includes the web extension id of the extension controlling the home and/or newtab page. ```js { "event": "PAGE_TAKEOVER_DATA", "value": { "home_url_category": ["search-engine" | "search-engine-mozilla-tag" | "search-engine-other-tag" | "news-portal" | "ecommerce" | "social-media" | "known-hijacker" | "other"], + "home_extension_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c", "newtab_url_category": ["search-engine" | "search-engine-mozilla-tag" | "search-engine-other-tag" | "news-portal" | "ecommerce" | "social-media" | "known-hijacker" | "other"], + "newtab_extension_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c", }, // Basic metadata @@ -838,7 +840,7 @@ This reports the user's interaction with Activity Stream Router. "source": "CFR", // message_id could be the ID of the recommendation, such as "wikipedia_addon" "message_id": "wikipedia_addon", - "event": "[INSTALL | BLOCK | DISMISS | RATIONALE | LEARN_MORE | CLICK_DOORHANGER]" + "event": "[INSTALL | BLOCK | DISMISS | RATIONALE | LEARN_MORE | CLICK_DOORHANGER | MANAGE]" } ``` @@ -854,7 +856,7 @@ This reports the user's interaction with Activity Stream Router. // message_id should be a bucket ID in the release channel, we may not use the // individual ID, such as addon ID, per legal's request "message_id": "bucket_id", - "event": "[INSTALL | BLOCK | DISMISS | RATIONALE | LEARN_MORE | CLICK_DOORHANGER]" + "event": "[INSTALL | BLOCK | DISMISS | RATIONALE | LEARN_MORE | CLICK_DOORHANGER | MANAGE]" } ``` diff --git a/browser/components/newtab/lib/ASRouter.jsm b/browser/components/newtab/lib/ASRouter.jsm index 5b48df04ad7e1..059faf04855a6 100644 --- a/browser/components/newtab/lib/ASRouter.jsm +++ b/browser/components/newtab/lib/ASRouter.jsm @@ -673,6 +673,7 @@ class _ASRouter { let {state} = this; return state.messages.filter(item => !state.messageBlockList.includes(item.id) && + (!item.campaign || !state.messageBlockList.includes(item.campaign)) && !state.providerBlockList.includes(item.provider) ); } @@ -829,10 +830,20 @@ class _ASRouter { const idsToBlock = Array.isArray(idOrIds) ? idOrIds : [idOrIds]; await this.setState(state => { - const messageBlockList = [...state.messageBlockList, ...idsToBlock]; - // When a message is blocked, its impressions should be cleared as well + const messageBlockList = [...state.messageBlockList]; const messageImpressions = {...state.messageImpressions}; - idsToBlock.forEach(id => delete messageImpressions[id]); + + idsToBlock.forEach(id => { + const message = state.messages.find(m => m.id === id); + const idToBlock = (message && message.campaign) ? message.campaign : id; + if (!messageBlockList.includes(idToBlock)) { + messageBlockList.push(idToBlock); + } + + // When a message is blocked, its impressions should be cleared as well + delete messageImpressions[id]; + }); + this._storage.set("messageBlockList", messageBlockList); return {messageBlockList, messageImpressions}; }); @@ -990,7 +1001,9 @@ class _ASRouter { case "UNBLOCK_MESSAGE_BY_ID": await this.setState(state => { const messageBlockList = [...state.messageBlockList]; - messageBlockList.splice(messageBlockList.indexOf(action.data.id), 1); + const message = state.messages.find(m => m.id === action.data.id); + const idToUnblock = (message && message.campaign) ? message.campaign : action.data.id; + messageBlockList.splice(messageBlockList.indexOf(idToUnblock), 1); this._storage.set("messageBlockList", messageBlockList); return {messageBlockList}; }); diff --git a/browser/components/newtab/lib/ASRouterPreferences.jsm b/browser/components/newtab/lib/ASRouterPreferences.jsm index c2e690bd8b954..fa09b67358f5c 100644 --- a/browser/components/newtab/lib/ASRouterPreferences.jsm +++ b/browser/components/newtab/lib/ASRouterPreferences.jsm @@ -5,13 +5,13 @@ ChromeUtils.import("resource://gre/modules/Services.jsm"); -const PROVIDER_PREF = "browser.newtabpage.activity-stream.asrouter.messageProviders"; +const PROVIDER_PREF_BRANCH = "browser.newtabpage.activity-stream.asrouter.providers."; const DEVTOOLS_PREF = "browser.newtabpage.activity-stream.asrouter.devtoolsEnabled"; const DEFAULT_STATE = { _initialized: false, _providers: null, - _providerPref: PROVIDER_PREF, + _providerPrefBranch: PROVIDER_PREF_BRANCH, _devtoolsEnabled: null, _devtoolsPref: DEVTOOLS_PREF, }; @@ -35,17 +35,24 @@ class _ASRouterPreferences { } _getProviderConfig() { - try { - return JSON.parse(Services.prefs.getStringPref(this._providerPref, "")); - } catch (e) { - Cu.reportError(`Could not parse ASRouter preference. Try resetting ${this._providerPref} in about:config.`); - } - return null; + const prefList = Services.prefs.getChildList(this._providerPrefBranch); + return prefList.reduce((filtered, pref) => { + let value; + try { + value = JSON.parse(Services.prefs.getStringPref(pref, "")); + } catch (e) { + Cu.reportError(`Could not parse ASRouter preference. Try resetting ${pref} in about:config.`); + } + if (value) { + filtered.push(value); + } + return filtered; + }, []); } get providers() { if (!this._initialized || this._providers === null) { - const config = this._getProviderConfig() || []; + const config = this._getProviderConfig(); const providers = config.map(provider => Object.freeze(provider)); if (this.devtoolsEnabled) { providers.unshift(TEST_PROVIDER); @@ -58,26 +65,19 @@ class _ASRouterPreferences { enableOrDisableProvider(id, value) { const providers = this._getProviderConfig(); - if (!providers) { - Cu.reportError(`Cannot enable/disable providers if ${this._providerPref} is unparseable.`); - return; - } - if (!providers.find(p => p.id === id)) { - Cu.reportError(`Cannot set enabled state for '${id}' because it does not exist in ${this._providerPref}`); + const config = providers.find(p => p.id === id); + if (!config) { + Cu.reportError(`Cannot set enabled state for '${id}' because the pref ${this._providerPrefBranch}${id} does not exist or is not correctly formatted.`); return; } - const newConfig = providers.map(provider => { - if (provider.id === id) { - return {...provider, enabled: value}; - } - return provider; - }); - Services.prefs.setStringPref(this._providerPref, JSON.stringify(newConfig)); + Services.prefs.setStringPref(this._providerPrefBranch + id, JSON.stringify({...config, enabled: value})); } resetProviderPref() { - Services.prefs.clearUserPref(this._providerPref); + for (const pref of Services.prefs.getChildList(this._providerPrefBranch)) { + Services.prefs.clearUserPref(pref); + } for (const id of Object.keys(USER_PREFERENCES)) { Services.prefs.clearUserPref(USER_PREFERENCES[id]); } @@ -101,14 +101,11 @@ class _ASRouterPreferences { } observe(aSubject, aTopic, aPrefName) { - switch (aPrefName) { - case this._providerPref: - this._providers = null; - break; - case this._devtoolsPref: - this._providers = null; - this._devtoolsEnabled = null; - break; + if (aPrefName && aPrefName.startsWith(this._providerPrefBranch)) { + this._providers = null; + } else if (aPrefName === this._devtoolsPref) { + this._providers = null; + this._devtoolsEnabled = null; } this._callbacks.forEach(cb => cb(aPrefName)); } @@ -147,7 +144,7 @@ class _ASRouterPreferences { if (this._initialized) { return; } - Services.prefs.addObserver(this._providerPref, this); + Services.prefs.addObserver(this._providerPrefBranch, this); Services.prefs.addObserver(this._devtoolsPref, this); for (const id of Object.keys(USER_PREFERENCES)) { Services.prefs.addObserver(USER_PREFERENCES[id], this); @@ -157,7 +154,7 @@ class _ASRouterPreferences { uninit() { if (this._initialized) { - Services.prefs.removeObserver(this._providerPref, this); + Services.prefs.removeObserver(this._providerPrefBranch, this); Services.prefs.removeObserver(this._devtoolsPref, this); for (const id of Object.keys(USER_PREFERENCES)) { Services.prefs.removeObserver(USER_PREFERENCES[id], this); diff --git a/browser/components/newtab/lib/ASRouterTargeting.jsm b/browser/components/newtab/lib/ASRouterTargeting.jsm index 14b2f578c8800..f113f304a6ab4 100644 --- a/browser/components/newtab/lib/ASRouterTargeting.jsm +++ b/browser/components/newtab/lib/ASRouterTargeting.jsm @@ -15,8 +15,8 @@ ChromeUtils.defineModuleGetter(this, "TelemetryEnvironment", "resource://gre/modules/TelemetryEnvironment.jsm"); ChromeUtils.defineModuleGetter(this, "AppConstants", "resource://gre/modules/AppConstants.jsm"); -ChromeUtils.defineModuleGetter(this, "NewTabUtils", - "resource://gre/modules/NewTabUtils.jsm"); +ChromeUtils.defineModuleGetter(this, "AttributionCode", + "resource:///modules/AttributionCode.jsm"); const FXA_USERNAME_PREF = "services.sync.username"; const SEARCH_REGION_PREF = "browser.search.region"; @@ -163,10 +163,15 @@ const TargetingGetters = { get browserSettings() { const {settings} = TelemetryEnvironment.currentEnvironment; return { + // This way of getting attribution is deprecated - use atttributionData instead attribution: settings.attribution, update: settings.update, }; }, + get attributionData() { + // Attribution is determined at startup - so we can use the cached attribution at this point + return AttributionCode.getCachedAttributionData(); + }, get currentDate() { return new Date(); }, @@ -250,11 +255,11 @@ const TargetingGetters = { ))); }, get pinnedSites() { - return NewTabUtils.pinnedLinks.links.map(site => ({ + return NewTabUtils.pinnedLinks.links.map(site => (site ? { url: site.url, host: (new URL(site.url)).hostname, searchTopSite: site.searchTopSite, - })); + } : {})); }, get providerCohorts() { return ASRouterPreferences.providers.reduce((prev, current) => { diff --git a/browser/components/newtab/lib/ActivityStream.jsm b/browser/components/newtab/lib/ActivityStream.jsm index a12423a8e0f3f..b0f498a7cb885 100644 --- a/browser/components/newtab/lib/ActivityStream.jsm +++ b/browser/components/newtab/lib/ActivityStream.jsm @@ -202,33 +202,34 @@ const PREFS_CONFIG = new Map([ title: "Does the user allow CFR recommendations?", value: true, }], - ["asrouter.messageProviders", { - title: "Configuration for ASRouter message providers", - - /** - * Each provider must have a unique id and a type of "local" or "remote". - * Local providers must specify the name of an ASRouter message provider. - * Remote providers must specify a `url` and an `updateCycleInMs`. - * Each provider must also have an `enabled` boolean. - */ - value: JSON.stringify([{ + ["asrouter.providers.onboarding", { + title: "Configuration for onboarding provider", + value: JSON.stringify({ id: "onboarding", type: "local", localProvider: "OnboardingMessageProvider", enabled: true, - }, { + }), + }], + ["asrouter.providers.snippets", { + title: "Configuration for snippets provider", + value: JSON.stringify({ id: "snippets", type: "remote", url: "https://snippets.cdn.mozilla.net/%STARTPAGE_VERSION%/%NAME%/%VERSION%/%APPBUILDID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/", updateCycleInMs: ONE_HOUR_IN_MS * 4, - enabled: false, - }, { + enabled: UpdateUtils.getUpdateChannel(true) === "nightly", + }), + }], + ["asrouter.providers.cfr", { + title: "Configuration for CFR provider", + value: JSON.stringify({ id: "cfr", type: "local", localProvider: "CFRMessageProvider", - enabled: IS_NIGHTLY_OR_UNBRANDED_BUILD, - cohort: IS_NIGHTLY_OR_UNBRANDED_BUILD ? "nightly" : "", - }]), + frequency: {custom: [{period: "daily", cap: 1}]}, + enabled: true, + }), }], ]); diff --git a/browser/components/newtab/lib/CFRMessageProvider.jsm b/browser/components/newtab/lib/CFRMessageProvider.jsm index 562df901047c1..6b28970efe0d1 100644 --- a/browser/components/newtab/lib/CFRMessageProvider.jsm +++ b/browser/components/newtab/lib/CFRMessageProvider.jsm @@ -39,58 +39,6 @@ const REDDIT_ENHANCEMENT_PARAMS = { }; const CFR_MESSAGES = [ - { - id: "FACEBOOK_CONTAINER_1", - template: "cfr_doorhanger", - content: { - bucket_id: "CFR_M1", - notification_text: {string_id: "cfr-doorhanger-extension-notification"}, - heading_text: {string_id: "cfr-doorhanger-extension-heading"}, - info_icon: { - label: {string_id: "cfr-doorhanger-extension-sumo-link"}, - sumo_path: FACEBOOK_CONTAINER_PARAMS.sumo_path, - }, - addon: { - id: "954390", - title: "Facebook Container", - icon: "resource://activity-stream/data/content/assets/cfr_fb_container.png", - rating: 4.6, - users: 299019, - author: "Mozilla", - amo_url: "https://addons.mozilla.org/en-US/firefox/addon/facebook-container/", - }, - text: "Stop Facebook from tracking your activity across the web. Use Facebook the way you normally do without annoying ads following you around.", - buttons: { - primary: { - label: {string_id: "cfr-doorhanger-extension-ok-button"}, - action: { - type: "INSTALL_ADDON_FROM_URL", - data: {url: null}, - }, - }, - secondary: [{ - label: {string_id: "cfr-doorhanger-extension-cancel-button"}, - action: {type: "CANCEL"}, - }, { - label: {string_id: "cfr-doorhanger-extension-never-show-recommendation"}, - }, { - label: {string_id: "cfr-doorhanger-extension-manage-settings-button"}, - action: { - type: "OPEN_PREFERENCES_PAGE", - data: {category: "general-cfr", origin: "CFR"}, - }, - }], - }, - }, - frequency: {lifetime: 1}, - targeting: ` - localeLanguageCode == "en" && - (providerCohorts.cfr in ["one_per_day", "nightly"]) && - (xpinstallEnabled == true) && - (${JSON.stringify(FACEBOOK_CONTAINER_PARAMS.existing_addons)} intersect addonsInfo.addons|keys)|length == 0 && - (${JSON.stringify(FACEBOOK_CONTAINER_PARAMS.open_urls)} intersect topFrecentSites[.frecency >= ${FACEBOOK_CONTAINER_PARAMS.min_frecency}]|mapToProperty('host'))|length > 0`, - trigger: {id: "openURL", params: FACEBOOK_CONTAINER_PARAMS.open_urls}, - }, { id: "FACEBOOK_CONTAINER_3", template: "cfr_doorhanger", @@ -137,64 +85,11 @@ const CFR_MESSAGES = [ frequency: {lifetime: 3}, targeting: ` localeLanguageCode == "en" && - (providerCohorts.cfr == "three_per_day") && (xpinstallEnabled == true) && (${JSON.stringify(FACEBOOK_CONTAINER_PARAMS.existing_addons)} intersect addonsInfo.addons|keys)|length == 0 && (${JSON.stringify(FACEBOOK_CONTAINER_PARAMS.open_urls)} intersect topFrecentSites[.frecency >= ${FACEBOOK_CONTAINER_PARAMS.min_frecency}]|mapToProperty('host'))|length > 0`, trigger: {id: "openURL", params: FACEBOOK_CONTAINER_PARAMS.open_urls}, }, - { - id: "GOOGLE_TRANSLATE_1", - template: "cfr_doorhanger", - content: { - bucket_id: "CFR_M1", - notification_text: {string_id: "cfr-doorhanger-extension-notification"}, - heading_text: {string_id: "cfr-doorhanger-extension-heading"}, - info_icon: { - label: {string_id: "cfr-doorhanger-extension-sumo-link"}, - sumo_path: GOOGLE_TRANSLATE_PARAMS.sumo_path, - }, - addon: { - id: "445852", - title: "To Google Translate", - icon: "resource://activity-stream/data/content/assets/cfr_google_translate.png", - rating: 4.1, - users: 313474, - author: "Juan Escobar", - amo_url: "https://addons.mozilla.org/en-US/firefox/addon/to-google-translate/", - }, - text: "Instantly translate any webpage text. Simply highlight the text, right-click to open the context menu, and choose a text or aural translation.", - buttons: { - primary: { - label: {string_id: "cfr-doorhanger-extension-ok-button"}, - action: { - type: "INSTALL_ADDON_FROM_URL", - data: {url: null}, - }, - }, - secondary: [{ - label: {string_id: "cfr-doorhanger-extension-cancel-button"}, - action: {type: "CANCEL"}, - }, { - label: {string_id: "cfr-doorhanger-extension-never-show-recommendation"}, - }, { - label: {string_id: "cfr-doorhanger-extension-manage-settings-button"}, - action: { - type: "OPEN_PREFERENCES_PAGE", - data: {category: "general-cfr", origin: "CFR"}, - }, - }], - }, - }, - frequency: {lifetime: 1}, - targeting: ` - localeLanguageCode == "en" && - (providerCohorts.cfr in ["one_per_day", "nightly"]) && - (xpinstallEnabled == true) && - (${JSON.stringify(GOOGLE_TRANSLATE_PARAMS.existing_addons)} intersect addonsInfo.addons|keys)|length == 0 && - (${JSON.stringify(GOOGLE_TRANSLATE_PARAMS.open_urls)} intersect topFrecentSites[.frecency >= ${GOOGLE_TRANSLATE_PARAMS.min_frecency}]|mapToProperty('host'))|length > 0`, - trigger: {id: "openURL", params: GOOGLE_TRANSLATE_PARAMS.open_urls}, - }, { id: "GOOGLE_TRANSLATE_3", template: "cfr_doorhanger", @@ -241,64 +136,11 @@ const CFR_MESSAGES = [ frequency: {lifetime: 3}, targeting: ` localeLanguageCode == "en" && - (providerCohorts.cfr == "three_per_day") && (xpinstallEnabled == true) && (${JSON.stringify(GOOGLE_TRANSLATE_PARAMS.existing_addons)} intersect addonsInfo.addons|keys)|length == 0 && (${JSON.stringify(GOOGLE_TRANSLATE_PARAMS.open_urls)} intersect topFrecentSites[.frecency >= ${GOOGLE_TRANSLATE_PARAMS.min_frecency}]|mapToProperty('host'))|length > 0`, trigger: {id: "openURL", params: GOOGLE_TRANSLATE_PARAMS.open_urls}, }, - { - id: "YOUTUBE_ENHANCE_1", - template: "cfr_doorhanger", - content: { - bucket_id: "CFR_M1", - notification_text: {string_id: "cfr-doorhanger-extension-notification"}, - heading_text: {string_id: "cfr-doorhanger-extension-heading"}, - info_icon: { - label: {string_id: "cfr-doorhanger-extension-sumo-link"}, - sumo_path: YOUTUBE_ENHANCE_PARAMS.sumo_path, - }, - addon: { - id: "700308", - title: "Enhancer for YouTube\u2122", - icon: "resource://activity-stream/data/content/assets/cfr_enhancer_youtube.png", - rating: 4.8, - users: 357328, - author: "Maxime RF", - amo_url: "https://addons.mozilla.org/en-US/firefox/addon/enhancer-for-youtube/", - }, - text: "Take control of your YouTube experience. Automatically block annoying ads, set playback speed and volume, remove annotations, and more.", - buttons: { - primary: { - label: {string_id: "cfr-doorhanger-extension-ok-button"}, - action: { - type: "INSTALL_ADDON_FROM_URL", - data: {url: null}, - }, - }, - secondary: [{ - label: {string_id: "cfr-doorhanger-extension-cancel-button"}, - action: {type: "CANCEL"}, - }, { - label: {string_id: "cfr-doorhanger-extension-never-show-recommendation"}, - }, { - label: {string_id: "cfr-doorhanger-extension-manage-settings-button"}, - action: { - type: "OPEN_PREFERENCES_PAGE", - data: {category: "general-cfr", origin: "CFR"}, - }, - }], - }, - }, - frequency: {lifetime: 1}, - targeting: ` - localeLanguageCode == "en" && - (providerCohorts.cfr in ["one_per_day", "nightly"]) && - (xpinstallEnabled == true) && - (${JSON.stringify(YOUTUBE_ENHANCE_PARAMS.existing_addons)} intersect addonsInfo.addons|keys)|length == 0 && - (${JSON.stringify(YOUTUBE_ENHANCE_PARAMS.open_urls)} intersect topFrecentSites[.frecency >= ${YOUTUBE_ENHANCE_PARAMS.min_frecency}]|mapToProperty('host'))|length > 0`, - trigger: {id: "openURL", params: YOUTUBE_ENHANCE_PARAMS.open_urls}, - }, { id: "YOUTUBE_ENHANCE_3", template: "cfr_doorhanger", @@ -345,64 +187,11 @@ const CFR_MESSAGES = [ frequency: {lifetime: 3}, targeting: ` localeLanguageCode == "en" && - (providerCohorts.cfr == "three_per_day") && (xpinstallEnabled == true) && (${JSON.stringify(YOUTUBE_ENHANCE_PARAMS.existing_addons)} intersect addonsInfo.addons|keys)|length == 0 && (${JSON.stringify(YOUTUBE_ENHANCE_PARAMS.open_urls)} intersect topFrecentSites[.frecency >= ${YOUTUBE_ENHANCE_PARAMS.min_frecency}]|mapToProperty('host'))|length > 0`, trigger: {id: "openURL", params: YOUTUBE_ENHANCE_PARAMS.open_urls}, }, - { - id: "WIKIPEDIA_CONTEXT_MENU_SEARCH_1", - template: "cfr_doorhanger", - content: { - bucket_id: "CFR_M1", - notification_text: {string_id: "cfr-doorhanger-extension-notification"}, - heading_text: {string_id: "cfr-doorhanger-extension-heading"}, - info_icon: { - label: {string_id: "cfr-doorhanger-extension-sumo-link"}, - sumo_path: WIKIPEDIA_CONTEXT_MENU_SEARCH_PARAMS.sumo_path, - }, - addon: { - id: "659026", - title: "Wikipedia Context Menu Search", - icon: "resource://activity-stream/data/content/assets/cfr_wiki_search.png", - rating: 4.9, - users: 3095, - author: "Nick Diedrich", - amo_url: "https://addons.mozilla.org/en-US/firefox/addon/wikipedia-context-menu-search/", - }, - text: "Get to a Wikipedia page fast, from anywhere on the web. Just highlight any webpage text and right-click to open the context menu to start a Wikipedia search.", - buttons: { - primary: { - label: {string_id: "cfr-doorhanger-extension-ok-button"}, - action: { - type: "INSTALL_ADDON_FROM_URL", - data: {url: null}, - }, - }, - secondary: [{ - label: {string_id: "cfr-doorhanger-extension-cancel-button"}, - action: {type: "CANCEL"}, - }, { - label: {string_id: "cfr-doorhanger-extension-never-show-recommendation"}, - }, { - label: {string_id: "cfr-doorhanger-extension-manage-settings-button"}, - action: { - type: "OPEN_PREFERENCES_PAGE", - data: {category: "general-cfr", origin: "CFR"}, - }, - }], - }, - }, - frequency: {lifetime: 1}, - targeting: ` - localeLanguageCode == "en" && - (providerCohorts.cfr in ["one_per_day", "nightly"]) && - (xpinstallEnabled == true) && - (${JSON.stringify(WIKIPEDIA_CONTEXT_MENU_SEARCH_PARAMS.existing_addons)} intersect addonsInfo.addons|keys)|length == 0 && - (${JSON.stringify(WIKIPEDIA_CONTEXT_MENU_SEARCH_PARAMS.open_urls)} intersect topFrecentSites[.frecency >= ${WIKIPEDIA_CONTEXT_MENU_SEARCH_PARAMS.min_frecency}]|mapToProperty('host'))|length > 0`, - trigger: {id: "openURL", params: WIKIPEDIA_CONTEXT_MENU_SEARCH_PARAMS.open_urls}, - }, { id: "WIKIPEDIA_CONTEXT_MENU_SEARCH_3", template: "cfr_doorhanger", @@ -449,64 +238,11 @@ const CFR_MESSAGES = [ frequency: {lifetime: 3}, targeting: ` localeLanguageCode == "en" && - (providerCohorts.cfr == "three_per_day") && (xpinstallEnabled == true) && (${JSON.stringify(WIKIPEDIA_CONTEXT_MENU_SEARCH_PARAMS.existing_addons)} intersect addonsInfo.addons|keys)|length == 0 && (${JSON.stringify(WIKIPEDIA_CONTEXT_MENU_SEARCH_PARAMS.open_urls)} intersect topFrecentSites[.frecency >= ${WIKIPEDIA_CONTEXT_MENU_SEARCH_PARAMS.min_frecency}]|mapToProperty('host'))|length > 0`, trigger: {id: "openURL", params: WIKIPEDIA_CONTEXT_MENU_SEARCH_PARAMS.open_urls}, }, - { - id: "REDDIT_ENHANCEMENT_1", - template: "cfr_doorhanger", - content: { - bucket_id: "CFR_M1", - notification_text: {string_id: "cfr-doorhanger-extension-notification"}, - heading_text: {string_id: "cfr-doorhanger-extension-heading"}, - info_icon: { - label: {string_id: "cfr-doorhanger-extension-sumo-link"}, - sumo_path: REDDIT_ENHANCEMENT_PARAMS.sumo_path, - }, - addon: { - id: "387429", - title: "Reddit Enhancement Suite", - icon: "resource://activity-stream/data/content/assets/cfr_reddit_enhancement.png", - rating: 4.6, - users: 258129, - author: "honestbleeps", - amo_url: "https://addons.mozilla.org/en-US/firefox/addon/reddit-enhancement-suite/", - }, - text: "New features include Inline Image Viewer, Never Ending Reddit (never click 'next page' again), Keyboard Navigation, Account Switcher, and User Tagger.", - buttons: { - primary: { - label: {string_id: "cfr-doorhanger-extension-ok-button"}, - action: { - type: "INSTALL_ADDON_FROM_URL", - data: {url: null}, - }, - }, - secondary: [{ - label: {string_id: "cfr-doorhanger-extension-cancel-button"}, - action: {type: "CANCEL"}, - }, { - label: {string_id: "cfr-doorhanger-extension-never-show-recommendation"}, - }, { - label: {string_id: "cfr-doorhanger-extension-manage-settings-button"}, - action: { - type: "OPEN_PREFERENCES_PAGE", - data: {category: "general-cfr", origin: "CFR"}, - }, - }], - }, - }, - frequency: {lifetime: 1}, - targeting: ` - localeLanguageCode == "en" && - (providerCohorts.cfr in ["one_per_day", "nightly"]) && - (xpinstallEnabled == true) && - (${JSON.stringify(REDDIT_ENHANCEMENT_PARAMS.existing_addons)} intersect addonsInfo.addons|keys)|length == 0 && - (${JSON.stringify(REDDIT_ENHANCEMENT_PARAMS.open_urls)} intersect topFrecentSites[.frecency >= ${REDDIT_ENHANCEMENT_PARAMS.min_frecency}]|mapToProperty('host'))|length > 0`, - trigger: {id: "openURL", params: REDDIT_ENHANCEMENT_PARAMS.open_urls}, - }, { id: "REDDIT_ENHANCEMENT_3", template: "cfr_doorhanger", @@ -553,7 +289,6 @@ const CFR_MESSAGES = [ frequency: {lifetime: 3}, targeting: ` localeLanguageCode == "en" && - (providerCohorts.cfr == "three_per_day") && (xpinstallEnabled == true) && (${JSON.stringify(REDDIT_ENHANCEMENT_PARAMS.existing_addons)} intersect addonsInfo.addons|keys)|length == 0 && (${JSON.stringify(REDDIT_ENHANCEMENT_PARAMS.open_urls)} intersect topFrecentSites[.frecency >= ${REDDIT_ENHANCEMENT_PARAMS.min_frecency}]|mapToProperty('host'))|length > 0`, diff --git a/browser/components/newtab/lib/CFRPageActions.jsm b/browser/components/newtab/lib/CFRPageActions.jsm index f920561df6d82..a3bab97ec4d30 100644 --- a/browser/components/newtab/lib/CFRPageActions.jsm +++ b/browser/components/newtab/lib/CFRPageActions.jsm @@ -353,6 +353,7 @@ class PageAction { callback: () => { this._blockMessage(id); this.hide(); + this._sendTelemetry({message_id: id, bucket_id: content.bucket_id, event: "BLOCK"}); RecommendationMap.delete(browser); }, }, { @@ -361,6 +362,7 @@ class PageAction { callback: () => { this.dispatchUserAction(secondary[2].action); this.hide(); + this._sendTelemetry({message_id: id, bucket_id: content.bucket_id, event: "MANAGE"}); RecommendationMap.delete(browser); }, }]; diff --git a/browser/components/newtab/lib/OnboardingMessageProvider.jsm b/browser/components/newtab/lib/OnboardingMessageProvider.jsm index aef5ede3031be..68df56d40b6a4 100644 --- a/browser/components/newtab/lib/OnboardingMessageProvider.jsm +++ b/browser/components/newtab/lib/OnboardingMessageProvider.jsm @@ -3,12 +3,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; ChromeUtils.import("resource://gre/modules/Localization.jsm"); +ChromeUtils.import("resource://gre/modules/FxAccountsConfig.jsm"); + const L10N = new Localization([ "branding/brand.ftl", + "browser/branding/sync-brand.ftl", "browser/newtab/onboarding.ftl", ]); -const ONBOARDING_MESSAGES = () => ([ +const ONBOARDING_MESSAGES = async () => ([ { id: "ONBOARDING_1", template: "onboarding", @@ -55,6 +58,7 @@ const ONBOARDING_MESSAGES = () => ([ data: {args: "addons"}, }, }, + targeting: "attributionData.campaign != 'non-fx-button' && attributionData.source != 'addons.mozilla.org'", trigger: {id: "firstRun"}, }, { @@ -75,6 +79,24 @@ const ONBOARDING_MESSAGES = () => ([ targeting: "providerCohorts.onboarding == 'ghostery'", trigger: {id: "firstRun"}, }, + { + id: "ONBOARDING_5", + template: "onboarding", + bundled: 3, + order: 4, + content: { + title: {string_id: "onboarding-fxa-title"}, + text: {string_id: "onboarding-fxa-text"}, + icon: "sync", + button_label: {string_id: "onboarding-button-label-get-started"}, + button_action: { + type: "OPEN_URL", + data: {args: await FxAccountsConfig.promiseEmailFirstURI("onboarding")}, + }, + }, + targeting: "attributionData.campaign == 'non-fx-button' && attributionData.source == 'addons.mozilla.org'", + trigger: {id: "firstRun"}, + }, ]); const OnboardingMessageProvider = { @@ -86,12 +108,13 @@ const OnboardingMessageProvider = { return {header: header.value, button_label: button_label.value}; }, async getMessages() { - const messages = await this.translateMessages(ONBOARDING_MESSAGES()); + const messages = await this.translateMessages(await ONBOARDING_MESSAGES()); return messages; }, - getUntranslatedMessages() { + async getUntranslatedMessages() { // This is helpful for jsonSchema testing - since we are localizing in the provider - return ONBOARDING_MESSAGES(); + const messages = await ONBOARDING_MESSAGES(); + return messages; }, async translateMessages(messages) { let translatedMessages = []; diff --git a/browser/components/newtab/lib/SnippetsTestMessageProvider.jsm b/browser/components/newtab/lib/SnippetsTestMessageProvider.jsm index 24d00e03d2201..4078fd9eabdd4 100644 --- a/browser/components/newtab/lib/SnippetsTestMessageProvider.jsm +++ b/browser/components/newtab/lib/SnippetsTestMessageProvider.jsm @@ -9,6 +9,18 @@ const MESSAGES = () => ([ { "id": "SIMPLE_TEST_1", "template": "simple_snippet", + "campaign": "test_campaign_blocking", + "content": { + "icon": TEST_ICON, + "text": "Sync it, link it, take it with you. All this and more with a Firefox Account.", + "links": {"syncLink": {"url": "https://www.mozilla.org/en-US/firefox/accounts"}}, + "block_button_text": "Block", + }, + }, + { + "id": "SIMPLE_TEST_1_SAME_CAMPAIGN", + "template": "simple_snippet", + "campaign": "test_campaign_blocking", "content": { "icon": TEST_ICON, "text": "Sync it, link it, take it with you. All this and more with a Firefox Account.", @@ -51,6 +63,28 @@ const MESSAGES = () => ([ "block_button_text": "Block", }, }, + { + "id": "NEWSLETTER_TEST_DEFAULTS", + "template": "newsletter_snippet", + "content": { + "scene1_icon": TEST_ICON, + "scene1_title": "Be a part of a movement.", + "scene1_title_icon": "", + "scene1_text": "Internet shutdowns, hackers, harassment – the health of the internet is on the line. Sign up and Mozilla will keep you updated on how you can help.", + "scene1_button_label": "Continue", + "scene1_button_color": "#712b00", + "scene1_button_background_color": "#ff9400", + "scene2_title": "Let's do this!", + "scene2_dismiss_button_text": "Dismiss", + "scene2_text": "Sign up for the Mozilla newsletter and we will keep you updated on how you can help.", + "scene2_privacy_html": "I'm okay with Mozilla handling my info as explained in this Privacy Notice.", + "scene2_newsletter": "mozilla-foundation", + "form_action": "https://basket.mozilla.org/subscribe.json", + "success_text": "Check your inbox for the confirmation!", + "error_text": "Error!", + "links": {"privacyLink": {"url": "https://www.mozilla.org/privacy/websites/?sample_rate=0.001&snippet_name=7894"}}, + }, + }, { "id": "NEWSLETTER_TEST_1", "template": "newsletter_snippet", @@ -62,19 +96,17 @@ const MESSAGES = () => ([ "scene1_button_label": "Continue", "scene1_button_color": "#712b00", "scene1_button_background_color": "#ff9400", + "scene2_title": "Let's do this!", + "locale": "en-CA", "scene2_dismiss_button_text": "Dismiss", "scene2_text": "Sign up for the Mozilla newsletter and we will keep you updated on how you can help.", "scene2_privacy_html": "I'm okay with Mozilla handling my info as explained in this Privacy Notice.", "scene2_button_label": "Sign Me up", "scene2_email_placeholder_text": "Your email here", + "scene2_newsletter": "mozilla-foundation", "form_action": "https://basket.mozilla.org/subscribe.json", "success_text": "Check your inbox for the confirmation!", "error_text": "Error!", - "hidden_inputs": { - "fmt": "H", - "lang": "en-US", - "newsletters": "mozilla-foundation", - }, "links": {"privacyLink": {"url": "https://www.mozilla.org/privacy/websites/?sample_rate=0.001&snippet_name=7894"}}, }, }, @@ -123,7 +155,7 @@ const MESSAGES = () => ([ scene2_icon: TEST_ICON, scene2_input_placeholder: "Your email address or phone number", scene2_text: "Send Firefox to your phone and take a powerful independent browser with you.", - scene2_title: "", + scene2_title: "Let's do this!", error_text: "Oops, there was a problem.", success_title: "Your download link was sent.", diff --git a/browser/components/newtab/lib/TelemetryFeed.jsm b/browser/components/newtab/lib/TelemetryFeed.jsm index 8206e5e656e90..3d80a3fd6967f 100644 --- a/browser/components/newtab/lib/TelemetryFeed.jsm +++ b/browser/components/newtab/lib/TelemetryFeed.jsm @@ -24,6 +24,8 @@ ChromeUtils.defineModuleGetter(this, "UpdateUtils", "resource://gre/modules/UpdateUtils.jsm"); ChromeUtils.defineModuleGetter(this, "HomePage", "resource:///modules/HomePage.jsm"); +ChromeUtils.defineModuleGetter(this, "ExtensionSettingsStore", + "resource://gre/modules/ExtensionSettingsStore.jsm"); XPCOMUtils.defineLazyServiceGetters(this, { gUUIDGenerator: ["@mozilla.org/uuid-generator;1", "nsIUUIDGenerator"], @@ -492,7 +494,8 @@ this.TelemetryFeed = class TelemetryFeed { async sendPageTakeoverData() { if (this.telemetryEnabled) { const value = {}; - let page; + let newtabAffected = false; + let homeAffected = false; // Check whether or not about:home and about:newtab are set to a custom URL. // If so, classify them. @@ -500,14 +503,35 @@ this.TelemetryFeed = class TelemetryFeed { aboutNewTabService.overridden && !aboutNewTabService.newTabURL.startsWith("moz-extension://")) { value.newtab_url_category = await this._classifySite(aboutNewTabService.newTabURL); - page = "about:newtab"; + newtabAffected = true; + } + // Check if the newtab page setting is controlled by an extension. + await ExtensionSettingsStore.initialize(); + const newtabExtensionInfo = ExtensionSettingsStore.getSetting("url_overrides", "newTabURL"); + if (newtabExtensionInfo && newtabExtensionInfo.id) { + value.newtab_extension_id = newtabExtensionInfo.id; + newtabAffected = true; } const homePageURL = HomePage.get(); if (!["about:home", "about:blank"].includes(homePageURL) && !homePageURL.startsWith("moz-extension://")) { value.home_url_category = await this._classifySite(homePageURL); - page = page ? "both" : "about:home"; + homeAffected = true; + } + const homeExtensionInfo = ExtensionSettingsStore.getSetting("prefs", "homepage_override"); + if (homeExtensionInfo && homeExtensionInfo.id) { + value.home_extension_id = homeExtensionInfo.id; + homeAffected = true; + } + + let page; + if (newtabAffected && homeAffected) { + page = "both"; + } else if (newtabAffected) { + page = "about:newtab"; + } else if (homeAffected) { + page = "about:home"; } if (page) { diff --git a/browser/components/newtab/locales-src/bn-IN/strings.properties b/browser/components/newtab/locales-src/bn-IN/strings.properties index 22a23c61b5d5f..9a3fbbd3a0877 100644 --- a/browser/components/newtab/locales-src/bn-IN/strings.properties +++ b/browser/components/newtab/locales-src/bn-IN/strings.properties @@ -127,42 +127,85 @@ topsites_form_title_label=শিরোনাম topsites_form_title_placeholder=একটি শিরোনাম লিখুন topsites_form_url_label=URL topsites_form_image_url_label=ছবির কাস্টম URL +topsites_form_url_placeholder=একটি URL লিখুন বা পেস্ট করুন +topsites_form_use_image_link=স্বনির্ধারিত ছবি ব্যবহার করুন… # LOCALIZATION NOTE (topsites_form_*_button): These are verbs/actions. +topsites_form_preview_button=প্রাকদর্শন +topsites_form_add_button=যোগ করুন +topsites_form_save_button=সংরক্ষণ করুন topsites_form_cancel_button=বাতিল করুন +topsites_form_url_validation=বৈধ URL প্রয়োজন +topsites_form_image_validation=ছবি লোড করতে ব্যর্থ। ভিন্ন URL এ চেস্টা করুন। # LOCALIZATION NOTE (pocket_read_more): This is shown at the bottom of the # trending stories section and precedes a list of links to popular topics. +pocket_read_more=জনপ্রিয় বিষয়গুলি: # LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the # end of the list of popular topic links. - +pocket_read_even_more=আরো খবর দেখুন +pocket_more_reccommendations=আরো সুপারিশ +pocket_learn_more=আরো জানুন +pocket_how_it_works=এটি কিভাবে কাজ করে +pocket_cta_button=Pocket পান +pocket_cta_text=আপনার পছন্দের গল্পগুলো Pocket এ সংরক্ষণ করুন, এবং আকর্ষণীয় মনে পড়ুন। + +highlights_empty_state=ব্রাউজিং শুরু করুন, এবং আমরা কিছু মহান নিবন্ধ, ভিডিও, এবং আপনার সম্প্রতি প্রদর্শিত পৃষ্ঠা বা বুকমার্ক এখানে প্রদর্শিত হবে। # LOCALIZATION NOTE (topstories_empty_state): When there are no recommendations, # in the space that would have shown a few stories, this is shown instead. # {provider} is replaced by the name of the content provider for this section. +topstories_empty_state=আপনি ধরা পড়েছেন। আরো শীর্ষ গল্পের জন্য পরে আবার {provider} এর থেকে চেক করুন। অপেক্ষা করতে পারছেন না? ওয়েব থেকে আরো মহান গল্প খুঁজে পেতে একটি জনপ্রিয় বিষয় নির্বাচন করুন। # 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=অন্য ব্রাউজার থেকে বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে Firefox ব্যবহার করে দেখুন। # 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=না, ধন্যবাদ # LOCALIZATION NOTE (manual_migration_import_button): This message is shown on a button that starts the process # of importing another browser’s profile profile into Firefox. +manual_migration_import_button=এখন আমদানি করুন # LOCALIZATION NOTE (error_fallback_default_*): This message and suggested # action link are shown in each section of UI that fails to render +error_fallback_default_info=ওহো, বিষয়বস্তুটি লোড করতে কিছু ভুল হয়েছে। +error_fallback_default_refresh_suggestion=পুনরায় চেস্টা করার জন্য পেজটি রিফ্রেশ করুন। # LOCALIZATION NOTE (section_menu_action_*). These strings are displayed in the section # context menu and are meant as a call to action for the given section. +section_menu_action_remove_section=বিভাগটিকে সরান +section_menu_action_collapse_section=সেকশনটি সংকোচন করুন +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=গোপনীয়তা সংক্রান্ত নীতি # LOCALIZATION NOTE (firstrun_*). These strings are displayed only once, on the # firstrun of the browser, they give an introduction to Firefox and Sync. +firstrun_title=Firefox কে আপনার সঙ্গে নিন +firstrun_content=আপনার সমস্ত ডিভাইসে আপনার বুকমার্ক, ইতিহাস, পাসওয়ার্ড এবং অন্যান্য সেটিংস পান। +firstrun_learn_more_link=Firefox অ্যাকাউন্টগুলি সম্বন্ধে আরও জানুন # LOCALIZATION NOTE (firstrun_form_header and firstrun_form_sub_header): # firstrun_form_sub_header is a continuation of firstrun_form_header, they are one sentence. # firstrun_form_header is displayed more boldly as the call to action. +firstrun_form_header=আপনার ইমেইল দিন +firstrun_form_sub_header=Firefox সিঙ্কের সাথে অবিরত করুন +firstrun_email_input_placeholder=ইমেইল +firstrun_invalid_input=বৈধ ইমেইল প্রয়োজন # 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. +firstrun_extra_legal_links=এগিয়ে যাওয়ার জন্য আপনি {terms} এবং {privacy} সম্মত হন। +firstrun_terms_of_service=পরিষেবার শর্তাদি +firstrun_privacy_notice=গোপনীয়তা সংক্রান্ত নীতি +firstrun_continue_to_login=এগিয়ে চলুন +firstrun_skip_login=ধাপটি উপেক্ষা করুন # LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu -section_menu_action_add_search_engine=অনুসন্ধান ইঞ্জিন যোগ করুন +context_menu_title=মেনু খুলুন diff --git a/browser/components/newtab/locales-src/cak/strings.properties b/browser/components/newtab/locales-src/cak/strings.properties index f7633a1f0006e..0a5e6d8daef28 100644 --- a/browser/components/newtab/locales-src/cak/strings.properties +++ b/browser/components/newtab/locales-src/cak/strings.properties @@ -143,7 +143,6 @@ pocket_read_more=Nima'q taq Na'oj: # LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the # end of the list of popular topic links. pocket_read_even_more=Ketz'et ch'aqa' chik taq B'anob'äl - pocket_more_reccommendations=Ch'aqa' chik taq Chilab'enïk pocket_learn_more=Tetamäx Ch'aqa' Chik pocket_cta_button=Tik'ul Pocket @@ -196,7 +195,6 @@ firstrun_form_header=Tatz'ib'aj ri ataqoya'l firstrun_form_sub_header=richin yatok pa Firefox Sync. firstrun_email_input_placeholder=Taqoya'l - firstrun_invalid_input=Najowäx ütz chi taqoya'l # LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and @@ -207,3 +205,6 @@ firstrun_privacy_notice=Ichinan Na'oj firstrun_continue_to_login=Titikïr chik el firstrun_skip_login=Tixakalüx re jun ruxak re' + +# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu +context_menu_title=Tijaq k'utüy samaj diff --git a/browser/components/newtab/locales-src/es-CL/strings.properties b/browser/components/newtab/locales-src/es-CL/strings.properties index ad9451f80c64c..828dbb12eb82c 100644 --- a/browser/components/newtab/locales-src/es-CL/strings.properties +++ b/browser/components/newtab/locales-src/es-CL/strings.properties @@ -143,7 +143,6 @@ pocket_read_more=Temas populares: # LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the # end of the list of popular topic links. pocket_read_even_more=Ver más historias - pocket_more_reccommendations=Más recomendaciones pocket_learn_more=Aprender más pocket_how_it_works=Cómo funciona @@ -197,7 +196,6 @@ firstrun_form_header=Ingresa tu correo firstrun_form_sub_header=para conectarte a Firefox Sync. firstrun_email_input_placeholder=Correo - firstrun_invalid_input=Se requiere un correo válido # LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and @@ -208,3 +206,6 @@ firstrun_privacy_notice=Política de privacidad firstrun_continue_to_login=Continuar firstrun_skip_login=Saltar este paso + +# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu +context_menu_title=Abrir menú diff --git a/browser/components/newtab/locales-src/et/strings.properties b/browser/components/newtab/locales-src/et/strings.properties index 8b7936b35b677..9c9ebb218dcd0 100644 --- a/browser/components/newtab/locales-src/et/strings.properties +++ b/browser/components/newtab/locales-src/et/strings.properties @@ -143,7 +143,6 @@ pocket_read_more=Populaarsed teemad: # LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the # end of the list of popular topic links. pocket_read_even_more=Rohkem lugusid - pocket_more_reccommendations=Rohkem soovitusi pocket_learn_more=Rohkem teavet pocket_how_it_works=Kuidas see töötab? @@ -197,7 +196,6 @@ firstrun_form_header=Sisesta enda e-posti aadress firstrun_form_sub_header=Firefox Synciga jätkamiseks firstrun_email_input_placeholder=E-post - firstrun_invalid_input=E-posti aadress peab olema korrektne # LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and @@ -208,3 +206,6 @@ firstrun_privacy_notice=privaatsusreeglitega firstrun_continue_to_login=Jätka firstrun_skip_login=Jäta see samm vahele + +# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu +context_menu_title=Ava menüü diff --git a/browser/components/newtab/locales-src/fa/strings.properties b/browser/components/newtab/locales-src/fa/strings.properties index 29a7b0ee45c14..ec8f63ee878a3 100644 --- a/browser/components/newtab/locales-src/fa/strings.properties +++ b/browser/components/newtab/locales-src/fa/strings.properties @@ -206,3 +206,6 @@ firstrun_privacy_notice=نکات حریمخصوصی firstrun_continue_to_login=ادامه firstrun_skip_login=پرش از این مرحله + +# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu +context_menu_title=باز کردن منو diff --git a/browser/components/newtab/locales-src/hr/strings.properties b/browser/components/newtab/locales-src/hr/strings.properties index 7f78d05e02ed1..6ee05dd5051c1 100644 --- a/browser/components/newtab/locales-src/hr/strings.properties +++ b/browser/components/newtab/locales-src/hr/strings.properties @@ -123,7 +123,9 @@ topsites_form_edit_header=Uredi najbolju stranicu topsites_form_title_label=Naslov topsites_form_title_placeholder=Unesi naslov topsites_form_url_label=URL +topsites_form_image_url_label=Prilagođeni URL slike topsites_form_url_placeholder=Utipkajte ili zalijepite URL +topsites_form_use_image_link=Koristi prilagođenu sliku… # LOCALIZATION NOTE (topsites_form_*_button): These are verbs/actions. topsites_form_preview_button=Pregled topsites_form_add_button=Dodaj @@ -140,6 +142,8 @@ pocket_read_more=Popularne teme: pocket_read_even_more=Prikaži više priča pocket_more_reccommendations=Više preporuka pocket_learn_more=Saznajte više +pocket_how_it_works=Kako ovo funkcionira +pocket_cta_button=Nabavite Pocket highlights_empty_state=Započnite pretraživati i pokazat ćemo vam neke od izvrsnih članaka, videa i drugih web stranica prema vašim nedavno posjećenim stranicama ili zabilješkama. # LOCALIZATION NOTE (topstories_empty_state): When there are no recommendations, @@ -167,6 +171,7 @@ section_menu_action_remove_section=Ukloni odjel section_menu_action_collapse_section=Skupi odjel section_menu_action_expand_section=Proširi odjel section_menu_action_manage_section=Upravljanje odjelom +section_menu_action_manage_webext=Upravljanje dodatkom section_menu_action_add_topsite=Dodaj najbolju stranicu section_menu_action_add_search_engine=Dodaj tražilicu section_menu_action_move_up=Pomakni gore @@ -176,6 +181,7 @@ section_menu_action_privacy_notice=Politika privatnosti # LOCALIZATION NOTE (firstrun_*). These strings are displayed only once, on the # firstrun of the browser, they give an introduction to Firefox and Sync. firstrun_title=Uzmite Firefox sa sobom +firstrun_content=Preuzmite svoje zabilješke, povijest, lozinke i druge postavke na sve vaše uređaje. firstrun_learn_more_link=Saznajte više o Firefox računima # LOCALIZATION NOTE (firstrun_form_header and firstrun_form_sub_header): @@ -185,13 +191,16 @@ firstrun_form_header=Unesite vašu adresu e-pošte firstrun_form_sub_header=i prijavi se u Firefox Sync firstrun_email_input_placeholder=E-pošta +firstrun_invalid_input=Potrebna je ispravna adresa e-pošte # 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. -firstrun_terms_of_service=Uvjeti korištenja -firstrun_privacy_notice=Politika privatnosti +firstrun_extra_legal_links=Nastavljanjem pristajete na {terms} i {privacy}. +firstrun_terms_of_service=Uvjete korištenja +firstrun_privacy_notice=Politiku privatnosti firstrun_continue_to_login=Nastavi firstrun_skip_login=Preskočite ovaj korak # LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu +context_menu_title=Otvori izbornik diff --git a/browser/components/newtab/locales-src/ia/strings.properties b/browser/components/newtab/locales-src/ia/strings.properties index a97694de957f2..f5f33944cc6f7 100644 --- a/browser/components/newtab/locales-src/ia/strings.properties +++ b/browser/components/newtab/locales-src/ia/strings.properties @@ -143,9 +143,9 @@ pocket_read_more=Subjectos popular: # LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the # end of the list of popular topic links. pocket_read_even_more=Vider plus historias - pocket_more_reccommendations=Altere recommendationes pocket_learn_more=Saper plus +pocket_how_it_works=Como illo labora pocket_cta_button=Installa Pocket pocket_cta_text=Salvar le chronologias que tu ama in Pocket, e alimenta tu mente con lecturas fascinante. @@ -196,7 +196,6 @@ firstrun_form_header=Insere tu email firstrun_form_sub_header=pro continuar con Firefox Sync. firstrun_email_input_placeholder=Email - firstrun_invalid_input=Il es necesse un valide adresse email # LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and @@ -207,3 +206,6 @@ firstrun_privacy_notice=Notification de confidentialitate firstrun_continue_to_login=Continuar firstrun_skip_login=Saltar iste grado + +# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu +context_menu_title=Aperir le menu diff --git a/browser/components/newtab/locales-src/kn/strings.properties b/browser/components/newtab/locales-src/kn/strings.properties index 3e374e9b5f3a5..3b259602f5601 100644 --- a/browser/components/newtab/locales-src/kn/strings.properties +++ b/browser/components/newtab/locales-src/kn/strings.properties @@ -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. @@ -37,11 +39,16 @@ menu_action_unpin=ಅನ್ಪಿನ್ # page from history. confirm_history_delete_notice_p2=ಈ ಕಾರ್ಯವನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿರುವುದಿಲ್ಲ. menu_action_save_to_pocket=ಪಾಕೆಟ್ನಲ್ಲಿ ಉಳಿಸಿ +menu_action_delete_pocket=ಪಾಕೆಟ್ನಿಂದ ಅಳಿಸಿ +menu_action_archive_pocket=ಪಾಕೆಟ್ನಲ್ಲಿ ಆರ್ಕೈವ್ ಮಾಡಿ # LOCALIZATION NOTE (menu_action_show_file_*): These are platform specific strings # found in the context menu of an item that has been downloaded. The intention behind # "this action" is that it will show where the downloaded file exists on the file system # for each operating system. +menu_action_show_file_mac_os=ಶೋಧಕದಲ್ಲಿ ತೋರಿಸು +menu_action_show_file_windows=ಹೊಂದಿರುವ ಕಡತಕೋಶವನ್ನು ತೆರೆ +menu_action_show_file_linux=ಹೊಂದಿರುವ ಕಡತಕೋಶವನ್ನು ತೆರೆ menu_action_show_file_default=ಕಡತ ತೋರಿಸು menu_action_open_file=ಕಡತವನ್ನು ತೆರೆ @@ -70,16 +77,22 @@ search_web_placeholder=ಅಂತರ್ಜಾಲವನ್ನು ಹುಡುಕ # how the stories are selected. # LOCALIZATION NOTE (section_disclaimer_topstories_buttontext): The text of # the button used to acknowledge, and hide this disclaimer in the future. +section_disclaimer_topstories_buttontext=ಸರಿ, ಗೊತ್ತಾಯಿತು # LOCALIZATION NOTE (prefs_*, settings_*): These are shown in about:preferences # for a "Firefox Home" section. "Firefox" should be treated as a brand and kept # in English, while "Home" should be localized matching the about:preferences # sidebar mozilla-central string for the panel that has preferences related to # what is shown for the homepage, new windows, and new tabs. +prefs_home_header=ಫೈರ್ಫಾಕ್ಸ್ ಮುಖಪುಟದ ವಿಷಯ # LOCALIZATION NOTE (prefs_section_rows_option): This is a semi-colon list of # plural forms used in a drop down of multiple row options (1 row, 2 rows). # See: http://developer.mozilla.org/en/docs/Localization_and_Plurals prefs_search_header=ಜಾಲದ ಹುಡುಕಾಟ +prefs_topstories_sponsored_learn_more=ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ +prefs_highlights_options_visited_label=ಭೇಟಿಕೊಟ್ಟ ಪುಟಗಳು +prefs_highlights_options_download_label=ತೀರಾ ಇತ್ತೀಚಿನ ಡೌನ್ಲೋಡ್ +prefs_highlights_options_pocket_label=ಪಾಕೆಟ್ಗೆ ಉಳಿಸಲಾದ ಪುಟಗಳು settings_pane_button_label=ಹೊಸ ಹಾಳೆಯ ಪುಟವನ್ನು ಅಗತ್ಯಾನುಗುಣಗೊಳಿಸಿ settings_pane_topsites_header=ಪ್ರಮುಖ ತಾಣಗಳು settings_pane_highlights_header=ಮುಖ್ಯಾಂಶಗಳು @@ -144,6 +157,7 @@ section_menu_action_expand_section=ವಿಭಾಗ ವಿಸ್ತರಿಸಿ section_menu_action_manage_section=ವಿಭಾಗವನ್ನು ನಿರ್ವಹಿಸಿ section_menu_action_manage_webext=ವಿಸ್ತರಣೆಯನ್ನು ನಿರ್ವಹಿಸಿ section_menu_action_move_up=ಮೇಲೆ ಜರುಗಿಸು +section_menu_action_move_down=ಕೆಳಗೆ ಜರುಗಿಸು # LOCALIZATION NOTE (firstrun_*). These strings are displayed only once, on the # firstrun of the browser, they give an introduction to Firefox and Sync. diff --git a/browser/components/newtab/locales-src/lv/strings.properties b/browser/components/newtab/locales-src/lv/strings.properties index 05b6ea131cd63..34df95d5e1bbc 100644 --- a/browser/components/newtab/locales-src/lv/strings.properties +++ b/browser/components/newtab/locales-src/lv/strings.properties @@ -206,3 +206,6 @@ firstrun_privacy_notice=Privātuma politikai firstrun_continue_to_login=Turpināt firstrun_skip_login=Izlaist šo soli + +# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu +context_menu_title=Atvērt izvēlni diff --git a/browser/components/newtab/locales-src/pa-IN/strings.properties b/browser/components/newtab/locales-src/pa-IN/strings.properties index 3a1a8ecd8bc7c..017fe8950ceba 100644 --- a/browser/components/newtab/locales-src/pa-IN/strings.properties +++ b/browser/components/newtab/locales-src/pa-IN/strings.properties @@ -142,6 +142,10 @@ pocket_read_more=ਪ੍ਰਸਿੱਧ ਵਿਸ਼ੇ: # LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the # end of the list of popular topic links. pocket_read_even_more=ਹੋਰ ਕਹਾਣੀਆਂ ਵੇਖੋ +pocket_more_reccommendations=ਹੋਰ ਸਿਫਾਰਸ਼ਾਂ +pocket_learn_more=ਹੋਰ ਸਿੱਖੋ +pocket_how_it_works=ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦੀ ਹੈ +pocket_cta_button=ਪਾਕੇਟ ਲਵੋ # LOCALIZATION NOTE (topstories_empty_state): When there are no recommendations, # in the space that would have shown a few stories, this is shown instead. @@ -169,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=ਨਿੱਜੀ ਨੋਟਿਸ @@ -186,6 +191,7 @@ firstrun_form_header=ਆਪਣਾ ਈਮੇਲ ਦਿਓ firstrun_form_sub_header=ਤਾਂ ਕਿ ਫਾਇਰਫਾਕਸ ਸਿੰਕ ਨਾਲ ਜਾਰੀ ਰੱਖਿਆ ਜਾਵੇ। firstrun_email_input_placeholder=ਈਮੇਲ +firstrun_invalid_input=ਢੁੱਕਵੀਂ ਈਮੇਲ ਚਾਹੀਦੀ ਹੈ # 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. @@ -195,4 +201,6 @@ firstrun_privacy_notice=ਪਰਦੇਦਾਰੀ ਦਾ ਨੋਟਿਸ firstrun_continue_to_login=ਜਾਰੀ ਰੱਖੋ firstrun_skip_login=ਇਹ ਪਗ਼ ਛੱਡੋ -section_menu_action_add_search_engine=ਖੋਜ ਇੰਜਣ ਜੋੜੋ + +# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu +context_menu_title=ਮੇਨੂ ਖੋਲ੍ਹੋ diff --git a/browser/components/newtab/locales-src/pt-PT/strings.properties b/browser/components/newtab/locales-src/pt-PT/strings.properties index 433491c66fb8e..b05c55ea272de 100644 --- a/browser/components/newtab/locales-src/pt-PT/strings.properties +++ b/browser/components/newtab/locales-src/pt-PT/strings.properties @@ -30,8 +30,8 @@ type_label_downloaded=Transferido # bookmarks" menu_action_bookmark=Adicionar aos marcadores menu_action_remove_bookmark=Remover marcador -menu_action_open_new_window=Abrir em nova janela -menu_action_open_private_window=Abrir em nova janela privada +menu_action_open_new_window=Abrir numa nova janela +menu_action_open_private_window=Abrir numa nova janela privada menu_action_dismiss=Dispensar menu_action_delete=Apagar do histórico menu_action_pin=Afixar diff --git a/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-prerendered-noscripts.html b/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-prerendered-noscripts.html index b254e751ca59f..9ec8891314078 100644 --- a/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-prerendered-noscripts.html +++ b/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-prerendered-noscripts.html @@ -9,7 +9,7 @@ - ওয়েবে সন্ধান করুনঅনুসন্ধানশীর্ঘ সাইটকনটেক্স মেন্যু তে সেকশনটি খুলুনPocket দ্বারা সুপারিশকৃতকনটেক্স মেন্যু তে সেকশনটি খুলুনহাইলাইটসকনটেক্স মেন্যু তে সেকশনটি খুলুন + ওয়েবে সন্ধান করুনঅনুসন্ধানশীর্ঘ সাইটকনটেক্স মেন্যু তে সেকশনটি খুলুনPocket দ্বারা সুপারিশকৃতকনটেক্স মেন্যু তে সেকশনটি খুলুনহাইলাইটসকনটেক্স মেন্যু তে সেকশনটি খুলুন diff --git a/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-prerendered.html b/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-prerendered.html index 3f2170615e6ea..a1f4667ab7381 100644 --- a/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-prerendered.html +++ b/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-prerendered.html @@ -9,7 +9,7 @@ - ওয়েবে সন্ধান করুনঅনুসন্ধানশীর্ঘ সাইটকনটেক্স মেন্যু তে সেকশনটি খুলুনPocket দ্বারা সুপারিশকৃতকনটেক্স মেন্যু তে সেকশনটি খুলুনহাইলাইটসকনটেক্স মেন্যু তে সেকশনটি খুলুন + ওয়েবে সন্ধান করুনঅনুসন্ধানশীর্ঘ সাইটকনটেক্স মেন্যু তে সেকশনটি খুলুনPocket দ্বারা সুপারিশকৃতকনটেক্স মেন্যু তে সেকশনটি খুলুনহাইলাইটসকনটেক্স মেন্যু তে সেকশনটি খুলুন diff --git a/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-strings.js index 69436d8a97162..941bd827a5228 100644 --- a/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/bn-BD/activity-stream-strings.js @@ -74,10 +74,10 @@ window.gActivityStreamStrings = { "topsites_form_image_validation": "ছবি লোড করতে ব্যর্থ। ভিন্ন URL এ চেস্টা করুন।", "pocket_read_more": "জনপ্রিয় বিষয়:", "pocket_read_even_more": "আরও গল্প দেখুন", - "pocket_more_reccommendations": "More Recommendations", + "pocket_more_reccommendations": "আরো সুপারিশ", "pocket_how_it_works": "কিভাবে এটা কাজ করে", - "pocket_cta_button": "Get Pocket", - "pocket_cta_text": "Save the stories you love in Pocket, and fuel your mind with fascinating reads.", + "pocket_cta_button": "Pocket পান", + "pocket_cta_text": "আপনার পছন্দের গল্পগুলো Pocket এ সংরক্ষণ করুন, এবং আকর্ষণীয় মনে পড়ুন।", "highlights_empty_state": "ব্রাউজি করা শুরু করুন, এবং কিছু গুরুত্বপূর্ণ নিবন্ধ, ভিডিও, এবং আপনি সম্প্রতি পরিদর্শন বা বুকমার্ক করেছেন এমন কিছু পৃষ্ঠা আমরা এখানে প্রদর্শন করব।", "topstories_empty_state": "কিছু একটা ঠিক নেই। {provider} এর শীর্ষ গল্পগুলো পেতে কিছুক্ষণ পর আবার দেখুন। অপেক্ষা করতে চান না? বিশ্বের সেরা গল্পগুলো পেতে কোন জনপ্রিয় বিষয় নির্বাচন করুন।", "manual_migration_explanation2": "অন্য ব্রাউজার থেকে আনা বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে ফায়ারফক্স ব্যবহার করে দেখুন।", @@ -107,6 +107,6 @@ window.gActivityStreamStrings = { "firstrun_privacy_notice": "গোপনীয়তা নীতি", "firstrun_continue_to_login": "চালিয়ে যান", "firstrun_skip_login": "এই ধাপটি বাদ দিন", - "context_menu_title": "Open menu", + "context_menu_title": "মেনু খুলুন", "pocket_learn_more": "আরও জানুন" }; diff --git a/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-prerendered-noscripts.html b/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-prerendered-noscripts.html index cd6ed45ff4455..cb7a88d420b72 100644 --- a/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-prerendered-noscripts.html +++ b/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-prerendered-noscripts.html @@ -9,7 +9,7 @@ - ওয়েবে সন্ধান করুনঅনুসন্ধানশীর্ষ সাইটগুলিসেকশন কনটেক্স মেনু খুলুনPocket দ্বারা সুপারিশকৃতসেকশন কনটেক্স মেনু খুলুনহাইলাইটগুলিসেকশন কনটেক্স মেনু খুলুন + ওয়েবে সন্ধান করুনঅনুসন্ধানশীর্ষ সাইটগুলিসেকশন কনটেক্স মেনু খুলুনPocket দ্বারা সুপারিশকৃতসেকশন কনটেক্স মেনু খুলুনহাইলাইটগুলিসেকশন কনটেক্স মেনু খুলুন diff --git a/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-prerendered.html b/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-prerendered.html index 4fea9c88d727f..fa809eab33fee 100644 --- a/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-prerendered.html +++ b/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ - ওয়েবে সন্ধান করুনঅনুসন্ধানশীর্ষ সাইটগুলিসেকশন কনটেক্স মেনু খুলুনPocket দ্বারা সুপারিশকৃতসেকশন কনটেক্স মেনু খুলুনহাইলাইটগুলিসেকশন কনটেক্স মেনু খুলুন + ওয়েবে সন্ধান করুনঅনুসন্ধানশীর্ষ সাইটগুলিসেকশন কনটেক্স মেনু খুলুনPocket দ্বারা সুপারিশকৃতসেকশন কনটেক্স মেনু খুলুনহাইলাইটগুলিসেকশন কনটেক্স মেনু খুলুন diff --git a/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-strings.js index 59ce9f031735d..71fb3ea6d1228 100644 --- a/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/bn-IN/activity-stream-strings.js @@ -64,49 +64,49 @@ window.gActivityStreamStrings = { "topsites_form_title_placeholder": "একটি শিরোনাম লিখুন", "topsites_form_url_label": "URL", "topsites_form_image_url_label": "ছবির কাস্টম URL", - "topsites_form_url_placeholder": "টাইপ করুন অথবা পেস্ট করুন URL", - "topsites_form_use_image_link": "কাস্টম ছবি ব্যবহার করুন…", + "topsites_form_url_placeholder": "একটি URL লিখুন বা পেস্ট করুন", + "topsites_form_use_image_link": "স্বনির্ধারিত ছবি ব্যবহার করুন…", "topsites_form_preview_button": "প্রাকদর্শন", - "topsites_form_add_button": "যোগ", - "topsites_form_save_button": "সংরক্ষণ", + "topsites_form_add_button": "যোগ করুন", + "topsites_form_save_button": "সংরক্ষণ করুন", "topsites_form_cancel_button": "বাতিল করুন", - "topsites_form_url_validation": "কার্যকর URL প্রয়োজন", + "topsites_form_url_validation": "বৈধ URL প্রয়োজন", "topsites_form_image_validation": "ছবি লোড করতে ব্যর্থ। ভিন্ন URL এ চেস্টা করুন।", - "pocket_read_more": "জনপ্রিয় বিষয়:", - "pocket_read_even_more": "আরও গল্প দেখুন", - "pocket_more_reccommendations": "More Recommendations", - "pocket_how_it_works": "কিভাবে এটা কাজ করে", - "pocket_cta_button": "Get Pocket", - "pocket_cta_text": "Save the stories you love in Pocket, and fuel your mind with fascinating reads.", - "highlights_empty_state": "ব্রাউজি করা শুরু করুন, এবং কিছু গুরুত্বপূর্ণ নিবন্ধ, ভিডিও, এবং আপনি সম্প্রতি পরিদর্শন বা বুকমার্ক করেছেন এমন কিছু পৃষ্ঠা আমরা এখানে প্রদর্শন করব।", - "topstories_empty_state": "কিছু একটা ঠিক নেই। {provider} এর শীর্ষ গল্পগুলো পেতে কিছুক্ষণ পর আবার দেখুন। অপেক্ষা করতে চান না? বিশ্বের সেরা গল্পগুলো পেতে কোন জনপ্রিয় বিষয় নির্বাচন করুন।", - "manual_migration_explanation2": "অন্য ব্রাউজার থেকে আনা বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে ফায়ারফক্স ব্যবহার করে দেখুন।", - "manual_migration_cancel_button": "প্রয়োজন নেই", - "manual_migration_import_button": "এখনই ইম্পোর্ট করুন", - "error_fallback_default_info": "ওহো, কনটেন্টটি লোড করতে কিছু ভুল হয়েছে।", + "pocket_read_more": "জনপ্রিয় বিষয়গুলি:", + "pocket_read_even_more": "আরো খবর দেখুন", + "pocket_more_reccommendations": "আরো সুপারিশ", + "pocket_how_it_works": "এটি কিভাবে কাজ করে", + "pocket_cta_button": "Pocket পান", + "pocket_cta_text": "আপনার পছন্দের গল্পগুলো Pocket এ সংরক্ষণ করুন, এবং আকর্ষণীয় মনে পড়ুন।", + "highlights_empty_state": "ব্রাউজিং শুরু করুন, এবং আমরা কিছু মহান নিবন্ধ, ভিডিও, এবং আপনার সম্প্রতি প্রদর্শিত পৃষ্ঠা বা বুকমার্ক এখানে প্রদর্শিত হবে।", + "topstories_empty_state": "আপনি ধরা পড়েছেন। আরো শীর্ষ গল্পের জন্য পরে আবার {provider} এর থেকে চেক করুন। অপেক্ষা করতে পারছেন না? ওয়েব থেকে আরো মহান গল্প খুঁজে পেতে একটি জনপ্রিয় বিষয় নির্বাচন করুন।", + "manual_migration_explanation2": "অন্য ব্রাউজার থেকে বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে Firefox ব্যবহার করে দেখুন।", + "manual_migration_cancel_button": "না, ধন্যবাদ", + "manual_migration_import_button": "এখন আমদানি করুন", + "error_fallback_default_info": "ওহো, বিষয়বস্তুটি লোড করতে কিছু ভুল হয়েছে।", "error_fallback_default_refresh_suggestion": "পুনরায় চেস্টা করার জন্য পেজটি রিফ্রেশ করুন।", - "section_menu_action_remove_section": "সেকশনটি সরান", + "section_menu_action_remove_section": "বিভাগটিকে সরান", "section_menu_action_collapse_section": "সেকশনটি সংকোচন করুন", - "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": "গোপনীয়তা নীতি", - "firstrun_title": "অাপনি Firefox ব্যবহার করুন", - "firstrun_content": "আপনার সমস্ত ডিভাইসে আপনার বুকমার্ক, ইতিহাস, পাসওয়ার্ড এবং অন্যান্য সেটিংস পাওয়া যাবে।", - "firstrun_learn_more_link": "Firefox অ্যাকাউন্ট সম্পর্কে আরও জানুন", - "firstrun_form_header": "আপনার ই-মেইল লিখুন", - "firstrun_form_sub_header": "Firefox সিঙ্ক চালিয়ে যেতে", + "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": "গোপনীয়তা সংক্রান্ত নীতি", + "firstrun_title": "Firefox কে আপনার সঙ্গে নিন", + "firstrun_content": "আপনার সমস্ত ডিভাইসে আপনার বুকমার্ক, ইতিহাস, পাসওয়ার্ড এবং অন্যান্য সেটিংস পান।", + "firstrun_learn_more_link": "Firefox অ্যাকাউন্টগুলি সম্বন্ধে আরও জানুন", + "firstrun_form_header": "আপনার ইমেইল দিন", + "firstrun_form_sub_header": "Firefox সিঙ্কের সাথে অবিরত করুন", "firstrun_email_input_placeholder": "ইমেইল", - "firstrun_invalid_input": "কার্যকর ইমেইল আবশ্যক", - "firstrun_extra_legal_links": "অগ্রসর হওয়ার মাধ্যমে আপনি {terms} এবং {privacy} এর সাথে সম্মত হচ্ছেন।", - "firstrun_terms_of_service": "সেবার শর্ত", - "firstrun_privacy_notice": "গোপনীয়তা নীতি", - "firstrun_continue_to_login": "চালিয়ে যান", - "firstrun_skip_login": "এই ধাপটি বাদ দিন", - "context_menu_title": "Open menu", - "pocket_learn_more": "আরও জানুন" + "firstrun_invalid_input": "বৈধ ইমেইল প্রয়োজন", + "firstrun_extra_legal_links": "এগিয়ে যাওয়ার জন্য আপনি {terms} এবং {privacy} সম্মত হন।", + "firstrun_terms_of_service": "পরিষেবার শর্তাদি", + "firstrun_privacy_notice": "গোপনীয়তা সংক্রান্ত নীতি", + "firstrun_continue_to_login": "এগিয়ে চলুন", + "firstrun_skip_login": "ধাপটি উপেক্ষা করুন", + "context_menu_title": "মেনু খুলুন", + "pocket_learn_more": "আরো জানুন" }; diff --git a/browser/components/newtab/prerendered/locales/cak/activity-stream-prerendered-noscripts.html b/browser/components/newtab/prerendered/locales/cak/activity-stream-prerendered-noscripts.html index b75042280fe2e..8bdef5124fb8a 100644 --- a/browser/components/newtab/prerendered/locales/cak/activity-stream-prerendered-noscripts.html +++ b/browser/components/newtab/prerendered/locales/cak/activity-stream-prerendered-noscripts.html @@ -9,7 +9,7 @@ - Tikanöx pa Ajk'amaya'lTikanöxJeb'ël Taq RuxaqTijaq ruperaj rokem k'utsamajChilab'en ruma PocketTijaq ruperaj rokem k'utsamajYa'on kiq'ijTijaq ruperaj rokem k'utsamaj + Tikanöx pa Ajk'amaya'lTikanöxJeb'ël Taq RuxaqTijaq ruperaj rokem k'utsamajChilab'en ruma PocketTijaq ruperaj rokem k'utsamajYa'on kiq'ijTijaq ruperaj rokem k'utsamaj diff --git a/browser/components/newtab/prerendered/locales/cak/activity-stream-prerendered.html b/browser/components/newtab/prerendered/locales/cak/activity-stream-prerendered.html index dc528cc37ab16..17f799df99696 100644 --- a/browser/components/newtab/prerendered/locales/cak/activity-stream-prerendered.html +++ b/browser/components/newtab/prerendered/locales/cak/activity-stream-prerendered.html @@ -9,7 +9,7 @@ - Tikanöx pa Ajk'amaya'lTikanöxJeb'ël Taq RuxaqTijaq ruperaj rokem k'utsamajChilab'en ruma PocketTijaq ruperaj rokem k'utsamajYa'on kiq'ijTijaq ruperaj rokem k'utsamaj + Tikanöx pa Ajk'amaya'lTikanöxJeb'ël Taq RuxaqTijaq ruperaj rokem k'utsamajChilab'en ruma PocketTijaq ruperaj rokem k'utsamajYa'on kiq'ijTijaq ruperaj rokem k'utsamaj diff --git a/browser/components/newtab/prerendered/locales/cak/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/cak/activity-stream-strings.js index edb8aaca643f0..231e7fbbfbccb 100644 --- a/browser/components/newtab/prerendered/locales/cak/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/cak/activity-stream-strings.js @@ -107,6 +107,6 @@ window.gActivityStreamStrings = { "firstrun_privacy_notice": "Ichinan Na'oj", "firstrun_continue_to_login": "Titikïr chik el", "firstrun_skip_login": "Tixakalüx re jun ruxak re'", - "context_menu_title": "Open menu", + "context_menu_title": "Tijaq k'utüy samaj", "pocket_learn_more": "Tetamäx Ch'aqa' Chik" }; diff --git a/browser/components/newtab/prerendered/locales/et/activity-stream-prerendered-noscripts.html b/browser/components/newtab/prerendered/locales/et/activity-stream-prerendered-noscripts.html index 6092684361348..fcf94b7c6cf48 100644 --- a/browser/components/newtab/prerendered/locales/et/activity-stream-prerendered-noscripts.html +++ b/browser/components/newtab/prerendered/locales/et/activity-stream-prerendered-noscripts.html @@ -9,7 +9,7 @@ - Otsi veebistOtsiTop saididAva osa kontekstimenüüPocket soovitabAva osa kontekstimenüüEsiletõstetudAva osa kontekstimenüü + Otsi veebistOtsiTop saididAva osa kontekstimenüüPocket soovitabAva osa kontekstimenüüEsiletõstetudAva osa kontekstimenüü diff --git a/browser/components/newtab/prerendered/locales/et/activity-stream-prerendered.html b/browser/components/newtab/prerendered/locales/et/activity-stream-prerendered.html index d4a71dfe3a82e..9bd464c2c3036 100644 --- a/browser/components/newtab/prerendered/locales/et/activity-stream-prerendered.html +++ b/browser/components/newtab/prerendered/locales/et/activity-stream-prerendered.html @@ -9,7 +9,7 @@ - Otsi veebistOtsiTop saididAva osa kontekstimenüüPocket soovitabAva osa kontekstimenüüEsiletõstetudAva osa kontekstimenüü + Otsi veebistOtsiTop saididAva osa kontekstimenüüPocket soovitabAva osa kontekstimenüüEsiletõstetudAva osa kontekstimenüü diff --git a/browser/components/newtab/prerendered/locales/et/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/et/activity-stream-strings.js index c4e62618f71dd..2f4281cd50b84 100644 --- a/browser/components/newtab/prerendered/locales/et/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/et/activity-stream-strings.js @@ -107,6 +107,6 @@ window.gActivityStreamStrings = { "firstrun_privacy_notice": "privaatsusreeglitega", "firstrun_continue_to_login": "Jätka", "firstrun_skip_login": "Jäta see samm vahele", - "context_menu_title": "Open menu", + "context_menu_title": "Ava menüü", "pocket_learn_more": "Rohkem teavet" }; diff --git a/browser/components/newtab/prerendered/locales/fa/activity-stream-prerendered-noscripts.html b/browser/components/newtab/prerendered/locales/fa/activity-stream-prerendered-noscripts.html index 7230429bc1095..455d0a5ed0a82 100644 --- a/browser/components/newtab/prerendered/locales/fa/activity-stream-prerendered-noscripts.html +++ b/browser/components/newtab/prerendered/locales/fa/activity-stream-prerendered-noscripts.html @@ -9,7 +9,7 @@ - جستوجوی وبجستوجوسایتهای برترباز کردن منو قسمتپیشنهاد شده توسط Pocketباز کردن منو قسمتبرجستههاباز کردن منو قسمت + جستوجوی وبجستوجوسایتهای برترباز کردن منو قسمتپیشنهاد شده توسط Pocketباز کردن منو قسمتبرجستههاباز کردن منو قسمت diff --git a/browser/components/newtab/prerendered/locales/fa/activity-stream-prerendered.html b/browser/components/newtab/prerendered/locales/fa/activity-stream-prerendered.html index 838e3679a18e7..de31dce559821 100644 --- a/browser/components/newtab/prerendered/locales/fa/activity-stream-prerendered.html +++ b/browser/components/newtab/prerendered/locales/fa/activity-stream-prerendered.html @@ -9,7 +9,7 @@ - جستوجوی وبجستوجوسایتهای برترباز کردن منو قسمتپیشنهاد شده توسط Pocketباز کردن منو قسمتبرجستههاباز کردن منو قسمت + جستوجوی وبجستوجوسایتهای برترباز کردن منو قسمتپیشنهاد شده توسط Pocketباز کردن منو قسمتبرجستههاباز کردن منو قسمت diff --git a/browser/components/newtab/prerendered/locales/fa/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/fa/activity-stream-strings.js index 9a0a0ddcb37f2..142c16ad4be6d 100644 --- a/browser/components/newtab/prerendered/locales/fa/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/fa/activity-stream-strings.js @@ -107,6 +107,6 @@ window.gActivityStreamStrings = { "firstrun_privacy_notice": "نکات حریمخصوصی", "firstrun_continue_to_login": "ادامه", "firstrun_skip_login": "پرش از این مرحله", - "context_menu_title": "Open menu", + "context_menu_title": "باز کردن منو", "pocket_learn_more": "بیشتر بدانید" }; diff --git a/browser/components/newtab/prerendered/locales/hr/activity-stream-prerendered-noscripts.html b/browser/components/newtab/prerendered/locales/hr/activity-stream-prerendered-noscripts.html index b39dfe8e3157d..1b91546e6a4e7 100644 --- a/browser/components/newtab/prerendered/locales/hr/activity-stream-prerendered-noscripts.html +++ b/browser/components/newtab/prerendered/locales/hr/activity-stream-prerendered-noscripts.html @@ -9,7 +9,7 @@ - Pretraži webTražiNajbolje straniceOtvorite kontekstni izbornik odjelaPreporučeno od PocketOtvorite kontekstni izbornik odjelaIstaknutoOtvorite kontekstni izbornik odjela + Pretraži webTražiNajbolje straniceOtvorite kontekstni izbornik odjelaPreporučeno od PocketOtvorite kontekstni izbornik odjelaIstaknutoOtvorite kontekstni izbornik odjela diff --git a/browser/components/newtab/prerendered/locales/hr/activity-stream-prerendered.html b/browser/components/newtab/prerendered/locales/hr/activity-stream-prerendered.html index 568100a522afd..4facb40779e6e 100644 --- a/browser/components/newtab/prerendered/locales/hr/activity-stream-prerendered.html +++ b/browser/components/newtab/prerendered/locales/hr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ - Pretraži webTražiNajbolje straniceOtvorite kontekstni izbornik odjelaPreporučeno od PocketOtvorite kontekstni izbornik odjelaIstaknutoOtvorite kontekstni izbornik odjela + Pretraži webTražiNajbolje straniceOtvorite kontekstni izbornik odjelaPreporučeno od PocketOtvorite kontekstni izbornik odjelaIstaknutoOtvorite kontekstni izbornik odjela diff --git a/browser/components/newtab/prerendered/locales/hr/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/hr/activity-stream-strings.js index 86f3693207b6b..137a839fdd786 100644 --- a/browser/components/newtab/prerendered/locales/hr/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/hr/activity-stream-strings.js @@ -63,9 +63,9 @@ window.gActivityStreamStrings = { "topsites_form_title_label": "Naslov", "topsites_form_title_placeholder": "Unesi naslov", "topsites_form_url_label": "URL", - "topsites_form_image_url_label": "Custom Image URL", + "topsites_form_image_url_label": "Prilagođeni URL slike", "topsites_form_url_placeholder": "Utipkajte ili zalijepite URL", - "topsites_form_use_image_link": "Use a custom image…", + "topsites_form_use_image_link": "Koristi prilagođenu sliku…", "topsites_form_preview_button": "Pregled", "topsites_form_add_button": "Dodaj", "topsites_form_save_button": "Spremi", @@ -75,8 +75,8 @@ window.gActivityStreamStrings = { "pocket_read_more": "Popularne teme:", "pocket_read_even_more": "Prikaži više priča", "pocket_more_reccommendations": "Više preporuka", - "pocket_how_it_works": "How it works", - "pocket_cta_button": "Get Pocket", + "pocket_how_it_works": "Kako ovo funkcionira", + "pocket_cta_button": "Nabavite Pocket", "pocket_cta_text": "Save the stories you love in Pocket, and fuel your mind with fascinating reads.", "highlights_empty_state": "Započnite pretraživati i pokazat ćemo vam neke od izvrsnih članaka, videa i drugih web stranica prema vašim nedavno posjećenim stranicama ili zabilješkama.", "topstories_empty_state": "Provjerite kasnije za više najpopularnijih priča od {provider}. Ne možete čekati? Odaberite popularne teme kako biste pronašli više kvalitetnih priča s cijelog weba.", @@ -89,24 +89,24 @@ window.gActivityStreamStrings = { "section_menu_action_collapse_section": "Skupi odjel", "section_menu_action_expand_section": "Proširi odjel", "section_menu_action_manage_section": "Upravljanje odjelom", - "section_menu_action_manage_webext": "Manage Extension", + "section_menu_action_manage_webext": "Upravljanje dodatkom", "section_menu_action_add_topsite": "Dodaj najbolju stranicu", "section_menu_action_add_search_engine": "Dodaj tražilicu", "section_menu_action_move_up": "Pomakni gore", "section_menu_action_move_down": "Pomakni dolje", "section_menu_action_privacy_notice": "Politika privatnosti", "firstrun_title": "Uzmite Firefox sa sobom", - "firstrun_content": "Get your bookmarks, history, passwords and other settings on all your devices.", + "firstrun_content": "Preuzmite svoje zabilješke, povijest, lozinke i druge postavke na sve vaše uređaje.", "firstrun_learn_more_link": "Saznajte više o Firefox računima", "firstrun_form_header": "Unesite vašu adresu e-pošte", "firstrun_form_sub_header": "i prijavi se u Firefox Sync", "firstrun_email_input_placeholder": "E-pošta", - "firstrun_invalid_input": "Valid email required", - "firstrun_extra_legal_links": "By proceeding, you agree to the {terms} and {privacy}.", - "firstrun_terms_of_service": "Uvjeti korištenja", - "firstrun_privacy_notice": "Politika privatnosti", + "firstrun_invalid_input": "Potrebna je ispravna adresa e-pošte", + "firstrun_extra_legal_links": "Nastavljanjem pristajete na {terms} i {privacy}.", + "firstrun_terms_of_service": "Uvjete korištenja", + "firstrun_privacy_notice": "Politiku privatnosti", "firstrun_continue_to_login": "Nastavi", "firstrun_skip_login": "Preskočite ovaj korak", - "context_menu_title": "Open menu", + "context_menu_title": "Otvori izbornik", "pocket_learn_more": "Saznajte više" }; diff --git a/browser/components/newtab/prerendered/locales/ia/activity-stream-prerendered-noscripts.html b/browser/components/newtab/prerendered/locales/ia/activity-stream-prerendered-noscripts.html index be3996c1dd36a..ad5af9bf14b2a 100644 --- a/browser/components/newtab/prerendered/locales/ia/activity-stream-prerendered-noscripts.html +++ b/browser/components/newtab/prerendered/locales/ia/activity-stream-prerendered-noscripts.html @@ -9,7 +9,7 @@ - Cercar in le WebCercarSitos popularAperir le menu contextual de sectionRecommendate per PocketAperir le menu contextual de sectionIn evidentiaAperir le menu contextual de section + Cercar in le WebCercarSitos popularAperir le menu contextual de sectionRecommendate per PocketAperir le menu contextual de sectionIn evidentiaAperir le menu contextual de section diff --git a/browser/components/newtab/prerendered/locales/ia/activity-stream-prerendered.html b/browser/components/newtab/prerendered/locales/ia/activity-stream-prerendered.html index ec2ff2b449d97..1af4de429c14a 100644 --- a/browser/components/newtab/prerendered/locales/ia/activity-stream-prerendered.html +++ b/browser/components/newtab/prerendered/locales/ia/activity-stream-prerendered.html @@ -9,7 +9,7 @@ - Cercar in le WebCercarSitos popularAperir le menu contextual de sectionRecommendate per PocketAperir le menu contextual de sectionIn evidentiaAperir le menu contextual de section + Cercar in le WebCercarSitos popularAperir le menu contextual de sectionRecommendate per PocketAperir le menu contextual de sectionIn evidentiaAperir le menu contextual de section diff --git a/browser/components/newtab/prerendered/locales/ia/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/ia/activity-stream-strings.js index 4924e2331f55c..1211fe9a04160 100644 --- a/browser/components/newtab/prerendered/locales/ia/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/ia/activity-stream-strings.js @@ -75,7 +75,7 @@ window.gActivityStreamStrings = { "pocket_read_more": "Subjectos popular:", "pocket_read_even_more": "Vider plus historias", "pocket_more_reccommendations": "Altere recommendationes", - "pocket_how_it_works": "How it works", + "pocket_how_it_works": "Como illo labora", "pocket_cta_button": "Installa Pocket", "pocket_cta_text": "Salvar le chronologias que tu ama in Pocket, e alimenta tu mente con lecturas fascinante.", "highlights_empty_state": "Comencia navigar e nos te monstrara alcun del grande articulos, videos e altere paginas que tu ha recentemente visitate o addite marcapaginas hic.", @@ -107,6 +107,6 @@ window.gActivityStreamStrings = { "firstrun_privacy_notice": "Notification de confidentialitate", "firstrun_continue_to_login": "Continuar", "firstrun_skip_login": "Saltar iste grado", - "context_menu_title": "Open menu", + "context_menu_title": "Aperir le menu", "pocket_learn_more": "Saper plus" }; diff --git a/browser/components/newtab/prerendered/locales/kn/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/kn/activity-stream-strings.js index 72b6de0133cba..816cd294e0721 100644 --- a/browser/components/newtab/prerendered/locales/kn/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/kn/activity-stream-strings.js @@ -9,8 +9,8 @@ window.gActivityStreamStrings = { "type_label_visited": "ಭೇಟಿ ನೀಡಲಾದ", "type_label_bookmarked": "ಪುಟಗುರುತು ಮಾಡಲಾದ", "type_label_recommended": "ಪ್ರಚಲಿತ", - "type_label_pocket": "Saved to Pocket", - "type_label_downloaded": "Downloaded", + "type_label_pocket": "ಪಾಕೆಟ್ನಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ", + "type_label_downloaded": "ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ", "menu_action_bookmark": "ಪುಟ ಗುರುತು", "menu_action_remove_bookmark": "ಪುಟ ಗುರುತು ತೆಗೆ", "menu_action_open_new_window": "ಹೊಸ ಕಿಟಕಿಯಲ್ಲಿ ತೆರೆ", @@ -22,11 +22,11 @@ window.gActivityStreamStrings = { "confirm_history_delete_p1": "Are you sure you want to delete every instance of this page from your history?", "confirm_history_delete_notice_p2": "ಈ ಕಾರ್ಯವನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿರುವುದಿಲ್ಲ.", "menu_action_save_to_pocket": "ಪಾಕೆಟ್ನಲ್ಲಿ ಉಳಿಸಿ", - "menu_action_delete_pocket": "Delete from Pocket", - "menu_action_archive_pocket": "Archive in Pocket", - "menu_action_show_file_mac_os": "Show in Finder", - "menu_action_show_file_windows": "Open Containing Folder", - "menu_action_show_file_linux": "Open Containing Folder", + "menu_action_delete_pocket": "ಪಾಕೆಟ್ನಿಂದ ಅಳಿಸಿ", + "menu_action_archive_pocket": "ಪಾಕೆಟ್ನಲ್ಲಿ ಆರ್ಕೈವ್ ಮಾಡಿ", + "menu_action_show_file_mac_os": "ಶೋಧಕದಲ್ಲಿ ತೋರಿಸು", + "menu_action_show_file_windows": "ಹೊಂದಿರುವ ಕಡತಕೋಶವನ್ನು ತೆರೆ", + "menu_action_show_file_linux": "ಹೊಂದಿರುವ ಕಡತಕೋಶವನ್ನು ತೆರೆ", "menu_action_show_file_default": "ಕಡತ ತೋರಿಸು", "menu_action_open_file": "ಕಡತವನ್ನು ತೆರೆ", "menu_action_copy_download_link": "ಡೌನ್ಲೋಡ್ ಕೊಂಡಿಯನ್ನು ಪ್ರತಿ ಮಾಡು", @@ -37,19 +37,19 @@ window.gActivityStreamStrings = { "search_web_placeholder": "ಅಂತರ್ಜಾಲವನ್ನು ಹುಡುಕಿ", "section_disclaimer_topstories": "The most interesting stories on the web, selected based on what you read. From Pocket, now part of Mozilla.", "section_disclaimer_topstories_linktext": "Learn how it works.", - "section_disclaimer_topstories_buttontext": "Okay, got it", - "prefs_home_header": "Firefox Home Content", + "section_disclaimer_topstories_buttontext": "ಸರಿ, ಗೊತ್ತಾಯಿತು", + "prefs_home_header": "ಫೈರ್ಫಾಕ್ಸ್ ಮುಖಪುಟದ ವಿಷಯ", "prefs_home_description": "Choose what content you want on your Firefox Home screen.", "prefs_section_rows_option": "{num} row;{num} rows", "prefs_search_header": "ಜಾಲದ ಹುಡುಕಾಟ", "prefs_topsites_description": "The sites you visit most", "prefs_topstories_description2": "Great content from around the web, personalized for you", "prefs_topstories_options_sponsored_label": "Sponsored Stories", - "prefs_topstories_sponsored_learn_more": "Learn more", + "prefs_topstories_sponsored_learn_more": "ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ", "prefs_highlights_description": "A selection of sites that you’ve saved or visited", - "prefs_highlights_options_visited_label": "Visited Pages", - "prefs_highlights_options_download_label": "Most Recent Download", - "prefs_highlights_options_pocket_label": "Pages Saved to Pocket", + "prefs_highlights_options_visited_label": "ಭೇಟಿಕೊಟ್ಟ ಪುಟಗಳು", + "prefs_highlights_options_download_label": "ತೀರಾ ಇತ್ತೀಚಿನ ಡೌನ್ಲೋಡ್", + "prefs_highlights_options_pocket_label": "ಪಾಕೆಟ್ಗೆ ಉಳಿಸಲಾದ ಪುಟಗಳು", "prefs_snippets_description": "Updates from Mozilla and Firefox", "settings_pane_button_label": "ಹೊಸ ಹಾಳೆಯ ಪುಟವನ್ನು ಅಗತ್ಯಾನುಗುಣಗೊಳಿಸಿ", "settings_pane_topsites_header": "ಪ್ರಮುಖ ತಾಣಗಳು", @@ -93,7 +93,7 @@ window.gActivityStreamStrings = { "section_menu_action_add_topsite": "Add Top Site", "section_menu_action_add_search_engine": "Add Search Engine", "section_menu_action_move_up": "ಮೇಲೆ ಜರುಗಿಸು", - "section_menu_action_move_down": "Move Down", + "section_menu_action_move_down": "ಕೆಳಗೆ ಜರುಗಿಸು", "section_menu_action_privacy_notice": "Privacy Notice", "firstrun_title": "Take Firefox with You", "firstrun_content": "Get your bookmarks, history, passwords and other settings on all your devices.", diff --git a/browser/components/newtab/prerendered/locales/lv/activity-stream-prerendered-noscripts.html b/browser/components/newtab/prerendered/locales/lv/activity-stream-prerendered-noscripts.html index a4a671bf89b6b..1b0b21cec5f76 100644 --- a/browser/components/newtab/prerendered/locales/lv/activity-stream-prerendered-noscripts.html +++ b/browser/components/newtab/prerendered/locales/lv/activity-stream-prerendered-noscripts.html @@ -9,7 +9,7 @@ - Meklēt internetāMeklētPopulārākās lapasAtvērt sadaļas izvēlniIesaka PocketAtvērt sadaļas izvēlniAktualitātesAtvērt sadaļas izvēlni + Meklēt internetāMeklētPopulārākās lapasAtvērt sadaļas izvēlniIesaka PocketAtvērt sadaļas izvēlniAktualitātesAtvērt sadaļas izvēlni diff --git a/browser/components/newtab/prerendered/locales/lv/activity-stream-prerendered.html b/browser/components/newtab/prerendered/locales/lv/activity-stream-prerendered.html index 29c19a4cdeac6..452f2c4d44516 100644 --- a/browser/components/newtab/prerendered/locales/lv/activity-stream-prerendered.html +++ b/browser/components/newtab/prerendered/locales/lv/activity-stream-prerendered.html @@ -9,7 +9,7 @@ - Meklēt internetāMeklētPopulārākās lapasAtvērt sadaļas izvēlniIesaka PocketAtvērt sadaļas izvēlniAktualitātesAtvērt sadaļas izvēlni + Meklēt internetāMeklētPopulārākās lapasAtvērt sadaļas izvēlniIesaka PocketAtvērt sadaļas izvēlniAktualitātesAtvērt sadaļas izvēlni diff --git a/browser/components/newtab/prerendered/locales/lv/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/lv/activity-stream-strings.js index 107820e67f55b..0b865e9a276df 100644 --- a/browser/components/newtab/prerendered/locales/lv/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/lv/activity-stream-strings.js @@ -107,6 +107,6 @@ window.gActivityStreamStrings = { "firstrun_privacy_notice": "Privātuma politikai", "firstrun_continue_to_login": "Turpināt", "firstrun_skip_login": "Izlaist šo soli", - "context_menu_title": "Open menu", + "context_menu_title": "Atvērt izvēlni", "pocket_learn_more": "Uzzināt vairāk" }; diff --git a/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-prerendered-noscripts.html b/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-prerendered-noscripts.html index c4b87170d20f8..585cd377f9170 100644 --- a/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-prerendered-noscripts.html +++ b/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-prerendered-noscripts.html @@ -9,7 +9,7 @@ - ਵੈੱਬ ਨੂੰ ਖੋਜੋਖੋਜਸਿਖਰਲੀਆਂ ਸਾਈਟਾਂਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋPocket ਵਲੋਂ ਸਿਫਾਰਸ਼ੀਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋਸੁਰਖੀਆਂਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋ + ਵੈੱਬ ਨੂੰ ਖੋਜੋਖੋਜਸਿਖਰਲੀਆਂ ਸਾਈਟਾਂਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋPocket ਵਲੋਂ ਸਿਫਾਰਸ਼ੀਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋਸੁਰਖੀਆਂਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋ diff --git a/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-prerendered.html b/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-prerendered.html index c1c1b5e283d48..7fc5cbcd2fb28 100644 --- a/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-prerendered.html +++ b/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ - ਵੈੱਬ ਨੂੰ ਖੋਜੋਖੋਜਸਿਖਰਲੀਆਂ ਸਾਈਟਾਂਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋPocket ਵਲੋਂ ਸਿਫਾਰਸ਼ੀਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋਸੁਰਖੀਆਂਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋ + ਵੈੱਬ ਨੂੰ ਖੋਜੋਖੋਜਸਿਖਰਲੀਆਂ ਸਾਈਟਾਂਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋPocket ਵਲੋਂ ਸਿਫਾਰਸ਼ੀਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋਸੁਰਖੀਆਂਪ੍ਰਸੰਗ ਮੀਨੂੰ ਚੋਣ ਖ੍ਹੋਲੋ diff --git a/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-strings.js index 2a14766edf8ba..41f6da0fe152f 100644 --- a/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/pa-IN/activity-stream-strings.js @@ -74,9 +74,9 @@ window.gActivityStreamStrings = { "topsites_form_image_validation": "ਚਿੱਤਰ ਲੋਡ ਕਰਨ ਤੋਂ ਅਸਫ਼ਲ ਰਿਹਾ। ਕਿਸੇ ਵੱਖਰੇ URL ਨਾਲ ਕੋਸ਼ਿਸ਼ ਕਰੋ।", "pocket_read_more": "ਪ੍ਰਸਿੱਧ ਵਿਸ਼ੇ:", "pocket_read_even_more": "ਹੋਰ ਕਹਾਣੀਆਂ ਵੇਖੋ", - "pocket_more_reccommendations": "More Recommendations", - "pocket_how_it_works": "How it works", - "pocket_cta_button": "Get Pocket", + "pocket_more_reccommendations": "ਹੋਰ ਸਿਫਾਰਸ਼ਾਂ", + "pocket_how_it_works": "ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦੀ ਹੈ", + "pocket_cta_button": "ਪਾਕੇਟ ਲਵੋ", "pocket_cta_text": "Save the stories you love in Pocket, and fuel your mind with fascinating reads.", "highlights_empty_state": "Start browsing, and we’ll show some of the great articles, videos, and other pages you’ve recently visited or bookmarked here.", "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", @@ -101,11 +101,12 @@ window.gActivityStreamStrings = { "firstrun_form_header": "ਆਪਣਾ ਈਮੇਲ ਦਿਓ", "firstrun_form_sub_header": "ਤਾਂ ਕਿ ਫਾਇਰਫਾਕਸ ਸਿੰਕ ਨਾਲ ਜਾਰੀ ਰੱਖਿਆ ਜਾਵੇ।", "firstrun_email_input_placeholder": "ਈਮੇਲ", - "firstrun_invalid_input": "Valid email required", + "firstrun_invalid_input": "ਢੁੱਕਵੀਂ ਈਮੇਲ ਚਾਹੀਦੀ ਹੈ", "firstrun_extra_legal_links": "ਜਾਰੀ ਰੱਖ ਕੇ ਤੁਸੀਂ {terms} ਅਤੇ {privacy} ਨਾਲ ਸਹਿਮਤ ਹੁੰਦੇ ਹੋ।", "firstrun_terms_of_service": "ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ", "firstrun_privacy_notice": "ਪਰਦੇਦਾਰੀ ਦਾ ਨੋਟਿਸ", "firstrun_continue_to_login": "ਜਾਰੀ ਰੱਖੋ", "firstrun_skip_login": "ਇਹ ਪਗ਼ ਛੱਡੋ", - "context_menu_title": "Open menu" + "context_menu_title": "ਮੇਨੂ ਖੋਲ੍ਹੋ", + "pocket_learn_more": "ਹੋਰ ਸਿੱਖੋ" }; diff --git a/browser/components/newtab/prerendered/locales/pt-PT/activity-stream-strings.js b/browser/components/newtab/prerendered/locales/pt-PT/activity-stream-strings.js index 7140909643408..f237dbaf2509e 100644 --- a/browser/components/newtab/prerendered/locales/pt-PT/activity-stream-strings.js +++ b/browser/components/newtab/prerendered/locales/pt-PT/activity-stream-strings.js @@ -13,8 +13,8 @@ window.gActivityStreamStrings = { "type_label_downloaded": "Transferido", "menu_action_bookmark": "Adicionar aos marcadores", "menu_action_remove_bookmark": "Remover marcador", - "menu_action_open_new_window": "Abrir em nova janela", - "menu_action_open_private_window": "Abrir em nova janela privada", + "menu_action_open_new_window": "Abrir numa nova janela", + "menu_action_open_private_window": "Abrir numa nova janela privada", "menu_action_dismiss": "Dispensar", "menu_action_delete": "Apagar do histórico", "menu_action_pin": "Afixar", diff --git a/browser/components/newtab/test/browser/browser_asrouter_targeting.js b/browser/components/newtab/test/browser/browser_asrouter_targeting.js index 3749ea653a11e..5707f2f2c6645 100644 --- a/browser/components/newtab/test/browser/browser_asrouter_targeting.js +++ b/browser/components/newtab/test/browser/browser_asrouter_targeting.js @@ -344,10 +344,16 @@ add_task(async function check_pinned_sites() { const originalPin = JSON.stringify(NewTabUtils.pinnedLinks.links); const sitesToPin = [ {url: "https://foo.com"}, + {url: "https://bloo.com"}, {url: "https://floogle.com", searchTopSite: true}, ]; sitesToPin.forEach((site => NewTabUtils.pinnedLinks.pin(site, NewTabUtils.pinnedLinks.links.length))); + // Unpinning adds null to the list of pinned sites, which we should test that we handle gracefully for our targeting + NewTabUtils.pinnedLinks.unpin(sitesToPin[1]); + ok(NewTabUtils.pinnedLinks.links.includes(null), + "should have set an item in pinned links to null via unpinning for testing"); + let message; message = {id: "foo", targeting: "'https://foo.com' in pinnedSites|mapToProperty('url')"}; @@ -385,9 +391,6 @@ add_task(async function check_region() { }); add_task(async function check_browserSettings() { - is(await ASRouterTargeting.Environment.browserSettings.attribution, TelemetryEnvironment.currentEnvironment.settings.attribution, - "should return correct attribution info"); - is(await JSON.stringify(ASRouterTargeting.Environment.browserSettings.update), JSON.stringify(TelemetryEnvironment.currentEnvironment.settings.update), "should return correct update info"); }); @@ -402,9 +405,12 @@ add_task(async function check_sync() { }); add_task(async function check_provider_cohorts() { - await pushPrefs(["browser.newtabpage.activity-stream.asrouter.messageProviders", JSON.stringify([{id: "onboarding", messages: [], enabled: true, cohort: "foo"}, {id: "cfr", messages: [], cohort: "bar"}])]); - is(await ASRouterTargeting.Environment.providerCohorts.onboarding, "foo"); - is(await ASRouterTargeting.Environment.providerCohorts.cfr, "bar"); + await pushPrefs(["browser.newtabpage.activity-stream.asrouter.providers.onboarding", JSON.stringify({id: "onboarding", messages: [], enabled: true, cohort: "foo"})]); + await pushPrefs(["browser.newtabpage.activity-stream.asrouter.providers.cfr", JSON.stringify({id: "cfr", enabled: true, cohort: "bar"})]); + is(await ASRouterTargeting.Environment.providerCohorts.onboarding, "foo", + "should have cohort foo for onboarding"); + is(await ASRouterTargeting.Environment.providerCohorts.cfr, "bar", + "should have cohort bar for cfr"); }); add_task(async function check_xpinstall_enabled() { diff --git a/browser/components/newtab/test/schemas/pings.js b/browser/components/newtab/test/schemas/pings.js index c7971ff8c6e61..06c675ddd49b6 100644 --- a/browser/components/newtab/test/schemas/pings.js +++ b/browser/components/newtab/test/schemas/pings.js @@ -32,7 +32,9 @@ export const UserEventPing = Joi.object().keys(Object.assign({}, baseKeys, { recommender_type: Joi.string(), value: Joi.object().keys({ newtab_url_category: Joi.string(), + newtab_extension_id: Joi.string(), home_url_category: Joi.string(), + home_extension_id: Joi.string(), }), })); diff --git a/browser/components/newtab/test/unit/asrouter/ASRouter.test.js b/browser/components/newtab/test/unit/asrouter/ASRouter.test.js index 88a415212b7c3..c134a1c164894 100644 --- a/browser/components/newtab/test/unit/asrouter/ASRouter.test.js +++ b/browser/components/newtab/test/unit/asrouter/ASRouter.test.js @@ -18,7 +18,7 @@ import {CFRPageActions} from "lib/CFRPageActions.jsm"; import {GlobalOverrider} from "test/unit/utils"; import ProviderResponseSchema from "content-src/asrouter/schemas/provider-response.schema.json"; -const MESSAGE_PROVIDER_PREF_NAME = "browser.newtabpage.activity-stream.asrouter.messageProviders"; +const MESSAGE_PROVIDER_PREF_NAME = "browser.newtabpage.activity-stream.asrouter.providers.snippets"; const FAKE_PROVIDERS = [FAKE_LOCAL_PROVIDER, FAKE_REMOTE_PROVIDER, FAKE_REMOTE_SETTINGS_PROVIDER]; const ALL_MESSAGE_IDS = [...FAKE_LOCAL_MESSAGES, ...FAKE_REMOTE_MESSAGES].map(message => message.id); const FAKE_BUNDLE = [FAKE_LOCAL_MESSAGES[1], FAKE_LOCAL_MESSAGES[2]]; @@ -385,6 +385,19 @@ describe("ASRouter", () => { assert.calledOnce(targetStub.sendAsyncMessage); assert.equal(Router.state.lastMessageId, ALL_MESSAGE_IDS[0]); }); + it("should not return a message from a blocked campaign", async () => { + // Block all messages except the first + await Router.setState(() => ({ + messages: [{id: "foo", campaign: "foocampaign"}, {id: "bar"}], + messageBlockList: ["foocampaign"], + })); + const targetStub = {sendAsyncMessage: sandbox.stub()}; + + await Router.sendNextMessage(targetStub); + + assert.calledOnce(targetStub.sendAsyncMessage); + assert.equal(Router.state.lastMessageId, "bar"); + }); it("should not return a message from a blocked provider", async () => { // There are only two providers; block the FAKE_LOCAL_PROVIDER, leaving // only FAKE_REMOTE_PROVIDER unblocked, which provides only one message @@ -552,6 +565,19 @@ describe("ASRouter", () => { assert.isTrue(Router.state.messageBlockList.includes("foo")); assert.calledWith(channel.sendAsyncMessage, PARENT_TO_CHILD_MESSAGE_NAME, {type: "CLEAR_MESSAGE", data: {id: "foo"}}); }); + it("should add the campaign to the messageBlockList instead of id if .campaign is specified and not select messages of that campaign again", async () => { + await Router.setState({ + messages: [ + {id: "1", campaign: "foocampaign"}, + {id: "2", campaign: "foocampaign"}, + ], + }); + const msg = fakeAsyncMessage({type: "BLOCK_MESSAGE_BY_ID", data: {id: "1"}}); + await Router.onMessage(msg); + + assert.isTrue(Router.state.messageBlockList.includes("foocampaign")); + assert.isEmpty(Router._getUnblockedMessages()); + }); it("should not broadcast CLEAR_MESSAGE if preventDismiss is true", async () => { const msg = fakeAsyncMessage({type: "BLOCK_MESSAGE_BY_ID", data: {id: "foo", preventDismiss: true}}); await Router.onMessage(msg); @@ -602,6 +628,14 @@ describe("ASRouter", () => { assert.isFalse(Router.state.messageBlockList.includes("foo")); }); + it("should remove the campaign from the messageBlockList if it is defined", async () => { + await Router.setState({messages: [{id: "1", campaign: "foo"}]}); + await Router.onMessage(fakeAsyncMessage({type: "BLOCK_MESSAGE_BY_ID", data: {id: "1"}})); + assert.isTrue(Router.state.messageBlockList.includes("foo"), "blocklist has campaign id"); + await Router.onMessage(fakeAsyncMessage({type: "UNBLOCK_MESSAGE_BY_ID", data: {id: "1"}})); + + assert.isFalse(Router.state.messageBlockList.includes("foo"), "campaign id removed from blocklist"); + }); it("should save the messageBlockList", async () => { await Router.onMessage(fakeAsyncMessage({type: "UNBLOCK_MESSAGE_BY_ID", data: {id: "foo"}})); diff --git a/browser/components/newtab/test/unit/asrouter/ASRouterPreferences.test.js b/browser/components/newtab/test/unit/asrouter/ASRouterPreferences.test.js index 7228344ede682..36697c898ccd7 100644 --- a/browser/components/newtab/test/unit/asrouter/ASRouterPreferences.test.js +++ b/browser/components/newtab/test/unit/asrouter/ASRouterPreferences.test.js @@ -1,13 +1,13 @@ import {_ASRouterPreferences, ASRouterPreferences as ASRouterPreferencesSingleton, TEST_PROVIDER} from "lib/ASRouterPreferences.jsm"; const FAKE_PROVIDERS = [{id: "foo"}, {id: "bar"}]; -const PROVIDER_PREF = "browser.newtabpage.activity-stream.asrouter.messageProviders"; +const PROVIDER_PREF_BRANCH = "browser.newtabpage.activity-stream.asrouter.providers."; const DEVTOOLS_PREF = "browser.newtabpage.activity-stream.asrouter.devtoolsEnabled"; const SNIPPETS_USER_PREF = "browser.newtabpage.activity-stream.feeds.snippets"; const CFR_USER_PREF = "browser.newtabpage.activity-stream.asrouter.userprefs.cfr"; /** NUMBER_OF_PREFS_TO_OBSERVE includes: - * 1. asrouter.messageProvider + * 1. asrouter.providers. pref branch * 2. asrouter.devtoolsEnabled * 3. browser.newtabpage.activity-stream.feeds.snippets (user preference - snippets) * 4. browser.newtabpage.activity-stream.asrouter.userprefs.cfr (user preference - cfr) @@ -20,17 +20,34 @@ describe("ASRouterPreferences", () => { let addObserverStub; let stringPrefStub; let boolPrefStub; + beforeEach(() => { ASRouterPreferences = new _ASRouterPreferences(); sandbox = sinon.sandbox.create(); addObserverStub = sandbox.stub(global.Services.prefs, "addObserver"); - stringPrefStub = sandbox.stub(global.Services.prefs, "getStringPref").withArgs(PROVIDER_PREF).returns(JSON.stringify(FAKE_PROVIDERS)); + stringPrefStub = sandbox.stub(global.Services.prefs, "getStringPref"); + FAKE_PROVIDERS.forEach(provider => { + stringPrefStub.withArgs(`${PROVIDER_PREF_BRANCH}${provider.id}`).returns(JSON.stringify(provider)); + }); + sandbox.stub(global.Services.prefs, "getChildList") + .withArgs(PROVIDER_PREF_BRANCH).returns(FAKE_PROVIDERS.map(provider => `${PROVIDER_PREF_BRANCH}${provider.id}`)); + boolPrefStub = sandbox.stub(global.Services.prefs, "getBoolPref").returns(false); }); + afterEach(() => { sandbox.restore(); }); + + function getPrefNameForProvider(providerId) { + return `${PROVIDER_PREF_BRANCH}${providerId}`; + } + + function setPrefForProvider(providerId, value) { + stringPrefStub.withArgs(getPrefNameForProvider(providerId)).returns(JSON.stringify(value)); + } + it("ASRouterPreferences should be an instance of _ASRouterPreferences", () => { assert.instanceOf(ASRouterPreferencesSingleton, _ASRouterPreferences); }); @@ -75,7 +92,7 @@ describe("ASRouterPreferences", () => { ASRouterPreferences.uninit(); assert.callCount(removeStub, NUMBER_OF_PREFS_TO_OBSERVE); - assert.calledWith(removeStub, PROVIDER_PREF); + assert.calledWith(removeStub, PROVIDER_PREF_BRANCH); assert.calledWith(removeStub, DEVTOOLS_PREF); assert.isEmpty(ASRouterPreferences._callbacks); }); @@ -86,14 +103,16 @@ describe("ASRouterPreferences", () => { const result = ASRouterPreferences.providers; assert.deepEqual(result, FAKE_PROVIDERS); - assert.calledOnce(stringPrefStub); + // once per pref + assert.calledTwice(stringPrefStub); }); it("should return the cached value the second time .providers is accessed", () => { ASRouterPreferences.init(); const [, secondCall] = [ASRouterPreferences.providers, ASRouterPreferences.providers]; assert.deepEqual(secondCall, FAKE_PROVIDERS); - assert.calledOnce(stringPrefStub); + // once per pref + assert.calledTwice(stringPrefStub); }); it("should just parse the pref each time if ASRouterPreferences hasn't been initialized yet", () => { // Intentionally not initialized @@ -101,13 +120,13 @@ describe("ASRouterPreferences", () => { assert.deepEqual(firstCall, FAKE_PROVIDERS); assert.deepEqual(secondCall, FAKE_PROVIDERS); - assert.calledTwice(stringPrefStub); + assert.callCount(stringPrefStub, 4); }); - it("should return [] if the pref was not parsable", () => { - stringPrefStub.withArgs(PROVIDER_PREF).returns("not json"); + it("should skip the pref without throwing if a pref is not parsable", () => { + stringPrefStub.withArgs(`${PROVIDER_PREF_BRANCH}foo`).returns("not json"); ASRouterPreferences.init(); - assert.deepEqual(ASRouterPreferences.providers, []); + assert.deepEqual(ASRouterPreferences.providers, [{id: "bar"}]); }); it("should include TEST_PROVIDER if devtools is turned on", () => { boolPrefStub.withArgs(DEVTOOLS_PREF).returns(true); @@ -176,21 +195,21 @@ describe("ASRouterPreferences", () => { describe("#enableOrDisableProvider", () => { it("should enable an existing provider if second param is true", () => { const setStub = sandbox.stub(global.Services.prefs, "setStringPref"); - stringPrefStub.withArgs(PROVIDER_PREF).returns(JSON.stringify([{id: "foo", enabled: false}, {id: "bar", enabled: false}])); + setPrefForProvider("foo", {id: "foo", enabled: false}); assert.isFalse(ASRouterPreferences.providers[0].enabled); ASRouterPreferences.enableOrDisableProvider("foo", true); - assert.calledWith(setStub, PROVIDER_PREF, JSON.stringify([{id: "foo", enabled: true}, {id: "bar", enabled: false}])); + assert.calledWith(setStub, getPrefNameForProvider("foo"), JSON.stringify({id: "foo", enabled: true})); }); it("should disable an existing provider if second param is false", () => { const setStub = sandbox.stub(global.Services.prefs, "setStringPref"); - stringPrefStub.withArgs(PROVIDER_PREF).returns(JSON.stringify([{id: "foo", enabled: true}, {id: "bar", enabled: true}])); + setPrefForProvider("foo", {id: "foo", enabled: true}); assert.isTrue(ASRouterPreferences.providers[0].enabled); ASRouterPreferences.enableOrDisableProvider("foo", false); - assert.calledWith(setStub, PROVIDER_PREF, JSON.stringify([{id: "foo", enabled: false}, {id: "bar", enabled: true}])); + assert.calledWith(setStub, getPrefNameForProvider("foo"), JSON.stringify({id: "foo", enabled: false})); }); it("should not throw if the id does not exist", () => { assert.doesNotThrow(() => { @@ -198,7 +217,7 @@ describe("ASRouterPreferences", () => { }); }); it("should not throw if pref is not parseable", () => { - stringPrefStub.withArgs(PROVIDER_PREF).returns("not valid"); + stringPrefStub.withArgs(getPrefNameForProvider("foo")).returns("not valid"); assert.doesNotThrow(() => { ASRouterPreferences.enableOrDisableProvider("foo", true); }); @@ -219,29 +238,36 @@ describe("ASRouterPreferences", () => { it("should reset the pref and user prefs", () => { const resetStub = sandbox.stub(global.Services.prefs, "clearUserPref"); ASRouterPreferences.resetProviderPref(); - assert.calledWith(resetStub, PROVIDER_PREF); + FAKE_PROVIDERS.forEach(provider => { + assert.calledWith(resetStub, getPrefNameForProvider(provider.id)); + }); assert.calledWith(resetStub, SNIPPETS_USER_PREF); + assert.calledWith(resetStub, CFR_USER_PREF); }); }); describe("observer, listeners", () => { it("should invalidate .providers when the pref is changed", () => { - const testProviders = [{id: "newstuff"}]; + const testProvider = {id: "newstuff"}; + const newProviders = [...FAKE_PROVIDERS, testProvider]; ASRouterPreferences.init(); assert.deepEqual(ASRouterPreferences.providers, FAKE_PROVIDERS); - stringPrefStub.withArgs(PROVIDER_PREF).returns(JSON.stringify(testProviders)); - ASRouterPreferences.observe(null, null, PROVIDER_PREF); + stringPrefStub.withArgs(getPrefNameForProvider(testProvider.id)).returns(JSON.stringify(testProvider)); + global.Services.prefs.getChildList + .withArgs(PROVIDER_PREF_BRANCH).returns(newProviders.map(provider => getPrefNameForProvider(provider.id))); + ASRouterPreferences.observe(null, null, getPrefNameForProvider(testProvider.id)); // Cache should be invalidated so we access the new value of the pref now - assert.deepEqual(ASRouterPreferences.providers, testProviders); + assert.deepEqual(ASRouterPreferences.providers, newProviders); }); it("should invalidate .devtoolsEnabled and .providers when the pref is changed", () => { ASRouterPreferences.init(); assert.isFalse(ASRouterPreferences.devtoolsEnabled); boolPrefStub.withArgs(DEVTOOLS_PREF).returns(true); - stringPrefStub.withArgs(PROVIDER_PREF).returns("[]"); + global.Services.prefs.getChildList + .withArgs(PROVIDER_PREF_BRANCH).returns([]); ASRouterPreferences.observe(null, null, DEVTOOLS_PREF); // Cache should be invalidated so we access the new value of the pref now @@ -256,8 +282,8 @@ describe("ASRouterPreferences", () => { ASRouterPreferences.addListener(callback1); ASRouterPreferences.addListener(callback2); - ASRouterPreferences.observe(null, null, PROVIDER_PREF); - assert.calledWith(callback1, PROVIDER_PREF); + ASRouterPreferences.observe(null, null, getPrefNameForProvider("foo")); + assert.calledWith(callback1, getPrefNameForProvider("foo")); ASRouterPreferences.observe(null, null, DEVTOOLS_PREF); assert.calledWith(callback2, DEVTOOLS_PREF); @@ -267,8 +293,8 @@ describe("ASRouterPreferences", () => { ASRouterPreferences.init(); ASRouterPreferences.addListener(callback); - ASRouterPreferences.observe(null, null, PROVIDER_PREF); - assert.calledWith(callback, PROVIDER_PREF); + ASRouterPreferences.observe(null, null, getPrefNameForProvider("foo")); + assert.calledWith(callback, getPrefNameForProvider("foo")); callback.reset(); ASRouterPreferences.removeListener(callback); diff --git a/browser/components/newtab/test/unit/asrouter/CFRMessageProvider.test.js b/browser/components/newtab/test/unit/asrouter/CFRMessageProvider.test.js index 3ffab6082f778..4d0a917c7b197 100644 --- a/browser/components/newtab/test/unit/asrouter/CFRMessageProvider.test.js +++ b/browser/components/newtab/test/unit/asrouter/CFRMessageProvider.test.js @@ -10,22 +10,15 @@ const REGULAR_IDS = [ ]; describe("CFRMessageProvider", () => { - it("should have a total of 10 messages", () => { - assert.lengthOf(messages, 10); + it("should have a total of 5 messages", () => { + assert.lengthOf(messages, 5); }); - it("should two variants for each of the five regular addons", () => { + it("should have one message each for the five regular addons", () => { for (const id of REGULAR_IDS) { - const cohort1 = messages.find(msg => msg.id === `${id}_1`); - assert.ok(cohort1, `contains one day cohort for ${id}`); - assert.deepEqual(cohort1.frequency, {lifetime: 1}, "one day cohort has the right frequency cap"); - assert.include(cohort1.targeting, `(providerCohorts.cfr in ["one_per_day", "nightly"])`); - const cohort3 = messages.find(msg => msg.id === `${id}_3`); assert.ok(cohort3, `contains three day cohort for ${id}`); assert.deepEqual(cohort3.frequency, {lifetime: 3}, "three day cohort has the right frequency cap"); - assert.include(cohort3.targeting, `(providerCohorts.cfr == "three_per_day")`); - - assert.deepEqual(cohort1.content, cohort3.content, "cohorts should have the same content"); + assert.notInclude(cohort3.targeting, `providerCohorts.cfr`); } }); it("should always have xpinstallEnabled as targeting if it is an addon", () => { diff --git a/browser/components/newtab/test/unit/asrouter/CFRPageActions.test.js b/browser/components/newtab/test/unit/asrouter/CFRPageActions.test.js index f48a1b650b389..3035a8a3e0500 100644 --- a/browser/components/newtab/test/unit/asrouter/CFRPageActions.test.js +++ b/browser/components/newtab/test/unit/asrouter/CFRPageActions.test.js @@ -525,6 +525,54 @@ describe("CFRPageActions", () => { // Should remove the recommendation assert.isFalse(CFRPageActions.RecommendationMap.has(fakeBrowser)); }); + it("should send right telemetry for BLOCK secondary action", async () => { + await pageAction._handleClick(); + const blockAction = global.PopupNotifications.show.firstCall.args[5][1]; // eslint-disable-line prefer-destructuring + + assert.deepEqual(blockAction.label, {value: "Secondary Button 2", attributes: {accesskey: "a"}}); + sandbox.spy(pageAction, "hide"); + sandbox.spy(pageAction, "_blockMessage"); + CFRPageActions.RecommendationMap.set(fakeBrowser, {}); + blockAction.callback(); + assert.calledOnce(pageAction.hide); + assert.calledOnce(pageAction._blockMessage); + // Should send telemetry + assert.calledWith(dispatchStub, { + type: "DOORHANGER_TELEMETRY", + data: { + action: "cfr_user_event", + source: "CFR", + message_id: fakeRecommendation.id, + bucket_id: fakeRecommendation.content.bucket_id, + event: "BLOCK", + }, + }); + // Should remove the recommendation + assert.isFalse(CFRPageActions.RecommendationMap.has(fakeBrowser)); + }); + it("should send right telemetry for MANAGE secondary action", async () => { + await pageAction._handleClick(); + const blockAction = global.PopupNotifications.show.firstCall.args[5][2]; // eslint-disable-line prefer-destructuring + + assert.deepEqual(blockAction.label, {value: "Secondary Button 3", attributes: {accesskey: "g"}}); + sandbox.spy(pageAction, "hide"); + CFRPageActions.RecommendationMap.set(fakeBrowser, {}); + blockAction.callback(); + assert.calledOnce(pageAction.hide); + // Should send telemetry + assert.calledWith(dispatchStub, { + type: "DOORHANGER_TELEMETRY", + data: { + action: "cfr_user_event", + source: "CFR", + message_id: fakeRecommendation.id, + bucket_id: fakeRecommendation.content.bucket_id, + event: "MANAGE", + }, + }); + // Should remove the recommendation + assert.isFalse(CFRPageActions.RecommendationMap.has(fakeBrowser)); + }); it("should call PopupNotifications.show with the right arguments", async () => { await pageAction._handleClick(); assert.calledWith( diff --git a/browser/components/newtab/test/unit/asrouter/templates/OnboardingMessage.test.jsx b/browser/components/newtab/test/unit/asrouter/templates/OnboardingMessage.test.jsx index d971dc09f37c3..8f178f91ef716 100644 --- a/browser/components/newtab/test/unit/asrouter/templates/OnboardingMessage.test.jsx +++ b/browser/components/newtab/test/unit/asrouter/templates/OnboardingMessage.test.jsx @@ -1,3 +1,4 @@ +import {GlobalOverrider} from "test/unit/utils"; import {OnboardingMessageProvider} from "lib/OnboardingMessageProvider.jsm"; import schema from "content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.schema.json"; @@ -21,14 +22,25 @@ const L10N_CONTENT = { }; describe("OnboardingMessage", () => { + let globals; + let sandbox; + beforeEach(() => { + globals = new GlobalOverrider(); + sandbox = sinon.sandbox.create(); + globals.set("FxAccountsConfig", {promiseEmailFirstURI: sandbox.stub().resolves("some/url")}); + }); + afterEach(() => { + sandbox.restore(); + globals.restore(); + }); it("should validate DEFAULT_CONTENT", () => { assert.jsonSchema(DEFAULT_CONTENT, schema); }); it("should validate L10N_CONTENT", () => { assert.jsonSchema(L10N_CONTENT, schema); }); - it("should validate all messages from OnboardingMessageProvider", () => { - const messages = OnboardingMessageProvider.getUntranslatedMessages(); + it("should validate all messages from OnboardingMessageProvider", async () => { + const messages = await OnboardingMessageProvider.getUntranslatedMessages(); messages.forEach(msg => assert.jsonSchema(msg.content, schema)); }); }); diff --git a/browser/components/newtab/test/unit/content-src/components/TopSites.test.jsx b/browser/components/newtab/test/unit/content-src/components/TopSites.test.jsx index 750797c6006b4..e12923ea2cd68 100644 --- a/browser/components/newtab/test/unit/content-src/components/TopSites.test.jsx +++ b/browser/components/newtab/test/unit/content-src/components/TopSites.test.jsx @@ -358,7 +358,7 @@ describe("", () => { it("should not add the url to the href if it a search shortcut", () => { link.searchTopSite = true; const wrapper = shallow(); - assert.isFalse(wrapper.find("a").props().href); + assert.isUndefined(wrapper.find("a").props().href); }); it("should have rtl direction automatically set for text", () => { const wrapper = shallow(); diff --git a/browser/components/newtab/test/unit/content-src/lib/snippets.test.js b/browser/components/newtab/test/unit/content-src/lib/snippets.test.js index 7429823bf1755..d2d98198cf428 100644 --- a/browser/components/newtab/test/unit/content-src/lib/snippets.test.js +++ b/browser/components/newtab/test/unit/content-src/lib/snippets.test.js @@ -210,7 +210,6 @@ describe("SnippetsProvider", () => { snippets = new SnippetsProvider(dispatch); sandbox.stub(snippets, "_refreshSnippets").returns(Promise.resolve()); sandbox.stub(snippets, "_showRemoteSnippets"); - sandbox.stub(snippets, "_noSnippetFallback"); }); it("should connect to the database by default", () => { sandbox.stub(global.gSnippetsMap, "connect").returns(Promise.resolve()); @@ -239,11 +238,9 @@ describe("SnippetsProvider", () => { assert.calledOnce(snippets._refreshSnippets); assert.calledOnce(snippets._showRemoteSnippets); }); - it("should call _noSnippetFallback if _showRemoteSnippets throws an error", async () => { + it("should not throw if _showRemoteSnippets throws an error", async () => { snippets._showRemoteSnippets.callsFake(() => { throw new Error("error"); }); await snippets.init({connect: false}); - - assert.calledOnce(snippets._noSnippetFallback); }); it("should set each item in .appData in gSnippetsMap as appData.{item}", async () => { await snippets.init({connect: false, appData: {foo: 123, bar: "hello"}}); @@ -345,50 +342,47 @@ describe("SnippetsProvider", () => { assert.equal(global.gSnippetsMap.get("snippets-cached-version"), 5); }); it("should catch fetch errors gracefully", async () => { + const testError = new Error({status: 400}); sandbox.stub(global.console, "error"); - global.fetch.returns(Promise.reject(new Error({status: 400}))); + global.fetch.returns(Promise.reject(testError)); await snippets.init({connect: false, appData: {version: 5, snippetsURL: "foo.com"}}); - assert.calledOnce(global.console.error); + assert.calledWith(global.console.error, testError); }); }); describe("#_showRemoteSnippets", () => { beforeEach(() => { snippets = new SnippetsProvider(dispatch); sandbox.stub(snippets, "_refreshSnippets").returns(Promise.resolve()); - sandbox.stub(snippets, "_noSnippetFallback"); let fakeEl = {style: {}, getElementsByTagName() { return [{parentNode: {replaceChild() {}}}]; }}; sandbox.stub(global.document, "getElementById").returns(fakeEl); }); - it("should call _noSnippetFallback if no snippets element exists", async () => { + it("should log error if no snippets element exists", async () => { global.gSnippetsMap.set("snippets", "foo123"); global.document.getElementById.returns(null); + sandbox.stub(global.console, "error"); await snippets.init({connect: false}); - assert.calledOnce(snippets._noSnippetFallback); - const [error] = snippets._noSnippetFallback.firstCall.args; + const [error] = global.console.error.firstCall.args; assert.match(error.message, "No element was found"); }); - it("should call _noSnippetFallback if no payload is found", async () => { + it("should log error if no payload is found", async () => { + sandbox.stub(global.console, "error"); global.gSnippetsMap.set("snippets", ""); await snippets.init({connect: false}); - const [error] = snippets._noSnippetFallback.firstCall.args; + const [error] = global.console.error.firstCall.args; assert.match(error.message, "No remote snippets were found"); }); - it("should call _noSnippetFallback if the payload is not a string", async () => { + it("should log error if the payload is not a string", async () => { + sandbox.stub(global.console, "error"); global.gSnippetsMap.set("snippets", true); await snippets.init({connect: false}); - const [error] = snippets._noSnippetFallback.firstCall.args; + const [error] = global.console.error.firstCall.args; assert.match(error.message, "Snippet payload was incorrectly formatted"); }); - it("should not call _noSnippetFallback if the payload and element are ok", async () => { - global.gSnippetsMap.set("snippets", "foo123"); - await snippets.init({connect: false}); - assert.notCalled(snippets._noSnippetFallback); - }); }); describe("blocking", () => { let containerEl; diff --git a/browser/components/newtab/test/unit/lib/TelemetryFeed.test.js b/browser/components/newtab/test/unit/lib/TelemetryFeed.test.js index 1578ca4ede656..3b2b1832fb178 100644 --- a/browser/components/newtab/test/unit/lib/TelemetryFeed.test.js +++ b/browser/components/newtab/test/unit/lib/TelemetryFeed.test.js @@ -26,6 +26,7 @@ describe("TelemetryFeed", () => { let clock; let fakeHomePageUrl; let fakeHomePage; + let fakeExtensionSettingsStore; class PingCentre {sendPing() {} uninit() {}} class UTEventReporting {sendUserEvent() {} sendSessionEndEvent() {} uninit() {}} class PerfService { @@ -56,6 +57,12 @@ describe("TelemetryFeed", () => { return fakeHomePageUrl; }, }; + fakeExtensionSettingsStore = { + initialize() { + return Promise.resolve(); + }, + getSetting() {}, + }; sandbox.spy(global.Cu, "reportError"); globals.set("gUUIDGenerator", {generateUUID: () => FAKE_UUID}); globals.set("aboutNewTabService", { @@ -63,6 +70,7 @@ describe("TelemetryFeed", () => { newTabURL: "", }); globals.set("HomePage", fakeHomePage); + globals.set("ExtensionSettingsStore", fakeExtensionSettingsStore); globals.set("PingCentre", PingCentre); globals.set("UTEventReporting", UTEventReporting); sandbox.stub(ASRouterPreferences, "providers").get(() => FAKE_ROUTER_MESSAGE_PROVIDER); @@ -975,12 +983,25 @@ describe("TelemetryFeed", () => { globals.set("Services", Object.assign({}, Services, {prefs: {getBoolPref: key => fakePrefs[key]}})); // Services.prefs = {getBoolPref: key => fakePrefs[key]}; }); - it("should send correct event data for about:{home,newtab} set to custom URL", async () => { + it("should send correct event data for about:home set to custom URL", async () => { + fakeHomePageUrl = "https://searchprovider.com"; + instance._prefs.set(TELEMETRY_PREF, true); + instance._classifySite = () => Promise.resolve("other"); + const sendEvent = sandbox.stub(instance, "sendEvent"); + + await instance.sendPageTakeoverData(); + assert.calledOnce(sendEvent); + assert.equal(sendEvent.firstCall.args[0].event, "PAGE_TAKEOVER_DATA"); + assert.deepEqual(sendEvent.firstCall.args[0].value, { + home_url_category: "other", + }); + assert.validate(sendEvent.firstCall.args[0], UserEventPing); + }); + it("should send correct event data for about:newtab set to custom URL", async () => { globals.set("aboutNewTabService", { overridden: true, newTabURL: "https://searchprovider.com", }); - fakeHomePageUrl = "https://searchprovider.com"; instance._prefs.set(TELEMETRY_PREF, true); instance._classifySite = () => Promise.resolve("other"); const sendEvent = sandbox.stub(instance, "sendEvent"); @@ -989,7 +1010,6 @@ describe("TelemetryFeed", () => { assert.calledOnce(sendEvent); assert.equal(sendEvent.firstCall.args[0].event, "PAGE_TAKEOVER_DATA"); assert.deepEqual(sendEvent.firstCall.args[0].value, { - home_url_category: "other", newtab_url_category: "other", }); assert.validate(sendEvent.firstCall.args[0], UserEventPing); @@ -1001,5 +1021,21 @@ describe("TelemetryFeed", () => { await instance.sendPageTakeoverData(); assert.notCalled(sendEvent); }); + it("should send home_extension_id and newtab_extension_id when appropriate", async () => { + const ID = "{abc-foo-bar}"; + fakeExtensionSettingsStore.getSetting = () => ({id: ID}); + instance._prefs.set(TELEMETRY_PREF, true); + instance._classifySite = () => Promise.resolve("other"); + const sendEvent = sandbox.stub(instance, "sendEvent"); + + await instance.sendPageTakeoverData(); + assert.calledOnce(sendEvent); + assert.equal(sendEvent.firstCall.args[0].event, "PAGE_TAKEOVER_DATA"); + assert.deepEqual(sendEvent.firstCall.args[0].value, { + home_extension_id: ID, + newtab_extension_id: ID, + }); + assert.validate(sendEvent.firstCall.args[0], UserEventPing); + }); }); }); diff --git a/browser/components/newtab/test/unit/unit-entry.js b/browser/components/newtab/test/unit/unit-entry.js index af40c3b55fe9b..41b7da7759053 100644 --- a/browser/components/newtab/test/unit/unit-entry.js +++ b/browser/components/newtab/test/unit/unit-entry.js @@ -140,6 +140,7 @@ const TEST_GLOBAL = { removeObserver() {}, getPrefType() {}, clearUserPref() {}, + getChildList() { return []; }, getStringPref() {}, setStringPref() {}, getIntPref() {}, diff --git a/browser/components/newtab/test/xpcshell/test_ASRouterTargeting_attribution.js b/browser/components/newtab/test/xpcshell/test_ASRouterTargeting_attribution.js new file mode 100644 index 0000000000000..13c40b6aa524e --- /dev/null +++ b/browser/components/newtab/test/xpcshell/test_ASRouterTargeting_attribution.js @@ -0,0 +1,35 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +"use strict"; + +ChromeUtils.import("resource://gre/modules/Services.jsm"); +ChromeUtils.import("resource:///modules/AttributionCode.jsm"); +ChromeUtils.import("resource://activity-stream/lib/ASRouterTargeting.jsm"); + +add_task(async function check_attribution_data() { + // Some setup to fake the correct attribution data + const appPath = Services.dirsvc.get("GreD", Ci.nsIFile).parent.parent.path; + const attributionSvc = Cc["@mozilla.org/mac-attribution;1"] + .getService(Ci.nsIMacAttributionService); + const campaign = "non-fx-button"; + const source = "addons.mozilla.org"; + const referrer = `https://allizom.org/anything/?utm_campaign=${campaign}&utm_source=${source}`; + attributionSvc.setReferrerUrl(appPath, referrer, true); + AttributionCode._clearCache(); + AttributionCode.getAttrDataAsync(); + + const {campaign: attributionCampain, source: attributionSource} = ASRouterTargeting.Environment.attributionData; + equal(attributionCampain, campaign, "should get the correct campaign out of attributionData"); + equal(attributionSource, source, "should get the correct source out of attributionData"); + + const messages = [ + {id: "foo1", targeting: "attributionData.campaign == 'back_to_school' && attributionData.source == 'addons.mozilla.org'"}, + {id: "foo2", targeting: "attributionData.campaign == 'non-fx-button' && attributionData.source == 'addons.mozilla.org'"}, + ]; + + equal(await ASRouterTargeting.findMatchingMessage({messages}), messages[1], + "should select the message with the correct campaign and source"); + AttributionCode._clearCache(); +}); diff --git a/browser/components/newtab/test/xpcshell/xpcshell.ini b/browser/components/newtab/test/xpcshell/xpcshell.ini index 63599e7dee89a..2bf381da69dac 100644 --- a/browser/components/newtab/test/xpcshell/xpcshell.ini +++ b/browser/components/newtab/test/xpcshell/xpcshell.ini @@ -4,3 +4,5 @@ firefox-appdir = browser skip-if = toolkit == 'android' [test_AboutNewTabService.js] +[test_ASRouterTargeting_attribution.js] +skip-if = toolkit != "cocoa" # osx specific tests diff --git a/browser/components/payments/docs/index.rst b/browser/components/payments/docs/index.rst index df34dd213b74c..e34d64577c076 100644 --- a/browser/components/payments/docs/index.rst +++ b/browser/components/payments/docs/index.rst @@ -36,6 +36,11 @@ During development of the unprivileged custom elements, you can load the dialog the url `resource://payments/paymentRequest.xhtml`. You can then use the debugging console to load sample data. Autofill add/edit form strings will not appear when developing this way until they are converted to FTL. +You can force localization of Form Autofill strings using the following in the Browser Console when +the `paymentRequest.xhtml` tab is selected then reloading:: + + gBrowser.selectedBrowser.messageManager.loadFrameScript("chrome://formautofill/content/l10n.js", true) + Debugging Console ----------------- diff --git a/browser/components/payments/res/unprivileged-fallbacks.js b/browser/components/payments/res/unprivileged-fallbacks.js index 373bfd772e836..760836ca90258 100644 --- a/browser/components/payments/res/unprivileged-fallbacks.js +++ b/browser/components/payments/res/unprivileged-fallbacks.js @@ -54,7 +54,7 @@ var PaymentDialogUtils = { getFormFormat(country) { if (country == "DE") { return { - addressLevel3Label: "", + addressLevel3Label: "suburb", addressLevel2Label: "city", addressLevel1Label: "province", postalCodeLabel: "postalCode", @@ -80,7 +80,7 @@ var PaymentDialogUtils = { } return { - addressLevel3Label: "", + addressLevel3Label: "suburb", addressLevel2Label: "city", addressLevel1Label: country == "US" ? "state" : "province", postalCodeLabel: country == "US" ? "zip" : "postalCode", diff --git a/browser/components/payments/test/mochitest/test_basic_card_form.html b/browser/components/payments/test/mochitest/test_basic_card_form.html index 2ec161b06e897..59666000fddae 100644 --- a/browser/components/payments/test/mochitest/test_basic_card_form.html +++ b/browser/components/payments/test/mochitest/test_basic_card_form.html @@ -21,6 +21,7 @@ diff --git a/browser/components/payments/test/mochitest/test_payer_address_picker.html b/browser/components/payments/test/mochitest/test_payer_address_picker.html index 346e70dd755cb..f5afd3c6dd6db 100644 --- a/browser/components/payments/test/mochitest/test_payer_address_picker.html +++ b/browser/components/payments/test/mochitest/test_payer_address_picker.html @@ -20,7 +20,9 @@ - + diff --git a/browser/components/payments/test/mochitest/test_payment_dialog.html b/browser/components/payments/test/mochitest/test_payment_dialog.html index 0f761cafbb0e6..9850ba680b502 100644 --- a/browser/components/payments/test/mochitest/test_payment_dialog.html +++ b/browser/components/payments/test/mochitest/test_payment_dialog.html @@ -21,6 +21,7 @@ diff --git a/browser/components/payments/test/mochitest/test_payment_dialog_required_top_level_items.html b/browser/components/payments/test/mochitest/test_payment_dialog_required_top_level_items.html index 37a95b6a09aef..53608750ec6a1 100644 --- a/browser/components/payments/test/mochitest/test_payment_dialog_required_top_level_items.html +++ b/browser/components/payments/test/mochitest/test_payment_dialog_required_top_level_items.html @@ -20,6 +20,7 @@ diff --git a/browser/components/pocket/skin/pocket.css b/browser/components/pocket/skin/pocket.css index 6f81ce07098df..3db15eb260be7 100644 --- a/browser/components/pocket/skin/pocket.css +++ b/browser/components/pocket/skin/pocket.css @@ -49,8 +49,6 @@ #pocket-button-box[animate="true"] > #pocket-animatable-box, #pocket-button > .toolbarbutton-animatable-box { - position: absolute; - overflow: hidden; top: calc(50% - 8px); /* 8px is half the height of the sprite */ /* Since .toolbarbutton-icon uses a different width than the animatable box, we need to set a padding relative to the difference in widths. */ @@ -163,7 +161,7 @@ } } -.toolbarbutton-animatable-box[animate="pocket"] > .toolbarbutton-animatable-image { +#library-animatable-box[animate="pocket"] > .toolbarbutton-animatable-image { background-image: url("chrome://pocket/skin/library-pocket-animation.svg"); width: 1078px; animation-name: library-pocket-animation; @@ -171,11 +169,11 @@ animation-timing-function: steps(48); } -.toolbarbutton-animatable-box[animate="pocket"]:-moz-locale-dir(rtl) > .toolbarbutton-animatable-image { +#library-animatable-box[animate="pocket"]:-moz-locale-dir(rtl) > .toolbarbutton-animatable-image { animation-name: library-pocket-animation-rtl; } -.toolbarbutton-animatable-box[animate="pocket"][fade] > .toolbarbutton-animatable-image { +#library-animatable-box[animate="pocket"][fade] > .toolbarbutton-animatable-image { animation-name: library-pocket-fade; animation-duration: 2s; animation-timing-function: ease-out; diff --git a/browser/components/search/content/search-one-offs.js b/browser/components/search/content/search-one-offs.js index 88f4428957e83..4973b029b2b87 100644 --- a/browser/components/search/content/search-one-offs.js +++ b/browser/components/search/content/search-one-offs.js @@ -8,6 +8,38 @@ { +let sharedFragment; +function getFragment() { + if (!sharedFragment) { + sharedFragment = MozXULElement.parseXULToFragment(` + + + + + + + + + + + + + + + + + + + + + + + `, ["chrome://browser/locale/browser.dtd"]); + } + + return document.importNode(sharedFragment, true); +} + class MozSearchOneOffs extends MozXULElement { constructor() { super(); @@ -183,32 +215,11 @@ class MozSearchOneOffs extends MozXULElement { } connectedCallback() { - this.appendChild( - MozXULElement.parseXULToFragment(` - - - - - - - - - - - - - - - - - - - - - - - `, ["chrome://browser/locale/browser.dtd"]) - ); + if (this.delayConnectedCallback()) { + return; + } + + this.appendChild(getFragment()); this._popup = null; diff --git a/browser/locales/en-US/chrome/browser/browser.dtd b/browser/locales/en-US/chrome/browser/browser.dtd index 84bff6789ecbb..b0b1723e8f9f0 100644 --- a/browser/locales/en-US/chrome/browser/browser.dtd +++ b/browser/locales/en-US/chrome/browser/browser.dtd @@ -26,7 +26,15 @@ + + + + + diff --git a/browser/themes/shared/toolbarbutton-icons.inc.css b/browser/themes/shared/toolbarbutton-icons.inc.css index a0d4eff9108d5..046d8341b0334 100644 --- a/browser/themes/shared/toolbarbutton-icons.inc.css +++ b/browser/themes/shared/toolbarbutton-icons.inc.css @@ -19,6 +19,22 @@ toolbar[brighttext] { fill-opacity: var(--toolbarbutton-icon-fill-opacity); } +.toolbarbutton-animatable-box { + position: absolute; + overflow: hidden; + z-index: 2; +} + +.toolbarbutton-animatable-box > .toolbarbutton-animatable-image { + animation-fill-mode: forwards; + animation-iteration-count: 1; + list-style-image: none; + /* Height must be equal to height of toolbarbutton padding-box. --toolbarbutton-height + is calculated and set during runtime by BrowserUtils.setToolbarButtonHeightProperty() + before the animation begins. */ + height: var(--toolbarbutton-height); +} + #back-button:-moz-locale-dir(rtl) > .toolbarbutton-icon, #forward-button:-moz-locale-dir(rtl) > .toolbarbutton-icon, #reload-button:-moz-locale-dir(rtl) > .toolbarbutton-icon, @@ -37,12 +53,6 @@ toolbar[brighttext] { list-style-image: url("chrome://browser/skin/forward.svg"); } -.toolbarbutton-animatable-box > .toolbarbutton-animatable-image { - animation-fill-mode: forwards; - animation-iteration-count: 1; - list-style-image: none; -} - /* The animations for the reload-button and stop-button are disabled outside of the nav-bar due to bug 1382894. */ :-moz-any(#reload-button, #stop-button) > .toolbarbutton-animatable-box { @@ -100,8 +110,6 @@ toolbar[brighttext] { #reload-button > .toolbarbutton-animatable-box, #stop-button > .toolbarbutton-animatable-box { - position: absolute; - overflow: hidden; top: calc(50% - 10px); /* Vertically center the 20px tall animatable image */ /* Since .toolbarbutton-icon uses a different width than the animatable-box, we need to set a padding relative to the difference in widths. */ @@ -110,11 +118,6 @@ toolbar[brighttext] { height: 20px; /* Height of each frame within the SVG sprite */ } -#reload-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image, -#stop-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image { - height: var(--toolbarbutton-height); /* Height must be equal to height of toolbarbutton padding-box */ -} - #stop-reload-button[animate] > #reload-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image { background-image: url("chrome://browser/skin/reload-to-stop.svg"); width: 468px; @@ -338,8 +341,6 @@ toolbar[brighttext] { } #nav-bar-overflow-button > .toolbarbutton-animatable-box { - position: absolute; - overflow: hidden; top: calc(50% - 18px); /* Vertically center the 36px tall animatable image */ /* Since .toolbarbutton-icon uses a different width than the animatable box, we need to set a padding relative to the difference in widths. */ @@ -349,10 +350,6 @@ toolbar[brighttext] { } #nav-bar-overflow-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image { - /* Height must be equal to height of toolbarbutton padding-box. --toolbarbutton-height - is calculated and set during runtime by BrowserUtils.setToolbarButtonHeightProperty() - before the animation begins. */ - height: var(--toolbarbutton-height); min-height: 36px; /* Minimum height must be equal to the height of the SVG sprite */ } @@ -459,29 +456,24 @@ toolbar[brighttext] { fill: transparent; } -.toolbarbutton-animatable-box[animate] { - position: absolute; - overflow: hidden; +#library-animatable-box[animate] { /* Position the sprite at the y-position of the library-button, then adjust based on the size difference between half of the button height and half - of the sprite height. The titlebar may have padding from -moz-appearance - that needs to be accounted for. */ - top: calc(var(--library-button-y) + var(--library-button-height) / 2 - 27px - var(--toolbox-y)); + of the sprite height. */ + top: calc(var(--library-button-height) / 2 - 27px); /* Set a margin relative to the difference in widths of the .toolbarbutton-icon and the .toolbar-animatable-box. This is correct even in RTL because the item is positioned using `left`. */ left: calc(var(--library-icon-x) + (16px + 2 * var(--toolbarbutton-inner-padding) - 22px) / 2); width: 22px; /* Width of each frame within the SVG sprite */ height: 54px; /* Height of each frame within the SVG sprite */ - z-index: 2; } -.toolbarbutton-animatable-box[animate] > .toolbarbutton-animatable-image { - height: var(--toolbarbutton-height); +#library-animatable-box[animate] > .toolbarbutton-animatable-image { min-height: 54px; /* Minimum height must be equal to the height of the SVG sprite */ } -.toolbarbutton-animatable-box[animate="bookmark"] > .toolbarbutton-animatable-image { +#library-animatable-box[animate="bookmark"] > .toolbarbutton-animatable-image { background-image: url("chrome://browser/skin/library-bookmark-animation.svg"); width: 1078px; animation-name: library-bookmark-animation; @@ -491,11 +483,11 @@ toolbar[brighttext] { stroke: var(--toolbarbutton-icon-fill-attention); } -.toolbarbutton-animatable-box[animate="bookmark"]:-moz-locale-dir(rtl) > .toolbarbutton-animatable-image { +#library-animatable-box[animate="bookmark"]:-moz-locale-dir(rtl) > .toolbarbutton-animatable-image { animation-name: library-bookmark-animation-rtl; } -.toolbarbutton-animatable-box[animate="bookmark"][fade] > .toolbarbutton-animatable-image { +#library-animatable-box[animate="bookmark"][fade] > .toolbarbutton-animatable-image { animation-name: library-bookmark-fade; animation-duration: 2s; animation-timing-function: ease-out; @@ -505,6 +497,11 @@ toolbar[brighttext] { .bookmark-item { list-style-image: url("chrome://mozapps/skin/places/defaultFavicon.svg"); + -moz-context-properties: fill; + fill: currentColor; +} + +toolbarbutton.bookmark-item { -moz-context-properties: fill, fill-opacity; fill: var(--lwt-toolbarbutton-icon-fill, currentColor); fill-opacity: var(--toolbarbutton-icon-fill-opacity); diff --git a/browser/themes/shared/toolbarbuttons.inc.css b/browser/themes/shared/toolbarbuttons.inc.css index 4e8190aa3736d..3bd91a1802876 100644 --- a/browser/themes/shared/toolbarbuttons.inc.css +++ b/browser/themes/shared/toolbarbuttons.inc.css @@ -83,7 +83,7 @@ toolbar[brighttext] { padding: 0 var(--toolbarbutton-inner-padding) !important; } -#navigator-toolbox:not(:hover) > #TabsToolbar .tabbrowser-arrowscrollbox > .scrollbutton-down:not([highlight]) { +#navigator-toolbox:not(:hover) .tabbrowser-arrowscrollbox > .scrollbutton-down:not([highlight]) { transition: 1s background-color ease-out; } diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp index 54c5933e16926..1410eff489859 100644 --- a/dom/ipc/ContentParent.cpp +++ b/dom/ipc/ContentParent.cpp @@ -109,7 +109,6 @@ #include "mozilla/Unused.h" #include "mozilla/HangDetails.h" #include "nsAnonymousTemporaryFile.h" -#include "nsAppDirectoryServiceDefs.h" #include "nsAppRunner.h" #include "nsCDefaultURIFixup.h" #include "nsCExternalHandlerService.h" @@ -119,7 +118,6 @@ #include "nsConsoleService.h" #include "nsContentUtils.h" #include "nsDebugImpl.h" -#include "nsDirectoryService.h" #include "nsDirectoryServiceDefs.h" #include "nsEmbedCID.h" #include "nsFrameLoader.h" @@ -575,6 +573,9 @@ UniquePtr ContentParent::sSandboxBrokerPolicyFactory #endif uint64_t ContentParent::sNextTabParentId = 0; nsDataHashtable ContentParent::sNextTabParents; +#if defined(XP_MACOSX) && defined(MOZ_CONTENT_SANDBOX) +StaticAutoPtr> ContentParent::sMacSandboxParams; +#endif // Whether a private docshell has been seen before. static bool sHasSeenPrivateDocShell = false; @@ -661,6 +662,10 @@ ContentParent::StartUp() #if defined(XP_LINUX) && defined(MOZ_CONTENT_SANDBOX) sSandboxBrokerPolicyFactory = MakeUnique(); #endif + +#if defined(XP_MACOSX) && defined(MOZ_CONTENT_SANDBOX) + sMacSandboxParams = new std::vector; +#endif } /*static*/ void @@ -673,6 +678,10 @@ ContentParent::ShutDown() #if defined(XP_LINUX) && defined(MOZ_CONTENT_SANDBOX) sSandboxBrokerPolicyFactory = nullptr; #endif + +#if defined(XP_MACOSX) && defined(MOZ_CONTENT_SANDBOX) + sMacSandboxParams = nullptr; +#endif } /*static*/ uint32_t @@ -2051,17 +2060,29 @@ ContentParent::GetTestShellSingleton() } #if defined(XP_MACOSX) && defined(MOZ_CONTENT_SANDBOX) +// Append the sandbox command line parameters that are not static. i.e., +// parameters that can be different for different child processes. void -ContentParent::AppendSandboxParams(std::vector &aArgs) +ContentParent::AppendDynamicSandboxParams(std::vector& aArgs) { - nsCOMPtr - directoryService(do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID)); - if (!directoryService) { - MOZ_CRASH("Failed to get the directory service"); + // For file content processes + if (GetRemoteType().EqualsLiteral(FILE_REMOTE_TYPE)) { + aArgs.push_back("-sbAllowFileAccess"); } +} + +// Generate the static sandbox command line parameters and store +// them in the provided params vector to be used each time a new +// content process is launched. +static void +CacheSandboxParams(std::vector& aCachedParams) +{ + // This must only be called once and we should + // be starting with an empty list of parameters. + MOZ_ASSERT(aCachedParams.empty()); // Indicates the child should startup the sandbox - aArgs.push_back("-sbStartup"); + aCachedParams.push_back("-sbStartup"); // The content sandbox level int contentSandboxLevel = @@ -2069,28 +2090,23 @@ ContentParent::AppendSandboxParams(std::vector &aArgs) std::ostringstream os; os << contentSandboxLevel; std::string contentSandboxLevelString = os.str(); - aArgs.push_back("-sbLevel"); - aArgs.push_back(contentSandboxLevelString); + aCachedParams.push_back("-sbLevel"); + aCachedParams.push_back(contentSandboxLevelString); // Sandbox logging if (Preferences::GetBool("security.sandbox.logging.enabled") || PR_GetEnv("MOZ_SANDBOX_LOGGING")) { - aArgs.push_back("-sbLogging"); - } - - // For file content processes - if (GetRemoteType().EqualsLiteral(FILE_REMOTE_TYPE)) { - aArgs.push_back("-sbAllowFileAccess"); + aCachedParams.push_back("-sbLogging"); } // Audio access if (!Preferences::GetBool("media.cubeb.sandbox")) { - aArgs.push_back("-sbAllowAudio"); + aCachedParams.push_back("-sbAllowAudio"); } // Windowserver access if (!Preferences::GetBool("security.sandbox.content.mac.disconnect-windowserver")) { - aArgs.push_back("-sbAllowWindowServer"); + aCachedParams.push_back("-sbAllowWindowServer"); } // .app path (normalized) @@ -2098,16 +2114,16 @@ ContentParent::AppendSandboxParams(std::vector &aArgs) if (!nsMacUtilsImpl::GetAppPath(appPath)) { MOZ_CRASH("Failed to get app dir paths"); } - aArgs.push_back("-sbAppPath"); - aArgs.push_back(appPath.get()); + aCachedParams.push_back("-sbAppPath"); + aCachedParams.push_back(appPath.get()); // TESTING_READ_PATH1 nsAutoCString testingReadPath1; Preferences::GetCString("security.sandbox.content.mac.testing_read_path1", testingReadPath1); if (!testingReadPath1.IsEmpty()) { - aArgs.push_back("-sbTestingReadPath"); - aArgs.push_back(testingReadPath1.get()); + aCachedParams.push_back("-sbTestingReadPath"); + aCachedParams.push_back(testingReadPath1.get()); } // TESTING_READ_PATH2 @@ -2115,8 +2131,8 @@ ContentParent::AppendSandboxParams(std::vector &aArgs) Preferences::GetCString("security.sandbox.content.mac.testing_read_path2", testingReadPath2); if (!testingReadPath2.IsEmpty()) { - aArgs.push_back("-sbTestingReadPath"); - aArgs.push_back(testingReadPath2.get()); + aCachedParams.push_back("-sbTestingReadPath"); + aCachedParams.push_back(testingReadPath2.get()); } // TESTING_READ_PATH3, TESTING_READ_PATH4. In development builds, @@ -2131,8 +2147,8 @@ ContentParent::AppendSandboxParams(std::vector &aArgs) } nsCString repoDirPath; Unused << repoDir->GetNativePath(repoDirPath); - aArgs.push_back("-sbTestingReadPath"); - aArgs.push_back(repoDirPath.get()); + aCachedParams.push_back("-sbTestingReadPath"); + aCachedParams.push_back(repoDirPath.get()); // Object dir nsCOMPtr objDir; @@ -2142,8 +2158,8 @@ ContentParent::AppendSandboxParams(std::vector &aArgs) } nsCString objDirPath; Unused << objDir->GetNativePath(objDirPath); - aArgs.push_back("-sbTestingReadPath"); - aArgs.push_back(objDirPath.get()); + aCachedParams.push_back("-sbTestingReadPath"); + aCachedParams.push_back(objDirPath.get()); } // DEBUG_WRITE_DIR @@ -2157,11 +2173,33 @@ ContentParent::AppendSandboxParams(std::vector &aArgs) // of that path. nsAutoCString bloatDirectoryPath = nsMacUtilsImpl::GetDirectoryPath(bloatLog); - aArgs.push_back("-sbDebugWriteDir"); - aArgs.push_back(bloatDirectoryPath.get()); + aCachedParams.push_back("-sbDebugWriteDir"); + aCachedParams.push_back(bloatDirectoryPath.get()); } #endif // DEBUG } + +// Append sandboxing command line parameters. +void +ContentParent::AppendSandboxParams(std::vector& aArgs) +{ + MOZ_ASSERT(sMacSandboxParams != nullptr); + + // An empty sMacSandboxParams indicates this is the + // first invocation and we don't have cached params yet. + if (sMacSandboxParams->empty()) { + CacheSandboxParams(*sMacSandboxParams); + MOZ_ASSERT(!sMacSandboxParams->empty()); + } + + // Append cached arguments. + aArgs.insert(aArgs.end(), + sMacSandboxParams->begin(), + sMacSandboxParams->end()); + + // Append remaining arguments. + AppendDynamicSandboxParams(aArgs); +} #endif // XP_MACOSX && MOZ_CONTENT_SANDBOX bool diff --git a/dom/ipc/ContentParent.h b/dom/ipc/ContentParent.h index cda828491738a..3c391badaf696 100644 --- a/dom/ipc/ContentParent.h +++ b/dom/ipc/ContentParent.h @@ -718,6 +718,11 @@ class ContentParent final : public PContentParent const TabId& aOpenerTabId, const TabId& aTabId); +#if defined(XP_MACOSX) && defined(MOZ_CONTENT_SANDBOX) + // Cached Mac sandbox params used when launching content processes. + static StaticAutoPtr> sMacSandboxParams; +#endif + // Hide the raw constructor methods since we don't want client code // using them. virtual PBrowserParent* SendPBrowserConstructor( @@ -1245,7 +1250,10 @@ class ContentParent final : public PContentParent // initializing. void MaybeEnableRemoteInputEventQueue(); +#if defined(XP_MACOSX) && defined(MOZ_CONTENT_SANDBOX) void AppendSandboxParams(std::vector& aArgs); + void AppendDynamicSandboxParams(std::vector& aArgs); +#endif public: void SendGetFilesResponseAndForget(const nsID& aID, diff --git a/dom/media/platforms/android/RemoteDataDecoder.cpp b/dom/media/platforms/android/RemoteDataDecoder.cpp index 70fa16a0564f1..38f1302fc6f35 100644 --- a/dom/media/platforms/android/RemoteDataDecoder.cpp +++ b/dom/media/platforms/android/RemoteDataDecoder.cpp @@ -279,6 +279,11 @@ class RemoteVideoDecoder : public RemoteDataDecoder return mIsHardwareAccelerated; } + ConversionRequired NeedsConversion() const override + { + return ConversionRequired::kNeedAnnexB; + } + private: const VideoInfo mConfig; GeckoSurface::GlobalRef mSurface; @@ -339,11 +344,6 @@ class RemoteAudioDecoder : public RemoteDataDecoder return InitPromise::CreateAndResolve(TrackInfo::kAudioTrack, __func__); } - ConversionRequired NeedsConversion() const override - { - return ConversionRequired::kNeedAnnexB; - } - private: class CallbacksSupport final : public JavaCallbacksSupport { diff --git a/gfx/layers/LayerMetricsWrapper.h b/gfx/layers/LayerMetricsWrapper.h index e32c354f79aa6..b3aab5c178ff5 100644 --- a/gfx/layers/LayerMetricsWrapper.h +++ b/gfx/layers/LayerMetricsWrapper.h @@ -433,6 +433,15 @@ class MOZ_STACK_CLASS LayerMetricsWrapper { return mLayer->GetFixedPositionScrollContainerId(); } + Maybe GetZoomAnimationId() const + { + MOZ_ASSERT(IsValid()); + // This function is only really needed for template-compatibility with + // WebRenderScrollDataWrapper. Although it will be called, the return + // value is not used. + return Nothing(); + } + bool IsBackfaceHidden() const { MOZ_ASSERT(IsValid()); diff --git a/gfx/layers/apz/src/APZCTreeManager.cpp b/gfx/layers/apz/src/APZCTreeManager.cpp index ca26b1e0f283c..a95a4c5a8d7d9 100644 --- a/gfx/layers/apz/src/APZCTreeManager.cpp +++ b/gfx/layers/apz/src/APZCTreeManager.cpp @@ -134,6 +134,16 @@ struct APZCTreeManager::TreeBuildingState { // children, meaning they are added to the children's ancestor transforms // instead. Those deferred transforms are tracked here. DeferredTransformMap mPerspectiveTransformsDeferredToChildren; + + // As we recurse down through the tree, this picks up the zoom animation id + // from a node in the layer tree, and propagates it downwards to the nearest + // APZC instance that is for an RCD node. Generally it will be set on the + // root node of the layers (sub-)tree, which may not be same as the RCD node + // for the subtree, and so we need this mechanism to ensure it gets propagated + // to the RCD's APZC instance. Once it is set on the APZC instance, the value + // is cleared back to Nothing(). Note that this is only used in the WebRender + // codepath. + Maybe mZoomAnimationId; }; class APZCTreeManager::CheckerboardFlushObserver : public nsIObserver { @@ -604,6 +614,8 @@ APZCTreeManager::SampleForWebRender(wr::TransactionWrapper& aTxn, AssertOnSamplerThread(); MutexAutoLock lock(mMapLock); + nsTArray transforms; + // Sample async transforms on scrollable layers. for (const auto& mapping : mApzcMap) { AsyncPanZoomController* apzc = mapping.second; @@ -615,9 +627,13 @@ APZCTreeManager::SampleForWebRender(wr::TransactionWrapper& aTxn, ParentLayerPoint layerTranslation = apzc->GetCurrentAsyncTransform( AsyncPanZoomController::eForCompositing).mTranslation; LayoutDeviceToParentLayerScale zoom; - if (apzc->Metrics().IsRootContent()) { + if (Maybe zoomAnimationId = apzc->GetZoomAnimationId()) { + // for now we only support zooming on root content APZCs + MOZ_ASSERT(apzc->Metrics().IsRootContent()); zoom = apzc->GetCurrentPinchZoomScale(AsyncPanZoomController::eForCompositing); - aTxn.UpdatePinchZoom(zoom.scale); + transforms.AppendElement(wr::ToWrTransformProperty( + *zoomAnimationId, + Matrix4x4::Scaling(zoom.scale, zoom.scale, 1.0f))); } // The positive translation means the painted content is supposed to @@ -634,7 +650,6 @@ APZCTreeManager::SampleForWebRender(wr::TransactionWrapper& aTxn, } // Now collect all the async transforms needed for the scrollthumbs. - nsTArray scrollbarTransforms; for (const ScrollThumbInfo& info : mScrollThumbInfo) { auto it = mApzcMap.find(info.mTargetGuid); if (it == mApzcMap.end()) { @@ -657,11 +672,11 @@ APZCTreeManager::SampleForWebRender(wr::TransactionWrapper& aTxn, info.mTargetIsAncestor, nullptr); }); - scrollbarTransforms.AppendElement(wr::ToWrTransformProperty( + transforms.AppendElement(wr::ToWrTransformProperty( info.mThumbAnimationId, transform)); } - aTxn.AppendTransformProperties(scrollbarTransforms); + aTxn.AppendTransformProperties(transforms); // Advance animations. It's important that this happens after // sampling all async transforms, because AdvanceAnimations() updates @@ -885,6 +900,10 @@ APZCTreeManager::PrepareNodeForLayer(const RecursiveMutexAutoLock& aProofOfTreeL bool parentHasPerspective = aState.mParentHasPerspective.top(); + if (Maybe zoomAnimationId = aLayer.GetZoomAnimationId()) { + aState.mZoomAnimationId = zoomAnimationId; + } + RefPtr node = nullptr; if (!needsApzc) { // Note: if layer properties must be propagated to nodes, RecvUpdate in @@ -995,6 +1014,11 @@ APZCTreeManager::PrepareNodeForLayer(const RecursiveMutexAutoLock& aProofOfTreeL node->SetLastChild(nullptr); } + if (aMetrics.IsRootContent()) { + apzc->SetZoomAnimationId(aState.mZoomAnimationId); + aState.mZoomAnimationId = Nothing(); + } + APZCTM_LOG("Using APZC %p for layer %p with identifiers %" PRIx64 " %" PRId64 "\n", apzc, aLayer.GetLayer(), uint64_t(aLayersId), aMetrics.GetScrollId()); diff --git a/gfx/layers/apz/src/AsyncPanZoomController.cpp b/gfx/layers/apz/src/AsyncPanZoomController.cpp index 4eeaac900d218..8d28ebb377c1a 100644 --- a/gfx/layers/apz/src/AsyncPanZoomController.cpp +++ b/gfx/layers/apz/src/AsyncPanZoomController.cpp @@ -5038,5 +5038,15 @@ bool AsyncPanZoomController::MaybeAdjustDestinationForScrollSnapping( return false; } +void AsyncPanZoomController::SetZoomAnimationId(const Maybe& aZoomAnimationId) +{ + mZoomAnimationId = aZoomAnimationId; +} + +Maybe AsyncPanZoomController::GetZoomAnimationId() const +{ + return mZoomAnimationId; +} + } // namespace layers } // namespace mozilla diff --git a/gfx/layers/apz/src/AsyncPanZoomController.h b/gfx/layers/apz/src/AsyncPanZoomController.h index 9a492733ad64c..b40656c9effc4 100644 --- a/gfx/layers/apz/src/AsyncPanZoomController.h +++ b/gfx/layers/apz/src/AsyncPanZoomController.h @@ -982,6 +982,15 @@ class AsyncPanZoomController { UniquePtr mOverscrollEffect; + // Zoom animation id, used for zooming in WebRender. This should only be + // set on the APZC instance for the root content document (i.e. the one we + // support zooming on), and is only used if WebRender is enabled. The + // animation id itself refers to the transform animation id that was set on + // the stacking context in the WR display list. By changing the transform + // associated with this id, we can adjust the scaling that WebRender applies, + // thereby controlling the zoom. + Maybe mZoomAnimationId; + friend class Axis; public: @@ -999,6 +1008,9 @@ class AsyncPanZoomController { return callable(mLastContentPaintMetrics); } + void SetZoomAnimationId(const Maybe& aZoomAnimationId); + Maybe GetZoomAnimationId() const; + /* =================================================================== * The functions and members in this section are used to expose * the current async transform state to callers. diff --git a/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js b/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js index 155ac9551a52c..8067a4f727021 100644 --- a/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js +++ b/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js @@ -41,13 +41,30 @@ function nativeHorizontalWheelEventMsg() { throw "Native wheel events not supported on platform " + getPlatform(); } +// Given an event target which may be a window or an element, get the associated window. +function windowForTarget(aTarget) { + if (aTarget instanceof Window) { + return aTarget; + } + return aTarget.ownerDocument.defaultView; +} + +// Given an event target which may be a window or an element, get the associated element. +function elementForTarget(aTarget) { + if (aTarget instanceof Window) { + return aTarget.document.documentElement; + } + return aTarget; +} + // Given a pixel scrolling delta, converts it to the platform's native units. -function nativeScrollUnits(aElement, aDimen) { +function nativeScrollUnits(aTarget, aDimen) { switch (getPlatform()) { case "linux": { // GTK deltas are treated as line height divided by 3 by gecko. - var targetWindow = aElement.ownerDocument.defaultView; - var lineHeight = targetWindow.getComputedStyle(aElement)["font-size"]; + var targetWindow = windowForTarget(aTarget); + var targetElement = elementForTarget(aTarget); + var lineHeight = targetWindow.getComputedStyle(targetElement)["font-size"]; return aDimen / (parseInt(lineHeight) * 3); } } @@ -84,14 +101,6 @@ function nativeMouseUpEventMsg() { throw "Native mouse-up events not supported on platform " + getPlatform(); } -// Given an event target which may be a window or an element, get the associated window. -function windowForTarget(aTarget) { - if (aTarget instanceof Window) { - return aTarget; - } - return aTarget.ownerDocument.defaultView; -} - function getBoundingClientRectRelativeToVisualViewport(aElement) { let utils = SpecialPowers.getDOMWindowUtils(window); var rect = aElement.getBoundingClientRect(); @@ -143,19 +152,20 @@ function rectRelativeToScreen(aElement) { // Synthesizes a native mousewheel event and returns immediately. This does not // guarantee anything; you probably want to use one of the other functions below // which actually wait for results. -// aX and aY are relative to the top-left of |aElement|'s containing window. +// aX and aY are relative to the top-left of |aTarget|'s bounding rect. // aDeltaX and aDeltaY are pixel deltas, and aObserver can be left undefined // if not needed. -function synthesizeNativeWheel(aElement, aX, aY, aDeltaX, aDeltaY, aObserver) { - var pt = coordinatesRelativeToScreen(aX, aY, aElement); +function synthesizeNativeWheel(aTarget, aX, aY, aDeltaX, aDeltaY, aObserver) { + var pt = coordinatesRelativeToScreen(aX, aY, aTarget); if (aDeltaX && aDeltaY) { throw "Simultaneous wheeling of horizontal and vertical is not supported on all platforms."; } - aDeltaX = nativeScrollUnits(aElement, aDeltaX); - aDeltaY = nativeScrollUnits(aElement, aDeltaY); + aDeltaX = nativeScrollUnits(aTarget, aDeltaX); + aDeltaY = nativeScrollUnits(aTarget, aDeltaY); var msg = aDeltaX ? nativeHorizontalWheelEventMsg() : nativeVerticalWheelEventMsg(); - var utils = SpecialPowers.getDOMWindowUtils(aElement.ownerDocument.defaultView); - utils.sendNativeMouseScrollEvent(pt.x, pt.y, msg, aDeltaX, aDeltaY, 0, 0, 0, aElement, aObserver); + var utils = SpecialPowers.getDOMWindowUtils(windowForTarget(aTarget)); + var element = elementForTarget(aTarget); + utils.sendNativeMouseScrollEvent(pt.x, pt.y, msg, aDeltaX, aDeltaY, 0, 0, 0, element, aObserver); return true; } @@ -175,50 +185,52 @@ function synthesizeNativeWheelAndWaitForObserver(aElement, aX, aY, aDeltaX, aDel } // Synthesizes a native mousewheel event and invokes the callback once the -// wheel event is dispatched to |aElement|'s containing window. If the event -// targets content in a subdocument, |aElement| should be inside the -// subdocument. See synthesizeNativeWheel for details on the other parameters. -function synthesizeNativeWheelAndWaitForWheelEvent(aElement, aX, aY, aDeltaX, aDeltaY, aCallback) { - var targetWindow = aElement.ownerDocument.defaultView; +// wheel event is dispatched to |aTarget|'s containing window. If the event +// targets content in a subdocument, |aTarget| should be inside the +// subdocument (or the subdocument's window). See synthesizeNativeWheel for +// details on the other parameters. +function synthesizeNativeWheelAndWaitForWheelEvent(aTarget, aX, aY, aDeltaX, aDeltaY, aCallback) { + var targetWindow = windowForTarget(aTarget); targetWindow.addEventListener("wheel", function(e) { setTimeout(aCallback, 0); }, {once: true}); - return synthesizeNativeWheel(aElement, aX, aY, aDeltaX, aDeltaY); + return synthesizeNativeWheel(aTarget, aX, aY, aDeltaX, aDeltaY); } // Synthesizes a native mousewheel event and invokes the callback once the -// first resulting scroll event is dispatched to |aElement|'s containing window. -// If the event targets content in a subdocument, |aElement| should be inside -// the subdocument. See synthesizeNativeWheel for details on the other -// parameters. -function synthesizeNativeWheelAndWaitForScrollEvent(aElement, aX, aY, aDeltaX, aDeltaY, aCallback) { - var targetWindow = aElement.ownerDocument.defaultView; +// first resulting scroll event is dispatched to |aTarget|'s containing window. +// If the event targets content in a subdocument, |aTarget| should be inside +// the subdocument (or the subdocument's window). See synthesizeNativeWheel +// for details on the other parameters. +function synthesizeNativeWheelAndWaitForScrollEvent(aTarget, aX, aY, aDeltaX, aDeltaY, aCallback) { + var targetWindow = windowForTarget(aTarget); targetWindow.addEventListener("scroll", function() { setTimeout(aCallback, 0); }, {capture: true, once: true}); // scroll events don't always bubble - return synthesizeNativeWheel(aElement, aX, aY, aDeltaX, aDeltaY); + return synthesizeNativeWheel(aTarget, aX, aY, aDeltaX, aDeltaY); } // Synthesizes a native mouse move event and returns immediately. -// aX and aY are relative to the top-left of |aElement|'s containing window. -function synthesizeNativeMouseMove(aElement, aX, aY) { - var pt = coordinatesRelativeToScreen(aX, aY, aElement); - var utils = SpecialPowers.getDOMWindowUtils(aElement.ownerDocument.defaultView); - utils.sendNativeMouseEvent(pt.x, pt.y, nativeMouseMoveEventMsg(), 0, aElement); +// aX and aY are relative to the top-left of |aTarget|'s bounding rect. +function synthesizeNativeMouseMove(aTarget, aX, aY) { + var pt = coordinatesRelativeToScreen(aX, aY, aTarget); + var utils = SpecialPowers.getDOMWindowUtils(windowForTarget(aTarget)); + var element = elementForTarget(aTarget); + utils.sendNativeMouseEvent(pt.x, pt.y, nativeMouseMoveEventMsg(), 0, element); return true; } // Synthesizes a native mouse move event and invokes the callback once the -// mouse move event is dispatched to |aElement|'s containing window. If the event -// targets content in a subdocument, |aElement| should be inside the -// subdocument. See synthesizeNativeMouseMove for details on the other -// parameters. -function synthesizeNativeMouseMoveAndWaitForMoveEvent(aElement, aX, aY, aCallback) { - var targetWindow = aElement.ownerDocument.defaultView; +// mouse move event is dispatched to |aTarget|'s containing window. If the event +// targets content in a subdocument, |aTarget| should be inside the +// subdocument (or the subdocument window). See synthesizeNativeMouseMove for +// details on the other parameters. +function synthesizeNativeMouseMoveAndWaitForMoveEvent(aTarget, aX, aY, aCallback) { + var targetWindow = windowForTarget(aTarget); targetWindow.addEventListener("mousemove", function(e) { setTimeout(aCallback, 0); }, {once: true}); - return synthesizeNativeMouseMove(aElement, aX, aY); + return synthesizeNativeMouseMove(aTarget, aX, aY); } // Synthesizes a native touch event and dispatches it. aX and aY in CSS pixels @@ -361,7 +373,7 @@ function synthesizeNativeClick(aElement, aX, aY, aObserver = null) { return true; } -// Move the mouse to (dx, dy) relative to |element|, and scroll the wheel +// Move the mouse to (dx, dy) relative to |target|, and scroll the wheel // at that location. // Moving the mouse is necessary to avoid wheel events from two consecutive // moveMouseAndScrollWheelOver() calls on different elements being incorrectly @@ -369,12 +381,12 @@ function synthesizeNativeClick(aElement, aX, aY, aObserver = null) { // We also wait for the mouse move event to be processed before sending the // wheel event, otherwise there is a chance they might get reordered, and // we have the transaction problem again. -function moveMouseAndScrollWheelOver(element, dx, dy, testDriver, waitForScroll = true) { - return synthesizeNativeMouseMoveAndWaitForMoveEvent(element, dx, dy, function() { +function moveMouseAndScrollWheelOver(target, dx, dy, testDriver, waitForScroll = true) { + return synthesizeNativeMouseMoveAndWaitForMoveEvent(target, dx, dy, function() { if (waitForScroll) { - synthesizeNativeWheelAndWaitForScrollEvent(element, dx, dy, 0, -10, testDriver); + synthesizeNativeWheelAndWaitForScrollEvent(target, dx, dy, 0, -10, testDriver); } else { - synthesizeNativeWheelAndWaitForWheelEvent(element, dx, dy, 0, -10, testDriver); + synthesizeNativeWheelAndWaitForWheelEvent(target, dx, dy, 0, -10, testDriver); } }); } diff --git a/gfx/layers/apz/test/mochitest/helper_overscroll_behavior_bug1494440.html b/gfx/layers/apz/test/mochitest/helper_overscroll_behavior_bug1494440.html new file mode 100644 index 0000000000000..845fa0ee57ec6 --- /dev/null +++ b/gfx/layers/apz/test/mochitest/helper_overscroll_behavior_bug1494440.html @@ -0,0 +1,52 @@ + + + Inactive iframe with overscroll-behavior + + + + + + + + + + + + + diff --git a/gfx/layers/apz/test/mochitest/test_group_wheelevents.html b/gfx/layers/apz/test/mochitest/test_group_wheelevents.html index c7c3e1fe43f1e..3a64a900051ab 100644 --- a/gfx/layers/apz/test/mochitest/test_group_wheelevents.html +++ b/gfx/layers/apz/test/mochitest/test_group_wheelevents.html @@ -36,6 +36,7 @@ {'file': 'helper_bug1271432.html', 'prefs': prefs}, {'file': 'helper_overscroll_behavior_bug1425573.html', 'prefs': timeout_prefs}, {'file': 'helper_overscroll_behavior_bug1425603.html', 'prefs': prefs}, + {'file': 'helper_overscroll_behavior_bug1494440.html', 'prefs': prefs}, {'file': 'helper_scroll_inactive_perspective.html', 'prefs': prefs}, {'file': 'helper_scroll_inactive_zindex.html', 'prefs': prefs}, {'file': 'helper_scroll_over_scrollbar.html', 'prefs': scrollbar_prefs}, diff --git a/gfx/layers/wr/WebRenderCommandBuilder.cpp b/gfx/layers/wr/WebRenderCommandBuilder.cpp index cdfd4d57d1b47..1da63f7c9481f 100644 --- a/gfx/layers/wr/WebRenderCommandBuilder.cpp +++ b/gfx/layers/wr/WebRenderCommandBuilder.cpp @@ -1321,7 +1321,14 @@ WebRenderCommandBuilder::BuildWebRenderCommands(wr::DisplayListBuilder& aBuilder mClipManager.BeginBuild(mManager, aBuilder); { - StackingContextHelper pageRootSc(sc, nullptr, aBuilder, aFilters); + if (!mZoomProp && gfxPrefs::APZAllowZooming() && XRE_IsContentProcess()) { + mZoomProp.emplace(); + mZoomProp->effect_type = wr::WrAnimationType::Transform; + mZoomProp->id = AnimationHelper::GetNextCompositorAnimationsId(); + } + + StackingContextHelper pageRootSc(sc, nullptr, aBuilder, aFilters, + LayoutDeviceRect(), nullptr, mZoomProp.ptrOr(nullptr)); if (ShouldDumpDisplayList(aDisplayListBuilder)) { mBuilderDumpIndex = aBuilder.Dump(mDumpIndent + 1, Some(mBuilderDumpIndex), Nothing()); } @@ -1332,6 +1339,9 @@ WebRenderCommandBuilder::BuildWebRenderCommands(wr::DisplayListBuilder& aBuilder // Make a "root" layer data that has everything else as descendants mLayerScrollData.emplace_back(); mLayerScrollData.back().InitializeRoot(mLayerScrollData.size() - 1); + if (mZoomProp) { + mLayerScrollData.back().SetZoomAnimationId(mZoomProp->id); + } auto callback = [&aScrollData](ScrollableLayerGuid::ViewID aScrollId) -> bool { return aScrollData.HasMetadataFor(aScrollId).isSome(); }; diff --git a/gfx/layers/wr/WebRenderCommandBuilder.h b/gfx/layers/wr/WebRenderCommandBuilder.h index 91932d69b5dca..aebdc3bbddc8f 100644 --- a/gfx/layers/wr/WebRenderCommandBuilder.h +++ b/gfx/layers/wr/WebRenderCommandBuilder.h @@ -193,6 +193,11 @@ class WebRenderCommandBuilder { wr::usize mBuilderDumpIndex; wr::usize mDumpIndent; + + // When zooming is enabled, this stores the animation property that we use + // to manipulate the zoom from APZ. + Maybe mZoomProp; + public: // Whether consecutive inactive display items should be grouped into one // blob image. diff --git a/gfx/layers/wr/WebRenderScrollData.h b/gfx/layers/wr/WebRenderScrollData.h index 0ada8cc83cde9..43098ce8a55ef 100644 --- a/gfx/layers/wr/WebRenderScrollData.h +++ b/gfx/layers/wr/WebRenderScrollData.h @@ -87,6 +87,9 @@ class WebRenderLayerScrollData void SetFixedPositionScrollContainerId(ScrollableLayerGuid::ViewID aId) { mFixedPosScrollContainerId = aId; } ScrollableLayerGuid::ViewID GetFixedPositionScrollContainerId() const { return mFixedPosScrollContainerId; } + void SetZoomAnimationId(const uint64_t& aId) { mZoomAnimationId = Some(aId); } + Maybe GetZoomAnimationId() const { return mZoomAnimationId; } + void Dump(const WebRenderScrollData& aOwner) const; friend struct IPC::ParamTraits; @@ -117,6 +120,7 @@ class WebRenderLayerScrollData ScrollbarData mScrollbarData; uint64_t mScrollbarAnimationId; ScrollableLayerGuid::ViewID mFixedPosScrollContainerId; + Maybe mZoomAnimationId; }; // Data needed by APZ, for the whole layer tree. One instance of this class @@ -237,6 +241,7 @@ struct ParamTraits WriteParam(aMsg, aParam.mScrollbarData); WriteParam(aMsg, aParam.mScrollbarAnimationId); WriteParam(aMsg, aParam.mFixedPosScrollContainerId); + WriteParam(aMsg, aParam.mZoomAnimationId); } static bool @@ -253,7 +258,8 @@ struct ParamTraits && ReadParam(aMsg, aIter, &aResult->mEventRegionsOverride) && ReadParam(aMsg, aIter, &aResult->mScrollbarData) && ReadParam(aMsg, aIter, &aResult->mScrollbarAnimationId) - && ReadParam(aMsg, aIter, &aResult->mFixedPosScrollContainerId); + && ReadParam(aMsg, aIter, &aResult->mFixedPosScrollContainerId) + && ReadParam(aMsg, aIter, &aResult->mZoomAnimationId); } }; diff --git a/gfx/layers/wr/WebRenderScrollDataWrapper.h b/gfx/layers/wr/WebRenderScrollDataWrapper.h index 8c1ddef645386..14c2b9c15194e 100644 --- a/gfx/layers/wr/WebRenderScrollDataWrapper.h +++ b/gfx/layers/wr/WebRenderScrollDataWrapper.h @@ -316,6 +316,12 @@ class MOZ_STACK_CLASS WebRenderScrollDataWrapper { return mLayer->GetFixedPositionScrollContainerId(); } + Maybe GetZoomAnimationId() const + { + MOZ_ASSERT(IsValid()); + return mLayer->GetZoomAnimationId(); + } + bool IsBackfaceHidden() const { // This is only used by APZCTM hit testing, and WR does its own diff --git a/gfx/webrender/Cargo.toml b/gfx/webrender/Cargo.toml index 6d900860e4304..68a5481366be4 100644 --- a/gfx/webrender/Cargo.toml +++ b/gfx/webrender/Cargo.toml @@ -73,7 +73,7 @@ mozangle = "0.1" freetype = { version = "0.4", default-features = false } [target.'cfg(target_os = "windows")'.dependencies] -dwrote = "0.6" +dwrote = "0.6.1" [target.'cfg(target_os = "macos")'.dependencies] core-foundation = "0.6" diff --git a/gfx/webrender_api/Cargo.toml b/gfx/webrender_api/Cargo.toml index fc9991e59193d..d069042170253 100644 --- a/gfx/webrender_api/Cargo.toml +++ b/gfx/webrender_api/Cargo.toml @@ -29,4 +29,4 @@ core-foundation = "0.6" core-graphics = "0.17.1" [target.'cfg(target_os = "windows")'.dependencies] -dwrote = "0.6" +dwrote = "0.6.1" diff --git a/gfx/webrender_bindings/Cargo.toml b/gfx/webrender_bindings/Cargo.toml index a5d7d4a77c98f..0228969af3045 100644 --- a/gfx/webrender_bindings/Cargo.toml +++ b/gfx/webrender_bindings/Cargo.toml @@ -23,7 +23,7 @@ default-features = false features = ["capture", "serialize_program"] [target.'cfg(target_os = "windows")'.dependencies] -dwrote = "0.6" +dwrote = "0.6.1" [target.'cfg(target_os = "macos")'.dependencies] core-foundation = "0.6" diff --git a/gfx/webrender_bindings/revision.txt b/gfx/webrender_bindings/revision.txt index 7a60d7aae851a..6ead74df9115b 100644 --- a/gfx/webrender_bindings/revision.txt +++ b/gfx/webrender_bindings/revision.txt @@ -1 +1 @@ -874d782a891db37707364be2071d91117c6e255a +56ffe6edc4c453a370784314194f9516af0a8950 diff --git a/gfx/wrench/Cargo.toml b/gfx/wrench/Cargo.toml index 33440743f543e..d0ff0226e4dd7 100644 --- a/gfx/wrench/Cargo.toml +++ b/gfx/wrench/Cargo.toml @@ -39,7 +39,7 @@ headless = [ "osmesa-sys", "osmesa-src" ] pathfinder = [ "webrender/pathfinder" ] [target.'cfg(target_os = "windows")'.dependencies] -dwrote = "0.6" +dwrote = "0.6.1" mozangle = {version = "0.1.5", features = ["egl"]} [target.'cfg(any(target_os = "linux", target_os = "macos"))'.dependencies] diff --git a/js/public/Stream.h b/js/public/Stream.h index 36edb69b4a268..fc6e926eb7d7e 100644 --- a/js/public/Stream.h +++ b/js/public/Stream.h @@ -76,6 +76,15 @@ namespace JS { +/** + * ## Readable stream callbacks + * + * Compartment safety: All callbacks (except Finalize) receive `cx` and + * `stream` arguments. SpiderMonkey enters the realm of the stream object + * before invoking these callbacks, so `stream` is never a wrapper. Other + * arguments may be wrappers. + */ + /** * Invoked whenever a reader desires more data from a ReadableStream's * embedding-provided underlying source. diff --git a/js/src/builtin/Stream.cpp b/js/src/builtin/Stream.cpp index 2e18e9a33c604..c1601d7e47b52 100644 --- a/js/src/builtin/Stream.cpp +++ b/js/src/builtin/Stream.cpp @@ -174,9 +174,12 @@ PromiseInvokeOrNoop(JSContext* cx, HandleValue O, HandlePropertyName P, HandleVa static MOZ_MUST_USE JSObject* PromiseRejectedWithPendingError(JSContext* cx) { - // Not much we can do about uncatchable exceptions, just bail. RootedValue exn(cx); - if (!GetAndClearException(cx, &exn)) { + if (!cx->isExceptionPending() || !GetAndClearException(cx, &exn)) { + // Uncatchable error. This happens when a slow script is killed or a + // worker is terminated. Propagate the uncatchable error. This will + // typically kill off the calling asynchronous process: the caller + // can't hook its continuation to the new rejected promise. return nullptr; } return PromiseObject::unforgeableReject(cx, exn); @@ -1640,13 +1643,6 @@ ReadableStreamGetNumReadRequests(ReadableStream* stream) return reader->requests()->getDenseInitializedLength(); } -enum class ReaderMode -{ - None, - Default, -}; - -#if DEBUG // Streams spec 3.4.12. ReadableStreamHasDefaultReader ( stream ) static MOZ_MUST_USE bool ReadableStreamHasDefaultReader(JSContext* cx, Handle stream, bool* result) @@ -1668,25 +1664,6 @@ ReadableStreamHasDefaultReader(JSContext* cx, Handle stream, bo *result = reader->is(); return true; } -#endif // DEBUG - -static MOZ_MUST_USE bool -ReadableStreamGetReaderMode(JSContext* cx, Handle stream, ReaderMode* mode) -{ - if (!stream->hasReader()) { - *mode = ReaderMode::None; - return true; - } - - Rooted reader(cx); - if (!UnwrapReaderFromStream(cx, stream, &reader)) { - return false; - } - - *mode = ReaderMode::Default; - - return true; -} /*** 3.5. Class ReadableStreamDefaultReader ******************************************************/ @@ -2048,8 +2025,9 @@ ReadableStreamReaderGenericRelease(JSContext* cx, Handle // clean way to do this, unfortunately. JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_READABLESTREAMREADER_RELEASED); RootedValue exn(cx); - // Not much we can do about uncatchable exceptions, just bail. - if (!GetAndClearException(cx, &exn)) { + if (!cx->isExceptionPending() || !GetAndClearException(cx, &exn)) { + // Uncatchable error. Die immediately without resolving + // reader.[[closedPromise]]. return false; } @@ -2621,16 +2599,13 @@ ReadableStreamControllerCancelSteps(JSContext* cx, if (unwrappedController->hasExternalSource()) { RootedValue rval(cx); { - RootedValue wrappedReason(cx, reason); AutoRealm ar(cx, unwrappedController); + Rooted stream(cx, unwrappedController->stream()); + void* source = unwrappedUnderlyingSource.toPrivate(); + RootedValue wrappedReason(cx, reason); if (!cx->compartment()->wrap(cx, &wrappedReason)) { return nullptr; } - void* source = unwrappedUnderlyingSource.toPrivate(); - - // Thanks to `ar`, `unwrappedController` is now same-compartment with `cx`. - // That's why this variable `stream` does not get the `unwrapped` prefix. - Rooted stream(cx, unwrappedController->stream()); cx->check(stream, wrappedReason); rval = cx->runtime()->readableStreamCancelCallback(cx, stream, source, @@ -2850,11 +2825,17 @@ ReadableStreamControllerCallPullIfNeeded(JSContext* cx, Rooted stream(cx, controller->stream()); pullPromise = ReadableStreamTee_Pull(cx, teeState); } else if (controller->hasExternalSource()) { - void* source = underlyingSource.toPrivate(); - Rooted stream(cx, controller->stream()); - double desiredSize = ReadableStreamControllerGetDesiredSizeUnchecked(controller); - cx->runtime()->readableStreamDataRequestCallback(cx, stream, source, - stream->embeddingFlags(), desiredSize); + { + AutoRealm ar(cx, controller); + Rooted stream(cx, controller->stream()); + void* source = underlyingSource.toPrivate(); + double desiredSize = ReadableStreamControllerGetDesiredSizeUnchecked(controller); + cx->runtime()->readableStreamDataRequestCallback(cx, + stream, + source, + stream->embeddingFlags(), + desiredSize); + } pullPromise = PromiseObject::unforgeableResolve(cx, UndefinedHandleValue); } else { pullPromise = PromiseInvokeOrNoop(cx, underlyingSource, cx->names().pull, controllerVal); @@ -3016,7 +2997,9 @@ ReadableStreamDefaultControllerEnqueue(JSContext* cx, // and // Step d: If enqueueResult is an abrupt completion, RootedValue exn(cx); - if (!cx->getPendingException(&exn)) { + if (!cx->isExceptionPending() || !GetAndClearException(cx, &exn)) { + // Uncatchable error. Die immediately without erroring the + // stream. return false; } @@ -3028,6 +3011,7 @@ ReadableStreamDefaultControllerEnqueue(JSContext* cx, } // Step b.ii.2: Return chunkSize. + cx->setPendingException(exn); return false; } } @@ -3052,6 +3036,7 @@ static MOZ_MUST_USE bool ReadableStreamControllerError(JSContext* cx, Handle controller, HandleValue e) { + MOZ_ASSERT(!cx->isExceptionPending()); AssertSameCompartment(cx, e); // Step 1: Let stream be controller.[[controlledReadableStream]]. @@ -3090,6 +3075,8 @@ ReadableStreamDefaultControllerErrorIfNeeded(JSContext* cx, Handle controller, HandleValue e) { + MOZ_ASSERT(!cx->isExceptionPending()); + // Step 1: If controller.[[controlledReadableStream]].[[state]] is "readable", // perform ! ReadableStreamDefaultControllerError(controller, e). Rooted stream(cx, controller->stream()); @@ -3386,9 +3373,6 @@ static const ClassOps ReadableByteStreamControllerClassOps = { CLASS_SPEC(ReadableByteStreamController, 3, SlotCount, ClassSpec::DontDefineConstructor, JSCLASS_BACKGROUND_FINALIZE, &ReadableByteStreamControllerClassOps); - -/*** */ - // Streams spec, 3.10.5.1. [[CancelSteps]] () // Unified with 3.8.5.1 above. @@ -3438,14 +3422,15 @@ ReadableByteStreamControllerPullSteps(JSContext* cx, size_t bytesWritten; { + AutoRealm ar(cx, stream); JS::AutoSuppressGCAnalysis suppressGC(cx); JS::AutoCheckCannotGC noGC; bool dummy; void* buffer = JS_GetArrayBufferViewData(view, &dummy, noGC); + auto cb = cx->runtime()->readableStreamWriteIntoReadRequestCallback; MOZ_ASSERT(cb); // TODO: use bytesWritten to correctly update the request's state. - // TODO: make this compartment-safe. cb(cx, stream, underlyingSource, stream->embeddingFlags(), buffer, queueTotalSize, &bytesWritten); } @@ -3664,8 +3649,9 @@ ReadableByteStreamControllerClose(JSContext* cx, HandlegetPendingException(&e)) { + if (!cx->isExceptionPending() || !GetAndClearException(cx, &e)) { + // Uncatchable error. Die immediately without erroring the + // stream. return false; } @@ -3675,6 +3661,7 @@ ReadableByteStreamControllerClose(JSContext* cx, HandlesetPendingException(e); return false; } } @@ -4172,8 +4159,9 @@ JS::NewReadableDefaultStreamObject(JSContext* cx, RootedObject source(cx, underlyingSource); if (!source) { source = NewBuiltinClassInstance(cx); - if (!source) + if (!source) { return nullptr; + } } RootedValue sourceVal(cx, ObjectValue(*source)); RootedValue sizeVal(cx, size ? ObjectValue(*size) : UndefinedValue()); @@ -4234,8 +4222,9 @@ JS_PUBLIC_API(bool) JS::ReadableStreamIsReadable(JSContext* cx, HandleObject streamObj, bool* result) { ReadableStream* stream = APIToUnwrapped(cx, streamObj); - if (!stream) + if (!stream) { return false; + } *result = stream->readable(); return true; @@ -4245,8 +4234,9 @@ JS_PUBLIC_API(bool) JS::ReadableStreamIsLocked(JSContext* cx, HandleObject streamObj, bool* result) { ReadableStream* stream = APIToUnwrapped(cx, streamObj); - if (!stream) + if (!stream) { return false; + } *result = stream->locked(); return true; @@ -4256,8 +4246,9 @@ JS_PUBLIC_API(bool) JS::ReadableStreamIsDisturbed(JSContext* cx, HandleObject streamObj, bool* result) { ReadableStream* stream = APIToUnwrapped(cx, streamObj); - if (!stream) + if (!stream) { return false; + } *result = stream->disturbed(); return true; @@ -4267,8 +4258,9 @@ JS_PUBLIC_API(bool) JS::ReadableStreamGetEmbeddingFlags(JSContext* cx, HandleObject streamObj, uint8_t* flags) { ReadableStream* stream = APIToUnwrapped(cx, streamObj); - if (!stream) + if (!stream) { return false; + } *flags = stream->embeddingFlags(); return true; @@ -4282,8 +4274,9 @@ JS::ReadableStreamCancel(JSContext* cx, HandleObject streamObj, HandleValue reas cx->check(reason); Rooted stream(cx, APIToUnwrapped(cx, streamObj)); - if (!stream) + if (!stream) { return nullptr; + } return ::ReadableStreamCancel(cx, stream, reason); } @@ -4292,8 +4285,9 @@ JS_PUBLIC_API(bool) JS::ReadableStreamGetMode(JSContext* cx, HandleObject streamObj, JS::ReadableStreamMode* mode) { ReadableStream* stream = APIToUnwrapped(cx, streamObj); - if (!stream) + if (!stream) { return false; + } *mode = stream->mode(); return true; @@ -4306,8 +4300,9 @@ JS::ReadableStreamGetReader(JSContext* cx, HandleObject streamObj, ReadableStrea CHECK_THREAD(cx); Rooted stream(cx, APIToUnwrapped(cx, streamObj)); - if (!stream) + if (!stream) { return nullptr; + } JSObject* result = CreateReadableStreamDefaultReader(cx, stream); MOZ_ASSERT_IF(result, IsObjectInContextCompartment(result, cx)); @@ -4321,8 +4316,9 @@ JS::ReadableStreamGetExternalUnderlyingSource(JSContext* cx, HandleObject stream CHECK_THREAD(cx); Rooted stream(cx, APIToUnwrapped(cx, streamObj)); - if (!stream) + if (!stream) { return false; + } MOZ_ASSERT(stream->mode() == JS::ReadableStreamMode::ExternalSource); if (stream->locked()) { @@ -4346,8 +4342,9 @@ JS_PUBLIC_API(bool) JS::ReadableStreamReleaseExternalUnderlyingSource(JSContext* cx, HandleObject streamObj) { ReadableStream* stream = APIToUnwrapped(cx, streamObj); - if (!stream) + if (!stream) { return false; + } MOZ_ASSERT(stream->mode() == JS::ReadableStreamMode::ExternalSource); MOZ_ASSERT(stream->locked()); @@ -4364,8 +4361,9 @@ JS::ReadableStreamUpdateDataAvailableFromSource(JSContext* cx, JS::HandleObject CHECK_THREAD(cx); Rooted stream(cx, APIToUnwrapped(cx, streamObj)); - if (!stream) + if (!stream) { return false; + } // This is based on Streams spec 3.10.4.4. enqueue(chunk) steps 1-3 and // 3.12.9. ReadableByteStreamControllerEnqueue(controller, chunk) steps @@ -4412,12 +4410,11 @@ JS::ReadableStreamUpdateDataAvailableFromSource(JSContext* cx, JS::HandleObject } // Step 8: If ! ReadableStreamHasDefaultReader(stream) is true - ReaderMode readerMode; - if (!ReadableStreamGetReaderMode(cx, stream, &readerMode)) { + bool hasDefaultReader; + if (!ReadableStreamHasDefaultReader(cx, stream, &hasDefaultReader)) { return false; } - - if (readerMode == ReaderMode::Default) { + if (hasDefaultReader) { // Step b: Otherwise, // Step i: Assert: controller.[[queue]] is empty. MOZ_ASSERT(oldAvailableData == 0); @@ -4434,6 +4431,7 @@ JS::ReadableStreamUpdateDataAvailableFromSource(JSContext* cx, JS::HandleObject size_t bytesWritten; { + AutoRealm ar(cx, stream); JS::AutoSuppressGCAnalysis suppressGC(cx); JS::AutoCheckCannotGC noGC; bool dummy; @@ -4441,7 +4439,6 @@ JS::ReadableStreamUpdateDataAvailableFromSource(JSContext* cx, JS::HandleObject auto cb = cx->runtime()->readableStreamWriteIntoReadRequestCallback; MOZ_ASSERT(cb); // TODO: use bytesWritten to correctly update the request's state. - // TODO: make cross-compartment safe. cb(cx, stream, underlyingSource, stream->embeddingFlags(), buffer, availableData, &bytesWritten); } @@ -4477,12 +4474,12 @@ JS::ReadableStreamTee(JSContext* cx, HandleObject streamObj, CHECK_THREAD(cx); Rooted stream(cx, APIToUnwrapped(cx, streamObj)); - if (!stream) + if (!stream) { return false; + } Rooted branch1Stream(cx); Rooted branch2Stream(cx); - if (!ReadableStreamTee(cx, stream, false, &branch1Stream, &branch2Stream)) { return false; } @@ -4497,8 +4494,9 @@ JS_PUBLIC_API(bool) JS::ReadableStreamGetDesiredSize(JSContext* cx, JSObject* streamObj, bool* hasValue, double* value) { ReadableStream* stream = APIToUnwrapped(cx, streamObj); - if (!stream) + if (!stream) { return false; + } if (stream->errored()) { *hasValue = false; @@ -4523,8 +4521,9 @@ JS::ReadableStreamClose(JSContext* cx, HandleObject streamObj) CHECK_THREAD(cx); Rooted stream(cx, APIToUnwrapped(cx, streamObj)); - if (!stream) + if (!stream) { return false; + } Rooted controllerObj(cx, stream->controller()); if (!VerifyControllerStateForClosing(cx, controllerObj)) { @@ -4550,8 +4549,9 @@ JS::ReadableStreamEnqueue(JSContext* cx, HandleObject streamObj, HandleValue chu cx->check(chunk); Rooted stream(cx, APIToUnwrapped(cx, streamObj)); - if (!stream) + if (!stream) { return false; + } if (stream->mode() != JS::ReadableStreamMode::Default) { JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, @@ -4577,8 +4577,9 @@ JS::ReadableStreamError(JSContext* cx, HandleObject streamObj, HandleValue error cx->check(error); Rooted stream(cx, APIToUnwrapped(cx, streamObj)); - if (!stream) + if (!stream) { return false; + } // Step 3: If stream.[[state]] is not "readable", throw a TypeError exception. if (!stream->readable()) { @@ -4596,8 +4597,9 @@ JS_PUBLIC_API(bool) JS::ReadableStreamReaderIsClosed(JSContext* cx, HandleObject readerObj, bool* result) { Rooted reader(cx, APIToUnwrapped(cx, readerObj)); - if (!reader) + if (!reader) { return false; + } *result = reader->isClosed(); return true; @@ -4611,8 +4613,9 @@ JS::ReadableStreamReaderCancel(JSContext* cx, HandleObject readerObj, HandleValu cx->check(reason); Rooted reader(cx, APIToUnwrapped(cx, readerObj)); - if (!reader) + if (!reader) { return false; + } return ReadableStreamReaderGenericCancel(cx, reader, reason); } @@ -4624,8 +4627,9 @@ JS::ReadableStreamReaderReleaseLock(JSContext* cx, HandleObject readerObj) CHECK_THREAD(cx); Rooted reader(cx, APIToUnwrapped(cx, readerObj)); - if (!reader) + if (!reader) { return false; + } #ifdef DEBUG Rooted stream(cx); @@ -4646,8 +4650,9 @@ JS::ReadableStreamDefaultReaderRead(JSContext* cx, HandleObject readerObj) Rooted reader(cx); reader = APIToUnwrapped(cx, readerObj); - if (!reader) + if (!reader) { return nullptr; + } return ::ReadableStreamDefaultReaderRead(cx, reader); } diff --git a/js/src/frontend/FoldConstants.cpp b/js/src/frontend/FoldConstants.cpp index 563ce90e890b1..71f692e82f7bf 100644 --- a/js/src/frontend/FoldConstants.cpp +++ b/js/src/frontend/FoldConstants.cpp @@ -427,7 +427,6 @@ FoldType(JSContext* cx, ParseNode* pn, ParseNodeKind kind) return false; } pn->setKind(ParseNodeKind::Number); - pn->setArity(PN_NUMBER); pn->setOp(JSOP_DOUBLE); pn->as().setValue(d); } @@ -440,7 +439,6 @@ FoldType(JSContext* cx, ParseNode* pn, ParseNodeKind kind) return false; } pn->setKind(ParseNodeKind::String); - pn->setArity(PN_NAME); pn->setOp(JSOP_STRING); pn->as().setAtom(atom); } @@ -547,7 +545,6 @@ FoldCondition(JSContext* cx, ParseNode** nodePtr, PerHandlerParsersetKind(ParseNodeKind::False); node->setOp(JSOP_FALSE); } - node->setArity(PN_NULLARY); } return true; @@ -580,7 +577,6 @@ FoldTypeOfExpr(JSContext* cx, UnaryNode* node, PerHandlerParsersetKind(ParseNodeKind::String); - node->setArity(PN_NAME); node->setOp(JSOP_NOP); node->as().setAtom(result); } @@ -603,7 +599,6 @@ FoldDeleteExpr(JSContext* cx, UnaryNode* node, PerHandlerParsersetKind(ParseNodeKind::True); - node->setArity(PN_NULLARY); node->setOp(JSOP_TRUE); } @@ -677,12 +672,10 @@ FoldNot(JSContext* cx, UnaryNode* node, PerHandlerParser& pars node->setKind(ParseNodeKind::False); node->setOp(JSOP_FALSE); } - node->setArity(PN_NULLARY); } else if (expr->isKind(ParseNodeKind::True) || expr->isKind(ParseNodeKind::False)) { bool newval = !expr->isKind(ParseNodeKind::True); node->setKind(newval ? ParseNodeKind::True : ParseNodeKind::False); - node->setArity(PN_NULLARY); node->setOp(newval ? JSOP_TRUE : JSOP_FALSE); } @@ -720,7 +713,6 @@ FoldUnaryArithmetic(JSContext* cx, UnaryNode* node, PerHandlerParsersetKind(ParseNodeKind::Number); - node->setArity(PN_NUMBER); node->setOp(JSOP_DOUBLE); node->as().setValue(d); } @@ -965,7 +957,6 @@ FoldIf(JSContext* cx, ParseNode** nodePtr, PerHandlerParser& p // with no |else|. Replace the entire thing with an empty // statement list. node->setKind(ParseNodeKind::StatementList); - node->setArity(PN_LIST); node->as().makeEmpty(); } else { // Replacement invalidates |nextNode|, so reset it (if the @@ -1091,7 +1082,6 @@ FoldBinaryArithmetic(JSContext* cx, ListNode* node, PerHandlerParserpn_next = next; elem->setKind(ParseNodeKind::Number); - elem->setArity(PN_NUMBER); elem->setOp(JSOP_DOUBLE); elem->as().setValue(d); @@ -1104,7 +1094,6 @@ FoldBinaryArithmetic(JSContext* cx, ListNode* node, PerHandlerParseras().value(); node->setKind(ParseNodeKind::Number); - node->setArity(PN_NUMBER); node->setOp(JSOP_DOUBLE); node->as().setValue(d); } @@ -1152,7 +1141,6 @@ FoldExponentiation(JSContext* cx, ListNode* node, PerHandlerParseras().value(); node->setKind(ParseNodeKind::Number); - node->setArity(PN_NUMBER); node->setOp(JSOP_DOUBLE); node->as().setValue(ecmaPow(d1, d2)); return true; @@ -1279,7 +1267,6 @@ FoldElement(JSContext* cx, ParseNode** nodePtr, PerHandlerParsersetKind(ParseNodeKind::Number); - key->setArity(PN_NUMBER); key->setOp(JSOP_DOUBLE); key->as().setValue(index); } else { diff --git a/js/src/frontend/ParseNode.cpp b/js/src/frontend/ParseNode.cpp index 8d3638e0292d3..5728e4f63caa6 100644 --- a/js/src/frontend/ParseNode.cpp +++ b/js/src/frontend/ParseNode.cpp @@ -102,14 +102,14 @@ ParseNode::appendOrCreateList(ParseNodeKind kind, ParseNode* left, ParseNode* ri return list; } -#ifdef DEBUG - const ParseNodeArity js::frontend::ParseNodeKindArity[] = { #define ARITY(_name, arity) arity, FOR_EACH_PARSE_NODE_KIND(ARITY) #undef ARITY }; +#ifdef DEBUG + static const char * const parseNodeNames[] = { #define STRINGIFY(name, _arity) #name, FOR_EACH_PARSE_NODE_KIND(STRINGIFY) @@ -152,7 +152,7 @@ ParseNode::dump() void ParseNode::dump(GenericPrinter& out, int indent) { - switch (ParseNodeArity(pn_arity)) { + switch (getArity()) { case PN_NULLARY: as().dump(out); return; @@ -190,8 +190,8 @@ ParseNode::dump(GenericPrinter& out, int indent) as().dump(out, indent); return; } - out.printf("#", - (void*) this, unsigned(getKind()), unsigned(pn_arity)); + out.printf("#", + (void*) this, unsigned(getKind())); } void diff --git a/js/src/frontend/ParseNode.h b/js/src/frontend/ParseNode.h index 71645efb09465..8033f1f4be6be 100644 --- a/js/src/frontend/ParseNode.h +++ b/js/src/frontend/ParseNode.h @@ -579,20 +579,17 @@ class typeName; FOR_EACH_PARSENODE_SUBCLASS(DECLARE_CLASS) #undef DECLARE_CLASS -#ifdef DEBUG // ParseNodeKindArity[size_t(pnk)] is the arity of a ParseNode of kind pnk. extern const ParseNodeArity ParseNodeKindArity[]; -#endif class ParseNode { ParseNodeKind pn_type; /* ParseNodeKind::PNK_* type */ - // pn_op and pn_arity are not declared as the correct enum types - // due to difficulties with MS bitfield layout rules and a GCC - // bug. See https://bugzilla.mozilla.org/show_bug.cgi?id=1383157#c4 for - // details. + + // pn_op is not declared as the correct enum type due to difficulties with + // MS bitfield layout rules and a GCC bug. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=1383157#c4 for details. uint8_t pn_op; /* see JSOp enum and jsopcode.tbl */ - uint8_t pn_arity:4; /* see ParseNodeArity enum */ bool pn_parens:1; /* this expr was enclosed in parens */ bool pn_rhs_anon_fun:1; /* this expr is anonymous function or class that * is a direct RHS of ParseNodeKind::Assign or ParseNodeKind::Colon of @@ -602,31 +599,27 @@ class ParseNode void operator=(const ParseNode& other) = delete; public: - ParseNode(ParseNodeKind kind, JSOp op, ParseNodeArity arity) + ParseNode(ParseNodeKind kind, JSOp op) : pn_type(kind), pn_op(op), - pn_arity(arity), pn_parens(false), pn_rhs_anon_fun(false), pn_pos(0, 0), pn_next(nullptr) { MOZ_ASSERT(kind < ParseNodeKind::Limit); - MOZ_ASSERT(hasExpectedArity()); memset(&pn_u, 0, sizeof pn_u); } - ParseNode(ParseNodeKind kind, JSOp op, ParseNodeArity arity, const TokenPos& pos) + ParseNode(ParseNodeKind kind, JSOp op, const TokenPos& pos) : pn_type(kind), pn_op(op), - pn_arity(arity), pn_parens(false), pn_rhs_anon_fun(false), pn_pos(pos), pn_next(nullptr) { MOZ_ASSERT(kind < ParseNodeKind::Limit); - MOZ_ASSERT(hasExpectedArity()); memset(&pn_u, 0, sizeof pn_u); } @@ -636,7 +629,6 @@ class ParseNode ParseNodeKind getKind() const { MOZ_ASSERT(pn_type < ParseNodeKind::Limit); - MOZ_ASSERT(hasExpectedArity()); return pn_type; } void setKind(ParseNodeKind kind) { @@ -645,12 +637,8 @@ class ParseNode } bool isKind(ParseNodeKind kind) const { return getKind() == kind; } - ParseNodeArity getArity() const { return ParseNodeArity(pn_arity); } -#ifdef DEBUG - bool hasExpectedArity() const { return isArity(ParseNodeKindArity[size_t(pn_type)]); } -#endif + ParseNodeArity getArity() const { return ParseNodeKindArity[size_t(getKind())]; } bool isArity(ParseNodeArity a) const { return getArity() == a; } - void setArity(ParseNodeArity a) { pn_arity = a; MOZ_ASSERT(hasExpectedArity()); } bool isBinaryOperation() const { ParseNodeKind kind = getKind(); @@ -816,10 +804,16 @@ class NullaryNode : public ParseNode { public: NullaryNode(ParseNodeKind kind, const TokenPos& pos) - : ParseNode(kind, JSOP_NOP, PN_NULLARY, pos) {} + : ParseNode(kind, JSOP_NOP, pos) + { + MOZ_ASSERT(is()); + } NullaryNode(ParseNodeKind kind, JSOp op, const TokenPos& pos) - : ParseNode(kind, op, PN_NULLARY, pos) {} + : ParseNode(kind, op, pos) + { + MOZ_ASSERT(is()); + } static bool test(const ParseNode& node) { return node.isArity(PN_NULLARY); @@ -834,18 +828,20 @@ class NameNode : public ParseNode { protected: NameNode(ParseNodeKind kind, JSOp op, JSAtom* atom, ParseNode* initOrStmt, const TokenPos& pos) - : ParseNode(kind, op, PN_NAME, pos) + : ParseNode(kind, op, pos) { pn_u.name.atom = atom; pn_u.name.initOrStmt = initOrStmt; + MOZ_ASSERT(is()); } public: NameNode(ParseNodeKind kind, JSOp op, JSAtom* atom, const TokenPos& pos) - : ParseNode(kind, op, PN_NAME, pos) + : ParseNode(kind, op, pos) { pn_u.name.atom = atom; pn_u.name.initOrStmt = nullptr; + MOZ_ASSERT(is()); } static bool test(const ParseNode& node) { @@ -893,9 +889,10 @@ class UnaryNode : public ParseNode { public: UnaryNode(ParseNodeKind kind, const TokenPos& pos, ParseNode* kid) - : ParseNode(kind, JSOP_NOP, PN_UNARY, pos) + : ParseNode(kind, JSOP_NOP, pos) { pn_u.unary.kid = kid; + MOZ_ASSERT(is()); } static bool test(const ParseNode& node) { @@ -952,17 +949,19 @@ class BinaryNode : public ParseNode { public: BinaryNode(ParseNodeKind kind, JSOp op, const TokenPos& pos, ParseNode* left, ParseNode* right) - : ParseNode(kind, op, PN_BINARY, pos) + : ParseNode(kind, op, pos) { pn_u.binary.left = left; pn_u.binary.right = right; + MOZ_ASSERT(is()); } BinaryNode(ParseNodeKind kind, JSOp op, ParseNode* left, ParseNode* right) - : ParseNode(kind, op, PN_BINARY, TokenPos::box(left->pn_pos, right->pn_pos)) + : ParseNode(kind, op, TokenPos::box(left->pn_pos, right->pn_pos)) { pn_u.binary.left = left; pn_u.binary.right = right; + MOZ_ASSERT(is()); } static bool test(const ParseNode& node) { @@ -1052,11 +1051,12 @@ class TernaryNode : public ParseNode TernaryNode(ParseNodeKind kind, ParseNode* kid1, ParseNode* kid2, ParseNode* kid3, const TokenPos& pos) - : ParseNode(kind, JSOP_NOP, PN_TERNARY, pos) + : ParseNode(kind, JSOP_NOP, pos) { pn_u.ternary.kid1 = kid1; pn_u.ternary.kid2 = kid2; pn_u.ternary.kid3 = kid3; + MOZ_ASSERT(is()); } static bool test(const ParseNode& node) { @@ -1127,19 +1127,21 @@ class ListNode : public ParseNode public: ListNode(ParseNodeKind kind, const TokenPos& pos) - : ParseNode(kind, JSOP_NOP, PN_LIST, pos) + : ParseNode(kind, JSOP_NOP, pos) { makeEmpty(); + MOZ_ASSERT(is()); } ListNode(ParseNodeKind kind, JSOp op, const TokenPos& pos) - : ParseNode(kind, op, PN_LIST, pos) + : ParseNode(kind, op, pos) { makeEmpty(); + MOZ_ASSERT(is()); } ListNode(ParseNodeKind kind, JSOp op, ParseNode* kid) - : ParseNode(kind, op, PN_LIST, kid->pn_pos) + : ParseNode(kind, op, kid->pn_pos) { if (kid->pn_pos.begin < pn_pos.begin) { pn_pos.begin = kid->pn_pos.begin; @@ -1150,6 +1152,7 @@ class ListNode : public ParseNode pn_u.list.tail = &kid->pn_next; pn_u.list.count = 1; pn_u.list.xflags = 0; + MOZ_ASSERT(is()); } static bool test(const ParseNode& node) { @@ -1434,7 +1437,7 @@ class CodeNode : public ParseNode { public: CodeNode(ParseNodeKind kind, JSOp op, const TokenPos& pos) - : ParseNode(kind, op, PN_CODE, pos) + : ParseNode(kind, op, pos) { MOZ_ASSERT(kind == ParseNodeKind::Function || kind == ParseNodeKind::Module); MOZ_ASSERT_IF(kind == ParseNodeKind::Module, op == JSOP_NOP); @@ -1443,6 +1446,7 @@ class CodeNode : public ParseNode op == JSOP_LAMBDA); // expression, method, accessor, &c. MOZ_ASSERT(!pn_u.code.body); MOZ_ASSERT(!pn_u.code.funbox); + MOZ_ASSERT(is()); } static bool test(const ParseNode& node) { @@ -1493,7 +1497,7 @@ class NumericLiteral : public ParseNode { public: NumericLiteral(double value, DecimalPoint decimalPoint, const TokenPos& pos) - : ParseNode(ParseNodeKind::Number, JSOP_NOP, PN_NUMBER, pos) + : ParseNode(ParseNodeKind::Number, JSOP_NOP, pos) { pn_u.number.value = value; pn_u.number.decimalPoint = decimalPoint; @@ -1526,7 +1530,7 @@ class LexicalScopeNode : public ParseNode { public: LexicalScopeNode(LexicalScope::Data* bindings, ParseNode* body) - : ParseNode(ParseNodeKind::LexicalScope, JSOP_NOP, PN_SCOPE, body->pn_pos) + : ParseNode(ParseNodeKind::LexicalScope, JSOP_NOP, body->pn_pos) { pn_u.scope.bindings = bindings; pn_u.scope.body = body; @@ -1628,10 +1632,11 @@ class LoopControlStatement : public ParseNode { protected: LoopControlStatement(ParseNodeKind kind, PropertyName* label, const TokenPos& pos) - : ParseNode(kind, JSOP_NOP, PN_LOOP, pos) + : ParseNode(kind, JSOP_NOP, pos) { MOZ_ASSERT(kind == ParseNodeKind::Break || kind == ParseNodeKind::Continue); pn_u.loopControl.label = label; + MOZ_ASSERT(is()); } public: @@ -1822,7 +1827,7 @@ class RegExpLiteral : public ParseNode { public: RegExpLiteral(ObjectBox* reobj, const TokenPos& pos) - : ParseNode(ParseNodeKind::RegExp, JSOP_REGEXP, PN_REGEXP, pos) + : ParseNode(ParseNodeKind::RegExp, JSOP_REGEXP, pos) { pn_u.regexp.objbox = reobj; } @@ -1979,7 +1984,7 @@ class ClassField : public ParseNode { public: ClassField(ParseNode* name, ParseNode* initializer) - : ParseNode(ParseNodeKind::ClassField, JSOP_NOP, PN_FIELD, + : ParseNode(ParseNodeKind::ClassField, JSOP_NOP, initializer == nullptr ? name->pn_pos : TokenPos::box(name->pn_pos, initializer->pn_pos)) { pn_u.field.name = name; diff --git a/js/src/jit-test/tests/arguments/bug1503071.js b/js/src/jit-test/tests/arguments/bug1503071.js new file mode 100644 index 0000000000000..d34e9d598daef --- /dev/null +++ b/js/src/jit-test/tests/arguments/bug1503071.js @@ -0,0 +1,16 @@ +// |jit-test| exitstatus: 6 +var g = true + +setInterruptCallback(function() { + print(getBacktrace({args: true})); +}); + +function foo(bt, x=3, y = eval("g")) { + if (g) { + g = false + interruptIf(true); + foo(false); + } + (function() { n = bt;}); +} +foo(false); diff --git a/js/src/jit-test/tests/stream/bug-1387503-1.js b/js/src/jit-test/tests/stream/bug-1387503-1.js new file mode 100644 index 0000000000000..8ac6164a47ab8 --- /dev/null +++ b/js/src/jit-test/tests/stream/bug-1387503-1.js @@ -0,0 +1,37 @@ +// Test uncatchable error when a stream source's pull() method is called. + +// Make `debugger;` raise an uncatchable error. +let g = newGlobal(); +g.parent = this; +g.hit = false; +g.eval(` + new Debugger(parent).onDebuggerStatement = _frame => (hit = true, null); +`); + +// Create a stream whose pull() method raises an uncatchable error, +// and try reading from it. +let readerCreated = false; +let fnFinished = false; +async function fn() { + try { + let stream = new ReadableStream({ + start(controller) {}, + pull(controller) { + debugger; + } + }); + + let reader = stream.getReader(); + let p = reader.read(); + readerCreated = true; + await p; + } finally { + fnFinished = true; + } +} + +fn(); +drainJobQueue(); +assertEq(readerCreated, true); +assertEq(g.hit, true); +assertEq(fnFinished, false); diff --git a/js/src/jit-test/tests/stream/bug-1387503-2.js b/js/src/jit-test/tests/stream/bug-1387503-2.js new file mode 100644 index 0000000000000..852e99b28eb9b --- /dev/null +++ b/js/src/jit-test/tests/stream/bug-1387503-2.js @@ -0,0 +1,39 @@ +// Test uncatchable error when a stream's queuing strategy's size() method is called. + +// Make `debugger;` raise an uncatchable exception. +let g = newGlobal(); +g.parent = this; +g.hit = false; +g.eval(` + var dbg = new Debugger(parent); + dbg.onDebuggerStatement = (_frame, exc) => (hit = true, null); +`); + +let fnFinished = false; +async function fn() { + // Await once to postpone the uncatchable error until we're running inside + // a reaction job. We don't want the rest of the test to be terminated. + // (`drainJobQueue` catches uncatchable errors!) + await 1; + + try { + // Create a stream with a strategy whose .size() method raises an + // uncatchable exception, and have it call that method. + new ReadableStream({ + start(controller) { + controller.enqueue("FIRST POST"); // this calls .size() + } + }, { + size() { + debugger; + } + }); + } finally { + fnFinished = true; + } +} + +fn(); +drainJobQueue(); +assertEq(g.hit, true); +assertEq(fnFinished, false); diff --git a/js/src/jsapi-tests/testReadableStream.cpp b/js/src/jsapi-tests/testReadableStream.cpp index 627303b5f7fab..6a1f5ee648c27 100644 --- a/js/src/jsapi-tests/testReadableStream.cpp +++ b/js/src/jsapi-tests/testReadableStream.cpp @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "jsapi.h" - +#include "jsfriendapi.h" #include "jsapi-tests/tests.h" using namespace JS; @@ -39,6 +39,7 @@ static void DataRequestCB(JSContext* cx, HandleObject stream, void* underlyingSource, uint8_t flags, size_t desiredSize) { + js::AssertSameCompartment(cx, stream); MOZ_ASSERT(!dataRequestCBCalled, "Invalid test setup"); dataRequestCBCalled = true; } @@ -48,6 +49,7 @@ static void WriteIntoRequestBufferCB(JSContext* cx, HandleObject stream, void* underlyingSource, uint8_t flags, void* buffer, size_t length, size_t* bytesWritten) { + js::AssertSameCompartment(cx, stream); MOZ_ASSERT(!writeIntoRequestBufferCBCalled, "Invalid test setup"); writeIntoRequestBufferCBCalled = true; @@ -64,6 +66,8 @@ static Value CancelStreamCB(JSContext* cx, HandleObject stream, void* underlyingSource, uint8_t flags, HandleValue reason) { + js::AssertSameCompartment(cx, stream); + js::AssertSameCompartment(cx, reason); MOZ_ASSERT(!cancelStreamCBCalled, "Invalid test setup"); cancelStreamCBCalled = true; cancelStreamReason = reason; @@ -75,6 +79,7 @@ static Value streamClosedReason; static void StreamClosedCB(JSContext* cx, HandleObject stream, void* underlyingSource, uint8_t flags) { + js::AssertSameCompartment(cx, stream); MOZ_ASSERT(!streamClosedCBCalled, "Invalid test setup"); streamClosedCBCalled = true; } @@ -85,6 +90,8 @@ static void StreamErroredCB(JSContext* cx, HandleObject stream, void* underlyingSource, uint8_t flags, HandleValue reason) { + js::AssertSameCompartment(cx, stream); + js::AssertSameCompartment(cx, reason); MOZ_ASSERT(!streamErroredCBCalled, "Invalid test setup"); streamErroredCBCalled = true; streamErroredReason = reason; @@ -418,19 +425,65 @@ BEGIN_FIXTURE_TEST(StreamTestFixture, END_FIXTURE_TEST(StreamTestFixture, testReadableStream_ExternalSourceGetReader) +enum class CompartmentMode { + Same, + Cross, +}; + struct ReadFromExternalSourceFixture : public StreamTestFixture { virtual ~ReadFromExternalSourceFixture() {} - bool readWithoutDataAvailable(const char* evalSrc, const char* evalSrc2, + + // On success, streamGlobal is a global object (not a wrapper) + // and stream is in the same compartment as cx (it may be a CCW). + bool createExternalSourceStream(CompartmentMode compartmentMode, + MutableHandleObject streamGlobal, + MutableHandleObject stream) + { + if (compartmentMode == CompartmentMode::Same) { + streamGlobal.set(global); + stream.set(NewExternalSourceStream(cx)); + if (!stream) { + return false; + } + } else { + RootedObject savedGlobal(cx, global); + streamGlobal.set(createGlobal()); + if (!streamGlobal) { + return false; + } + global = savedGlobal; + + { + JSAutoRealm ar(cx, streamGlobal); + stream.set(NewExternalSourceStream(cx)); + if (!stream) { + return false; + } + } + if (!JS_WrapObject(cx, stream)) { + return false; + } + } + return true; + } + + bool readWithoutDataAvailable(CompartmentMode compartmentMode, + const char* evalSrc, + const char* evalSrc2, uint32_t writtenLength) { ResetCallbacks(); definePrint(); - RootedObject stream(cx, NewExternalSourceStream(cx)); - CHECK(stream); + // Create the stream. + RootedObject streamGlobal(cx); + RootedObject stream(cx); // can be a wrapper + CHECK(createExternalSourceStream(compartmentMode, &streamGlobal, &stream)); js::RunJobs(cx); + + // GetExternalUnderlyingSource locks the stream. void* underlyingSource; CHECK(ReadableStreamGetExternalUnderlyingSource(cx, stream, &underlyingSource)); CHECK(underlyingSource == &stubExternalUnderlyingSource); @@ -439,31 +492,36 @@ struct ReadFromExternalSourceFixture : public StreamTestFixture CHECK(locked); CHECK(ReadableStreamReleaseExternalUnderlyingSource(cx, stream)); + // Run caller-supplied JS code to read from the stream. RootedValue streamVal(cx, ObjectValue(*stream)); CHECK(JS_SetProperty(cx, global, "stream", streamVal)); - RootedValue rval(cx); EVAL(evalSrc, &rval); CHECK(dataRequestCBCalled); CHECK(!writeIntoRequestBufferCBCalled); CHECK(rval.isObject()); - RootedObject promise(cx, &rval.toObject()); - CHECK(IsPromiseObject(promise)); - CHECK(GetPromiseState(promise) == PromiseState::Pending); + RootedObject unwrappedPromise(cx, js::CheckedUnwrap(&rval.toObject())); + CHECK(unwrappedPromise); + CHECK(IsPromiseObject(unwrappedPromise)); + CHECK(GetPromiseState(unwrappedPromise) == PromiseState::Pending); + // Stream in some data; this resolves the read() result promise. size_t length = sizeof(testBufferData); - ReadableStreamUpdateDataAvailableFromSource(cx, stream, length); - + CHECK(ReadableStreamUpdateDataAvailableFromSource(cx, stream, length)); CHECK(writeIntoRequestBufferCBCalled); - CHECK(GetPromiseState(promise) == PromiseState::Fulfilled); - RootedValue iterVal(cx); - bool done; - if (!GetIterResult(cx, promise, &iterVal, &done)) { - return false; + CHECK(GetPromiseState(unwrappedPromise) == PromiseState::Fulfilled); + RootedObject chunk(cx); + { + JSAutoRealm ar(cx, unwrappedPromise); + RootedValue iterVal(cx); + bool done; + if (!GetIterResult(cx, unwrappedPromise, &iterVal, &done)) { + return false; + } + CHECK(!done); + chunk = &iterVal.toObject(); } - - CHECK(!done); - RootedObject chunk(cx, &iterVal.toObject()); + CHECK(JS_WrapObject(cx, &chunk)); CHECK(JS_IsUint8Array(chunk)); { @@ -473,6 +531,7 @@ struct ReadFromExternalSourceFixture : public StreamTestFixture CHECK(!memcmp(buffer, testBufferData, writtenLength)); } + // Check the callbacks fired by calling read() again. dataRequestCBCalled = false; writeIntoRequestBufferCBCalled = false; EVAL(evalSrc2, &rval); @@ -482,12 +541,19 @@ struct ReadFromExternalSourceFixture : public StreamTestFixture return true; } - bool readWithDataAvailable(const char* evalSrc, uint32_t writtenLength) { + bool readWithDataAvailable(CompartmentMode compartmentMode, + const char* evalSrc, + uint32_t writtenLength) + { ResetCallbacks(); definePrint(); - RootedObject stream(cx, NewExternalSourceStream(cx)); - CHECK(stream); + // Create a stream. + RootedObject streamGlobal(cx); + RootedObject stream(cx); + CHECK(createExternalSourceStream(compartmentMode, &streamGlobal, &stream)); + + // Getting the underlying source locks the stream. void* underlyingSource; CHECK(ReadableStreamGetExternalUnderlyingSource(cx, stream, &underlyingSource)); CHECK(underlyingSource == &stubExternalUnderlyingSource); @@ -496,27 +562,33 @@ struct ReadFromExternalSourceFixture : public StreamTestFixture CHECK(locked); CHECK(ReadableStreamReleaseExternalUnderlyingSource(cx, stream)); + // Make some data available. size_t length = sizeof(testBufferData); - ReadableStreamUpdateDataAvailableFromSource(cx, stream, length); + CHECK(ReadableStreamUpdateDataAvailableFromSource(cx, stream, length)); + // Read from the stream. RootedValue streamVal(cx, ObjectValue(*stream)); CHECK(JS_SetProperty(cx, global, "stream", streamVal)); - RootedValue rval(cx); EVAL(evalSrc, &rval); CHECK(writeIntoRequestBufferCBCalled); CHECK(rval.isObject()); - RootedObject promise(cx, &rval.toObject()); - CHECK(IsPromiseObject(promise)); - CHECK(GetPromiseState(promise) == PromiseState::Fulfilled); - RootedValue iterVal(cx); - bool done; - if (!GetIterResult(cx, promise, &iterVal, &done)) { - return false; + RootedObject unwrappedPromise(cx, js::CheckedUnwrap(&rval.toObject())); + CHECK(unwrappedPromise); + CHECK(IsPromiseObject(unwrappedPromise)); + CHECK(GetPromiseState(unwrappedPromise) == PromiseState::Fulfilled); + RootedObject chunk(cx); + { + JSAutoRealm ar(cx, unwrappedPromise); + RootedValue iterVal(cx); + bool done; + if (!GetIterResult(cx, unwrappedPromise, &iterVal, &done)) { + return false; + } + CHECK(!done); + chunk = &iterVal.toObject(); } - - CHECK(!done); - RootedObject chunk(cx, &iterVal.toObject()); + CHECK(JS_WrapObject(cx, &chunk)); CHECK(JS_IsUint8Array(chunk)); { @@ -533,16 +605,59 @@ struct ReadFromExternalSourceFixture : public StreamTestFixture BEGIN_FIXTURE_TEST(ReadFromExternalSourceFixture, testReadableStream_ExternalSourceReadDefaultWithoutDataAvailable) { - return readWithoutDataAvailable("r = stream.getReader(); r.read()", "r.read()", sizeof(testBufferData)); + return readWithoutDataAvailable(CompartmentMode::Same, + "r = stream.getReader(); r.read()", + "r.read()", + sizeof(testBufferData)); } END_FIXTURE_TEST(ReadFromExternalSourceFixture, testReadableStream_ExternalSourceReadDefaultWithoutDataAvailable) +BEGIN_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithoutDataAvailable_CrossCompartment1) +{ + // Scenario 1: The stream and reader are both in the same compartment, but + // ReadableStreamUpdateDataAvailableFromSource is applied to a wrapper. + return readWithoutDataAvailable(CompartmentMode::Cross, + "r = stream.getReader(); r.read()", + "r.read()", + sizeof(testBufferData)); +} +END_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithoutDataAvailable_CrossCompartment1) + +BEGIN_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithoutDataAvailable_CrossCompartment2) +{ + // Scenario 2: The stream and reader are in the same compartment, but a + // `read` method from another compartment is used on the reader. + return readWithoutDataAvailable(CompartmentMode::Cross, + "r = stream.getReader(); read = new ReadableStream({start(){}}).getReader().read; read.call(r)", + "read.call(r)", + sizeof(testBufferData)); +} +END_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithoutDataAvailable_CrossCompartment2) + +BEGIN_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithoutDataAvailable_CrossCompartment3) +{ + // Scenario 3: The stream and reader are in different compartments. + return readWithoutDataAvailable(CompartmentMode::Cross, + "r = ReadableStream.prototype.getReader.call(stream); r.read()", + "r.read()", + sizeof(testBufferData)); +} +END_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithoutDataAvailable_CrossCompartment3) + BEGIN_FIXTURE_TEST(ReadFromExternalSourceFixture, testReadableStream_ExternalSourceCloseWithPendingRead) { - CHECK(readWithoutDataAvailable("r = stream.getReader(); request0 = r.read(); " - "request1 = r.read(); request0", "r.read()", + CHECK(readWithoutDataAvailable(CompartmentMode::Same, + "r = stream.getReader(); request0 = r.read(); " + "request1 = r.read(); request0", + "r.read()", sizeof(testBufferData))); RootedValue val(cx); @@ -574,11 +689,48 @@ END_FIXTURE_TEST(ReadFromExternalSourceFixture, BEGIN_FIXTURE_TEST(ReadFromExternalSourceFixture, testReadableStream_ExternalSourceReadDefaultWithDataAvailable) { - return readWithDataAvailable("r = stream.getReader(); r.read()", sizeof(testBufferData)); + return readWithDataAvailable(CompartmentMode::Same, + "r = stream.getReader(); r.read()", + sizeof(testBufferData)); } END_FIXTURE_TEST(ReadFromExternalSourceFixture, testReadableStream_ExternalSourceReadDefaultWithDataAvailable) +BEGIN_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithDataAvailable_CrossCompartment1) +{ + // Scenario 1: The stream and reader are both in the same compartment, but + // ReadableStreamUpdateDataAvailableFromSource is applied to a wrapper. + return readWithDataAvailable(CompartmentMode::Cross, + "r = stream.getReader(); r.read()", + sizeof(testBufferData)); +} +END_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithDataAvailable_CrossCompartment1) + +BEGIN_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithDataAvailable_CrossCompartment2) +{ + // Scenario 2: The stream and reader are in the same compartment, but a + // `read` method from another compartment is used on the reader. + return readWithDataAvailable(CompartmentMode::Cross, + "r = stream.getReader(); read = new ReadableStream({start(){}}).getReader().read; read.call(r)", + sizeof(testBufferData)); +} +END_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithDataAvailable_CrossCompartment2) + +BEGIN_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithDataAvailable_CrossCompartment3) +{ + // Scenario 3: The stream and reader are in different compartments. + return readWithDataAvailable(CompartmentMode::Cross, + "r = ReadableStream.prototype.getReader.call(stream); r.read()", + sizeof(testBufferData)); +} +END_FIXTURE_TEST(ReadFromExternalSourceFixture, + testReadableStream_ExternalSourceReadDefaultWithDataAvailable_CrossCompartment3) + // Cross-global tests: BEGIN_FIXTURE_TEST(StreamTestFixture, testReadableStream_ReadableStreamOtherGlobalDefaultReaderRead) diff --git a/js/src/jsfriendapi.cpp b/js/src/jsfriendapi.cpp index 2fd77506c8a31..3395c405a0fd3 100644 --- a/js/src/jsfriendapi.cpp +++ b/js/src/jsfriendapi.cpp @@ -840,7 +840,9 @@ js::DumpScript(JSContext* cx, JSScript* scriptArg) static const char* FormatValue(JSContext* cx, HandleValue v, UniqueChars& bytes) { - if (v.isMagic(JS_OPTIMIZED_OUT)) { + if (v.isMagic()) { + MOZ_ASSERT(v.whyMagic() == JS_OPTIMIZED_OUT || + v.whyMagic() == JS_UNINITIALIZED_LEXICAL); return "[unavailable]"; } diff --git a/layout/base/nsPresContext.cpp b/layout/base/nsPresContext.cpp index 9789709dc7d8d..25e709a6877f1 100644 --- a/layout/base/nsPresContext.cpp +++ b/layout/base/nsPresContext.cpp @@ -1334,6 +1334,8 @@ CheckOverflow(const nsStyleDisplay* aDisplay, ScrollStyles* aStyles) { if (aDisplay->mOverflowX == NS_STYLE_OVERFLOW_VISIBLE && aDisplay->mScrollBehavior == NS_STYLE_SCROLL_BEHAVIOR_AUTO && + aDisplay->mOverscrollBehaviorX == StyleOverscrollBehavior::Auto && + aDisplay->mOverscrollBehaviorY == StyleOverscrollBehavior::Auto && aDisplay->mScrollSnapTypeX == NS_STYLE_SCROLL_SNAP_TYPE_NONE && aDisplay->mScrollSnapTypeY == NS_STYLE_SCROLL_SNAP_TYPE_NONE && aDisplay->mScrollSnapPointsX == nsStyleCoord(eStyleUnit_None) && diff --git a/layout/generic/nsColumnSetFrame.cpp b/layout/generic/nsColumnSetFrame.cpp index f7a5f03fa6061..fcd71bc8a3765 100644 --- a/layout/generic/nsColumnSetFrame.cpp +++ b/layout/generic/nsColumnSetFrame.cpp @@ -107,7 +107,7 @@ nsContainerFrame* NS_NewColumnSetFrame(nsIPresShell* aPresShell, ComputedStyle* aStyle, nsFrameState aStateFlags) { nsColumnSetFrame* it = new (aPresShell) nsColumnSetFrame(aStyle); - it->AddStateBits(aStateFlags | NS_BLOCK_MARGIN_ROOT); + it->AddStateBits(aStateFlags); return it; } @@ -481,12 +481,11 @@ nsColumnSetFrame::ReflowColumns(ReflowOutput& aDesiredSize, nsReflowStatus& aReflowStatus, ReflowConfig& aConfig, bool aLastColumnUnbounded, - nsCollapsingMargin* aCarriedOutBEndMargin, ColumnBalanceData& aColData) { bool feasible = ReflowChildren(aDesiredSize, aReflowInput, aReflowStatus, aConfig, aLastColumnUnbounded, - aCarriedOutBEndMargin, aColData); + aColData); if (aColData.mHasExcessBSize) { aConfig = ChooseColumnStrategy(aReflowInput, true); @@ -495,8 +494,7 @@ nsColumnSetFrame::ReflowColumns(ReflowOutput& aDesiredSize, // end up with a stale column height for some of our columns, since we // bailed out of balancing. feasible = ReflowChildren(aDesiredSize, aReflowInput, aReflowStatus, - aConfig, aLastColumnUnbounded, - aCarriedOutBEndMargin, aColData); + aConfig, aLastColumnUnbounded, aColData); } return feasible; @@ -595,7 +593,6 @@ nsColumnSetFrame::ReflowChildren(ReflowOutput& aDesiredSize, nsReflowStatus& aStatus, const ReflowConfig& aConfig, bool aUnboundedLastColumn, - nsCollapsingMargin* aCarriedOutBEndMargin, ColumnBalanceData& aColData) { aColData.Reset(); @@ -765,7 +762,7 @@ nsColumnSetFrame::ReflowChildren(ReflowOutput& aDesiredSize, availSize, &kidCBSize); kidReflowInput.mFlags.mIsTopOfPage = true; kidReflowInput.mFlags.mTableIsSplittable = false; - kidReflowInput.mFlags.mIsColumnBalancing = aConfig.mBalanceColCount < INT32_MAX; + kidReflowInput.mFlags.mIsColumnBalancing = aConfig.mIsBalancing; // We need to reflow any float placeholders, even if our column height // hasn't changed. @@ -807,7 +804,7 @@ nsColumnSetFrame::ReflowChildren(ReflowOutput& aDesiredSize, reflowNext = aStatus.NextInFlowNeedsReflow(); COLUMN_SET_LOG("%s: Reflowed child #%d %p: status=%s," - " desiredSize=(%d,%d), CarriedOutBEndMargin=%d", + " desiredSize=(%d,%d), CarriedOutBEndMargin=%d (ignored)", __func__, columnCount, child, @@ -816,9 +813,23 @@ nsColumnSetFrame::ReflowChildren(ReflowOutput& aDesiredSize, kidDesiredSize.BSize(wm), kidDesiredSize.mCarriedOutBEndMargin.get()); - NS_FRAME_TRACE_REFLOW_OUT("Column::Reflow", aStatus); + // The carried-out block-end margin of column content might be non-zero + // when we try to find the best column balancing block size, but it should + // never affect the size column set nor be further carried out. Set it to + // zero. + // + // FIXME: For some types of fragmentation, we should carry the margin into + // the next column. Also see + // https://drafts.csswg.org/css-break-4/#break-margins + // + // FIXME: This should never happen for the last column, since it should be + // a margin root; see nsBlockFrame::IsMarginRoot(). However, sometimes the + // last column has an empty continuation while searching for the best + // column balancing bsize, which prevents the last column from being a + // margin root. + kidDesiredSize.mCarriedOutBEndMargin.Zero(); - *aCarriedOutBEndMargin = kidDesiredSize.mCarriedOutBEndMargin; + NS_FRAME_TRACE_REFLOW_OUT("Column::Reflow", aStatus); FinishReflowChild(child, PresContext(), kidDesiredSize, &kidReflowInput, wm, childOrigin, containerSize, 0); @@ -878,7 +889,7 @@ nsColumnSetFrame::ReflowChildren(ReflowOutput& aDesiredSize, if ((contentBEnd > aReflowInput.ComputedMaxBSize() || contentBEnd > aReflowInput.ComputedBSize()) && - aConfig.mBalanceColCount < INT32_MAX) { + aConfig.mIsBalancing) { // We overflowed vertically, but have not exceeded the number of // columns. We're going to go into overflow columns now, so balancing // no longer applies. @@ -1032,7 +1043,6 @@ nsColumnSetFrame::FindBestBalanceBSize(const ReflowInput& aReflowInput, ReflowConfig& aConfig, ColumnBalanceData& aColData, ReflowOutput& aDesiredSize, - nsCollapsingMargin& aOutMargin, bool& aUnboundedLastColumn, bool& aRunWasFeasible, nsReflowStatus& aStatus) @@ -1144,7 +1154,7 @@ nsColumnSetFrame::FindBestBalanceBSize(const ReflowInput& aReflowInput, aUnboundedLastColumn = false; MarkPrincipalChildrenDirty(this); feasible = ReflowColumns(aDesiredSize, aReflowInput, aStatus, aConfig, false, - &aOutMargin, aColData); + aColData); if (!aConfig.mIsBalancing) { // Looks like we had excess height when balancing, so we gave up on @@ -1174,7 +1184,7 @@ nsColumnSetFrame::FindBestBalanceBSize(const ReflowInput& aReflowInput, MarkPrincipalChildrenDirty(this); feasible = ReflowColumns(aDesiredSize, aReflowInput, aStatus, aConfig, availableContentBSize == NS_UNCONSTRAINEDSIZE, - &aOutMargin, aColData); + aColData); } } @@ -1238,20 +1248,17 @@ nsColumnSetFrame::Reflow(nsPresContext* aPresContext, // content back here and then have to push it out again! nsIFrame* nextInFlow = GetNextInFlow(); bool unboundedLastColumn = config.mIsBalancing && !nextInFlow; - nsCollapsingMargin carriedOutBottomMargin; ColumnBalanceData colData; bool feasible = ReflowColumns(aDesiredSize, aReflowInput, aStatus, config, - unboundedLastColumn, &carriedOutBottomMargin, - colData); + unboundedLastColumn, colData); // If we're not balancing, then we're already done, since we should have // reflown all of our children, and there is no need for a binary search to // determine proper column height. if (config.mIsBalancing && !aPresContext->HasPendingInterrupt()) { FindBestBalanceBSize(aReflowInput, aPresContext, config, colData, - aDesiredSize, carriedOutBottomMargin, - unboundedLastColumn, feasible, aStatus); + aDesiredSize, unboundedLastColumn, feasible, aStatus); } if (aPresContext->HasPendingInterrupt() && @@ -1271,8 +1278,6 @@ nsColumnSetFrame::Reflow(nsPresContext* aPresContext, FinishReflowWithAbsoluteFrames(aPresContext, aDesiredSize, aReflowInput, aStatus, false); - aDesiredSize.mCarriedOutBEndMargin = carriedOutBottomMargin; - NS_FRAME_SET_TRUNCATION(aStatus, aReflowInput, aDesiredSize); } diff --git a/layout/generic/nsColumnSetFrame.h b/layout/generic/nsColumnSetFrame.h index 7d7777b69a8fd..2155fb935a9fb 100644 --- a/layout/generic/nsColumnSetFrame.h +++ b/layout/generic/nsColumnSetFrame.h @@ -120,7 +120,7 @@ class nsColumnSetFrame final : public nsContainerFrame nscoord mColMaxBSize = NS_INTRINSICSIZE; // A boolean controlling whether or not we are balancing. This should be - // equivalent to mBalanceColCount == INT32_MAX. + // equivalent to mBalanceColCount != INT32_MAX. bool mIsBalancing = false; // The last known column block-size that was 'feasible'. A column bSize is @@ -173,7 +173,6 @@ class nsColumnSetFrame final : public nsContainerFrame nsReflowStatus& aReflowStatus, ReflowConfig& aConfig, bool aLastColumnUnbounded, - nsCollapsingMargin* aCarriedOutBEndMargin, ColumnBalanceData& aColData); /** @@ -198,8 +197,6 @@ class nsColumnSetFrame final : public nsContainerFrame * successive iterations of the balancing process. * @param aDesiredSize The final output size of the column set frame (output * of reflow procedure). - * @param aOutMargin The bottom margin of the column set frame that may be - * carried out from reflow (and thus collapsed). * @param aUnboundedLastColumn A boolean value indicating that the last column * can be of any height. Used during the first iteration of the * balancing procedure to measure the height of all content in @@ -215,7 +212,6 @@ class nsColumnSetFrame final : public nsContainerFrame ReflowConfig& aConfig, ColumnBalanceData& aColData, ReflowOutput& aDesiredSize, - nsCollapsingMargin& aOutMargin, bool& aUnboundedLastColumn, bool& aRunWasFeasible, nsReflowStatus& aStatus); @@ -228,7 +224,6 @@ class nsColumnSetFrame final : public nsContainerFrame nsReflowStatus& aStatus, const ReflowConfig& aConfig, bool aLastColumnUnbounded, - nsCollapsingMargin* aCarriedOutBEndMargin, ColumnBalanceData& aColData); void ForEachColumnRule(const std::function& aSetLineRect, diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index f38968b02ee54..c7c1386de73ec 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -654,7 +654,7 @@ random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 372063-1.html 372063-1-r random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 372553-1.html 372553-1-ref.html # Bug 1392106 == 372632-1.html 372632-1-ref.html == 372768-1.html 372768-1-ref.html -fuzzy-if(webrender&&winWidget,83-83,2-2) == 373295-1.html 373295-1-ref.html +fuzzy-if(webrender&&winWidget,83-92,1-2) == 373295-1.html 373295-1-ref.html == 373298-1.html 373298-1-ref.html random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 373381-1.html 373381-1-ref.html # Bug 1392106 fuzzy-if(skiaContent&&!Android,0-2,0-40) == 373381-2.html 373381-2-ref.html diff --git a/layout/reftests/image-element/reftest.list b/layout/reftests/image-element/reftest.list index 566d128decfff..2d6923cb6e25e 100644 --- a/layout/reftests/image-element/reftest.list +++ b/layout/reftests/image-element/reftest.list @@ -7,7 +7,7 @@ random == bug-364968.html bug-364968-ref.html == canvas-outside-document-invalidate-01.html about:blank fails-if(azureSkia) fails-if(cocoaWidget) == canvas-outside-document-invalidate-02.html about:blank # See bug 666800 #fails with Skia due to Skia bug http://code.google.com/p/skia/issues/detail?id=568 -fuzzy-if(webrender&&!gtkWidget,117-129,54-54) == element-paint-simple.html element-paint-simple-ref.html +fuzzy-if(webrender&&!gtkWidget,117-129,47-54) == element-paint-simple.html element-paint-simple-ref.html == element-paint-repeated.html element-paint-repeated-ref.html == element-paint-recursion.html element-paint-recursion-ref.html == element-paint-continuation.html element-paint-continuation-ref.html @@ -17,7 +17,7 @@ fuzzy-if(d2d&&/^Windows\x20NT\x206\.1/.test(http.oscpu),0-16,0-90) == element-pa == element-paint-background-size-02.html element-paint-background-size-02-ref.html fuzzy-if(skiaContent,0-255,0-4) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == element-paint-transform-repeated.html element-paint-transform-repeated-ref.html # Bug 1475907 fuzzy-if(d2d,0-255,0-24) == element-paint-transform-03.html element-paint-transform-03-ref.html -fuzzy-if(asyncPan,0-2,0-140) fuzzy-if(skiaContent,0-3,0-106) fuzzy-if(webrender&&!gtkWidget,134-222,1323-1588) == element-paint-native-widget.html element-paint-native-widget-ref.html # in -ref the scrollframe is active and layerized differently with APZ +fuzzy-if(asyncPan,0-2,0-140) fuzzy-if(skiaContent,0-3,0-106) fuzzy-if(webrender&&!gtkWidget,134-222,1197-1588) == element-paint-native-widget.html element-paint-native-widget-ref.html # in -ref the scrollframe is active and layerized differently with APZ fails-if(usesRepeatResampling&&!(webrender&&winWidget)) == element-paint-subimage-sampling-restriction.html about:blank == element-paint-clippath.html element-paint-clippath-ref.html fuzzy-if(webrender,36-36,702-702) == element-paint-sharpness-01a.html element-paint-sharpness-01b.html diff --git a/layout/reftests/svg/text/reftest.list b/layout/reftests/svg/text/reftest.list index b2adc848193f0..eafb50a847c97 100644 --- a/layout/reftests/svg/text/reftest.list +++ b/layout/reftests/svg/text/reftest.list @@ -1,14 +1,14 @@ -random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy-if(webrender&&!gtkWidget,122-127,249-254) == simple.svg simple-ref.html # Bug 1392106 +random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy-if(webrender&&!gtkWidget,122-127,221-254) == simple.svg simple-ref.html # Bug 1392106 == simple-2.svg simple.svg -random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy-if(webrender&&!gtkWidget,122-127,249-254) == simple-underline.svg simple-underline-ref.html # Bug 1392106 +random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy-if(webrender&&!gtkWidget,122-127,221-254) == simple-underline.svg simple-underline-ref.html # Bug 1392106 random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == simple-underline-scaled.svg simple-underline-scaled-ref.svg # Bug 1392106 -fuzzy-if(webrender&&!gtkWidget,119-166,278-318) == simple-anchor-end-bidi.svg simple-anchor-end-bidi-ref.html -fuzzy-if(webrender&&!gtkWidget,117-132,201-204) == simple-anchor-end-rtl.svg simple-anchor-end-rtl-ref.html -fuzzy-if(webrender&&!gtkWidget,122-134,245-250) == simple-anchor-end.svg simple-anchor-end-ref.html -fuzzy-if(skiaContent&&dwrite,0-104,0-131) fuzzy-if(webrender&&!gtkWidget,125-194,288-319) == simple-anchor-middle-bidi.svg simple-anchor-middle-bidi-ref.html -fuzzy-if(webrender&&!gtkWidget,132-134,205-207) == simple-anchor-middle-rtl.svg simple-anchor-middle-rtl-ref.html -fuzzy-if(skiaContent,0-111,0-81) fuzzy-if(webrender&&!gtkWidget,122-181,254-257) == simple-anchor-middle.svg simple-anchor-middle-ref.html -fuzzy-if(webrender&&!gtkWidget,132-134,294-319) == simple-bidi.svg simple-bidi-ref.html +fuzzy-if(webrender&&!gtkWidget,119-166,255-318) == simple-anchor-end-bidi.svg simple-anchor-end-bidi-ref.html +fuzzy-if(webrender&&!gtkWidget,117-138,182-204) == simple-anchor-end-rtl.svg simple-anchor-end-rtl-ref.html +fuzzy-if(webrender&&!gtkWidget,122-137,220-250) == simple-anchor-end.svg simple-anchor-end-ref.html +fuzzy-if(skiaContent&&dwrite,0-104,0-131) fuzzy-if(webrender&&!gtkWidget,125-200,259-319) == simple-anchor-middle-bidi.svg simple-anchor-middle-bidi-ref.html +fuzzy-if(webrender&&!gtkWidget,132-138,188-207) == simple-anchor-middle-rtl.svg simple-anchor-middle-rtl-ref.html +fuzzy-if(skiaContent,0-111,0-81) fuzzy-if(webrender&&!gtkWidget,122-181,221-257) == simple-anchor-middle.svg simple-anchor-middle-ref.html +fuzzy-if(webrender&&!gtkWidget,132-138,261-319) == simple-bidi.svg simple-bidi-ref.html == simple-bidi-2.svg simple-bidi.svg == simple-dx.svg simple.svg @@ -25,12 +25,12 @@ random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == simple-dx-anchor-end-bid == simple-dx-rtl-2.svg simple-dx-rtl-2-ref.svg == simple-fill-color-dynamic.svg simple-fill-color-dynamic-ref.svg -fuzzy-if(webrender&&!gtkWidget,125-127,253-254) == simple-fill-color.svg simple-fill-color-ref.html +fuzzy-if(webrender&&!gtkWidget,125-127,221-254) == simple-fill-color.svg simple-fill-color-ref.html == simple-fill-gradient.svg simple-fill-gradient-ref.svg == simple-fill-none.svg simple.svg == simple-pointer-events.svg simple.svg -random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy-if(webrender&&!gtkWidget,122-127,249-254) == simple-multiple-dx.svg simple-multiple-dx-ref.html # Bug 1392106 +random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy-if(webrender&&!gtkWidget,122-127,221-254) == simple-multiple-dx.svg simple-multiple-dx-ref.html # Bug 1392106 == simple-multiple-dx-2.svg simple-multiple-dx.svg == simple-multiple-dx-anchor-end-bidi.svg simple-multiple-dx-anchor-end-bidi-ref.svg == simple-multiple-dx-anchor-middle-bidi.svg simple-multiple-dx-anchor-middle-bidi-ref.svg @@ -43,7 +43,7 @@ fuzzy-if(skiaContent,0-1,0-2) == simple-multiple-dx-anchor-middle-rtl.svg simple == simple-multiple-dx-rtl.svg simple-multiple-dx-rtl-ref.svg == simple-multiple-dx-rtl-2.svg simple-multiple-dx-rtl.svg -fuzzy-if(webrender&&!gtkWidget,132-134,205-206) == simple-rtl.svg simple-rtl-ref.html +fuzzy-if(webrender&&!gtkWidget,132-138,183-206) == simple-rtl.svg simple-rtl-ref.html == simple-rtl-2.svg simple-rtl.svg == simple-transform-rotate.svg simple-transform-rotate-ref.svg @@ -196,10 +196,10 @@ needs-focus == deselectAll.svg deselectAll-ref.svg fuzzy-if(skiaContent,0-1,0-250) needs-focus == selectSubString.svg selectSubString-ref.svg fuzzy-if(skiaContent,0-1,0-600) needs-focus == selectSubString-2.svg selectSubString-2-ref.svg fuzzy-if(skiaContent,0-1,0-250) needs-focus == selectSubString-3.svg selectSubString-3-ref.svg -random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy-if(webrender,1-1,237-237) needs-focus fuzzy-if(webrender&&!gtkWidget,127-148,251-254) == simple-selection.svg simple-selection-ref.html # Bug 1392106 -fuzzy-if(skiaContent,0-1,0-100) fuzzy-if(webrender,1-1,575-575) needs-focus fuzzy-if(webrender&&!gtkWidget,134-148,294-318) == simple-bidi-selection.svg simple-bidi-selection-ref.html -fuzzy-if(skiaContent,0-1,0-50) fuzzy-if(webrender,1-1,237-237) needs-focus fuzzy-if(webrender&&!gtkWidget,127-148,253-254) == simple-fill-color-selection.svg simple-fill-color-selection-ref.html -fuzzy-if(skiaContent,0-1,0-150) fuzzy-if(webrender,1-1,222-222) needs-focus fuzzy-if(webrender&&!gtkWidget,127-148,251-254) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == simple-underline-selection.svg simple-underline-selection-ref.html # Bug 1392106 -fuzzy-if(skiaContent,0-1,0-300) fuzzy-if(webrender,1-1,934-934) needs-focus fuzzy-if(webrender&&!gtkWidget,134-152,494-501) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == multiple-text-selection.svg multiple-text-selection-ref.html # Bug 1392106 +random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy-if(webrender,1-1,237-237) needs-focus fuzzy-if(webrender&&!gtkWidget,127-148,221-254) == simple-selection.svg simple-selection-ref.html # Bug 1392106 +fuzzy-if(skiaContent,0-1,0-100) fuzzy-if(webrender,1-1,575-575) needs-focus fuzzy-if(webrender&&!gtkWidget,134-148,261-318) == simple-bidi-selection.svg simple-bidi-selection-ref.html +fuzzy-if(skiaContent,0-1,0-50) fuzzy-if(webrender,1-1,237-237) needs-focus fuzzy-if(webrender&&!gtkWidget,127-148,221-254) == simple-fill-color-selection.svg simple-fill-color-selection-ref.html +fuzzy-if(skiaContent,0-1,0-150) fuzzy-if(webrender,1-1,222-222) needs-focus fuzzy-if(webrender&&!gtkWidget,127-148,221-254) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == simple-underline-selection.svg simple-underline-selection-ref.html # Bug 1392106 +fuzzy-if(skiaContent,0-1,0-300) fuzzy-if(webrender,1-1,934-934) needs-focus fuzzy-if(webrender&&!gtkWidget,134-152,432-501) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == multiple-text-selection.svg multiple-text-selection-ref.html # Bug 1392106 needs-focus == multiple-chunks-selection.svg multiple-chunks-selection-ref.svg fuzzy-if(skiaContent,0-1,0-200) needs-focus == textpath-selection.svg textpath-selection-ref.svg diff --git a/layout/reftests/text-overflow/reftest.list b/layout/reftests/text-overflow/reftest.list index f07fbde06e98c..4160d01c21799 100644 --- a/layout/reftests/text-overflow/reftest.list +++ b/layout/reftests/text-overflow/reftest.list @@ -5,7 +5,7 @@ fuzzy-if(Android,0-16,0-244) fuzzy-if(webrender,0-47,0-6) == marker-basic.html m skip-if(Android) fuzzy-if(webrender,0-47,0-18) == bidi-simple.html bidi-simple-ref.html # Fails on Android due to anti-aliasing skip-if(!gtkWidget) fuzzy-if(gtkWidget,0-124,0-289) == bidi-simple-scrolled.html bidi-simple-scrolled-ref.html # Fails on Windows and OSX due to anti-aliasing fuzzy-if(Android,0-24,0-4000) fuzzy-if(cocoaWidget,0-1,0-40) fuzzy-if(asyncPan&&!layersGPUAccelerated,0-149,0-1836) == scroll-rounding.html scroll-rounding-ref.html # bug 760264 -fuzzy(0-16,0-454) fails-if(gtkWidget) fuzzy-if(webrender&&!gtkWidget,50-85,459-499) skip-if(OSX&&!isDebugBuild&&verify) == anonymous-block.html anonymous-block-ref.html # gtkWidget:bug 1309103, fuzzy: subpixel aa +fuzzy(0-16,0-454) fails-if(gtkWidget) fuzzy-if(webrender&&!gtkWidget,50-85,454-499) skip-if(OSX&&!isDebugBuild&&verify) == anonymous-block.html anonymous-block-ref.html # gtkWidget:bug 1309103, fuzzy: subpixel aa fuzzy-if(webrender,0-47,0-3) == false-marker-overlap.html false-marker-overlap-ref.html == visibility-hidden.html visibility-hidden-ref.html fuzzy-if(asyncPan&&!layersGPUAccelerated,0-102,0-1724) fuzzy-if(gtkWidget,0-10,0-8) fuzzy-if(webrender,0-47,0-24) == block-padding.html block-padding-ref.html diff --git a/layout/reftests/transform-3d/reftest.list b/layout/reftests/transform-3d/reftest.list index 8d1ebf514def0..ba6c1d9bf9aee 100644 --- a/layout/reftests/transform-3d/reftest.list +++ b/layout/reftests/transform-3d/reftest.list @@ -11,7 +11,7 @@ fuzzy-if(webrender,0-1,0-6) == rotatey-1a.html rotatey-1-ref.html == rotatex-perspective-1c.html rotatex-1-ref.html == rotatex-perspective-3a.html rotatex-perspective-3-ref.html == scalez-1a.html scalez-1-ref.html -fuzzy-if(gtkWidget||winWidget,0-8,0-376) fuzzy-if(Android,0-8,0-441) fuzzy-if(cocoaWidget,0-17,0-4) fuzzy-if(skiaContent,0-16,0-286) fuzzy-if(webrender&&winWidget,92-92,291-291) fuzzy-if(webrender&&cocoaWidget,126-126,380-380) == preserve3d-1a.html preserve3d-1-ref.html +fuzzy-if(gtkWidget||winWidget,0-8,0-376) fuzzy-if(Android,0-8,0-441) fuzzy-if(cocoaWidget,0-17,0-4) fuzzy-if(skiaContent,0-16,0-286) fuzzy-if(webrender&&winWidget,92-92,240-291) fuzzy-if(webrender&&cocoaWidget,126-126,380-380) == preserve3d-1a.html preserve3d-1-ref.html == preserve3d-1b.html about:blank == preserve3d-clipped.html about:blank == preserve3d-2a.html preserve3d-2-ref.html diff --git a/layout/reftests/w3c-css/submitted/contain/reftest.list b/layout/reftests/w3c-css/submitted/contain/reftest.list index 069cbacd14500..09a6e43408b6c 100644 --- a/layout/reftests/w3c-css/submitted/contain/reftest.list +++ b/layout/reftests/w3c-css/submitted/contain/reftest.list @@ -22,7 +22,7 @@ pref(layout.css.overflow-clip-box.enabled,true) == contain-paint-clip-006.html c == contain-size-block-001.html contain-size-block-001-ref.html == contain-size-inline-block-001.html contain-size-inline-block-001-ref.html == contain-size-flex-001.html contain-size-flex-001-ref.html -fuzzy-if(webrender&&winWidget,0-3,0-2) == contain-size-inline-flex-001.html contain-size-inline-flex-001-ref.html # bug 1474093 +fuzzy-if(webrender&&winWidget,0-24,0-2) == contain-size-inline-flex-001.html contain-size-inline-flex-001-ref.html # bug 1474093 == contain-size-grid-001.html contain-size-grid-001-ref.html == contain-size-multicol-001.html contain-size-multicol-001-ref.html == contain-size-fieldset-001.html contain-size-fieldset-001-ref.html diff --git a/layout/style/ServoCSSPropList.mako.py b/layout/style/ServoCSSPropList.mako.py index 48d52eef36e89..0ede99179e22c 100644 --- a/layout/style/ServoCSSPropList.mako.py +++ b/layout/style/ServoCSSPropList.mako.py @@ -107,6 +107,7 @@ def method(prop): "Resize", "Scale", "TextAlign", + "Translate", "TimingFunction", "TransformStyle", "background::BackgroundSize", diff --git a/layout/style/nsComputedDOMStyle.cpp b/layout/style/nsComputedDOMStyle.cpp index bba5b61672cbc..63e7b1e277204 100644 --- a/layout/style/nsComputedDOMStyle.cpp +++ b/layout/style/nsComputedDOMStyle.cpp @@ -1294,85 +1294,6 @@ ReadIndividualTransformValue(nsCSSValueSharedList* aList, return val.forget(); } -already_AddRefed -nsComputedDOMStyle::DoGetTranslate() -{ - typedef nsStyleTransformMatrix::TransformReferenceBox TransformReferenceBox; - - RefPtr self(this); - return ReadIndividualTransformValue(StyleDisplay()->mSpecifiedTranslate, - [self](const nsCSSValue::Array* aData, nsString& aResult) { - TransformReferenceBox refBox(self->mInnerFrame, nsSize(0, 0)); - - // Even though the spec doesn't say to resolve percentage values, Blink - // and Edge do and so until that is clarified we do as well: - // - // https://github.com/w3c/csswg-drafts/issues/2124 - switch (nsStyleTransformMatrix::TransformFunctionOf(aData)) { - /* translate : */ - case eCSSKeyword_translatex: { - MOZ_ASSERT(aData->Count() == 2, "Invalid array!"); - float tx = ProcessTranslatePart(aData->Item(1), - &refBox, - &TransformReferenceBox::Width); - aResult.AppendFloat(tx); - aResult.AppendLiteral("px"); - break; - } - /* translate : */ - case eCSSKeyword_translate: { - MOZ_ASSERT(aData->Count() == 3, "Invalid array!"); - float tx = ProcessTranslatePart(aData->Item(1), - &refBox, - &TransformReferenceBox::Width); - aResult.AppendFloat(tx); - aResult.AppendLiteral("px"); - - float ty = ProcessTranslatePart(aData->Item(2), - &refBox, - &TransformReferenceBox::Height); - if (ty != 0) { - aResult.AppendLiteral(" "); - aResult.AppendFloat(ty); - aResult.AppendLiteral("px"); - } - break; - } - /* translate : */ - case eCSSKeyword_translate3d: { - MOZ_ASSERT(aData->Count() == 4, "Invalid array!"); - float tx = ProcessTranslatePart(aData->Item(1), - &refBox, - &TransformReferenceBox::Width); - aResult.AppendFloat(tx); - aResult.AppendLiteral("px"); - - float ty = ProcessTranslatePart(aData->Item(2), - &refBox, - &TransformReferenceBox::Height); - - float tz = ProcessTranslatePart(aData->Item(3), - &refBox, - nullptr); - if (ty != 0. || tz != 0.) { - aResult.AppendLiteral(" "); - aResult.AppendFloat(ty); - aResult.AppendLiteral("px"); - } - if (tz != 0.) { - aResult.AppendLiteral(" "); - aResult.AppendFloat(tz); - aResult.AppendLiteral("px"); - } - - break; - } - default: - MOZ_ASSERT_UNREACHABLE("Unexpected CSS keyword."); - } - }); -} - already_AddRefed nsComputedDOMStyle::DoGetRotate() { diff --git a/layout/style/nsComputedDOMStyle.h b/layout/style/nsComputedDOMStyle.h index 50c65a269dfcb..02f21107cdb88 100644 --- a/layout/style/nsComputedDOMStyle.h +++ b/layout/style/nsComputedDOMStyle.h @@ -365,7 +365,6 @@ class nsComputedDOMStyle final : public nsDOMCSSDeclaration already_AddRefed DoGetOverflowClipBoxInline(); already_AddRefed DoGetTouchAction(); already_AddRefed DoGetTransform(); - already_AddRefed DoGetTranslate(); already_AddRefed DoGetRotate(); already_AddRefed DoGetTransformOrigin(); already_AddRefed DoGetPerspective(); diff --git a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js index 558f7cf5d4298..25c8bd0416e8e 100644 --- a/mobile/android/app/mobile.js +++ b/mobile/android/app/mobile.js @@ -708,6 +708,9 @@ pref("layers.enable-tiles", true); // Enable the dynamic toolbar pref("browser.chrome.dynamictoolbar", true); +// Location Bar AutoComplete. +pref("browser.urlbar.autocomplete.enabled", true); + // Hide common parts of URLs like "www." or "http://" pref("browser.urlbar.trimURLs", true); diff --git a/servo/components/style/properties/helpers/animated_properties.mako.rs b/servo/components/style/properties/helpers/animated_properties.mako.rs index 2ab27687241e3..85dfee7411028 100644 --- a/servo/components/style/properties/helpers/animated_properties.mako.rs +++ b/servo/components/style/properties/helpers/animated_properties.mako.rs @@ -2102,12 +2102,12 @@ impl Matrix3D { /// impl ComputedRotate { - fn resolve(rotate: &ComputedRotate) -> (Number, Number, Number, Angle) { + fn resolve(&self) -> (Number, Number, Number, Angle) { // According to the spec: // https://drafts.csswg.org/css-transforms-2/#individual-transforms // // If the axis is unspecified, it defaults to "0 0 1" - match *rotate { + match *self { Rotate::None => (0., 0., 1., Angle::zero()), Rotate::Rotate3D(rx, ry, rz, angle) => (rx, ry, rz, angle), Rotate::Rotate(angle) => (0., 0., 1., angle), @@ -2122,8 +2122,7 @@ impl Animate for ComputedRotate { other: &Self, procedure: Procedure, ) -> Result { - let from = ComputedRotate::resolve(self); - let to = ComputedRotate::resolve(other); + let (from, to) = (self.resolve(), other.resolve()); let (mut fx, mut fy, mut fz, fa) = transform::get_normalized_vector_and_angle(from.0, from.1, from.2, from.3); @@ -2163,24 +2162,17 @@ impl Animate for ComputedRotate { /// impl ComputedTranslate { - fn resolve( - translate: &ComputedTranslate, - ) -> (LengthOrPercentage, LengthOrPercentage, Length) { + fn resolve(&self) -> (LengthOrPercentage, LengthOrPercentage, Length) { // According to the spec: // https://drafts.csswg.org/css-transforms-2/#individual-transforms // // Unspecified translations default to 0px - match *translate { + match *self { Translate::None => { - ( - LengthOrPercentage::Length(Length::zero()), - LengthOrPercentage::Length(Length::zero()), - Length::zero(), - ) + (LengthOrPercentage::zero(), LengthOrPercentage::zero(), Length::zero()) }, Translate::Translate3D(tx, ty, tz) => (tx, ty, tz), Translate::Translate(tx, ty) => (tx, ty, Length::zero()), - Translate::TranslateX(tx) => (tx, LengthOrPercentage::Length(Length::zero()), Length::zero()), } } } @@ -2192,23 +2184,31 @@ impl Animate for ComputedTranslate { other: &Self, procedure: Procedure, ) -> Result { - let from = ComputedTranslate::resolve(self); - let to = ComputedTranslate::resolve(other); - - Ok(Translate::Translate3D(from.0.animate(&to.0, procedure)?, - from.1.animate(&to.1, procedure)?, - from.2.animate(&to.2, procedure)?)) + match (self, other) { + (&Translate::None, &Translate::None) => Ok(Translate::None), + (&Translate::Translate3D(_, ..), _) | (_, &Translate::Translate3D(_, ..)) => { + let (from, to) = (self.resolve(), other.resolve()); + Ok(Translate::Translate3D(from.0.animate(&to.0, procedure)?, + from.1.animate(&to.1, procedure)?, + from.2.animate(&to.2, procedure)?)) + }, + (&Translate::Translate(_, ..), _) | (_, &Translate::Translate(_, ..)) => { + let (from, to) = (self.resolve(), other.resolve()); + Ok(Translate::Translate(from.0.animate(&to.0, procedure)?, + from.1.animate(&to.1, procedure)?)) + }, + } } } /// impl ComputedScale { - fn resolve(scale: &ComputedScale) -> (Number, Number, Number) { + fn resolve(&self) -> (Number, Number, Number) { // According to the spec: // https://drafts.csswg.org/css-transforms-2/#individual-transforms // // Unspecified scales default to 1 - match *scale { + match *self { Scale::None => (1.0, 1.0, 1.0), Scale::Scale3D(sx, sy, sz) => (sx, sy, sz), Scale::Scale(sx, sy) => (sx, sy, 1.), @@ -2226,8 +2226,7 @@ impl Animate for ComputedScale { match (self, other) { (&Scale::None, &Scale::None) => Ok(Scale::None), (&Scale::Scale3D(_, ..), _) | (_, &Scale::Scale3D(_, ..)) => { - let from = ComputedScale::resolve(self); - let to = ComputedScale::resolve(other); + let (from, to) = (self.resolve(), other.resolve()); // FIXME(emilio, bug 1464791): why does this do something different than // Scale3D / TransformOperation::Scale3D? if procedure == Procedure::Add { @@ -2241,8 +2240,7 @@ impl Animate for ComputedScale { )) }, (&Scale::Scale(_, ..), _) | (_, &Scale::Scale(_, ..)) => { - let from = ComputedScale::resolve(self); - let to = ComputedScale::resolve(other); + let (from, to) = (self.resolve(), other.resolve()); // FIXME(emilio, bug 1464791): why does this do something different than // Scale / TransformOperation::Scale? if procedure == Procedure::Add { diff --git a/servo/components/style/properties/longhands/box.mako.rs b/servo/components/style/properties/longhands/box.mako.rs index c06ed16a22e6f..685e97aa3b06c 100644 --- a/servo/components/style/properties/longhands/box.mako.rs +++ b/servo/components/style/properties/longhands/box.mako.rs @@ -370,7 +370,7 @@ ${helpers.predefined_type( "generics::transform::Translate::None", animation_value_type="ComputedValue", boxed=True, - flags="CREATES_STACKING_CONTEXT FIXPOS_CB GETCS_NEEDS_LAYOUT_FLUSH", + flags="CREATES_STACKING_CONTEXT FIXPOS_CB", gecko_pref="layout.css.individual-transform.enabled", spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", servo_restyle_damage="reflow_out_of_flow", diff --git a/servo/components/style/values/computed/length.rs b/servo/components/style/values/computed/length.rs index 3a3242a386b53..d01824bac9561 100644 --- a/servo/components/style/values/computed/length.rs +++ b/servo/components/style/values/computed/length.rs @@ -14,6 +14,7 @@ use style_traits::{CssWriter, ToCss}; use values::animated::{Animate, Procedure, ToAnimatedValue, ToAnimatedZero}; use values::distance::{ComputeSquaredDistance, SquaredDistance}; use values::generics::length::{MaxLength as GenericMaxLength, MozLength as GenericMozLength}; +use values::generics::transform::IsZeroLength; use values::generics::NonNegative; use values::specified::length::ViewportPercentageLength; use values::specified::length::{AbsoluteLength, FontBaseSize, FontRelativeLength}; @@ -494,6 +495,17 @@ impl ToComputedValue for specified::LengthOrPercentage { } } +impl IsZeroLength for LengthOrPercentage { + #[inline] + fn is_zero_length(&self) -> bool { + match *self { + LengthOrPercentage::Length(l) => l.0 == 0.0, + LengthOrPercentage::Percentage(p) => p.0 == 0.0, + LengthOrPercentage::Calc(c) => c.unclamped_length().0 == 0.0 && c.percentage() == 0.0, + } + } +} + #[allow(missing_docs)] #[animate(fallback = "Self::animate_fallback")] #[css(derive_debug)] diff --git a/servo/components/style/values/computed/transform.rs b/servo/components/style/values/computed/transform.rs index e937b95c77fbf..3ddd0dfcd4b53 100644 --- a/servo/components/style/values/computed/transform.rs +++ b/servo/components/style/values/computed/transform.rs @@ -334,7 +334,6 @@ impl Translate { pub fn to_transform_operation(&self) -> Option { match *self { generic::Translate::None => None, - generic::Translate::TranslateX(tx) => Some(generic::TransformOperation::TranslateX(tx)), generic::Translate::Translate(tx, ty) => { Some(generic::TransformOperation::Translate(tx, Some(ty))) }, @@ -347,7 +346,6 @@ impl Translate { /// Convert Translate to TransformOperation. pub fn from_transform_operation(operation: &TransformOperation) -> Translate { match *operation { - generic::TransformOperation::TranslateX(tx) => generic::Translate::TranslateX(tx), generic::TransformOperation::Translate(tx, Some(ty)) => { generic::Translate::Translate(tx, ty) }, diff --git a/servo/components/style/values/generics/transform.rs b/servo/components/style/values/generics/transform.rs index 1eb46b0bd1d2b..c154614d9789c 100644 --- a/servo/components/style/values/generics/transform.rs +++ b/servo/components/style/values/generics/transform.rs @@ -610,7 +610,6 @@ impl ToCss for Scale { SpecifiedValueInfo, ToAnimatedZero, ToComputedValue, - ToCss, )] /// A value of the `Translate` property /// @@ -618,14 +617,56 @@ impl ToCss for Scale { pub enum Translate { /// 'none' None, - /// '' - TranslateX(LengthOrPercentage), - /// ' ' + /// '' or ' ' Translate(LengthOrPercentage, LengthOrPercentage), /// ' ' Translate3D(LengthOrPercentage, LengthOrPercentage, Length), } +/// A trait to check if this is a zero length. +/// An alternative way is use num_traits::Zero. However, in order to implement num_traits::Zero, +/// we also have to implement Add, which may be complicated for LengthOrPercentage::Calc. +/// We could do this if other types also need it. If so, we could drop this trait. +pub trait IsZeroLength { + /// Returns true if this is a zero length. + fn is_zero_length(&self) -> bool; +} + +impl ToCss for Translate { + fn to_css(&self, dest: &mut CssWriter) -> fmt::Result + where + W: fmt::Write, + { + // The spec says: + // 1. If a 2d translation is specified, the property must serialize with only one or two + // values (per usual, if the second value is 0px, the default, it must be omitted when + // serializing). + // 2. If a 3d translation is specified, all three values must be serialized. + // https://drafts.csswg.org/css-transforms-2/#individual-transform-serialization + // + // We don't omit the 3rd component even if it is 0px for now, and the related + // spec issue is https://github.com/w3c/csswg-drafts/issues/3305 + match *self { + Translate::None => dest.write_str("none"), + Translate::Translate(ref x, ref y) => { + x.to_css(dest)?; + if !y.is_zero_length() { + dest.write_char(' ')?; + y.to_css(dest)?; + } + Ok(()) + }, + Translate::Translate3D(ref x, ref y, ref z) => { + x.to_css(dest)?; + dest.write_char(' ')?; + y.to_css(dest)?; + dest.write_char(' ')?; + z.to_css(dest) + }, + } + } +} + #[allow(missing_docs)] #[derive( Clone, Copy, Debug, MallocSizeOf, Parse, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss, diff --git a/servo/components/style/values/specified/length.rs b/servo/components/style/values/specified/length.rs index 535cf6f65eeb8..4e9eda2277e9c 100644 --- a/servo/components/style/values/specified/length.rs +++ b/servo/components/style/values/specified/length.rs @@ -19,6 +19,7 @@ use style_traits::{ParseError, SpecifiedValueInfo, StyleParseErrorKind}; use values::computed::{self, CSSPixelLength, Context, ExtremumLength}; use values::generics::length::{MaxLength as GenericMaxLength, MozLength as GenericMozLength}; use values::generics::NonNegative; +use values::generics::transform::IsZeroLength; use values::specified::calc::CalcNode; use values::{Auto, CSSFloat, Either, IsAuto, Normal}; @@ -97,6 +98,16 @@ impl FontBaseSize { } impl FontRelativeLength { + /// Return true if this is a zero value. + fn is_zero(&self) -> bool { + match *self { + FontRelativeLength::Em(v) | + FontRelativeLength::Ex(v) | + FontRelativeLength::Ch(v) | + FontRelativeLength::Rem(v) => v == 0.0, + } + } + /// Computes the font-relative length. pub fn to_computed_value(&self, context: &Context, base_size: FontBaseSize) -> CSSPixelLength { use std::f32; @@ -230,6 +241,16 @@ pub enum ViewportPercentageLength { } impl ViewportPercentageLength { + /// Return true if this is a zero value. + fn is_zero(&self) -> bool { + match *self { + ViewportPercentageLength::Vw(v) | + ViewportPercentageLength::Vh(v) | + ViewportPercentageLength::Vmin(v) | + ViewportPercentageLength::Vmax(v) => v == 0.0, + } + } + /// Computes the given viewport-relative length for the given viewport size. pub fn to_computed_value(&self, viewport_size: Size2D) -> CSSPixelLength { let (factor, length) = match *self { @@ -485,6 +506,18 @@ impl NoCalcLength { impl SpecifiedValueInfo for NoCalcLength {} +impl IsZeroLength for NoCalcLength { + #[inline] + fn is_zero_length(&self) -> bool { + match *self { + NoCalcLength::Absolute(v) => v.is_zero(), + NoCalcLength::FontRelative(v) => v.is_zero(), + NoCalcLength::ViewportPercentage(v) => v.is_zero(), + NoCalcLength::ServoCharacterWidth(v) => v.0 == 0, + } + } +} + /// An extension to `NoCalcLength` to parse `calc` expressions. /// This is commonly used for the `` values. /// @@ -839,6 +872,17 @@ impl LengthOrPercentage { } } +impl IsZeroLength for LengthOrPercentage { + #[inline] + fn is_zero_length(&self) -> bool { + match *self { + LengthOrPercentage::Length(l) => l.is_zero_length(), + LengthOrPercentage::Percentage(p) => p.0 == 0.0, + LengthOrPercentage::Calc(_) => false, + } + } +} + /// Either a ``, a ``, or the `auto` keyword. #[allow(missing_docs)] #[derive(Clone, Debug, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToCss)] diff --git a/servo/components/style/values/specified/transform.rs b/servo/components/style/values/specified/transform.rs index d397d3d36074e..2d38a071a5d03 100644 --- a/servo/components/style/values/specified/transform.rs +++ b/servo/components/style/values/specified/transform.rs @@ -395,7 +395,7 @@ impl Parse for Translate { } // 'translate: ' - Ok(generic::Translate::TranslateX(tx)) + Ok(generic::Translate::Translate(tx, specified::LengthOrPercentage::zero())) } } diff --git a/testing/web-platform/meta/audio-output/setSinkId.html.ini b/testing/web-platform/meta/audio-output/setSinkId.html.ini index e9f5ba7f10a7e..d53c535e46498 100644 --- a/testing/web-platform/meta/audio-output/setSinkId.html.ini +++ b/testing/web-platform/meta/audio-output/setSinkId.html.ini @@ -1,6 +1,2 @@ [setSinkId.html] prefs: [media.setsinkid.enabled:true] - [List device, setSinkId should be allowed on the default, the rest of the devices will get a NotAllowedError] - expected: - if os == "android": FAIL - diff --git a/testing/web-platform/meta/audio-output/setSinkId.https.html.ini b/testing/web-platform/meta/audio-output/setSinkId.https.html.ini index 0c117127649a5..e77f0a6ac9fee 100644 --- a/testing/web-platform/meta/audio-output/setSinkId.https.html.ini +++ b/testing/web-platform/meta/audio-output/setSinkId.https.html.ini @@ -1,6 +1,2 @@ [setSinkId.https.html] prefs: [media.setsinkid.enabled:true] - [List device, setSinkId should be allowed on the default, the rest of the devices will get a NotAllowedError] - expected: - if os == "android": FAIL - diff --git a/testing/web-platform/meta/css/css-transforms/animation/translate-interpolation.html.ini b/testing/web-platform/meta/css/css-transforms/animation/translate-interpolation.html.ini index f0bf87b05aad6..e5bd78968add0 100644 --- a/testing/web-platform/meta/css/css-transforms/animation/translate-interpolation.html.ini +++ b/testing/web-platform/meta/css/css-transforms/animation/translate-interpolation.html.ini @@ -1,22 +1,11 @@ [translate-interpolation.html] - [Animation between "none" and "8px 80% 800px" at progress 0] - expected: FAIL - - [Animation between "none" and "none" at progress -1] - expected: FAIL - - [Animation between "none" and "none" at progress 0] - expected: FAIL - - [Animation between "none" and "none" at progress 0.125] - expected: FAIL - - [Animation between "none" and "none" at progress 0.875] + [Animation between "480px 400px 320px" and "240% 160%" at progress 0] expected: FAIL - - [Animation between "none" and "none" at progress 1] + bug: https://github.com/w3c/csswg-drafts/issues/3290 + [Animation between "480px 400px 320px" and "240% 160%" at progress 1] expected: FAIL + bug: https://github.com/w3c/csswg-drafts/issues/3290 - [Animation between "none" and "none" at progress 2] + [Animation between "none" and "8px 80% 800px" at progress 0] expected: FAIL - + bug: https://github.com/w3c/csswg-drafts/issues/3290 diff --git a/testing/web-platform/meta/css/css-transforms/transforms-support-calc.html.ini b/testing/web-platform/meta/css/css-transforms/transforms-support-calc.html.ini deleted file mode 100644 index 1954265ee6352..0000000000000 --- a/testing/web-platform/meta/css/css-transforms/transforms-support-calc.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[transforms-support-calc.html] - [translate supports calc] - expected: FAIL diff --git a/testing/web-platform/tests/css/css-multicol/multicol-margin-003.html b/testing/web-platform/tests/css/css-multicol/multicol-margin-003.html new file mode 100644 index 0000000000000..769bcc79259c6 --- /dev/null +++ b/testing/web-platform/tests/css/css-multicol/multicol-margin-003.html @@ -0,0 +1,47 @@ + + + + CSS Multi-column Layout Test: multi-column and margin bottom of last child + + + + + + + + + + Test passes if there is a filled green square. + + a1 a2 a3 a4 + a5 + + b1 b2 + + + + diff --git a/testing/web-platform/tests/css/css-transforms/parsing/translate-parsing-valid.html b/testing/web-platform/tests/css/css-transforms/parsing/translate-parsing-valid.html index fe16d545e1f92..e000f6a7f577a 100644 --- a/testing/web-platform/tests/css/css-transforms/parsing/translate-parsing-valid.html +++ b/testing/web-platform/tests/css/css-transforms/parsing/translate-parsing-valid.html @@ -17,9 +17,12 @@ test_valid_value("translate", "0px"); test_valid_value("translate", "100%"); +test_valid_value("translate", "100px 0px", "100px"); +test_valid_value("translate", "100px 0%", "100px"); test_valid_value("translate", "100px 200%"); test_valid_value("translate", "100% 200px"); +test_valid_value("translate", "100px 200px 0px"); test_valid_value("translate", "100px 200px 300px"); test_valid_value("translate", "100% 200% 300px"); diff --git a/testing/web-platform/tests/css/css-transforms/transforms-support-calc.html b/testing/web-platform/tests/css/css-transforms/transforms-support-calc.html index 71a046f56b010..1ad1bcc4b68c5 100644 --- a/testing/web-platform/tests/css/css-transforms/transforms-support-calc.html +++ b/testing/web-platform/tests/css/css-transforms/transforms-support-calc.html @@ -31,7 +31,7 @@ test(function(){ target.style = 'translate: calc(30px + 20%) calc(-200px + 100%);'; - assert_equals(getComputedStyle(target).translate, 'calc(30px + 20%) calc(-200px + 100%)'); + assert_equals(getComputedStyle(target).translate, 'calc(20% + 30px) calc(100% - 200px)'); }, 'translate supports calc'); test(function(){ diff --git a/testing/web-platform/tests/web-animations/animation-model/animation-types/property-types.js b/testing/web-platform/tests/web-animations/animation-model/animation-types/property-types.js index a71783b99e143..5d1f9630b82da 100644 --- a/testing/web-platform/tests/web-animations/animation-model/animation-types/property-types.js +++ b/testing/web-platform/tests/web-animations/animation-model/animation-types/property-types.js @@ -1885,7 +1885,7 @@ const translateListType = { 1000 ); testAnimationSamples(animation, idlName, - [{ time: 500, expected: '200px -25.5px 200px' }]); + [{ time: 500, expected: '200px calc(25% - 50.5px) 200px' }]); }, `${property} with combination of percentages and lengths`); }, testAddition: function(property, setup) { @@ -1924,8 +1924,8 @@ const translateListType = { { duration: 1000, fill: 'both', composite: 'add' }); testAnimationSamples(animation, idlName, - [ { time: 0, expected: '-150px' }, - { time: 1000, expected: '550px' }]); + [ { time: 0, expected: 'calc(50% - 200px)' }, + { time: 1000, expected: 'calc(50% + 500px)' }]); }, `${property} with underlying percentage value`); }, diff --git a/third_party/rust/dwrote/.cargo-checksum.json b/third_party/rust/dwrote/.cargo-checksum.json index f030bdb239e7b..e881f905556bb 100644 --- a/third_party/rust/dwrote/.cargo-checksum.json +++ b/third_party/rust/dwrote/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"7e1857aa6b66b8e3cd0840ac83e287cff0cd2078cd0a27a7aea9816af526e31e","README.md":"d69d75705e2582721cbfb2d3b4b2af052c71679057a0b2ac53a22c03f1755bba","appveyor.yml":"7c1e0718a363d3567cecd1ef772d4e17c2a17f18906dc464dce8a2411adff6be","src/bitmap_render_target.rs":"fc13525d7459515e4bf9769c8a8961b046b4d1ba4042591aaf0925dd5edebf64","src/com_helpers.rs":"02535b27bfb0cee6e4d8db3abd22f2d2e8137a4ce3ab3504beaf4fa3ca9370df","src/comptr.rs":"84794cf04b772398e75fdb5d55fd8fa015abf26c61b1f9c761a597133682b2e1","src/font.rs":"a79b944f2f5125bbef9e24921355dc6996f073e3742ddd410b8efaa0df3a3ee2","src/font_collection.rs":"df3767b305e9981fbe9398d9982123c668fb2a38cd92f5bdbaf574353005378d","src/font_collection_impl.rs":"a585a6ce62083b3346d67619ea47fec46423a7fb04cc11372828389ab26c5a05","src/font_face.rs":"55d3ddef22be160b9b9a0ffd677993290b0df0f847e7dbcce4014a222490205e","src/font_family.rs":"4e948542dba0c158187d0cb2d72343c443380480cacd12894070d0ef1351dd0a","src/font_file.rs":"1c012d0b436c2831d31cd76f77a59dab1edc5d63881c495eb486cd4febe23031","src/font_file_loader_impl.rs":"71c4153971dbfc21d42ba2e33f159fcb145f7dcfbd17e856e9fd75f0571d41e0","src/gdi_interop.rs":"04dbef7c34bb0fe62c4f2c2ceca62ca94c75a964d744b29b3322a6c3bbb4eabd","src/geometry_sink_impl.rs":"d615de212e55b8b8d95c8d605fc5d78044b4ae4dfd846f706911a16cc3afc049","src/glyph_run_analysis.rs":"3b2a351422098a19e8f490421e5b19227fc14a41a0df97d488c536fd1d4b552c","src/helpers.rs":"2f3c57642b24b80c45bbd012e7d6ca1fc524b1b42a8be004cb9b52ea13f4166d","src/lib.rs":"b634e62dd088d804429f451ba9f14aaab0b6a1179042d70fed825f3253ffacfb","src/outline_builder.rs":"0f5c842b2ffe75e21d68f93be6a3834c120bd43303d4e490fdfee9f4f964cdc4","src/rendering_params.rs":"850a51143790f5d29422dc49cbceddc232d814ecd0e6933434ad644e6eec539b","src/test.rs":"158aa4d03655f4efef00327fe72a03dfb504659176aa0eef976ca2485b2c1d74","src/types.rs":"587aea2e50720e85b28efe237c8ea10bc45b52049ca724447a0fc9b0e6672b11"},"package":"8b5a0af6d47ecf67355dc36e5fc09547050bd8a4b87870e637911ffe4aced32a"} \ No newline at end of file +{"files":{"Cargo.toml":"8a5134cca9cb028685157e5cf14e3c3196a84bcb03361545bce9893997fefe74","README.md":"d69d75705e2582721cbfb2d3b4b2af052c71679057a0b2ac53a22c03f1755bba","appveyor.yml":"7c1e0718a363d3567cecd1ef772d4e17c2a17f18906dc464dce8a2411adff6be","src/bitmap_render_target.rs":"fc13525d7459515e4bf9769c8a8961b046b4d1ba4042591aaf0925dd5edebf64","src/com_helpers.rs":"02535b27bfb0cee6e4d8db3abd22f2d2e8137a4ce3ab3504beaf4fa3ca9370df","src/comptr.rs":"84794cf04b772398e75fdb5d55fd8fa015abf26c61b1f9c761a597133682b2e1","src/font.rs":"a79b944f2f5125bbef9e24921355dc6996f073e3742ddd410b8efaa0df3a3ee2","src/font_collection.rs":"df3767b305e9981fbe9398d9982123c668fb2a38cd92f5bdbaf574353005378d","src/font_collection_impl.rs":"a585a6ce62083b3346d67619ea47fec46423a7fb04cc11372828389ab26c5a05","src/font_face.rs":"7f78c4132df39857d8118ac3eacbb57e11bca1d69f9d7f8e1c1c24b7a2b69749","src/font_family.rs":"4e948542dba0c158187d0cb2d72343c443380480cacd12894070d0ef1351dd0a","src/font_file.rs":"1c012d0b436c2831d31cd76f77a59dab1edc5d63881c495eb486cd4febe23031","src/font_file_loader_impl.rs":"71c4153971dbfc21d42ba2e33f159fcb145f7dcfbd17e856e9fd75f0571d41e0","src/gdi_interop.rs":"04dbef7c34bb0fe62c4f2c2ceca62ca94c75a964d744b29b3322a6c3bbb4eabd","src/geometry_sink_impl.rs":"d615de212e55b8b8d95c8d605fc5d78044b4ae4dfd846f706911a16cc3afc049","src/glyph_run_analysis.rs":"3b2a351422098a19e8f490421e5b19227fc14a41a0df97d488c536fd1d4b552c","src/helpers.rs":"2f3c57642b24b80c45bbd012e7d6ca1fc524b1b42a8be004cb9b52ea13f4166d","src/lib.rs":"b634e62dd088d804429f451ba9f14aaab0b6a1179042d70fed825f3253ffacfb","src/outline_builder.rs":"0f5c842b2ffe75e21d68f93be6a3834c120bd43303d4e490fdfee9f4f964cdc4","src/rendering_params.rs":"850a51143790f5d29422dc49cbceddc232d814ecd0e6933434ad644e6eec539b","src/test.rs":"158aa4d03655f4efef00327fe72a03dfb504659176aa0eef976ca2485b2c1d74","src/types.rs":"587aea2e50720e85b28efe237c8ea10bc45b52049ca724447a0fc9b0e6672b11"},"package":"18e895b763d82cafef31c7c1e2f4f17fb70f385ac651b0918a46ff5790664a63"} \ No newline at end of file diff --git a/third_party/rust/dwrote/Cargo.toml b/third_party/rust/dwrote/Cargo.toml index 15f09a398f05a..35bfcb6496773 100644 --- a/third_party/rust/dwrote/Cargo.toml +++ b/third_party/rust/dwrote/Cargo.toml @@ -12,7 +12,7 @@ [package] name = "dwrote" -version = "0.6.0" +version = "0.6.1" authors = ["Vladimir Vukicevic "] description = "Lightweight binding to DirectWrite." license = "MPL-2.0" diff --git a/third_party/rust/dwrote/src/font_face.rs b/third_party/rust/dwrote/src/font_face.rs index 365d68225927c..0ec3f87a7da0f 100644 --- a/third_party/rust/dwrote/src/font_face.rs +++ b/third_party/rust/dwrote/src/font_face.rs @@ -194,7 +194,7 @@ impl FontFace { rendering_params, &mut render_mode); - if !(hr != 0) { + if hr != 0 { return DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC; } diff --git a/uriloader/exthandler/tests/mochitest/browser_auto_close_window.js b/uriloader/exthandler/tests/mochitest/browser_auto_close_window.js index 824725856a845..b3c475248a007 100644 --- a/uriloader/exthandler/tests/mochitest/browser_auto_close_window.js +++ b/uriloader/exthandler/tests/mochitest/browser_auto_close_window.js @@ -52,8 +52,7 @@ add_task(async function simple_navigation() { await BrowserTestUtils.synthesizeMouseAtCenter("#regular_load", {}, browser); let windowContext = await dialogAppeared; - is(windowContext.gBrowser.selectedBrowser.currentURI.spec, PAGE_URL, - "got the right windowContext"); + is(windowContext, browser.ownerGlobal, "got the right windowContext"); }); }); @@ -70,8 +69,7 @@ async function testNewTab(browser) { await BrowserTestUtils.synthesizeMouseAtCenter("#target_blank", {}, browser); let windowContext = await dialogAppeared; - is(windowContext.gBrowser.selectedBrowser.currentURI.spec, targetURL, - "got the right windowContext"); + is(windowContext, browser.ownerGlobal, "got the right windowContext"); let [ tab, closingPromise ] = await tabOpened; await closingPromise; is(tab.linkedBrowser, null, "tab was opened and closed"); @@ -101,8 +99,7 @@ add_task(async function new_window() { let windowContext = await dialogAppeared; - is(windowContext.gBrowser.selectedBrowser.currentURI.spec, PAGE_URL, - "got the right windowContext"); + is(windowContext, browser.ownerGlobal, "got the right windowContext"); // The window should close on its own. If not, this test will time out. await BrowserTestUtils.domWindowClosed(win);
{content.scene2_text}
{content.scene2_title ?
+ +
{JSON.stringify(msg, null, 2)}
Show messages from \n all providers\n {this.state.providers.map(provider => ({provider.id}))}\n
Status: {success ? \"✅\" : \"❌\"}, Result: {result}
\n \n \n
\n {getFormattedMessage(emptyState.message)}\n
{this.renderText()}
\n \n
\n \n \n \n
{bodyText}{isSuccess ? null : {retryButtonText}}
{'Hello, world!'}
{'Hello, { $username }!'}
{content.text}
{link.description}
- +
Test passes if there is a filled green square.