diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-07-17 13:57:45 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-07-19 13:44:40 +0000 |
commit | 6ec7b8da05d21a3878bd21c691b41e675d74bb1c (patch) | |
tree | b87f250bc19413750b9bb9cdbf2da20ef5014820 /chromium/chrome/browser/resources/pdf | |
parent | ec02ee4181c49b61fce1c8fb99292dbb8139cc90 (diff) |
BASELINE: Update Chromium to 60.0.3112.70
Change-Id: I9911c2280a014d4632f254857876a395d4baed2d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/chrome/browser/resources/pdf')
37 files changed, 571 insertions, 539 deletions
diff --git a/chromium/chrome/browser/resources/pdf/OWNERS b/chromium/chrome/browser/resources/pdf/OWNERS index d58e343b460..fe12ac0938b 100644 --- a/chromium/chrome/browser/resources/pdf/OWNERS +++ b/chromium/chrome/browser/resources/pdf/OWNERS @@ -1,3 +1,3 @@ -raymes@chromium.org +dsinclair@chromium.org # COMPONENT: Internals>Plugins>PDF diff --git a/chromium/chrome/browser/resources/pdf/browser_api.js b/chromium/chrome/browser/resources/pdf/browser_api.js index 28f17b9d1da..c29559a55b9 100644 --- a/chromium/chrome/browser/resources/pdf/browser_api.js +++ b/chromium/chrome/browser/resources/pdf/browser_api.js @@ -150,7 +150,7 @@ class BrowserApi { listener(zoomChangeInfo.newZoomFactor); }.bind(this)); } -}; +} /** * Enumeration of ways to manage zoom changes. diff --git a/chromium/chrome/browser/resources/pdf/compiled_resources2.gyp b/chromium/chrome/browser/resources/pdf/compiled_resources2.gyp new file mode 100644 index 00000000000..a5d9dfe40b8 --- /dev/null +++ b/chromium/chrome/browser/resources/pdf/compiled_resources2.gyp @@ -0,0 +1,28 @@ +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# TODO(dpapad): Add compile targets for all files, crbug.com/721073. +{ + 'targets': [ + { + 'target_name': 'gesture_detector', + 'includes': ['../../../../third_party/closure_compiler/compile_js2.gypi'], + }, + { + 'target_name': 'open_pdf_params_parser', + 'includes': ['../../../../third_party/closure_compiler/compile_js2.gypi'], + }, + { + 'target_name': 'pdf_scripting_api', + 'dependencies': [ + '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert', + ], + 'includes': ['../../../../third_party/closure_compiler/compile_js2.gypi'], + }, + { + 'target_name': 'viewport_scroller', + 'includes': ['../../../../third_party/closure_compiler/compile_js2.gypi'], + }, + ], +} diff --git a/chromium/chrome/browser/resources/pdf/elements/shared-icon-style.css b/chromium/chrome/browser/resources/pdf/elements/shared-icon-style.css deleted file mode 100644 index 59037556c74..00000000000 --- a/chromium/chrome/browser/resources/pdf/elements/shared-icon-style.css +++ /dev/null @@ -1,15 +0,0 @@ -/* Copyright 2015 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -:root { - --iron-icon-height: 20px; - --iron-icon-width: 20px; - --paper-icon-button: { - height: 32px; - padding: 6px; - width: 32px; - }; - --paper-icon-button-ink-color: rgb(189, 189, 189); - --viewer-icon-ink-color: rgb(189, 189, 189); -} diff --git a/chromium/chrome/browser/resources/pdf/elements/shared-vars.html b/chromium/chrome/browser/resources/pdf/elements/shared-vars.html new file mode 100644 index 00000000000..f67f2b48af2 --- /dev/null +++ b/chromium/chrome/browser/resources/pdf/elements/shared-vars.html @@ -0,0 +1,16 @@ +<link rel="import" href="chrome://resources/polymer/v1_0/paper-styles/color.html"> + +<style is="custom-style"> + html { + --primary-text-color: var(--paper-grey-900); + --iron-icon-height: 20px; + --iron-icon-width: 20px; + --paper-icon-button: { + height: 32px; + padding: 6px; + width: 32px; + }; + --paper-icon-button-ink-color: rgb(189, 189, 189); + --viewer-icon-ink-color: rgb(189, 189, 189); + } +</style> diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-bookmark/viewer-bookmark.css b/chromium/chrome/browser/resources/pdf/elements/viewer-bookmark/viewer-bookmark.css deleted file mode 100644 index 74ac2728bd5..00000000000 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-bookmark/viewer-bookmark.css +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2015 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -#item { - @apply(--layout-center); - @apply(--layout-horizontal); - color: rgb(80, 80, 80); - cursor: pointer; - font-size: 77.8%; - height: 30px; - position: relative; -} - -#item:hover { - background-color: rgb(237, 237, 237); - color: rgb(20, 20, 20); -} - -paper-ripple { - /* Allowing the ripple to capture pointer events prevents a focus rectangle - * for showing up for clicks, while still allowing it with tab-navigation. - * This undoes a paper-ripple bugfix aimed at non-Chrome browsers. - * TODO(tsergeant): Improve focus in viewer-bookmark so this can be removed - * (https://crbug.com/5448190). */ - pointer-events: auto; -} - -#title { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -#expand { - --iron-icon-height: 16px; - --iron-icon-width: 16px; - --paper-icon-button-ink-color: var(--paper-grey-900); - height: 28px; - min-width: 28px; - padding: 6px; - transition: transform 150ms; - width: 28px; -} - -:host-context([dir=rtl]) #expand { - transform: rotate(180deg); -} - -:host([children-shown]) #expand { - transform: rotate(90deg); -} diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-bookmark/viewer-bookmark.html b/chromium/chrome/browser/resources/pdf/elements/viewer-bookmark/viewer-bookmark.html index 0228cb835ff..7320212941e 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-bookmark/viewer-bookmark.html +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-bookmark/viewer-bookmark.html @@ -1,11 +1,59 @@ -<link rel="import" href="chrome://resources/cr_elements/icons.html"> <link rel="import" href="chrome://resources/html/polymer.html"> + +<link rel="import" href="chrome://resources/cr_elements/icons.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-ripple/paper-ripple.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-styles/color.html"> <dom-module id="viewer-bookmark" attributes="bookmark"> - <link rel="import" type="css" href="viewer-bookmark.css"> <template> + <style> + #item { + @apply(--layout-center); + @apply(--layout-horizontal); + cursor: pointer; + height: 30px; + position: relative; + } + + #item:hover { + background-color: rgb(237, 237, 237); + } + + paper-ripple { + /* Allowing the ripple to capture pointer events prevents a focus + * rectangle for showing up for clicks, while still allowing it with + * tab-navigation. This undoes a paper-ripple bug fix aimed at + * non-Chrome browsers. TODO(tsergeant): Improve focus in + * viewer-bookmark so this can be removed (https://crbug.com/5448190). + */ + pointer-events: auto; + } + + #title { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + #expand { + --iron-icon-height: 16px; + --iron-icon-width: 16px; + --paper-icon-button-ink-color: var(--paper-grey-900); + height: 28px; + min-width: 28px; + padding: 6px; + transition: transform 150ms; + width: 28px; + } + + :host-context([dir=rtl]) #expand { + transform: rotate(180deg); + } + + :host([children-shown]) #expand { + transform: rotate(90deg); + } + </style> <div id="item" on-click="onClick"> <paper-ripple></paper-ripple> <paper-icon-button id="expand" icon="cr:chevron-right" @@ -15,12 +63,12 @@ </div> <!-- dom-if will stamp the complex bookmark tree lazily as individual nodes are opened. --> - <template is="dom-if" if="{{childrenShown}}" id="sub-bookmarks"> - <template is="dom-repeat" items="{{bookmark.children}}"> + <template is="dom-if" if="[[childrenShown]]" id="sub-bookmarks"> + <template is="dom-repeat" items="[[bookmark.children]]"> <viewer-bookmark bookmark="{{item}}" depth="{{childDepth}}"> </viewer-bookmark> </template> </template> </template> + <script src="viewer-bookmark.js"></script> </dom-module> -<script src="viewer-bookmark.js"></script> diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-bookmarks-content/viewer-bookmarks-content.html b/chromium/chrome/browser/resources/pdf/elements/viewer-bookmarks-content/viewer-bookmarks-content.html index f6bfcafe557..2277ec4d941 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-bookmarks-content/viewer-bookmarks-content.html +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-bookmarks-content/viewer-bookmarks-content.html @@ -1,11 +1,12 @@ <link rel="import" href="chrome://resources/html/polymer.html"> + <link rel="import" href="../viewer-bookmark/viewer-bookmark.html"> <dom-module id="viewer-bookmarks-content"> <template> - <template is="dom-repeat" items="{{bookmarks}}"> + <template is="dom-repeat" items="[[bookmarks]]"> <viewer-bookmark bookmark="{{item}}" depth="0"></viewer-bookmark> </template> </template> + <script src="viewer-bookmarks-content.js"></script> </dom-module> -<script src="viewer-bookmarks-content.js"></script> diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.css b/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.css deleted file mode 100644 index e1e91bd9b39..00000000000 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.css +++ /dev/null @@ -1,7 +0,0 @@ -/* Copyright 2015 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -.last-item { - margin-bottom: 24px; -} diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.html b/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.html index cdadea281b5..3dccd91dc8b 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.html +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.html @@ -1,22 +1,24 @@ <link rel="import" href="chrome://resources/html/polymer.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/animations/fade-in-animation.html"> +<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html"> +<link rel="import" href="chrome://resources/cr_elements/shared_style_css.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/paper-dialog/paper-dialog.html"> <dom-module id="viewer-error-screen"> - <link rel="import" type="css" href="viewer-error-screen.css"> <template> - <paper-dialog id="dialog" modal no-cancel-on-esc-key - entry-animation="fade-in-animation"> - <div id="load-failed-message" class="last-item"> - {{strings.pageLoadFailed}} + <style include="cr-shared-style"></style> + <dialog is="cr-dialog" id="dialog" no-cancel> + <div class="title"> + [[strings.errorDialogTitle]] </div> - <div class="buttons" hidden$="{{!reloadFn}}"> - <paper-button on-click="reload" autofocus> - {{strings.pageReload}} + <div class="body"> + [[strings.pageLoadFailed]] + </div> + <div class="button-container" hidden$="[[!reloadFn]]"> + <paper-button class="action-button" on-click="reload"> + [[strings.pageReload]] </paper-button> </div> - </paper-dialog> + </dialog> </template> + <script src="viewer-error-screen.js"></script> </dom-module> -<script src="viewer-error-screen.js"></script> diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.js b/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.js index 4e461b6ad02..29951a43c1b 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.js +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-error-screen/viewer-error-screen.js @@ -5,27 +5,13 @@ Polymer({ is: 'viewer-error-screen', properties: { - reloadFn: { - type: Object, - value: null, - observer: 'reloadFnChanged_' - }, + reloadFn: Object, strings: Object, }, - reloadFnChanged_: function() { - // The default margins in paper-dialog don't work well with hiding/showing - // the .buttons div. We need to manually manage the bottom margin to get - // around this. - if (this.reloadFn) - this.$['load-failed-message'].classList.remove('last-item'); - else - this.$['load-failed-message'].classList.add('last-item'); - }, - show: function() { - this.$.dialog.open(); + this.$.dialog.showModal(); }, reload: function() { diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-page-indicator/viewer-page-indicator.css b/chromium/chrome/browser/resources/pdf/elements/viewer-page-indicator/viewer-page-indicator.css deleted file mode 100644 index 00bc266116a..00000000000 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-page-indicator/viewer-page-indicator.css +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2013 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -:host { - pointer-events: none; - position: fixed; - right: 0; - transition: opacity 400ms ease-in-out; -} - -#text { - background-color: rgba(0, 0, 0, 0.5); - border-radius: 5px; - color: white; - float: left; - font-family: sans-serif; - font-size: 12px; - font-weight: bold; - line-height: 48px; - text-align: center; - text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8); - width: 62px; -} - -#triangle-right { - border-bottom: 6px solid transparent; - border-left: 8px solid rgba(0, 0, 0, 0.5); - border-top: 6px solid transparent; - display: inline; - float: left; - height: 0; - margin-top: 18px; - width: 0; -}
\ No newline at end of file diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-page-indicator/viewer-page-indicator.html b/chromium/chrome/browser/resources/pdf/elements/viewer-page-indicator/viewer-page-indicator.html index 970e0a6a4ba..19f05ee2fde 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-page-indicator/viewer-page-indicator.html +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-page-indicator/viewer-page-indicator.html @@ -1,10 +1,42 @@ <link rel="import" href="chrome://resources/html/polymer.html"> <dom-module id="viewer-page-indicator"> - <link rel="import" type="css" href="viewer-page-indicator.css"> <template> + <style> + :host { + pointer-events: none; + position: fixed; + right: 0; + transition: opacity 400ms ease-in-out; + } + + #text { + background-color: rgba(0, 0, 0, 0.5); + border-radius: 5px; + color: white; + float: left; + font-family: sans-serif; + font-size: 12px; + font-weight: bold; + line-height: 48px; + text-align: center; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8); + width: 62px; + } + + #triangle-right { + border-bottom: 6px solid transparent; + border-left: 8px solid rgba(0, 0, 0, 0.5); + border-top: 6px solid transparent; + display: inline; + float: left; + height: 0; + margin-top: 18px; + width: 0; + } + </style> <div id="text">{{label}}</div> <div id="triangle-right"></div> </template> + <script src="viewer-page-indicator.js"></script> </dom-module> -<script src="viewer-page-indicator.js"></script> diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector/viewer-page-selector.css b/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector/viewer-page-selector.css deleted file mode 100644 index 78c4e5ac23c..00000000000 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector/viewer-page-selector.css +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright 2015 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -:host { - color: #fff; - font-size: 94.4%; -} - -:host ::selection { - background: rgba(255, 255, 255, 0.3); -} - -#pageselector { - --paper-input-container-underline: { - visibility: hidden; - }; - --paper-input-container-underline-focus: { - visibility: hidden; - }; - display: inline-block; - padding: 0; - width: 1ch; -} - -#input { - -webkit-margin-start: -3px; - color: #fff; - line-height: 18px; - padding: 3px; - text-align: end; - vertical-align: baseline; -} - -#input:focus, -#input:hover { - background-color: rgba(0, 0, 0, 0.5); - border-radius: 2px; -} - -#slash { - padding: 0 3px; -} - -#pagelength-spacer { - display: inline-block; - text-align: start; -} - -#slash, -#pagelength { - font-size: 76.5%; -} diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector/viewer-page-selector.html b/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector/viewer-page-selector.html index bebbd75400c..e0edf8a39e2 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector/viewer-page-selector.html +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector/viewer-page-selector.html @@ -3,8 +3,55 @@ <link rel="import" href="chrome://resources/polymer/v1_0/paper-input/paper-input-container.html"> <dom-module id="viewer-page-selector"> - <link rel="import" type="css" href="viewer-page-selector.css"> <template> + <style> + :host { + color: #fff; + font-size: 123%; + } + + :host ::selection { + background: rgba(255, 255, 255, 0.3); + } + + #pageselector { + --container: { visibility: hidden; }; + --paper-input-container-underline: var(--container); + --paper-input-container-underline-focus: var(--container); + display: inline-block; + padding: 0; + width: 1ch; + } + + #input { + -webkit-margin-start: -3px; + color: #fff; + line-height: 18px; + padding: 3px; + text-align: end; + vertical-align: baseline; + } + + #input:focus, + #input:hover { + background-color: rgba(0, 0, 0, 0.5); + border-radius: 2px; + } + + #slash { + padding: 0 3px; + } + + #pagelength-spacer { + display: inline-block; + text-align: start; + } + + #slash, + #pagelength { + font-size: 81%; + } + </style> <paper-input-container id="pageselector" no-label-float> <input id="input" is="iron-input" value="{{pageNo}}" prevent-invalid-input allowed-pattern="\d" on-mouseup="select" @@ -15,5 +62,5 @@ <span id="pagelength">{{docLength}}</span> </span> </template> + <script src="viewer-page-selector.js"></script> </dom-module> -<script src="viewer-page-selector.js"></script> diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-password-screen/viewer-password-screen.html b/chromium/chrome/browser/resources/pdf/elements/viewer-password-screen/viewer-password-screen.html index 343f579f437..fe925120f94 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-password-screen/viewer-password-screen.html +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-password-screen/viewer-password-screen.html @@ -1,30 +1,38 @@ <link rel="import" href="chrome://resources/html/polymer.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/animations/fade-in-animation.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/animations/fade-out-animation.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/paper-dialog/paper-dialog.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-input/paper-input.html"> +<link rel="import" href="chrome://resources/polymer/v1_0/paper-styles/color.html"> +<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html"> +<link rel="import" href="chrome://resources/cr_elements/shared_style_css.html"> <dom-module id="viewer-password-screen"> <template> - <style include="iron-flex iron-flex-alignment"></style> - <paper-dialog id="dialog" modal no-cancel-on-esc-key - entry-animation="fade-in-animation" exit-animation="fade-out-animation"> - <div id="message">{{strings.passwordPrompt}}</div> - <div class="horizontal layout start"> - <paper-input-container id="password-container" class="flex" - no-label-float invalid="[[invalid]]"> - <input is="iron-input" id="password" type="password" size="20" - on-keypress="handleKey" autofocus> - </input> - <paper-input-error>{{strings.passwordInvalid}}</paper-input-error> - </paper-input-container> - <paper-button id="submit" on-click="submit"> - {{strings.passwordSubmit}} + <style include="cr-shared-style"> + #password { + --paper-input-container-focus-color: var(--google-blue-500); + --paper-input-container-input: { + font-size: inherit; + }; + } + </style> + <dialog is="cr-dialog" id="dialog" no-cancel> + <div class="title">[[strings.passwordDialogTitle]]</div> + <div class="body"> + <div id="message">[[strings.passwordPrompt]]</div> + <paper-input id="password" + type="password" + error-message="[[strings.passwordInvalid]]" + invalid="[[invalid]]" + no-label-float + autofocus> + </paper-input> + </div> + <div class="button-container"> + <paper-button id="submit" class="action-button" on-click="submit"> + [[strings.passwordSubmit]] </paper-button> </div> - </paper-dialog> + </dialog> </template> + <script src="viewer-password-screen.js"></script> </dom-module> -<script src="viewer-password-screen.js"></script> diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-password-screen/viewer-password-screen.js b/chromium/chrome/browser/resources/pdf/elements/viewer-password-screen/viewer-password-screen.js index 2ba723e995a..0ca52a64a8e 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-password-screen/viewer-password-screen.js +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-password-screen/viewer-password-screen.js @@ -8,21 +8,20 @@ Polymer({ properties: { invalid: Boolean, - active: { - type: Boolean, - value: false, - observer: 'activeChanged' - }, - strings: Object, }, - ready: function() { - this.activeChanged(); + get active() { + return this.$.dialog.open; + }, + + show: function() { + this.$.dialog.showModal(); }, - accept: function() { - this.active = false; + close: function() { + if (this.active) + this.$.dialog.close(); }, deny: function() { @@ -30,12 +29,7 @@ Polymer({ this.$.submit.disabled = false; this.invalid = true; this.$.password.focus(); - this.$.password.select(); - }, - - handleKey: function(e) { - if (e.keyCode == 13) - this.submit(); + this.$.password.inputElement.select(); }, submit: function() { @@ -45,13 +39,4 @@ Polymer({ this.$.submit.disabled = true; this.fire('password-submitted', {password: this.$.password.value}); }, - - activeChanged: function() { - if (this.active) { - this.$.dialog.open(); - this.$.password.focus(); - } else { - this.$.dialog.close(); - } - } }); diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-pdf-toolbar/viewer-pdf-toolbar.css b/chromium/chrome/browser/resources/pdf/elements/viewer-pdf-toolbar/viewer-pdf-toolbar.css deleted file mode 100644 index 37e8401816e..00000000000 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-pdf-toolbar/viewer-pdf-toolbar.css +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright 2015 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -:host ::selection { - background: rgba(255, 255, 255, 0.3); -} - -/* We introduce a wrapper aligner element to help with laying out the main - * toolbar content without changing the bottom-aligned progress bar. */ -#aligner { - @apply(--layout-horizontal); - @apply(--layout-center); - padding: 0 16px; - width: 100%; -} - -#title { - @apply(--layout-flex-5); - font-size: 77.8%; - font-weight: 500; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -#pageselector-container { - @apply(--layout-flex-1); - text-align: center; - /* The container resizes according to the width of the toolbar. On small - * screens with large numbers of pages, overflow page numbers without - * wrapping. */ - white-space: nowrap; -} - -#buttons { - @apply(--layout-flex-5); - -webkit-user-select: none; - text-align: end; -} - -paper-icon-button { - -webkit-margin-end: 12px; -} - -viewer-toolbar-dropdown { - -webkit-margin-end: 4px; -} - -paper-progress { - --paper-progress-active-color: var(--google-blue-300); - --paper-progress-container-color: transparent; - --paper-progress-height: 3px; - transition: opacity 150ms; - width: 100%; -} - -paper-toolbar { - --paper-toolbar-background: rgb(50, 54, 57); - --paper-toolbar-height: 48px; - @apply(--shadow-elevation-2dp); - color: rgb(241, 241, 241); - font-size: 1.5em; -} - -.invisible { - visibility: hidden; -} - -@media(max-width: 675px) { - #bookmarks, - #rotate-left { - display: none; - } - - #pageselector-container { - flex: 2; - } -} - -@media(max-width: 450px) { - #rotate-right { - display: none; - } -} - -@media(max-width: 400px) { - #buttons, - #pageselector-container { - display: none; - } -} diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-pdf-toolbar/viewer-pdf-toolbar.html b/chromium/chrome/browser/resources/pdf/elements/viewer-pdf-toolbar/viewer-pdf-toolbar.html index ca028bd0507..3935b7625f3 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-pdf-toolbar/viewer-pdf-toolbar.html +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-pdf-toolbar/viewer-pdf-toolbar.html @@ -13,10 +13,96 @@ <link rel="import" href="../viewer-toolbar-dropdown/viewer-toolbar-dropdown.html"> <dom-module id="viewer-pdf-toolbar"> - <link rel="import" type="css" href="../shared-icon-style.css"> - <link rel="import" type="css" href="viewer-pdf-toolbar.css"> <template> + <style> + :host ::selection { + background: rgba(255, 255, 255, 0.3); + } + /* We introduce a wrapper aligner element to help with laying out the main + * toolbar content without changing the bottom-aligned progress bar. */ + #aligner { + @apply(--layout-horizontal); + @apply(--layout-center); + padding: 0 8px; + width: 100%; + } + + #title { + @apply(--layout-flex-5); + font-size: 107%; + font-weight: 500; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + #pageselector-container { + @apply(--layout-flex-1); + text-align: center; + /* The container resizes according to the width of the toolbar. On small + * screens with large numbers of pages, overflow page numbers without + * wrapping. */ + white-space: nowrap; + } + + #buttons { + @apply(--layout-flex-5); + -webkit-user-select: none; + text-align: end; + } + + paper-icon-button { + -webkit-margin-end: 12px; + } + + viewer-toolbar-dropdown { + -webkit-margin-end: 4px; + } + + paper-progress { + --paper-progress-active-color: var(--google-blue-300); + --paper-progress-container-color: transparent; + --paper-progress-height: 3px; + transition: opacity 150ms; + width: 100%; + } + + paper-toolbar { + --paper-toolbar-background: rgb(50, 54, 57); + --paper-toolbar-height: 48px; + @apply(--shadow-elevation-2dp); + color: rgb(241, 241, 241); + } + + .invisible { + visibility: hidden; + } + + @media(max-width: 675px) { + #bookmarks, + #rotate-left { + display: none; + } + + #pageselector-container { + flex: 2; + } + } + + @media(max-width: 450px) { + #rotate-right { + display: none; + } + } + + @media(max-width: 400px) { + #buttons, + #pageselector-container { + display: none; + } + } + </style> <paper-toolbar> <div id="aligner" class="middle"> <span id="title" title="{{docTitle}}"> @@ -64,5 +150,5 @@ </div> </paper-toolbar> </template> + <script src="viewer-pdf-toolbar.js"></script> </dom-module> -<script src="viewer-pdf-toolbar.js"></script> diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-toolbar-dropdown/viewer-toolbar-dropdown.css b/chromium/chrome/browser/resources/pdf/elements/viewer-toolbar-dropdown/viewer-toolbar-dropdown.css deleted file mode 100644 index 5a6d55bf20c..00000000000 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-toolbar-dropdown/viewer-toolbar-dropdown.css +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright 2015 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -:host { - text-align: start; -} - -#container { - position: absolute; - /* Controls the position of the dropdown relative to the right of the screen. - * Default is aligned with the right of the toolbar buttons. - * TODO(tsergeant): Change the layout of the dropdown so this is not required. - */ - right: var(--viewer-toolbar-dropdown-right-distance, 36px); -} - -:host-context([dir=rtl]) #container { - left: var(--viewer-toolbar-dropdown-right-distance, 36px); - right: auto; -} - -paper-material { - background-color: rgb(256, 256, 256); - border-radius: 4px; - overflow-y: hidden; - padding-bottom: 2px; - width: 260px; -} - -#scroll-container { - max-height: 300px; - overflow-y: auto; - padding: 6px 0 4px 0; -} - -#icon { - cursor: pointer; - display: inline-block; -} - -:host([dropdown-open]) #icon { - background-color: rgb(25, 27, 29); - border-radius: 4px; -} - -#arrow { - -webkit-margin-start: -12px; - -webkit-padding-end: 4px; -} - -h1 { - border-bottom: 1px solid rgb(219, 219, 219); - color: rgb(33, 33, 33); - font-size: 77.8%; - font-weight: 500; - margin: 0; - padding: 14px 28px; -} diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-toolbar-dropdown/viewer-toolbar-dropdown.html b/chromium/chrome/browser/resources/pdf/elements/viewer-toolbar-dropdown/viewer-toolbar-dropdown.html index e759825c94b..f36fcc9a3bd 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-toolbar-dropdown/viewer-toolbar-dropdown.html +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-toolbar-dropdown/viewer-toolbar-dropdown.html @@ -1,13 +1,69 @@ <link rel="import" href="chrome://resources/html/polymer.html"> <link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/web-animations.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/paper-material/paper-material.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button.html"> <link rel="import" href="chrome://resources/cr_elements/icons.html"> <dom-module id="viewer-toolbar-dropdown"> - <link rel="import" type="css" href="../shared-icon-style.css"> - <link rel="import" type="css" href="viewer-toolbar-dropdown.css"> <template> + <style> + :host { + text-align: start; + } + + #container { + position: absolute; + /* Controls the position of the dropdown relative to the right of the + * screen. Default is aligned with the right of the toolbar buttons. + * TODO(tsergeant): Change the layout of the dropdown so this is not + * required. + */ + right: var(--viewer-toolbar-dropdown-right-distance, 28px); + } + + :host-context([dir=rtl]) #container { + left: var(--viewer-toolbar-dropdown-right-distance, 28px); + right: auto; + } + + #dropdown { + @apply(--shadow-elevation-2dp); + background-color: rgb(256, 256, 256); + border-radius: 4px; + color: var(--primary-text-color); + overflow-y: hidden; + padding-bottom: 2px; + width: 260px; + } + + #scroll-container { + max-height: 300px; + overflow-y: auto; + padding: 6px 0 4px 0; + } + + #icon { + cursor: pointer; + display: inline-block; + } + + :host([dropdown-open]) #icon { + background-color: rgb(25, 27, 29); + border-radius: 4px; + } + + #arrow { + -webkit-margin-start: -12px; + -webkit-padding-end: 4px; + } + + h1 { + border-bottom: 1px solid rgb(219, 219, 219); + font-size: 107.6%; + font-weight: 500; + margin: 0; + padding: 14px 28px; + } + </style> <div on-click="toggleDropdown" id="icon"> <paper-icon-button id="main-icon" icon="[[dropdownIcon]]" aria-label$="{{header}}" title$="{{header}}"> @@ -16,14 +72,13 @@ </div> <div id="container"> - <paper-material id="dropdown" style="display: none"> + <div id="dropdown" style="display: none"> <h1>{{header}}</h1> <div id="scroll-container"> <content></content> </div> - </paper-material> + </div> </div> </template> + <script src="viewer-toolbar-dropdown.js"></script> </dom-module> - -<script src="viewer-toolbar-dropdown.js"></script> diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-button.css b/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-button.css deleted file mode 100644 index 02454185593..00000000000 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-button.css +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright 2015 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -#wrapper { - transition: transform 250ms; - transition-timing-function: cubic-bezier(0, 0, 0.2, 1); -} - -:host([closed]) #wrapper { - /* 132px roughly flips the location of the button across the right edge of the - * page. */ - transform: translateX(132px); - transition-timing-function: cubic-bezier(0.4, 0, 1, 1); -} - -:host-context([dir=rtl]):host([closed]) #wrapper { - transform: translateX(-132px); -} - -paper-fab { - --paper-fab-keyboard-focus-background: var(--viewer-icon-ink-color); - --paper-fab-mini: { - height: 36px; - padding: 8px; - width: 36px; - }; - @apply(--shadow-elevation-4dp); - background-color: rgb(242, 242, 242); - color: rgb(96, 96, 96); - overflow: visible; -} diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-button.html b/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-button.html index 8108d7d7a1a..83d3d8df7f0 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-button.html +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-button.html @@ -2,14 +2,42 @@ <link rel="import" href="chrome://resources/polymer/v1_0/paper-fab/paper-fab.html"> <dom-module id="viewer-zoom-button"> - <link rel="import" type="css" href="../shared-icon-style.css"> - <link rel="import" type="css" href="viewer-zoom-button.css"> <template> + <style> + #wrapper { + transition: transform 250ms; + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); + } + + :host([closed]) #wrapper { + /* 132px roughly flips the location of the button across the right edge + * of the page. */ + transform: translateX(132px); + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); + } + + :host-context([dir=rtl]):host([closed]) #wrapper { + transform: translateX(-132px); + } + + paper-fab { + @apply(--shadow-elevation-4dp); + --paper-fab-keyboard-focus-background: var(--viewer-icon-ink-color); + --paper-fab-mini: { + height: 36px; + padding: 8px; + width: 36px; + }; + background-color: rgb(242, 242, 242); + color: var(--paper-grey-700); + overflow: visible; + } + </style> <div id="wrapper"> <paper-fab id="button" mini icon="[[visibleIcon_]]" on-click="fireClick" aria-label$="[[visibleTooltip_]]" title="[[visibleTooltip_]]"> </paper-fab> </div> </template> + <script src="viewer-zoom-button.js"></script> </dom-module> -<script src="viewer-zoom-button.js"></script> diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-toolbar.css b/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-toolbar.css deleted file mode 100644 index c7577ef5471..00000000000 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-toolbar.css +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2015 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -:host { - -webkit-user-select: none; - bottom: 0; - padding: 48px 0; - position: fixed; - right: 0; - z-index: 3; -} - -:host-context([dir=rtl]) { - left: 0; - right: auto; -} - -#zoom-buttons { - position: relative; - right: 48px; -} - -:host-context([dir=rtl]) #zoom-buttons { - left: 48px; - right: auto; -} - -viewer-zoom-button { - display: block; -} - -/* A small gap between the zoom in/zoom out buttons. */ -#zoom-out-button { - margin-top: 10px; -} - -/* A larger gap between the fit button and bottom two buttons. */ -#zoom-in-button { - margin-top: 24px; -} diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-toolbar.html b/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-toolbar.html index ff8c21ee719..757c24ef859 100644 --- a/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-toolbar.html +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar/viewer-zoom-toolbar.html @@ -4,9 +4,46 @@ <link rel="import" href="viewer-zoom-button.html"> <dom-module id="viewer-zoom-toolbar"> - <link rel="import" type="css" href="viewer-zoom-toolbar.css"> <template> + <style> + :host { + -webkit-user-select: none; + bottom: 0; + padding: 48px 0; + position: fixed; + right: 0; + z-index: 3; + } + :host-context([dir=rtl]) { + left: 0; + right: auto; + } + + #zoom-buttons { + position: relative; + right: 48px; + } + + :host-context([dir=rtl]) #zoom-buttons { + left: 48px; + right: auto; + } + + viewer-zoom-button { + display: block; + } + + /* A small gap between the zoom in/zoom out buttons. */ + #zoom-out-button { + margin-top: 10px; + } + + /* A larger gap between the fit button and bottom two buttons. */ + #zoom-in-button { + margin-top: 24px; + } + </style> <div id="zoom-buttons"> <viewer-zoom-button id="fit-button" on-fabclick="fitToggle" delay="100" icons="pdf:fullscreen-exit cr:fullscreen"> @@ -17,5 +54,5 @@ on-fabclick="zoomOut" delay="0"></viewer-zoom-button> </div> </template> + <script src="viewer-zoom-toolbar.js"></script> </dom-module> -<script src="viewer-zoom-toolbar.js"></script> diff --git a/chromium/chrome/browser/resources/pdf/gesture_detector.js b/chromium/chrome/browser/resources/pdf/gesture_detector.js index fde4650d92b..d73a85b7a3b 100644 --- a/chromium/chrome/browser/resources/pdf/gesture_detector.js +++ b/chromium/chrome/browser/resources/pdf/gesture_detector.js @@ -14,20 +14,34 @@ class GestureDetector { * @param {!Element} element The element to monitor for touch gestures. */ constructor(element) { + /** @private {!Element} */ this.element_ = element; this.element_.addEventListener( - 'touchstart', this.onTouchStart_.bind(this), { passive: false }); + 'touchstart', + /** @type {function(!Event)} */ (this.onTouchStart_.bind(this)), + { passive: true }); + this.element_.addEventListener( - 'touchmove', this.onTouch_.bind(this), { passive: true }); + 'touchmove', + /** @type {function(!Event)} */ (this.onTouch_.bind(this)), + { passive: false }); this.element_.addEventListener( - 'touchend', this.onTouch_.bind(this), { passive: true }); + 'touchend', + /** @type {function(!Event)} */ (this.onTouch_.bind(this)), + { passive: true }); this.element_.addEventListener( - 'touchcancel', this.onTouch_.bind(this), { passive: true }); + 'touchcancel', + /** @type {function(!Event)} */ (this.onTouch_.bind(this)), + { passive: true }); this.pinchStartEvent_ = null; + this.lastTouchTouchesCount_ = 0; + + /** @private {?TouchEvent} */ this.lastEvent_ = null; + /** @private {!Map<string, !Array<!Function>>} */ this.listeners_ = new Map([ ['pinchstart', []], ['pinchupdate', []], @@ -38,7 +52,7 @@ class GestureDetector { /** * Add a |listener| to be notified of |type| events. * @param {string} type The event type to be notified for. - * @param {Function} listener The callback. + * @param {!Function} listener The callback. */ addEventListener(type, listener) { if (this.listeners_.has(type)) { @@ -47,6 +61,14 @@ class GestureDetector { } /** + * Returns true if the last touch start was a two finger touch. + * @return {boolean} True if the last touch start was a two finger touch. + */ + wasTwoFingerTouch() { + return this.lastTouchTouchesCount_ == 2; + } + + /** * Call the relevant listeners with the given |pinchEvent|. * @private * @param {!Object} pinchEvent The event to notify the listeners of. @@ -64,17 +86,16 @@ class GestureDetector { * @param {!TouchEvent} event Touch event on the element. */ onTouchStart_(event) { - // We must preventDefault if there is a two finger touch. By doing so - // native pinch-zoom does not interfere with our way of handling the event. - if (event.touches.length == 2) { - event.preventDefault(); - this.pinchStartEvent_ = event; - this.lastEvent_ = event; - this.notify_({ - type: 'pinchstart', - center: GestureDetector.center_(event) - }); - } + this.lastTouchTouchesCount_ = event.touches.length; + if (!this.wasTwoFingerTouch()) + return; + + this.pinchStartEvent_ = event; + this.lastEvent_ = event; + this.notify_({ + type: 'pinchstart', + center: GestureDetector.center_(event) + }); } /** @@ -86,12 +107,14 @@ class GestureDetector { if (!this.pinchStartEvent_) return; + let lastEvent = /** @type {!TouchEvent} */ (this.lastEvent_); + // Check if the pinch ends with the current event. if (event.touches.length < 2 || - this.lastEvent_.touches.length !== event.touches.length) { + lastEvent.touches.length !== event.touches.length) { let startScaleRatio = GestureDetector.pinchScaleRatio_( - this.lastEvent_, this.pinchStartEvent_); - let center = GestureDetector.center_(this.lastEvent_); + lastEvent, this.pinchStartEvent_); + let center = GestureDetector.center_(lastEvent); let endEvent = { type: 'pinchend', startScaleRatio: startScaleRatio, @@ -103,7 +126,11 @@ class GestureDetector { return; } - let scaleRatio = GestureDetector.pinchScaleRatio_(event, this.lastEvent_); + // We must preventDefault two finger touchmoves. By doing so native + // pinch-zoom does not interfere with our way of handling the event. + event.preventDefault(); + + let scaleRatio = GestureDetector.pinchScaleRatio_(event, lastEvent); let startScaleRatio = GestureDetector.pinchScaleRatio_( event, this.pinchStartEvent_); let center = GestureDetector.center_(event); @@ -161,4 +188,4 @@ class GestureDetector { y: (touch1.clientY + touch2.clientY) / 2 }; } -}; +} diff --git a/chromium/chrome/browser/resources/pdf/index.css b/chromium/chrome/browser/resources/pdf/index.css index a443bac50ec..b7c2d18dc67 100644 --- a/chromium/chrome/browser/resources/pdf/index.css +++ b/chromium/chrome/browser/resources/pdf/index.css @@ -4,7 +4,8 @@ body { background-color: rgb(82, 86, 89); - font-family: 'Roboto', 'Noto', sans-serif; + color: var(--primary-text-color); + line-height: 154%; margin: 0; } diff --git a/chromium/chrome/browser/resources/pdf/index.html b/chromium/chrome/browser/resources/pdf/index.html index 2bc79f81506..8382c4b8525 100644 --- a/chromium/chrome/browser/resources/pdf/index.html +++ b/chromium/chrome/browser/resources/pdf/index.html @@ -9,9 +9,9 @@ <link rel="import" href="elements/viewer-password-screen/viewer-password-screen.html"> <link rel="import" href="elements/viewer-pdf-toolbar/viewer-pdf-toolbar.html"> <link rel="import" href="elements/viewer-zoom-toolbar/viewer-zoom-toolbar.html"> + <link rel="import" href="elements/shared-vars.html"> - <link rel="stylesheet" href="chrome://resources/css/text_defaults.css"> - <link rel="stylesheet" href="chrome://resources/css/roboto.css"> + <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> <link rel="stylesheet" href="index.css"> </head> <body> diff --git a/chromium/chrome/browser/resources/pdf/main.js b/chromium/chrome/browser/resources/pdf/main.js index e6938bc55cd..901b8e67074 100644 --- a/chromium/chrome/browser/resources/pdf/main.js +++ b/chromium/chrome/browser/resources/pdf/main.js @@ -49,7 +49,7 @@ var viewer; window.addEventListener('message', handleScriptingMessage, false); createBrowserApi().then(initViewer); - }; + } main(); })(); diff --git a/chromium/chrome/browser/resources/pdf/navigator.js b/chromium/chrome/browser/resources/pdf/navigator.js index 15c4518e128..d619c42a60b 100644 --- a/chromium/chrome/browser/resources/pdf/navigator.js +++ b/chromium/chrome/browser/resources/pdf/navigator.js @@ -9,6 +9,7 @@ * do the actual navigating. * @param {number} tabId The tab ID of the PDF viewer or -1 if the viewer is * not displayed in a tab. + * @constructor */ function NavigatorDelegate(tabId) { this.tabId_ = tabId; @@ -22,6 +23,7 @@ function NavigatorDelegate(tabId) { * @param {Object} navigatorDelegate The object with callback functions that * get called when navigation happens in the current tab, a new tab, * and a new window. + * @constructor */ function Navigator(originalUrl, viewport, paramsParser, navigatorDelegate) { this.originalUrl_ = originalUrl; @@ -91,7 +93,6 @@ Navigator.WindowOpenDisposition = { Navigator.prototype = { /** - * @private * Function to navigate to the given URL. This might involve navigating * within the PDF page or opening a new url (in the same tab or a new tab). * @param {string} url The URL to navigate to. @@ -173,7 +174,7 @@ Navigator.prototype = { /** * @private * Checks if the URL starts with a scheme and is not just a scheme. - * @param {string} The input URL + * @param {string} url The input URL * @return {boolean} Whether the url is valid. */ isValidUrl_: function(url) { @@ -206,7 +207,7 @@ Navigator.prototype = { /** * @private * Attempt to figure out what a URL is when there is no scheme. - * @param {string} The input URL + * @param {string} url The input URL * @return {string} The URL with a scheme or the original URL if it is not * possible to determine the scheme. */ diff --git a/chromium/chrome/browser/resources/pdf/open_pdf_params_parser.js b/chromium/chrome/browser/resources/pdf/open_pdf_params_parser.js index 00f44773f46..8d1ac213e69 100644 --- a/chromium/chrome/browser/resources/pdf/open_pdf_params_parser.js +++ b/chromium/chrome/browser/resources/pdf/open_pdf_params_parser.js @@ -7,8 +7,9 @@ /** * Creates a new OpenPDFParamsParser. This parses the open pdf parameters * passed in the url to set initial viewport settings for opening the pdf. - * @param {Object} getNamedDestinationsFunction The function called to fetch + * @param {!Function} getNamedDestinationsFunction The function called to fetch * the page number for a named destination. + * @constructor */ function OpenPDFParamsParser(getNamedDestinationsFunction) { this.outstandingRequests_ = []; @@ -21,7 +22,7 @@ OpenPDFParamsParser.prototype = { * Parse zoom parameter of open PDF parameters. If this * parameter is passed while opening PDF then PDF should be opened * at the specified zoom level. - * @param {number} zoom value. + * @param {string} paramValue zoom value. * @param {Object} viewportPosition to store zoom and position value. */ parseZoomParam_: function(paramValue, viewportPosition) { @@ -112,7 +113,7 @@ OpenPDFParamsParser.prototype = { if ('page' in paramsDictionary) { // |pageNumber| is 1-based, but goToPage() take a zero-based page number. - var pageNumber = parseInt(paramsDictionary['page']); + var pageNumber = parseInt(paramsDictionary['page'], 10); if (!isNaN(pageNumber) && pageNumber > 0) viewportPosition['page'] = pageNumber - 1; } diff --git a/chromium/chrome/browser/resources/pdf/pdf.js b/chromium/chrome/browser/resources/pdf/pdf.js index da5793d9b0d..898935ef283 100644 --- a/chromium/chrome/browser/resources/pdf/pdf.js +++ b/chromium/chrome/browser/resources/pdf/pdf.js @@ -245,6 +245,8 @@ function PDFViewer(browserApi) { document.addEventListener('keydown', this.handleKeyEvent_.bind(this)); document.addEventListener('mousemove', this.handleMouseEvent_.bind(this)); document.addEventListener('mouseout', this.handleMouseEvent_.bind(this)); + document.addEventListener('contextmenu', + this.handleContextMenuEvent_.bind(this)); var tabId = this.browserApi_.getStreamInfo().tabId; this.navigator_ = new Navigator( @@ -410,6 +412,17 @@ PDFViewer.prototype = { this.toolbarManager_.hideToolbarsForMouseOut(); }, + handleContextMenuEvent_: function(e) { + // Stop Chrome from popping up the context menu on long press. We need to + // make sure the start event did not have 2 touches because we don't want + // to block two finger tap opening the context menu. We check for + // firesTouchEvents in order to not block the context menu on right click. + if (e.sourceCapabilities.firesTouchEvents && + !this.gestureDetector_.wasTwoFingerTouch()) { + e.preventDefault(); + } + }, + /** * @private * Rotate the plugin clockwise. @@ -523,7 +536,7 @@ PDFViewer.prototype = { this.sizer_.style.display = 'none'; if (this.passwordScreen_.active) { this.passwordScreen_.deny(); - this.passwordScreen_.active = false; + this.passwordScreen_.close(); } this.loadState_ = LoadState.FAILED; this.sendDocumentLoadedMessage_(); @@ -585,7 +598,7 @@ PDFViewer.prototype = { // If we received the document dimensions, the password was good so we // can dismiss the password screen. if (this.passwordScreen_.active) - this.passwordScreen_.accept(); + this.passwordScreen_.close(); if (this.pageIndicator_) this.pageIndicator_.initialFadeIn(); @@ -605,7 +618,7 @@ PDFViewer.prototype = { // If the password screen isn't up, put it up. Otherwise we're // responding to an incorrect password so deny it. if (!this.passwordScreen_.active) - this.passwordScreen_.active = true; + this.passwordScreen_.show(); else this.passwordScreen_.deny(); break; diff --git a/chromium/chrome/browser/resources/pdf/pdf_scripting_api.js b/chromium/chrome/browser/resources/pdf/pdf_scripting_api.js index 712e390207e..102130e1959 100644 --- a/chromium/chrome/browser/resources/pdf/pdf_scripting_api.js +++ b/chromium/chrome/browser/resources/pdf/pdf_scripting_api.js @@ -9,7 +9,7 @@ */ function DeserializeKeyEvent(dict) { var e = document.createEvent('Event'); - e.initEvent('keydown'); + e.initEvent('keydown', true, true); e.keyCode = dict.keyCode; e.shiftKey = dict.shiftKey; e.ctrlKey = dict.ctrlKey; @@ -37,6 +37,7 @@ function SerializeKeyEvent(event) { /** * An enum containing a value specifying whether the PDF is currently loading, * has finished loading or failed to load. + * @enum {string} */ var LoadState = { LOADING: 'loading', @@ -49,6 +50,7 @@ var LoadState = { * the PDF viewer so that it can be customized by things like print preview. * @param {Window} window the window of the page containing the pdf viewer. * @param {Object} plugin the plugin element containing the pdf viewer. + * @constructor */ function PDFScriptingAPI(window, plugin) { this.loadState_ = LoadState.LOADING; @@ -64,21 +66,33 @@ function PDFScriptingAPI(window, plugin) { } switch (event.data.type) { case 'viewport': + /** + * @type {{ + * pageX: number, + * pageY: number, + * pageWidth: number, + * viewportWidth: number, + * viewportHeight: number + * }} + */ + var viewportData = event.data; if (this.viewportChangedCallback_) - this.viewportChangedCallback_(event.data.pageX, - event.data.pageY, - event.data.pageWidth, - event.data.viewportWidth, - event.data.viewportHeight); + this.viewportChangedCallback_(viewportData.pageX, + viewportData.pageY, + viewportData.pageWidth, + viewportData.viewportWidth, + viewportData.viewportHeight); break; case 'documentLoaded': - this.loadState_ = event.data.load_state; + var data = /** @type {{load_state: LoadState}} */ (event.data); + this.loadState_ = data.load_state; if (this.loadCallback_) this.loadCallback_(this.loadState_ == LoadState.SUCCESS); break; case 'getSelectedTextReply': + var data = /** @type {{selectedText: string}} */ (event.data); if (this.selectedTextCallback_) { - this.selectedTextCallback_(event.data.selectedText); + this.selectedTextCallback_(data.selectedText); this.selectedTextCallback_ = null; } break; @@ -240,8 +254,9 @@ PDFScriptingAPI.prototype = { * @return {HTMLIFrameElement} the iframe element containing the PDF viewer. */ function PDFCreateOutOfProcessPlugin(src) { - var client = new PDFScriptingAPI(window); - var iframe = window.document.createElement('iframe'); + var client = new PDFScriptingAPI(window, null); + var iframe = assertInstanceof(window.document.createElement('iframe'), + HTMLIFrameElement); iframe.setAttribute('src', 'pdf_preview.html?' + src); // Prevent the frame from being tab-focusable. iframe.setAttribute('tabindex', '-1'); diff --git a/chromium/chrome/browser/resources/pdf/toolbar_manager.js b/chromium/chrome/browser/resources/pdf/toolbar_manager.js index 2bef16f8737..958b9ee3946 100644 --- a/chromium/chrome/browser/resources/pdf/toolbar_manager.js +++ b/chromium/chrome/browser/resources/pdf/toolbar_manager.js @@ -136,7 +136,7 @@ ToolbarManager.prototype = { /** * Wrapper around Date.now() to make it easily replaceable for testing. - * @return {int} + * @return {number} * @private */ getCurrentTimestamp_: function() { diff --git a/chromium/chrome/browser/resources/pdf/viewport.js b/chromium/chrome/browser/resources/pdf/viewport.js index 607f70ed907..6d027f1c8ee 100644 --- a/chromium/chrome/browser/resources/pdf/viewport.js +++ b/chromium/chrome/browser/resources/pdf/viewport.js @@ -446,8 +446,8 @@ Viewport.prototype = { /** * @private - * @param {integer} y the y-coordinate to get the page at. - * @return {integer} the index of a page overlapping the given y-coordinate. + * @param {number} y the y-coordinate to get the page at. + * @return {number} the index of a page overlapping the given y-coordinate. */ getPageAtY_: function(y) { var min = 0; @@ -477,7 +477,7 @@ Viewport.prototype = { /** * Returns the page with the greatest proportion of its height in the current * viewport. - * @return {int} the index of the most visible page. + * @return {number} the index of the most visible page. */ getMostVisiblePage: function() { var firstVisiblePage = this.getPageAtY_(this.position.y / this.zoom); diff --git a/chromium/chrome/browser/resources/pdf/viewport_scroller.js b/chromium/chrome/browser/resources/pdf/viewport_scroller.js index f46ef4db412..eeef83956b9 100644 --- a/chromium/chrome/browser/resources/pdf/viewport_scroller.js +++ b/chromium/chrome/browser/resources/pdf/viewport_scroller.js @@ -24,6 +24,7 @@ ViewportScroller.MAX_DRAG_SCROLL_DISTANCE_ = 100; * @param {Object} viewport The viewport info of the page. * @param {Object} plugin The PDF plugin element. * @param {Object} window The window containing the viewer. + * @constructor */ function ViewportScroller(viewport, plugin, window) { this.viewport_ = viewport; diff --git a/chromium/chrome/browser/resources/pdf/zoom_manager.js b/chromium/chrome/browser/resources/pdf/zoom_manager.js index 25086938e36..5ed2c74ac39 100644 --- a/chromium/chrome/browser/resources/pdf/zoom_manager.js +++ b/chromium/chrome/browser/resources/pdf/zoom_manager.js @@ -86,13 +86,13 @@ class ZoomManager { // due to floating point error. return Math.abs(a - b) <= MIN_ZOOM_DELTA; } -}; +} /** * InactiveZoomManager has no control over the browser's zoom * and does not respond to browser zoom changes. */ -class InactiveZoomManager extends ZoomManager {}; +class InactiveZoomManager extends ZoomManager {} /** * ActiveZoomManager controls the browser's zoom. @@ -180,7 +180,7 @@ class ActiveZoomManager extends ZoomManager { // internal zoom is the total zoom. return totalZoom; } -}; +} /** * This EmbeddedZoomManager responds to changes in the browser zoom, @@ -196,4 +196,4 @@ class EmbeddedZoomManager extends ZoomManager { this.browserZoom_ = newZoom; this.viewport_.updateZoomFromBrowserChange(oldZoom); } -}; +} |