summaryrefslogtreecommitdiffstats
path: root/chrome/test/data
diff options
context:
space:
mode:
authorraymes <raymes@chromium.org>2015-08-05 00:05:18 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-05 07:09:02 +0000
commitbd82a94bbc1738c60459dec25f4d9aa73f7baeab (patch)
tree20b89ede12a9abc6452d80446d5838d732ebbf11 /chrome/test/data
parentfa9f7f47739724fe1cba8ad17668edcabe9e213c (diff)
downloadchromium_src-bd82a94bbc1738c60459dec25f4d9aa73f7baeab.zip
chromium_src-bd82a94bbc1738c60459dec25f4d9aa73f7baeab.tar.gz
chromium_src-bd82a94bbc1738c60459dec25f4d9aa73f7baeab.tar.bz2
Add a scroll offset to PDF documents to account for the top material design toolbar.
Previously the toolbar in the material design PDF UI would always cover the top of pages when it was first loaded or when a page was navigated to using the page selector. Now we ensure that a blank region is left at the very top of the document when it is first loaded. This is the region that the toolbar covers, so the document is not obscured at all. When pages are navigated to, we ensure that the top of the selected page is always underneath the toolbar so that it is not obscured. The one exception to this is when in fit-to-page mode which causes the page to be zoomed to cover the entire screen, ignoring the toolbar. This is so that users can take advantaging of filling all of the screen real-estate with a page when that is what they want. This is implemented by initially scrolling the document to a negative offset (which is equal to the toolbar height). All subsequent scrolls are relative to this initial scroll. A few small bugs that assumed there was no blank space above the first page have also been fixed. BUG=439114 Committed: https://crrev.com/daad0f1f879b13c8b55797ae5ce106d382283047 Cr-Commit-Position: refs/heads/master@{#341685} Review URL: https://codereview.chromium.org/1255403002 Cr-Commit-Position: refs/heads/master@{#341861}
Diffstat (limited to 'chrome/test/data')
-rw-r--r--chrome/test/data/pdf/basic_plugin_test.js3
-rw-r--r--chrome/test/data/pdf/navigator_test.js2
-rw-r--r--chrome/test/data/pdf/viewport_test.js63
3 files changed, 55 insertions, 13 deletions
diff --git a/chrome/test/data/pdf/basic_plugin_test.js b/chrome/test/data/pdf/basic_plugin_test.js
index 08d2714..fc73d54 100644
--- a/chrome/test/data/pdf/basic_plugin_test.js
+++ b/chrome/test/data/pdf/basic_plugin_test.js
@@ -18,7 +18,8 @@ var tests = [
viewer.viewport.setZoom(1);
var sizer = document.getElementById('sizer');
chrome.test.assertEq(826, sizer.offsetWidth);
- chrome.test.assertEq(1066, sizer.offsetHeight);
+ chrome.test.assertEq(1066 + viewer.viewport.topToolbarHeight_,
+ sizer.offsetHeight);
chrome.test.succeed();
},
diff --git a/chrome/test/data/pdf/navigator_test.js b/chrome/test/data/pdf/navigator_test.js
index 149fe2f..a7ffbbb 100644
--- a/chrome/test/data/pdf/navigator_test.js
+++ b/chrome/test/data/pdf/navigator_test.js
@@ -32,7 +32,7 @@ var tests = [
var mockSizer = new MockSizer();
var mockCallback = new MockViewportChangedCallback();
var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
- function() {}, function() {}, 0, 1);
+ function() {}, function() {}, 0, 1, 0);
var paramsParser = new OpenPDFParamsParser(function(name) {
if (name == 'US')
diff --git a/chrome/test/data/pdf/viewport_test.js b/chrome/test/data/pdf/viewport_test.js
index a513de9..1a45c63 100644
--- a/chrome/test/data/pdf/viewport_test.js
+++ b/chrome/test/data/pdf/viewport_test.js
@@ -6,7 +6,7 @@ var tests = [
function testDocumentNeedsScrollbars() {
var viewport =
new Viewport(new MockWindow(100, 100), new MockSizer(), function() {},
- function() {}, function() {}, 10, 1);
+ function() {}, function() {}, 10, 1, 0);
var scrollbars;
viewport.setDocumentDimensions(new MockDocumentDimensions(90, 90));
@@ -61,7 +61,7 @@ var tests = [
var mockWindow = new MockWindow(100, 100, mockSizer);
var mockCallback = new MockViewportChangedCallback();
var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
- function() {}, function() {}, 0, 1);
+ function() {}, function() {}, 0, 1, 0);
// Test setting the zoom without the document dimensions set. The sizer
// shouldn't change size.
@@ -136,7 +136,7 @@ var tests = [
function testGetMostVisiblePage() {
var mockWindow = new MockWindow(100, 100);
var viewport = new Viewport(mockWindow, new MockSizer(), function() {},
- function() {}, function() {}, 0, 1);
+ function() {}, function() {}, 0, 1, 0);
var documentDimensions = new MockDocumentDimensions(100, 100);
documentDimensions.addPage(50, 100);
@@ -186,7 +186,7 @@ var tests = [
var mockSizer = new MockSizer();
var mockCallback = new MockViewportChangedCallback();
var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
- function() {}, function() {}, 0, 1);
+ function() {}, function() {}, 0, 1, 0);
var documentDimensions = new MockDocumentDimensions();
// Test with a document width which matches the window width.
@@ -245,7 +245,7 @@ var tests = [
// fit to width, which will cause the page height to span outside of the
// viewport, triggering 15px scrollbars to be shown.
viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
- function() {}, function() {}, 15, 1);
+ function() {}, function() {}, 15, 1, 0);
documentDimensions.reset();
documentDimensions.addPage(50, 100);
viewport.setDocumentDimensions(documentDimensions);
@@ -264,7 +264,7 @@ var tests = [
var mockSizer = new MockSizer();
var mockCallback = new MockViewportChangedCallback();
var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
- function() {}, function() {}, 0, 1);
+ function() {}, function() {}, 0, 1, 0);
var documentDimensions = new MockDocumentDimensions();
// Test with a page size which matches the window size.
@@ -373,7 +373,7 @@ var tests = [
var mockSizer = new MockSizer();
var mockCallback = new MockViewportChangedCallback();
var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
- function() {}, function() {}, 0, 1);
+ function() {}, function() {}, 0, 1, 0);
var documentDimensions = new MockDocumentDimensions();
documentDimensions.addPage(100, 100);
@@ -414,7 +414,7 @@ var tests = [
var mockSizer = new MockSizer();
var mockCallback = new MockViewportChangedCallback();
var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
- function() {}, function() {}, 0, 1);
+ function() {}, function() {}, 0, 1, 0);
var documentDimensions = new MockDocumentDimensions();
documentDimensions.addPage(100, 100);
documentDimensions.addPage(200, 200);
@@ -469,7 +469,7 @@ var tests = [
chrome.test.assertEq(1, viewport.zoom);
};
viewport = new Viewport(mockWindow, mockSizer, function() {},
- beforeZoom, afterZoom, 0, 1);
+ beforeZoom, afterZoom, 0, 1, 0);
viewport.setZoom(0.5);
chrome.test.succeed();
},
@@ -477,7 +477,7 @@ var tests = [
function testInitialSetDocumentDimensionsZoomConstrained() {
var viewport =
new Viewport(new MockWindow(100, 100), new MockSizer(), function() {},
- function() {}, function() {}, 0, 1.2);
+ function() {}, function() {}, 0, 1.2, 0);
viewport.setDocumentDimensions(new MockDocumentDimensions(50, 50));
chrome.test.assertEq(1.2, viewport.zoom);
chrome.test.succeed();
@@ -486,11 +486,52 @@ var tests = [
function testInitialSetDocumentDimensionsZoomUnconstrained() {
var viewport = new Viewport(
new MockWindow(100, 100),
- new MockSizer(), function() {}, function() {}, function() {}, 0, 3);
+ new MockSizer(), function() {}, function() {}, function() {}, 0, 3, 0);
viewport.setDocumentDimensions(new MockDocumentDimensions(50, 50));
chrome.test.assertEq(2, viewport.zoom);
chrome.test.succeed();
},
+
+ function testToolbarHeightOffset() {
+ var mockSizer = new MockSizer();
+ var mockWindow = new MockWindow(100, 100);
+ var viewport = new Viewport(mockWindow,
+ mockSizer, function() {}, function() {}, function() {}, 0, 1, 50);
+ var documentDimensions = new MockDocumentDimensions(0, 0);
+ documentDimensions.addPage(50, 500);
+ viewport.setDocumentDimensions(documentDimensions);
+ viewport.setZoom(1);
+
+ // Check that the sizer incorporates the toolbar height.
+ chrome.test.assertEq('550px', mockSizer.style.height);
+ chrome.test.assertEq('50px', mockSizer.style.width);
+ chrome.test.assertEq(0, viewport.position.x);
+
+ // Check the sizer incorporates the toolbar height correctly even if zoomed.
+ viewport.setZoom(2);
+ chrome.test.assertEq('1050px', mockSizer.style.height);
+ chrome.test.assertEq('100px', mockSizer.style.width);
+
+ // Test that the viewport scrolls to the correct offset when fit-to-page is
+ // enabled. The top of the viewport should be at the start of the document.
+ viewport.fitToPage();
+ chrome.test.assertEq(0, viewport.position.y);
+
+ // Check that going to a page scrolls to the correct offset when fit-to-page
+ // is enabled. The top of the viewport should be at the start of the
+ // document.
+ mockWindow.scrollTo(0, 100);
+ viewport.goToPage(0);
+ chrome.test.assertEq(0, viewport.position.y);
+
+ // Check that going to a page scrolls to the correct offset when fit-to-page
+ // is not enabled. The top of the viewport should be before start of the
+ // document.
+ viewport.setZoom(1);
+ viewport.goToPage(0);
+ chrome.test.assertEq(-50, viewport.position.y);
+ chrome.test.succeed();
+ }
];
chrome.test.runTests(tests);