chromium/third_party/closure_compiler/chromium_patch.diff

diff --git b/third_party/closure_compiler/externs/chrome.js a/third_party/closure_compiler/externs/chrome.js
index 54cf6b1a2bcc..0619bdce01a4 100644
--- b/third_party/closure_compiler/externs/chrome.js
+++ a/third_party/closure_compiler/externs/chrome.js
@@ -562,51 +562,6 @@ chrome.webstore.onInstallStageChanged;
 chrome.webstore.onDownloadProgress;
 
 
-/**
- * @see https://developer.chrome.com/extensions/runtime.html
- * @const
- */
-chrome.runtime = {};
-
-
-/** @type {{message:(string|undefined)}|undefined} */
-chrome.runtime.lastError;
-
-
-/**
- * @param {string|!Object=} opt_extensionIdOrConnectInfo Either the
- *     extensionId to connect to, in which case connectInfo params can be
- *     passed in the next optional argument, or the connectInfo params.
- * @param {!Object=} opt_connectInfo The connectInfo object,
- *     if arg1 was the extensionId to connect to.
- * @return {!Port} New port.
- */
-chrome.runtime.connect = function(
-    opt_extensionIdOrConnectInfo, opt_connectInfo) {};
-
-
-/**
- * @param {string|*} extensionIdOrMessage Either the extensionId to send the
- *     message to, in which case the message is passed as the next arg, or the
- *     message itself.
- * @param {(*|!Object|function(*): void)=} opt_messageOrOptsOrCallback
- *     One of:
- *     The message, if arg1 was the extensionId.
- *     The options for message sending, if arg1 was the message and this
- *     argument is not a function.
- *     The callback, if arg1 was the message and this argument is a function.
- * @param {(!Object|function(*): void)=} opt_optsOrCallback
- *     Either the options for message sending, if arg2 was the message,
- *     or the callback.
- * @param {function(*): void=} opt_callback The callback function which
- *     takes a JSON response object sent by the handler of the request.
- * @return {undefined}
- */
-chrome.runtime.sendMessage = function(
-    extensionIdOrMessage, opt_messageOrOptsOrCallback, opt_optsOrCallback,
-    opt_callback) {};
-
-
 /**
  * Returns an object representing current load times. Note that the properties
  * on the object do not change and the function must be called again to get
diff --git b/third_party/closure_compiler/externs/chrome_extensions.js a/third_party/closure_compiler/externs/chrome_extensions.js
index 41b2f5b485c7..7110aaf8f223 100644
--- b/third_party/closure_compiler/externs/chrome_extensions.js
+++ a/third_party/closure_compiler/externs/chrome_extensions.js
@@ -233,72 +233,6 @@ if (Math.random() < 1) {  // always true but the compiler doesn't know that
 }
 
 
-/**
- * @see https://developer.chrome.com/extensions/accessibilityFeatures
- * @const
- */
-chrome.accessibilityFeatures = {};
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.spokenFeedback;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.largeCursor;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.stickyKeys;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.highContrast;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.screenMagnifier;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.autoclick;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.virtualKeyboard;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.caretHighlight;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.cursorHighlight;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.cursorColor;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.dockedMagnifier;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.focusHighlight;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.selectToSpeak;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.switchAccess;
-
-
-/** @type {!ChromeSetting} */
-chrome.accessibilityFeatures.animationPolicy;
-
 
 /**
  * @const
@@ -2557,6 +2491,49 @@ chrome.extension.onRequest;
 /** @type {!ChromeEvent} */
 chrome.extension.onRequestExternal;
 
