diff options
| author | mrmr1993 | 2015-09-18 18:45:41 +0100 | 
|---|---|---|
| committer | mrmr1993 | 2015-09-18 18:45:41 +0100 | 
| commit | 2c6d67c05b6ef57aabda288a164dd2885894ae89 (patch) | |
| tree | a42d82e20c4a527e145ddad2137cfdd46763ba7f | |
| parent | 37ba00af0e89641d0c54c19968c8986719eecde1 (diff) | |
| download | vimium-2c6d67c05b6ef57aabda288a164dd2885894ae89.tar.bz2 | |
Load UIComponent stylesheet via XMLHttpRequest, use background as needed
| -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 | 
