Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(342)

Unified Diff: chrome/test/data/extensions/storage_monitor/hosted_apps/common.js

Issue 2923663002: ExtensionStorageMonitor: use smaller, self-registering StorageObservers (Closed)
Patch Set: Fiddling. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/storage_monitor/hosted_apps/common.js
diff --git a/chrome/test/data/extensions/storage_monitor/hosted_apps/common.js b/chrome/test/data/extensions/storage_monitor/hosted_apps/common.js
new file mode 100644
index 0000000000000000000000000000000000000000..3d451b6c92f9177e222f97dce8388ae124452de4
--- /dev/null
+++ b/chrome/test/data/extensions/storage_monitor/hosted_apps/common.js
@@ -0,0 +1,66 @@
+// Copyright 2017 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.
+
+var kHundredChars = '';
Devlin 2017/06/12 20:15:05 do we care what these chars are? If not, maybe va
ncarter (slow) 2017/06/12 22:52:08 Removed -- this was all copypasta from ../write_da
+for (var i = 0; i < 10; i++) {
+ kHundredChars += '0123456789';
+}
+
+// Opens the filesystem and returns a Promise that resolves to the opened
+// filesystem.
+function GetFileSystem(type, size) {
+ return new Promise(
+ (resolve, reject) =>
+ webkitRequestFileSystem(type, size, resolve, reject));
+}
+
+// Returns a .then()-chainable handler that accepts a fileystem, creates a file,
+// and returns a Promise that resolves to the successfully created file.
+function CreateFile(filename) {
+ return (filesystem) => new Promise(
+ (resolve, reject) => filesystem.root.getFile(
+ filename, {create: true}, resolve, reject));
+}
+
+// Returns a .then()-chainable handler that accepts a filesystem file, appends
+// |numChars| to it, and returns a Promise that resolves to the file once the
+// append operation is successful.
+function AppendDataToFile(numChars) {
+ return ((fileEntry) => {
Devlin 2017/06/12 20:15:05 Hmm... where's the first paren closed? Am I missi
ncarter (slow) 2017/06/12 22:52:07 Whoops! Serves me right for trying to rejigger thi
+ return new Promise((resolve, reject) => {
+ fileEntry.createWriter((fileWriter) => {
+ // FileWriter's onwriteend resolves the promise; onerror rejects it.
+ fileWriter.onwriteend = (e) => resolve(fileEntry);
+ fileWriter.onerror = reject;
+
+ fileWriter.seek(fileWriter.length);
+ var str = '';
+
+ // Avoid many loops for large data packets.
Devlin 2017/06/12 20:15:05 or, here just: str = 'a'.repeat(numChars);
ncarter (slow) 2017/06/12 22:52:07 Much simpler! Done.
+ var iterations = Math.floor(numChars / 100);
+ for (var i = 0; i < iterations; ++i) {
+ str += kHundredChars;
+ }
+
+ iterations = numChars % 100;
+ for (var i = 0; i < iterations; ++i) {
+ str += 'a';
+ }
+
+ var blob = new Blob([str], {type: 'text/plain'});
+ fileWriter.write(blob);
+ }, reject);
+ });
+ }
+}
+
+// Entry point to be called via ExecuteScript in the browser test C++ code.
+//
+// Asynchronously opens writes |numChars| to the filesystem. Returns a Promise
+// that resolves upon completion.
+function HostedAppWriteData(type, numChars) {
+ return GetFileSystem(type, 16384)
+ .then(CreateFile('test.txt'))
+ .then(AppendDataToFile(numChars));
+}

Powered by Google App Engine
This is Rietveld 408576698