Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/filesystem/io.js

Issue 5088751004942336: Issue 370 - Right-clicked element is removed independent of created filter (Closed)
Patch Set: Rebase to rev 3c9cea80c481 Created July 18, 2014, 8:54 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/elemHideHitRegistration.js ('k') | lib/prefs.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/filesystem/io.js
===================================================================
--- a/lib/filesystem/io.js
+++ b/lib/filesystem/io.js
@@ -1,6 +1,6 @@
/*
* This file is part of Adblock Plus <http://adblockplus.org/>,
- * Copyright (C) 2006-2013 Eyeo GmbH
+ * Copyright (C) 2006-2014 Eyeo GmbH
*
* Adblock Plus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
@@ -48,7 +48,7 @@
return new FakeFile(path);
},
- readFromFile: function(file, decode, listener, callback, timeLineID)
+ readFromFile: function(file, listener, callback, timeLineID)
{
// Hack to allow importing old data
if (typeof file == "string")
@@ -65,25 +65,16 @@
return;
}
- if ("spec" in file && /^defaults\b/.test(file.spec))
- {
- // Code attempts to read the default patterns.ini, we don't have that.
- // Make sure to execute first-run actions instead.
- var Utils = require("utils").Utils;
- Utils.runAsync(function()
- {
- if (localStorage.currentVersion)
- seenDataCorruption = true;
- delete localStorage.currentVersion;
- callback(null);
- });
- return;
- }
-
this._getFileEntry(file, false, function(fs, fileEntry)
{
fileEntry.file(function(file)
{
+ if (file.size == 0)
+ {
+ callback("File is empty");
+ return;
+ }
+
var reader = new FileReader();
reader.onloadend = function()
{
@@ -103,7 +94,7 @@
}, callback);
},
- writeToFile: function(file, encode, data, callback, timeLineID)
+ writeToFile: function(file, data, callback, timeLineID)
{
this._getFileEntry(file, true, function(fs, fileEntry)
{
@@ -122,25 +113,26 @@
op();
}.bind(this);
- executeWriteOperation(writer.truncate.bind(writer, 0), function()
+ var blob;
+
+ try
{
- var blob;
- try
- {
- blob = new Blob([data.join(this.lineBreak) + this.lineBreak], {type: "text/plain"});
- }
- catch (e)
- {
- if (!(e instanceof TypeError))
- throw e;
+ blob = new Blob([data.join(this.lineBreak) + this.lineBreak], {type: "text/plain"});
+ }
+ catch (e)
+ {
+ if (!(e instanceof TypeError))
+ throw e;
- // Blob wasn't a constructor before Chrome 20
- var builder = new (window.BlobBuilder || window.WebKitBlobBuilder);
- builder.append(data.join(this.lineBreak) + this.lineBreak);
- blob = builder.getBlob("text/plain");
- }
- executeWriteOperation(writer.write.bind(writer, blob), callback.bind(null, null));
- }.bind(this));
+ // Blob wasn't a constructor before Chrome 20
+ var builder = new (window.BlobBuilder || window.WebKitBlobBuilder);
+ builder.append(data.join(this.lineBreak) + this.lineBreak);
+ blob = builder.getBlob("text/plain");
+ }
+ executeWriteOperation(writer.write.bind(writer, blob), function()
+ {
+ executeWriteOperation(writer.truncate.bind(writer, writer.position), callback.bind(null, null));
+ });
}.bind(this), callback);
}.bind(this), callback);
},
@@ -149,7 +141,7 @@
{
// Simply combine read and write operations
var data = [];
- this.readFromFile(fromFile, false, {
+ this.readFromFile(fromFile, {
process: function(line)
{
if (line !== null)
@@ -160,7 +152,7 @@
if (e)
callback(e);
else
- this.writeToFile(toFile, false, data, callback);
+ this.writeToFile(toFile, data, callback);
}.bind(this));
},
@@ -201,17 +193,21 @@
return;
}
- this._getFileEntry(file, false, function(fs, fileEntry)
- {
- fileEntry.getMetadata(function(metadata)
+ // This needs to use Utils.runAsync(), otherwise FilterStorage might
+ // initialize too early - see #337.
+ require("utils").Utils.runAsync(function() {
+ this._getFileEntry(file, false, function(fs, fileEntry)
{
- callback(null, {
- exists: true,
- isDirectory: fileEntry.isDirectory,
- isFile: fileEntry.isFile,
- lastModified: metadata.modificationTime.getTime()
- });
+ fileEntry.getMetadata(function(metadata)
+ {
+ callback(null, {
+ exists: true,
+ isDirectory: fileEntry.isDirectory,
+ isFile: fileEntry.isFile,
+ lastModified: metadata.modificationTime.getTime()
+ });
+ }, callback);
}, callback);
- }, callback);
+ }.bind(this));
}
};
« no previous file with comments | « lib/elemHideHitRegistration.js ('k') | lib/prefs.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld