Index: chrome/test/data/fileapi/common.js |
diff --git a/chrome/test/data/fileapi/common.js b/chrome/test/data/fileapi/common.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8a902706bfb2a6478f3b4d8767663694ddecd171 |
--- /dev/null |
+++ b/chrome/test/data/fileapi/common.js |
@@ -0,0 +1,139 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+function debug(message) |
+{ |
+ document.getElementById('status').innerHTML += '<br/>' + message; |
+} |
+ |
+function done(message) |
+{ |
+ if (document.location.hash == '#fail') |
+ return; |
+ if (message) |
+ debug('PASS: ' + message); |
+ else |
+ debug('PASS'); |
+ document.location.hash = '#pass'; |
+} |
+ |
+function fail(message) |
+{ |
+ debug('FAILED: ' + message); |
+ document.location.hash = '#fail'; |
+} |
+ |
+function getLog() |
+{ |
+ return "" + document.getElementById('status').innerHTML; |
+} |
+ |
+function fileErrorToString(e) { |
+ switch (e.code) { |
+ case FileError.QUOTA_EXCEEDED_ERR: |
+ msg = 'QUOTA_EXCEEDED_ERR'; |
+ break; |
+ case FileError.NOT_FOUND_ERR: |
+ msg = 'NOT_FOUND_ERR'; |
+ break; |
+ case FileError.SECURITY_ERR: |
+ msg = 'SECURITY_ERR'; |
+ break; |
+ case FileError.INVALID_MODIFICATION_ERR: |
+ msg = 'INVALID_MODIFICATION_ERR'; |
+ break; |
+ case FileError.INVALID_STATE_ERR: |
+ msg = 'INVALID_STATE_ERR'; |
+ break; |
+ default: |
+ msg = 'Unknown Error'; |
+ break; |
+ }; |
+ return msg; |
+} |
+ |
+function unexpectedAbortCallback() |
+{ |
+ fail('unexpectedAbortCallback'); |
+} |
+ |
+function unexpectedSuccessCallback() |
+{ |
+ fail('unexpectedSuccessCallback'); |
+} |
+ |
+function unexpectedCompleteCallback() |
+{ |
+ fail('unexpectedCompleteCallback'); |
+} |
kinuko
2011/08/29 08:55:01
These unexpected{Abort,Success,Complete}Callbacks
Dai Mikurube (NOT FULLTIME)
2011/08/30 08:07:55
Thanks. I forgot to remove them. I was using cod
|
+ |
+function unexpectedErrorCallback(e) |
+{ |
+ fail('unexpectedErrorCallback:' + fileErrorToString(e)); |
+} |
+ |
+function deleteAllObjectStores(db) |
kinuko
2011/08/29 08:55:01
Not for fileapi?
Dai Mikurube (NOT FULLTIME)
2011/08/30 08:07:55
Done.
|
+{ |
+ objectStoreNames = db.objectStoreNames; |
+ for (var i = 0; i < objectStoreNames.length; ++i) |
+ db.deleteObjectStore(objectStoreNames[i]); |
+} |
+ |
+// The following functions are based on |
kinuko
2011/08/29 08:55:01
I think in the new fileapi tests we're not using t
Dai Mikurube (NOT FULLTIME)
2011/08/30 08:07:55
Done.
|
+// WebKit/LayoutTests/fast/js/resources/js-test-pre.js |
+// so that the tests will look similar to the existing layout tests. |
+function stringify(v) |
+{ |
+ if (v === 0 && 1/v < 0) |
+ return "-0"; |
+ else return "" + v; |
+} |
+ |
+function isResultCorrect(_actual, _expected) |
+{ |
+ if (_expected === 0) |
+ return _actual === _expected && (1/_actual) === (1/_expected); |
+ if (_actual === _expected) |
+ return true; |
+ if (typeof(_expected) == "number" && isNaN(_expected)) |
+ return typeof(_actual) == "number" && isNaN(_actual); |
+ if (Object.prototype.toString.call(_expected) == |
+ Object.prototype.toString.call([])) |
+ return areArraysEqual(_actual, _expected); |
+ return false; |
+} |
+ |
+function shouldBe(_a, _b) |
+{ |
+ if (typeof _a != "string" || typeof _b != "string") |
+ debug("WARN: shouldBe() expects string arguments"); |
+ var exception; |
+ var _av; |
+ try { |
+ _av = eval(_a); |
+ } catch (e) { |
+ exception = e; |
+ } |
+ var _bv = eval(_b); |
+ |
+ if (exception) |
+ fail(_a + " should be " + _bv + ". Threw exception " + exception); |
+ else if (isResultCorrect(_av, _bv)) |
+ debug(_a + " is " + _b); |
+ else if (typeof(_av) == typeof(_bv)) |
+ fail(_a + " should be " + _bv + ". Was " + stringify(_av) + "."); |
+ else |
+ fail(_a + " should be " + _bv + " (of type " + typeof _bv + "). " + |
+ "Was " + _av + " (of type " + typeof _av + ")."); |
+} |
+ |
+function shouldBeTrue(_a) { shouldBe(_a, "true"); } |
+function shouldBeFalse(_a) { shouldBe(_a, "false"); } |
+function shouldBeNaN(_a) { shouldBe(_a, "NaN"); } |
+function shouldBeNull(_a) { shouldBe(_a, "null"); } |
+function shouldBeEqualToString(a, b) |
+{ |
+ var unevaledString = '"' + b.replace(/\\/g, "\\\\").replace(/"/g, "\"") + '"'; |
+ shouldBe(a, unevaledString); |
+} |