diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0b35edd..b8a6e6b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,9 +10,7 @@
   * `Uri` added `removeFragment` method.
   * `String.allMatches` (implementing `Pattern.allMatches`) is now lazy,
     as all `allMatches` implementations are intended to be.
-  * `Resource` is deprecated in favor of the resource package.
-    See https://pub.dartlang.org/packages/resource to learn more. This is
-    the last release to contain the Resource class.
+  * `Resource` is deprecated, and will be removed in a future release.
 
 * `dart:developer`
   * Added `Timeline` class for interacting with Observatory's timeline feature.
diff --git a/sdk/lib/developer/timeline.dart b/sdk/lib/developer/timeline.dart
index c42e5c0..2753add 100644
--- a/sdk/lib/developer/timeline.dart
+++ b/sdk/lib/developer/timeline.dart
@@ -55,12 +55,12 @@
 /// An asynchronous task on the timeline. Asynchronous tasks can live
 /// longer than the current event and can even be shared between isolates.
 /// An asynchronous task can have many (nested) blocks. To share a
-/// [TimelineTask] across isolates, you must construct a [TimelineTask] in
+/// [_TimelineTask] across isolates, you must construct a [_TimelineTask] in
 /// both isolates using the same [taskId] and [category].
-class TimelineTask {
+class _TimelineTask {
   /// Create a task. [taskId] will be set by the system.
   /// Optionally you can specify a [category] name.
-  TimelineTask({String category: 'Dart'})
+  _TimelineTask({String category: 'Dart'})
       : _taskId = _getNextAsyncId(),
         category = category {
     if (category is! String) {
@@ -73,7 +73,7 @@
   /// Create a task with an explicit [taskId]. This is useful if you are
   /// passing a task between isolates. Optionally you can specify a [category]
   /// name.
-  TimelineTask.withTaskId(int taskId, {String category: 'Dart'})
+  _TimelineTask.withTaskId(int taskId, {String category: 'Dart'})
       : _taskId = taskId,
         category = category {
     if (taskId is! int) {
@@ -90,14 +90,14 @@
 
   /// Start a block in this task named [name]. Optionally takes
   /// a [Map] of [arguments].
-  /// Returns an [AsyncBlock] which is used to finish this block.
-  AsyncBlock start(String name, {Map arguments}) {
+  /// Returns an [_AsyncBlock] which is used to finish this block.
+  _AsyncBlock start(String name, {Map arguments}) {
     if (name is! String) {
       throw new ArgumentError.value(name,
                                     'name',
                                     'Must be a String');
     }
-    var block = new AsyncBlock._(name, _taskId, category);
+    var block = new _AsyncBlock._(name, _taskId, category);
     if (arguments is Map) {
       block.arguments.addAll(arguments);
     }
@@ -107,17 +107,17 @@
   }
 
   /// Retrieve the asynchronous task's id. Can be used to construct a
-  /// [TimelineTask] in another isolate.
+  /// [_TimelineTask] in another isolate.
   int get taskId => _taskId;
   final int _taskId;
   /// Retrieve the asynchronous task's category. Can be used to construct a
-  /// [TimelineTask] in another isolate.
+  /// [_TimelineTask] in another isolate.
   final String category;
 }
 
 /// An asynchronous block of time on the timeline. This block can be kept
 /// open across isolate messages.
-class AsyncBlock {
+class _AsyncBlock {
   /// The category this block belongs to.
   final String category;
   /// The name of this block.
@@ -129,7 +129,7 @@
   final Map arguments = {};
   bool _finished = false;
 
-  AsyncBlock._(this.name, this._taskId, this.category);
+  _AsyncBlock._(this.name, this._taskId, this.category);
 
   // Emit the start event.
   void _start() {
@@ -156,7 +156,7 @@
   void finish() {
     if (_finished) {
       throw new StateError(
-          'It is illegal to call finish twice on the same AsyncBlock');
+          'It is illegal to call finish twice on the same _AsyncBlock');
     }
     _finished = true;
     _finish();
diff --git a/tools/deps/dartium.deps/DEPS b/tools/deps/dartium.deps/DEPS
index 7cb4b7f9..3ec5f48 100644
--- a/tools/deps/dartium.deps/DEPS
+++ b/tools/deps/dartium.deps/DEPS
@@ -14,7 +14,7 @@
   "dartium_chromium_commit": "62a7524d4f71c9e0858d24b0aa1bbff3a2d09bff",
   "chromium_base_revision": "297060",
   "dartium_webkit_branch": "/blink/branches/dart/2171_4",
-  "dartium_webkit_revision": "202694",
+  "dartium_webkit_revision": "202698",
 
   # We use mirrors of all github repos to guarantee reproducibility and
   # consistency between what users see and what the bots see.