+/**
+ * @see https://developer.chrome.com/extensions/runtime.html
+ * @const
+ */
+chrome.runtime = {};
+
+
+/** @type {{message:(string|undefined)}|undefined} */
+chrome.runtime.lastError;
+
+
+/**
+ * @param {string|!Object=} opt_extensionIdOrConnectInfo Either the
+ *     extensionId to connect to, in which case connectInfo params can be
+ *     passed in the next optional argument, or the connectInfo params.
+ * @param {!Object=} opt_connectInfo The connectInfo object,
+ *     if arg1 was the extensionId to connect to.
+ * @return {!Port} New port.
+ */
+chrome.runtime.connect = function(
+    opt_extensionIdOrConnectInfo, opt_connectInfo) {};
+
+
+/**
+ * @param {string|*} extensionIdOrMessage Either the extensionId to send the
+ *     message to, in which case the message is passed as the next arg, or the
+ *     message itself.
+ * @param {(*|!Object|function(*): void)=} opt_messageOrOptsOrCallback
+ *     One of:
+ *     The message, if arg1 was the extensionId.
+ *     The options for message sending, if arg1 was the message and this
+ *     argument is not a function.
+ *     The callback, if arg1 was the message and this argument is a function.
+ * @param {(!Object|function(*): void)=} opt_optsOrCallback
+ *     Either the options for message sending, if arg2 was the message,
+ *     or the callback.
+ * @param {function(*): void=} opt_callback The callback function which
+ *     takes a JSON response object sent by the handler of the request.
+ * @return {undefined}
+ */
+chrome.runtime.sendMessage = function(
+    extensionIdOrMessage, opt_messageOrOptsOrCallback, opt_optsOrCallback,
+    opt_callback) {};
 
 
 /** @type {string} */
@@ -4380,151 +4357,6 @@ chrome.idle.getAutoLockDelay = function(callback) {};
 chrome.idle.onStateChanged;
 
 
