diff --git a/DEPS b/DEPS
index e27f5ed..4ead679 100644
--- a/DEPS
+++ b/DEPS
@@ -10,7 +10,7 @@
   'checkout_configuration': 'default',
   'checkout_instrumented_libraries': 'checkout_linux and checkout_configuration == "default"',
   'webrtc_git': 'https://webrtc.googlesource.com',
-  'chromium_revision': '20579735a6a48710514d69d50ed0d2516b97f3ae',
+  'chromium_revision': 'e1ef7d4b6ba51e51817556f44f71b95d0c64f106',
   'boringssl_git': 'https://boringssl.googlesource.com',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
@@ -43,13 +43,13 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Chromium third_party
   # and whatever else without interference from each other.
-  'chromium_third_party_revision': 'edc5c03dcdccbc132e4afcff18d8fa54bfb6c47d',
+  'chromium_third_party_revision': 'ab9fbe29c97f030a4787abf517e4902895c757f1',
 }
 deps = {
   # TODO(kjellander): Move this to be Android-only once the libevent dependency
   # in base/third_party/libevent is solved.
   'src/base':
-    Var('chromium_git') + '/chromium/src/base' + '@' + 'd9f706c881e376e32feb308b0f9f8ec74051b812',
+    Var('chromium_git') + '/chromium/src/base' + '@' + '03e1bc561f08357987d0a3b1a6306b378cd61c04',
   'src/build':
     Var('chromium_git') + '/chromium/src/build' + '@' + 'bb306be4076914cdd287517d8480851a410d7788',
   'src/buildtools':
@@ -61,11 +61,11 @@
     'condition': 'checkout_android',
   },
   'src/ios': {
-    'url': Var('chromium_git') + '/chromium/src/ios' + '@' + '1115acd5aa104c91d01bb2b728b3b397101fa793',
+    'url': Var('chromium_git') + '/chromium/src/ios' + '@' + '48697bf3a10f61dbd71c30722640efbbec82d3e2',
     'condition': 'checkout_ios',
   },
   'src/testing':
-    Var('chromium_git') + '/chromium/src/testing' + '@' + '555ababf34480bc4e23ac5363f61e0d578b45257',
+    Var('chromium_git') + '/chromium/src/testing' + '@' + '6440c4ea3ae95d9142ae72fdd55c6406ad0df00b',
   # This entry is used for chromium third_party rolling into webrtc third_party only.
   'src/third_party_chromium': {
       'url': Var('chromium_git') + '/chromium/src/third_party' + '@' + Var('chromium_third_party_revision'),
@@ -185,7 +185,7 @@
   'src/third_party/yasm/source/patched-yasm':
     Var('chromium_git') + '/chromium/deps/yasm/patched-yasm.git' + '@' + 'b98114e18d8b9b84586b10d24353ab8616d4c5fc',
   'src/tools':
-    Var('chromium_git') + '/chromium/src/tools' + '@' + '16de1fe001deeefb10875f26351b969c3d71400f',
+    Var('chromium_git') + '/chromium/src/tools' + '@' + '66f1089d0cd8b57081b77d828ee6f6c46a64a0c0',
   'src/tools/swarming_client':
     Var('chromium_git') + '/infra/luci/client-py.git' + '@' +  Var('swarming_revision'),
 
diff --git a/third_party/closure_compiler/compiled_resources2.gyp b/third_party/closure_compiler/compiled_resources2.gyp
index 7eddef4..1ab2cdf 100644
--- a/third_party/closure_compiler/compiled_resources2.gyp
+++ b/third_party/closure_compiler/compiled_resources2.gyp
@@ -14,10 +14,6 @@
       'target_name': 'compiled_resources2',
       'type': 'none',
       'dependencies': [
-        '<(DEPTH)/ui/webui/resources/cr_components/compiled_resources2.gyp:*',
-        '<(DEPTH)/ui/webui/resources/cr_elements/compiled_resources2.gyp:*',
-        '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:*',
-        '<(DEPTH)/ui/webui/resources/js/cr/ui/compiled_resources2.gyp:*',
       ],
     },
   ]
diff --git a/third_party/closure_compiler/externs/accessibility_private.js b/third_party/closure_compiler/externs/accessibility_private.js
index 7cb7cf0..903fdf8 100644
--- a/third_party/closure_compiler/externs/accessibility_private.js
+++ b/third_party/closure_compiler/externs/accessibility_private.js
@@ -21,7 +21,6 @@
  * @typedef {{
  *   message: string
  * }}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#type-AlertInfo
  */
 chrome.accessibilityPrivate.AlertInfo;
 
