author | Boris Zbarsky <bzbarsky@mit.edu> |
Thu, 03 Feb 2011 09:36:46 -0800 | |
changeset 61865 | 9c815db836e360e9ca4fa4c6f54f31852e13f004 |
parent 61864 | 69f3807d4bb498a6bc9ffedbc8e2a02b7e92425b |
child 61873 | c1523d3f78410892b1750d98e414171ca4793fe3 |
push id | 18523 |
push user | dtownsend@mozilla.com |
push date | Thu, 03 Feb 2011 17:37:03 +0000 |
treeherder | mozilla-central@9c815db836e3 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | bsmedberg, jst |
bugs | 629291 |
milestone | 2.0b12pre |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
netwerk/base/src/nsFileStreams.cpp | file | annotate | diff | comparison | revisions | |
netwerk/test/unit/test_safeoutputstream.js | file | annotate | diff | comparison | revisions |
--- a/netwerk/base/src/nsFileStreams.cpp +++ b/netwerk/base/src/nsFileStreams.cpp @@ -731,21 +731,21 @@ nsSafeFileOutputStream::Finish() // in writing to the target file), there is nothing more to do. #ifdef DEBUG PRBool equal; if (NS_FAILED(mTargetFile->Equals(mTempFile, &equal)) || !equal) NS_ERROR("mTempFile not equal to mTargetFile"); #endif } else { - nsCAutoString targetFilename; - rv = mTargetFile->GetNativeLeafName(targetFilename); + nsAutoString targetFilename; + rv = mTargetFile->GetLeafName(targetFilename); if (NS_SUCCEEDED(rv)) { // This will replace target. - rv = mTempFile->MoveToNative(nsnull, targetFilename); + rv = mTempFile->MoveTo(nsnull, targetFilename); if (NS_FAILED(rv)) mTempFile->Remove(PR_FALSE); } } } else { mTempFile->Remove(PR_FALSE);
new file mode 100644 --- /dev/null +++ b/netwerk/test/unit/test_safeoutputstream.js @@ -0,0 +1,83 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * the Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2011 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Boris Zbarsky <bzbarsky@mit.edu> (original author) + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +const Cc = Components.classes; +const Ci = Components.interfaces; +const Cr = Components.results; + +function write(file, str) { + var stream = Cc["@mozilla.org/network/safe-file-output-stream;1"] + .createInstance(Ci.nsIFileOutputStream); + stream.init(file, -1, -1, 0); + do { + var written = stream.write(str, str.length); + if (written == str.length) + break; + str = str.substring(written); + } while (1); + stream.QueryInterface(Ci.nsISafeOutputStream).finish(); + stream.close(); +} + +function checkFile(file, str) { + var stream = Cc["@mozilla.org/network/file-input-stream;1"] + .createInstance(Ci.nsIFileInputStream); + stream.init(file, -1, -1, 0); + + var scriptStream = Cc["@mozilla.org/scriptableinputstream;1"] + .createInstance(Ci.nsIScriptableInputStream); + scriptStream.init(stream); + + do_check_eq(scriptStream.read(scriptStream.available()), str); + scriptStream.close(); +} + +function run_test() +{ + var filename = "\u0913"; + var file = Cc["@mozilla.org/file/directory_service;1"] + .getService(Ci.nsIProperties) + .get("TmpD", Ci.nsIFile); + file.append(filename); + + write(file, "First write"); + checkFile(file, "First write"); + + write(file, "Second write"); + checkFile(file, "Second write"); +}