| Index: chrome/browser/resources/pdf/pdf_scripting_api.js
 | 
| diff --git a/chrome/browser/resources/pdf/pdf_scripting_api.js b/chrome/browser/resources/pdf/pdf_scripting_api.js
 | 
| index 712e390207e2cb443611cab2cfcf26eddbfb633b..102130e1959c1cbc68faddce2d66bdd6ab9a9ada 100644
 | 
| --- a/chrome/browser/resources/pdf/pdf_scripting_api.js
 | 
| +++ b/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');
 | 
| 
 |