Add a wasm debugger test that uses a WebGL surface
Change-Id: I9fef343d8ae958ca6382f6a781a31b6a583728bd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/241756
Commit-Queue: Nathaniel Nifong <nifong@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
diff --git a/experimental/wasm-skp-debugger/karma.conf.js b/experimental/wasm-skp-debugger/karma.conf.js
index 8378be4..11c78b9 100644
--- a/experimental/wasm-skp-debugger/karma.conf.js
+++ b/experimental/wasm-skp-debugger/karma.conf.js
@@ -14,6 +14,7 @@
{ pattern: 'debugger/sample.skp', included:false, served:true},
'../../modules/pathkit/tests/testReporter.js',
'debugger/bin/debugger.js',
+ 'tests/debuggerinit.js',
'tests/*.spec.js'
],
diff --git a/experimental/wasm-skp-debugger/tests/debuggerinit.js b/experimental/wasm-skp-debugger/tests/debuggerinit.js
new file mode 100644
index 0000000..bd2097f
--- /dev/null
+++ b/experimental/wasm-skp-debugger/tests/debuggerinit.js
@@ -0,0 +1,15 @@
+jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000;
+
+let Debugger = null;
+const LoadDebugger = new Promise(function(resolve, reject) {
+ if (Debugger) {
+ resolve();
+ } else {
+ DebuggerInit({
+ locateFile: (file) => '/debugger/bin/'+file,
+ }).ready().then((_Debugger) => {
+ Debugger = _Debugger;
+ resolve();
+ });
+ }
+});
\ No newline at end of file
diff --git a/experimental/wasm-skp-debugger/tests/startup.spec.js b/experimental/wasm-skp-debugger/tests/startup.spec.js
index 0f61dba..c69597e 100644
--- a/experimental/wasm-skp-debugger/tests/startup.spec.js
+++ b/experimental/wasm-skp-debugger/tests/startup.spec.js
@@ -3,29 +3,20 @@
jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000;
describe('Debugger\'s Startup Behavior', function() {
- // Note, don't try to print the CanvasKit object - it can cause Karma/Jasmine to lock up.
- var Debugger = null;
- const LoadDebugger = new Promise(function(resolve, reject) {
- if (Debugger) {
- resolve();
- } else {
- DebuggerInit({
- locateFile: (file) => '/debugger/bin/'+file,
- }).ready().then((_Debugger) => {
- Debugger = _Debugger;
- resolve();
- });
- }
- });
-
let container = document.createElement('div');
document.body.appendChild(container);
- container.innerHTML = `<canvas id=debugger_view width=720 height=1280></canvas>`;
- it('can load and draw a skp file', function(done) {
+ beforeEach(function() {
+ container.innerHTML = `<canvas id=debugger_view width=720 height=1280></canvas>`;
+ });
+
+ afterEach(function() {
+ container.innerHTML = '';
+ });
+
+ it('can load and draw a skp file on an Canvas2D', function(done) {
LoadDebugger.then(catchException(done, () => {
const surface = Debugger.MakeSWCanvasSurface(document.getElementById('debugger_view'));
- const player = new Debugger.SkpDebugPlayer();
fetch('/debugger/sample.skp').then(function(response) {
// Load test file
@@ -33,19 +24,35 @@
throw new Error("HTTP error, status = " + response.status);
}
response.arrayBuffer().then(function(buffer) {
- let fileContents = new Uint8Array(buffer);
+ const fileContents = new Uint8Array(buffer);
console.log('fetched /debugger/sample.skp');
- const size = fileContents.byteLength;
- expect(size).toEqual(662976);
+ const player = Debugger.SkpFilePlayer(fileContents);
+ // Draw picture
+ player.drawTo(surface, 789); // number of commands in sample file
+ surface.flush();
- // Allocate memory in wasm to hold the skp file selected by the user.
- const fileMemPtr = Debugger._malloc(size);
- // Make a typed array view of that memory
- let fileMem = new Uint8Array(Debugger.buffer, fileMemPtr, size);
- // Copy the file into it
- fileMem.set(fileContents);
- // Hand off pointer to wasm
- player.loadSkp(fileMemPtr, size);
+ console.log('drew picture to canvas element');
+ surface.dispose();
+ done();
+ });
+ });
+ }));
+ });
+
+ it('can load and draw a skp file on a Web GL canvas', function(done) {
+ LoadDebugger.then(catchException(done, () => {
+ const surface = Debugger.MakeWebGLCanvasSurface(
+ document.getElementById('debugger_view'));
+
+ fetch('/debugger/sample.skp').then(function(response) {
+ // Load test file
+ if (!response.ok) {
+ throw new Error("HTTP error, status = " + response.status);
+ }
+ response.arrayBuffer().then(function(buffer) {
+ const fileContents = new Uint8Array(buffer);
+ console.log('fetched /debugger/sample.skp');
+ const player = Debugger.SkpFilePlayer(fileContents);
// Draw picture
player.drawTo(surface, 789); // number of commands in sample file
surface.flush();