From fea7d3010777cd1453ab3e0f7da7f210736f2837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Naz=C4=B1m=20Can=20Alt=C4=B1nova?= Date: Fri, 19 Nov 2021 13:49:35 +0000 Subject: [PATCH] Bug 1741716 - Change the preset to Firefox when profiler popup is activated through web channel r=julienw Differential Revision: https://phabricator.services.mozilla.com/D131436 --- .../performance-new/popup/background.jsm.js | 7 +++ .../performance-new/test/browser/browser.ini | 2 + ...er_webchannel-enable-menu-button-preset.js | 52 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 devtools/client/performance-new/test/browser/browser_webchannel-enable-menu-button-preset.js diff --git a/devtools/client/performance-new/popup/background.jsm.js b/devtools/client/performance-new/popup/background.jsm.js index 92485f70fef2..4c35ea73f27d 100644 --- a/devtools/client/performance-new/popup/background.jsm.js +++ b/devtools/client/performance-new/popup/background.jsm.js @@ -666,6 +666,13 @@ async function getResponseForMessage(request, browser) { // Ensure the widget is enabled. Services.prefs.setBoolPref(POPUP_FEATURE_FLAG_PREF, true); + // Force the preset to be "firefox-platform" if we enable the menu button + // via web channel. If user goes through profiler.firefox.com to enable + // it, it means that either user is a platform developer or filing a bug + // report for performance engineers to look at. + const supportedFeatures = Services.profiler.GetFeatures(); + changePreset("aboutprofiling", "firefox-platform", supportedFeatures); + // Enable the profiler menu button. const { ProfilerMenuButton } = lazy.ProfilerMenuButton(); ProfilerMenuButton.addToNavbar(ownerDocument); diff --git a/devtools/client/performance-new/test/browser/browser.ini b/devtools/client/performance-new/test/browser/browser.ini index f8782283f915..7c34fe891b61 100644 --- a/devtools/client/performance-new/test/browser/browser.ini +++ b/devtools/client/performance-new/test/browser/browser.ini @@ -31,6 +31,8 @@ https_first_disabled = true [browser_devtools-record-discard.js] [browser_webchannel-enable-menu-button.js] https_first_disabled = true +[browser_webchannel-enable-menu-button-preset.js] +https_first_disabled = true [browser_popup-profiler-states.js] https_first_disabled = true [browser_popup-record-capture.js] diff --git a/devtools/client/performance-new/test/browser/browser_webchannel-enable-menu-button-preset.js b/devtools/client/performance-new/test/browser/browser_webchannel-enable-menu-button-preset.js new file mode 100644 index 000000000000..4732f8f037aa --- /dev/null +++ b/devtools/client/performance-new/test/browser/browser_webchannel-enable-menu-button-preset.js @@ -0,0 +1,52 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +add_task(async function test() { + info( + "Test the WebChannel mechanism that it changes the preset to firefox-platform" + ); + await makeSureProfilerPopupIsDisabled(); + const supportedFeatures = Services.profiler.GetFeatures(); + + // This test assumes that the Web Developer preset is set by default, which is + // not the case on Nightly and custom builds. + BackgroundJSM.changePreset( + "aboutprofiling", + "web-developer", + supportedFeatures + ); + + await withAboutProfiling(async document => { + const webdevPreset = document.querySelector("input[value=web-developer]"); + const firefoxPreset = await document.querySelector( + "input[value=firefox-platform]" + ); + + // Check the presets now to make sure web-developer is selected right now. + ok(webdevPreset.checked, "By default the Web Developer preset is checked."); + ok( + !firefoxPreset.checked, + "By default the Firefox Platform preset is not checked." + ); + + // Enable the profiler menu button with web channel. + await withWebChannelTestDocument(async browser => { + await waitForTabTitle("WebChannel Page Ready"); + await waitForProfilerMenuButton(); + ok(true, "The profiler menu button was enabled by the WebChannel."); + }); + + // firefox-platform preset should be selected now. + ok( + !webdevPreset.checked, + "Web Developer preset should not be checked anymore." + ); + ok( + firefoxPreset.checked, + "Firefox Platform preset should now be checked after enabling the popup with web channel." + ); + }); +});