@@ -33,13 +32,11 @@
  *   width: number,
  *   height: number
  * }}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#type-ScreenRect
  */
 chrome.accessibilityPrivate.ScreenRect;
 
 /**
  * @enum {string}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#type-Gesture
  */
 chrome.accessibilityPrivate.Gesture = {
   CLICK: 'click',
@@ -63,7 +60,6 @@
 
 /**
  * @enum {string}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#type-SyntheticKeyboardEventType
  */
 chrome.accessibilityPrivate.SyntheticKeyboardEventType = {
   KEYUP: 'keyup',
@@ -77,7 +73,6 @@
  *   search: (boolean|undefined),
  *   shift: (boolean|undefined)
  * }}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#type-SyntheticKeyboardModifiers
  */
 chrome.accessibilityPrivate.SyntheticKeyboardModifiers;
 
@@ -87,13 +82,11 @@
  *   keyCode: number,
  *   modifiers: (!chrome.accessibilityPrivate.SyntheticKeyboardModifiers|undefined)
  * }}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#type-SyntheticKeyboardEvent
  */
 chrome.accessibilityPrivate.SyntheticKeyboardEvent;
 
 /**
  * @enum {string}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#type-KeyboardMode
  */
 chrome.accessibilityPrivate.KeyboardMode = {
   FULL_WIDTH: 'FULL_WIDTH',
@@ -102,7 +95,6 @@
 
 /**
  * @enum {string}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#type-SelectToSpeakState
  */
 chrome.accessibilityPrivate.SelectToSpeakState = {
   SELECTING: 'selecting',
@@ -115,7 +107,6 @@
  * the calling extension to provide accessibility for web contents.
  * @param {boolean} enabled True if native accessibility support should be
  *     enabled.
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#method-setNativeAccessibilityEnabled
  */
 chrome.accessibilityPrivate.setNativeAccessibilityEnabled = function(enabled) {};
 
@@ -125,7 +116,6 @@
  *     rectangles to draw the accessibility focus ring around.
  * @param {string=} color CSS-style hex color string beginning with # like
  *     #FF9982 or #EEE.
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#method-setFocusRing
  */
 chrome.accessibilityPrivate.setFocusRing = function(rects, color) {};
 
@@ -135,7 +125,6 @@
  *     rectangles to draw the highlight around.
  * @param {string} color CSS-style hex color string beginning with # like
  *     #FF9982 or #EEE.
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#method-setHighlights
  */
 chrome.accessibilityPrivate.setHighlights = function(rects, color) {};
 
@@ -149,14 +138,12 @@
  * @param {boolean} capture True if key events should be swallowed natively and
  *     not propagated if preventDefault() gets called by the extension's
  *     background page.
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#method-setKeyboardListener
  */
 chrome.accessibilityPrivate.setKeyboardListener = function(enabled, capture) {};
 
 /**
  * Darkens or undarkens the screen.
  * @param {boolean} enabled True to darken screen; false to undarken screen.
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#method-darkenScreen
  */
 chrome.accessibilityPrivate.darkenScreen = function(enabled) {};
 
@@ -164,14 +151,12 @@
  * Change the keyboard keys captured by Switch Access.
  * @param {!Array<number>} key_codes The key codes for the keys that will be
  *     captured.
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#method-setSwitchAccessKeys
  */
 chrome.accessibilityPrivate.setSwitchAccessKeys = function(key_codes) {};
 
 /**
  * Sets current ARC app to use native ARC support.
  * @param {boolean} enabled True for ChromeVox (native), false for TalkBack.
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#method-setNativeChromeVoxArcSupportForCurrentApp
  */
 chrome.accessibilityPrivate.setNativeChromeVoxArcSupportForCurrentApp = function(enabled) {};
 
@@ -179,14 +164,12 @@
  * Sends a fabricated key event.
  * @param {!chrome.accessibilityPrivate.SyntheticKeyboardEvent} keyEvent The
  *     event to send.
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#method-sendSyntheticKeyEvent
  */
 chrome.accessibilityPrivate.sendSyntheticKeyEvent = function(keyEvent) {};
 
 /**
  * Fired whenever ChromeVox should output introduction.
  * @type {!ChromeEvent}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#event-onIntroduceChromeVox
  */
 chrome.accessibilityPrivate.onIntroduceChromeVox;
 
@@ -194,7 +177,6 @@
  * Fired when an accessibility gesture is detected by the touch exploration
  * controller.
  * @type {!ChromeEvent}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#event-onAccessibilityGesture
  */
 chrome.accessibilityPrivate.onAccessibilityGesture;
 
@@ -202,7 +184,6 @@
  * Fired when we first detect two fingers are held down, which can be used to
  * toggle spoken feedback on some touch-only devices.
  * @type {!ChromeEvent}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#event-onTwoFingerTouchStart
  */
 chrome.accessibilityPrivate.onTwoFingerTouchStart;
 
@@ -210,7 +191,6 @@
  * Fired when  the user is no longer holding down two fingers (including
  * releasing one, holding down three, or moving them).
  * @type {!ChromeEvent}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#event-onTwoFingerTouchStop
  */
 chrome.accessibilityPrivate.onTwoFingerTouchStop;
 
@@ -219,7 +199,6 @@
  * between selecting with the mouse, speaking, and inactive.
  * @param {!chrome.accessibilityPrivate.SelectToSpeakState} state The current
  *    state of the Select-to-Speak extension
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#method-onSelectToSpeakStateChanged
  */
 chrome.accessibilityPrivate.onSelectToSpeakStateChanged = function(state) {};
 
@@ -227,6 +206,5 @@
  * Called when Chrome OS wants to toggle the Select-to-Speak state, between selecting
  * with the mouse, speaking, and inactive
  * @type {!ChromeEvent}
- * @see https://developer.chrome.com/extensions/accessibilityPrivate#event-onSelectToSpeakStateChangeRequested
  */
 chrome.accessibilityPrivate.onSelectToSpeakStateChangeRequested;
diff --git a/third_party/closure_compiler/externs/autofill_private.js b/third_party/closure_compiler/externs/autofill_private.js
index e069ae9..40baff7 100644
--- a/third_party/closure_compiler/externs/autofill_private.js
+++ b/third_party/closure_compiler/externs/autofill_private.js
@@ -1,4 +1,4 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
+// Copyright 2018 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.
 
@@ -18,7 +18,6 @@
 
 /**
  * @enum {string}
- * @see https://developer.chrome.com/extensions/autofillPrivate#type-AddressField
  */
 chrome.autofillPrivate.AddressField = {
   FULL_NAME: 'FULL_NAME',
@@ -39,7 +38,6 @@
  *   isLocal: (boolean|undefined),
  *   isCached: (boolean|undefined)
  * }}
- * @see https://developer.chrome.com/extensions/autofillPrivate#type-AutofillMetadata
  */
 chrome.autofillPrivate.AutofillMetadata;
 
@@ -60,7 +58,6 @@
  *   languageCode: (string|undefined),
  *   metadata: (!chrome.autofillPrivate.AutofillMetadata|undefined)
  * }}