-/**
- * Chrome Text-to-Speech API.
- * @const
- * @see https://developer.chrome.com/extensions/tts.html
- */
-chrome.tts = {};
-
-
-
-/**
- * An event from the TTS engine to communicate the status of an utterance.
- * @constructor
- */
-function TtsEvent() {}
-
-
-/** @type {string} */
-TtsEvent.prototype.type;
-
-
-/** @type {number} */
-TtsEvent.prototype.charIndex;
-
-
-/** @type {string} */
-TtsEvent.prototype.errorMessage;
-
-
-/**
- * The speech options for the TTS engine.
- * @record
- * @see https://developer.chrome.com/apps/tts#type-TtsOptions
- */
-function TtsOptions() {}
-
-/** @type {boolean|undefined} */
-TtsOptions.prototype.enqueue;
-
-/** @type {string|undefined} */
-TtsOptions.prototype.voiceName;
-
-/** @type {string|undefined} */
-TtsOptions.prototype.extensionId;
-
-/** @type {string|undefined} */
-TtsOptions.prototype.lang;
-
-/** @type {number|undefined} */
-TtsOptions.prototype.rate;
-
-/** @type {number|undefined} */
-TtsOptions.prototype.pitch;
-
-/** @type {number|undefined} */
-TtsOptions.prototype.volume;
-
-/** @type {!Array<string>|undefined} */
-TtsOptions.prototype.requiredEventTypes;
-
-/** @type {!Array<string>|undefined} */
-TtsOptions.prototype.desiredEventTypes;
-
-/** @type {!function(!TtsEvent)|undefined} */
-TtsOptions.prototype.onEvent;
-
-
-/**
- * A description of a voice available for speech synthesis.
- * @constructor
- */
-function TtsVoice() {}
-
-
-/** @type {string} */
-TtsVoice.prototype.voiceName;
-
-
-/** @type {string} */
-TtsVoice.prototype.lang;
-
-
-/** @type {string} */
-TtsVoice.prototype.gender;
-
-
-/** @type {string} */
-TtsVoice.prototype.extensionId;
-
-
-/** @type {Array<string>} */
-TtsVoice.prototype.eventTypes;
-
-
-/**
- * Gets an array of all available voices.
- * @param {function(Array<TtsVoice>)=} opt_callback An optional callback
- *     function.
- * @return {undefined}
- */
-chrome.tts.getVoices = function(opt_callback) {};
-
-
-/**
- * Checks if the engine is currently speaking.
- * @param {function(boolean)=} opt_callback The callback function.
- * @return {undefined}
- */
-chrome.tts.isSpeaking = function(opt_callback) {};
-
-
-/**
- * Speaks text using a text-to-speech engine.
- * @param {string} utterance The text to speak, either plain text or a complete,
- *     well-formed SSML document. Speech engines that do not support SSML will
- *     strip away the tags and speak the text. The maximum length of the text is
- *     32,768 characters.
- * @param {TtsOptions=} options The speech options.
- * @param {function()=} callback Called right away, before speech finishes.
- * @return {undefined}
- */
-chrome.tts.speak = function(utterance, options, callback) {};
-
-
-/**
- * Stops any current speech.
- * @return {undefined}
- */
-chrome.tts.stop = function() {};
-
-
-/**
- * @const
- * @see https://developer.chrome.com/extensions/ttsEngine.html
- */
-chrome.ttsEngine = {};
-
-
-/** @type {!ChromeEvent} */
-chrome.ttsEngine.onSpeak;
-
-
-/** @type {!ChromeEvent} */
-chrome.ttsEngine.onStop;
-
-
 /**
  * @const
  * @see https://developer.chrome.com/extensions/contentSettings.html
@@ -8474,642 +8306,6 @@ chrome.fileSystem.requestFileSystem = function(options, callback) {};
 chrome.fileSystem.getVolumeList = function(callback) {};
 
 
-/**
- * @const
- * @see https://developer.chrome.com/extensions/fileSystemProvider
- */
-chrome.fileSystemProvider = {};
-
-
-/**
- * @enum {string}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#type-ChangeType
- */
-chrome.fileSystemProvider.ChangeType = {
-  CHANGED: '',
-  DELETED: '',
-};
-
-
-/**
- * @enum {string}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#type-CommonActionId
- */
-chrome.fileSystemProvider.CommonActionId = {
-  OFFLINE_NOT_NECESSARY: '',
-  SAVE_FOR_OFFLINE: '',
-  SHARE: '',
-};
-
-
-/**
- * @enum {string}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#type-OpenFileMode
- */
-chrome.fileSystemProvider.OpenFileMode = {
-  READ: '',
-  WRITE: '',
-};
-
-
-/**
- * @enum {string}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#type-ProviderError
- */
-chrome.fileSystemProvider.ProviderError = {
-  ABORT: '',
-  ACCESS_DENIED: '',
-  EXISTS: '',
-  FAILED: '',
-  INVALID_OPERATION: '',
-  INVALID_URL: '',
-  IN_USE: '',
-  IO: '',
-  NOT_A_DIRECTORY: '',
-  NOT_A_FILE: '',
-  NOT_EMPTY: '',
-  NOT_FOUND: '',
-  NO_MEMORY: '',
-  NO_SPACE: '',
-  OK: '',
-  SECURITY: '',
-  TOO_MANY_OPENED: '',
-};
-
-
-/**
- * @constructor
- * @see https://developer.chrome.com/extensions/fileSystemProvider#type-EntryMetadata
- */
-chrome.fileSystemProvider.EntryMetadata = function() {};
-
-
-/** @type {boolean|undefined} */
-chrome.fileSystemProvider.EntryMetadata.prototype.isDirectory;
-
-
-/** @type {string|undefined} */
-chrome.fileSystemProvider.EntryMetadata.prototype.name;
-
-
-/** @type {number|undefined} */
-chrome.fileSystemProvider.EntryMetadata.prototype.size;
-
-
-/** @type {!Date|undefined} */
-chrome.fileSystemProvider.EntryMetadata.prototype.modificationTime;
-
-
-/** @type {string|undefined} */
-chrome.fileSystemProvider.EntryMetadata.prototype.mimeType;
-
-
-/** @type {string|undefined} */
-chrome.fileSystemProvider.EntryMetadata.prototype.thumbnail;
-
-
-/**
- * @constructor
- * @see https://developer.chrome.com/extensions/fileSystemProvider#type-FileSystemInfo
- */
-chrome.fileSystemProvider.FileSystemInfo = function() {};
-
-
-/** @type {string} */
-chrome.fileSystemProvider.FileSystemInfo.prototype.fileSystemId;
-
-
-/** @type {string} */
-chrome.fileSystemProvider.FileSystemInfo.prototype.displayName;
-
-
-/** @type {boolean} */
-chrome.fileSystemProvider.FileSystemInfo.prototype.writable;
-
-
-/** @type {number} */
-chrome.fileSystemProvider.FileSystemInfo.prototype.openedFilesLimit;
-
-
-/**
- * @type {!Array<{
- *   openRequestId: number,
- *   filePath: string,
- *   mode: !chrome.fileSystemProvider.OpenFileMode,
- * }>}
- */
-chrome.fileSystemProvider.FileSystemInfo.prototype.openedFiles;
-
-
-/** @type {boolean|undefined} */
-chrome.fileSystemProvider.FileSystemInfo.prototype.supportsNotifyTag;
-
-
-/**
- * @type {!Array<!{
- *   entryPath: string,
- *   recursive: boolean,
- *   lastTag: (string|undefined),
- * }>}
- */
-chrome.fileSystemProvider.FileSystemInfo.prototype.watchers;
-
-
-/**
- * @param {string} fileSystemId
- * @param {function(!chrome.fileSystemProvider.FileSystemInfo): void} callback
- * @see https://developer.chrome.com/extensions/fileSystemProvider#method-get
- */
-chrome.fileSystemProvider.get = function(fileSystemId, callback) {};
-
-
-/**
- * @param {function(!Array<!chrome.fileSystemProvider.FileSystemInfo>): void}
- *     callback
- * @see https://developer.chrome.com/extensions/fileSystemProvider#method-getAll
- */
-chrome.fileSystemProvider.getAll = function(callback) {};
-
-
-/**
- * @record
- * @see https://developer.chrome.com/extensions/fileSystemProvider#method-mount
- */
-chrome.fileSystemProvider.MountOptions;
-
-
-/** @type {string} */
-chrome.fileSystemProvider.MountOptions.prototype.fileSystemId;
-
-
-/** @type {string} */
-chrome.fileSystemProvider.MountOptions.prototype.displayName;
-
-
-/** @type {boolean|undefined} */
-chrome.fileSystemProvider.MountOptions.prototype.writable;
-
-
-/** @type {number|undefined} */
-chrome.fileSystemProvider.MountOptions.prototype.openedFilesLimit;
-
-
-/** @type {boolean|undefined} */
-chrome.fileSystemProvider.MountOptions.prototype.supportsNotifyTag;
-
-
-/** @type {boolean|undefined} */
-chrome.fileSystemProvider.MountOptions.prototype.persistent;
-
-
-/**
- * @param {!chrome.fileSystemProvider.MountOptions} options
- * @param {function(): void=} callback
- * @see https://developer.chrome.com/extensions/fileSystemProvider#method-mount
- */
-chrome.fileSystemProvider.mount = function(options, callback) {};
-
-
-/**
- * @record
- * @see https://developer.chrome.com/extensions/fileSystemProvider#method-notify
- */
-chrome.fileSystemProvider.NotifyOptions;
-
-
-/** @type {string} */
-chrome.fileSystemProvider.NotifyOptions.prototype.fileSystemId;
-
-
-/** @type {string} */
-chrome.fileSystemProvider.NotifyOptions.prototype.observedPath;
-
-
-/** @type {boolean} */
-chrome.fileSystemProvider.NotifyOptions.prototype.recursive;
-
-
-/** @type {!chrome.fileSystemProvider.ChangeType} */
-chrome.fileSystemProvider.NotifyOptions.prototype.changeType;
-
-
-/**
- * @type {!Array<{
- *   entryPath: string,
- *   changeType: !chrome.fileSystemProvider.ChangeType,
- * }>|undefined}
- */
-chrome.fileSystemProvider.NotifyOptions.prototype.changes;
-
-
-/** @type {string|undefined} */
-chrome.fileSystemProvider.NotifyOptions.prototype.tag;
-
-
-/**
- * @param {!chrome.fileSystemProvider.NotifyOptions} options
- * @param {function(): void=} callback
- * @see https://developer.chrome.com/extensions/fileSystemProvider#method-notify
- */
-chrome.fileSystemProvider.notify = function(options, callback) {};
-
-
-/**
- * @record
- * @see https://developer.chrome.com/extensions/fileSystemProvider#method-unmount
- */
-chrome.fileSystemProvider.UnmountOptions;
-
-
-/** @type {string} */
-chrome.fileSystemProvider.UnmountOptions.prototype.fileSystemId;
-
-
-/**
- * @param {!chrome.fileSystemProvider.UnmountOptions} options
- * @param {function(): void=} callback
- */
-chrome.fileSystemProvider.unmount = function(options, callback) {};
-
-/**
- * FSP events that don't "return" values to the caller via onSuccess.
- *
- * @interface
- * @template T
- * @extends {ChromeBaseEvent<function(
- *   T,
- *   function(): void,
- *   function(!chrome.fileSystemProvider.ProviderError): void
- * )>}
- */
-chrome.fileSystemProvider.VoidBaseEvent;
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   operationRequestId: number,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onAbortRequested
- */
-chrome.fileSystemProvider.AbortRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.AbortRequestedEvent} */
-chrome.fileSystemProvider.onAbortRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   entryPath: string,
- *   recursive: boolean,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onAddWatcherRequested
- */
-chrome.fileSystemProvider.AddWatcherRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.AddWatcherRequestedEvent} */
-chrome.fileSystemProvider.onAddWatcherRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   openRequestId: number,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onCloseFileRequested
- */
-chrome.fileSystemProvider.CloseFileRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.CloseFileRequestedEvent} */
-chrome.fileSystemProvider.onCloseFileRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onConfigureRequested
- */
-chrome.fileSystemProvider.ConfigureRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.ConfigureRequestedEvent} */
-chrome.fileSystemProvider.onConfigureRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   sourcePath: string,
- *   targetPath: string,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onCopyEntryRequested
- */
-chrome.fileSystemProvider.CopyEntryRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.CopyEntryRequestedEvent} */
-chrome.fileSystemProvider.onCopyEntryRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   directoryPath: string,
- *   recursive: boolean,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onCreateDirectoryRequested
- */
-chrome.fileSystemProvider.CreateDirectoryRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.CreateDirectoryRequestedEvent} */
-chrome.fileSystemProvider.onCreateDirectoryRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   filePath: string,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onCreateFileRequested
- */
-chrome.fileSystemProvider.CreateFileRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.CreateFileRequestedEvent} */
-chrome.fileSystemProvider.onCreateFileRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   entryPath: string,
- *   recursive: boolean,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onDeleteEntryRequested
- */
-chrome.fileSystemProvider.DeleteEntryRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.DeleteEntryRequestedEvent} */
-chrome.fileSystemProvider.onDeleteEntryRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   entryPaths: !Array<string>,
- *   actionId: string,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onExecuteActionRequested
- */
-chrome.fileSystemProvider.ExecuteActionRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.ExecuteActionRequestedEvent} */
-chrome.fileSystemProvider.onExecuteActionRequested;
-
-
-/**
- * @interface
- * @extends {ChromeBaseEvent<function(
- *   {
- *     fileSystemId: string,
- *     requestId: number,
- *     entryPaths: !Array<string>,
- *   },
- *   function(
- *     !Array<!{
- *       id: (string|chrome.fileSystemProvider.CommonActionId),
- *       title: (string|undefined),
- *     }>
- *   ): void,
- *   function(!chrome.fileSystemProvider.ProviderError): void
- * )>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onGetActionsRequested
- */
-chrome.fileSystemProvider.GetActionsRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.GetActionsRequestedEvent} */
-chrome.fileSystemProvider.onGetActionsRequested;
-
-
-/**
- * @interface
- * @extends {ChromeBaseEvent<function(
- *   {
- *     fileSystemId: string,
- *     requestId: number,
- *     entryPath: string,
- *     isDirectory: boolean,
- *     name: boolean,
- *     size: boolean,
- *     modificationTime: boolean,
- *     mimeType: boolean,
- *     thumbnail: boolean,
- *   },
- *   function(!chrome.fileSystemProvider.EntryMetadata): void,
- *   function(!chrome.fileSystemProvider.ProviderError): void
- * )>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onGetMetadataRequested
- */
-chrome.fileSystemProvider.GetMetadataRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.GetMetadataRequestedEvent} */
-chrome.fileSystemProvider.onGetMetadataRequested;
-
-
-/**
- * @interface
- * @extends {ChromeBaseEvent<function(
- *   function(): void,
- *   function(!chrome.fileSystemProvider.ProviderError): void
- * )>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onMountRequested
- */
-chrome.fileSystemProvider.MountRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.MountRequestedEvent} */
-chrome.fileSystemProvider.onMountRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   sourcePath: string,
- *   targetPath: string,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onMoveEntryRequested
- */
-chrome.fileSystemProvider.MoveEntryRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.MoveEntryRequestedEvent} */
-chrome.fileSystemProvider.onMoveEntryRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   filePath: string,
- *   mode: chrome.fileSystemProvider.OpenFileMode,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onOpenFileRequested
- */
-chrome.fileSystemProvider.OpenFileRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.OpenFileRequestedEvent} */
-chrome.fileSystemProvider.onOpenFileRequested;
-
-
-/**
- * @interface
- * @extends {ChromeBaseEvent<function(
- *   {
- *     fileSystemId: string,
- *     requestId: number,
- *     directoryPath: string,
- *     isDirectory: boolean,
- *     name: boolean,
- *     size: boolean,
- *     modificationTime: boolean,
- *     mimeType: boolean,
- *     thumbnail: boolean,
- *   },
- *   function(
- *     !Array<!chrome.fileSystemProvider.EntryMetadata>,
- *     boolean
- *   ): void,
- *   function(!chrome.fileSystemProvider.ProviderError): void
- * )>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onReadDirectoryRequested
- */
-chrome.fileSystemProvider.ReadDirectoryRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.ReadDirectoryRequestedEvent} */
-chrome.fileSystemProvider.onReadDirectoryRequested;
-
-
-/**
- * @interface
- * @extends {ChromeBaseEvent<function(
- *   {
- *     fileSystemId: string,
- *     requestId: number,
- *     openRequestId: number,
- *     offset: number,
- *     length: number,
- *   },
- *   function(!ArrayBuffer, boolean): void,
- *   function(!chrome.fileSystemProvider.ProviderError): void
- * )>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onReadFileRequested
- */
-chrome.fileSystemProvider.ReadFileRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.ReadFileRequestedEvent} */
-chrome.fileSystemProvider.onReadFileRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   entryPath: string,
- *   recursive: boolean,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onRemoveWatcherRequested
- */
-chrome.fileSystemProvider.RemoveWatcherRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.RemoveWatcherRequestedEvent} */
-chrome.fileSystemProvider.onRemoveWatcherRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   filePath: string,
- *   length: number,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onTruncateRequested
- */
-chrome.fileSystemProvider.TruncateRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.TruncateRequestedEvent} */
-chrome.fileSystemProvider.onTruncateRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onUnmountRequested
- */
-chrome.fileSystemProvider.UnmountRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.UnmountRequestedEvent} */
-chrome.fileSystemProvider.onUnmountRequested;
-
-
-/**
- * @interface
- * @extends {chrome.fileSystemProvider.VoidBaseEvent<{
- *   fileSystemId: string,
- *   requestId: number,
- *   openRequestId: number,
- *   offset: number,
- *   data: !ArrayBuffer,
- * }>}
- * @see https://developer.chrome.com/extensions/fileSystemProvider#event-onWriteFileRequested
- */
-chrome.fileSystemProvider.WriteFileRequestedEvent;
-
-
-/** @type {!chrome.fileSystemProvider.WriteFileRequestedEvent} */
-chrome.fileSystemProvider.onWriteFileRequested;
-
-
 /**
  * @const
  * @see https://developer.chrome.com/apps/syncFileSystem

diff --git a/third_party/closure_compiler/externs/chrome_extensions.js b/third_party/closure_compiler/externs/chrome_extensions.js
index bd0fd2e51a3bb..12be61c3f581c 100644
--- a/third_party/closure_compiler/externs/chrome_extensions.js
+++ b/third_party/closure_compiler/externs/chrome_extensions.js
@@ -10607,122 +10607,6 @@ chrome.inlineInstallPrivate = {};
 chrome.inlineInstallPrivate.install = function(id, opt_callback) {};
 
 
-/**
- * @see https://cs.chromium.org/chromium/src/chrome/common/extensions/api/input_method_private.json
- */
-chrome.inputMethodPrivate = {};
-
-/**
- * @enum {string}
- */
-chrome.inputMethodPrivate.InputModeType = {
-  NO_KEYBOARD: '',
-  TEXT: '',
-  TEL: '',
-  URL: '',
-  EMAIL: '',
-  NUMERIC: '',
-  DECIMAL: '',
-  SEARCH: '',
-};
-
-
-/**
- * @enum {string}
- */
-chrome.inputMethodPrivate.InputContextType = {
-  TEXT: '',
-  SEARCH: '',
-  TEL: '',
-  URL: '',
-  EMAIL: '',
-  NUMBER: '',
-  PASSWORD: '',
-};
-
-
-/**
- * @enum {string}
- */
-chrome.inputMethodPrivate.AutoCapitalizeType = {
-  OFF: '',
-  CHARACTERS: '',
-  WORDS: '',
-  SENTENCES: '',
-};
-
-
-/**
- * @enum {string}
- */
-chrome.inputMethodPrivate.FocusReason = {
-  MOUSE: '',
-  TOUCH: '',
-  PEN: '',
-  OTHER: '',
-};
-
-
-/** @constructor */
-chrome.inputMethodPrivate.InputContext = function() {};
-
-
-/** @type {number} */
-chrome.inputMethodPrivate.InputContext.prototype.contextID;
-
-/** @type {chrome.inputMethodPrivate.InputModeType} */
-chrome.inputMethodPrivate.InputContext.prototype.mode;
-
-/** @type {chrome.inputMethodPrivate.InputContextType} */
-chrome.inputMethodPrivate.InputContext.prototype.type;
-
-
-/** @type {boolean} */
-chrome.inputMethodPrivate.InputContext.prototype.autoCorrect;
-
-
-/** @type {boolean} */
-chrome.inputMethodPrivate.InputContext.prototype.autoComplete;
-
-
-/** @type {chrome.inputMethodPrivate.AutoCapitalizeType} */
-chrome.inputMethodPrivate.InputContext.prototype.autoCapitalize;
-
-
-/** @type {boolean} */
-chrome.inputMethodPrivate.InputContext.prototype.spellCheck;
-
-
-/** @type {boolean} */
-chrome.inputMethodPrivate.InputContext.prototype.shouldDoLearning;
-
-
-/** @type {chrome.inputMethodPrivate.FocusReason} */
-chrome.inputMethodPrivate.InputContext.prototype.focusReason;
-
-
-/** @type {boolean} */
-chrome.inputMethodPrivate.InputContext.prototype.hasBeenPassword;
-
-
-/**
- * Commits the text currently being composed without moving the selected text
- * range. This is a no-op if the context is incorrect.
- * @param {{
- *  contextID: number
- * }} parameters Parameters for the finishComposingText API call.
- * @param {function(): void=} callback Called when the operation completes.
- */
-chrome.inputMethodPrivate.finishComposingText = function(
-    parameters, callback) {};
-
-
-/**
- * Resets the current engine to its initial state. Fires an OnReset event.
- */
-chrome.inputMethodPrivate.reset = function() {};
-
-
 /**
  * @const
  * @see https://goo.gl/7dvJFW