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

Unified Diff: extensions/test/data/data_receiver_unittest.js

Issue 571333002: Add serialization support to the JS DataSender and DataReceiver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@stash-service
Patch Set: Created 6 years, 3 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: extensions/test/data/data_receiver_unittest.js
diff --git a/extensions/test/data/data_receiver_unittest.js b/extensions/test/data/data_receiver_unittest.js
index 1bdda9663e687c01e1f70bdfb5c0496b34eef0ff..36fcab00cb7ea4b0de53de044e69f2cf8d17168b 100644
--- a/extensions/test/data/data_receiver_unittest.js
+++ b/extensions/test/data/data_receiver_unittest.js
@@ -26,6 +26,17 @@ function createReceiver() {
}));
}
+function serializeRoundTrip(receiver) {
+ return Promise.all([
+ receiver.serialize(),
+ requireAsync('data_receiver'),
+ ]).then(function(promises) {
+ var serialized = promises[0];
+ var dataReceiver = promises[1];
+ return dataReceiver.DataReceiver.deserialize(serialized);
+ });
+}
+
unittestBindings.exportTests([
function testReceive() {
createReceiver().then(test.callbackPass(function(receiver) {
@@ -78,6 +89,100 @@ unittestBindings.exportTests([
}));
},
+ function testReceiveWithSerialization() {
+ createReceiver().then(test.callbackPass(function(receiver) {
+ return receiver.receive().then(test.callbackPass(function(data) {
+ test.assertEq(1, data.byteLength);
+ test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]);
+ return receiver;
+ }));
+ })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
+ function(receiver) {
+ receiver.receive().then(test.callbackPass(function(data) {
+ test.assertEq(1, data.byteLength);
+ test.assertEq('b'.charCodeAt(0), new Int8Array(data)[0]);
+ receiver.close();
+ }));
+ test.assertThrows(
+ receiver.receive, receiver, [], 'Receive already in progress.');
+ }));
+ },
raymes 2014/09/17 02:05:04 I find the style that these tests are written in v
Sam McNally 2014/09/17 08:07:14 Done.
+
+ function testReceiveErrorWithSerialization() {
+ createReceiver().then(test.callbackPass(function(receiver) {
+ return receiver.receive().catch(test.callbackPass(function(error) {
+ test.assertEq(1, error.error);
+ return receiver;
+ }));
+ })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
+ function(receiver) {
+ receiver.receive().catch(test.callbackPass(function(error) {
+ test.assertEq(3, error.error);
+ receiver.close();
+ }));
+ }));
+ },
+
+ function testReceiveDataAndErrorWithSerialization() {
+ createReceiver().then(serializeRoundTrip).then(test.callbackPass(
+ function(receiver) {
+ return receiver.receive().then(test.callbackPass(function(data) {
+ test.assertEq(1, data.byteLength);
+ test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]);
+ return receiver.receive();
+ })).catch(test.callbackPass(function(error) {
+ test.assertEq(1, error.error);
+ return receiver;
+ }));
+ })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
+ function(receiver) {
+ receiver.receive().then(test.callbackPass(function(data) {
+ test.assertEq(1, data.byteLength);
+ test.assertEq('b'.charCodeAt(0), new Int8Array(data)[0]);
+ return receiver.receive();
+ })).catch(test.callbackPass(function(error) {
+ test.assertEq(3, error.error);
+ return receiver.receive();
+ })).then(test.callbackPass(function(data) {
+ test.assertEq(1, data.byteLength);
+ test.assertEq('c'.charCodeAt(0), new Int8Array(data)[0]);
+ receiver.close();
+ }));
+ }));
+ },
+
+ function testReceiveErrorThenDataWithSerialization() {
+ createReceiver().then(test.callbackPass(function(receiver) {
+ return receiver.receive().catch(test.callbackPass(function(error) {
+ test.assertEq(1, error.error);
+ return receiver;
+ }));
+ })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
+ function(receiver) {
+ receiver.receive().then(test.callbackPass(function(data) {
+ test.assertEq(1, data.byteLength);
+ test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]);
+ receiver.close();
+ }));
+ }));
+ },
+
+ function testSerializeDuringReceive() {
+ createReceiver().then(test.callbackPass(function(receiver) {
+ receiver.receive().catch(test.callbackPass(function(error) {
+ test.assertEq(fatalErrorValue, error.error);
+ }));
+ return receiver;
+ })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
+ function(receiver) {
+ receiver.receive().then(test.callbackPass(function(data) {
+ test.assertEq(1, data.byteLength);
+ test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]);
+ receiver.close();
+ }));
+ }));
+ },
+
function testSourceShutdown() {
createReceiver().then(test.callbackPass(function(receiver) {
receiver.receive().catch(test.callbackPass(function(error) {

Powered by Google App Engine
This is Rietveld 408576698