Index: chrome/test/data/pdf/nameddestinations_test.js |
diff --git a/chrome/test/data/pdf/nameddestinations_test.js b/chrome/test/data/pdf/nameddestinations_test.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..987e69836f0afc29e9cf596f08dcb3e021fa02af |
--- /dev/null |
+++ b/chrome/test/data/pdf/nameddestinations_test.js |
@@ -0,0 +1,134 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
raymes
2015/01/28 01:33:45
We could really split this into 2 files:
params_pa
Deepak
2015/01/28 05:57:24
Done.
|
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+var tests = [ |
+ /** |
+ * Test named destinations by navigate. |
+ */ |
+ function testNamedDestinationsByNavigate() { |
raymes
2015/01/28 01:33:45
nit: testNavigate
Deepak
2015/01/28 05:57:24
Done.
|
+ var mockWindow = new MockWindow(100, 100); |
+ var mockSizer = new MockSizer(); |
+ var mockCallback = new MockViewportChangedCallback(); |
+ var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
+ function() {}, function() {}, 0, 0); |
+ |
+ var paramsParser = new OpenPDFParamsParser(); |
+ paramsParser.namedDestinations['US'] = 0; |
+ paramsParser.namedDestinations['UY'] = 2; |
+ var url = "http://xyz.pdf"; |
+ var navigator = new Navigator(url, viewport, paramsParser); |
raymes
2015/01/28 01:33:45
Can we change Navigator to also pass in:
-A functi
Deepak
2015/01/28 05:57:24
Done.
|
+ |
+ var documentDimensions = new MockDocumentDimensions(); |
+ |
raymes
2015/01/28 01:33:45
nit: no need for a blank line
Deepak
2015/01/28 05:57:24
Done.
|
+ documentDimensions.addPage(100, 100); |
+ documentDimensions.addPage(200, 200); |
+ documentDimensions.addPage(100, 400); |
+ viewport.setDocumentDimensions(documentDimensions); |
+ viewport.setZoom(1); |
+ |
+ mockCallback.reset(); |
+ // This should move viewport to page 0. |
+ navigator.navigate(url + "#US", false); |
+ chrome.test.assertTrue(mockCallback.wasCalled); |
+ chrome.test.assertEq(0, viewport.position.x); |
+ chrome.test.assertEq(0, viewport.position.y); |
+ |
+ mockCallback.reset(); |
+ // This shouldl open "http://xyz.pdf#US" in newTab. So current tab viewport |
raymes
2015/01/28 01:33:45
nit: shouldl->should
nit: newTab->a new tab
Deepak
2015/01/28 05:57:24
Done.
|
+ // should not change and viewport position should remain same. |
+ navigator.navigate(url + "#US", true); |
+ chrome.test.assertFalse(mockCallback.wasCalled); |
+ chrome.test.assertEq(0, viewport.position.x); |
+ chrome.test.assertEq(0, viewport.position.y); |
+ |
+ mockCallback.reset(); |
+ // This should move viewport to page 2. |
+ navigator.navigate(url + "#UY", false); |
+ chrome.test.assertTrue(mockCallback.wasCalled); |
+ chrome.test.assertEq(0, viewport.position.x); |
+ chrome.test.assertEq(300, viewport.position.y); |
+ |
+ mockCallback.reset(); |
+ // #ABC is not a nemeddestination in the page so viewport should not change |
raymes
2015/01/28 01:33:45
nit: nemeddestination->named destination
Deepak
2015/01/28 05:57:24
Done.
|
+ // and viewport position should remain same. |
+ navigator.navigate(url + "#ABC", false); |
+ chrome.test.assertFalse(mockCallback.wasCalled); |
+ chrome.test.assertEq(0, viewport.position.x); |
+ chrome.test.assertEq(300, viewport.position.y); |
+ |
+ chrome.test.succeed(); |
+ }, |
+ |
+ /** |
+ * Test named destinations by getViewportFromUrlParams. |
+ */ |
+ function testNamedDestinations() { |
raymes
2015/01/28 01:33:45
nit: testParamsParser
Deepak
2015/01/28 05:57:24
Done.
Deepak
2015/01/28 05:57:24
Done.
|
+ var paramsParser = new OpenPDFParamsParser(); |
+ // Assigning page number for #nameddests. |
+ paramsParser.namedDestinations['RU'] = 26; |
+ paramsParser.namedDestinations['US'] = 0; |
+ paramsParser.namedDestinations['UY'] = 22; |
+ |
+ var url = "http://xyz.pdf"; |
+ |
+ // Checking #nameddest. |
+ var urlParams = paramsParser.getViewportFromUrlParams(url + "#RU"); |
+ chrome.test.assertEq(urlParams.page, 26); |
+ |
+ // Checking #nameddest=name. |
+ urlParams = paramsParser.getViewportFromUrlParams(url + "#nameddest=US"); |
+ chrome.test.assertEq(urlParams.page, 0); |
+ |
+ // Checking #page=pagenum nameddest.The document first page has a pagenum |
+ // value of 1. |
+ urlParams = paramsParser.getViewportFromUrlParams(url + "#page=6"); |
+ chrome.test.assertEq(urlParams.page, 5); |
+ |
+ // Checking #zoom=scale. |
+ urlParams = paramsParser.getViewportFromUrlParams(url + "#zoom=200"); |
+ chrome.test.assertEq(urlParams.zoom, 2); |
+ |
+ // Checking #zoom=scale,left,top. |
+ urlParams = paramsParser.getViewportFromUrlParams(url + |
+ "#zoom=200,100,200"); |
raymes
2015/01/28 01:33:45
nit: indentation. Use 4 space indent
Deepak
2015/01/28 05:57:24
Done.
|
+ chrome.test.assertEq(urlParams.zoom, 2); |
+ chrome.test.assertEq(urlParams.position.x, 100); |
+ chrome.test.assertEq(urlParams.position.y, 200); |
+ |
+ // Checking #nameddest=name and zoom=scale. |
+ urlParams = paramsParser.getViewportFromUrlParams(url + |
+ "#nameddest=UY&zoom=150"); |
+ chrome.test.assertEq(urlParams.page, 22); |
+ chrome.test.assertEq(urlParams.zoom, 1.5); |
+ |
+ // Checking #page=pagenum and zoom=scale. |
+ urlParams = paramsParser.getViewportFromUrlParams(url + |
+ "#page=2&zoom=250"); |
+ chrome.test.assertEq(urlParams.page, 1); |
+ chrome.test.assertEq(urlParams.zoom, 2.5); |
+ |
+ // Checking #nameddest=name and zoom=scale,left,top. |
+ urlParams = paramsParser.getViewportFromUrlParams(url + |
+ "#nameddest=UY&zoom=150,100,200"); |
+ chrome.test.assertEq(urlParams.page, 22); |
+ chrome.test.assertEq(urlParams.zoom, 1.5); |
+ chrome.test.assertEq(urlParams.position.x, 100); |
+ chrome.test.assertEq(urlParams.position.y, 200); |
+ |
+ // Checking #page=pagenum and zoom=scale,left,top. |
+ urlParams = paramsParser.getViewportFromUrlParams(url + |
+ "#page=2&zoom=250,100,200"); |
+ chrome.test.assertEq(urlParams.page, 1); |
+ chrome.test.assertEq(urlParams.zoom, 2.5); |
+ chrome.test.assertEq(urlParams.position.x, 100); |
+ chrome.test.assertEq(urlParams.position.y, 200); |
+ |
+ chrome.test.succeed(); |
+ } |
+]; |
+ |
+var scriptingAPI = new PDFScriptingAPI(window, window); |
+scriptingAPI.setLoadCallback(function() { |
+ chrome.test.runTests(tests); |
+}); |