diff options
| author | Stephen Blott | 2017-10-27 09:25:16 +0100 |
|---|---|---|
| committer | GitHub | 2017-10-27 09:25:16 +0100 |
| commit | 6f48cd04e7edcbc390c3253e9b95493249f4bb61 (patch) | |
| tree | 64723b1c8c851e886fe624734c86254de56fe4c4 | |
| parent | 03569d64b445780576f960d0553dc763c807de95 (diff) | |
| parent | 4cce9de9075474153a8299ab7430156bd6d194a9 (diff) | |
| download | vimium-6f48cd04e7edcbc390c3253e9b95493249f4bb61.tar.bz2 | |
Merge pull request #2742 from mrmr1993/ff-fix-fb
Add global objects to window.root, re-add to window on DOMLoad
| -rw-r--r-- | content_scripts/hud.coffee | 3 | ||||
| -rw-r--r-- | content_scripts/link_hints.coffee | 3 | ||||
| -rw-r--r-- | content_scripts/marks.coffee | 3 | ||||
| -rw-r--r-- | content_scripts/mode.coffee | 3 | ||||
| -rw-r--r-- | content_scripts/mode_find.coffee | 3 | ||||
| -rw-r--r-- | content_scripts/mode_insert.coffee | 3 | ||||
| -rw-r--r-- | content_scripts/mode_key_handler.coffee | 3 | ||||
| -rw-r--r-- | content_scripts/mode_visual.coffee | 3 | ||||
| -rw-r--r-- | content_scripts/scroller.coffee | 3 | ||||
| -rw-r--r-- | content_scripts/ui_component.coffee | 3 | ||||
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 27 | ||||
| -rw-r--r-- | content_scripts/vomnibar.coffee | 3 | ||||
| -rw-r--r-- | lib/clipboard.coffee | 3 | ||||
| -rw-r--r-- | lib/dom_utils.coffee | 3 | ||||
| -rw-r--r-- | lib/find_mode_history.coffee | 3 | ||||
| -rw-r--r-- | lib/handler_stack.coffee | 3 | ||||
| -rw-r--r-- | lib/keyboard_utils.coffee | 3 | ||||
| -rw-r--r-- | lib/rect.coffee | 3 | ||||
| -rw-r--r-- | lib/settings.coffee | 3 | ||||
| -rw-r--r-- | lib/utils.coffee | 5 |
20 files changed, 58 insertions, 28 deletions
diff --git a/content_scripts/hud.coffee b/content_scripts/hud.coffee index c2170914..6185d786 100644 --- a/content_scripts/hud.coffee +++ b/content_scripts/hud.coffee @@ -127,5 +127,6 @@ class Tween } """ -root = exports ? window +root = exports ? (window.root ?= {}) root.HUD = HUD +extend window, root unless exports? diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee index f3e0ac84..8b5bb8d9 100644 --- a/content_scripts/link_hints.coffee +++ b/content_scripts/link_hints.coffee @@ -897,8 +897,9 @@ class WaitForEnter extends Mode @exit() callback false # false -> isSuccess. -root = exports ? window +root = exports ? (window.root ?= {}) root.LinkHints = LinkHints root.HintCoordinator = HintCoordinator # For tests: extend root, {LinkHintsMode, LocalHints, AlphabetHints, WaitForEnter} +extend window, root unless exports? diff --git a/content_scripts/marks.coffee b/content_scripts/marks.coffee index 6eab3be6..55f3137c 100644 --- a/content_scripts/marks.coffee +++ b/content_scripts/marks.coffee @@ -84,5 +84,6 @@ Marks = @showMessage "Local mark not set", keyChar DomUtils.consumeKeyup event -root = exports ? window +root = exports ? (window.root ?= {}) root.Marks = Marks +extend window, root unless exports? diff --git a/content_scripts/mode.coffee b/content_scripts/mode.coffee index 9de423ff..2057d093 100644 --- a/content_scripts/mode.coffee +++ b/content_scripts/mode.coffee @@ -209,5 +209,6 @@ class SuppressAllKeyboardEvents extends Mode suppressAllKeyboardEvents: true super extend defaults, options -root = exports ? window +root = exports ? (window.root ?= {}) extend root, {Mode, SuppressAllKeyboardEvents} +extend window, root unless exports? diff --git a/content_scripts/mode_find.coffee b/content_scripts/mode_find.coffee index 5a2da741..5238ab34 100644 --- a/content_scripts/mode_find.coffee +++ b/content_scripts/mode_find.coffee @@ -215,6 +215,7 @@ getCurrentRange = -> selection.collapseToStart() if selection.type == "Range" selection.getRangeAt 0 -root = exports ? window +root = exports ? (window.root ?= {}) root.PostFindMode = PostFindMode root.FindMode = FindMode +extend window, root unless exports? diff --git a/content_scripts/mode_insert.coffee b/content_scripts/mode_insert.coffee index 1dc66d52..a43a129f 100644 --- a/content_scripts/mode_insert.coffee +++ b/content_scripts/mode_insert.coffee @@ -129,6 +129,7 @@ class PassNextKeyMode extends Mode @exit() @passEventToPage -root = exports ? window +root = exports ? (window.root ?= {}) root.InsertMode = InsertMode root.PassNextKeyMode = PassNextKeyMode +extend window, root unless exports? diff --git a/content_scripts/mode_key_handler.coffee b/content_scripts/mode_key_handler.coffee index 1b3b21e7..0e84b9fb 100644 --- a/content_scripts/mode_key_handler.coffee +++ b/content_scripts/mode_key_handler.coffee @@ -93,5 +93,6 @@ class KeyHandlerMode extends Mode @exit() if @options.count? and --@options.count <= 0 @suppressEvent -root = exports ? window +root = exports ? (window.root ?= {}) root.KeyHandlerMode = KeyHandlerMode +extend window, root unless exports? diff --git a/content_scripts/mode_visual.coffee b/content_scripts/mode_visual.coffee index 28097005..f99e42f9 100644 --- a/content_scripts/mode_visual.coffee +++ b/content_scripts/mode_visual.coffee @@ -380,6 +380,7 @@ class CaretMode extends VisualMode return true false -root = exports ? window +root = exports ? (window.root ?= {}) root.VisualMode = VisualMode root.VisualLineMode = VisualLineMode +extend window, root unless exports? diff --git a/content_scripts/scroller.coffee b/content_scripts/scroller.coffee index 56862d49..4a6c7edf 100644 --- a/content_scripts/scroller.coffee +++ b/content_scripts/scroller.coffee @@ -301,5 +301,6 @@ Scroller = element = findScrollableElement element, "x", amount, 1 CoreScroller.scroll element, "x", amount, false -root = exports ? window +root = exports ? (window.root ?= {}) root.Scroller = Scroller +extend window, root unless exports? diff --git a/content_scripts/ui_component.coffee b/content_scripts/ui_component.coffee index 203f0c8c..c71bfb35 100644 --- a/content_scripts/ui_component.coffee +++ b/content_scripts/ui_component.coffee @@ -96,5 +96,6 @@ class UIComponent @options = null @postMessage "hidden" # Inform the UI component that it is hidden. -root = exports ? window +root = exports ? (window.root ?= {}) root.UIComponent = UIComponent +extend window, root unless exports? diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 96ce81a3..c0df315e 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -2,6 +2,12 @@ # This content script must be run prior to domReady so that we perform some operations very early. # +root = exports ? (window.root ?= {}) +# On Firefox, sometimes the variables assigned to window are lost (bug 1408996), so we reinstall them. +# NOTE(mrmr1993): This bug leads to catastrophic failure (ie. nothing works and errors abound). +DomUtils.documentReady -> + root.extend window, root unless extend? + isEnabledForUrl = true isIncognitoMode = chrome.extension.inIncognitoContext normalMode = null @@ -245,7 +251,7 @@ Frame = postMessage: (handler, request = {}) -> @port.postMessage extend request, {handler} linkHintsMessage: (request) -> HintCoordinator[request.messageType] request registerFrameId: ({chromeFrameId}) -> - frameId = window.frameId = chromeFrameId + frameId = root.frameId = window.frameId = chromeFrameId # We register a frame immediately only if it is focused or its window isn't tiny. We register tiny # frames later, when necessary. This affects focusFrame() and link hints. if windowIsFocused() or not DomUtils.windowIsTooSmall() @@ -327,7 +333,7 @@ focusThisFrame = (request) -> document.activeElement.blur() if document.activeElement.tagName.toLowerCase() == "iframe" flashFrame() if request.highlight -extend window, +extend root, scrollToBottom: -> Marks.setPreviousPosition() Scroller.scrollTo "y", "max" @@ -345,7 +351,7 @@ extend window, scrollLeft: (count) -> Scroller.scrollBy "x", -1 * Settings.get("scrollStepSize") * count scrollRight: (count) -> Scroller.scrollBy "x", Settings.get("scrollStepSize") * count -extend window, +extend root, reload: (count, options) -> hard = options?.hard window.location.reload(hard) @@ -413,7 +419,10 @@ extend window, # Track the most recently focused input element. recentlyFocusedElement = null window.addEventListener "focus", - forTrusted (event) -> recentlyFocusedElement = event.target if DomUtils.isEditable event.target + forTrusted (event) -> + DomUtils = window.DomUtils ? root.DomUtils # Workaround FF bug 1408996. + if DomUtils.isEditable event.target + recentlyFocusedElement = event.target , true (count) -> @@ -654,12 +663,12 @@ findAndFollowRel = (value) -> followLink(element) return true -window.goPrevious = -> +root.goPrevious = -> previousPatterns = Settings.get("previousPatterns") || "" previousStrings = previousPatterns.split(",").filter( (s) -> s.trim().length ) findAndFollowRel("prev") || findAndFollowLink(previousStrings) -window.goNext = -> +root.goNext = -> nextPatterns = Settings.get("nextPatterns") || "" nextStrings = nextPatterns.split(",").filter( (s) -> s.trim().length ) findAndFollowRel("next") || findAndFollowLink(nextStrings) @@ -669,11 +678,11 @@ enterFindMode = -> Marks.setPreviousPosition() new FindMode() -window.showHelp = (sourceFrameId) -> +root.showHelp = (sourceFrameId) -> HelpDialog.toggle {sourceFrameId, showAllCommandDetails: false} # If we are in the help dialog iframe, then HelpDialog is already defined with the necessary functions. -window.HelpDialog ?= +root.HelpDialog ?= helpUI: null isShowing: -> @helpUI?.showing abort: -> @helpUI.hide false if @isShowing() @@ -690,7 +699,6 @@ window.HelpDialog ?= initializePreDomReady() DomUtils.documentReady initializeOnDomReady -root = exports ? window root.handlerStack = handlerStack root.frameId = frameId root.Frame = Frame @@ -701,3 +709,4 @@ extend root, {handleEscapeForFindMode, handleEnterForFindMode, performFind, perf enterFindMode, focusThisFrame} # These are exported only for the tests. extend root, {installModes} +extend window, root unless exports? diff --git a/content_scripts/vomnibar.coffee b/content_scripts/vomnibar.coffee index 14d72e87..ad98aa48 100644 --- a/content_scripts/vomnibar.coffee +++ b/content_scripts/vomnibar.coffee @@ -58,5 +58,6 @@ Vomnibar = HelpDialog.abort() @vomnibarUI.activate extend options, { name: "activate", sourceFrameId, focus: true } -root = exports ? window +root = exports ? (window.root ?= {}) root.Vomnibar = Vomnibar +extend window, root unless exports? diff --git a/lib/clipboard.coffee b/lib/clipboard.coffee index af143dd9..1d378e76 100644 --- a/lib/clipboard.coffee +++ b/lib/clipboard.coffee @@ -25,5 +25,6 @@ Clipboard = value -root = exports ? window +root = exports ? (window.root ?= {}) root.Clipboard = Clipboard +extend window, root unless exports? diff --git a/lib/dom_utils.coffee b/lib/dom_utils.coffee index ff5991dc..e771d436 100644 --- a/lib/dom_utils.coffee +++ b/lib/dom_utils.coffee @@ -416,5 +416,6 @@ DomUtils = style.textContent = Settings.get "userDefinedLinkHintCss" document.head.appendChild style -root = exports ? window +root = exports ? (window.root ?= {}) root.DomUtils = DomUtils +extend window, root unless exports? diff --git a/lib/find_mode_history.coffee b/lib/find_mode_history.coffee index ff660bd2..93698266 100644 --- a/lib/find_mode_history.coffee +++ b/lib/find_mode_history.coffee @@ -46,5 +46,6 @@ FindModeHistory = refreshRawQueryList: (query, rawQueryList) -> ([ query ].concat rawQueryList.filter (q) => q != query)[0..@max] -root = exports ? window +root = exports ? (window.root ?= {}) root.FindModeHistory = FindModeHistory +extend window, root unless exports? diff --git a/lib/handler_stack.coffee b/lib/handler_stack.coffee index 806b707f..2439f55c 100644 --- a/lib/handler_stack.coffee +++ b/lib/handler_stack.coffee @@ -1,4 +1,4 @@ -root = exports ? window +root = exports ? (window.root ?= {}) class HandlerStack constructor: -> @@ -120,3 +120,4 @@ class HandlerStack root.HandlerStack = HandlerStack root.handlerStack = new HandlerStack() +extend window, root unless exports? diff --git a/lib/keyboard_utils.coffee b/lib/keyboard_utils.coffee index 1a1ea797..681ee139 100644 --- a/lib/keyboard_utils.coffee +++ b/lib/keyboard_utils.coffee @@ -101,5 +101,6 @@ KeyboardUtils = KeyboardUtils.init() -root = exports ? window +root = exports ? (window.root ?= {}) root.KeyboardUtils = KeyboardUtils +extend window, root unless exports? diff --git a/lib/rect.coffee b/lib/rect.coffee index d4807cc2..59764d18 100644 --- a/lib/rect.coffee +++ b/lib/rect.coffee @@ -91,5 +91,6 @@ Rect = (rect1, rect2) -> halfOverlapChecker(rect1, rect2) or halfOverlapChecker rect2, rect1 -root = exports ? window +root = exports ? (window.root ?= {}) root.Rect = Rect +extend window, root unless exports? diff --git a/lib/settings.coffee b/lib/settings.coffee index 38718990..11cf7557 100644 --- a/lib/settings.coffee +++ b/lib/settings.coffee @@ -218,5 +218,6 @@ if Utils.isBackgroundPage() # be removed after 1.58 has been out for sufficiently long. Settings.nuke "copyNonDefaultsToChromeStorage-20150717" -root = exports ? window +root = exports ? (window.root ?= {}) root.Settings = Settings +extend window, root unless exports? diff --git a/lib/utils.coffee b/lib/utils.coffee index d0a82cf7..b5b96844 100644 --- a/lib/utils.coffee +++ b/lib/utils.coffee @@ -335,8 +335,11 @@ class JobRunner onReady: (callback) -> @fetcher.use callback -root = exports ? window +root = exports ? (window.root ?= {}) root.Utils = Utils root.SimpleCache = SimpleCache root.AsyncDataFetcher = AsyncDataFetcher root.JobRunner = JobRunner +unless exports? + root.extend = extend + extend window, root |