- * @see https://developer.chrome.com/extensions/autofillPrivate#type-AddressEntry
  */
 chrome.autofillPrivate.AddressEntry;
 
@@ -69,7 +66,6 @@
  *   name: (string|undefined),
  *   countryCode: (string|undefined)
  * }}
- * @see https://developer.chrome.com/extensions/autofillPrivate#type-CountryEntry
  */
 chrome.autofillPrivate.CountryEntry;
 
@@ -80,7 +76,6 @@
  *   isLongField: boolean,
  *   placeholder: (string|undefined)
  * }}
- * @see https://developer.chrome.com/extensions/autofillPrivate#type-AddressComponent
  */
 chrome.autofillPrivate.AddressComponent;
 
@@ -88,7 +83,6 @@
  * @typedef {{
  *   row: !Array<!chrome.autofillPrivate.AddressComponent>
  * }}
- * @see https://developer.chrome.com/extensions/autofillPrivate#type-AddressComponentRow
  */
 chrome.autofillPrivate.AddressComponentRow;
 
@@ -97,7 +91,6 @@
  *   components: !Array<!chrome.autofillPrivate.AddressComponentRow>,
  *   languageCode: string
  * }}
- * @see https://developer.chrome.com/extensions/autofillPrivate#type-AddressComponents
  */
 chrome.autofillPrivate.AddressComponents;
 
@@ -110,7 +103,6 @@
  *   expirationYear: (string|undefined),
  *   metadata: (!chrome.autofillPrivate.AutofillMetadata|undefined)
  * }}
- * @see https://developer.chrome.com/extensions/autofillPrivate#type-CreditCardEntry
  */
 chrome.autofillPrivate.CreditCardEntry;
 
@@ -120,7 +112,6 @@
  *   indexOfNewNumber: number,
  *   countryCode: string
  * }}
- * @see https://developer.chrome.com/extensions/autofillPrivate#type-ValidatePhoneParams
  */
 chrome.autofillPrivate.ValidatePhoneParams;
 
@@ -129,7 +120,6 @@
  * be assigned a new one and added as a new entry.
  * @param {!chrome.autofillPrivate.AddressEntry} address The address entry to
  *     save.
- * @see https://developer.chrome.com/extensions/autofillPrivate#method-saveAddress
  */
 chrome.autofillPrivate.saveAddress = function(address) {};
 
@@ -137,7 +127,6 @@
  * Gets the list of all countries.
  * @param {function(!Array<!chrome.autofillPrivate.CountryEntry>):void} callback
  *     Callback which will be called with the countries.
