[Libreoffice-commits] online.git: 3 commits - loleaflet/spec loleaflet/src

Mihai Varga mihai.varga at collabora.com
Thu Jul 23 06:56:07 PDT 2015


 loleaflet/spec/tilebench.html             |   52 ++++++++++++++++
 loleaflet/spec/tilebench/TileBenchSpec.js |   93 ++++++++++++++++++++++++++++++
 loleaflet/src/layer/tile/GridLayer.js     |    1 
 loleaflet/src/layer/tile/TileLayer.js     |    8 ++
 4 files changed, 154 insertions(+)

New commits:
commit 16091399081d64a8d90343e4359f6fb96e1ea109
Author: Mihai Varga <mihai.varga at collabora.com>
Date:   Thu Jul 23 16:55:38 2015 +0300

    loleaflet: removed console.log call

diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 3b54132..24246c9 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -391,7 +391,6 @@ L.TileLayer = L.GridLayer.extend({
 				if (!tile.loaded) {
 					this._emptyTilesCount -= 1;
 					if (this._emptyTilesCount === 0) {
-						console.log('alltilesloaded');
 						this._map.fire('alltilesloaded');
 					}
 				}
commit 5f368efc320401b2bb7b0ae6576a7f1afc531af7
Author: Mihai Varga <mihai.varga at collabora.com>
Date:   Thu Jul 23 16:53:56 2015 +0300

    loleaflet: test if loading a document and scrolling works
    
    To run the test, open tilebench.html in a browser

diff --git a/loleaflet/spec/tilebench.html b/loleaflet/spec/tilebench.html
new file mode 100644
index 0000000..7f3722b
--- /dev/null
+++ b/loleaflet/spec/tilebench.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<title>LOOL Spec Runner</title>
+	<link rel="stylesheet" type="text/css" href="../node_modules/mocha/mocha.css">
+	<link rel="stylesheet" type="text/css" href="../dist/leaflet.css">
+	<link rel="stylesheet" type="text/css" href="../src/scrollbar/jquery.mCustomScrollbar.css">
+	<link rel="stylesheet" type="text/css" href="../dist/dialog/vex.css" />
+	<link rel="stylesheet" type="text/css" href="../dist/dialog/vex-theme-plain.css" />
+</head>
+<body>
+	<div id="mocha"></div>
+	<script src="expect.js"></script>
+	<script type="text/javascript" src="../node_modules/mocha/mocha.js"></script>
+	<script type="text/javascript" src="../node_modules/happen/happen.js"></script>
+	<script type="text/javascript" src="sinon.js"></script>
+	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
+	<script>window.jQuery || document.write('<script src="../src/scrollbar/jquery-1.11.0.min.js"><\/script>')</script>
+	<script src="../src/scrollbar/jquery.mCustomScrollbar.js"></script>
+	<script src="../dist/dialog/vex.combined.min.js"></script>
+	<script>vex.defaultOptions.className = 'vex-theme-plain';</script>
+
+	<!-- source files -->
+	<script type="text/javascript" src="../build/deps.js"></script>
+
+	<script type="text/javascript" src="../debug/leaflet-include.js"></script>
+
+	<script>
+		mocha.setup({
+			ui: 'bdd',
+			ignoreLeaks: true
+		});
+	</script>
+
+	<!-- spec files -->
+	<script type="text/javascript" src="tilebench/TileBenchSpec.js"></script>
+
+	<div id="document-container" style="top:300px">
+		<div id="clipboard-container"><textarea id="clipboard"></textarea></div>
+		<div id="map"></div>
+		<div id="scroll-container">
+			<div id="mock-document">
+			</div>
+		</div>
+	</div>
+
+	<script>
+		(window.mochaPhantomJS || window.mocha).run();
+	</script>
+</body>
+</html>
diff --git a/loleaflet/spec/tilebench/TileBenchSpec.js b/loleaflet/spec/tilebench/TileBenchSpec.js
new file mode 100644
index 0000000..46963e5
--- /dev/null
+++ b/loleaflet/spec/tilebench/TileBenchSpec.js
@@ -0,0 +1,93 @@
+describe('TileBench', function () {
+	// 20 s timeout
+	this.timeout(20000);
+	var map;
+	var loadCount = 0;
+
+	var log = function (msg) {
+		// write custom log messages
+		var cont = document.getElementById('mocha-report');
+		var li = document.createElement('li');
+		li.style.class = 'test pass';
+		li.innerHTML = '<h2>' + msg + '</h2>';
+		cont.appendChild(li);
+	}
+
+	before(function () {
+		// initialize the map and load the document
+		map = L.map('map', 'scroll-container', 'mock-document', {
+			center: [0, 0],
+			zoom: 10,
+			minZoom: 1,
+			maxZoom: 20,
+			server: 'ws://localhost:9980',
+			doubleClickZoom: false
+		});
+
+		var docLayer = new L.TileLayer('', {
+			doc: 'file:///home/mihai/Desktop/test_docs/eval.odt',
+			useSocket : true,
+			edit: true,
+			readOnly: false
+		});
+		map.addLayer(docLayer);
+
+		////// Scrollbar /////
+		(function($){
+				$("#scroll-container").mCustomScrollbar({
+					axis: 'yx',
+					theme: 'dark-thick',
+					scrollInertia: 0,
+					callbacks:{
+						onScroll: function(){
+							docLayer._onScrollEnd(this);
+						},
+						whileScrolling: function(){
+							docLayer._onScroll(this);
+						},
+						alwaysTriggerOffsets:false
+					}
+				});
+		})(jQuery);
+	});
+
+	afterEach(function () {
+		map.off('alltilesloaded');
+	});
+
+	after(function () {
+		map.socket.onclose = undefined;
+		map.socket.onerror = undefined;
+		map.socket.close();
+	});
+
+	describe('Benchmarking', function () {
+		it('Load all new tiles', function (done) {
+			map.on('alltilesloaded', L.bind(function () {
+				loadCount += 1;
+				console.log(loadCount);
+				done();
+			}, done));
+
+		});
+
+		it('Scroll to the bottom', function (done) {
+			$('#scroll-container').mCustomScrollbar('scrollTo', 'bottom', {scrollInertia: 3000});
+			// check how we're doing 200ms after the scroll has ended
+			// (allow enough time to request new tiles)
+			this.timeOut = setTimeout(L.bind(function () {
+				if (map._docLayer._emptyTilesCount === 0) {
+					// no pending tile requests
+					done();
+				}
+				else {
+					map.on('alltilesloaded', L.bind(function () {
+						loadCount += 1;
+						clearTimeout(this.timeOut);
+						done();
+					}, done));
+				}
+			}, done), 3200);
+		});
+	});
+});
commit d0553171751de7978a2cf7294bbbe81c2a65f579
Author: Mihai Varga <mihai.varga at collabora.com>
Date:   Thu Jul 23 15:45:08 2015 +0300

    loleaflet: notify when all empty tiles have loaded
    
    Will be used for testing

diff --git a/loleaflet/src/layer/tile/GridLayer.js b/loleaflet/src/layer/tile/GridLayer.js
index c82490f..4596868 100644
--- a/loleaflet/src/layer/tile/GridLayer.js
+++ b/loleaflet/src/layer/tile/GridLayer.js
@@ -523,6 +523,7 @@ L.GridLayer = L.Layer.extend({
 						delete this._tiles[key];
 					}
 				}
+				this._emptyTilesCount = 0;
 			}
 
 			// if its the first batch of tiles to load
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 67c9f88..3b54132 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -90,6 +90,7 @@ L.TileLayer = L.GridLayer.extend({
 			}),
 			draggable: true
 		});
+		this._emptyTilesCount = 0;
 		this._textArea = L.DomUtil.get('clipboard');
 		this._textArea.focus();
 	},
@@ -162,6 +163,7 @@ L.TileLayer = L.GridLayer.extend({
 		 http://www.w3.org/TR/WCAG20-TECHS/H67
 		*/
 		tile.alt = '';
+		this._emptyTilesCount += 1;
 		return tile;
 	},
 
@@ -386,6 +388,13 @@ L.TileLayer = L.GridLayer.extend({
 				if (this._tiles[key]._invalidCount > 0) {
 					this._tiles[key]._invalidCount -= 1;
 				}
+				if (!tile.loaded) {
+					this._emptyTilesCount -= 1;
+					if (this._emptyTilesCount === 0) {
+						console.log('alltilesloaded');
+						this._map.fire('alltilesloaded');
+					}
+				}
 				tile.el.src = img;
 			}
 			else {


More information about the Libreoffice-commits mailing list