@@ -702,11 +702,12 @@ HttpObserverManager = {
702702 ) {
703703 channel . suspended = false ;
704704 channel . cancel ( Cr . NS_ERROR_ABORT ) ;
705+ const { finalURL, originURL } = channel ;
705706 const { gBrowser, openLinkIn, openTrustedLinkIn } = channel . browserElement . ownerGlobal ;
706- const { selectedTab, _tabs : tabs = [ ] } = gBrowser ;
707+ const { selectedTab, tabs = [ ] } = gBrowser ;
707708 const freshTabURL = CliqzResources . getFreshTabUrl ( ) ;
708709 const otherWin = openLinkIn (
709- channel . finalURL ,
710+ finalURL ,
710711 "window" ,
711712 {
712713 fromChrome : true ,
@@ -719,16 +720,38 @@ HttpObserverManager = {
719720 this . handleForgetModeNotification ( otherWin ) ;
720721 }
721722
722- const { originURL } = channel ;
723- if (
724- originURL === freshTabURL ||
725- originURL === ''
726- ) {
723+ const isSecondaryTab = tabs . find ( t => t . owner == selectedTab ) ;
724+ let isSecondaryWindow = false ;
725+ try {
726+ const { BrowserWindowTracker } = ChromeUtils . import ( "resource:///modules/BrowserWindowTracker.jsm" ) ;
727+ BrowserWindowTracker . orderedWindows . forEach ( w => {
728+ if ( w . gBrowser . tabs [ 0 ] . _fullLabel === originURL ) {
729+ w . gBrowser . removeTab ( tabs [ 0 ] ) ;
730+ isSecondaryWindow = true ;
731+ }
732+ } ) ;
733+ } catch ( e ) {
734+ // Hopefully it never enters here.
735+ }
736+
737+ if ( isSecondaryTab ) {
738+ gBrowser . removeTab ( isSecondaryTab ) ;
739+ } else if ( ! isSecondaryWindow ) {
727740 if ( tabs . length === 1 ) {
728741 openTrustedLinkIn ( freshTabURL , "tab" ) ;
729742 }
730743 gBrowser . removeTab ( selectedTab ) ;
731744 }
745+
746+ try {
747+ if ( originURL && originURL !== "" && originURL !== finalURL ) {
748+ const { History } = ChromeUtils . import ( "resource://gre/modules/History.jsm" ) ;
749+ History . remove ( originURL ) ;
750+ }
751+ } catch ( e ) {
752+ // Hopefully it never enters here.
753+ }
754+
732755 return true ;
733756 }
734757 return false ;
0 commit comments