6 changed files with 161 additions and 1 deletions
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
resource pdf.js content/ |
||||
component {6457a96b-2d68-439a-bcfa-44465fbcdbb1} components/PdfStreamConverter.js |
||||
contract @mozilla.org/streamconv;1?from=application/pdf&to=*/* {6457a96b-2d68-439a-bcfa-44465fbcdbb1} |
||||
|
||||
# Additional resources for pdf.js |
||||
|
||||
# PDFJS_SUPPORTED_LOCALES |
||||
|
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
DEPTH = ../../../.. |
||||
topsrcdir = @top_srcdir@ |
||||
srcdir = @srcdir@ |
||||
VPATH = @srcdir@ |
||||
relativesrcdir = browser/extensions/pdfjs/test |
||||
|
||||
include $(DEPTH)/config/autoconf.mk |
||||
include $(topsrcdir)/config/rules.mk |
||||
|
||||
_BROWSER_TEST_FILES = \
|
||||
head.js \
|
||||
browser_pdfjs_main.js \
|
||||
file_pdfjs_test.pdf \
|
||||
$(NULL) |
||||
|
||||
libs:: $(_BROWSER_TEST_FILES) |
||||
$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/browser/$(relativesrcdir) |
@ -0,0 +1,102 @@
@@ -0,0 +1,102 @@
|
||||
/* Any copyright is dedicated to the Public Domain. |
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/ |
||||
|
||||
const RELATIVE_DIR = "browser/extensions/pdfjs/test/"; |
||||
const TESTROOT = "http://example.com/browser/" + RELATIVE_DIR; |
||||
|
||||
function test() { |
||||
waitForExplicitFinish(); |
||||
|
||||
var tab = gBrowser.addTab(TESTROOT + "file_pdfjs_test.pdf"); |
||||
var newTabBrowser = gBrowser.getBrowserForTab(tab); |
||||
newTabBrowser.addEventListener("pagechange", function onPageChange() { |
||||
newTabBrowser.removeEventListener("pagechange", onPageChange, true); |
||||
|
||||
var document = newTabBrowser.contentDocument, |
||||
window = newTabBrowser.contentWindow; |
||||
|
||||
//
|
||||
// Overall sanity tests
|
||||
//
|
||||
ok(document.querySelector('div#viewer'), "document content has viewer UI"); |
||||
ok('PDFJS' in window.wrappedJSObject, "window content has PDFJS object"); |
||||
|
||||
//
|
||||
// Sidebar: open
|
||||
//
|
||||
var sidebar = document.querySelector('button#sidebarToggle'), |
||||
outerContainer = document.querySelector('div#outerContainer'); |
||||
|
||||
sidebar.click(); |
||||
ok(outerContainer.classList.contains('sidebarOpen'), 'sidebar opens on click'); |
||||
|
||||
// Thumbnails are created asynchronously - wait for them
|
||||
waitForElement(document, 'canvas#thumbnail2', function(error) { |
||||
if (error) |
||||
finish(); |
||||
|
||||
//
|
||||
// Page change from thumbnail click
|
||||
//
|
||||
var pageNumber = document.querySelector('input#pageNumber'); |
||||
is(parseInt(pageNumber.value), 1, 'initial page is 1'); |
||||
|
||||
var thumbnail = document.querySelector('canvas#thumbnail2'); |
||||
ok(thumbnail, 'thumbnail2 is available'); |
||||
if (thumbnail) { |
||||
thumbnail.click(); |
||||
is(parseInt(pageNumber.value), 2, 'clicking on thumbnail changes page'); |
||||
} |
||||
|
||||
//
|
||||
// Sidebar: close
|
||||
//
|
||||
sidebar.click(); |
||||
ok(!outerContainer.classList.contains('sidebarOpen'), 'sidebar closes on click'); |
||||
|
||||
//
|
||||
// Page change from prev/next buttons
|
||||
//
|
||||
var prevPage = document.querySelector('button#previous'), |
||||
nextPage = document.querySelector('button#next'); |
||||
|
||||
nextPage.click(); |
||||
is(parseInt(pageNumber.value), 2, 'page increases after clicking on next'); |
||||
|
||||
prevPage.click(); |
||||
is(parseInt(pageNumber.value), 1, 'page decreases after clicking on previous'); |
||||
|
||||
//
|
||||
// Bookmark button
|
||||
//
|
||||
var viewBookmark = document.querySelector('a#viewBookmark'); |
||||
viewBookmark.click(); |
||||
ok(viewBookmark.href.length > 0, 'viewBookmark button has href'); |
||||
|
||||
//
|
||||
// Zoom in/out
|
||||
//
|
||||
var zoomOut = document.querySelector('button.zoomOut'), |
||||
zoomIn = document.querySelector('button.zoomIn'); |
||||
|
||||
// Zoom in
|
||||
var oldWidth = document.querySelector('canvas#page1').width; |
||||
zoomIn.click(); |
||||
var newWidth = document.querySelector('canvas#page1').width; |
||||
ok(oldWidth < newWidth, 'zooming in increases page width (old: '+oldWidth+', new: '+newWidth+')'); |
||||
|
||||
// Zoom out
|
||||
var oldWidth = document.querySelector('canvas#page1').width; |
||||
zoomOut.click(); |
||||
var newWidth = document.querySelector('canvas#page1').width; |
||||
ok(oldWidth > newWidth, 'zooming out decreases page width (old: '+oldWidth+', new: '+newWidth+')'); |
||||
|
||||
finish(); |
||||
}); |
||||
}, true, true); |
||||
|
||||
registerCleanupFunction(function() { |
||||
gBrowser.removeTab(tab); |
||||
}); |
||||
} |
Binary file not shown.
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
// Waits for element 'el' to exist in the DOM of 'doc' before executing 'callback'
|
||||
// Useful when elements are created asynchronously, e.g. after a Web Worker task
|
||||
function waitForElement(doc, el, callback) { |
||||
var time = 0, |
||||
interval = 10, |
||||
timeout = 5000; |
||||
|
||||
var checkEl = setInterval(function() { |
||||
if (doc.querySelector(el)) { |
||||
clearInterval(checkEl); |
||||
if (callback) callback(); |
||||
} |
||||
|
||||
time += interval; |
||||
if (time > timeout) { |
||||
ok(false, 'waitForElement timed out on element: '+el); |
||||
clearInterval(checkEl); |
||||
if (callback) callback(true); |
||||
} |
||||
}, interval); |
||||
} |
Loading…
Reference in new issue