diff options
| -rw-r--r-- | background_scripts/main.coffee | 1 | ||||
| -rw-r--r-- | content_scripts/ui_component.coffee | 26 | 
2 files changed, 23 insertions, 4 deletions
| diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index df841028..10f7500e 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -668,6 +668,7 @@ sendRequestHandlers =    setIcon: setIcon    sendMessageToFrames: sendMessageToFrames    log: bgLog +  fetchFileContents: (request, sender) -> fetchFileContents request.fileName  # We always remove chrome.storage.local/findModeRawQueryListIncognito on startup.  chrome.storage.local.remove "findModeRawQueryListIncognito" diff --git a/content_scripts/ui_component.coffee b/content_scripts/ui_component.coffee index 2348d00b..2218c3c7 100644 --- a/content_scripts/ui_component.coffee +++ b/content_scripts/ui_component.coffee @@ -4,15 +4,16 @@ class UIComponent    showing: null    options: null    shadowDOM: null +  styleSheetGetter: null    constructor: (iframeUrl, className, @handleMessage) ->      styleSheet = DomUtils.createElement "style"      styleSheet.type = "text/css"      # Default to everything hidden while the stylesheet loads. -    styleSheet.innerHTML = """ -      @import url("#{chrome.runtime.getURL("content_scripts/vimium.css")}"); -      iframe {display: none;} -    """ +    styleSheet.innerHTML = "iframe {display: none;}" + +    UIComponent::styleSheetGetter ?= new AsyncDataFetcher @fetchStyles +    @styleSheetGetter.use (styles) -> styleSheet.innerHTML = styles      @iframeElement = DomUtils.createElement "iframe"      extend @iframeElement, @@ -115,5 +116,22 @@ class UIComponent              window.removeEventListener "focus", handler              refocusSourceFrame() +  fetchStyles: (callback) -> +    stylesheetRequest = new XMLHttpRequest() + +    stylesheetRequest.onload = -> +      return stylesheetRequest.onerror() unless stylesheetRequest.status == 200 +      callback stylesheetRequest.responseText + +    stylesheetRequest.onerror = -> +      chrome.runtime.sendMessage +        handler: "fetchFileContents" +        fileName: "content_scripts/vimium.css" +      , callback + +    stylesheetRequest.open "GET", (chrome.runtime.getURL "content_scripts/vimium.css"), true +    stylesheetRequest.send() + +  root = exports ? window  root.UIComponent = UIComponent | 
