Bug 1627969 - Remove the megabar pref. r=mak
authorDão Gottwald <dao@mozilla.com>
Wed, 08 Apr 2020 19:04:24 +0000 (2020-04-08)
changeset 522979 9b1ce890cb3f4f559c54deec4b89e1e30d36e221
parent 522978 1e11d85ed0d493b1ed25e4adde8ccbabd7bcfbe2
child 522980 1496bcc01e5d64e28b9c18b4b994dbf5413ff6cf
push id37296
push usercsabou@mozilla.com
push dateThu, 09 Apr 2020 09:55:00 +0000 (2020-04-09)
treeherdermozilla-central@33d2485721c6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmak
bugs1627969
milestone77.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1627969 - Remove the megabar pref. r=mak Differential Revision: https://phabricator.services.mozilla.com/D70023
browser/app/profile/firefox.js
browser/base/content/browser.css
browser/base/content/browser.js
browser/base/content/browser.xhtml
browser/base/content/tabbrowser.js
browser/base/content/test/performance/browser_tabopen.js
browser/base/content/test/performance/browser_tabopen_squeeze.js
browser/base/content/test/performance/browser_tabstrip_overflow_underflow.js
browser/base/content/test/performance/browser_windowclose.js
browser/base/content/test/performance/head.js
browser/base/content/test/popups/browser_popupUI.js
browser/components/urlbar/UrlbarController.jsm
browser/components/urlbar/UrlbarInput.jsm
browser/components/urlbar/UrlbarPrefs.jsm
browser/components/urlbar/UrlbarProviderTopSites.jsm
browser/components/urlbar/UrlbarView.jsm
browser/components/urlbar/tests/browser/browser.ini
browser/components/urlbar/tests/browser/browser_autocomplete_tag_star_visibility.js
browser/components/urlbar/tests/browser/browser_downArrowKeySearch.js
browser/components/urlbar/tests/browser/browser_dropmarker.js
browser/components/urlbar/tests/browser/browser_inputHistory_emptystring.js
browser/components/urlbar/tests/browser/browser_retainedResultsOnFocus.js
browser/components/urlbar/tests/browser/browser_tabKeyBehavior.js
browser/components/urlbar/tests/browser/browser_top_sites.js
browser/components/urlbar/tests/browser/browser_urlbar_event_telemetry.js
browser/locales/en-US/chrome/browser/browser.dtd
browser/modules/test/browser/browser_UsageTelemetry_urlbar_topsite.js
browser/themes/linux/browser.css
browser/themes/osx/browser.css
browser/themes/shared/urlbar-autocomplete.inc.css
browser/themes/shared/urlbar-searchbar.inc.css
browser/themes/windows/browser.css
toolkit/components/extensions/test/browser/browser_ext_themes_autocomplete_popup.js
toolkit/components/extensions/test/browser/browser_ext_themes_toolbar_fields.js
toolkit/components/extensions/test/browser/browser_ext_themes_toolbar_fields_focus.js
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -303,19 +303,16 @@ pref("browser.urlbar.switchTabs.adoptInt
 // Whether addresses and search results typed into the address bar
 // should be opened in new tabs by default.
 pref("browser.urlbar.openintab", false);
 
 // This is disabled until Bug 1340663 figures out the remaining requirements.
 pref("browser.urlbar.usepreloadedtopurls.enabled", false);
 pref("browser.urlbar.usepreloadedtopurls.expire_days", 14);
 
-// Whether the quantum bar displays design update 1.
-pref("browser.urlbar.update1", true);
-
 // If true, we show actionable tips in the Urlbar when the user is searching
 // for those actions.
 pref("browser.urlbar.update1.interventions", true);
 
 // If true, we show new users and those about to start an organic search a tip
 // encouraging them to use the Urlbar.
 pref("browser.urlbar.update1.searchTips", true);
 
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -576,18 +576,17 @@ toolbar:not(#TabsToolbar) > #personal-bo
 
 /*
  * Display visual cue that browser is under remote control.
  * This is to help users visually distinguish a user agent session that
  * is under remote control from those used for normal browsing sessions.
  *
  * Attribute is controlled by browser.js:/gRemoteControl.
  */
-:root[remotecontrol] #urlbar:not(.megabar),
-:root[remotecontrol] #urlbar.megabar > #urlbar-background {
+:root[remotecontrol] #urlbar-background {
   background: repeating-linear-gradient(
     -45deg,
     transparent,
     transparent 25px,
     rgba(255,255,255,.3) 25px,
     rgba(255,255,255,.3) 50px);
   background-color: rgba(255,170,68,.8);
   color: black;
@@ -688,17 +687,16 @@ toolbar:not(#TabsToolbar) > #personal-bo
 
 #PopupAutoComplete > richlistbox > richlistitem[originaltype="insecureWarning"] > .ac-title > label {
   margin-inline-start: 0;
 }
 
 #urlbar-input-container[pageproxystate=invalid] > #page-action-buttons > .urlbar-page-action,
 #identity-box.chromeUI ~ #page-action-buttons > .urlbar-page-action:not(#star-button-box),
 #urlbar[usertyping] > #urlbar-input-container > #page-action-buttons > #urlbar-zoom-button,
-#urlbar[usertyping] > #urlbar-input-container > .urlbar-history-dropmarker,
 #urlbar:not([usertyping]) > #urlbar-input-container > #urlbar-go-button,
 #urlbar:not([focused]) > #urlbar-input-container > #urlbar-go-button {
   display: none;
 }
 
 #nav-bar:not([keyNav=true]) #identity-box,
 #nav-bar:not([keyNav=true]) #tracking-protection-icon-container {
   -moz-user-focus: normal;
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -2094,25 +2094,19 @@ var gBrowserInit = {
   _setInitialFocus() {
     let initiallyFocusedElement = document.commandDispatcher.focusedElement;
 
     this._firstBrowserPaintDeferred = {};
     this._firstBrowserPaintDeferred.promise = new Promise(resolve => {
       this._firstBrowserPaintDeferred.resolve = resolve;
     });
 
-    // To prevent flickering of the urlbar-history-dropmarker in the general
-    // case, the urlbar has the 'focused' attribute set by default.
-    // If we are not fully sure the urlbar will be focused in this window,
-    // we should remove the attribute before first paint.
-    let shouldRemoveFocusedAttribute = true;
     this._callWithURIToLoad(uriToLoad => {
       if (isBlankPageURL(uriToLoad) || uriToLoad == "about:privatebrowsing") {
         gURLBar.select();
-        shouldRemoveFocusedAttribute = false;
         return;
       }
 
       if (gBrowser.selectedBrowser.isRemoteBrowser) {
         // If the initial browser is remote, in order to optimize for first paint,
         // we'll defer switching focus to that browser until it has painted.
         this._firstBrowserPaintDeferred.promise.then(() => {
           // If focus didn't move while we were waiting for first paint, we're okay
@@ -2124,26 +2118,16 @@ var gBrowserInit = {
           }
         });
       } else {
         // If the initial browser is not remote, we can focus the browser
         // immediately with no paint performance impact.
         gBrowser.selectedBrowser.focus();
       }
     });
-    // Delay removing the attribute using requestAnimationFrame to avoid
-    // invalidating styles multiple times in a row if uriToLoadPromise
-    // resolves before first paint.
-    if (shouldRemoveFocusedAttribute) {
-      window.requestAnimationFrame(() => {
-        if (shouldRemoveFocusedAttribute) {
-          gURLBar.removeAttribute("focused");
-        }
-      });
-    }
   },
 
   _handleURIToLoad() {
     this._callWithURIToLoad(uriToLoad => {
       if (!uriToLoad) {
         // We don't check whether window.arguments[5] (userContextId) is set
         // because tabbrowser.js takes care of that for the initial tab.
         return;
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -998,19 +998,16 @@
                             aria-autocomplete="both"
                             inputmode="mozAwesomebar"
                             placeholder="&urlbar.placeholder2;"/>
               </moz-input-box>
               <image id="urlbar-go-button"
                      class="urlbar-icon"
                      onclick="gURLBar.handleCommand(event);"
                      tooltiptext="&goEndCap.tooltip;"/>
-              <image class="urlbar-history-dropmarker urlbar-icon chromeclass-toolbar-additional"
-                     hidden="true"
-                     tooltiptext="&urlbar.openHistoryPopup.tooltip;"/>
               <hbox id="page-action-buttons" context="pageActionContextMenu">
                 <toolbartabstop/>
                 <hbox id="contextual-feature-recommendation" role="button" hidden="true">
                   <hbox id="cfr-label-container">
                     <label id="cfr-label"/>
                   </hbox>
                   <image id="cfr-button"
                          class="urlbar-icon urlbar-page-action"
--- a/browser/base/content/tabbrowser.js
+++ b/browser/base/content/tabbrowser.js
@@ -1022,25 +1022,16 @@
           window.windowState != window.STATE_MINIMIZED &&
           !window.isFullyOccluded;
       }
 
       this._selectedBrowser = newBrowser;
       this._selectedTab = newTab;
       this.showTab(newTab);
 
-      gURLBar.setAttribute("switchingtabs", "true");
-      window.addEventListener(
-        "MozAfterPaint",
-        function() {
-          gURLBar.removeAttribute("switchingtabs");
-        },
-        { once: true }
-      );
-
       this._appendStatusPanel();
 
       let oldBrowserPopupsBlocked = oldBrowser.popupBlocker.getBlockedPopupCount();
       let newBrowserPopupsBlocked = newBrowser.popupBlocker.getBlockedPopupCount();
       if (oldBrowserPopupsBlocked != newBrowserPopupsBlocked) {
         newBrowser.popupBlocker.updateBlockedPopupsUI();
       }
 
--- a/browser/base/content/test/performance/browser_tabopen.js
+++ b/browser/base/content/test/performance/browser_tabopen.js
@@ -22,17 +22,17 @@ const EXPECTED_REFLOWS = [
  * This test ensures that there are no unexpected
  * uninterruptible reflows when opening new tabs.
  */
 add_task(async function() {
   await ensureNoPreloadedBrowser();
 
   // Prepare the window to avoid flicker and reflow that's unrelated to our
   // tab opening operation.
-  await ensureFocusedUrlbar();
+  gURLBar.focus();
 
   let tabStripRect = gBrowser.tabContainer.arrowScrollbox.getBoundingClientRect();
   let firstTabRect = gBrowser.selectedTab.getBoundingClientRect();
   let firstTabLabelRect = gBrowser.selectedTab.textLabel.getBoundingClientRect();
   let textBoxRect = gURLBar
     .querySelector("moz-input-box")
     .getBoundingClientRect();
   let fxaAccountsButton = document
--- a/browser/base/content/test/performance/browser_tabopen_squeeze.js
+++ b/browser/base/content/test/performance/browser_tabopen_squeeze.js
@@ -26,17 +26,17 @@ add_task(async function() {
   // Compute the number of tabs we can put into the strip without
   // overflowing, and remove one, so that we can create
   // TAB_COUNT_FOR_SQUEEE tabs, and then one more, which should
   // cause the tab to squeeze to a smaller size rather than overflow.
   const TAB_COUNT_FOR_SQUEEZE = computeMaxTabCount() - 1;
 
   await createTabs(TAB_COUNT_FOR_SQUEEZE);
 
-  await ensureFocusedUrlbar();
+  gURLBar.focus();
 
   let tabStripRect = gBrowser.tabContainer.arrowScrollbox.getBoundingClientRect();
   let textBoxRect = gURLBar
     .querySelector("moz-input-box")
     .getBoundingClientRect();
 
   await withPerfObserver(
     async function() {
--- a/browser/base/content/test/performance/browser_tabstrip_overflow_underflow.js
+++ b/browser/base/content/test/performance/browser_tabstrip_overflow_underflow.js
@@ -30,23 +30,22 @@ const EXPECTED_UNDERFLOW_REFLOWS = [
  */
 add_task(async function() {
   await ensureNoPreloadedBrowser();
 
   const TAB_COUNT_FOR_OVERFLOW = computeMaxTabCount();
 
   await createTabs(TAB_COUNT_FOR_OVERFLOW);
 
-  await ensureFocusedUrlbar();
+  gURLBar.focus();
 
   let tabStripRect = gBrowser.tabContainer.arrowScrollbox.getBoundingClientRect();
   let textBoxRect = gURLBar
     .querySelector("moz-input-box")
     .getBoundingClientRect();
-  let urlbarDropmarkerRect = gURLBar.dropmarker.getBoundingClientRect();
 
   let ignoreTabstripRects = {
     filter: rects =>
       rects.filter(
         r =>
           !(
             // We expect plenty of changed rects within the tab strip.
             (
@@ -68,25 +67,16 @@ add_task(async function() {
       },
       {
         name: "bug 1446449 - spurious tab switch spinner",
         condition: r =>
           // In the content area
           r.y1 >=
           document.getElementById("appcontent").getBoundingClientRect().top,
       },
-      {
-        name: "bug 1520032 - the urlbar dropmarker disappears periodically",
-        condition: r =>
-          AppConstants.DEBUG &&
-          r.x1 >= urlbarDropmarkerRect.left &&
-          r.x2 <= urlbarDropmarkerRect.right &&
-          r.y1 >= urlbarDropmarkerRect.top &&
-          r.y2 <= urlbarDropmarkerRect.bottom,
-      },
     ],
   };
 
   await withPerfObserver(
     async function() {
       let switchDone = BrowserTestUtils.waitForEvent(window, "TabSwitchDone");
       BrowserOpenTab();
       await BrowserTestUtils.waitForEvent(
--- a/browser/base/content/test/performance/browser_windowclose.js
+++ b/browser/base/content/test/performance/browser_windowclose.js
@@ -38,40 +38,22 @@ add_task(async function() {
   // Mochitest will fail if we have no assertions, so we add one here
   // to make sure nobody adds any new ones.
   Assert.equal(
     EXPECTED_REFLOWS.length,
     0,
     "We shouldn't have added any new expected reflows for window close."
   );
 
-  let dropmarkerRect = gURLBar.dropmarker.getBoundingClientRect();
-
   await withPerfObserver(
     async function() {
       let promiseOrigBrowserFocused = BrowserTestUtils.waitForCondition(() => {
         return Services.focus.activeWindow == window;
       });
       await BrowserTestUtils.closeWindow(win);
       await promiseOrigBrowserFocused;
     },
     {
       expectedReflows: EXPECTED_REFLOWS,
-      frames: {
-        filter: rects =>
-          rects.filter(
-            r =>
-              !(
-                // The dropmarker is visible when the window opens and sometimes hasn't
-                // finished its transition to opacity: 0 by the time waitForFocus resolves.
-                (
-                  r.x1 >= dropmarkerRect.left - 1 &&
-                  r.x2 <= dropmarkerRect.right + 1 &&
-                  r.y1 >= dropmarkerRect.top &&
-                  r.y2 <= dropmarkerRect.bottom
-                )
-              )
-          ),
-      },
     },
     win
   );
 });
--- a/browser/base/content/test/performance/head.js
+++ b/browser/base/content/test/performance/head.js
@@ -255,41 +255,16 @@ async function ensureNoPreloadedBrowser(
 }
 
 async function prepareSettledWindow() {
   let win = await BrowserTestUtils.openNewBrowserWindow();
   await ensureNoPreloadedBrowser(win);
   return win;
 }
 
-// Use this function to avoid catching a reflow related to calling focus on the
-// urlbar and changed rects for its dropmarker when opening new tabs.
-async function ensureFocusedUrlbar() {
-  let opacityPromise;
-  if (!gURLBar.dropmarker.hidden) {
-    // The switchingtabs attribute prevents the historydropmarker opacity
-    // transition, so if we expect a transitionend event when this attribute
-    // is set, we wait forever. (it's removed off a MozAfterPaint event listener)
-    await TestUtils.waitForCondition(
-      () => !gURLBar.hasAttribute("switchingtabs")
-    );
-
-    opacityPromise = BrowserTestUtils.waitForEvent(
-      gURLBar.dropmarker,
-      "transitionend",
-      false,
-      e => e.propertyName === "opacity"
-    );
-  }
-  gURLBar.focus();
-  if (opacityPromise) {
-    await opacityPromise;
-  }
-}
-
 /**
  * Calculate and return how many additional tabs can be fit into the
  * tabstrip without causing it to overflow.
  *
  * @return int
  *         The maximum additional tabs that can be fit into the
  *         tabstrip without causing it to overflow.
  */
@@ -756,71 +731,37 @@ async function runUrlbarTest(
         value: URLBar.value,
       });
       await waitExtra();
     }
 
     await UrlbarTestUtils.promisePopupClose(win);
   };
 
-  let expectedRects;
-  if (URLBar.megabar) {
-    let urlbarRect = URLBar.textbox.getBoundingClientRect();
-    const SHADOW_SIZE = 4;
-    expectedRects = {
-      filter: rects => {
-        // We put text into the urlbar so expect its textbox to change.
-        // The dropmarker is displayed as active during some of the test.
-        // We expect many changes in the results view.
-        // So we just whitelist the whole urlbar. We don't check the bottom of
-        // the rect because the result view height varies depending on the
-        // results.
-        // We use floor/ceil because the Urlbar dimensions aren't always
-        // integers.
-        return rects.filter(
-          r =>
-            !(
-              r.x1 >= Math.floor(urlbarRect.left) - SHADOW_SIZE &&
-              r.x2 <= Math.ceil(urlbarRect.right) + SHADOW_SIZE &&
-              r.y1 >= Math.floor(urlbarRect.top) - SHADOW_SIZE
-            )
-        );
-      },
-    };
-  } else {
-    // Hide the results as we expect many changes there that we don't want to
-    // detect here.
-    URLBar.view.panel.style.visibility = "hidden";
-
-    let dropmarkerRect = URLBar.dropmarker.getBoundingClientRect();
-    let textBoxRect = URLBar.querySelector(
-      "moz-input-box"
-    ).getBoundingClientRect();
-    expectedRects = {
-      filter: rects =>
-        rects.filter(
-          r =>
-            !(
-              // We put text into the urlbar so expect its textbox to change.
-              (
-                (r.x1 >= Math.floor(textBoxRect.left) &&
-                  r.x2 <= Math.ceil(textBoxRect.right) &&
-                  r.y1 >= Math.floor(textBoxRect.top) &&
-                  r.y2 <= Math.ceil(textBoxRect.bottom)) ||
-                // The dropmarker is displayed as active during some of the test.
-                // dropmarkerRect.left isn't always an integer.
-                (r.x1 >= Math.floor(dropmarkerRect.left) &&
-                  r.x2 <= Math.ceil(dropmarkerRect.right) &&
-                  r.y1 >= Math.floor(dropmarkerRect.top) &&
-                  r.y2 <= Math.ceil(dropmarkerRect.bottom))
-              )
-            )
-        ),
-    };
-  }
+  let urlbarRect = URLBar.textbox.getBoundingClientRect();
+  const SHADOW_SIZE = 4;
+  let expectedRects = {
+    filter: rects => {
+      // We put text into the urlbar so expect its textbox to change.
+      // We expect many changes in the results view.
+      // So we just whitelist the whole urlbar. We don't check the bottom of
+      // the rect because the result view height varies depending on the
+      // results.
+      // We use floor/ceil because the Urlbar dimensions aren't always
+      // integers.
+      return rects.filter(
+        r =>
+          !(
+            r.x1 >= Math.floor(urlbarRect.left) - SHADOW_SIZE &&
+            r.x2 <= Math.ceil(urlbarRect.right) + SHADOW_SIZE &&
+            r.y1 >= Math.floor(urlbarRect.top) - SHADOW_SIZE
+          )
+      );
+    },
+  };
 
   info("First opening");
   await withPerfObserver(
     testFn,
     { expectedReflows: expectedReflowsFirstOpen, frames: expectedRects },
     win
   );
 
--- a/browser/base/content/test/popups/browser_popupUI.js
+++ b/browser/base/content/test/popups/browser_popupUI.js
@@ -19,22 +19,16 @@ add_task(async function toolbar_ui_visib
   isnot(win.gURLBar.clientWidth, 0, "location bar is visible in the popup");
   ok(win.gURLBar.readOnly, "location bar is read-only in the popup");
   isnot(
     doc.getElementById("Browser:OpenLocation").getAttribute("disabled"),
     "true",
     "'open location' command is not disabled in the popup"
   );
 
-  is(
-    win.gURLBar.dropmarker.clientWidth,
-    0,
-    "history dropdown button is hidden in the popup"
-  );
-
   EventUtils.synthesizeKey("t", { accelKey: true }, win);
   is(
     win.gBrowser.browsers.length,
     1,
     "Accel+T doesn't open a new tab in the popup"
   );
   is(
     gBrowser.browsers.length,
--- a/browser/components/urlbar/UrlbarController.jsm
+++ b/browser/components/urlbar/UrlbarController.jsm
@@ -314,17 +314,16 @@ class UrlbarController {
         event.preventDefault();
         break;
       case KeyEvent.DOM_VK_TAB:
         // It's always possible to tab through results when the urlbar was
         // focused with the mouse, or has a search string.
         // When there's no search string, we want to focus the next toolbar item
         // instead, for accessibility reasons.
         let allowTabbingThroughResults =
-          !UrlbarPrefs.get("update1") ||
           this.input.focusedViaMousedown ||
           (this.input.value &&
             this.input.getAttribute("pageproxystate") != "valid");
         if (
           this.view.isOpen &&
           !event.ctrlKey &&
           !event.altKey &&
           allowTabbingThroughResults
--- a/browser/components/urlbar/UrlbarInput.jsm
+++ b/browser/components/urlbar/UrlbarInput.jsm
@@ -76,25 +76,19 @@ class UrlbarInput {
                 compact="true"
                 includecurrentengine="true"
                 disabletab="true"/>
         </vbox>
       `)
     );
     this.panel = this.textbox.querySelector(".urlbarView");
 
-    // "Megabar" is the internal codename for the update1 design refresh.
-    this.megabar = UrlbarPrefs.get("update1");
-    if (this.megabar) {
-      this.textbox.classList.add("megabar");
-      this.textbox.parentNode.classList.add("megabar");
-      this.searchButton = UrlbarPrefs.get("update2.searchButton");
-      if (this.searchButton) {
-        this.textbox.classList.add("searchButton");
-      }
+    this.searchButton = UrlbarPrefs.get("update2.searchButton");
+    if (this.searchButton) {
+      this.textbox.classList.add("searchButton");
     }
 
     this.controller = new UrlbarController({
       input: this,
       eventTelemetryCategory: options.eventTelemetryCategory,
     });
     this.view = new UrlbarView(this);
     this.valueIsTyped = false;
@@ -149,18 +143,16 @@ class UrlbarInput {
         },
         set(val) {
           return (this.inputField[property] = val);
         },
       });
     }
 
     this.inputField = this.querySelector("#urlbar-input");
-    this.dropmarker = this.querySelector(".urlbar-history-dropmarker");
-    this.dropmarker.hidden = this.megabar;
     this._inputContainer = this.querySelector("#urlbar-input-container");
     this._identityBox = this.querySelector("#identity-box");
     this._toolbar = this.textbox.closest("toolbar");
 
     XPCOMUtils.defineLazyGetter(this, "valueFormatter", () => {
       return new UrlbarValueFormatter(this);
     });
 
@@ -195,17 +187,16 @@ class UrlbarInput {
       "paste",
       "scrollend",
       "select",
     ];
     for (let name of this._inputFieldEvents) {
       this.addEventListener(name, this);
     }
 
-    this.dropmarker.addEventListener("mousedown", this);
     this.window.addEventListener("mousedown", this);
     this.textbox.addEventListener("mousedown", this);
     this._inputContainer.addEventListener("click", this);
 
     // This is used to detect commands launched from the panel, to avoid
     // recording abandonment events when the command causes a blur event.
     this.view.panel.addEventListener("command", this, true);
 
@@ -1037,19 +1028,16 @@ class UrlbarInput {
     return this._setValue(val, true);
   }
 
   get lastSearchString() {
     return this._lastSearchString;
   }
 
   async updateLayoutBreakout() {
-    if (!this.megabar) {
-      return;
-    }
     if (!this._toolbar) {
       // Expanding requires a parent toolbar.
       return;
     }
     await this._updateLayoutBreakoutDimensions();
     this.startLayoutExtend();
   }
 
@@ -1968,32 +1956,16 @@ class UrlbarInput {
 
         if (event.target.id == SEARCH_BUTTON_ID) {
           this._preventClickSelectsAll = true;
           this.search(UrlbarTokenizer.RESTRICT.SEARCH);
         } else {
           this.view.autoOpen({ event });
         }
         break;
-      case this.dropmarker:
-        if (event.button != 0) {
-          break;
-        }
-
-        if (this.view.isOpen) {
-          this.view.close();
-        } else {
-          this.focus();
-          this.startQuery({
-            allowAutofill: false,
-            event,
-          });
-          this._maybeSelectAll();
-        }
-        break;
       case this.window:
         if (this._mousedownOnUrlbarDescendant) {
           this._mousedownOnUrlbarDescendant = false;
           break;
         }
         // Don't close the view when clicking on a tab; we may want to keep the
         // view open on tab switch, and the TabSelect event arrived earlier.
         if (event.target.closest("tab")) {
--- a/browser/components/urlbar/UrlbarPrefs.jsm
+++ b/browser/components/urlbar/UrlbarPrefs.jsm
@@ -139,19 +139,16 @@ const PREF_URLBAR_DEFAULTS = new Map([
 
   // Results will include a built-in set of popular domains when this is true.
   ["usepreloadedtopurls.enabled", true],
 
   // After this many days from the profile creation date, the built-in set of
   // popular domains will no longer be included in the results.
   ["usepreloadedtopurls.expire_days", 14],
 
-  // Whether the quantum bar displays design update 1.
-  ["update1", true],
-
   // If true, we show actionable tips in the Urlbar when the user is searching
   // for those actions.
   ["update1.interventions", true],
 
   // If true, we strip https:// instead of http:// from URLs in the results view.
   ["update1.view.stripHttps", true],
 
   // If true, we show new users and those about to start an organic search a tip
--- a/browser/components/urlbar/UrlbarProviderTopSites.jsm
+++ b/browser/components/urlbar/UrlbarProviderTopSites.jsm
@@ -71,17 +71,16 @@ class ProviderTopSites extends UrlbarPro
    */
   isActive(queryContext) {
     // If top sites on new tab are disabled, the pref below will be false, and
     // activity stream's top sites will be unavailable (an empty array), so we
     // make this provider inactive.  For empty search strings, we instead show
     // the most frecent URLs in the user's history from the UnifiedComplete
     // provider.
     return (
-      UrlbarPrefs.get("update1") &&
       UrlbarPrefs.get("openViewOnFocus") &&
       !queryContext.searchString &&
       Services.prefs.getBoolPref(
         "browser.newtabpage.activity-stream.feeds.topsites",
         false
       )
     );
   }
--- a/browser/components/urlbar/UrlbarView.jsm
+++ b/browser/components/urlbar/UrlbarView.jsm
@@ -39,20 +39,16 @@ class UrlbarView {
    */
   constructor(input) {
     this.input = input;
     this.panel = input.panel;
     this.controller = input.controller;
     this.document = this.panel.ownerDocument;
     this.window = this.document.defaultView;
 
-    if (this.input.megabar) {
-      this.panel.classList.add("megabar");
-    }
-
     this._mainContainer = this.panel.querySelector(".urlbarView-body-inner");
     this._rows = this.panel.querySelector(".urlbarView-results");
 
     this._rows.addEventListener("mousedown", this);
     this._rows.addEventListener("mouseup", this);
 
     // For the horizontal fade-out effect, set the overflow attribute on result
     // rows when they overflow.
@@ -353,25 +349,20 @@ class UrlbarView {
     this.controller.cancelQuery();
 
     if (!this.isOpen) {
       return;
     }
 
     this.removeAccessibleFocus();
     this.input.inputField.setAttribute("aria-expanded", "false");
-    this.input.dropmarker.removeAttribute("open");
 
     this.input.removeAttribute("open");
     this.input.endLayoutExtend();
 
-    if (!this.input.megabar && this.input._toolbar) {
-      this.input._toolbar.removeAttribute("urlbar-exceeds-toolbar-bounds");
-    }
-
     // Search Tips can open the view without the Urlbar being focused. If the
     // tip is ignored (e.g. the page content is clicked or the window loses
     // focus) we should discard the telemetry event created when the view was
     // opened.
     if (!this.input.focused && !elementPicked) {
       this.controller.engagementEvent.discard();
       this.controller.engagementEvent.record(null, {});
     }
@@ -595,97 +586,25 @@ class UrlbarView {
   _openPanel() {
     if (this.isOpen) {
       return;
     }
     this.controller.userSelectionBehavior = "none";
 
     this.panel.removeAttribute("actionoverride");
 
-    if (!this.input.megabar) {
-      let px = number => number.toFixed(2) + "px";
-      let inputRect = getBoundsWithoutFlushing(this.input.textbox);
-
-      // Make the panel span the width of the window.
-      let documentRect = getBoundsWithoutFlushing(
-        this.document.documentElement
-      );
-      let width = documentRect.right - documentRect.left;
-
-      // Keep the popup items' site icons aligned with the input's identity
-      // icon if it's not too far from the edge of the window.  We define
-      // "too far" as "more than 30% of the window's width AND more than
-      // 250px".
-      let boundToCheck = this.window.RTL_UI ? "right" : "left";
-      let startOffset = Math.abs(
-        inputRect[boundToCheck] - documentRect[boundToCheck]
-      );
-      let alignSiteIcons = startOffset / width <= 0.3 || startOffset <= 250;
-
-      if (alignSiteIcons) {
-        // Calculate the end margin if we have a start margin.
-        let boundToCheckEnd = this.window.RTL_UI ? "left" : "right";
-        let endOffset = Math.abs(
-          inputRect[boundToCheckEnd] - documentRect[boundToCheckEnd]
-        );
-        if (endOffset > startOffset * 2) {
-          // Provide more space when aligning would result in an unbalanced
-          // margin. This allows the location bar to be moved to the start
-          // of the navigation toolbar to reclaim space for results.
-          endOffset = startOffset;
-        }
-
-        // Align the view's icons with the tracking protection or identity icon,
-        // whichever is visible.
-        let alignRect;
-        for (let id of ["tracking-protection-icon-box", "identity-icon"]) {
-          alignRect = getBoundsWithoutFlushing(
-            this.document.getElementById(id)
-          );
-          if (alignRect.width > 0) {
-            break;
-          }
-        }
-        let start = this.window.RTL_UI
-          ? documentRect.right - alignRect.right
-          : alignRect.left;
-
-        this.panel.style.setProperty("--item-padding-start", px(start));
-        this.panel.style.setProperty("--item-padding-end", px(endOffset));
-      } else {
-        this.panel.style.removeProperty("--item-padding-start");
-        this.panel.style.removeProperty("--item-padding-end");
-      }
-
-      // Align the panel with the parent toolbar.
-      this.panel.style.top = px(
-        getBoundsWithoutFlushing(this.input._toolbar).bottom
-      );
-
-      this._mainContainer.style.maxWidth = px(width);
-
-      if (this.input._toolbar) {
-        this.input._toolbar.setAttribute(
-          "urlbar-exceeds-toolbar-bounds",
-          "true"
-        );
-      }
-    }
-
     this._enableOrDisableRowWrap();
 
     this.input.inputField.setAttribute("aria-expanded", "true");
-    this.input.dropmarker.setAttribute("open", "true");
 
     this.input.setAttribute("open", "true");
     this.input.startLayoutExtend();
 
     this.window.addEventListener("resize", this);
     this.window.addEventListener("blur", this);
-    this._windowOuterWidth = this.window.outerWidth;
 
     this.controller.notify(this.controller.NOTIFICATIONS.VIEW_OPEN);
   }
 
   /**
    * Whether a result is a search suggestion.
    * @param {UrlbarResult} result The result to examine.
    * @returns {boolean} Whether the result is a search suggestion.
@@ -810,31 +729,24 @@ class UrlbarView {
 
   _createRowContent(item) {
     // The url is the only element that can wrap, thus all the other elements
     // are child of noWrap.
     let noWrap = this._createElement("span");
     noWrap.className = "urlbarView-no-wrap";
     item._content.appendChild(noWrap);
 
-    let typeIcon = this._createElement("span");
-    typeIcon.className = "urlbarView-type-icon";
-
-    if (!this.input.megabar) {
-      noWrap.appendChild(typeIcon);
-    }
-
     let favicon = this._createElement("img");
     favicon.className = "urlbarView-favicon";
     noWrap.appendChild(favicon);
     item._elements.set("favicon", favicon);
 
-    if (this.input.megabar) {
-      noWrap.appendChild(typeIcon);
-    }
+    let typeIcon = this._createElement("span");
+    typeIcon.className = "urlbarView-type-icon";
+    noWrap.appendChild(typeIcon);
 
     let title = this._createElement("span");
     title.className = "urlbarView-title";
     noWrap.appendChild(title);
     item._elements.set("title", title);
 
     let tagsContainer = this._createElement("span");
     tagsContainer.className = "urlbarView-tags";
@@ -1569,32 +1481,17 @@ class UrlbarView {
       (event.target.classList.contains("urlbarView-url") ||
         event.target.classList.contains("urlbarView-title"))
     ) {
       this._setElementOverflowing(event.target, false);
     }
   }
 
   _on_resize() {
-    if (this.input.megabar) {
-      this._enableOrDisableRowWrap();
-      return;
-    }
-
-    if (this._windowOuterWidth == this.window.outerWidth) {
-      // Sometimes a resize event is fired when the window's size doesn't
-      // actually change; at least, browser_tabMatchesInAwesomebar.js triggers
-      // it intermittently, which causes that test to hang or fail.  Ignore
-      // those events.
-      return;
-    }
-
-    // Close the popup as it would be wrongly sized. This can
-    // happen when using special OS resize functions like Win+Arrow.
-    this.close();
+    this._enableOrDisableRowWrap();
   }
 }
 
 UrlbarView.removeStaleRowsTimeout = DEFAULT_REMOVE_STALE_ROWS_TIMEOUT;
 
 /**
  * Implements a QueryContext cache, working as a circular buffer, when a new
  * entry is added at the top, the last item is remove from the bottom.
--- a/browser/components/urlbar/tests/browser/browser.ini
+++ b/browser/components/urlbar/tests/browser/browser.ini
@@ -58,17 +58,16 @@ support-files =
 [browser_decode.js]
 [browser_delete.js]
 [browser_deleteAllText.js]
 [browser_display_selectedAction_Extensions.js]
 [browser_dns_first_for_single_words.js]
 skip-if = verify && os == 'linux' # Bug 1581635
 [browser_downArrowKeySearch.js]
 [browser_dragdropURL.js]
-[browser_dropmarker.js]
 [browser_empty_search.js]
 [browser_enter.js]
 [browser_enterAfterMouseOver.js]
 [browser_focusedCmdK.js]
 [browser_hashChangeProxyState.js]
 [browser_heuristicNotAddedFirst.js]
 [browser_ime_composition.js]
 [browser_inputHistory.js]
--- a/browser/components/urlbar/tests/browser/browser_autocomplete_tag_star_visibility.js
+++ b/browser/components/urlbar/tests/browser/browser_autocomplete_tag_star_visibility.js
@@ -139,19 +139,17 @@ add_task(async function() {
       result.tags,
       expected_tags,
       "Should have the expected tag"
     );
 
     if (testcase.expected.typeImageVisible) {
       Assert.equal(
         result.displayed.typeIcon,
-        gURLBar.megabar
-          ? 'url("chrome://browser/skin/bookmark-12.svg")'
-          : 'url("chrome://browser/skin/bookmark.svg")',
+        'url("chrome://browser/skin/bookmark-12.svg")',
         "Should have the star image displayed or not as expected"
       );
     } else {
       Assert.equal(
         result.displayed.typeIcon,
         "none",
         "Should have the star image displayed or not as expected"
       );
--- a/browser/components/urlbar/tests/browser/browser_downArrowKeySearch.js
+++ b/browser/components/urlbar/tests/browser/browser_downArrowKeySearch.js
@@ -68,17 +68,16 @@ add_task(async function empty() {
   await UrlbarTestUtils.promiseSearchComplete(window);
   Assert.equal(UrlbarTestUtils.getSelectedRowIndex(window), -1);
   let details = await UrlbarTestUtils.getDetailsOfResultAt(window, 0);
   Assert.equal(details.url, "http://example.com/");
   Assert.equal(gURLBar.value, "");
 });
 
 add_task(async function new_window() {
-  // The megabar works properly in a new window.
   let win = await BrowserTestUtils.openNewBrowserWindow();
   win.gURLBar.focus();
   EventUtils.synthesizeKey("KEY_ArrowDown", {}, win);
   await UrlbarTestUtils.promiseSearchComplete(win);
   Assert.equal(UrlbarTestUtils.getSelectedRowIndex(win), -1);
   let details = await UrlbarTestUtils.getDetailsOfResultAt(win, 0);
   Assert.equal(details.url, "http://example.com/");
   Assert.equal(win.gURLBar.value, "");
deleted file mode 100644
--- a/browser/components/urlbar/tests/browser/browser_dropmarker.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-"use strict";
-
-add_task(async function setup() {
-  if (gURLBar.dropmarker.hidden) {
-    gURLBar.dropmarker.hidden = false;
-    registerCleanupFunction(() => {
-      gURLBar.dropmarker.hidden = true;
-    });
-  }
-});
-
-add_task(async function basic() {
-  await BrowserTestUtils.withNewTab("http://example.com/", async () => {
-    let queryContext = await clickDropmarker();
-    is(
-      queryContext.searchString,
-      "",
-      "Clicking the history dropmarker should initiate an empty search instead of searching for the loaded URL"
-    );
-    is(
-      gURLBar.untrimmedValue,
-      "http://example.com/",
-      "Clicking the history dropmarker should not change the input value"
-    );
-    await UrlbarTestUtils.promisePopupClose(window, () =>
-      EventUtils.synthesizeKey("KEY_Escape")
-    );
-  });
-});
-
-add_task(async function proxyState() {
-  // Open two tabs.
-  await BrowserTestUtils.withNewTab("about:blank", async browser1 => {
-    await BrowserTestUtils.withNewTab("http://example.com/", async browser2 => {
-      // Click the dropmarker on the second tab and switch back to the first
-      // tab.
-      await clickDropmarker();
-      await UrlbarTestUtils.promisePopupClose(window, () =>
-        EventUtils.synthesizeKey("KEY_Escape")
-      );
-      await BrowserTestUtils.switchTab(
-        gBrowser,
-        gBrowser.getTabForBrowser(browser1)
-      );
-      // Switch back to the second tab.
-      await BrowserTestUtils.switchTab(
-        gBrowser,
-        gBrowser.getTabForBrowser(browser2)
-      );
-      // The proxy state should be valid.
-      Assert.equal(gURLBar.getAttribute("pageproxystate"), "valid");
-    });
-  });
-});
-
-async function clickDropmarker() {
-  await UrlbarTestUtils.promisePopupOpen(window, () => {
-    EventUtils.synthesizeMouseAtCenter(gURLBar.dropmarker, {}, window);
-  });
-  let queryContext = await gURLBar.lastQueryContextPromise;
-  return queryContext;
-}
--- a/browser/components/urlbar/tests/browser/browser_inputHistory_emptystring.js
+++ b/browser/components/urlbar/tests/browser/browser_inputHistory_emptystring.js
@@ -34,19 +34,17 @@ const TEST_URL = "http://example.com/";
 async function do_test(openFn, pickMethod) {
   await BrowserTestUtils.withNewTab(
     {
       gBrowser,
       url: "about:blank",
     },
     async function(browser) {
       await clearInputHistory();
-      if (!(await openFn())) {
-        return;
-      }
+      await openFn();
       await UrlbarTestUtils.promiseSearchComplete(window);
       let promise = BrowserTestUtils.waitForDocLoadAndStopIt(TEST_URL, browser);
       if (pickMethod == "keyboard") {
         info(`Test pressing Enter`);
         EventUtils.sendKey("down");
         EventUtils.sendKey("return");
       } else {
         info("Test with click");
@@ -74,56 +72,34 @@ add_task(async function setup() {
 add_task(async function test_history_no_search_terms() {
   for (let pickMethod of ["keyboard", "mouse"]) {
     // If a testFn returns false, it will be skipped.
     for (let openFn of [
       () => {
         info("Test opening panel with down key");
         gURLBar.focus();
         EventUtils.sendKey("down");
-        return true;
-      },
-      () => {
-        if (gURLBar.dropmarker.hidden) {
-          return false;
-        }
-        info("Test opening panel with history dropmarker");
-        gURLBar.dropmarker.click();
-        return true;
-      },
-      async () => {
-        if (gURLBar.dropmarker.hidden) {
-          return false;
-        }
-        info("Test opening panel with history dropmarker on a page");
-        let selectedBrowser = gBrowser.selectedBrowser;
-        await BrowserTestUtils.loadURI(selectedBrowser, TEST_URL);
-        await BrowserTestUtils.browserLoaded(selectedBrowser);
-        gURLBar.dropmarker.click();
-        return true;
       },
       async () => {
         info("Test opening panel on focus");
         Services.prefs.setBoolPref("browser.urlbar.openViewOnFocus", true);
         gURLBar.blur();
         EventUtils.synthesizeMouseAtCenter(gURLBar.textbox, {});
         Services.prefs.clearUserPref("browser.urlbar.openViewOnFocus");
-        return true;
       },
       async () => {
         info("Test opening panel on focus on a page");
         Services.prefs.setBoolPref("browser.urlbar.openViewOnFocus", true);
         let selectedBrowser = gBrowser.selectedBrowser;
         // A page other than TEST_URL must be loaded, or the first Top Site
         // result will be a switch-to-tab result and page won't be reloaded when
         // the result is selected.
         await BrowserTestUtils.loadURI(selectedBrowser, "http://example.org/");
         await BrowserTestUtils.browserLoaded(selectedBrowser);
         gURLBar.blur();
         EventUtils.synthesizeMouseAtCenter(gURLBar.textbox, {});
         Services.prefs.clearUserPref("browser.urlbar.openViewOnFocus");
-        return true;
       },
     ]) {
       await do_test(openFn, pickMethod);
     }
   }
 });
--- a/browser/components/urlbar/tests/browser/browser_retainedResultsOnFocus.js
+++ b/browser/components/urlbar/tests/browser/browser_retainedResultsOnFocus.js
@@ -1,14 +1,14 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
-// Tests "megabar" redesign approach with retained results.
+// Tests retained results.
 // When there is a pending search (user typed a search string and blurred
 // without picking a result), on focus we should the search results again.
 
 async function checkPanelStatePersists(win, isOpen) {
   // Check for popup events, we should not see any of them because the urlbar
   // popup state should not change. This also ensures we don't cause flickering
   // open/close actions.
   function handler(event) {
@@ -127,17 +127,16 @@ async function test_window(win) {
           win.gURLBar.blur();
         });
       }
     );
   }
 }
 
 add_task(async function test_normalWindow() {
-  // The megabar works properly in a new window.
   let win = await BrowserTestUtils.openNewBrowserWindow();
   await test_window(win);
   await BrowserTestUtils.closeWindow(win);
 });
 
 add_task(async function test_privateWindow() {
   let privateWin = await BrowserTestUtils.openNewBrowserWindow({
     private: true,
--- a/browser/components/urlbar/tests/browser/browser_tabKeyBehavior.js
+++ b/browser/components/urlbar/tests/browser/browser_tabKeyBehavior.js
@@ -5,20 +5,17 @@
 // through toolbar items, depending on the urlbar state.
 // When the view is open, tab should go through results if the urlbar was
 // focused with the mouse, or has a typed string.
 
 "use strict";
 
 add_task(async function init() {
   await SpecialPowers.pushPrefEnv({
-    set: [
-      ["browser.urlbar.update1", true],
-      ["browser.urlbar.openViewOnFocus", true],
-    ],
+    set: [["browser.urlbar.openViewOnFocus", true]],
   });
 
   for (let i = 0; i < UrlbarPrefs.get("maxRichResults"); i++) {
     await PlacesTestUtils.addVisits("http://example.com/" + i);
   }
 
   registerCleanupFunction(PlacesUtils.history.clear);
 });
--- a/browser/components/urlbar/tests/browser/browser_top_sites.js
+++ b/browser/components/urlbar/tests/browser/browser_top_sites.js
@@ -10,17 +10,16 @@ XPCOMUtils.defineLazyModuleGetters(this,
 });
 
 const EN_US_TOPSITES =
   "https://www.youtube.com/,https://www.facebook.com/,https://www.amazon.com/,https://www.reddit.com/,https://www.wikipedia.org/,https://twitter.com/";
 
 add_task(async function init() {
   await SpecialPowers.pushPrefEnv({
     set: [
-      ["browser.urlbar.update1", true],
       ["browser.urlbar.openViewOnFocus", true],
       ["browser.newtabpage.activity-stream.default.sites", EN_US_TOPSITES],
     ],
   });
 
   await updateTopSites(
     sites => sites && sites.length == EN_US_TOPSITES.split(",").length
   );
--- a/browser/components/urlbar/tests/browser/browser_urlbar_event_telemetry.js
+++ b/browser/components/urlbar/tests/browser/browser_urlbar_event_telemetry.js
@@ -498,48 +498,16 @@ const tests = [
         elapsed: val => parseInt(val) > 0,
         numChars: "0",
         selType: "history",
         selIndex: "0",
       },
     };
   },
 
-  async function(win) {
-    info("Open the panel with dropmarker, type something, Enter.");
-    let dropmarkerWasHidden = win.gURLBar.dropmarker.hidden;
-    win.gURLBar.dropmarker.hidden = false;
-    win.gURLBar.select();
-    let promise = BrowserTestUtils.browserLoaded(win.gBrowser.selectedBrowser);
-    await UrlbarTestUtils.promisePopupOpen(win, () => {
-      EventUtils.synthesizeMouseAtCenter(win.gURLBar.dropmarker, {}, win);
-    });
-    await UrlbarTestUtils.promiseAutocompleteResultPopup({
-      window: win,
-      waitForFocus: SimpleTest.waitForFocus,
-      value: "x",
-      fireInputEvent: true,
-    });
-    EventUtils.synthesizeKey("VK_RETURN", {}, win);
-    await promise;
-    win.gURLBar.dropmarker.hidden = dropmarkerWasHidden;
-    return {
-      category: "urlbar",
-      method: "engagement",
-      object: "enter",
-      value: "topsites",
-      extra: {
-        elapsed: val => parseInt(val) > 0,
-        numChars: "1",
-        selType: "search",
-        selIndex: "0",
-      },
-    };
-  },
-
   // The URLs in the openViewOnFocus tests must vary from test to test, else
   // the first Top Site results will be a switch-to-tab result and a page load
   // will not occur.
   async function(win) {
     info(
       "With pageproxystate=valid, open the panel with openViewOnFocus, select with DOWN, Enter."
     );
     await SpecialPowers.pushPrefEnv({
@@ -911,44 +879,16 @@ const tests = [
       extra: {
         elapsed: val => parseInt(val) > 0,
         numChars: "0",
       },
     };
   },
 
   async function(win) {
-    info("Open the panel with dropmarker, type something, blur it.");
-    let dropmarkerWasHidden = win.gURLBar.dropmarker.hidden;
-    win.gURLBar.dropmarker.hidden = false;
-    await BrowserTestUtils.withNewTab(
-      { gBrowser: win.gBrowser, url: "about:blank" },
-      async browser => {
-        win.gURLBar.select();
-        await UrlbarTestUtils.promisePopupOpen(win, () => {
-          EventUtils.synthesizeMouseAtCenter(gURLBar.dropmarker, {}, win);
-        });
-        EventUtils.synthesizeKey("x", {}, win);
-        win.gURLBar.blur();
-      }
-    );
-    win.gURLBar.dropmarker.hidden = dropmarkerWasHidden;
-    return {
-      category: "urlbar",
-      method: "abandonment",
-      object: "blur",
-      value: "topsites",
-      extra: {
-        elapsed: val => parseInt(val) > 0,
-        numChars: "1",
-      },
-    };
-  },
-
-  async function(win) {
     info(
       "With pageproxystate=valid, open the panel with openViewOnFocus, don't type, blur it."
     );
     win.gURLBar.value = "";
     Services.prefs.setBoolPref("browser.urlbar.openViewOnFocus", true);
     await UrlbarTestUtils.promisePopupOpen(win, () => {
       win.document.getElementById("Browser:OpenLocation").doCommand();
     });
--- a/browser/locales/en-US/chrome/browser/browser.dtd
+++ b/browser/locales/en-US/chrome/browser/browser.dtd
@@ -116,18 +116,16 @@ this container is a toolbar. This avoids
 <!ENTITY printButton.label            "Print">
 <!ENTITY printButton.tooltip          "Print this page">
 
 <!ENTITY urlbar.remoteControlNotificationAnchor.tooltip   "Browser is under remote control">
 
 <!ENTITY urlbar.permissionsGranted.tooltip       "You have granted this website additional permissions.">
 
 
-<!ENTITY urlbar.openHistoryPopup.tooltip                "Show history">
-
 <!ENTITY searchItem.title             "Search">
 
 <!-- Toolbar items -->
 <!ENTITY homeButton.label             "Home">
 <!ENTITY homeButton.defaultPage.tooltip "&brandShortName; Home Page">
 
 <!ENTITY bookmarksButton.label          "Bookmarks">
 
--- a/browser/modules/test/browser/browser_UsageTelemetry_urlbar_topsite.js
+++ b/browser/modules/test/browser/browser_UsageTelemetry_urlbar_topsite.js
@@ -83,17 +83,16 @@ async function updateTopSites(condition,
     let sites = AboutNewTab.getTopSites();
     return condition(sites);
   }, "Waiting for top sites to be updated");
 }
 
 add_task(async function setup() {
   await SpecialPowers.pushPrefEnv({
     set: [
-      ["browser.urlbar.update1", true],
       ["browser.urlbar.openViewOnFocus", true],
       ["browser.newtabpage.activity-stream.default.sites", EN_US_TOPSITES],
     ],
   });
   await updateTopSites(
     sites => sites && sites.length == EN_US_TOPSITES.split(",").length
   );
 });
--- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css
@@ -169,18 +169,17 @@ menuitem.bookmark-item {
 #close-button:hover:active {
   background-color: #ff0039;
 }
 
 /* Location bar */
 
 %include ../shared/urlbar-searchbar.inc.css
 
-#urlbar:not(.megabar):not(:-moz-lwtheme):not([focused="true"]),
-#urlbar.megabar:not(:-moz-lwtheme):not([focused="true"]) > #urlbar-background,
+#urlbar:not(:-moz-lwtheme):not([focused="true"]) > #urlbar-background,
 #searchbar:not(:-moz-lwtheme):not(:focus-within) {
   border-color: ThreeDShadow;
 }
 
 /* Identity box */
 
 %include ../shared/identity-block/identity-block.inc.css
 
--- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css
@@ -239,28 +239,16 @@
 #fullscreen-button ~ #window-controls > #restore-button {
   display: none;
 }
 
 /* ::::: nav-bar-inner ::::: */
 
 %include ../shared/urlbar-searchbar.inc.css
 
-@supports not -moz-bool-pref("browser.urlbar.update1") {
-  :root {
-    --toolbar-field-focus-border-color: -moz-mac-focusring;
-  }
-
-  #searchbar:focus-within,
-  #urlbar:not(.megabar)[focused="true"] {
-    box-shadow: 0 0 0 1px var(--toolbar-field-focus-border-color) inset,
-                0 0 0 1px var(--toolbar-field-focus-border-color);
-  }
-}
-
 #urlbar,
 #searchbar {
   font-size: 1.25em;
 }
 
 /* Ensure diacritics and other edge-of-font-box glyphs do not get clipped,
  * even in non-Latin scripts. */
 #urlbar-input {
--- a/browser/themes/shared/urlbar-autocomplete.inc.css
+++ b/browser/themes/shared/urlbar-autocomplete.inc.css
@@ -40,91 +40,58 @@
   --urlbarView-button-background: rgba(249, 249, 250, 0.24);
   --urlbarView-button-background-hover: rgba(249, 249, 250, 0.15);
   --urlbarView-button-background-active: rgba(249, 249, 250, 0.2);
 }
 
 .urlbarView {
   /* Don't handle window drag events in case we are overlapping a toolbar */
   -moz-window-dragging: no-drag;
+
+  display: block;
   text-shadow: none;
   overflow: -moz-hidden-unscrollable;
-}
-
-.urlbarView.megabar {
   margin-inline: @urlbarViewMarginInline@;
   width: calc(100% - 2 * @urlbarViewMarginInline@);
+
   /* Match urlbar-background's border. */
   border-inline: 1px solid transparent;
+
   /* Offsets the toolbar overlap so the view's top border aligns with the
      toolbar. */
   margin-block-start: -@urlbarBreakoutExtend@;
 }
 
-.urlbarView {
-  display: block;
-}
-
-.urlbarView.megabar .urlbarView-body-inner {
+.urlbarView-body-inner {
   width: 100%;
   border-top: 1px solid var(--urlbar-separator-color);
 }
 
-.urlbarView:not(.megabar) {
-  position: fixed;
-  z-index: 3;
-  inset-inline: 0;
-  background: var(--autocomplete-popup-background);
-  color: var(--autocomplete-popup-color);
-  border-block: 1px solid var(--chrome-content-separator-color);
-  box-shadow: 0 5px 18px rgba(0, 0, 0, .2);
-}
-
 .urlbarView-results {
   padding-block: @urlbarViewPadding@;
   white-space: nowrap;
 }
 
-.urlbarView:not(.megabar) .urlbarView-results {
-  padding-inline: @urlbarViewPadding@;
-}
-
 .urlbarView-row {
   fill: currentColor;
   fill-opacity: .6;
   padding-block: 3px;
 }
 
-.urlbarView:not(.megabar) .urlbarView-row,
-.urlbarView.megabar .urlbarView-row-inner {
+.urlbarView-row-inner {
   border-radius: 2px;
   padding-inline-start: @urlbarViewItemInlinePadding@;
-}
-
-.urlbarView:not(.megabar) .urlbarView-row:not([type=tip]),
-.urlbarView.megabar .urlbarView-row-inner {
   padding-block: 6px;
 }
 
-.urlbarView:not(.megabar) .urlbarView-row {
-  padding-inline-start: calc(var(--item-padding-start, calc(5px + @urlbarViewFaviconOffset@)) - @urlbarViewFaviconOffset@);
-  padding-inline-end: var(--item-padding-end, 5px);
-}
-
 :root[uidensity=touch] .urlbarView-row:not([type=tip]) {
   padding-block: 11px;
 }
 
-.urlbarView:not(.megabar) .urlbarView-row[type=tip] {
-  padding-block-start: 24px;
-  /* Compensating for the 16px bottom margin on the tip elements. */
-  padding-block-end: calc(24px - 16px);
-}
-
-.urlbarView.megabar .urlbarView-row[type=tip] {
+.urlbarView-row[type=tip] {
   padding-block-start: 18px;
   /* Compensating for the 16px bottom margin on the tip elements. */
   padding-block-end: calc(18px - 16px);
   /* Compensating for the 4px focus ring on tip buttons. */
   padding-inline-end: calc(@urlbarViewItemInlinePadding@ + 4px);
 }
 
 .urlbarView-row-inner,
@@ -142,40 +109,40 @@
      but the url should never disappear when it's visible */
   flex-shrink: 0;
   max-width: calc(70% - 2 * (16px + (6px + 2px)));
 }
 
 /* Wrap the url to a second line when the window is narrow. Do not wrap when the
    window is also short, because fewer results will be shown. */
 @media screen and (min-height: 600px) {
-  .urlbarView.megabar .urlbarView-results[wrap] > .urlbarView-row > .urlbarView-row-inner {
+  .urlbarView-results[wrap] > .urlbarView-row > .urlbarView-row-inner {
     flex-wrap: wrap;
   }
-  .urlbarView.megabar .urlbarView-results[wrap] > .urlbarView-row > .urlbarView-row-inner > .urlbarView-no-wrap {
+  .urlbarView-results[wrap] > .urlbarView-row > .urlbarView-row-inner > .urlbarView-no-wrap {
     max-width: 100% !important;
     flex-basis: 100%;
   }
-  .urlbarView.megabar .urlbarView-results[wrap] > .urlbarView-row[has-url] > .urlbarView-row-inner > .urlbarView-url {
+  .urlbarView-results[wrap] > .urlbarView-row[has-url] > .urlbarView-row-inner > .urlbarView-url {
     margin-top: 2px;
     padding-inline-start: calc(@urlbarViewItemInlinePadding@ + @identityBoxMarginInlineEnd@ + /* favicon */ 16px);
   }
   /* Note: switchtab entries show the url only in override mode,
      remotetab only when selected or :hover */
-  .urlbarView.megabar[actionoverride] .urlbarView-results[wrap] > .urlbarView-row[has-url] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator,
-  .urlbarView.megabar .urlbarView-results[wrap] > .urlbarView-row[has-url]:not([type$=tab]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator,
-  .urlbarView.megabar .urlbarView-results[wrap] > .urlbarView-row[type=remotetab]:-moz-any(:hover, [selected]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator {
+  .urlbarView[actionoverride] .urlbarView-results[wrap] > .urlbarView-row[has-url] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator,
+  .urlbarView-results[wrap] > .urlbarView-row[has-url]:not([type$=tab]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator,
+  .urlbarView-results[wrap] > .urlbarView-row[type=remotetab]:-moz-any(:hover, [selected]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title-separator {
     display: none;
   }
 }
 
 /* We should always wrap tip results at narrow widths regardless of screen
    height. Unlike regular results, unwrapped tips are taller than wrapped
    tips. */
-.urlbarView.megabar .urlbarView-results[wrap] > .urlbarView-row[type=tip] > .urlbarView-row-inner {
+.urlbarView-results[wrap] > .urlbarView-row[type=tip] > .urlbarView-row-inner {
   flex-wrap: wrap;
 }
 
 .urlbarView-row:not([type=tip]) > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-title[overflow],
 .urlbarView-url[overflow] {
   mask-image: linear-gradient(to left, transparent, black 2em);
 }
 
@@ -183,64 +150,55 @@
   mask-image: linear-gradient(to right, transparent, black 2em);
 }
 
 .urlbarView-title[isurl]:-moz-locale-dir(rtl),
 .urlbarView-url:-moz-locale-dir(rtl) {
   direction: ltr !important;
 }
 
-.urlbarView:not(.megabar) .urlbarView-row:not([type=tip]):hover,
-.urlbarView.megabar .urlbarView-row:not([type=tip]):hover > .urlbarView-row-inner {
+.urlbarView-row:not([type=tip]):hover > .urlbarView-row-inner {
   background: var(--arrowpanel-dimmed);
 }
 
-.urlbarView:not(.megabar) .urlbarView-row:not([type=tip])[selected],
-.urlbarView.megabar .urlbarView-row:not([type=tip])[selected] > .urlbarView-row-inner {
+.urlbarView-row:not([type=tip])[selected] > .urlbarView-row-inner {
   background: var(--autocomplete-popup-highlight-background);
   color: var(--autocomplete-popup-highlight-color);
   fill-opacity: 1;
 }
 
-.urlbarView-type-icon,
 .urlbarView-favicon {
   min-width: 16px;
   height: 16px;
+  margin-inline-end: calc(@urlbarViewIconMarginEnd@);
   background-repeat: no-repeat;
   background-size: contain;
   -moz-context-properties: fill, fill-opacity;
 }
 
-.urlbarView:not(.megabar) .urlbarView-type-icon,
-.urlbarView-favicon {
-  margin-inline-end: calc(@urlbarViewIconMarginEnd@);
-}
-
-.urlbarView.megabar .urlbarView-type-icon {
+.urlbarView-type-icon {
   position: absolute;
   min-width: 12px;
   height: 12px;
   margin-bottom: -4px;
   margin-inline-start: 8px;
+  background-repeat: no-repeat;
+  background-size: contain;
   -moz-context-properties: fill, stroke;
 }
 
 .urlbarView-row[type=tip] > .urlbarView-row-inner > .urlbarView-favicon {
   min-width: 24px;
   height: 24px;
   margin-inline-end: 12px;
   flex-basis: 24px;
   flex-grow:  0;
   flex-shrink: 0;
 }
 
-.urlbarView:not(.megabar) .urlbarView-row[type=tip] > .urlbarView-row-inner > .urlbarView-favicon {
-  margin-inline-start: calc(12px + @urlbarViewIconMarginEnd@);
-}
-
 /* The help icon is a standard Photon ghost button. */
 .urlbarView-tip-help {
   min-width: 16px;
   height: 32px;
   background-image: url("chrome://global/skin/icons/help.svg");
   background-size: 16px;
   background-position: center;
   background-repeat: no-repeat;
@@ -263,44 +221,38 @@
 
 @media (min-resolution: 2dppx) {
   .urlbarView-type-icon,
   .urlbarView-favicon {
       transform: translateY(-1.5px);
   }
 }
 
-.urlbarView.megabar .urlbarView-row[type=bookmark] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
+.urlbarView-row[type=bookmark] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
   background-image: url(chrome://browser/skin/bookmark-12.svg);
   color: #0060df; /* Blue-60 */
   stroke: #fff;
 }
 
-.urlbarView.megabar .urlbarView-row[type=remotetab] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon,
-.urlbarView.megabar:not([actionoverride]) .urlbarView-row[type=switchtab] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
+.urlbarView-row[type=remotetab] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
   background-image: url(chrome://browser/skin/tab-12.svg);
   color: #008eaf; /* Teal-70 */
   stroke: #fff;
 }
 
-:root[lwt-toolbar-field-brighttext] .urlbarView.megabar .urlbarView-row[type=bookmark] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
+:root[lwt-toolbar-field-brighttext] .urlbarView-row[type=bookmark] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
   color: #0a84ff; /* Blue-50 */
   stroke: #38383d; /* Grey-70 */
 }
 
-:root[lwt-toolbar-field-brighttext] .urlbarView.megabar .urlbarView-row[type=remotetab] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon,
-:root[lwt-toolbar-field-brighttext] .urlbarView.megabar:not([actionoverride]) .urlbarView-row[type=switchtab] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
+:root[lwt-toolbar-field-brighttext] .urlbarView-row[type=remotetab] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
   color: #00c8d7; /* Teal-60 */
   stroke: #38383d; /* Grey-70 */
 }
 
-.urlbarView-row[type=bookmark] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
-  background-image: url(chrome://browser/skin/bookmark.svg);
-}
-
 .urlbarView-row[type=remotetab] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon,
 .urlbarView:not([actionoverride]) .urlbarView-row[type=switchtab] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
   background-image: url(chrome://browser/skin/tab.svg);
 }
 
 .urlbarView-row[type=tip]:not(:last-child) {
   border-bottom: 1px solid var(--panel-separator-color);
   margin-bottom: 4px;
@@ -313,23 +265,16 @@
 
 .urlbarView-row[type=tip] > .urlbarView-row-inner {
   display: flex;
   align-items: center;
   min-height: 32px;
   width: 100%;
 }
 
-/* For non-megabar tips in narrow windows, wrap the buttons below the text. */
-@media screen and (max-width: 800px) {
-  .urlbarView:not(.megabar) .urlbarView-row[type=tip] > .urlbarView-row-inner {
-    flex-wrap: wrap;
-  }
-}
-
 /* For tips, give the title some bottom margin so that when the window is narrow
    and the buttons wrap below it, there's space between it and the buttons.  We
    then need to give the same bottom margin to the other tip elements so that
    they all remain vertically aligned. */
 .urlbarView-row[type=tip] > .urlbarView-row-inner > .urlbarView-favicon,
 .urlbarView-row[type=tip] > .urlbarView-row-inner > .urlbarView-title,
 .urlbarView-tip-button,
 .urlbarView-tip-help {
@@ -393,43 +338,32 @@
      tip buttons wrap around under it.  We want the icon and title to remain on
      one line.  So make the title's flex-basis the width of the parent minus the
      width of the icon. */
   flex-basis: calc(100% - /* .urlbarView-row-inner padding-inline-start */ 6px - /* .urlbarView-favicon width */ 24px - /* .urlbarView-favicon margin-inline-end */ 12px);
   flex-grow: 1;
   flex-shrink: 1;
 }
 
-.urlbarView:not(.megabar) .urlbarView-row[type=tip] > .urlbarView-row-inner > .urlbarView-title {
-  flex-basis: calc(100% - /* .urlbarView-favicon margin-inline-start */ (12px + @urlbarViewIconMarginEnd@) - /* .urlbarView-favicon width */ 24px - /* .urlbarView-favicon margin-inline-end */ 12px);
-}
-
 .urlbarView-title-separator::before {
   content: "\2014";
   margin: 0 .4em;
   opacity: 0.6;
 }
 
 .urlbarView-title:empty + .urlbarView-tags:empty + .urlbarView-title-separator {
   display: none;
 }
 
 .urlbarView-tags,
 .urlbarView-url,
 .urlbarView-title:not(:empty) ~ .urlbarView-action {
   font-size: .85em;
 }
 
-/* The megabar uses full bold weight (700). */
-.urlbarView:not(.megabar) .urlbarView-title > strong,
-.urlbarView:not(.megabar) .urlbarView-url > strong,
-.urlbarView:not(.megabar) .urlbarView-tag > strong {
-  font-weight: 600;
-}
-
 .urlbarView-title:not(:empty) ~ .urlbarView-action {
   color: var(--urlbar-popup-action-color);
 }
 
 .urlbarView-url {
   overflow: hidden;
   color: var(--urlbar-popup-url-color);
 }
@@ -475,21 +409,16 @@
 /* Search one-offs. */
 #urlbar .search-one-offs:not([hidden]) {
   display: flex;
   align-items: start;
   padding-block: 16px;
   flex-wrap: wrap;
 }
 
-#urlbar:not(.megabar) .search-one-offs {
-  padding-inline-start: calc(var(--item-padding-start, 5px) - /* icon padding */ 8px);
-  padding-inline-end: var(--item-padding-end, 5px);
-}
-
 #urlbar .search-panel-one-offs-container {
   /* Make sure horizontally we can fit four buttons, empty space, settings. */
   min-width: calc(4 * /* one-off with end margin */ 40px + /* settings with start margin */ 56px);
 }
 
 #urlbar .search-panel-header {
   padding: 0;
   min-height: 32px;
--- a/browser/themes/shared/urlbar-searchbar.inc.css
+++ b/browser/themes/shared/urlbar-searchbar.inc.css
@@ -34,18 +34,17 @@
 
 #urlbar,
 #searchbar {
   min-height: 30px;
   text-shadow: none;
   color: -moz-FieldText;
 }
 
-#urlbar:not(.megabar),
-#urlbar.megabar > #urlbar-background,
+#urlbar-background,
 #searchbar {
   background-color: -moz-Field;
   background-clip: padding-box;
   border: 1px solid @fieldBorderColor@;
   border-radius: var(--toolbarbutton-border-radius);
   box-shadow: 0 1px 4px rgba(0,0,0,.05);
 }
 
@@ -61,65 +60,58 @@
   -moz-box-flex: 1;
   background-color: transparent;
   color: inherit;
   border: none;
   margin: 0;
   padding: 0;
 }
 
-#urlbar:not(.megabar):not([focused="true"]):hover,
-#urlbar.megabar:not([focused="true"]):hover > #urlbar-background,
+#urlbar:not([focused="true"]):hover > #urlbar-background,
 #searchbar:not(:focus-within):hover {
   border-color: @fieldHoverBorderColor@;
   box-shadow: 0 1px 6px rgba(0,0,0,.1);
 }
 
-#urlbar:not(.megabar)[focused="true"],
-#urlbar.megabar[focused="true"] > #urlbar-background,
+#urlbar[focused="true"] > #urlbar-background,
 #searchbar:focus-within {
   border-color: var(--toolbar-field-focus-border-color);
 }
 
 #urlbar:-moz-lwtheme,
 #navigator-toolbox #searchbar:-moz-lwtheme {
   color: var(--lwt-toolbar-field-color, black);
 }
 
-#urlbar:not(.megabar):-moz-lwtheme,
-#urlbar.megabar:-moz-lwtheme > #urlbar-background,
+#urlbar:-moz-lwtheme > #urlbar-background,
 #navigator-toolbox #searchbar:-moz-lwtheme {
   background-color: var(--lwt-toolbar-field-background-color, hsla(0,0%,100%,.8));
 }
 
-#urlbar:not(.megabar):not([focused="true"]):-moz-lwtheme,
-#urlbar.megabar:not([focused="true"]):-moz-lwtheme > #urlbar-background,
+#urlbar:not([focused="true"]):-moz-lwtheme > #urlbar-background,
 #navigator-toolbox #searchbar:not(:focus-within):-moz-lwtheme {
   border-color: var(--lwt-toolbar-field-border-color, @fieldBorderColor@);
 }
 
-#urlbar:not(.megabar):not([focused="true"]):-moz-lwtheme:hover,
-#urlbar.megabar:not([focused="true"]):-moz-lwtheme:hover > #urlbar-background,
+#urlbar:not([focused="true"]):-moz-lwtheme:hover > #urlbar-background,
 #navigator-toolbox #searchbar:not(:focus-within):-moz-lwtheme:hover {
   border-color: var(--lwt-toolbar-field-border-color, @fieldHoverBorderColor@);
 }
 
-#urlbar:not(.megabar):-moz-lwtheme:hover,
-#urlbar.megabar:-moz-lwtheme:hover > #urlbar-background,
+#urlbar:-moz-lwtheme:hover > #urlbar-background,
 #navigator-toolbox #searchbar:-moz-lwtheme:hover {
   background-color: var(--lwt-toolbar-field-background-color, white);
 }
 
 #urlbar[focused="true"]:-moz-lwtheme,
 #navigator-toolbox #searchbar:focus-within:-moz-lwtheme {
   color: var(--lwt-toolbar-field-focus-color);
 }
 
-#urlbar:not(.megabar)[focused="true"]:-moz-lwtheme,
-#urlbar.megabar[focused="true"]:-moz-lwtheme > #urlbar-background,
+#urlbar[focused="true"]:-moz-lwtheme > #urlbar-background,
 #navigator-toolbox #searchbar:focus-within:-moz-lwtheme {
   background-color: var(--lwt-toolbar-field-focus);
 }
 
 :root[lwt-selection] #urlbar-input:-moz-lwtheme::selection,
 :root[lwt-selection] .searchbar-textbox:-moz-lwtheme::selection {
   background-color: var(--lwt-toolbar-field-highlight, Highlight);
   color: var(--lwt-toolbar-field-highlight-text, HighlightText);
@@ -144,34 +136,34 @@
 }
 
 /**
  * The urlbar background is a separate element so we can animate it
  * independently from the content. It's positioned absolutely and stretched to
  * the bounds of the urlbar.
  */
 
-#urlbar.megabar,
-#urlbar.megabar > #urlbar-input-container,
-#urlbar.megabar > .urlbarView {
+#urlbar,
+#urlbar-input-container,
+.urlbarView {
   position: relative;
 }
 
-#urlbar.megabar > #urlbar-background {
+#urlbar-background {
   display: block;
   position: absolute;
   inset: 0;
 }
 
 :root:not([chromehidden~="toolbar"]) #urlbar.searchButton:not([breakout]) > #urlbar-background,
 :root:not([chromehidden~="toolbar"]) #urlbar.searchButton:not([breakout-extend]) > #urlbar-background {
   inset-inline-start: @urlbarSearchButtonWidth@;
 }
 
-#urlbar.megabar > #urlbar-input-container {
+#urlbar-input-container {
   /* Match urlbar-background's border. */
   border: 1px solid transparent;
 }
 
 #urlbar-container[breakout] {
   position: relative;
   min-height: var(--urlbar-container-height);
 }
@@ -186,17 +178,17 @@
 }
 
 #urlbar[breakout] > #urlbar-input-container {
   width: 100%;
   height: 100%;
 }
 
 #urlbar:not([open]) > .urlbarView,
-#urlbar.megabar:not([breakout]) > .urlbarView {
+#urlbar:not([breakout]) > .urlbarView {
   display: none;
 }
 
 #urlbar[breakout][breakout-extend],
 #urlbar[breakout][breakout-extend-disabled][open] {
   /* The z-index needs to be big enough to trump other positioned UI pieces
      that we want to overlay. 3 is used in the tab bar. */
   z-index: 3;
@@ -490,29 +482,16 @@
   list-style-image: url("chrome://browser/skin/forward.svg");
 }
 
 #urlbar-go-button:-moz-locale-dir(rtl),
 .search-go-button:-moz-locale-dir(rtl) {
   transform: scaleX(-1);
 }
 
-.urlbar-history-dropmarker {
-  list-style-image: url(chrome://global/skin/icons/arrow-dropdown-16.svg);
-  transition: opacity 0.15s ease;
-}
-
-#urlbar[switchingtabs] > #urlbar-input-container > .urlbar-history-dropmarker {
-  transition: none;
-}
-
-#nav-bar:not([customizing="true"]) > #nav-bar-customization-target > #urlbar-container:not(:hover) > #urlbar:not([focused]) > #urlbar-input-container > .urlbar-history-dropmarker {
-  opacity: 0;
-}
-
 #pageActionButton,
 .share-more-button {
   list-style-image: url("chrome://global/skin/icons/more.svg");
 }
 
 @keyframes bookmark-animation {
   from {
     transform: translateX(0);
@@ -786,27 +765,16 @@
 }
 #cfr-label:-moz-locale-dir(rtl) {
   mask-position-x: calc(var(--cfr-label-width) * -1);
 }
 #urlbar[cfr-recommendation-state="expanded"] #cfr-label {
   mask-position-x: 0;
 }
 
-/* Translate the dropmarker to give illusion of increasing width of the recommendation  */
-#urlbar[cfr-recommendation-state] .urlbar-history-dropmarker {
-  transition: transform ease-in-out var(--cfr-animation-duration);
-}
-#urlbar[cfr-recommendation-state="expanded"] .urlbar-history-dropmarker {
-  transform: translateX(calc(var(--cfr-label-width) * -1));
-}
-#urlbar[cfr-recommendation-state="expanded"] .urlbar-history-dropmarker:-moz-locale-dir(rtl) {
-  transform: translateX(calc(var(--cfr-label-width)));
-}
-
 /* Shift the url-bar text fading to stop the recommendation overlapping */
 #urlbar[cfr-recommendation-state] #urlbar-input {
   /* A mask-image is usually only defined for the url bar when text overflows.
      We need to re-define the mask image here so that it shows up correctly when
      we transition to or from an `expanded` state (in which the right end of the
      url bar may be obscured without overflow). */
   mask-image: linear-gradient(to left, transparent, black 3ch);
   transition: mask-position-x ease-in-out var(--cfr-animation-duration);
--- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css
@@ -505,18 +505,17 @@ menuitem.bookmark-item {
 %include ../shared/urlbar-searchbar.inc.css
 
 #urlbar,
 #searchbar {
   font-size: 1.15em;
 }
 
 @media (-moz-windows-default-theme: 0) {
-  #urlbar:not(.megabar):not(:-moz-lwtheme):not([focused="true"]),
-  #urlbar.megabar:not(:-moz-lwtheme):not([focused="true"]) > #urlbar-background,
+  #urlbar:not(:-moz-lwtheme):not([focused="true"]) > #urlbar-background,
   #searchbar:not(:-moz-lwtheme):not(:focus-within) {
     border-color: ThreeDShadow;
   }
 }
 
 #pageAction-urlbar-shareURL,
 #pageAction-panel-shareURL {
   list-style-image: url("chrome://browser/skin/share.svg");
--- a/toolkit/components/extensions/test/browser/browser_ext_themes_autocomplete_popup.js
+++ b/toolkit/components/extensions/test/browser/browser_ext_themes_autocomplete_popup.js
@@ -96,54 +96,21 @@ add_task(async function test_popup_url()
   await UrlbarTestUtils.waitForAutocompleteResultAt(window, maxResults - 1);
 
   Assert.equal(
     UrlbarTestUtils.getResultCount(window),
     maxResults,
     "Should get maxResults=" + maxResults + " results"
   );
 
-  let popup = gURLBar.view.panel;
-
-  if (!gURLBar.megabar) {
-    // The urlbar popup supports these colors only with the legacy non-megabar
-    // design. With megabar, the popup visually extends the textbox and use its
-    // colors.
-    let popupCS = window.getComputedStyle(popup);
-
-    Assert.equal(
-      popupCS.backgroundColor,
-      `rgb(${hexToRGB(POPUP_COLOR).join(", ")})`,
-      `Popup background color should be set to ${POPUP_COLOR}`
-    );
-
-    Assert.equal(
-      popupCS.borderBottomColor,
-      `rgb(${hexToRGB(CHROME_CONTENT_SEPARATOR_COLOR).join(", ")})`,
-      `Popup bottom color should be set to ${CHROME_CONTENT_SEPARATOR_COLOR}`
-    );
-
-    Assert.equal(
-      popupCS.color,
-      `rgb(${hexToRGB(POPUP_TEXT_COLOR_DARK).join(", ")})`,
-      `Popup color should be set to ${POPUP_TEXT_COLOR_DARK}`
-    );
-  }
-
   // Set the selected attribute to true to test the highlight popup properties
   UrlbarTestUtils.setSelectedRowIndex(window, 1);
   let actionResult = await UrlbarTestUtils.getDetailsOfResultAt(window, 0);
   let urlResult = await UrlbarTestUtils.getDetailsOfResultAt(window, 1);
-  let resultCS;
-  if (gURLBar.megabar) {
-    // The megabar styles the highlight on the urlbarView-row-inner element.
-    resultCS = window.getComputedStyle(urlResult.element.row._content);
-  } else {
-    resultCS = window.getComputedStyle(urlResult.element.row);
-  }
+  let resultCS = window.getComputedStyle(urlResult.element.row._content);
 
   Assert.equal(
     resultCS.backgroundColor,
     `rgb(${hexToRGB(POPUP_SELECTED_COLOR).join(", ")})`,
     `Popup highlight background color should be set to ${POPUP_SELECTED_COLOR}`
   );
 
   Assert.equal(
@@ -207,27 +174,16 @@ add_task(async function test_popup_url()
     },
     files: {
       "image1.png": BACKGROUND,
     },
   });
 
   await extension.startup();
 
-  if (!gURLBar.megabar) {
-    // The urlbar popup supports this color only with the legacy non-megabar
-    // design. With megabar, the popup visually extends the textbox and use its
-    // colors.
-    Assert.equal(
-      window.getComputedStyle(popup).color,
-      `rgb(${hexToRGB(POPUP_TEXT_COLOR_BRIGHT).join(", ")})`,
-      `Popup color should be set to ${POPUP_TEXT_COLOR_BRIGHT}`
-    );
-  }
-
   Assert.equal(
     window.getComputedStyle(urlResult.element.url).color,
     `rgb(${hexToRGB(POPUP_URL_COLOR_BRIGHT).join(", ")})`,
     `Urlbar popup url color should be set to ${POPUP_URL_COLOR_BRIGHT}`
   );
 
   Assert.equal(
     window.getComputedStyle(actionResult.element.action).color,
--- a/toolkit/components/extensions/test/browser/browser_ext_themes_toolbar_fields.js
+++ b/toolkit/components/extensions/test/browser/browser_ext_themes_toolbar_fields.js
@@ -45,19 +45,17 @@ add_task(async function test_support_too
   let root = document.documentElement;
   // Remove the `remotecontrol` attribute since it interferes with the urlbar styling.
   root.removeAttribute("remotecontrol");
   registerCleanupFunction(() => {
     root.setAttribute("remotecontrol", "true");
   });
 
   let fields = [
-    gURLBar.megabar
-      ? document.querySelector("#urlbar-background")
-      : gURLBar.textbox,
+    document.querySelector("#urlbar-background"),
     BrowserSearch.searchBar,
   ].filter(field => {
     let bounds = field.getBoundingClientRect();
     return bounds.width > 0 && bounds.height > 0;
   });
 
   Assert.equal(fields.length, 2, "Should be testing two elements");
 
--- a/toolkit/components/extensions/test/browser/browser_ext_themes_toolbar_fields_focus.js
+++ b/toolkit/components/extensions/test/browser/browser_ext_themes_toolbar_fields_focus.js
@@ -30,19 +30,17 @@ add_task(async function test_toolbar_fie
       },
     },
   });
 
   await extension.startup();
 
   info("Checking toolbar field's focus color");
 
-  let urlBar = gURLBar.megabar
-    ? document.querySelector("#urlbar-background")
-    : gURLBar.textbox;
+  let urlBar = document.querySelector("#urlbar-background");
   gURLBar.textbox.setAttribute("focused", "true");
 
   Assert.equal(
     window.getComputedStyle(urlBar).backgroundColor,
     `rgb(${hexToRGB(TOOLBAR_FOCUS_BACKGROUND).join(", ")})`,
     "Background Color is changed"
   );
   Assert.equal(
@@ -82,19 +80,17 @@ add_task(async function test_toolbar_fie
         },
       },
     },
   });
 
   await extension.startup();
   gURLBar.textbox.setAttribute("focused", "true");
 
-  let urlBar = gURLBar.megabar
-    ? document.querySelector("#urlbar-background")
-    : gURLBar.textbox;
+  let urlBar = document.querySelector("#urlbar-background");
   Assert.equal(
     window.getComputedStyle(urlBar).backgroundColor,
     `rgba(0, 0, 255, 0.9)`,
     "Background color has minimum opacity enforced"
   );
   Assert.equal(
     window.getComputedStyle(urlBar).color,
     `rgb(255, 255, 255)`,