- * @see https://developer.chrome.com/extensions/autofillPrivate#method-getCountryList
  */
 chrome.autofillPrivate.getCountryList = function(callback) {};
 
@@ -148,7 +137,6 @@
  *     for a     list of valid codes.
  * @param {function(!chrome.autofillPrivate.AddressComponents):void} callback
  *     Callback which will be called with components.
- * @see https://developer.chrome.com/extensions/autofillPrivate#method-getAddressComponents
  */
 chrome.autofillPrivate.getAddressComponents = function(countryCode, callback) {};
 
@@ -156,7 +144,6 @@
  * Gets the list of addresses.
  * @param {function(!Array<!chrome.autofillPrivate.AddressEntry>):void} callback
  *     Callback which will be called with the list of addresses.
- * @see https://developer.chrome.com/extensions/autofillPrivate#method-getAddressList
  */
 chrome.autofillPrivate.getAddressList = function(callback) {};
 
@@ -164,14 +151,12 @@
  * Saves the given credit card. If |card| has an empty string as its ID, it will
  * be assigned a new one and added as a new entry.
  * @param {!chrome.autofillPrivate.CreditCardEntry} card The card entry to save.
- * @see https://developer.chrome.com/extensions/autofillPrivate#method-saveCreditCard
  */
 chrome.autofillPrivate.saveCreditCard = function(card) {};
 
 /**
  * Removes the entry (address or credit card) with the given ID.
  * @param {string} guid ID of the entry to remove.
- * @see https://developer.chrome.com/extensions/autofillPrivate#method-removeEntry
  */
 chrome.autofillPrivate.removeEntry = function(guid) {};
 
@@ -183,7 +168,6 @@
  *     this function.
  * @param {function(!Array<string>):void} callback Callback which will be called
  *     with validated phone numbers.
- * @see https://developer.chrome.com/extensions/autofillPrivate#method-validatePhoneNumbers
  */
 chrome.autofillPrivate.validatePhoneNumbers = function(params, callback) {};
 
@@ -191,7 +175,6 @@
  * Gets the list of credit cards.
  * @param {function(!Array<!chrome.autofillPrivate.CreditCardEntry>):void}
  *     callback Callback which will be called with the list of credit cards.
- * @see https://developer.chrome.com/extensions/autofillPrivate#method-getCreditCardList
  */
 chrome.autofillPrivate.getCreditCardList = function(callback) {};
 
@@ -199,7 +182,6 @@
  * Clears the data associated with a wallet card which was saved locally so that
  * the saved copy is masked (e.g., "Card ending in 1234").
  * @param {string} guid GUID of the credit card to mask.
- * @see https://developer.chrome.com/extensions/autofillPrivate#method-maskCreditCard
  */
 chrome.autofillPrivate.maskCreditCard = function(guid) {};
 
@@ -207,7 +189,6 @@
  * Fired when the address list has changed, meaning that an entry has been
  * added, removed, or changed. |entries| The updated list of entries.
  * @type {!ChromeEvent}
- * @see https://developer.chrome.com/extensions/autofillPrivate#event-onAddressListChanged
  */
 chrome.autofillPrivate.onAddressListChanged;
 
@@ -215,6 +196,5 @@
  * Fired when the credit card list has changed, meaning that an entry has been
  * added, removed, or changed. |entries| The updated list of entries.
  * @type {!ChromeEvent}
- * @see https://developer.chrome.com/extensions/autofillPrivate#event-onCreditCardListChanged
  */
 chrome.autofillPrivate.onCreditCardListChanged;
diff --git a/third_party/closure_compiler/externs/file_manager_private.js b/third_party/closure_compiler/externs/file_manager_private.js
index fb3103e..bb81dcd 100644
--- a/third_party/closure_compiler/externs/file_manager_private.js
+++ b/third_party/closure_compiler/externs/file_manager_private.js
@@ -898,7 +898,7 @@
  * Requests fetching list of actions for the specified set of entries. If not
  * possible, then returns an error via chrome.runtime.lastError.
  * @param {!Array<!Entry>} entries
- * @param {function((!Array<!EntryAction>|undefined))} callback
+ * @param {function((!Array<!chrome.fileSystemProvider.Action>|undefined))} callback
  */
 chrome.fileManagerPrivate.getCustomActions = function(entries, callback) {};
 
@@ -967,17 +967,3 @@
 
 /** @type {!ChromeEvent} */
 chrome.fileManagerPrivate.onAppsUpdated;
-
-/* The declaration below (EntryAction) doesn't have any corresponding entry in
- * the file_manager_private.idl file.
- *
- * TODO(nigeltao): delete it.
- */
-
-/**
- * @typedef {{
- *   id: string,
- *   title: (string|undefined)
- * }}
- */
-var EntryAction;
