| Index: lib/elemHide.js | 
| =================================================================== | 
| --- a/lib/elemHide.js | 
| +++ b/lib/elemHide.js | 
| @@ -248,34 +248,41 @@ let ElemHide = exports.ElemHide = | 
| return; | 
| } | 
|  | 
| IO.writeToFile(styleURL.file, this._generateCSSContent(), function(e) | 
| { | 
| TimeLine.enter("ElemHide.apply() write callback"); | 
| this._applying = false; | 
|  | 
| -      if (e && e.result == Cr.NS_ERROR_NOT_AVAILABLE) | 
| -        IO.removeFile(styleURL.file, function(e2) {}); | 
| +      // _generateCSSContent is throwing NS_ERROR_NOT_AVAILABLE to indicate that | 
| +      // there are no filters. If that exception is passed through XPCOM we will | 
| +      // see a proper exception here, otherwise a number. | 
| +      let noFilters = (e == Cr.NS_ERROR_NOT_AVAILABLE || (e && e.result == Cr.NS_ERROR_NOT_AVAILABLE)); | 
| +      if (noFilters) | 
| +      { | 
| +        e = null; | 
| +        IO.removeFile(styleURL.file, function(e) {}); | 
| +      } | 
| else if (e) | 
| Cu.reportError(e); | 
|  | 
| if (this._needsApply) | 
| { | 
| this._needsApply = false; | 
| this.apply(); | 
| } | 
| -      else if (!e || e.result == Cr.NS_ERROR_NOT_AVAILABLE) | 
| +      else if (!e) | 
| { | 
| ElemHide.isDirty = false; | 
|  | 
| ElemHide.unapply(); | 
| TimeLine.log("ElemHide.unapply() finished"); | 
|  | 
| -        if (!e) | 
| +        if (!noFilters) | 
| { | 
| try | 
| { | 
| Utils.styleService.loadAndRegisterSheet(styleURL, Ci.nsIStyleSheetService.USER_SHEET); | 
| ElemHide.applied = true; | 
| } | 
| catch (e) | 
| { | 
|  |