Index: chrome/browser/resources/pdf/pdf.js |
diff --git a/chrome/browser/resources/pdf/pdf.js b/chrome/browser/resources/pdf/pdf.js |
index bf37990457c9f6b3e8abd423690962e054d232bc..604a13f2c43bc61c84f2fe103de153ebabe82466 100644 |
--- a/chrome/browser/resources/pdf/pdf.js |
+++ b/chrome/browser/resources/pdf/pdf.js |
@@ -21,29 +21,67 @@ var sizer; |
// The toolbar element. |
var viewerToolbar; |
+// The page indicator element. |
+var viewerPageIndicator; |
+ |
+// The progress bar element. |
+var viewerProgressBar; |
+ |
// The viewport object. |
var viewport; |
+// The document dimensions. |
+var documentDimensions; |
+ |
// Returns true if the fit-to-page button is enabled. |
function isFitToPageEnabled() { |
return $('fit-to-page-button').classList.contains('polymer-selected'); |
} |
+function updateProgress(progress) { |
+ viewerProgressBar.progress = progress; |
+ if (progress == -1) { |
+ // Document load failed. |
+ sizer.style.display = 'none'; |
+ viewerToolbar.style.visibility = 'hidden'; |
+ } |
+} |
+ |
// Called when a message is received from the plugin. |
function handleMessage(message) { |
if (message.data.type == 'documentDimensions') { |
- viewport.setDocumentDimensions(message.data); |
+ documentDimensions = message.data; |
+ viewport.setDocumentDimensions(documentDimensions); |
+ viewerToolbar.style.visibility = 'visible'; |
+ viewerPageIndicator.initialFadeIn(); |
+ viewerToolbar.initialFadeIn(); |
+ } else if (message.data.type == 'loadProgress') { |
+ updateProgress(message.data['progress']); |
} |
} |
// Callback that's called when the viewport changes. |
-function viewportChangedCallback(zoom, x, y, scrollbarWidth, hasScrollbars) { |
+function viewportChangedCallback(zoom, |
+ x, |
+ y, |
+ scrollbarWidth, |
+ hasScrollbars, |
+ page) { |
// Offset the toolbar position so that it doesn't move if scrollbars appear. |
var toolbarRight = hasScrollbars.y ? 0 : scrollbarWidth; |
var toolbarBottom = hasScrollbars.x ? 0 : scrollbarWidth; |
viewerToolbar.style.right = toolbarRight + 'px'; |
viewerToolbar.style.bottom = toolbarBottom + 'px'; |
+ // Show or hide the page indicator. |
+ if (documentDimensions.pageDimensions.length > 1 && hasScrollbars.y) |
+ viewerPageIndicator.style.visibility = 'visible'; |
+ else |
+ viewerPageIndicator.style.visibility = 'hidden'; |
+ |
+ // Update the most visible page. |
+ viewerPageIndicator.text = page + 1; |
+ |
// Notify the plugin of the viewport change. |
plugin.postMessage({ |
type: 'viewport', |
@@ -56,6 +94,8 @@ function viewportChangedCallback(zoom, x, y, scrollbarWidth, hasScrollbars) { |
function load() { |
sizer = $('sizer'); |
viewerToolbar = $('toolbar'); |
+ viewerPageIndicator = $('page-indicator'); |
+ viewerProgressBar = $('progress-bar'); |
// Create the viewport. |
viewport = new Viewport(window, |