| Left: | ||
| Right: |
| LEFT | RIGHT |
|---|---|
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2017 eyeo GmbH | 3 * Copyright (C) 2006-2017 eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 238 | 238 |
| 239 let {application} = require("info"); | 239 let {application} = require("info"); |
| 240 if (application != "firefox" && application != "fennec2") | 240 if (application != "firefox" && application != "fennec2") |
| 241 { | 241 { |
| 242 // Currently, only Firefox has a working WebExtensions implementation, other | 242 // Currently, only Firefox has a working WebExtensions implementation, other |
| 243 // applications should just use the fallback. | 243 // applications should just use the fallback. |
| 244 exports.IO = fallback; | 244 exports.IO = fallback; |
| 245 } | 245 } |
| 246 else | 246 else |
| 247 { | 247 { |
| 248 for (let name of [ | 248 // Add fallbacks to IO methods - fall back to legacy I/O if file wasn't found. |
| 249 "readFromFile", "copyFile", "renameFile", "removeFile", "statFile" | 249 for (let name of Object.getOwnPropertyNames(exports.IO)) |
|
Felix Dahlke
2017/05/29 12:22:30
We could avoid duplication here by iterating over
Wladimir Palant
2017/05/29 12:41:23
Done.
| |
| 250 ]) | 250 { |
| 251 { | 251 // No fallback for writeToFile method, new data should always be stored to |
| 252 // For missing files, fall back to legacy I/O for all methods except | 252 // new storage only. |
|
Felix Dahlke
2017/05/29 12:22:30
Nit: I think that comment should move in front of
Wladimir Palant
2017/05/29 12:41:23
Done.
| |
| 253 // writeToFile() | 253 if (name == "writeToFile") |
| 254 continue; | |
| 255 | |
| 254 let method = exports.IO[name]; | 256 let method = exports.IO[name]; |
| 255 let fallbackMethod = fallback[name]; | 257 let fallbackMethod = fallback[name]; |
| 256 exports.IO[name] = (...args) => | 258 exports.IO[name] = (...args) => |
| 257 { | 259 { |
| 258 return method(...args).catch(error => | 260 return method(...args).catch(error => |
| 259 { | 261 { |
| 260 if (error == "NoSuchFile") | 262 if (error == "NoSuchFile") |
| 261 return fallbackMethod(...args); | 263 return fallbackMethod(...args); |
| 262 throw error; | 264 throw error; |
| 263 }); | 265 }); |
| 264 }; | 266 }; |
| 265 } | 267 } |
| 266 } | 268 } |
| LEFT | RIGHT |