diff --git a/DEPS b/DEPS
index ab371efd..277039a 100644
--- a/DEPS
+++ b/DEPS
@@ -43,7 +43,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': '4159958b1cb02c5c608e72445f5a5cebed7c945b',
+  'v8_revision': '0f1adf590ad26ee3c33a50cbb4988cbb2615404b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -100,7 +100,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': 'c4312a02dfdb80caf063200eb52996df4928bdc3',
+  'catapult_revision': 'fb92d6bfba353bb1608486a6630e523c1de72994',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
diff --git a/base/debug/task_annotator.h b/base/debug/task_annotator.h
index 443c71bf3..2687c5c 100644
--- a/base/debug/task_annotator.h
+++ b/base/debug/task_annotator.h
@@ -39,11 +39,6 @@
   DISALLOW_COPY_AND_ASSIGN(TaskAnnotator);
 };
 
-#define TRACE_TASK_EXECUTION(run_function, task)           \
-  TRACE_EVENT2("toplevel", (run_function), "src_file",     \
-               (task).posted_from.file_name(), "src_func", \
-               (task).posted_from.function_name());
-
 }  // namespace debug
 }  // namespace base
 
diff --git a/base/threading/worker_pool_posix.cc b/base/threading/worker_pool_posix.cc
index 53ae4e6..dcebe0a 100644
--- a/base/threading/worker_pool_posix.cc
+++ b/base/threading/worker_pool_posix.cc
@@ -86,9 +86,7 @@
     PendingTask pending_task = pool_->WaitForTask();
     if (pending_task.task.is_null())
       break;
-    TRACE_EVENT2("toplevel", "WorkerThread::ThreadMain::Run",
-        "src_file", pending_task.posted_from.file_name(),
-        "src_func", pending_task.posted_from.function_name());
+    TRACE_TASK_EXECUTION("WorkerThread::ThreadMain::Run", pending_task);
 
     tracked_objects::TaskStopwatch stopwatch;
     stopwatch.Start();
diff --git a/base/threading/worker_pool_win.cc b/base/threading/worker_pool_win.cc
index 1b0ade5..575caaa6 100644
--- a/base/threading/worker_pool_win.cc
+++ b/base/threading/worker_pool_win.cc
@@ -21,9 +21,7 @@
 
 DWORD CALLBACK WorkItemCallback(void* param) {
   PendingTask* pending_task = static_cast<PendingTask*>(param);
-  TRACE_EVENT2("toplevel", "WorkItemCallback::Run",
-               "src_file", pending_task->posted_from.file_name(),
-               "src_func", pending_task->posted_from.function_name());
+  TRACE_TASK_EXECUTION("WorkerThread::ThreadMain::Run", *pending_task);
 
   g_worker_pool_running_on_this_thread.Get().Set(true);
 
diff --git a/base/trace_event/common/trace_event_common.h b/base/trace_event/common/trace_event_common.h
index f65b35b..0b549d4 100644
--- a/base/trace_event/common/trace_event_common.h
+++ b/base/trace_event/common/trace_event_common.h
@@ -926,6 +926,15 @@
                                    name, id, TRACE_EVENT_FLAG_COPY, arg1_name, \
                                    arg1_val, arg2_name, arg2_val)
 
+// Special trace event macro to trace task execution with the location where it
+// was posted from.
+#define TRACE_TASK_EXECUTION(run_function, task)                        \
+  TRACE_EVENT2("toplevel", run_function, "src_file",                    \
+               (task).posted_from.file_name(), "src_func",              \
+               (task).posted_from.function_name());                     \
+  TRACE_EVENT_API_SCOPED_TASK_EXECUTION_EVENT INTERNAL_TRACE_EVENT_UID( \
+      task_event)((task).posted_from.file_name());
+
 // TRACE_EVENT_METADATA* events are information related to other
 // injected events, not events in their own right.
 #define TRACE_EVENT_METADATA1(category_group, name, arg1_name, arg1_val) \
diff --git a/base/trace_event/heap_profiler_allocation_context_tracker.cc b/base/trace_event/heap_profiler_allocation_context_tracker.cc
index 2dfe79f..1fc8bc0 100644
--- a/base/trace_event/heap_profiler_allocation_context_tracker.cc
+++ b/base/trace_event/heap_profiler_allocation_context_tracker.cc
@@ -19,6 +19,7 @@
 namespace {
 
 const size_t kMaxStackDepth = 128u;
+const size_t kMaxTaskDepth = 16u;
 AllocationContextTracker* const kInitializingSentinel =
     reinterpret_cast<AllocationContextTracker*>(-1);
 
@@ -51,6 +52,7 @@
 
 AllocationContextTracker::AllocationContextTracker() : thread_name_(nullptr) {
   pseudo_stack_.reserve(kMaxStackDepth);
+  task_contexts_.reserve(kMaxTaskDepth);
 }
 AllocationContextTracker::~AllocationContextTracker() {}
 
@@ -99,6 +101,20 @@
   pseudo_stack_.pop_back();
 }
 
+void AllocationContextTracker::PushCurrentTaskContext(const char* context) {
+  DCHECK(context);
+  if (task_contexts_.size() < kMaxTaskDepth)
+    task_contexts_.push_back(context);
+  else
+    NOTREACHED();
+}
+
+void AllocationContextTracker::PopCurrentTaskContext(const char* context) {
+  DCHECK_EQ(context, task_contexts_.back())
+      << "Encountered an unmatched context end";
+  task_contexts_.pop_back();
+}
+
 // static
 AllocationContext AllocationContextTracker::GetContextSnapshot() {
   AllocationContext ctx;
@@ -126,7 +142,9 @@
     std::fill(dst, dst_end, nullptr);
   }
 
-  ctx.type_name = nullptr;
+  // TODO(ssid): Fix crbug.com/594803 to add file name as 3rd dimension
+  // (component name) in the heap profiler and not piggy back on the type name.
+  ctx.type_name = task_contexts_.empty() ? nullptr : task_contexts_.back();
 
   return ctx;
 }
diff --git a/base/trace_event/heap_profiler_allocation_context_tracker.h b/base/trace_event/heap_profiler_allocation_context_tracker.h
index 21c3c97..d6133323 100644
--- a/base/trace_event/heap_profiler_allocation_context_tracker.h
+++ b/base/trace_event/heap_profiler_allocation_context_tracker.h
@@ -58,6 +58,11 @@
   // Pops a frame from the thread-local pseudo stack.
   void PopPseudoStackFrame(StackFrame frame);
 
+  // Push and pop current task's context. A stack is used to support nested
+  // tasks and the top of the stack will be used in allocation context.
+  void PushCurrentTaskContext(const char* context);
+  void PopCurrentTaskContext(const char* context);
+
   // Returns a snapshot of the current thread-local context.
   AllocationContext GetContextSnapshot();
 
@@ -74,6 +79,10 @@
   // The thread name is used as the first entry in the pseudo stack.
   const char* thread_name_;
 
+  // Stack of tasks' contexts. Context serves as a different dimension than
+  // pseudo stack to cluster allocations.
+  std::vector<const char*> task_contexts_;
+
   DISALLOW_COPY_AND_ASSIGN(AllocationContextTracker);
 };
 
diff --git a/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc b/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc
index 6349ec0..05c60c7 100644
--- a/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc
+++ b/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc
@@ -7,6 +7,7 @@
 #include <iterator>
 
 #include "base/memory/ref_counted.h"
+#include "base/pending_task.h"
 #include "base/trace_event/heap_profiler_allocation_context.h"
 #include "base/trace_event/heap_profiler_allocation_context_tracker.h"
 #include "base/trace_event/trace_event.h"
@@ -251,5 +252,31 @@
   ASSERT_EQ(kCupcake, ctx2.backtrace.frames[1]);
 }
 
+TEST_F(AllocationContextTrackerTest, TrackTaskContext) {
+  const char kContext1[] = "context1";
+  const char kContext2[] = "context2";
+  {
+    // The context from the scoped task event should be used as type name.
+    TRACE_EVENT_API_SCOPED_TASK_EXECUTION_EVENT event1(kContext1);
+    AllocationContext ctx1 =
+        AllocationContextTracker::GetInstanceForCurrentThread()
+            ->GetContextSnapshot();
+    ASSERT_EQ(kContext1, ctx1.type_name);
+
+    // In case of nested events, the last event's context should be used.
+    TRACE_EVENT_API_SCOPED_TASK_EXECUTION_EVENT event2(kContext2);
+    AllocationContext ctx2 =
+        AllocationContextTracker::GetInstanceForCurrentThread()
+            ->GetContextSnapshot();
+    ASSERT_EQ(kContext2, ctx2.type_name);
+  }
+
+  // Type should be nullptr without task event.
+  AllocationContext ctx =
+      AllocationContextTracker::GetInstanceForCurrentThread()
+          ->GetContextSnapshot();
+  ASSERT_FALSE(ctx.type_name);
+}
+
 }  // namespace trace_event
 }  // namespace base
diff --git a/base/trace_event/heap_profiler_type_name_deduplicator.cc b/base/trace_event/heap_profiler_type_name_deduplicator.cc
index e7f57c8..055f86ab 100644
--- a/base/trace_event/heap_profiler_type_name_deduplicator.cc
+++ b/base/trace_event/heap_profiler_type_name_deduplicator.cc
@@ -16,6 +16,33 @@
 namespace base {
 namespace trace_event {
 
+namespace {
+
+// Extract directory name if |type_name| was file name. Otherwise, return
+// |type_name|.
+StringPiece ExtractDirNameFromFileName(const char* type_name) {
+  StringPiece result(type_name);
+  size_t last_seperator = result.find_last_of("\\/");
+
+  // If |type_name| was a not a file path, the seperator will not be found, so
+  // the whole type name is returned.
+  if (last_seperator == StringPiece::npos)
+    return result;
+
+  // Remove the file name from the path.
+  result.remove_suffix(result.length() - last_seperator);
+
+  // Remove the parent directory references.
+  const char kParentDirectory[] = "..";
+  const size_t kParentDirectoryLength = 3; // '../' or '..\'.
+  while (result.starts_with(kParentDirectory)) {
+    result.remove_prefix(kParentDirectoryLength);
+  }
+  return result;
+}
+
+}  // namespace
+
 TypeNameDeduplicator::TypeNameDeduplicator() {
   // A null pointer has type ID 0 ("unknown type");
   type_ids_.insert(std::make_pair(nullptr, 0));
@@ -53,9 +80,13 @@
     // a dictionary.
     SStringPrintf(&buffer, ",\"%d\":", it->second);
 
+    // TODO(ssid): crbug.com/594803 the type name is misused for file name in
+    // some cases.
+    StringPiece type_info = ExtractDirNameFromFileName(it->first);
+
     // |EscapeJSONString| appends, it does not overwrite |buffer|.
     bool put_in_quotes = true;
-    EscapeJSONString(it->first, put_in_quotes, &buffer);
+    EscapeJSONString(type_info, put_in_quotes, &buffer);
     out->append(buffer);
   }
 
diff --git a/base/trace_event/heap_profiler_type_name_deduplicator_unittest.cc b/base/trace_event/heap_profiler_type_name_deduplicator_unittest.cc
index 92ffcf8..8ab3f37 100644
--- a/base/trace_event/heap_profiler_type_name_deduplicator_unittest.cc
+++ b/base/trace_event/heap_profiler_type_name_deduplicator_unittest.cc
@@ -13,6 +13,8 @@
 namespace base {
 namespace trace_event {
 
+namespace {
+
 // Define all strings once, because the deduplicator requires pointer equality,
 // and string interning is unreliable.
 const char kInt[] = "int";
@@ -20,12 +22,43 @@
 const char kString[] = "string";
 const char kNeedsEscape[] = "\"quotes\"";
 
+#if defined(OS_POSIX)
+const char kTaskFileName[] = "../../base/trace_event/trace_log.cc";
+const char kTaskPath[] = "base/trace_event";
+#else
+const char kTaskFileName[] = "..\\..\\base\\memory\\memory_win.cc";
+const char kTaskPath[] = "base\\memory";
+#endif
+
 scoped_ptr<Value> DumpAndReadBack(const TypeNameDeduplicator& deduplicator) {
   std::string json;
   deduplicator.AppendAsTraceFormat(&json);
   return JSONReader::Read(json);
 }
 
+// Inserts a single type name into a new TypeNameDeduplicator instance and
+// checks if the value gets inserted and the exported value for |type_name| is
+// the same as |expected_value|.
+void TestInsertTypeAndReadback(const char* type_name,
+                               const char* expected_value) {
+  scoped_ptr<TypeNameDeduplicator> dedup(new TypeNameDeduplicator);
+  ASSERT_EQ(1, dedup->Insert(type_name));
+
+  scoped_ptr<Value> type_names = DumpAndReadBack(*dedup);
+  ASSERT_NE(nullptr, type_names);
+
+  const DictionaryValue* dictionary;
+  ASSERT_TRUE(type_names->GetAsDictionary(&dictionary));
+
+  // When the type name was inserted, it got ID 1. The exported key "1"
+  // should be equal to |expected_value|.
+  std::string value;
+  ASSERT_TRUE(dictionary->GetString("1", &value));
+  ASSERT_EQ(expected_value, value);
+}
+
+}  // namespace
+
 TEST(TypeNameDeduplicatorTest, Deduplication) {
   // The type IDs should be like this:
   // 0: [unknown]
@@ -48,22 +81,14 @@
 }
 
 TEST(TypeNameDeduplicatorTest, EscapeTypeName) {
-  scoped_ptr<TypeNameDeduplicator> dedup(new TypeNameDeduplicator);
-  ASSERT_EQ(1, dedup->Insert(kNeedsEscape));
-
   // Reading json should not fail, because the type name should have been
-  // escaped properly.
-  scoped_ptr<Value> type_names = DumpAndReadBack(*dedup);
-  ASSERT_NE(nullptr, type_names);
+  // escaped properly and exported value should contain quotes.
+  TestInsertTypeAndReadback(kNeedsEscape, kNeedsEscape);
+}
 
-  const DictionaryValue* dictionary;
-  ASSERT_TRUE(type_names->GetAsDictionary(&dictionary));
-
-  // When the type name was inserted, it got ID 1. The exported key "1"
-  // should contain the name, with quotes.
-  std::string type_name;
-  ASSERT_TRUE(dictionary->GetString("1", &type_name));
-  ASSERT_EQ("\"quotes\"", type_name);
+TEST(TypeNameDeduplicatorTest, TestExtractFileName) {
+  // The exported value for passed file name should be the folders in the path.
+  TestInsertTypeAndReadback(kTaskFileName, kTaskPath);
 }
 
 }  // namespace trace_event
diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h
index 2321d7ad..e7801e6 100644
--- a/base/trace_event/trace_event.h
+++ b/base/trace_event/trace_event.h
@@ -18,6 +18,7 @@
 #include "base/macros.h"
 #include "base/time/time.h"
 #include "base/trace_event/common/trace_event_common.h"
+#include "base/trace_event/heap_profiler_allocation_context_tracker.h"
 #include "base/trace_event/trace_event_system_stats_monitor.h"
 #include "base/trace_event/trace_log.h"
 #include "build/build_config.h"
@@ -210,6 +211,10 @@
 #define TRACE_EVENT_API_THREAD_BUCKET(thread_bucket)                           \
     g_trace_state[thread_bucket]
 
+// Scoped tracker for task execution context in the heap profiler.
+#define TRACE_EVENT_API_SCOPED_TASK_EXECUTION_EVENT \
+  trace_event_internal::ScopedTaskExecutionEvent
+
 ////////////////////////////////////////////////////////////////////////////////
 
 // Implementation detail: trace event macros create temporary variables
@@ -1045,6 +1050,31 @@
   const char* previous_state_;
 };
 
+// ScopedTaskExecutionEvent records the current task's context in the heap
+// profiler.
+class ScopedTaskExecutionEvent {
+ public:
+  explicit ScopedTaskExecutionEvent(const char* task_context)
+      : context_(task_context) {
+    if (UNLIKELY(
+            base::trace_event::AllocationContextTracker::capture_enabled())) {
+      base::trace_event::AllocationContextTracker::GetInstanceForCurrentThread()
+          ->PushCurrentTaskContext(context_);
+    }
+  }
+
+  ~ScopedTaskExecutionEvent() {
+    if (UNLIKELY(
+            base::trace_event::AllocationContextTracker::capture_enabled())) {
+      base::trace_event::AllocationContextTracker::GetInstanceForCurrentThread()
+          ->PopCurrentTaskContext(context_);
+    }
+  }
+
+ private:
+  const char* context_;
+};
+
 }  // namespace trace_event_internal
 
 namespace base {
diff --git a/chrome/VERSION b/chrome/VERSION
index 3be449b0..a7cd6de 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=51
 MINOR=0
-BUILD=2697
+BUILD=2698
 PATCH=0
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java
index 90efe4e..43d07b4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java
@@ -71,6 +71,8 @@
     protected static final String PENDING_OMA_DOWNLOADS = "PendingOMADownloads";
     private static final String UNKNOWN_MIME_TYPE = "application/unknown";
     private static final long UPDATE_DELAY_MILLIS = 1000;
+    // Wait 10 seconds to resume all downloads, so that we won't impact tab loading.
+    private static final long RESUME_DELAY_MILLIS = 10000;
     private static final int UNKNOWN_DOWNLOAD_STATUS = -1;
 
     // Values for the histogram MobileDownloadResumptionCount.
@@ -101,6 +103,8 @@
             "application/x-wifi-config"));
 
     private static DownloadManagerService sDownloadManagerService;
+    private static boolean sIsNetworkListenerDisabled;
+    private static boolean sIsNetworkMetered;
 
     private final SharedPreferences mSharedPrefs;
     private final ConcurrentHashMap<String, DownloadProgress> mDownloadProgressMap =
@@ -125,7 +129,6 @@
     private long mNativeDownloadManagerService;
     private DownloadManagerDelegate mDownloadManagerDelegate;
     private NetworkChangeNotifierAutoDetect mNetworkChangeNotifier;
-    private boolean mIsNetworkChangeNotifierDisabled;
 
     /**
      * Class representing progress of a download.
@@ -237,15 +240,19 @@
         // Note that this technically leaks the native object, however, DownloadManagerService
         // is a singleton that lives forever and there's no clean shutdown of Chrome on Android.
         init();
-        mDownloadNotifier.clearPendingDownloads();
         clearPendingOMADownloads();
     }
 
     @VisibleForTesting
     protected void init() {
-        mNativeDownloadManagerService = nativeInit();
         DownloadController.setDownloadNotificationService(this);
-        recordAutoPausedDownloads();
+        // Post a delayed task to resume all pending downloads.
+        mHandler.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                mDownloadNotifier.resumePendingDownloads();
+            }
+        }, RESUME_DELAY_MILLIS);
     }
 
     public void setDownloadManagerDelegate(DownloadManagerDelegate downloadManagerDelegate) {
@@ -527,13 +534,14 @@
                                 recordDownloadResumption(UMA_DOWNLOAD_RESUMPTION_MANUAL_PAUSE);
                             }
                         } else {
-                            mDownloadNotifier.notifyDownloadProgress(
-                                    info, progress.mStartTimeInMillis);
+                            mDownloadNotifier.notifyDownloadProgress(info,
+                                    progress.mStartTimeInMillis, progress.mCanDownloadWhileMetered);
                         }
                         break;
                     case DOWNLOAD_STATUS_CANCELLED:
                         mDownloadProgressMap.remove(item.getId());
-                        mDownloadNotifier.cancelNotification(item.getNotificationId());
+                        mDownloadNotifier.cancelNotification(
+                                item.getNotificationId(), item.getId());
                         break;
                     case DOWNLOAD_STATUS_INTERRUPTED:
                         // If the download can be auto resumed, keep it in the progress map so we
@@ -659,7 +667,7 @@
         if (progress == null) {
             if (!downloadItem.getDownloadInfo().isPaused()) {
                 progress = new DownloadProgress(System.currentTimeMillis(),
-                        isActiveNetworkMetered(), downloadItem, downloadStatus);
+                        isActiveNetworkMetered(mContext), downloadItem, downloadStatus);
                 mDownloadProgressMap.putIfAbsent(id, progress);
             }
         } else {
@@ -1095,34 +1103,44 @@
     /**
      * Called to cancel a download notification.
      * @param notificationId Notification Id of the download.
+     * @param downloadGuid GUID of the download.
      */
-    void cancelNotification(int notificationId) {
-        mDownloadNotifier.cancelNotification(notificationId);
+    void cancelNotification(int notificationId, String downloadGuid) {
+        mDownloadNotifier.cancelNotification(notificationId, downloadGuid);
     }
 
     /**
      * Called to resume a paused download.
-     * @param notificationId Notification Id of the download.
-     * @param downloadGuid GUID of the download.
-     * @param fileName Name of the download file.
+     * @param item Download item to resume.
      * @param hasUserGesture Whether the resumption is triggered by user gesture.
      */
     @VisibleForTesting
-    protected void resumeDownload(
-            int notificationId, String downloadGuid, String fileName, boolean hasUserGesture) {
+    protected void resumeDownload(DownloadItem item, boolean hasUserGesture) {
+        DownloadProgress progress = mDownloadProgressMap.get(item.getId());
+        if (progress != null && progress.mDownloadStatus == DOWNLOAD_STATUS_IN_PROGRESS
+                && !progress.mDownloadItem.getDownloadInfo().isPaused()) {
+            // Download already in progress, do nothing
+            return;
+        }
         int uma = hasUserGesture ? UMA_DOWNLOAD_RESUMPTION_CLICKED
                 : UMA_DOWNLOAD_RESUMPTION_AUTO_STARTED;
         recordDownloadResumption(uma);
+        if (progress == null) {
+            assert !item.getDownloadInfo().isPaused();
+            updateDownloadProgress(item, DOWNLOAD_STATUS_IN_PROGRESS);
+            progress = mDownloadProgressMap.get(item.getId());
+            // If progress is null, the browser must have been killed while the download is active.
+            recordDownloadResumption(UMA_DOWNLOAD_RESUMPTION_BROWSER_KILLED);
+        }
         if (hasUserGesture) {
-            DownloadProgress progress = mDownloadProgressMap.get(downloadGuid);
             // If user manually resumes a download, update the connection type that the download
             // can start. If the previous connection type is metered, manually resuming on an
             // unmetered network should not affect the original connection type.
-            if (progress != null && !progress.mCanDownloadWhileMetered) {
-                progress.mCanDownloadWhileMetered = isActiveNetworkMetered();
+            if (!progress.mCanDownloadWhileMetered) {
+                progress.mCanDownloadWhileMetered = isActiveNetworkMetered(mContext);
             }
         }
-        nativeResumeDownload(mNativeDownloadManagerService, notificationId, downloadGuid, fileName);
+        nativeResumeDownload(getNativeDownloadManagerService(), item.getId());
     }
 
     /**
@@ -1130,7 +1148,7 @@
      * @param downloadGuid GUID of the download.
      */
     void cancelDownload(String downloadGuid) {
-        nativeCancelDownload(mNativeDownloadManagerService, downloadGuid);
+        nativeCancelDownload(getNativeDownloadManagerService(), downloadGuid);
     }
 
     /**
@@ -1138,7 +1156,7 @@
      * @param downloadGuid GUID of the download.
      */
     void pauseDownload(String downloadGuid) {
-        nativePauseDownload(mNativeDownloadManagerService, downloadGuid);
+        nativePauseDownload(getNativeDownloadManagerService(), downloadGuid);
         // Calling pause will stop listening to the download item. Update its progress now.
         DownloadProgress progress = mDownloadProgressMap.get(downloadGuid);
         if (progress != null) {
@@ -1148,23 +1166,22 @@
         }
     }
 
-    @CalledByNative
-    void onResumptionFailed(int notificationId, String fileName) {
-        mDownloadNotifier.notifyDownloadFailed(
-                new DownloadInfo.Builder().setNotificationId(notificationId).setFileName(
-                        fileName).build());
-        recordDownloadResumption(UMA_DOWNLOAD_RESUMPTION_FAILED);
+    /**
+     * Helper method to create and retrieve the native DownloadManagerService when needed.
+     * @return pointer to native DownloadManagerService.
+     */
+    private long getNativeDownloadManagerService() {
+        if (mNativeDownloadManagerService == 0) {
+            mNativeDownloadManagerService = nativeInit();
+        }
+        return mNativeDownloadManagerService;
     }
 
-    /**
-     * Called to record the UMA histograms for all auto paused downloads when browser is killed.
-     */
-    private void recordAutoPausedDownloads() {
-        List<DownloadSharedPreferenceEntry> entries =
-                DownloadNotificationService.parseDownloadSharedPrefs(mSharedPrefs);
-        for (int i = 0; i < entries.size(); ++i) {
-            recordDownloadResumption(UMA_DOWNLOAD_RESUMPTION_BROWSER_KILLED);
-        }
+    @CalledByNative
+    void onResumptionFailed(String downloadGuid) {
+        mDownloadNotifier.notifyDownloadFailed(
+                new DownloadInfo.Builder().setDownloadGuid(downloadGuid).build());
+        recordDownloadResumption(UMA_DOWNLOAD_RESUMPTION_FAILED);
     }
 
     /**
@@ -1178,22 +1195,20 @@
     }
 
     /**
-     * Check if current network is metered.
-     * @return true if the network is metered, or false otherwise.
-     */
-    @VisibleForTesting
-    protected boolean isActiveNetworkMetered() {
-        ConnectivityManager cm =
-                (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
-        return cm.isActiveNetworkMetered();
-    }
-
-    /**
      * Called by tests to disable listening to network connection changes.
      */
     @VisibleForTesting
-    void disableNetworkChangeNotifierForTest() {
-        mIsNetworkChangeNotifierDisabled = true;
+    static void disableNetworkListenerForTest() {
+        sIsNetworkListenerDisabled = true;
+    }
+
+    /**
+     * Called by tests to set the network type.
+     * @isNetworkMetered Whether the network should appear to be metered.
+     */
+    @VisibleForTesting
+    static void setIsNetworkMeteredForTest(boolean isNetworkMetered) {
+        sIsNetworkMetered = isNetworkMetered;
     }
 
     /**
@@ -1201,7 +1216,7 @@
      * @param guid Id of the download item.
      */
     private void addAutoResumableDownload(String guid) {
-        if (mAutoResumableDownloadIds.isEmpty() && !mIsNetworkChangeNotifierDisabled) {
+        if (mAutoResumableDownloadIds.isEmpty() && !sIsNetworkListenerDisabled) {
             mNetworkChangeNotifier = new NetworkChangeNotifierAutoDetect(this, mContext,
                     new RegistrationPolicyAlwaysRegister());
         }
@@ -1224,13 +1239,13 @@
     public void onConnectionTypeChanged(int connectionType) {
         if (mAutoResumableDownloadIds.isEmpty()) return;
         if (connectionType == ConnectionType.CONNECTION_NONE) return;
-        boolean isMetered = isActiveNetworkMetered();
+        boolean isMetered = isActiveNetworkMetered(mContext);
         Iterator<String> iterator = mAutoResumableDownloadIds.iterator();
         while (iterator.hasNext()) {
             final String id = iterator.next();
             final DownloadProgress progress = mDownloadProgressMap.get(id);
             // Introduce some delay in each resumption so we don't start all of them immediately.
-            if (progress.mCanDownloadWhileMetered || !isMetered) {
+            if (progress != null && (progress.mCanDownloadWhileMetered || !isMetered)) {
                 // Remove the pending resumable item so that the task won't be posted again on the
                 // next connectivity change.
                 iterator.remove();
@@ -1239,8 +1254,7 @@
                 mHandler.postDelayed(new Runnable() {
                     @Override
                     public void run() {
-                        resumeDownload(progress.mDownloadItem.getNotificationId(), id,
-                                progress.mDownloadItem.getDownloadInfo().getFileName(), false);
+                        resumeDownload(progress.mDownloadItem, false);
                     }
                 }, mUpdateDelayInMillis);
             }
@@ -1259,6 +1273,13 @@
         }
     }
 
+    static boolean isActiveNetworkMetered(Context context) {
+        if (sIsNetworkListenerDisabled) return sIsNetworkMetered;
+        ConnectivityManager cm =
+                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        return cm.isActiveNetworkMetered();
+    }
+
     @Override
     public void onMaxBandwidthChanged(double maxBandwidthMbps) {}
 
@@ -1275,8 +1296,8 @@
     public void updateActiveNetworkList(int[] activeNetIds) {}
 
     private native long nativeInit();
-    private native void nativeResumeDownload(long nativeDownloadManagerService, int notificationId,
-            String downloadGuid, String fileName);
+    private native void nativeResumeDownload(
+            long nativeDownloadManagerService, String downloadGuid);
     private native void nativeCancelDownload(
             long nativeDownloadManagerService, String downloadGuid);
     private native void nativePauseDownload(long nativeDownloadManagerService, String downloadGuid);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationService.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationService.java
index c4f78fd..59b9895 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationService.java
@@ -30,6 +30,8 @@
 
 import java.text.NumberFormat;
 import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
@@ -54,6 +56,8 @@
     private static final String NOTIFICATION_NAMESPACE = "DownloadNotificationService";
     private static final String TAG = "DownloadNotification";
     private final IBinder mBinder = new LocalBinder();
+    private final List<DownloadSharedPreferenceEntry> mDownloadSharedPreferenceEntries =
+            new ArrayList<DownloadSharedPreferenceEntry>();
     private NotificationManager mNotificationManager;
     private SharedPreferences mSharedPrefs;
     private Context mContext;
@@ -82,7 +86,7 @@
         mNotificationManager = (NotificationManager) mContext.getSystemService(
                 Context.NOTIFICATION_SERVICE);
         mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
-
+        parseDownloadSharedPrefs();
         // Because this service is a started service and returns START_STICKY in
         // onStartCommand(), it will be restarted as soon as resources are available
         // after it is killed. As a result, onCreate() may be called after Chrome
@@ -121,10 +125,12 @@
      *        the percentage can be determined, or -1 if it is unknown.
      * @param timeRemainingInMillis Remaining download time in milliseconds.
      * @param startTime Time when download started.
-     * @param isResumable whether the download can be resumed.
+     * @param isResumable Whether the download can be resumed.
+     * @param canDownloadWhileMetered Whether the download can happen in metered network.
      */
     public void notifyDownloadProgress(int notificationId, String downloadGuid, String fileName,
-            int percentage, long timeRemainingInMillis, long startTime, boolean isResumable) {
+            int percentage, long timeRemainingInMillis, long startTime, boolean isResumable,
+            boolean canDownloadWhileMetered) {
         boolean indeterminate = percentage == INVALID_DOWNLOAD_PERCENTAGE;
         NotificationCompat.Builder builder = buildNotification(
                 android.R.drawable.stat_sys_download, fileName, null);
@@ -132,8 +138,10 @@
         if (!indeterminate) {
             NumberFormat formatter = NumberFormat.getPercentInstance(Locale.getDefault());
             String percentText = formatter.format(percentage / 100.0);
-            String duration = LocalizationUtils.getDurationString(timeRemainingInMillis);
+            String duration = getDurationString(timeRemainingInMillis);
             builder.setContentText(duration).setContentInfo(percentText);
+            addOrReplaceSharedPreferenceEntry(new DownloadSharedPreferenceEntry(
+                    notificationId, isResumable, canDownloadWhileMetered, downloadGuid, fileName));
         }
         if (startTime > 0) builder.setWhen(startTime);
         builder.addAction(android.R.drawable.ic_menu_close_clear_cancel,
@@ -146,84 +154,90 @@
                             fileName));
         }
         updateNotification(notificationId, builder.build());
-        addEntryToSharedPrefs(new DownloadSharedPreferenceEntry(
-                notificationId, isResumable, true, downloadGuid, fileName));
+    }
+
+    /**
+     * Converts milliseconds to time remaining format.
+     * @param timeRemainingInMillis Remaining download time in milliseconds.
+     * @return formatted remaining time string for display.
+     */
+    @VisibleForTesting
+    String getDurationString(long timeRemainingInMillis) {
+        return LocalizationUtils.getDurationString(timeRemainingInMillis);
     }
 
     /**
      * Cancel a download notification.
      * @param notificationId Notification ID of the download.
+     * @param downloadGuid GUID of the download.
      */
-    public void cancelNotification(int notificationId) {
+    public void cancelNotification(int notificationId, String downloadGuid) {
         mNotificationManager.cancel(NOTIFICATION_NAMESPACE, notificationId);
-        removeEntryFromSharedPrefs(notificationId);
+        removeSharedPreferenceEntry(downloadGuid);
     }
 
     /**
      * Change a download notification to paused state.
-     * @param notificationId Notification ID of the download.
      * @param downloadGuid GUID of the download.
-     * @param fileName File name of the download.
-     * @param isResumable whether download is resumable.
      * @param isAutoResumable whether download is can be resumed automatically.
      */
-    public void notifyDownloadPaused(int notificationId, String downloadGuid, String fileName,
-            boolean isResumable, boolean isAutoResumable) {
+    public void notifyDownloadPaused(String downloadGuid, boolean isAutoResumable) {
+        DownloadSharedPreferenceEntry entry = getDownloadSharedPreferenceEntry(downloadGuid);
+        if (entry == null) return;
         NotificationCompat.Builder builder = buildNotification(
-                android.R.drawable.ic_media_pause,
-                fileName,
+                android.R.drawable.ic_media_pause, entry.fileName,
                 mContext.getResources().getString(R.string.download_notification_paused));
-        PendingIntent cancelIntent =
-                buildPendingIntent(ACTION_DOWNLOAD_CANCEL, notificationId, downloadGuid, fileName);
+        PendingIntent cancelIntent = buildPendingIntent(ACTION_DOWNLOAD_CANCEL,
+                entry.notificationId, entry.downloadGuid, entry.fileName);
         builder.setDeleteIntent(cancelIntent);
         builder.addAction(android.R.drawable.ic_menu_close_clear_cancel,
                 mContext.getResources().getString(R.string.download_notification_cancel_button),
                 cancelIntent);
-        if (isResumable) {
+        if (entry.isResumable) {
             builder.addAction(android.R.drawable.stat_sys_download_done,
-                    mContext.getResources().getString(R.string.download_notification_resume_button),
-                    buildPendingIntent(ACTION_DOWNLOAD_RESUME, notificationId, downloadGuid,
-                            fileName));
+                    mContext.getResources().getString(
+                            R.string.download_notification_resume_button),
+                    buildPendingIntent(ACTION_DOWNLOAD_RESUME, entry.notificationId,
+                            entry.downloadGuid, entry.fileName));
         }
-        updateNotification(notificationId, builder.build());
+        updateNotification(entry.notificationId, builder.build());
         // If download is not auto resumable, there is no need to keep it in SharedPreferences.
-        if (!isResumable || !isAutoResumable) {
-            removeEntryFromSharedPrefs(notificationId);
+        if (!entry.isResumable || !isAutoResumable) {
+            removeSharedPreferenceEntry(downloadGuid);
         }
     }
 
     /**
      * Add a download successful notification.
-     * @param notificationId Notification ID of the download.
-     * @param fileName File name of the download.
+     * @param downloadGuid GUID of the download.
      * @param intent Intent to launch when clicking the notification.
      */
-    public void notifyDownloadSuccessful(int notificationId, String fileName, Intent intent) {
+    public void notifyDownloadSuccessful(String downloadGuid, Intent intent) {
+        DownloadSharedPreferenceEntry entry = getDownloadSharedPreferenceEntry(downloadGuid);
+        if (entry == null) return;
         NotificationCompat.Builder builder = buildNotification(
-                android.R.drawable.stat_sys_download_done,
-                fileName,
+                android.R.drawable.stat_sys_download_done, entry.fileName,
                 mContext.getResources().getString(R.string.download_notification_completed));
         if (intent != null) {
             builder.setContentIntent(PendingIntent.getActivity(
                     mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
         }
-        updateNotification(notificationId, builder.build());
-        removeEntryFromSharedPrefs(notificationId);
+        updateNotification(entry.notificationId, builder.build());
+        removeSharedPreferenceEntry(downloadGuid);
     }
 
     /**
      * Add a download failed notification.
-     * @param notificationId Notification ID of the download.
-     * @param fileName File name of the download.
-     * @param intent Intent to launch when clicking the notification.
+     * @param downloadGuid GUID of the download.
      */
-    public void notifyDownloadFailed(int notificationId, String fileName) {
+    public void notifyDownloadFailed(String downloadGuid) {
+        DownloadSharedPreferenceEntry entry = getDownloadSharedPreferenceEntry(downloadGuid);
+        if (entry == null) return;
         NotificationCompat.Builder builder = buildNotification(
-                android.R.drawable.stat_sys_download_done,
-                fileName,
+                android.R.drawable.stat_sys_download_done, entry.fileName,
                 mContext.getResources().getString(R.string.download_notification_failed));
-        updateNotification(notificationId, builder.build());
-        removeEntryFromSharedPrefs(notificationId);
+        updateNotification(entry.notificationId, builder.build());
+        removeSharedPreferenceEntry(downloadGuid);
     }
 
     /**
@@ -231,13 +245,9 @@
      */
     @VisibleForTesting
     void pauseAllDownloads() {
-        List<DownloadSharedPreferenceEntry> entries = parseDownloadSharedPrefs(mSharedPrefs);
-        for (int i = 0; i < entries.size(); ++i) {
-            DownloadSharedPreferenceEntry entry = entries.get(i);
-            if (entry.notificationId > 0) {
-                notifyDownloadPaused(entry.notificationId, entry.downloadGuid, entry.fileName,
-                        entry.isResumable, true);
-            }
+        for (int i = 0; i < mDownloadSharedPreferenceEntries.size(); ++i) {
+            DownloadSharedPreferenceEntry entry = mDownloadSharedPreferenceEntries.get(i);
+            notifyDownloadPaused(entry.downloadGuid, true);
         }
     }
 
@@ -284,12 +294,29 @@
                 intent, DownloadNotificationService.EXTRA_DOWNLOAD_GUID);
         final String fileName = IntentUtils.safeGetStringExtra(
                 intent, DownloadNotificationService.EXTRA_DOWNLOAD_FILE_NAME);
-        // If browser process already goes away, the download should have already paused. Do nothing
-        // in that case.
-        if (ACTION_DOWNLOAD_PAUSE.equals(intent.getAction())
-                && !DownloadManagerService.hasDownloadManagerService()) {
-            return;
+        DownloadSharedPreferenceEntry entry = null;
+        if (intent.getAction() == ACTION_DOWNLOAD_PAUSE) {
+            removeSharedPreferenceEntry(guid);
+            // If browser process already goes away, the download should have already paused. Do
+            // nothing in that case.
+            if (!DownloadManagerService.hasDownloadManagerService()) return;
+        } else if (intent.getAction() == ACTION_DOWNLOAD_RESUME) {
+            entry = getDownloadSharedPreferenceEntry(guid);
+            boolean metered = DownloadManagerService.isActiveNetworkMetered(mContext);
+            if (entry == null) {
+                entry = new DownloadSharedPreferenceEntry(
+                        notificationId, true, metered, guid, fileName);
+            } else if (!entry.canDownloadWhileMetered) {
+                // If user manually resumes a download, update the network type if it
+                // is not metered previously.
+                entry.canDownloadWhileMetered = metered;
+            }
+            // Update the SharedPreference entry.
+            addOrReplaceSharedPreferenceEntry(entry);
         }
+        final DownloadItem item = entry == null ? null : entry.buildDownloadItem();
+        final boolean canDownloadWhileMetered =
+                entry == null ? false : entry.canDownloadWhileMetered;
         BrowserParts parts = new EmptyBrowserParts() {
             @Override
             public void finishNativeInitialization() {
@@ -300,16 +327,18 @@
                         // TODO(qinmin): Alternatively, we can delete the downloaded content on
                         // SD card, and remove the download ID from the SharedPreferences so we
                         // don't need to restart the browser process. http://crbug.com/579643.
+                        cancelNotification(notificationId, guid);
                         service.cancelDownload(guid);
-                        cancelNotification(notificationId);
                         break;
                     case ACTION_DOWNLOAD_PAUSE:
                         service.pauseDownload(guid);
                         break;
                     case ACTION_DOWNLOAD_RESUME:
-                        service.resumeDownload(notificationId, guid, fileName, true);
+                        assert item != null;
                         notifyDownloadProgress(notificationId, guid, fileName,
-                                INVALID_DOWNLOAD_PERCENTAGE, 0, 0, true);
+                                INVALID_DOWNLOAD_PERCENTAGE, 0, 0, true,
+                                canDownloadWhileMetered);
+                        service.resumeDownload(item, true);
                         break;
                     default:
                         Log.e(TAG, "Unrecognized intent action.", intent);
@@ -364,67 +393,104 @@
     }
 
     /**
-     * Add a DownloadSharedPreferenceEntry to SharedPrefs. If the notification ID already exists
-     * in SharedPrefs, do nothing.
+     * Adds a DownloadSharedPreferenceEntry to SharedPrefs. If an entry with the GUID already exists
+     * in SharedPrefs, update it if it has changed.
      * @param DownloadSharedPreferenceEntry A DownloadSharedPreferenceEntry to be added.
      */
-    private void addEntryToSharedPrefs(DownloadSharedPreferenceEntry pendingEntry) {
-        Set<String> entries = DownloadManagerService.getStoredDownloadInfo(
-                mSharedPrefs, PENDING_DOWNLOAD_NOTIFICATIONS);
-        for (String entryString : entries) {
-            DownloadSharedPreferenceEntry entry =
-                    DownloadSharedPreferenceEntry.parseFromString(entryString);
-            if (entry.notificationId == pendingEntry.notificationId) return;
-        }
-        entries.add(pendingEntry.getSharedPreferenceString());
-        DownloadManagerService.storeDownloadInfo(
-                mSharedPrefs, PENDING_DOWNLOAD_NOTIFICATIONS, entries);
-    }
-
-    /**
-     * Removes a DownloadSharedPreferenceEntry from SharedPrefs.
-     * @param notificationId Notification ID to be removed.
-     */
-    private void removeEntryFromSharedPrefs(int notificationId) {
-        Set<String> entries = DownloadManagerService.getStoredDownloadInfo(
-                mSharedPrefs, PENDING_DOWNLOAD_NOTIFICATIONS);
-        for (String entryString : entries) {
-            DownloadSharedPreferenceEntry entry =
-                    DownloadSharedPreferenceEntry.parseFromString(entryString);
-            if (entry.notificationId == notificationId) {
-                entries.remove(entryString);
-                if (entries.isEmpty()) {
-                    mSharedPrefs.edit().remove(PENDING_DOWNLOAD_NOTIFICATIONS).apply();
-                } else {
-                    DownloadManagerService.storeDownloadInfo(
-                            mSharedPrefs, PENDING_DOWNLOAD_NOTIFICATIONS, entries);
-                }
+    private void addOrReplaceSharedPreferenceEntry(DownloadSharedPreferenceEntry pendingEntry) {
+        Iterator<DownloadSharedPreferenceEntry> iterator =
+                mDownloadSharedPreferenceEntries.iterator();
+        while (iterator.hasNext()) {
+            DownloadSharedPreferenceEntry entry = iterator.next();
+            if (entry.downloadGuid.equals(pendingEntry.downloadGuid)) {
+                if (entry.equals(pendingEntry)) return;
+                iterator.remove();
                 break;
             }
         }
+        mDownloadSharedPreferenceEntries.add(pendingEntry);
+        storeDownloadSharedPreferenceEntries();
     }
 
     /**
-     * Clears all pending downloads from SharedPrefs.
+     * Removes a DownloadSharedPreferenceEntry from SharedPrefs given by the GUID.
+     * @param guid Download GUID to be removed.
      */
-    public void clearPendingDownloads() {
-        mSharedPrefs.edit().remove(PENDING_DOWNLOAD_NOTIFICATIONS).apply();
+    private void removeSharedPreferenceEntry(String guid) {
+        Iterator<DownloadSharedPreferenceEntry> iterator =
+                mDownloadSharedPreferenceEntries.iterator();
+        boolean found = false;
+        while (iterator.hasNext()) {
+            DownloadSharedPreferenceEntry entry = iterator.next();
+            if (entry.downloadGuid.equals(guid)) {
+                iterator.remove();
+                found = true;
+                break;
+            }
+        }
+        if (found) {
+            storeDownloadSharedPreferenceEntries();
+        }
+    }
+
+    /**
+     * Resumes all pending downloads from |mDownloadSharedPreferenceEntries|.
+     */
+    public void resumeAllPendingDownloads() {
+        boolean isNetworkMetered = DownloadManagerService.isActiveNetworkMetered(mContext);
+        if (!DownloadManagerService.hasDownloadManagerService()) return;
+        DownloadManagerService service =
+                DownloadManagerService.getDownloadManagerService(getApplicationContext());
+        for (int i = 0; i < mDownloadSharedPreferenceEntries.size(); ++i) {
+            DownloadSharedPreferenceEntry entry = mDownloadSharedPreferenceEntries.get(i);
+            if (!entry.canDownloadWhileMetered && isNetworkMetered) continue;
+            notifyDownloadProgress(entry.notificationId, entry.downloadGuid, entry.fileName,
+                    INVALID_DOWNLOAD_PERCENTAGE, 0, 0, true, entry.canDownloadWhileMetered);
+            service.resumeDownload(entry.buildDownloadItem(), false);
+        }
     }
 
     /**
      * Parse the DownloadSharedPreferenceEntry from the shared preference and return a list of them.
      * @return a list of parsed DownloadSharedPreferenceEntry.
      */
-    static List<DownloadSharedPreferenceEntry> parseDownloadSharedPrefs(
-            SharedPreferences prefs) {
-        List<DownloadSharedPreferenceEntry> result = new ArrayList<DownloadSharedPreferenceEntry>();
-        if (prefs.contains(PENDING_DOWNLOAD_NOTIFICATIONS)) {
-            Set<String> entries = DownloadManagerService.getStoredDownloadInfo(
-                    prefs, PENDING_DOWNLOAD_NOTIFICATIONS);
-            for (String entryString : entries) {
-                result.add(DownloadSharedPreferenceEntry.parseFromString(entryString));
+    void parseDownloadSharedPrefs() {
+        if (!mSharedPrefs.contains(PENDING_DOWNLOAD_NOTIFICATIONS)) return;
+        Set<String> entries = DownloadManagerService.getStoredDownloadInfo(
+                mSharedPrefs, PENDING_DOWNLOAD_NOTIFICATIONS);
+        for (String entryString : entries) {
+            DownloadSharedPreferenceEntry entry =
+                    DownloadSharedPreferenceEntry.parseFromString(entryString);
+            if (entry.notificationId > 0) {
+                mDownloadSharedPreferenceEntries.add(
+                        DownloadSharedPreferenceEntry.parseFromString(entryString));
             }
         }
-        return result;
+    }
+
+    /**
+     * Gets a DownloadSharedPreferenceEntry that has the given GUID.
+     * @param guid GUID to query.
+     * @return a DownloadSharedPreferenceEntry that has the specified GUID.
+     */
+    private DownloadSharedPreferenceEntry getDownloadSharedPreferenceEntry(String guid) {
+        for (int i = 0; i < mDownloadSharedPreferenceEntries.size(); ++i) {
+            if (mDownloadSharedPreferenceEntries.get(i).downloadGuid.equals(guid)) {
+                return mDownloadSharedPreferenceEntries.get(i);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Helper method to store all the SharedPreferences entries.
+     */
+    private void storeDownloadSharedPreferenceEntries() {
+        Set<String> entries = new HashSet<String>();
+        for (int i = 0; i < mDownloadSharedPreferenceEntries.size(); ++i) {
+            entries.add(mDownloadSharedPreferenceEntries.get(i).getSharedPreferenceString());
+        }
+        DownloadManagerService.storeDownloadInfo(
+                mSharedPrefs, PENDING_DOWNLOAD_NOTIFICATIONS, entries);
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotifier.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotifier.java
index 4c16ae4..939a139 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotifier.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotifier.java
@@ -31,8 +31,10 @@
      * @param startTimeInMillis the startTime of the download, measured in milliseconds, between the
      *        current time and midnight, January 1, 1970 UTC. Useful to keep progress notifications
      *        sorted by time.
+     * @param canDownloadWhileMetered Wheter the download can take place on metered network.
      */
-    void notifyDownloadProgress(DownloadInfo downloadInfo, long startTimeInMillis);
+    void notifyDownloadProgress(
+            DownloadInfo downloadInfo, long startTimeInMillis, boolean mCanDownloadWhileMetered);
 
     /**
      * Update the download notification to paused.
@@ -44,11 +46,12 @@
     /**
      * Cancel the notification for a download.
      * @param notificationId The notification ID of the cancelled download.
+     * @param downloadGuid The GUID of the cancelled download.
      */
-    void cancelNotification(int notificationId);
+    void cancelNotification(int notificationId, String downloadGuid);
 
     /**
-     * Called to clear all the pending download entries in SharedPreferences.
+     * Called to resume all the pending download entries in SharedPreferences.
      */
-    void clearPendingDownloads();
+    void resumePendingDownloads();
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadSharedPreferenceEntry.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadSharedPreferenceEntry.java
index a231496..f02d7bc 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadSharedPreferenceEntry.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadSharedPreferenceEntry.java
@@ -4,8 +4,11 @@
 
 package org.chromium.chrome.browser.download;
 
+import android.text.TextUtils;
+
 import org.chromium.base.Log;
 import org.chromium.base.VisibleForTesting;
+import org.chromium.content.browser.DownloadInfo;
 
 import java.util.UUID;
 
@@ -20,17 +23,15 @@
     @VisibleForTesting static final int VERSION = 1;
     public final int notificationId;
     public final boolean isResumable;
-    // This field is not yet used, but will soon be used. We add it here to avoid changing the
-    // format of the SharedPreference string again.
-    public final boolean isStartedOnMeteredNetwork;
+    public boolean canDownloadWhileMetered;
     public final String fileName;
     public final String downloadGuid;
 
     DownloadSharedPreferenceEntry(int notificationId, boolean isResumable,
-            boolean isStartedOnMeteredNetwork, String guid, String fileName) {
+            boolean canDownloadWhileMetered, String guid, String fileName) {
         this.notificationId = notificationId;
         this.isResumable = isResumable;
-        this.isStartedOnMeteredNetwork = isStartedOnMeteredNetwork;
+        this.canDownloadWhileMetered = canDownloadWhileMetered;
         this.downloadGuid = guid;
         this.fileName = fileName;
     }
@@ -53,12 +54,12 @@
                 }
                 int id = Integer.parseInt(values[1]);
                 boolean isResumable = "1".equals(values[2]);
-                boolean isStartedOnMeteredNetwork = "1".equals(values[3]);
+                boolean canDownloadWhileMetered = "1".equals(values[3]);
                 if (!isValidGUID(values[4])) {
                     return new DownloadSharedPreferenceEntry(-1, false, false, null, "");
                 }
                 return new DownloadSharedPreferenceEntry(
-                        id, isResumable, isStartedOnMeteredNetwork, values[4], values[5]);
+                        id, isResumable, canDownloadWhileMetered, values[4], values[5]);
             } catch (NumberFormatException nfe) {
                 Log.w(TAG, "Exception while parsing pending download:" + sharedPrefString);
             }
@@ -72,7 +73,7 @@
      */
     String getSharedPreferenceString() {
         return VERSION + "," + notificationId + "," + (isResumable ? "1" : "0") + ","
-                + (isStartedOnMeteredNetwork ? "1" : "0") + "," + downloadGuid + "," + fileName;
+                + (canDownloadWhileMetered ? "1" : "0") + "," + downloadGuid + "," + fileName;
     }
 
     /**
@@ -93,4 +94,41 @@
             return false;
         }
     }
+
+    /**
+     * Build a download item from this object.
+     */
+    DownloadItem buildDownloadItem() {
+        DownloadInfo info = new DownloadInfo.Builder()
+                .setDownloadGuid(downloadGuid)
+                .setFileName(fileName)
+                .setNotificationId(notificationId)
+                .setIsResumable(isResumable)
+                .build();
+        return new DownloadItem(false, info);
+    }
+
+    @Override
+    public boolean equals(Object object) {
+        if (!(object instanceof DownloadSharedPreferenceEntry)) {
+            return false;
+        }
+        final DownloadSharedPreferenceEntry other = (DownloadSharedPreferenceEntry) object;
+        return TextUtils.equals(downloadGuid, other.downloadGuid)
+                && TextUtils.equals(fileName, other.fileName)
+                && notificationId == other.notificationId
+                && isResumable == other.isResumable
+                && canDownloadWhileMetered == other.canDownloadWhileMetered;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 31;
+        hash = 37 * hash + (isResumable ? 1 : 0);
+        hash = 37 * hash + (canDownloadWhileMetered ? 1 : 0);
+        hash = 37 * hash + notificationId;
+        hash = 37 * hash + downloadGuid.hashCode();
+        hash = 37 * hash + fileName.hashCode();
+        return hash;
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadSnackbarController.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadSnackbarController.java
index d918315..e676700 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadSnackbarController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadSnackbarController.java
@@ -35,7 +35,8 @@
         Pair<DownloadInfo, Long> download = (Pair<DownloadInfo, Long>) actionData;
         DownloadManagerService manager = DownloadManagerService.getDownloadManagerService(mContext);
         manager.openDownloadedContent(download.second);
-        manager.cancelNotification(download.first.getNotificationId());
+        manager.cancelNotification(
+                download.first.getNotificationId(), download.first.getDownloadGuid());
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/SystemDownloadNotifier.java b/chrome/android/java/src/org/chromium/chrome/browser/download/SystemDownloadNotifier.java
index a744a76..fb5dffb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/SystemDownloadNotifier.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/SystemDownloadNotifier.java
@@ -30,7 +30,7 @@
     private static final int DOWNLOAD_NOTIFICATION_TYPE_SUCCESS = 1;
     private static final int DOWNLOAD_NOTIFICATION_TYPE_FAILURE = 2;
     private static final int DOWNLOAD_NOTIFICATION_TYPE_CANCEL = 3;
-    private static final int DOWNLOAD_NOTIFICATION_TYPE_CLEAR = 4;
+    private static final int DOWNLOAD_NOTIFICATION_TYPE_RESUME_ALL = 4;
     private static final int DOWNLOAD_NOTIFICATION_TYPE_PAUSE = 5;
     private final Context mApplicationContext;
     private final Object mLock = new Object();
@@ -47,17 +47,14 @@
         // Pending download notifications to be posted.
         public final int type;
         public final DownloadInfo downloadInfo;
-        public final Intent intent;
-        public final long startTime;
-        public final boolean isAutoResumable;
+        public Intent intent;
+        public long startTime;
+        public boolean isAutoResumable;
+        public boolean canDownloadWhileMetered;
 
-        public PendingNotificationInfo(int type, DownloadInfo downloadInfo, Intent intent,
-                long startTime, boolean isAutoResumable) {
+        public PendingNotificationInfo(int type, DownloadInfo downloadInfo) {
             this.type = type;
             this.downloadInfo = downloadInfo;
-            this.intent = intent;
-            this.startTime = startTime;
-            this.isAutoResumable = isAutoResumable;
         }
     }
 
@@ -111,25 +108,7 @@
         synchronized (mLock) {
             if (mPendingNotifications.isEmpty()) return;
             for (PendingNotificationInfo info : mPendingNotifications) {
-                switch (info.type) {
-                    case DOWNLOAD_NOTIFICATION_TYPE_PROGRESS:
-                        notifyDownloadProgress(info.downloadInfo, info.startTime);
-                        break;
-                    case DOWNLOAD_NOTIFICATION_TYPE_SUCCESS:
-                        notifyDownloadSuccessful(info.downloadInfo, info.intent);
-                        break;
-                    case DOWNLOAD_NOTIFICATION_TYPE_FAILURE:
-                        notifyDownloadFailed(info.downloadInfo);
-                        break;
-                    case DOWNLOAD_NOTIFICATION_TYPE_CANCEL:
-                        cancelNotification(info.downloadInfo.getNotificationId());
-                        break;
-                    case DOWNLOAD_NOTIFICATION_TYPE_CLEAR:
-                        clearPendingDownloads();
-                        break;
-                    default:
-                        assert false;
-                }
+                updateDownloadNotification(info);
             }
             mPendingNotifications.clear();
         }
@@ -179,95 +158,102 @@
     }
 
     @Override
-    public void cancelNotification(int notificationId) {
-        DownloadInfo info = new DownloadInfo.Builder().setNotificationId(notificationId).build();
-        updateDownloadNotification(DOWNLOAD_NOTIFICATION_TYPE_CANCEL, info, null, -1, false);
+    public void cancelNotification(int notificationId, String downloadGuid) {
+        DownloadInfo info = new DownloadInfo.Builder()
+                .setNotificationId(notificationId)
+                .setDownloadGuid(downloadGuid)
+                .build();
+        updateDownloadNotification(
+                new PendingNotificationInfo(DOWNLOAD_NOTIFICATION_TYPE_CANCEL, info));
     }
 
     @Override
     public void notifyDownloadSuccessful(DownloadInfo downloadInfo, Intent intent) {
-        updateDownloadNotification(
-                DOWNLOAD_NOTIFICATION_TYPE_SUCCESS, downloadInfo, intent, -1, false);
+        PendingNotificationInfo info =
+                new PendingNotificationInfo(DOWNLOAD_NOTIFICATION_TYPE_SUCCESS, downloadInfo);
+        info.intent = intent;
+        updateDownloadNotification(info);
     }
 
     @Override
     public void notifyDownloadFailed(DownloadInfo downloadInfo) {
         updateDownloadNotification(
-                DOWNLOAD_NOTIFICATION_TYPE_FAILURE, downloadInfo, null, -1, false);
+                new PendingNotificationInfo(DOWNLOAD_NOTIFICATION_TYPE_FAILURE, downloadInfo));
     }
 
     @Override
-    public void notifyDownloadProgress(DownloadInfo downloadInfo, long startTime) {
-        updateDownloadNotification(
-                DOWNLOAD_NOTIFICATION_TYPE_PROGRESS, downloadInfo, null, startTime, false);
+    public void notifyDownloadProgress(
+            DownloadInfo downloadInfo, long startTime, boolean canDownloadWhileMetered) {
+        PendingNotificationInfo info =
+                new PendingNotificationInfo(DOWNLOAD_NOTIFICATION_TYPE_PROGRESS, downloadInfo);
+        info.startTime = startTime;
+        info.canDownloadWhileMetered = canDownloadWhileMetered;
+        updateDownloadNotification(info);
     }
 
     @Override
     public void notifyDownloadPaused(DownloadInfo downloadInfo, boolean isAutoResumable) {
-        updateDownloadNotification(
-                DOWNLOAD_NOTIFICATION_TYPE_PAUSE, downloadInfo, null, -1, isAutoResumable);
+        PendingNotificationInfo info =
+                new PendingNotificationInfo(DOWNLOAD_NOTIFICATION_TYPE_PAUSE, downloadInfo);
+        info.isAutoResumable = isAutoResumable;
+        updateDownloadNotification(info);
     }
 
     @Override
-    public void clearPendingDownloads() {
-        updateDownloadNotification(DOWNLOAD_NOTIFICATION_TYPE_CLEAR, null, null, -1, false);
+    public void resumePendingDownloads() {
+        updateDownloadNotification(
+                new PendingNotificationInfo(DOWNLOAD_NOTIFICATION_TYPE_RESUME_ALL, null));
     }
 
     /**
      * Updates the download notification if the notification service is started. Otherwise,
      * wait for the notification service to become ready.
-     * @param type Type of the notification.
-     * @param info Download information.
-     * @param intent Action to perform when clicking on the notification.
-     * @param startTime Download start time.
-     * @param isAutoResumable Whether download can be auto resumed when network becomes available.
+     * @param info Pending notification information to be handled.
      */
-    private void updateDownloadNotification(
-            int type, DownloadInfo info, Intent intent, long startTime, boolean isAutoResumable) {
+    private void updateDownloadNotification(PendingNotificationInfo notificationInfo) {
         synchronized (mLock) {
             startAndBindToServiceIfNeeded();
-            if (type == DOWNLOAD_NOTIFICATION_TYPE_PROGRESS) {
+            DownloadInfo info = notificationInfo.downloadInfo;
+            if (notificationInfo.type == DOWNLOAD_NOTIFICATION_TYPE_PROGRESS) {
                 mActiveNotificationIds.add(info.getNotificationId());
-            } else if (type != DOWNLOAD_NOTIFICATION_TYPE_CLEAR) {
+            } else if (notificationInfo.type != DOWNLOAD_NOTIFICATION_TYPE_RESUME_ALL) {
                 mActiveNotificationIds.remove(info.getNotificationId());
             }
             if (mBoundService == null) {
                 // We need to wait for the service to connect before we can handle
                 // the notification. Put the notification in the pending notifications
                 // list.
-                mPendingNotifications.add(new PendingNotificationInfo(
-                        type, info, intent, startTime, isAutoResumable));
+                mPendingNotifications.add(notificationInfo);
             } else {
-                switch (type) {
+                switch (notificationInfo.type) {
                     case DOWNLOAD_NOTIFICATION_TYPE_PROGRESS:
-
                         mBoundService.notifyDownloadProgress(info.getNotificationId(),
                                 info.getDownloadGuid(), info.getFileName(),
                                 info.getPercentCompleted(), info.getTimeRemainingInMillis(),
-                                startTime, info.isResumable());
+                                notificationInfo.startTime, info.isResumable(),
+                                notificationInfo.canDownloadWhileMetered);
                         break;
                     case DOWNLOAD_NOTIFICATION_TYPE_PAUSE:
                         assert info.isResumable();
-                        mBoundService.notifyDownloadPaused(info.getNotificationId(),
-                                info.getDownloadGuid(), info.getFileName(),
-                                info.isResumable(), isAutoResumable);
+                        mBoundService.notifyDownloadPaused(
+                                info.getDownloadGuid(), notificationInfo.isAutoResumable);
                         break;
                     case DOWNLOAD_NOTIFICATION_TYPE_SUCCESS:
                         mBoundService.notifyDownloadSuccessful(
-                                info.getNotificationId(), info.getFileName(), intent);
+                                info.getDownloadGuid(), notificationInfo.intent);
                         stopServiceIfNeeded();
                         break;
                     case DOWNLOAD_NOTIFICATION_TYPE_FAILURE:
-                        mBoundService.notifyDownloadFailed(
-                                info.getNotificationId(), info.getFileName());
+                        mBoundService.notifyDownloadFailed(info.getDownloadGuid());
                         stopServiceIfNeeded();
                         break;
                     case DOWNLOAD_NOTIFICATION_TYPE_CANCEL:
-                        mBoundService.cancelNotification(info.getNotificationId());
+                        mBoundService.cancelNotification(
+                                info.getNotificationId(), info.getDownloadGuid());
                         stopServiceIfNeeded();
                         break;
-                    case DOWNLOAD_NOTIFICATION_TYPE_CLEAR:
-                        mBoundService.clearPendingDownloads();
+                    case DOWNLOAD_NOTIFICATION_TYPE_RESUME_ALL:
+                        mBoundService.resumeAllPendingDownloads();
                         stopServiceIfNeeded();
                         break;
                     default:
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadManagerServiceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadManagerServiceTest.java
index 4c3927b..b10346c8 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadManagerServiceTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadManagerServiceTest.java
@@ -122,7 +122,8 @@
         }
 
         @Override
-        public void notifyDownloadProgress(DownloadInfo downloadInfo, long startTime) {
+        public void notifyDownloadProgress(
+                DownloadInfo downloadInfo, long startTime, boolean canDownloadWhileMetered) {
             assertCorrectExpectedCall(MethodID.DOWNLOAD_PROGRESS, downloadInfo);
         }
 
@@ -132,14 +133,12 @@
         }
 
         @Override
-        public void cancelNotification(int notificationId) {
+        public void cancelNotification(int notificationId, String downloadGuid) {
             assertCorrectExpectedCall(MethodID.CANCEL_DOWNLOAD_ID, notificationId);
         }
 
         @Override
-        public void clearPendingDownloads() {
-            assertCorrectExpectedCall(MethodID.CLEAR_PENDING_DOWNLOADS, null);
-        }
+        public void resumePendingDownloads() {}
     }
 
     /**
@@ -261,7 +260,6 @@
 
     private static class DownloadManagerServiceForTest extends DownloadManagerService {
         boolean mResumed;
-        boolean mIsActiveNetworkMetered;
 
         public DownloadManagerServiceForTest(Context context, MockDownloadNotifier mockNotifier,
                 long updateDelayInMillis) {
@@ -275,16 +273,10 @@
         }
 
         @Override
-        protected boolean isActiveNetworkMetered() {
-            return mIsActiveNetworkMetered;
-        }
-
-        @Override
         protected void init() {}
 
         @Override
-        protected void resumeDownload(int notificationId, String downloadGuid, String fileName,
-                boolean hasUserGesture) {
+        protected void resumeDownload(DownloadItem item, boolean hasUserGesture) {
             mResumed = true;
         }
     }
@@ -411,7 +403,7 @@
         MockDownloadNotifier notifier = new MockDownloadNotifier();
         DownloadManagerServiceForTest dService = new DownloadManagerServiceForTest(
                 getTestContext(), notifier, UPDATE_DELAY_FOR_TEST);
-        dService.disableNetworkChangeNotifierForTest();
+        DownloadManagerService.disableNetworkListenerForTest();
         DownloadInfo paused =
                 Builder.fromDownloadInfo(getDownloadInfo()).setIsResumable(true).build();
         notifier.expect(MethodID.DOWNLOAD_PAUSED, paused);
@@ -447,7 +439,7 @@
         MockDownloadNotifier notifier = new MockDownloadNotifier();
         final DownloadManagerServiceForTest dService = new DownloadManagerServiceForTest(
                 getTestContext(), notifier, UPDATE_DELAY_FOR_TEST);
-        dService.disableNetworkChangeNotifierForTest();
+        DownloadManagerService.disableNetworkListenerForTest();
         DownloadInfo paused =
                 Builder.fromDownloadInfo(getDownloadInfo()).setIsResumable(true).build();
         notifier.expect(MethodID.DOWNLOAD_PROGRESS, paused)
@@ -474,7 +466,7 @@
         MockDownloadNotifier notifier = new MockDownloadNotifier();
         final DownloadManagerServiceForTest dService = new DownloadManagerServiceForTest(
                 getTestContext(), notifier, UPDATE_DELAY_FOR_TEST);
-        dService.disableNetworkChangeNotifierForTest();
+        DownloadManagerService.disableNetworkListenerForTest();
         DownloadInfo paused =
                 Builder.fromDownloadInfo(getDownloadInfo()).setIsResumable(true).build();
         notifier.expect(MethodID.DOWNLOAD_PROGRESS, paused)
@@ -483,7 +475,7 @@
         Thread.sleep(DELAY_BETWEEN_CALLS);
         dService.onDownloadInterrupted(paused, true);
         notifier.waitTillExpectedCallsComplete();
-        dService.mIsActiveNetworkMetered = true;
+        DownloadManagerService.setIsNetworkMeteredForTest(true);
         int resumableIdCount = dService.mAutoResumableDownloadIds.size();
         dService.onConnectionTypeChanged(ConnectionType.CONNECTION_2G);
         assertEquals(resumableIdCount, dService.mAutoResumableDownloadIds.size());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadNotificationServiceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadNotificationServiceTest.java
index d0b47c4..9a81275e 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadNotificationServiceTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadNotificationServiceTest.java
@@ -7,6 +7,8 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.os.Handler;
+import android.os.HandlerThread;
 import android.os.IBinder;
 import android.preference.PreferenceManager;
 import android.test.ServiceTestCase;
@@ -16,7 +18,9 @@
 import org.chromium.base.test.util.AdvancedMockContext;
 import org.chromium.base.test.util.Feature;
 
+import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
@@ -25,6 +29,21 @@
  */
 public class DownloadNotificationServiceTest extends
         ServiceTestCase<MockDownloadNotificationService> {
+    private static class MockDownloadManagerService extends DownloadManagerService {
+        final List<DownloadItem> mDownloads = new ArrayList<DownloadItem>();
+
+        public MockDownloadManagerService(Context context) {
+            super(context, null, getTestHandler(), 1000);
+        }
+
+        @Override
+        protected void init() {}
+
+        @Override
+        protected void resumeDownload(DownloadItem item, boolean hasUserGesture) {
+            mDownloads.add(item);
+        }
+    }
 
     public DownloadNotificationServiceTest() {
         super(MockDownloadNotificationService.class);
@@ -51,6 +70,21 @@
         return ((DownloadNotificationService.LocalBinder) service).getService();
     }
 
+    private static Handler getTestHandler() {
+        HandlerThread handlerThread = new HandlerThread("handlerThread");
+        handlerThread.start();
+        return new Handler(handlerThread.getLooper());
+    }
+
+    private void resumeAllDownloads(final DownloadNotificationService service) throws Exception {
+        ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+            @Override
+            public void run() {
+                service.resumeAllPendingDownloads();
+            }
+        });
+    }
+
     /**
      * Tests that creating the service without launching chrome will do nothing if there is no
      * ongoing download.
@@ -102,25 +136,91 @@
         setupService();
         Context mockContext = new AdvancedMockContext(getSystemContext());
         getService().setContext(mockContext);
+        Set<String> notifications = new HashSet<String>();
+        String guid1 = UUID.randomUUID().toString();
+        notifications.add(new DownloadSharedPreferenceEntry(3, true, true, guid1, "success")
+                .getSharedPreferenceString());
+        String guid2 = UUID.randomUUID().toString();
+        notifications.add(new DownloadSharedPreferenceEntry(4, true, true, guid2, "failed")
+                .getSharedPreferenceString());
+        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mockContext);
+        SharedPreferences.Editor editor = sharedPrefs.edit();
+        editor.putStringSet(
+                DownloadNotificationService.PENDING_DOWNLOAD_NOTIFICATIONS, notifications);
+        editor.apply();
         startNotificationService();
-        DownloadNotificationService service = bindNotificationService();
-        service.notifyDownloadProgress(1, UUID.randomUUID().toString(), "test", -1, 1L, 1L, true);
-        assertEquals(1, getService().getNotificationIds().size());
-        assertTrue(getService().getNotificationIds().contains(1));
-
-        service.notifyDownloadSuccessful(2, "test2", null);
         assertEquals(2, getService().getNotificationIds().size());
-        assertTrue(getService().getNotificationIds().contains(2));
-
-        service.notifyDownloadFailed(3, "test3");
-        assertEquals(3, getService().getNotificationIds().size());
         assertTrue(getService().getNotificationIds().contains(3));
+        assertTrue(getService().getNotificationIds().contains(4));
 
-        service.cancelNotification(1);
+        DownloadNotificationService service = bindNotificationService();
+        String guid3 = UUID.randomUUID().toString();
+        service.notifyDownloadProgress(1, guid3, "test", 1, 1L, 1L, true, true);
+        assertEquals(3, getService().getNotificationIds().size());
+        assertTrue(getService().getNotificationIds().contains(1));
+        Set<String> entries = DownloadManagerService.getStoredDownloadInfo(
+                sharedPrefs, DownloadNotificationService.PENDING_DOWNLOAD_NOTIFICATIONS);
+        assertEquals(3, entries.size());
+
+        service.notifyDownloadSuccessful(guid1, null);
+        entries = DownloadManagerService.getStoredDownloadInfo(
+                sharedPrefs, DownloadNotificationService.PENDING_DOWNLOAD_NOTIFICATIONS);
+        assertEquals(2, entries.size());
+
+        service.notifyDownloadFailed(guid2);
+        entries = DownloadManagerService.getStoredDownloadInfo(
+                sharedPrefs, DownloadNotificationService.PENDING_DOWNLOAD_NOTIFICATIONS);
+        assertEquals(1, entries.size());
+
+        service.cancelNotification(1, guid3);
         assertEquals(2, getService().getNotificationIds().size());
         assertFalse(getService().getNotificationIds().contains(1));
     }
 
+    /**
+     * Tests resume all pending downloads.
+     */
+    @SmallTest
+    @Feature({"Download"})
+    public void testResumeAllPendingDownloads() throws Exception {
+        setupService();
+        Context mockContext = new AdvancedMockContext(getSystemContext());
+        getService().setContext(mockContext);
+        Set<String> notifications = new HashSet<String>();
+        String guid1 = UUID.randomUUID().toString();
+        notifications.add(new DownloadSharedPreferenceEntry(3, true, false, guid1, "success")
+                .getSharedPreferenceString());
+        String guid2 = UUID.randomUUID().toString();
+        notifications.add(new DownloadSharedPreferenceEntry(4, true, true, guid2, "failed")
+                .getSharedPreferenceString());
+        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mockContext);
+        SharedPreferences.Editor editor = sharedPrefs.edit();
+        editor.putStringSet(
+                DownloadNotificationService.PENDING_DOWNLOAD_NOTIFICATIONS, notifications);
+        editor.apply();
+        startNotificationService();
+        DownloadNotificationService service = bindNotificationService();
+        DownloadManagerService.disableNetworkListenerForTest();
+
+        final MockDownloadManagerService manager =
+                new MockDownloadManagerService(getSystemContext().getApplicationContext());
+        ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+            @Override
+            public void run() {
+                DownloadManagerService.setDownloadManagerService(manager);
+            }
+        });
+        DownloadManagerService.setIsNetworkMeteredForTest(true);
+        resumeAllDownloads(service);
+        assertEquals(1, manager.mDownloads.size());
+        assertEquals(manager.mDownloads.get(0).getDownloadInfo().getDownloadGuid(), guid2);
+
+        manager.mDownloads.clear();
+        DownloadManagerService.setIsNetworkMeteredForTest(false);
+        resumeAllDownloads(service);
+        assertEquals(2, manager.mDownloads.size());
+    }
+
     @SmallTest
     @Feature({"Download"})
     public void testParseDownloadNotifications() {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/MockDownloadNotificationService.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/MockDownloadNotificationService.java
index af5f904..91a865d 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/MockDownloadNotificationService.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/MockDownloadNotificationService.java
@@ -30,7 +30,9 @@
 
     @Override
     void updateNotification(int id, Notification notification) {
-        mNotificationIds.add(id);
+        if (!mNotificationIds.contains(id)) {
+            mNotificationIds.add(id);
+        }
     }
 
     public boolean isPaused() {
@@ -42,7 +44,7 @@
     }
 
     @Override
-    public void cancelNotification(int notificationId) {
+    public void cancelNotification(int notificationId, String downloadGuid) {
         mNotificationIds.remove(Integer.valueOf(notificationId));
     }
 
@@ -51,5 +53,9 @@
         return mContext == null ? super.getApplicationContext() : mContext;
     }
 
+    @Override
+    String getDurationString(long timeRemainingInMillis) {
+        return "";
+    }
 }
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/SystemDownloadNotifierTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/SystemDownloadNotifierTest.java
index c441ca7..3b13768 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/SystemDownloadNotifierTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/SystemDownloadNotifierTest.java
@@ -71,7 +71,7 @@
     public void testNotificationNotHandledUntilServiceConnection() {
         DownloadInfo info = new DownloadInfo.Builder()
                 .setDownloadGuid(UUID.randomUUID().toString()).setNotificationId(1).build();
-        mDownloadNotifier.notifyDownloadProgress(info, 1L);
+        mDownloadNotifier.notifyDownloadProgress(info, 1L, true);
         assertTrue(mDownloadNotifier.mStarted);
 
         onServiceConnected();
@@ -88,11 +88,11 @@
         onServiceConnected();
         DownloadInfo info = new DownloadInfo.Builder()
                 .setDownloadGuid(UUID.randomUUID().toString()).setNotificationId(1).build();
-        mDownloadNotifier.notifyDownloadProgress(info, 1L);
+        mDownloadNotifier.notifyDownloadProgress(info, 1L, true);
         assertTrue(mDownloadNotifier.mStarted);
         DownloadInfo info2 = new DownloadInfo.Builder()
                 .setDownloadGuid(UUID.randomUUID().toString()).setNotificationId(2).build();
-        mDownloadNotifier.notifyDownloadProgress(info2, 1L);
+        mDownloadNotifier.notifyDownloadProgress(info2, 1L, true);
 
         mDownloadNotifier.notifyDownloadFailed(info);
         assertTrue(mDownloadNotifier.mStarted);
diff --git a/chrome/browser/android/download/download_manager_service.cc b/chrome/browser/android/download/download_manager_service.cc
index 935f174..c847bf9 100644
--- a/chrome/browser/android/download/download_manager_service.cc
+++ b/chrome/browser/android/download/download_manager_service.cc
@@ -7,6 +7,8 @@
 #include "base/android/jni_string.h"
 #include "base/message_loop/message_loop.h"
 #include "base/time/time.h"
+#include "chrome/browser/download/download_service.h"
+#include "chrome/browser/download/download_service_factory.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/grit/generated_resources.h"
 #include "content/public/browser/android/download_controller_android.h"
@@ -19,15 +21,6 @@
 using base::android::ConvertJavaStringToUTF8;
 using base::android::ConvertUTF8ToJavaString;
 
-namespace {
-// The retry interval when resuming/canceling a download. This is needed because
-// when the browser process is launched, we have to wait until the download
-// history get loaded before a download can be resumed/cancelled. However,
-// we don't want to retry after a long period of time as the same download Id
-// can be reused later.
-const int kRetryIntervalInMilliseconds = 3000;
-}
-
 // static
 bool DownloadManagerService::RegisterDownloadManagerService(JNIEnv* env) {
   return RegisterNativesImpl(env);
@@ -39,6 +32,11 @@
       content::BrowserContext::GetDownloadManager(profile);
   DownloadManagerService* service =
       new DownloadManagerService(env, jobj, manager);
+  DownloadService* download_service =
+      DownloadServiceFactory::GetForBrowserContext(profile);
+  DownloadHistory* history = download_service->GetDownloadHistory();
+  if (history)
+    history->AddObserver(service);
   return reinterpret_cast<intptr_t>(service);
 }
 
@@ -46,7 +44,9 @@
     JNIEnv* env,
     jobject obj,
     content::DownloadManager* manager)
-    : java_ref_(env, obj), manager_(manager) {
+    : java_ref_(env, obj),
+      manager_(manager),
+      is_history_query_complete_(false) {
   content::DownloadControllerAndroid::Get()->SetDefaultDownloadFileName(
       l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME));
   manager_->AddObserver(this);
@@ -60,20 +60,12 @@
 void DownloadManagerService::ResumeDownload(
     JNIEnv* env,
     jobject obj,
-    uint32_t download_id,
-    const JavaParamRef<jstring>& jdownload_guid,
-    jstring fileName) {
-  std::string download_guid = ConvertJavaStringToUTF8(env, jdownload_guid);
-  ResumeDownloadInternal(download_id, download_guid,
-                         ConvertJavaStringToUTF8(env, fileName), true);
-}
-
-void DownloadManagerService::CancelDownload(
-    JNIEnv* env,
-    jobject obj,
     const JavaParamRef<jstring>& jdownload_guid) {
   std::string download_guid = ConvertJavaStringToUTF8(env, jdownload_guid);
-  CancelDownloadInternal(download_guid, true);
+  if (is_history_query_complete_)
+    ResumeDownloadInternal(download_guid);
+  else
+    EnqueueDownloadAction(download_guid, RESUME);
 }
 
 void DownloadManagerService::PauseDownload(
@@ -81,10 +73,21 @@
     jobject obj,
     const JavaParamRef<jstring>& jdownload_guid) {
   std::string download_guid = ConvertJavaStringToUTF8(env, jdownload_guid);
-  content::DownloadItem* item = manager_->GetDownloadByGuid(download_guid);
-  if (item)
-    item->Pause();
-  item->RemoveObserver(content::DownloadControllerAndroid::Get());
+  if (is_history_query_complete_)
+    PauseDownloadInternal(download_guid);
+  else
+    EnqueueDownloadAction(download_guid, PAUSE);
+}
+
+void DownloadManagerService::CancelDownload(
+    JNIEnv* env,
+    jobject obj,
+    const JavaParamRef<jstring>& jdownload_guid) {
+  std::string download_guid = ConvertJavaStringToUTF8(env, jdownload_guid);
+  if (is_history_query_complete_)
+    CancelDownloadInternal(download_guid);
+  else
+    EnqueueDownloadAction(download_guid, CANCEL);
 }
 
 void DownloadManagerService::ManagerGoingDown(
@@ -92,10 +95,43 @@
   manager_ = nullptr;
 }
 
-void DownloadManagerService::ResumeDownloadItem(content::DownloadItem* item,
-                                                const std::string& fileName) {
+void DownloadManagerService::OnHistoryQueryComplete() {
+  is_history_query_complete_ = true;
+  for (auto iter = pending_actions_.begin(); iter != pending_actions_.end();
+       ++iter) {
+    DownloadAction action = iter->second;
+    std::string download_guid = iter->first;
+    switch (action) {
+      case RESUME:
+        ResumeDownloadInternal(download_guid);
+        break;
+      case PAUSE:
+        PauseDownloadInternal(download_guid);
+        break;
+      case CANCEL:
+        CancelDownloadInternal(download_guid);
+        break;
+      default:
+        NOTREACHED();
+        break;
+    }
+  }
+  pending_actions_.clear();
+}
+
+void DownloadManagerService::ResumeDownloadInternal(
+    const std::string& download_guid) {
+  if (!manager_) {
+    OnResumptionFailed(download_guid);
+    return;
+  }
+  content::DownloadItem* item = manager_->GetDownloadByGuid(download_guid);
+  if (!item) {
+    OnResumptionFailed(download_guid);
+    return;
+  }
   if (!item->CanResume()) {
-    OnResumptionFailed(item->GetId(), fileName);
+    OnResumptionFailed(download_guid);
     return;
   }
   item->AddObserver(content::DownloadControllerAndroid::Get());
@@ -104,64 +140,67 @@
     resume_callback_for_testing_.Run(true);
 }
 
-void DownloadManagerService::ResumeDownloadInternal(
-    uint32_t download_id,
-    const std::string& download_guid,
-    const std::string& fileName,
-    bool retry) {
-  if (!manager_) {
-    OnResumptionFailed(download_id, fileName);
-    return;
-  }
-  content::DownloadItem* item = manager_->GetDownloadByGuid(download_guid);
-  if (item) {
-    ResumeDownloadItem(item, fileName);
-    return;
-  }
-  if (!retry) {
-    OnResumptionFailed(download_id, fileName);
-    return;
-  }
-  // Post a delayed task to wait for the download history to load the download
-  // item. If the download item is not loaded when the delayed task runs, show
-  // an download failed notification. Alternatively, we can have the
-  // DownloadManager inform us when a download item is created. However, there
-  // is no guarantee when the download item will be created, since the newly
-  // created item might not be loaded from download history. So user might wait
-  // indefinitely to see the failed notification. See http://crbug.com/577893.
-  base::MessageLoop::current()->PostDelayedTask(
-      FROM_HERE, base::Bind(&DownloadManagerService::ResumeDownloadInternal,
-                            base::Unretained(this), download_id, download_guid,
-                            fileName, false),
-      base::TimeDelta::FromMilliseconds(kRetryIntervalInMilliseconds));
-}
-
 void DownloadManagerService::CancelDownloadInternal(
-    const std::string& download_guid,
-    bool retry) {
+    const std::string& download_guid) {
   if (!manager_)
     return;
   content::DownloadItem* item = manager_->GetDownloadByGuid(download_guid);
   if (item) {
     item->Cancel(true);
     item->RemoveObserver(content::DownloadControllerAndroid::Get());
-    return;
-  }
-  if (retry) {
-    base::MessageLoop::current()->PostDelayedTask(
-        FROM_HERE, base::Bind(&DownloadManagerService::CancelDownloadInternal,
-                              base::Unretained(this), download_guid, false),
-        base::TimeDelta::FromMilliseconds(kRetryIntervalInMilliseconds));
   }
 }
 
-void DownloadManagerService::OnResumptionFailed(uint32_t download_id,
-                                                const std::string& fileName) {
+void DownloadManagerService::PauseDownloadInternal(
+    const std::string& download_guid) {
+  if (!manager_)
+    return;
+  content::DownloadItem* item = manager_->GetDownloadByGuid(download_guid);
+  if (item)
+    item->Pause();
+  item->RemoveObserver(content::DownloadControllerAndroid::Get());
+}
+
+void DownloadManagerService::EnqueueDownloadAction(
+    const std::string& download_guid,
+    DownloadAction action) {
+  auto iter = pending_actions_.find(download_guid);
+  if (iter == pending_actions_.end()) {
+    pending_actions_[download_guid] = action;
+    return;
+  }
+  switch (action) {
+    case RESUME:
+      if (iter->second == PAUSE)
+        iter->second = action;
+      break;
+    case PAUSE:
+      if (iter->second == RESUME)
+        iter->second = action;
+      break;
+    case CANCEL:
+      iter->second = action;
+      break;
+    default:
+      NOTREACHED();
+      break;
+  }
+}
+
+void DownloadManagerService::OnResumptionFailed(
+    const std::string& download_guid) {
+  base::MessageLoop::current()->PostTask(
+      FROM_HERE, base::Bind(&DownloadManagerService::OnResumptionFailedInternal,
+                            base::Unretained(this), download_guid));
+}
+
+void DownloadManagerService::OnResumptionFailedInternal(
+    const std::string& download_guid) {
   if (!java_ref_.is_null()) {
     JNIEnv* env = base::android::AttachCurrentThread();
     Java_DownloadManagerService_onResumptionFailed(
-        env, java_ref_.obj(), download_id,
-        ConvertUTF8ToJavaString(env, fileName).obj());
+        env, java_ref_.obj(),
+        ConvertUTF8ToJavaString(env, download_guid).obj());
   }
   if (!resume_callback_for_testing_.is_null())
     resume_callback_for_testing_.Run(false);
diff --git a/chrome/browser/android/download/download_manager_service.h b/chrome/browser/android/download/download_manager_service.h
index aa65a320..10d6205 100644
--- a/chrome/browser/android/download/download_manager_service.h
+++ b/chrome/browser/android/download/download_manager_service.h
@@ -6,11 +6,13 @@
 #define CHROME_BROWSER_ANDROID_DOWNLOAD_DOWNLOAD_MANAGER_SERVICE_H_
 
 #include <jni.h>
+#include <map>
 #include <string>
 
 #include "base/android/scoped_java_ref.h"
 #include "base/callback.h"
 #include "base/macros.h"
+#include "chrome/browser/download/download_history.h"
 #include "content/public/browser/download_manager.h"
 
 using base::android::JavaParamRef;
@@ -21,7 +23,8 @@
 
 // Native side of DownloadManagerService.java. The native object is owned by its
 // Java object.
-class DownloadManagerService : public content::DownloadManager::Observer {
+class DownloadManagerService : public content::DownloadManager::Observer,
+                               public DownloadHistory::Observer {
  public:
   // JNI registration.
   static bool RegisterDownloadManagerService(JNIEnv* env);
@@ -32,13 +35,10 @@
   ~DownloadManagerService() override;
 
   // Called to resume downloading the item that has GUID equal to
-  // |jdownload_guid|. If the DownloadItem is not yet created, retry after
-  // a while.
+  // |jdownload_guid|..
   void ResumeDownload(JNIEnv* env,
                       jobject obj,
-                      uint32_t download_id,
-                      const JavaParamRef<jstring>& jdownload_guid,
-                      jstring fileName);
+                      const JavaParamRef<jstring>& jdownload_guid);
 
   // Called to cancel a download item that has GUID equal to |jdownload_guid|.
   // If the DownloadItem is not yet created, retry after a while.
@@ -55,27 +55,26 @@
   // content::DownloadManager::Observer methods.
   void ManagerGoingDown(content::DownloadManager* manager) override;
 
+  // DownloadHistory::Observer methods.
+  void OnHistoryQueryComplete() override;
+
  private:
   // For testing.
   friend class DownloadManagerServiceTest;
 
-  // Resume downloading the given DownloadItem.
-  void ResumeDownloadItem(content::DownloadItem* item,
-                          const std::string& fileName);
+  // Helper function to start the download resumption.
+  void ResumeDownloadInternal(const std::string& download_guid);
 
-  // Helper function to start the download resumption. If |retry| is true,
-  // chrome will retry the resumption if the download item is not loaded.
-  void ResumeDownloadInternal(uint32_t download_id,
-                              const std::string& download_guid,
-                              const std::string& fileName,
-                              bool retry);
+  // Helper function to cancel a download.
+  void CancelDownloadInternal(const std::string& download_guid);
 
-  // Helper function to cancel a download. If |retry| is true,
-  // chrome will retry the cancellation if the download item is not loaded.
-  void CancelDownloadInternal(const std::string& download_guid, bool retry);
+  // Helper function to pause a download.
+  void PauseDownloadInternal(const std::string& download_guid);
 
   // Called to notify the java side that download resumption failed.
-  void OnResumptionFailed(uint32_t download_id, const std::string& fileName);
+  void OnResumptionFailed(const std::string& download_guid);
+
+  void OnResumptionFailedInternal(const std::string& download_guid);
 
   typedef base::Callback<void(bool)> ResumeCallback;
   void set_resume_callback_for_testing(const ResumeCallback& resume_cb) {
@@ -88,6 +87,16 @@
   // Download manager this class observes
   content::DownloadManager* manager_;
 
+  bool is_history_query_complete_;
+
+  enum DownloadAction { RESUME, PAUSE, CANCEL, UNKNOWN };
+
+  using PendingDownloadActions = std::map<std::string, DownloadAction>;
+  PendingDownloadActions pending_actions_;
+
+  void EnqueueDownloadAction(const std::string& download_guid,
+                             DownloadAction action);
+
   ResumeCallback resume_callback_for_testing_;
 
   DISALLOW_COPY_AND_ASSIGN(DownloadManagerService);
diff --git a/chrome/browser/android/download/download_manager_service_unittest.cc b/chrome/browser/android/download/download_manager_service_unittest.cc
index c5d60d7a..2d49fb5 100644
--- a/chrome/browser/android/download/download_manager_service_unittest.cc
+++ b/chrome/browser/android/download/download_manager_service_unittest.cc
@@ -52,10 +52,12 @@
     service_->set_resume_callback_for_testing(base::Bind(
         &DownloadManagerServiceTest::OnResumptionDone, base::Unretained(this)));
     service_->ResumeDownload(
-        env, nullptr, 0, JavaParamRef<jstring>(
-            env, base::android::ConvertUTF8ToJavaString(
-                env, download_guid).obj()),
-        base::android::ConvertUTF8ToJavaString(env, "test").obj());
+        env, nullptr,
+        JavaParamRef<jstring>(
+            env,
+            base::android::ConvertUTF8ToJavaString(env, download_guid).obj()));
+    EXPECT_FALSE(success_);
+    service_->OnHistoryQueryComplete();
     while (!finished_)
       message_loop_.RunUntilIdle();
   }
@@ -81,12 +83,6 @@
   DISALLOW_COPY_AND_ASSIGN(DownloadManagerServiceTest);
 };
 
-// Test that resumption will fail if no download item is found before times out.
-TEST_F(DownloadManagerServiceTest, ResumptionTimeOut) {
-  StartDownload("0000");
-  EXPECT_FALSE(success_);
-}
-
 // Test that resumption succeeds if the download item is found and can be
 // resumed.
 TEST_F(DownloadManagerServiceTest, ResumptionWithResumableItem) {
diff --git a/chrome/browser/devtools/device/usb/android_usb_browsertest.cc b/chrome/browser/devtools/device/usb/android_usb_browsertest.cc
index 0d90ae47..4e05165 100644
--- a/chrome/browser/devtools/device/usb/android_usb_browsertest.cc
+++ b/chrome/browser/devtools/device/usb/android_usb_browsertest.cc
@@ -230,10 +230,10 @@
     }
   }
 
-  bool FindInterfaceByEndpoint(uint8_t endpoint_address,
-                               uint8_t* interface_number) {
+  const UsbInterfaceDescriptor* FindInterfaceByEndpoint(
+      uint8_t endpoint_address) {
     NOTIMPLEMENTED();
-    return false;
+    return nullptr;
   }
 
   template <class D>
diff --git a/chrome/browser/resources/md_downloads/vulcanize_readme.md b/chrome/browser/resources/md_downloads/vulcanize_readme.md
index 1a20f9c..dba53481 100644
--- a/chrome/browser/resources/md_downloads/vulcanize_readme.md
+++ b/chrome/browser/resources/md_downloads/vulcanize_readme.md
@@ -8,10 +8,10 @@
 
 Vulcanization currently requires:
 
-- node.js: v0.10.25 (can be found with `node --version`)
-- npm: 1.3.10 (can be found with `npm --version`)
-- vulcanize: 1.12.3 (can be found with `vulcanize --version`)
-- crisper: 1.0.7 (can be found with `npm info crisper`)
+- node.js: >= v4.4.2 (can be found with `node --version`)
+- npm: >= 1.3.10 (can be found with `npm --version`)
+- vulcanize: 1.14.8 (can be found with `vulcanize --version`)
+- crisper: 2.0.1 (can be found with `npm list -g crisper`)
 
 ## Installing required software
 
@@ -41,5 +41,5 @@
 
 ## Testing downloads without vulcanizing
 
-If you're locally working on the downloads page, you can simply load this URL to
-bypass the vulcanized version: `chrome://downloads/dev.html`
+Build with "use_vulcanize=0" in your GYP_DEFINES to build downloads without
+vulcanizing.
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
index bcf1650..370f41fd 100644
--- a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
+++ b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
@@ -62,7 +62,7 @@
     </media-router-header>
     <div id="content">
       <template is="dom-if" if="[[!computeCastModeListHidden_(currentView_)]]">
-        <paper-menu id="cast-mode-list">
+        <paper-menu id="cast-mode-list" role="presentation">
           <template is="dom-repeat" id="defaultCastModeList"
               items="[[computeDefaultCastModeList_(castModeList)]]">
             <paper-item on-tap="onCastModeClick_">
@@ -105,7 +105,7 @@
             [[deviceMissingText_]]
           </a>
         </div>
-        <paper-menu id="sink-list"
+        <paper-menu id="sink-list" role="presentation"
             hidden$="[[computeSinkListHidden_(sinksToShow_, isUserSearching_)]]">
           <template is="dom-repeat" id="sinkList" items="[[sinksToShow_]]">
             <paper-item on-tap="onSinkClick_">
@@ -163,7 +163,7 @@
               hidden$="[[computeNoMatchesHidden_(searchResultsToShow_, isUserSearching_)]]">
             <span>[[searchNoMatchesText_]]</span>
           </div>
-          <paper-menu id="search-results" selected="0"
+          <paper-menu id="search-results" selected="0" role="presentation"
               hidden$="[[computeSearchResultsHidden_(isUserSearching_, searchResultsToShow_)]]">
             <template is="dom-repeat" id="searchResults"
                 items="[[searchResultsToShow_]]">
diff --git a/chrome/browser/resources/settings/on_startup_page/compiled_resources2.gyp b/chrome/browser/resources/settings/on_startup_page/compiled_resources2.gyp
index 09bb991..d7d8531 100644
--- a/chrome/browser/resources/settings/on_startup_page/compiled_resources2.gyp
+++ b/chrome/browser/resources/settings/on_startup_page/compiled_resources2.gyp
@@ -12,6 +12,7 @@
       'dependencies': [
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert',
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:cr',
+        '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:promise_resolver',
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:util',
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:web_ui_listener_behavior',
         'startup_urls_page_browser_proxy',
@@ -23,6 +24,7 @@
       'dependencies': [
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert',
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:cr',
+        '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:promise_resolver',
         '<(EXTERNS_GYP):chrome_send',
       ],
       'includes': ['../../../../../third_party/closure_compiler/compile_js2.gypi'],
diff --git a/chrome/browser/resources/settings/on_startup_page/startup_urls_page.html b/chrome/browser/resources/settings/on_startup_page/startup_urls_page.html
index 07b7c110..6819ca7 100644
--- a/chrome/browser/resources/settings/on_startup_page/startup_urls_page.html
+++ b/chrome/browser/resources/settings/on_startup_page/startup_urls_page.html
@@ -30,7 +30,7 @@
           <iron-icon on-tap="onRemoveUrlTap_" icon="clear"></iron-icon>
         </div>
       </template>
-      <div class="list-item list-button" on-tap="onAddPageTap_"
+      <div class="list-item list-button" id="addPage" on-tap="onAddPageTap_"
           i18n-content="onStartupAddNewPage">
       </div>
       <div class="list-item list-button" on-tap="onUseCurrentPagesTap_"
@@ -41,7 +41,7 @@
     <settings-dialog id="addUrlDialog">
       <div class="title" i18n-content="onStartupAddNewPage"></div>
       <div class="body">
-        <paper-input class="flex" always-float-label
+        <paper-input class="flex" always-float-label id="newUrl"
             i18n-values="label:onStartupSiteUrl" value="{{newUrl_}}">
         </paper-input>
       </div>
@@ -49,8 +49,8 @@
         <div class="action-buttons">
           <paper-button class="cancel-button" on-tap="onCancelTap_"
               id="cancel" i18n-content="cancel"></paper-button>
-          <paper-button class="action-button" on-tap="onAddTap_"
-              i18n-content="add" disabled="[[!isAddEnabled_(newUrl_)]]">
+          <paper-button id="add" class="action-button" on-tap="onAddTap_"
+              i18n-content="add" disabled="[[!isNewUrlValid_]]">
           </paper-button>
         </div>
       </div>
diff --git a/chrome/browser/resources/settings/on_startup_page/startup_urls_page.js b/chrome/browser/resources/settings/on_startup_page/startup_urls_page.js
index c8ba1c6..5166943 100644
--- a/chrome/browser/resources/settings/on_startup_page/startup_urls_page.js
+++ b/chrome/browser/resources/settings/on_startup_page/startup_urls_page.js
@@ -42,10 +42,16 @@
 
     /** @private {string} */
     newUrl_: {
+      observer: 'newUrlChanged_',
       type: String,
       value: '',
     },
 
+    isNewUrlValid_: {
+      type: Boolean,
+      value: false,
+    },
+
     /**
      * Pages to load upon browser startup.
      * @private {!Array<!StartupPageInfo>}
@@ -94,16 +100,27 @@
   },
 
   /**
-   * @return {boolean} Whether tapping the Add button should be allowed.
+   * @param {string} newUrl
    * @private
    */
-  isAddEnabled_: function() {
-    return this.browserProxy_.canAddPage(this.newUrl_);
+  newUrlChanged_: function(newUrl) {
+    if (this.validationResolver_)
+      this.validationResolver_.reject(false);
+
+    /** @type {?PromiseResolver<boolean>} */
+    this.validationResolver_ = this.browserProxy_.validateStartupPage(newUrl);
+
+    this.validationResolver_.promise.then(function(isValid) {
+      this.isNewUrlValid_ = isValid;
+      this.validationResolver_ = null;
+    }.bind(this), function() {
+      // Squelchs console errors.
+    });
   },
 
   /** @private */
   onAddTap_: function() {
-    assert(this.isAddEnabled_());
+    assert(this.isNewUrlValid_);
     this.browserProxy_.addStartupPage(this.newUrl_);
     this.$.addUrlDialog.close();
   },
diff --git a/chrome/browser/resources/settings/on_startup_page/startup_urls_page_browser_proxy.html b/chrome/browser/resources/settings/on_startup_page/startup_urls_page_browser_proxy.html
index 0486a64c..7346aa55 100644
--- a/chrome/browser/resources/settings/on_startup_page/startup_urls_page_browser_proxy.html
+++ b/chrome/browser/resources/settings/on_startup_page/startup_urls_page_browser_proxy.html
@@ -1,3 +1,4 @@
 <link rel="href" src="chrome://resources/html/assert.html">
 <link rel="href" src="chrome://resources/html/cr.html">
+<link rel="href" src="chrome://resources/html/promise_resolver.html">
 <script src="chrome://md-settings/on_startup_page/startup_urls_page_browser_proxy.js"></script>
diff --git a/chrome/browser/resources/settings/on_startup_page/startup_urls_page_browser_proxy.js b/chrome/browser/resources/settings/on_startup_page/startup_urls_page_browser_proxy.js
index 3f9da83..025748f 100644
--- a/chrome/browser/resources/settings/on_startup_page/startup_urls_page_browser_proxy.js
+++ b/chrome/browser/resources/settings/on_startup_page/startup_urls_page_browser_proxy.js
@@ -11,8 +11,11 @@
 
     useCurrentPages: assertNotReached,
 
-    /** @param {string} url */
-    canAddPage: assertNotReached,
+    /**
+     * @param {string} url
+     * @return {!PromiseResolver<boolean>} Whether the URL is valid.
+     */
+    validateStartupPage: assertNotReached,
 
     /** @param {string} url */
     addStartupPage: assertNotReached,
@@ -30,23 +33,30 @@
   cr.addSingletonGetter(StartupUrlsPageBrowserProxyImpl);
 
   StartupUrlsPageBrowserProxyImpl.prototype = {
+    /** @override */
     loadStartupPages: function() {
       chrome.send('onStartupPrefsPageLoad');
     },
 
+    /** @override */
     useCurrentPages: function() {
       chrome.send('setStartupPagesToCurrentPages');
     },
 
-    canAddPage: function(url) {
-      // TODO(dbeam): hook up to C++ for deeper validation.
-      return url.trim().length > 0;
+    /** @override */
+    validateStartupPage: function(url) {
+      var resolver = new PromiseResolver();
+      resolver.promise = url.trim().length == 0 ? Promise.resolve(false) :
+          cr.sendWithPromise('validateStartupPage', url);
+      return resolver;
     },
 
+    /** @override */
     addStartupPage: function(url) {
       chrome.send('addStartupPage', [url.trim()]);
     },
 
+    /** @override */
     removeStartupPage: function(index) {
       chrome.send('removeStartupPage', [index]);
     },
diff --git a/chrome/browser/ui/views/ime/ime_warning_bubble_view.cc b/chrome/browser/ui/views/ime/ime_warning_bubble_view.cc
index ee61271..8a3e1ce 100644
--- a/chrome/browser/ui/views/ime/ime_warning_bubble_view.cc
+++ b/chrome/browser/ui/views/ime/ime_warning_bubble_view.cc
@@ -8,6 +8,7 @@
 
 #include "base/callback_helpers.h"
 #include "chrome/browser/extensions/api/input_ime/input_ime_api_nonchromeos.h"
+#include "chrome/browser/platform_util.h"
 #include "chrome/browser/ui/browser_list.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/toolbar/app_menu_button.h"
@@ -105,7 +106,8 @@
   BrowserList::AddObserver(this);
 
   // The lifetime of this bubble is tied to the lifetime of the browser.
-  set_parent_window(browser_view_->GetNativeWindow());
+  set_parent_window(
+      platform_util::GetViewForWindow(browser_view_->GetNativeWindow()));
   InitAnchorView();
   InitLayout();
 
diff --git a/chrome/browser/ui/webui/options/startup_pages_handler.cc b/chrome/browser/ui/webui/options/startup_pages_handler.cc
index 44c3a29c..c2c9acb 100644
--- a/chrome/browser/ui/webui/options/startup_pages_handler.cc
+++ b/chrome/browser/ui/webui/options/startup_pages_handler.cc
@@ -8,6 +8,7 @@
 
 #include "base/bind.h"
 #include "base/bind_helpers.h"
+#include "base/logging.h"
 #include "base/macros.h"
 #include "chrome/browser/autocomplete/chrome_autocomplete_provider_client.h"
 #include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h"
@@ -168,8 +169,10 @@
   CHECK(args->GetString(0, &url_string));
 
   GURL fixed_url;
-  if (!settings_utils::FixupAndValidateStartupPage(url_string, &fixed_url))
+  if (!settings_utils::FixupAndValidateStartupPage(url_string, &fixed_url)) {
+    NOTREACHED();
     return;
+  }
 
   int row_count = startup_custom_pages_table_model_->RowCount();
   int index;
diff --git a/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc b/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
index 0fcece3..cc20a5db 100644
--- a/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
+++ b/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
@@ -9,9 +9,10 @@
 
 #include "chrome/browser/prefs/session_startup_pref.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/webui/settings_utils.h"
 #include "chrome/common/pref_names.h"
-#include "components/url_formatter/url_fixer.h"
 #include "content/public/browser/web_ui.h"
+#include "url/gurl.h"
 
 namespace settings {
 
@@ -38,6 +39,9 @@
   web_ui()->RegisterMessageCallback("setStartupPagesToCurrentPages",
       base::Bind(&StartupPagesHandler::HandleSetStartupPagesToCurrentPages,
                  base::Unretained(this)));
+  web_ui()->RegisterMessageCallback("validateStartupPage",
+      base::Bind(&StartupPagesHandler::HandleValidateStartupPage,
+                 base::Unretained(this)));
 }
 
 void StartupPagesHandler::RenderViewReused() {
@@ -79,13 +83,13 @@
 void StartupPagesHandler::HandleAddStartupPage(const base::ListValue* args) {
   std::string url_string;
   if (!args->GetString(0, &url_string)) {
-    DLOG(ERROR) << "Missing URL string parameter";
+    NOTREACHED();
     return;
   }
 
-  GURL url = url_formatter::FixupURL(url_string, std::string());
-  if (!url.is_valid()) {
-    LOG(ERROR) << "FixupURL failed on " << url_string;
+  GURL url;
+  if (!settings_utils::FixupAndValidateStartupPage(url_string, &url)) {
+    NOTREACHED();
     return;
   }
 
@@ -124,13 +128,13 @@
 void StartupPagesHandler::HandleRemoveStartupPage(const base::ListValue* args) {
   int selected_index;
   if (!args->GetInteger(0, &selected_index)) {
-    DLOG(ERROR) << "Missing index parameter";
+    NOTREACHED();
     return;
   }
 
   if (selected_index < 0 ||
       selected_index >= startup_custom_pages_table_model_.RowCount()) {
-    LOG(ERROR) << "Index out of range " << selected_index;
+    NOTREACHED();
     return;
   }
 
@@ -144,6 +148,20 @@
   SaveStartupPagesPref();
 }
 
+void StartupPagesHandler::HandleValidateStartupPage(
+    const base::ListValue* args) {
+  CHECK_EQ(args->GetSize(), 2U);
+
+  const base::Value* callback_id;
+  CHECK(args->Get(0, &callback_id));
+
+  std::string url_string;
+  CHECK(args->GetString(1, &url_string));
+
+  bool valid = settings_utils::FixupAndValidateStartupPage(url_string, nullptr);
+  ResolveJavascriptCallback(*callback_id, base::FundamentalValue(valid));
+}
+
 void StartupPagesHandler::SaveStartupPagesPref() {
   PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs();
 
diff --git a/chrome/browser/ui/webui/settings/settings_startup_pages_handler.h b/chrome/browser/ui/webui/settings/settings_startup_pages_handler.h
index 68a3987..01367ea 100644
--- a/chrome/browser/ui/webui/settings/settings_startup_pages_handler.h
+++ b/chrome/browser/ui/webui/settings/settings_startup_pages_handler.h
@@ -52,6 +52,10 @@
   // Sets the startup page set to the current pages. Called from WebUI.
   void HandleSetStartupPagesToCurrentPages(const base::ListValue* args);
 
+  // Handles the "validateStartupPage" message. Passed a URL that might be a
+  // valid startup page.
+  void HandleValidateStartupPage(const base::ListValue* args);
+
   // Stores the current state of the startup page preferences.
   void SaveStartupPagesPref();
 
diff --git a/chrome/browser/usb/web_usb_permission_provider.cc b/chrome/browser/usb/web_usb_permission_provider.cc
index c270d254..c0727eb 100644
--- a/chrome/browser/usb/web_usb_permission_provider.cc
+++ b/chrome/browser/usb/web_usb_permission_provider.cc
@@ -27,7 +27,7 @@
 bool FindOriginInDescriptorSet(const WebUsbDescriptorSet* set,
                                const GURL& origin,
                                const uint8_t* configuration_value,
-                               const uint8_t* interface_number) {
+                               const uint8_t* first_interface) {
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kDisableWebUsbSecurity))
     return true;
@@ -47,9 +47,7 @@
         return true;
     for (size_t j = 0; j < config->functions.size(); ++j) {
       const WebUsbFunctionSubsetPtr& function = config->functions[j];
-      // TODO(reillyg): Implement support for Interface Association Descriptors
-      // so that this check will match associated interfaces.
-      if (interface_number && *interface_number != function->first_interface)
+      if (first_interface && *first_interface != function->first_interface)
         continue;
       for (size_t k = 0; k < function->origins.size(); ++k)
         if (origin.spec() == function->origins[k])
@@ -105,13 +103,13 @@
       &requested_configuration_value, nullptr);
 }
 
-bool WebUSBPermissionProvider::HasInterfacePermission(
-    uint8_t requested_interface,
+bool WebUSBPermissionProvider::HasFunctionPermission(
+    uint8_t requested_function,
     uint8_t configuration_value,
     const device::usb::DeviceInfo& device_info) const {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   return FindOriginInDescriptorSet(
       device_info.webusb_allowed_origins.get(),
       render_frame_host_->GetLastCommittedURL().GetOrigin(),
-      &configuration_value, &requested_interface);
+      &configuration_value, &requested_function);
 }
diff --git a/chrome/browser/usb/web_usb_permission_provider.h b/chrome/browser/usb/web_usb_permission_provider.h
index e52275b..2374b11 100644
--- a/chrome/browser/usb/web_usb_permission_provider.h
+++ b/chrome/browser/usb/web_usb_permission_provider.h
@@ -32,8 +32,8 @@
   bool HasConfigurationPermission(
       uint8_t requested_configuration,
       const device::usb::DeviceInfo& device_info) const override;
-  bool HasInterfacePermission(
-      uint8_t requested_interface,
+  bool HasFunctionPermission(
+      uint8_t requested_function,
       uint8_t configuration_value,
       const device::usb::DeviceInfo& device_info) const override;
 
diff --git a/chrome/chrome_browser_ui.gypi b/chrome/chrome_browser_ui.gypi
index 171f7e8e..af3ab7c 100644
--- a/chrome/chrome_browser_ui.gypi
+++ b/chrome/chrome_browser_ui.gypi
@@ -675,8 +675,6 @@
       'browser/ui/views/crypto_module_password_dialog_view.h',
       'browser/ui/views/desktop_media_picker_views.cc',
       'browser/ui/views/desktop_media_picker_views.h',
-      'browser/ui/views/ime/ime_warning_bubble_view.cc',
-      'browser/ui/views/ime/ime_warning_bubble_view.h',
       'browser/ui/views/ime/ime_window_frame_view.cc',
       'browser/ui/views/ime/ime_window_frame_view.h',
       'browser/ui/views/ime/ime_window_view.cc',
@@ -2345,6 +2343,8 @@
       'browser/ui/views/hung_renderer_view.h',
       'browser/ui/views/importer/import_lock_dialog_view.cc',
       'browser/ui/views/importer/import_lock_dialog_view.h',
+      'browser/ui/views/ime/ime_warning_bubble_view.cc',
+      'browser/ui/views/ime/ime_warning_bubble_view.h',
       'browser/ui/views/infobars/alternate_nav_infobar_view.cc',
       'browser/ui/views/infobars/alternate_nav_infobar_view.h',
       'browser/ui/views/infobars/confirm_infobar.cc',
diff --git a/chrome/test/data/webui/media_router/media_router_elements_browsertest.js b/chrome/test/data/webui/media_router/media_router_elements_browsertest.js
index 3b9a65d..82ad2bc 100644
--- a/chrome/test/data/webui/media_router/media_router_elements_browsertest.js
+++ b/chrome/test/data/webui/media_router/media_router_elements_browsertest.js
@@ -64,16 +64,6 @@
     this.accessibilityAuditConfig.ignoreSelectors(
         'badAriaAttributeValue', '#input');
 
-    var requiredOwnedAriaRoleMissingSelectors = [
-      '#cast-mode-list',
-      '#sink-list'
-    ];
-
-    // Enable when failure is resolved.
-    // AX_ARIA_08: http://crbug.com/591552
-    this.accessibilityAuditConfig.ignoreSelectors(
-        'requiredOwnedAriaRoleMissing', requiredOwnedAriaRoleMissingSelectors);
-
     // This element is used as a focus placeholder on dialog open, then
     // deleted. The user will be unable to tab to it. Remove when there is a
     // long term fix.
diff --git a/chrome/test/data/webui/settings/cr_settings_browsertest.js b/chrome/test/data/webui/settings/cr_settings_browsertest.js
index bc3d4a2..34ef70ec 100644
--- a/chrome/test/data/webui/settings/cr_settings_browsertest.js
+++ b/chrome/test/data/webui/settings/cr_settings_browsertest.js
@@ -300,3 +300,25 @@
   mocha.run();
 });
 GEN('#endif');
+
+/**
+ * @constructor
+ * @extends {CrSettingsBrowserTest}
+ */
+function CrSettingsStartupUrlsPageTest() {}
+
+CrSettingsStartupUrlsPageTest.prototype = {
+  __proto__: CrSettingsBrowserTest.prototype,
+
+  browsePreload: 'chrome://md-settings/on_startup_page/startup_urls_page.html',
+
+  extraLibraries: CrSettingsBrowserTest.prototype.extraLibraries.concat([
+    ROOT_PATH + 'ui/webui/resources/js/promise_resolver.js',
+    'test_browser_proxy.js',
+    'startup_urls_page_test.js',
+  ]),
+};
+
+TEST_F('CrSettingsStartupUrlsPageTest', 'Validity', function() {
+  mocha.run();
+});
diff --git a/chrome/test/data/webui/settings/startup_urls_page_test.js b/chrome/test/data/webui/settings/startup_urls_page_test.js
new file mode 100644
index 0000000..1c4490aa
--- /dev/null
+++ b/chrome/test/data/webui/settings/startup_urls_page_test.js
@@ -0,0 +1,78 @@
+// Copyright 2016 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.
+
+cr.define('settings_startup_urls_page', function() {
+  /**
+   * @constructor
+   * @implements {settings.StartupUrlsPageBrowserProxy}
+   * @extends {settings.TestBrowserProxy}
+   */
+  function TestStartupUrlsPageBrowserProxy() {
+    settings.TestBrowserProxy.call(this, [
+      'validateStartupPage',
+      'addStartupPage',
+    ]);
+  }
+
+  TestStartupUrlsPageBrowserProxy.prototype = {
+    __proto__: settings.TestBrowserProxy.prototype,
+
+    urlsAreValid: false,
+
+    /** @override */
+    loadStartupPages: function() {},
+
+    /** @override */
+    validateStartupPage: function(url) {
+      this.methodCalled('validateStartupPage');
+      var resolver = new PromiseResolver;
+      resolver.promise = Promise.resolve(this.urlsAreValid);
+      return resolver;
+    },
+
+    /** @override */
+    addStartupPage: function(url) {
+      this.methodCalled('addStartupPage');
+    },
+  };
+
+  suite('StartupUrlsPage', function() {
+    /** @type {?SettingsStartupUrlsPageElement} */
+    var page = null;
+
+    var browserProxy = null;
+
+    setup(function() {
+      browserProxy = new TestStartupUrlsPageBrowserProxy();
+      settings.StartupUrlsPageBrowserProxyImpl.instance_ = browserProxy;
+      PolymerTest.clearBody();
+      page = document.createElement('settings-startup-urls-page');
+      document.body.appendChild(page);
+    });
+
+    teardown(function() { page.remove(); });
+
+    test('validate', function() {
+      browserProxy.whenCalled('validateStartupPage').then(function() {
+        var addButton = page.$.add;
+        assertTrue(!!addButton);
+        assertFalse(browserProxy.urlsAreValid);
+        assertTrue(addButton.disabled);
+
+        browserProxy.resetResolver('validateStartupPage');
+        browserProxy.whenCalled('validateStartupPage').then(function() {
+          page.async(function() {
+            assertFalse(addButton.disabled);
+            MockInteractions.tap(addButton);
+          });
+        });
+
+        browserProxy.urlsAreValid = true;
+        page.$.newUrl.value = "overriding validation anyway";
+      });
+
+      return browserProxy.whenCalled('addStartupPage');
+    });
+  });
+});
diff --git a/chromecast/browser/media/cma_message_filter_host.cc b/chromecast/browser/media/cma_message_filter_host.cc
index 071cad2..05a0374 100644
--- a/chromecast/browser/media/cma_message_filter_host.cc
+++ b/chromecast/browser/media/cma_message_filter_host.cc
@@ -203,7 +203,9 @@
 
 // *** Handle incoming messages ***
 
-void CmaMessageFilterHost::CreateMedia(int media_id, LoadType load_type) {
+void CmaMessageFilterHost::CreateMedia(int media_id,
+                                       LoadType load_type,
+                                       AvailableTracks available_tracks) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
 
   scoped_ptr<MediaPipelineHost> media_pipeline_host(new MediaPipelineHost());
@@ -226,10 +228,11 @@
       FROM_HERE, base::Bind(&MediaPipelineCmaMap::SetMediaPipeline,
                             base::Unretained(g_pipeline_map.Pointer()),
                             process_id_, media_id, media_pipeline_host.get()));
-  task_runner_->PostTask(FROM_HERE,
-                         base::Bind(&MediaPipelineHost::Initialize,
-                                    base::Unretained(media_pipeline_host.get()),
-                                    load_type, client, create_backend_cb_));
+  task_runner_->PostTask(
+      FROM_HERE,
+      base::Bind(&MediaPipelineHost::Initialize,
+                 base::Unretained(media_pipeline_host.get()), load_type,
+                 available_tracks, client, create_backend_cb_));
   std::pair<MediaPipelineMap::iterator, bool> ret =
     media_pipelines_.insert(
         std::make_pair(media_id, media_pipeline_host.release()));
diff --git a/chromecast/browser/media/cma_message_filter_host.h b/chromecast/browser/media/cma_message_filter_host.h
index dece09fe..aee1b72 100644
--- a/chromecast/browser/media/cma_message_filter_host.h
+++ b/chromecast/browser/media/cma_message_filter_host.h
@@ -67,7 +67,9 @@
   MediaPipelineHost* LookupById(int media_id);
 
   // Handling of incoming IPC messages.
-  void CreateMedia(int media_id, LoadType load_type);
+  void CreateMedia(int media_id,
+                   LoadType load_type,
+                   AvailableTracks available_tracks);
   void DestroyMedia(int media_id);
   void SetCdm(int media_id, int render_frame_id, int cdm_id);
   void CreateAvPipe(int media_id, TrackId track_id, size_t shared_mem_size);
diff --git a/chromecast/browser/media/media_pipeline_host.cc b/chromecast/browser/media/media_pipeline_host.cc
index 34209da6..2707f229 100644
--- a/chromecast/browser/media/media_pipeline_host.cc
+++ b/chromecast/browser/media/media_pipeline_host.cc
@@ -57,15 +57,19 @@
 
 void MediaPipelineHost::Initialize(
     LoadType load_type,
+    AvailableTracks available_tracks,
     const MediaPipelineClient& client,
     const CreateMediaPipelineBackendCB& create_backend_cb) {
   DCHECK(thread_checker_.CalledOnValidThread());
   media_pipeline_.reset(new MediaPipelineImpl());
   task_runner_.reset(new TaskRunnerImpl());
-  MediaPipelineDeviceParams::MediaSyncType sync_type =
-      (load_type == kLoadTypeMediaStream)
-          ? MediaPipelineDeviceParams::kModeIgnorePts
-          : MediaPipelineDeviceParams::kModeSyncPts;
+  MediaPipelineDeviceParams::MediaSyncType sync_type;
+  if (load_type == kLoadTypeMediaStream ||
+      available_tracks == AUDIO_TRACK_ONLY) {
+    sync_type = MediaPipelineDeviceParams::kModeIgnorePts;
+  } else {
+    sync_type = MediaPipelineDeviceParams::kModeSyncPts;
+  }
   MediaPipelineDeviceParams default_parameters(sync_type, task_runner_.get());
 
   media_pipeline_->SetClient(client);
diff --git a/chromecast/browser/media/media_pipeline_host.h b/chromecast/browser/media/media_pipeline_host.h
index eea86ff..8fd40541 100644
--- a/chromecast/browser/media/media_pipeline_host.h
+++ b/chromecast/browser/media/media_pipeline_host.h
@@ -45,6 +45,7 @@
   ~MediaPipelineHost();
 
   void Initialize(LoadType load_type,
+                  AvailableTracks available_tracks,
                   const MediaPipelineClient& client,
                   const CreateMediaPipelineBackendCB& create_backend_cb);
 
diff --git a/chromecast/common/media/cma_ipc_common.h b/chromecast/common/media/cma_ipc_common.h
index 34311045..3ad9b90e 100644
--- a/chromecast/common/media/cma_ipc_common.h
+++ b/chromecast/common/media/cma_ipc_common.h
@@ -14,6 +14,12 @@
   kVideoTrackId = 1,
 };
 
+enum AvailableTracks {
+  AUDIO_TRACK_ONLY = 0,
+  VIDEO_TRACK_ONLY = 1,
+  AUDIO_AND_VIDEO_TRACKS = 2,
+};
+
 }  // namespace media
 }  // namespace chromecast
 
diff --git a/chromecast/common/media/cma_messages.h b/chromecast/common/media/cma_messages.h
index 5745655..3578ca3 100644
--- a/chromecast/common/media/cma_messages.h
+++ b/chromecast/common/media/cma_messages.h
@@ -26,9 +26,10 @@
 
 // Messages sent from the renderer to the browser process.
 
-IPC_MESSAGE_CONTROL2(CmaHostMsg_CreateMedia,
+IPC_MESSAGE_CONTROL3(CmaHostMsg_CreateMedia,
                      int /* Media pipeline ID */,
-                     chromecast::media::LoadType /* Load type */)
+                     chromecast::media::LoadType /* Load type */,
+                     chromecast::media::AvailableTracks /* Available tracks */)
 IPC_MESSAGE_CONTROL1(CmaHostMsg_DestroyMedia,
                      int /* Media pipeline ID */)
 IPC_MESSAGE_CONTROL3(CmaHostMsg_SetCdm,
diff --git a/chromecast/common/media/cma_param_traits_macros.h b/chromecast/common/media/cma_param_traits_macros.h
index 2aae996..f19eea7 100644
--- a/chromecast/common/media/cma_param_traits_macros.h
+++ b/chromecast/common/media/cma_param_traits_macros.h
@@ -27,6 +27,9 @@
 IPC_ENUM_TRAITS_MIN_MAX_VALUE(chromecast::media::TrackId,
                               chromecast::media::kNoTrackId,
                               chromecast::media::kVideoTrackId)
+IPC_ENUM_TRAITS_MIN_MAX_VALUE(chromecast::media::AvailableTracks,
+                              chromecast::media::AUDIO_TRACK_ONLY,
+                              chromecast::media::AUDIO_AND_VIDEO_TRACKS)
 
 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::AudioCodec,
                               media::AudioCodec::kUnknownAudioCodec,
diff --git a/chromecast/renderer/media/cma_renderer.cc b/chromecast/renderer/media/cma_renderer.cc
index cbb24c9..33f47ad 100644
--- a/chromecast/renderer/media/cma_renderer.cc
+++ b/chromecast/renderer/media/cma_renderer.cc
@@ -13,6 +13,7 @@
 #include "base/location.h"
 #include "base/single_thread_task_runner.h"
 #include "base/thread_task_runner_handle.h"
+#include "chromecast/common/media/cma_ipc_common.h"
 #include "chromecast/media/cma/base/balanced_media_task_runner_factory.h"
 #include "chromecast/media/cma/base/cma_logging.h"
 #include "chromecast/media/cma/base/demuxer_stream_adapter.h"
@@ -116,6 +117,16 @@
   error_cb_ = error_cb;
   waiting_for_decryption_key_cb_ = waiting_for_decryption_key_cb;
 
+  bool has_audio = (demuxer_stream_provider_->GetStream(
+                        ::media::DemuxerStream::AUDIO) != nullptr);
+  bool has_video = (demuxer_stream_provider_->GetStream(
+                        ::media::DemuxerStream::VIDEO) != nullptr);
+  DCHECK(has_audio || has_video);
+  AvailableTracks available_tracks =
+      (has_audio ? (has_video ? AUDIO_AND_VIDEO_TRACKS : AUDIO_TRACK_ONLY)
+                 : VIDEO_TRACK_ONLY);
+  media_pipeline_->Initialize(available_tracks);
+
   MediaPipelineClient media_pipeline_client;
   media_pipeline_client.error_cb = ::media::BindToCurrentLoop(error_cb_);
   media_pipeline_client.buffering_state_cb = ::media::BindToCurrentLoop(
diff --git a/chromecast/renderer/media/media_channel_proxy.cc b/chromecast/renderer/media/media_channel_proxy.cc
index cbbcdaf..7fe6188 100644
--- a/chromecast/renderer/media/media_channel_proxy.cc
+++ b/chromecast/renderer/media/media_channel_proxy.cc
@@ -22,15 +22,16 @@
 MediaChannelProxy::~MediaChannelProxy() {
 }
 
-void MediaChannelProxy::Open(LoadType load_type) {
+void MediaChannelProxy::Open(LoadType load_type,
+                             AvailableTracks available_tracks) {
   CHECK(!is_open_);
   // Renderer side.
   id_ = filter_->CreateChannel();
   is_open_ = true;
 
   // Browser side.
-  bool success = Send(
-      scoped_ptr<IPC::Message>(new CmaHostMsg_CreateMedia(id_, load_type)));
+  bool success = Send(scoped_ptr<IPC::Message>(
+      new CmaHostMsg_CreateMedia(id_, load_type, available_tracks)));
   if (!success) {
     is_open_ = false;
     id_ = 0;
diff --git a/chromecast/renderer/media/media_channel_proxy.h b/chromecast/renderer/media/media_channel_proxy.h
index c7c4696..7b1127b 100644
--- a/chromecast/renderer/media/media_channel_proxy.h
+++ b/chromecast/renderer/media/media_channel_proxy.h
@@ -8,6 +8,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_ptr.h"
+#include "chromecast/common/media/cma_ipc_common.h"
 #include "chromecast/media/cma/pipeline/load_type.h"
 #include "chromecast/renderer/media/cma_message_filter_proxy.h"
 
@@ -26,7 +27,7 @@
   MediaChannelProxy();
 
   // Opens a CMA ipc channel.
-  void Open(LoadType load_type);
+  void Open(LoadType load_type, AvailableTracks available_tracks);
 
   // Closes the ipc channel.
   void Close();
@@ -65,4 +66,4 @@
 }  // namespace media
 }  // namespace chromecast
 
-#endif  // CHROMECAST_RENDERER_MEDIA_MEDIA_CHANNEL_PROXY_H_
\ No newline at end of file
+#endif  // CHROMECAST_RENDERER_MEDIA_MEDIA_CHANNEL_PROXY_H_
diff --git a/chromecast/renderer/media/media_pipeline_proxy.cc b/chromecast/renderer/media/media_pipeline_proxy.cc
index c0835f3..c653488 100644
--- a/chromecast/renderer/media/media_pipeline_proxy.cc
+++ b/chromecast/renderer/media/media_pipeline_proxy.cc
@@ -160,6 +160,7 @@
     LoadType load_type)
     : io_task_runner_(io_task_runner),
       render_frame_id_(render_frame_id),
+      load_type_(load_type),
       media_channel_proxy_(new MediaChannelProxy),
       proxy_(new MediaPipelineProxyInternal(media_channel_proxy_)),
       has_audio_(false),
@@ -170,9 +171,6 @@
           new VideoPipelineProxy(io_task_runner, media_channel_proxy_)),
       weak_factory_(this) {
   weak_this_ = weak_factory_.GetWeakPtr();
-  io_task_runner_->PostTask(
-      FROM_HERE,
-      base::Bind(&MediaChannelProxy::Open, media_channel_proxy_, load_type));
   thread_checker_.DetachFromThread();
 }
 
@@ -202,12 +200,21 @@
   return video_pipeline_.get();
 }
 
+void MediaPipelineProxy::Initialize(AvailableTracks available_tracks) {
+  DCHECK(thread_checker_.CalledOnValidThread());
+  has_audio_ = (available_tracks != VIDEO_TRACK_ONLY);
+  has_video_ = (available_tracks != AUDIO_TRACK_ONLY);
+  io_task_runner_->PostTask(
+      FROM_HERE, base::Bind(&MediaChannelProxy::Open, media_channel_proxy_,
+                            load_type_, available_tracks));
+}
+
 void MediaPipelineProxy::InitializeAudio(
     const ::media::AudioDecoderConfig& config,
     scoped_ptr<CodedFrameProvider> frame_provider,
     const ::media::PipelineStatusCB& status_cb) {
   DCHECK(thread_checker_.CalledOnValidThread());
-  has_audio_ = true;
+  DCHECK(has_audio_);
   audio_pipeline_->Initialize(config, std::move(frame_provider), status_cb);
 }
 
@@ -216,7 +223,7 @@
     scoped_ptr<CodedFrameProvider> frame_provider,
     const ::media::PipelineStatusCB& status_cb) {
   DCHECK(thread_checker_.CalledOnValidThread());
-  has_video_ = true;
+  DCHECK(has_video_);
   video_pipeline_->Initialize(configs, std::move(frame_provider), status_cb);
 }
 
diff --git a/chromecast/renderer/media/media_pipeline_proxy.h b/chromecast/renderer/media/media_pipeline_proxy.h
index 8758926..c4d90bf 100644
--- a/chromecast/renderer/media/media_pipeline_proxy.h
+++ b/chromecast/renderer/media/media_pipeline_proxy.h
@@ -10,6 +10,7 @@
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/threading/thread_checker.h"
+#include "chromecast/common/media/cma_ipc_common.h"
 #include "chromecast/media/cma/pipeline/load_type.h"
 #include "chromecast/media/cma/pipeline/media_pipeline_client.h"
 #include "media/base/audio_decoder_config.h"
@@ -39,6 +40,7 @@
   void SetCdm(int cdm_id);
   AudioPipelineProxy* GetAudioPipeline() const;
   VideoPipelineProxy* GetVideoPipeline() const;
+  void Initialize(AvailableTracks available_tracks);
   void InitializeAudio(const ::media::AudioDecoderConfig& config,
                        scoped_ptr<CodedFrameProvider> frame_provider,
                        const ::media::PipelineStatusCB& status_cb);
@@ -59,6 +61,7 @@
   scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
 
   const int render_frame_id_;
+  const LoadType load_type_;
 
   // CMA channel to convey IPC messages.
   scoped_refptr<MediaChannelProxy> const media_channel_proxy_;
diff --git a/components/scheduler/base/task_queue_manager.cc b/components/scheduler/base/task_queue_manager.cc
index 188413c..fcbabe4 100644
--- a/components/scheduler/base/task_queue_manager.cc
+++ b/components/scheduler/base/task_queue_manager.cc
@@ -9,6 +9,7 @@
 
 #include "base/bind.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/trace_event/trace_event.h"
 #include "components/scheduler/base/real_time_domain.h"
 #include "components/scheduler/base/task_queue_impl.h"
 #include "components/scheduler/base/task_queue_manager_delegate.h"
diff --git a/content/common/gpu/ca_layer_tree_mac.mm b/content/common/gpu/ca_layer_tree_mac.mm
index cac3dfe9..e84a44a1 100644
--- a/content/common/gpu/ca_layer_tree_mac.mm
+++ b/content/common/gpu/ca_layer_tree_mac.mm
@@ -233,7 +233,7 @@
   // mask refers to what appears as the bottom edge on-screen. For CALayers
   // without content (solid color layers), the top edge in the AA mask is the
   // top edge on-screen.
-  // http://crbug.com/567946
+  // https://crbug.com/567946
   if (edge_aa_mask & GL_CA_LAYER_EDGE_LEFT_CHROMIUM)
     ca_edge_aa_mask |= kCALayerLeftEdge;
   if (edge_aa_mask & GL_CA_LAYER_EDGE_RIGHT_CHROMIUM)
@@ -255,7 +255,10 @@
   if (IOSurfaceGetPixelFormat(io_surface) ==
           kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange &&
       contents_rect == gfx::RectF(0, 0, 1, 1)) {
-    use_av_layer = true;
+    // Leave AVFoundation disabled for now while crashing and flashing bugs are
+    // being investigated.
+    // https://crbug.com/598243, https://crbug.com/598388
+    use_av_layer = false;
   }
 }
 
diff --git a/content/common/gpu/ca_layer_tree_unittest_mac.mm b/content/common/gpu/ca_layer_tree_unittest_mac.mm
index e7bd4221..49b8e74 100644
--- a/content/common/gpu/ca_layer_tree_unittest_mac.mm
+++ b/content/common/gpu/ca_layer_tree_unittest_mac.mm
@@ -783,7 +783,7 @@
     content_layer1 = [[transform_layer sublayers] objectAtIndex:0];
 
     // Validate the content layer.
-    EXPECT_TRUE([content_layer1
+    EXPECT_FALSE([content_layer1
         isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
   }
 
@@ -812,7 +812,7 @@
     content_layer2 = [[transform_layer sublayers] objectAtIndex:0];
 
     // Validate the content layer.
-    EXPECT_TRUE([content_layer2
+    EXPECT_FALSE([content_layer2
         isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
     EXPECT_EQ(content_layer2, content_layer1);
   }
@@ -845,7 +845,7 @@
     // Validate the content layer.
     EXPECT_FALSE([content_layer3
         isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
-    EXPECT_NE(content_layer3, content_layer2);
+    EXPECT_EQ(content_layer3, content_layer2);
   }
 }
 
diff --git a/device/BUILD.gn b/device/BUILD.gn
index a8870d3..17ab428 100644
--- a/device/BUILD.gn
+++ b/device/BUILD.gn
@@ -111,8 +111,8 @@
       "test/usb_test_gadget_impl.cc",
       "usb/mojo/device_impl_unittest.cc",
       "usb/mojo/device_manager_impl_unittest.cc",
-      "usb/mojo/fake_permission_provider.cc",
-      "usb/mojo/fake_permission_provider.h",
+      "usb/mojo/mock_permission_provider.cc",
+      "usb/mojo/mock_permission_provider.h",
       "usb/usb_descriptors_unittest.cc",
       "usb/usb_device_filter_unittest.cc",
       "usb/usb_device_handle_unittest.cc",
diff --git a/device/device_tests.gyp b/device/device_tests.gyp
index e477b112..141a76f 100644
--- a/device/device_tests.gyp
+++ b/device/device_tests.gyp
@@ -84,8 +84,8 @@
         'test/usb_test_gadget_impl.cc',
         'usb/mojo/device_impl_unittest.cc',
         'usb/mojo/device_manager_impl_unittest.cc',
-        'usb/mojo/fake_permission_provider.cc',
-        'usb/mojo/fake_permission_provider.h',
+        'usb/mojo/mock_permission_provider.cc',
+        'usb/mojo/mock_permission_provider.h',
         'usb/usb_descriptors_unittest.cc',
         'usb/usb_device_filter_unittest.cc',
         'usb/usb_device_handle_unittest.cc',
diff --git a/device/usb/mock_usb_device_handle.h b/device/usb/mock_usb_device_handle.h
index 2cacafb..086f882 100644
--- a/device/usb/mock_usb_device_handle.h
+++ b/device/usb/mock_usb_device_handle.h
@@ -64,8 +64,8 @@
                     size_t length,
                     unsigned int timeout,
                     const TransferCallback& callback));
-  MOCK_METHOD2(FindInterfaceByEndpoint,
-               bool(uint8_t endpoint_address, uint8_t* interface_number));
+  MOCK_METHOD1(FindInterfaceByEndpoint,
+               const UsbInterfaceDescriptor*(uint8_t endpoint_address));
 
  private:
   ~MockUsbDeviceHandle() override;
diff --git a/device/usb/mojo/device_impl.cc b/device/usb/mojo/device_impl.cc
index a2dd316..2dee033 100644
--- a/device/usb/mojo/device_impl.cc
+++ b/device/usb/mojo/device_impl.cc
@@ -165,15 +165,23 @@
     if (!config)
       return false;
 
-    uint8_t interface_number = index & 0xff;
-    if (recipient == ControlTransferRecipient::ENDPOINT &&
-        !device_handle_->FindInterfaceByEndpoint(index & 0xff,
-                                                 &interface_number)) {
-      return false;
+    const UsbInterfaceDescriptor* interface = nullptr;
+    if (recipient == ControlTransferRecipient::ENDPOINT) {
+      interface = device_handle_->FindInterfaceByEndpoint(index & 0xff);
+    } else {
+      auto interface_it =
+          std::find_if(config->interfaces.begin(), config->interfaces.end(),
+                       [index](const UsbInterfaceDescriptor& this_iface) {
+                         return this_iface.interface_number == (index & 0xff);
+                       });
+      if (interface_it != config->interfaces.end())
+        interface = &*interface_it;
     }
+    if (interface == nullptr)
+      return false;
 
-    return permission_provider_->HasInterfacePermission(
-        interface_number, config->configuration_value, *device_info_);
+    return permission_provider_->HasFunctionPermission(
+        interface->first_interface, config->configuration_value, *device_info_);
   } else if (config) {
     return permission_provider_->HasConfigurationPermission(
         config->configuration_value, *device_info_);
@@ -236,9 +244,20 @@
     return;
   }
 
+  auto interface_it =
+      std::find_if(config->interfaces.begin(), config->interfaces.end(),
+                   [interface_number](const UsbInterfaceDescriptor& interface) {
+                     return interface.interface_number == interface_number;
+                   });
+  if (interface_it == config->interfaces.end()) {
+    callback.Run(false);
+    return;
+  }
+
   if (permission_provider_ &&
-      permission_provider_->HasInterfacePermission(
-          interface_number, config->configuration_value, *device_info_)) {
+      permission_provider_->HasFunctionPermission(interface_it->first_interface,
+                                                  config->configuration_value,
+                                                  *device_info_)) {
     device_handle_->ClaimInterface(interface_number,
                                    WrapMojoCallback(callback));
   } else {
diff --git a/device/usb/mojo/device_impl_unittest.cc b/device/usb/mojo/device_impl_unittest.cc
index 78a1f85..7f99ce1e 100644
--- a/device/usb/mojo/device_impl_unittest.cc
+++ b/device/usb/mojo/device_impl_unittest.cc
@@ -22,7 +22,7 @@
 #include "base/stl_util.h"
 #include "device/usb/mock_usb_device.h"
 #include "device/usb/mock_usb_device_handle.h"
-#include "device/usb/mojo/fake_permission_provider.h"
+#include "device/usb/mojo/mock_permission_provider.h"
 #include "device/usb/mojo/type_converters.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
 #include "net/base/io_buffer.h"
@@ -152,6 +152,7 @@
   ~USBDeviceImplTest() override {}
 
  protected:
+  MockPermissionProvider& permission_provider() { return permission_provider_; }
   MockUsbDevice& mock_device() { return *mock_device_.get(); }
   bool is_device_open() const { return is_device_open_; }
   MockUsbDeviceHandle& mock_handle() { return *mock_handle_.get(); }
@@ -441,7 +442,7 @@
 
   std::set<uint8_t> claimed_interfaces_;
 
-  FakePermissionProvider permission_provider_;
+  MockPermissionProvider permission_provider_;
 
   DISALLOW_COPY_AND_ASSIGN(USBDeviceImplTest);
 };
@@ -532,6 +533,7 @@
   }
 
   EXPECT_CALL(mock_handle(), SetConfiguration(42, _));
+  EXPECT_CALL(permission_provider(), HasConfigurationPermission(42, _));
 
   {
     // SetConfiguration should fail because 42 is not a valid mock
@@ -558,6 +560,7 @@
   }
 
   EXPECT_CALL(mock_handle(), SetConfiguration(42, _));
+  EXPECT_CALL(permission_provider(), HasConfigurationPermission(42, _));
 
   AddMockConfig(ConfigBuilder(42));
 
@@ -625,6 +628,7 @@
   AddMockConfig(ConfigBuilder(1).AddInterface(1, 0, 1, 2, 3));
 
   EXPECT_CALL(mock_handle(), SetConfiguration(1, _));
+  EXPECT_CALL(permission_provider(), HasConfigurationPermission(1, _));
 
   {
     base::RunLoop loop;
@@ -634,7 +638,6 @@
   }
 
   EXPECT_CALL(mock_device(), GetActiveConfiguration());
-  EXPECT_CALL(mock_handle(), ClaimInterface(2, _));
 
   {
     // Try to claim an invalid interface and expect failure.
@@ -646,6 +649,7 @@
 
   EXPECT_CALL(mock_device(), GetActiveConfiguration());
   EXPECT_CALL(mock_handle(), ClaimInterface(1, _));
+  EXPECT_CALL(permission_provider(), HasFunctionPermission(1, 1, _));
 
   {
     base::RunLoop loop;
@@ -731,6 +735,7 @@
 
   EXPECT_CALL(mock_device(), GetActiveConfiguration());
   EXPECT_CALL(mock_handle(), SetConfiguration(1, _));
+  EXPECT_CALL(permission_provider(), HasConfigurationPermission(1, _));
 
   {
     base::RunLoop loop;
@@ -749,6 +754,7 @@
   EXPECT_CALL(mock_handle(),
               ControlTransfer(USB_DIRECTION_INBOUND, UsbDeviceHandle::STANDARD,
                               UsbDeviceHandle::DEVICE, 5, 6, 7, _, _, 0, _));
+  EXPECT_CALL(permission_provider(), HasConfigurationPermission(1, _));
 
   {
     auto params = ControlTransferParams::New();
@@ -771,6 +777,7 @@
   EXPECT_CALL(mock_handle(),
               ControlTransfer(USB_DIRECTION_OUTBOUND, UsbDeviceHandle::STANDARD,
                               UsbDeviceHandle::INTERFACE, 5, 6, 7, _, _, 0, _));
+  EXPECT_CALL(permission_provider(), HasFunctionPermission(7, 1, _));
 
   {
     auto params = ControlTransferParams::New();
diff --git a/device/usb/mojo/device_manager_impl_unittest.cc b/device/usb/mojo/device_manager_impl_unittest.cc
index 3a0d50c6..1129022 100644
--- a/device/usb/mojo/device_manager_impl_unittest.cc
+++ b/device/usb/mojo/device_manager_impl_unittest.cc
@@ -20,7 +20,7 @@
 #include "device/usb/mock_usb_device_handle.h"
 #include "device/usb/mock_usb_service.h"
 #include "device/usb/mojo/device_impl.h"
-#include "device/usb/mojo/fake_permission_provider.h"
+#include "device/usb/mojo/mock_permission_provider.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 using ::testing::Invoke;
@@ -47,7 +47,7 @@
   MockDeviceClient device_client_;
 
  private:
-  FakePermissionProvider permission_provider_;
+  MockPermissionProvider permission_provider_;
   scoped_ptr<base::MessageLoop> message_loop_;
 };
 
diff --git a/device/usb/mojo/fake_permission_provider.cc b/device/usb/mojo/fake_permission_provider.cc
deleted file mode 100644
index c100318..0000000
--- a/device/usb/mojo/fake_permission_provider.cc
+++ /dev/null
@@ -1,40 +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.
-
-#include "device/usb/mojo/fake_permission_provider.h"
-
-#include <stddef.h>
-#include <utility>
-
-namespace device {
-namespace usb {
-
-FakePermissionProvider::FakePermissionProvider() : weak_factory_(this) {}
-
-FakePermissionProvider::~FakePermissionProvider() {}
-
-base::WeakPtr<PermissionProvider> FakePermissionProvider::GetWeakPtr() {
-  return weak_factory_.GetWeakPtr();
-}
-
-bool FakePermissionProvider::HasDevicePermission(
-    const device::usb::DeviceInfo& device_info) const {
-  return true;
-}
-
-bool FakePermissionProvider::HasConfigurationPermission(
-    uint8_t requested_configuration,
-    const device::usb::DeviceInfo& device_info) const {
-  return true;
-}
-
-bool FakePermissionProvider::HasInterfacePermission(
-    uint8_t requested_interface,
-    uint8_t configuration_value,
-    const device::usb::DeviceInfo& device_info) const {
-  return true;
-}
-
-}  // namespace usb
-}  // namespace device
diff --git a/device/usb/mojo/fake_permission_provider.h b/device/usb/mojo/fake_permission_provider.h
deleted file mode 100644
index 8d038132..0000000
--- a/device/usb/mojo/fake_permission_provider.h
+++ /dev/null
@@ -1,36 +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.
-
-#ifndef DEVICE_USB_FAKE_PERMISSION_PROVIDER_H_
-#define DEVICE_USB_FAKE_PERMISSION_PROVIDER_H_
-
-#include <stdint.h>
-
-#include "base/memory/weak_ptr.h"
-#include "device/usb/mojo/permission_provider.h"
-
-namespace device {
-namespace usb {
-
-class FakePermissionProvider : public PermissionProvider {
- public:
-  FakePermissionProvider();
-  ~FakePermissionProvider() override;
-
-  base::WeakPtr<PermissionProvider> GetWeakPtr();
-  bool HasDevicePermission(const DeviceInfo& device_info) const override;
-  bool HasConfigurationPermission(uint8_t requested_configuration,
-                                  const DeviceInfo& device_info) const override;
-  bool HasInterfacePermission(uint8_t requested_interface,
-                              uint8_t configuration_value,
-                              const DeviceInfo& device_info) const override;
-
- private:
-  base::WeakPtrFactory<PermissionProvider> weak_factory_;
-};
-
-}  // namespace usb
-}  // namespace device
-
-#endif  // DEVICE_USB_FAKE_PERMISSION_PROVIDER_H_
diff --git a/device/usb/mojo/mock_permission_provider.cc b/device/usb/mojo/mock_permission_provider.cc
new file mode 100644
index 0000000..e45b0f6d
--- /dev/null
+++ b/device/usb/mojo/mock_permission_provider.cc
@@ -0,0 +1,31 @@
+// 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.
+
+#include "device/usb/mojo/mock_permission_provider.h"
+
+#include <stddef.h>
+#include <utility>
+
+#include "device/usb/public/interfaces/device.mojom.h"
+
+using ::testing::Return;
+using ::testing::_;
+
+namespace device {
+namespace usb {
+
+MockPermissionProvider::MockPermissionProvider() : weak_factory_(this) {
+  ON_CALL(*this, HasDevicePermission(_)).WillByDefault(Return(true));
+  ON_CALL(*this, HasConfigurationPermission(_, _)).WillByDefault(Return(true));
+  ON_CALL(*this, HasFunctionPermission(_, _, _)).WillByDefault(Return(true));
+}
+
+MockPermissionProvider::~MockPermissionProvider() {}
+
+base::WeakPtr<PermissionProvider> MockPermissionProvider::GetWeakPtr() {
+  return weak_factory_.GetWeakPtr();
+}
+
+}  // namespace usb
+}  // namespace device
diff --git a/device/usb/mojo/mock_permission_provider.h b/device/usb/mojo/mock_permission_provider.h
new file mode 100644
index 0000000..3e819df
--- /dev/null
+++ b/device/usb/mojo/mock_permission_provider.h
@@ -0,0 +1,39 @@
+// 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.
+
+#ifndef DEVICE_USB_MOJO_MOCK_PERMISSION_PROVIDER_H_
+#define DEVICE_USB_MOJO_MOCK_PERMISSION_PROVIDER_H_
+
+#include <stdint.h>
+
+#include "base/memory/weak_ptr.h"
+#include "device/usb/mojo/permission_provider.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace device {
+namespace usb {
+
+class MockPermissionProvider : public PermissionProvider {
+ public:
+  MockPermissionProvider();
+  ~MockPermissionProvider() override;
+
+  base::WeakPtr<PermissionProvider> GetWeakPtr();
+  MOCK_CONST_METHOD1(HasDevicePermission, bool(const DeviceInfo& device_info));
+  MOCK_CONST_METHOD2(HasConfigurationPermission,
+                     bool(uint8_t requested_configuration,
+                          const DeviceInfo& device_info));
+  MOCK_CONST_METHOD3(HasFunctionPermission,
+                     bool(uint8_t requested_function,
+                          uint8_t configuration_value,
+                          const DeviceInfo& device_info));
+
+ private:
+  base::WeakPtrFactory<PermissionProvider> weak_factory_;
+};
+
+}  // namespace usb
+}  // namespace device
+
+#endif  // DEVICE_USB_MOCK_MOJO_PERMISSION_PROVIDER_H_
diff --git a/device/usb/mojo/permission_provider.h b/device/usb/mojo/permission_provider.h
index 8366047..a58984c 100644
--- a/device/usb/mojo/permission_provider.h
+++ b/device/usb/mojo/permission_provider.h
@@ -23,9 +23,9 @@
   virtual bool HasConfigurationPermission(
       uint8_t requested_configuration,
       const DeviceInfo& device_info) const = 0;
-  virtual bool HasInterfacePermission(uint8_t requested_interface,
-                                      uint8_t configuration_value,
-                                      const DeviceInfo& device_info) const = 0;
+  virtual bool HasFunctionPermission(uint8_t requested_function,
+                                     uint8_t configuration_value,
+                                     const DeviceInfo& device_info) const = 0;
 };
 
 }  // namespace usb
diff --git a/device/usb/mojo/type_converters.cc b/device/usb/mojo/type_converters.cc
index b7bfd7fe..1761f0a 100644
--- a/device/usb/mojo/type_converters.cc
+++ b/device/usb/mojo/type_converters.cc
@@ -186,6 +186,7 @@
       // number, so add a new InterfaceInfo to the array and map the number.
       auto info = device::usb::InterfaceInfo::New();
       info->interface_number = interfaces[i].interface_number;
+      info->first_interface = interfaces[i].first_interface;
       iter = interface_map
                  .insert(
                      std::make_pair(interfaces[i].interface_number, info.get()))
diff --git a/device/usb/public/interfaces/device.mojom b/device/usb/public/interfaces/device.mojom
index 4b65a11..354c27e 100644
--- a/device/usb/public/interfaces/device.mojom
+++ b/device/usb/public/interfaces/device.mojom
@@ -58,6 +58,9 @@
 
 struct InterfaceInfo {
   uint8 interface_number;
+  // Interface number of the first interface in the function to which this
+  // interface belongs.
+  uint8 first_interface;
   array<AlternateInterfaceInfo> alternates;
 };
 
diff --git a/device/usb/usb_device_handle.h b/device/usb/usb_device_handle.h
index 31f0ec5..7222964 100644
--- a/device/usb/usb_device_handle.h
+++ b/device/usb/usb_device_handle.h
@@ -111,10 +111,10 @@
                                unsigned int timeout,
                                const TransferCallback& callback) = 0;
 
-  // Gets the interface containing |endpoint_address|. Returns false if no
+  // Gets the interface containing |endpoint_address|. Returns nullptr if no
   // claimed interface contains that endpoint.
-  virtual bool FindInterfaceByEndpoint(uint8_t endpoint_address,
-                                       uint8_t* interface_number) = 0;
+  virtual const UsbInterfaceDescriptor* FindInterfaceByEndpoint(
+      uint8_t endpoint_address) = 0;
 
  protected:
   friend class base::RefCountedThreadSafe<UsbDeviceHandle>;
diff --git a/device/usb/usb_device_handle_impl.cc b/device/usb/usb_device_handle_impl.cc
index cf6ebfb..276da10 100644
--- a/device/usb/usb_device_handle_impl.cc
+++ b/device/usb/usb_device_handle_impl.cc
@@ -756,15 +756,13 @@
   }
 }
 
-bool UsbDeviceHandleImpl::FindInterfaceByEndpoint(uint8_t endpoint_address,
-                                                  uint8_t* interface_number) {
+const UsbInterfaceDescriptor* UsbDeviceHandleImpl::FindInterfaceByEndpoint(
+    uint8_t endpoint_address) {
   DCHECK(thread_checker_.CalledOnValidThread());
   const auto endpoint_it = endpoint_map_.find(endpoint_address);
-  if (endpoint_it != endpoint_map_.end()) {
-    *interface_number = endpoint_it->second.interface_number;
-    return true;
-  }
-  return false;
+  if (endpoint_it != endpoint_map_.end())
+    return endpoint_it->second.interface;
+  return nullptr;
 }
 
 UsbDeviceHandleImpl::UsbDeviceHandleImpl(
@@ -908,8 +906,7 @@
         if (iface.interface_number == interface_number &&
             iface.alternate_setting == claimed_iface->alternate_setting()) {
           for (const UsbEndpointDescriptor& endpoint : iface.endpoints) {
-            endpoint_map_[endpoint.address] = {interface_number,
-                                               endpoint.transfer_type};
+            endpoint_map_[endpoint.address] = {&iface, &endpoint};
           }
           break;
         }
@@ -922,7 +919,7 @@
 UsbDeviceHandleImpl::GetClaimedInterfaceForEndpoint(uint8_t endpoint) {
   const auto endpoint_it = endpoint_map_.find(endpoint);
   if (endpoint_it != endpoint_map_.end())
-    return claimed_interfaces_[endpoint_it->second.interface_number];
+    return claimed_interfaces_[endpoint_it->second.interface->interface_number];
   return nullptr;
 }
 
@@ -1058,7 +1055,7 @@
   }
 
   scoped_ptr<Transfer> transfer;
-  UsbTransferType transfer_type = endpoint_it->second.transfer_type;
+  UsbTransferType transfer_type = endpoint_it->second.endpoint->transfer_type;
   if (transfer_type == USB_TRANSFER_BULK) {
     transfer = Transfer::CreateBulkTransfer(this, endpoint_address, buffer,
                                             static_cast<int>(length), timeout,
diff --git a/device/usb/usb_device_handle_impl.h b/device/usb/usb_device_handle_impl.h
index 0cb2311e..ed722bbd 100644
--- a/device/usb/usb_device_handle_impl.h
+++ b/device/usb/usb_device_handle_impl.h
@@ -32,8 +32,8 @@
 namespace device {
 
 struct EndpointMapValue {
-  int interface_number;
-  UsbTransferType transfer_type;
+  const UsbInterfaceDescriptor* interface;
+  const UsbEndpointDescriptor* endpoint;
 };
 
 class UsbContext;
@@ -91,8 +91,8 @@
                        size_t length,
                        unsigned int timeout,
                        const TransferCallback& callback) override;
-  bool FindInterfaceByEndpoint(uint8_t endpoint_address,
-                               uint8_t* interface_number) override;
+  const UsbInterfaceDescriptor* FindInterfaceByEndpoint(
+      uint8_t endpoint_address) override;
 
  protected:
   friend class UsbDeviceImpl;
diff --git a/device/usb/usb_device_handle_unittest.cc b/device/usb/usb_device_handle_unittest.cc
index 5fac40a..84072dcd 100644
--- a/device/usb/usb_device_handle_unittest.cc
+++ b/device/usb/usb_device_handle_unittest.cc
@@ -132,6 +132,16 @@
   handle->ClaimInterface(0, claim_interface.callback());
   ASSERT_TRUE(claim_interface.WaitForResult());
 
+  const UsbInterfaceDescriptor* interface =
+      handle->FindInterfaceByEndpoint(0x81);
+  EXPECT_TRUE(interface);
+  EXPECT_EQ(0, interface->interface_number);
+  interface = handle->FindInterfaceByEndpoint(0x01);
+  EXPECT_TRUE(interface);
+  EXPECT_EQ(0, interface->interface_number);
+  EXPECT_FALSE(handle->FindInterfaceByEndpoint(0x82));
+  EXPECT_FALSE(handle->FindInterfaceByEndpoint(0x02));
+
   scoped_refptr<net::IOBufferWithSize> in_buffer(new net::IOBufferWithSize(64));
   TestCompletionCallback in_completion;
   handle->GenericTransfer(USB_DIRECTION_INBOUND, 0x81, in_buffer.get(),
@@ -190,6 +200,16 @@
   handle->ClaimInterface(1, claim_interface.callback());
   ASSERT_TRUE(claim_interface.WaitForResult());
 
+  EXPECT_FALSE(handle->FindInterfaceByEndpoint(0x81));
+  EXPECT_FALSE(handle->FindInterfaceByEndpoint(0x01));
+  const UsbInterfaceDescriptor* interface =
+      handle->FindInterfaceByEndpoint(0x82);
+  EXPECT_TRUE(interface);
+  EXPECT_EQ(1, interface->interface_number);
+  interface = handle->FindInterfaceByEndpoint(0x02);
+  EXPECT_TRUE(interface);
+  EXPECT_EQ(1, interface->interface_number);
+
   scoped_refptr<net::IOBufferWithSize> in_buffer(
       new net::IOBufferWithSize(512));
   TestCompletionCallback in_completion;
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 8eef763..c6fc0dd7 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -93,6 +93,11 @@
 crbug.com/524236 virtual/spv2/paint/invalidation/spv2/updating-scrolling-content-as-text.html [ Failure ]
 crbug.com/524236 virtual/spv2/paint/invalidation/spv2/scrolling-without-painting-as-text.html [ Failure ]
 
+crbug.com/597517 fast/borders/bidi-002.html [ NeedsRebaseline ]
+crbug.com/597517 fast/borders/bidi-009a.html [ NeedsRebaseline ]
+crbug.com/597517 svg/text/text-layout-crash.html [ NeedsRebaseline ]
+crbug.com/597517 css2.1/20110323/replaced-intrinsic-003.htm [ NeedsRebaseline ]
+
 crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-cell-append.html [ Failure ]
 crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-cell-remove.html [ Failure ]
 crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-cell-border-width.html [ Failure ]
@@ -1217,33 +1222,6 @@
 crbug.com/599946 [ Win10 ] virtual/threaded/printing/standards-percentage-heights.html [ Missing ]
 crbug.com/599946 [ Win10 ] virtual/threaded/printing/subframes-percentage-height.html [ Missing ]
 
-# https://codereview.chromium.org/1847173002
-crbug.com/525142 [ Win10 ] fast/writing-mode/japanese-ruby-vertical-lr.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/repaint/japanese-rl-selection-clear.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/writing-mode/japanese-ruby-vertical-rl.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/text/decorations-with-text-combine.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/text/international/001.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/text/international/003.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] svg/W3C-SVG-1.1/text-intro-01-t.svg [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/text/international/vertical-text-metrics-test.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/text/justify-ideograph-leading-expansion.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] svg/W3C-SVG-1.1/text-intro-03-b.svg [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/text/emphasis-vertical.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/text/international/lang-glyph-cache-separation.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/inline/vertical-align-with-fallback-fonts.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/writing-mode/japanese-lr-selection.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/ruby/nested-ruby.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/writing-mode/text-combine-various-fonts.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/dynamic/text-combine.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/repaint/japanese-rl-selection-repaint.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/text/international/wrap-CJK-001.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/text/international/002.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/forms/month/month-appearance-l10n.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/writing-mode/japanese-rl-selection.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] svg/W3C-SVG-1.1/text-intro-04-t.svg [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/text/selection-multiple-runs.html [ NeedsRebaseline ]
-crbug.com/525142 [ Win10 ] fast/ruby/base-shorter-than-text.html [ NeedsRebaseline ]
-
 crbug.com/331582 [ Win ] fast/inline/justify-emphasis-inline-box.html [ Failure ]
 crbug.com/474759 fast/writing-mode/vertical-rl-replaced-selection.html [ Failure ]
 
diff --git a/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-normal-expected.txt b/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-normal-expected.txt
index 87a2323..3534050b 100644
--- a/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-normal-expected.txt
+++ b/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-normal-expected.txt
@@ -4,7 +4,7 @@
 Division
 Paragraph
 
-韓國한국
+韓國한국
 Coffee
 - black hot drink
 Milk
@@ -63,11 +63,11 @@
     AXRole: AXGroup
         AXRole: AXRuby
             AXRole: AXAnnotation
-                AXRole: AXStaticText "한국"
-                    AXRole: AXInlineTextBox "한국"
+                AXRole: AXStaticText "한국"
+                    AXRole: AXInlineTextBox "한국"
             AXRole: AXGroup
-                AXRole: AXStaticText "韓國"
-                    AXRole: AXInlineTextBox "韓國"
+                AXRole: AXStaticText "韓國"
+                    AXRole: AXInlineTextBox "韓國"
     AXRole: AXDescriptionList
         AXRole: AXDescriptionListTerm
             AXRole: AXStaticText "Coffee"
diff --git a/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-normal.html b/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-normal.html
index 55e57fdb..5bb84a5 100644
--- a/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-normal.html
+++ b/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-normal.html
@@ -1,4 +1,5 @@
 <html>
+<meta charset="utf-8">
 <script src="../resources/js-test.js"></script>
 <script src="../resources/accessibility-helper.js"></script>
 <header>This is a Header for this page</header>
diff --git a/third_party/WebKit/LayoutTests/css2.1/20110323/floats-001-expected.html b/third_party/WebKit/LayoutTests/css2.1/20110323/floats-001-expected.html
index 1e7d4ae..d321302 100644
--- a/third_party/WebKit/LayoutTests/css2.1/20110323/floats-001-expected.html
+++ b/third_party/WebKit/LayoutTests/css2.1/20110323/floats-001-expected.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
 
- <head>
+ <head><meta charset="utf-8"/>
 
   <title>CSS Reftest Reference</title>
 
diff --git a/third_party/WebKit/LayoutTests/css2.1/20110323/floats-001.html b/third_party/WebKit/LayoutTests/css2.1/20110323/floats-001.html
index 25196c0..27c3d2cd 100644
--- a/third_party/WebKit/LayoutTests/css2.1/20110323/floats-001.html
+++ b/third_party/WebKit/LayoutTests/css2.1/20110323/floats-001.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
-    <head>
+    <head><meta charset="utf-8"/>
         <title>CSS Test: Floats, shifting left until it touches container edge</title>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/">
         <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2012-07-02 -->
diff --git a/third_party/WebKit/LayoutTests/css2.1/20110323/floats-149-expected.html b/third_party/WebKit/LayoutTests/css2.1/20110323/floats-149-expected.html
index 3546447..e1e31a6 100644
--- a/third_party/WebKit/LayoutTests/css2.1/20110323/floats-149-expected.html
+++ b/third_party/WebKit/LayoutTests/css2.1/20110323/floats-149-expected.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
 
- <head>
+ <head><meta charset="utf-8"/>
 
   <title>CSS Reftest Reference</title>
 
diff --git a/third_party/WebKit/LayoutTests/css2.1/20110323/floats-149.htm b/third_party/WebKit/LayoutTests/css2.1/20110323/floats-149.htm
index 1a3d5b3..c0dc8ccb 100644
--- a/third_party/WebKit/LayoutTests/css2.1/20110323/floats-149.htm
+++ b/third_party/WebKit/LayoutTests/css2.1/20110323/floats-149.htm
@@ -1,5 +1,6 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
  <head> 
   <title>CSS Test: Empty inlines being displaced by floats</title>
   <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch">
@@ -22,4 +23,4 @@
    </div> 
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/third_party/WebKit/LayoutTests/css2.1/20110323/height-applies-to-010a-expected.html b/third_party/WebKit/LayoutTests/css2.1/20110323/height-applies-to-010a-expected.html
index 4ed01a998..c29819dc 100644
--- a/third_party/WebKit/LayoutTests/css2.1/20110323/height-applies-to-010a-expected.html
+++ b/third_party/WebKit/LayoutTests/css2.1/20110323/height-applies-to-010a-expected.html
@@ -56,4 +56,4 @@
   </ul>
 
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/third_party/WebKit/LayoutTests/css2.1/20110323/replaced-intrinsic-003.htm b/third_party/WebKit/LayoutTests/css2.1/20110323/replaced-intrinsic-003.htm
index 34021341..7a6a53e 100644
--- a/third_party/WebKit/LayoutTests/css2.1/20110323/replaced-intrinsic-003.htm
+++ b/third_party/WebKit/LayoutTests/css2.1/20110323/replaced-intrinsic-003.htm
@@ -1,6 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html lang="en">
  <head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>CSS Test: Replaced block elements (using &lt;object&gt;) and SVG intrinsic widths</title>
   <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch">
   <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/box/replaced/intrinsic/svg/003.html" type="text/html">
diff --git a/third_party/WebKit/LayoutTests/css2.1/20110323/word-spacing-characters-003-expected.html b/third_party/WebKit/LayoutTests/css2.1/20110323/word-spacing-characters-003-expected.html
index c882425..b5d4fa70 100644
--- a/third_party/WebKit/LayoutTests/css2.1/20110323/word-spacing-characters-003-expected.html
+++ b/third_party/WebKit/LayoutTests/css2.1/20110323/word-spacing-characters-003-expected.html
@@ -1,6 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
  <head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>CSS Test: word-spacing on Zero-Width Characters</title>
   <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
   <link rel="help" href="http://www.w3.org/TR/CSS21/text.html#spacing-props">
@@ -73,4 +74,4 @@
    </div>
 
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/third_party/WebKit/LayoutTests/css2.1/20110323/word-spacing-characters-003.htm b/third_party/WebKit/LayoutTests/css2.1/20110323/word-spacing-characters-003.htm
index 3e5db19..988efa6 100644
--- a/third_party/WebKit/LayoutTests/css2.1/20110323/word-spacing-characters-003.htm
+++ b/third_party/WebKit/LayoutTests/css2.1/20110323/word-spacing-characters-003.htm
@@ -1,6 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
  <head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>CSS Test: word-spacing on Zero-Width Characters</title>
   <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
   <link rel="help" href="http://www.w3.org/TR/CSS21/text.html#spacing-props">
@@ -74,4 +75,4 @@
    </div>
 
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/extend-byline-withfloat.html b/third_party/WebKit/LayoutTests/editing/selection/extend-byline-withfloat.html
index f4760e6..5952e3d9 100644
--- a/third_party/WebKit/LayoutTests/editing/selection/extend-byline-withfloat.html
+++ b/third_party/WebKit/LayoutTests/editing/selection/extend-byline-withfloat.html
@@ -1,5 +1,5 @@
 <html>
-<head>
+<head><meta charset="utf-8"/>
 <style>
 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{
     margin:0;
diff --git a/third_party/WebKit/LayoutTests/fast/borders/bidi-002.html b/third_party/WebKit/LayoutTests/fast/borders/bidi-002.html
index fdb3136..eaa392a3 100644
--- a/third_party/WebKit/LayoutTests/fast/borders/bidi-002.html
+++ b/third_party/WebKit/LayoutTests/fast/borders/bidi-002.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html lang="en">
- <head>
+ <head><meta charset="utf-8"/>
   <title>CSS Test: The bidi algorithm and inlines in CSS</title>
   <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch">
   <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/box/inline/bidi/002.html" type="text/html">
diff --git a/third_party/WebKit/LayoutTests/fast/borders/bidi-009a.html b/third_party/WebKit/LayoutTests/fast/borders/bidi-009a.html
index 148a3f3..19901b4 100644
--- a/third_party/WebKit/LayoutTests/fast/borders/bidi-009a.html
+++ b/third_party/WebKit/LayoutTests/fast/borders/bidi-009a.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html lang="en">
- <head>
+ <head><meta charset="utf-8"/>
   <title>CSS Test: The bidi algorithm and inlines in CSS: embed levels and display: table-row; </title>
   <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch">
   <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/box/inline/bidi/009.html" type="text/html">
diff --git a/third_party/WebKit/LayoutTests/fast/css-generated-content/quotes-lang-expected.html b/third_party/WebKit/LayoutTests/fast/css-generated-content/quotes-lang-expected.html
index f987f20..3417d15 100644
--- a/third_party/WebKit/LayoutTests/fast/css-generated-content/quotes-lang-expected.html
+++ b/third_party/WebKit/LayoutTests/fast/css-generated-content/quotes-lang-expected.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-
+<meta charset="utf-8">
 <style>
     /* This css is from http://www.whatwg.org/specs/web-apps/current-work/multipage/rendering.html#quotes */
 
diff --git a/third_party/WebKit/LayoutTests/fast/css/abs-pos-child-inside-rel-pos-inline-001.html b/third_party/WebKit/LayoutTests/fast/css/abs-pos-child-inside-rel-pos-inline-001.html
index 7012fba0..1af459a 100644
--- a/third_party/WebKit/LayoutTests/fast/css/abs-pos-child-inside-rel-pos-inline-001.html
+++ b/third_party/WebKit/LayoutTests/fast/css/abs-pos-child-inside-rel-pos-inline-001.html
@@ -1,4 +1,5 @@
 <!DOCTYPE HTML>
+<meta charset="utf-8">
 <link rel="author" title="Alan Gresley" href="alan[at]css-class.com">
 <link rel="author" title="Boris Zbarsky" href="bzbarsky[at]MIT.EDU">
 <link rel="author" title="Greg Whitworth" href="gwhit[at]microsoft.com">
diff --git a/third_party/WebKit/LayoutTests/fast/css/abs-pos-child-inside-rel-pos-inline-offset-001.html b/third_party/WebKit/LayoutTests/fast/css/abs-pos-child-inside-rel-pos-inline-offset-001.html
index a45bcff..2c36585 100644
--- a/third_party/WebKit/LayoutTests/fast/css/abs-pos-child-inside-rel-pos-inline-offset-001.html
+++ b/third_party/WebKit/LayoutTests/fast/css/abs-pos-child-inside-rel-pos-inline-offset-001.html
@@ -1,4 +1,5 @@
 <!DOCTYPE HTML>
+<meta charset="utf-8">
 <link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#containing-block-details">
 <link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width">
 <link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#relative-positioning">
diff --git a/third_party/WebKit/LayoutTests/fast/css/case-sensitive-003.xhtml b/third_party/WebKit/LayoutTests/fast/css/case-sensitive-003.xhtml
index fbf63c5a..1eaa79e 100644
--- a/third_party/WebKit/LayoutTests/fast/css/case-sensitive-003.xhtml
+++ b/third_party/WebKit/LayoutTests/fast/css/case-sensitive-003.xhtml
@@ -1,6 +1,6 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
+ <head><meta charset="utf-8"/>
   <title>CSS Test: Case-sensitivity of pseudo-classes and pseudo-elements</title>
   <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/"/>
   <link rel="help" href="http://www.w3.org/TR/CSS21/syndata.html#characters"/>
diff --git a/third_party/WebKit/LayoutTests/fast/css/case-sensitive-004.xhtml b/third_party/WebKit/LayoutTests/fast/css/case-sensitive-004.xhtml
index d20a2243..83b82e8 100644
--- a/third_party/WebKit/LayoutTests/fast/css/case-sensitive-004.xhtml
+++ b/third_party/WebKit/LayoutTests/fast/css/case-sensitive-004.xhtml
@@ -1,6 +1,6 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
+ <head><meta charset="utf-8"/>
   <title>CSS Test: Case-sensitivity of :lang() arguments</title>
   <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/"/>
   <link rel="help" href="http://www.w3.org/TR/CSS21/syndata.html#characters"/>
diff --git a/third_party/WebKit/LayoutTests/fast/css/content-property-quote-types.html b/third_party/WebKit/LayoutTests/fast/css/content-property-quote-types.html
index 6c493b82..2dccc3e1 100644
--- a/third_party/WebKit/LayoutTests/fast/css/content-property-quote-types.html
+++ b/third_party/WebKit/LayoutTests/fast/css/content-property-quote-types.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <style>
 #simple_quotes:before {
   content: open-quote "quoted A" close-quote;
diff --git a/third_party/WebKit/LayoutTests/fast/css/heightless-list-item.html b/third_party/WebKit/LayoutTests/fast/css/heightless-list-item.html
index e031fe8..d93d2a6 100644
--- a/third_party/WebKit/LayoutTests/fast/css/heightless-list-item.html
+++ b/third_party/WebKit/LayoutTests/fast/css/heightless-list-item.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
- <head>
+ <head><meta charset="utf-8"/>
   <title>CSS Test: height set to 0 to elements with 'display' set to 'list-item'</title>
 
   <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
diff --git a/third_party/WebKit/LayoutTests/fast/events/event-on-culled-inline-with-pseudo.html b/third_party/WebKit/LayoutTests/fast/events/event-on-culled-inline-with-pseudo.html
index a348372..b39b3e3 100644
--- a/third_party/WebKit/LayoutTests/fast/events/event-on-culled-inline-with-pseudo.html
+++ b/third_party/WebKit/LayoutTests/fast/events/event-on-culled-inline-with-pseudo.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <script src="../../resources/testharness.js"></script>
 <script src="../../resources/testharnessreport.js"></script>
 <style>
@@ -28,4 +29,4 @@
         assert_true(gotClick);
     });
 }, "Test if the click event is fired when hitting the culled inline element having the pseudo element :after as a child");
-</script>
\ No newline at end of file
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-attribute-parsing-03-expected.txt b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-attribute-parsing-03-expected.txt
index 83556a2..4b57fb2 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-attribute-parsing-03-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-attribute-parsing-03-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE ERROR: line 45: Error while parsing the 'sandbox' attribute: 'För', 'var', 'vers,', 'jag', 'gör,', 'Lovar', 'du', 'en', 'kyss', 'mig', 'giva;', 'Arket', 'fullt', 'jag', 'borde', 'skriva,', 'Mindre', 'har', 'jag', 'skrivit', 'för.', 'Men', 'man', 'måste', 'hålla', 'måtta,', 'Jag', 'med', 'vers,', 'med', 'kyssar', 'du.', 'Låt', 'mig', 'räkna:', 'Där', 'är', 'sju!', 'En', 'därtill', 'det', 'gör', 'mig', 'åtta.', 'Numro', 'åtta', 'är', 'fatal,', 'Greklands', 'sångmör', 'voro', 'nio,', 'Och', 'en', 'svensk', 'därtill', 'gör', 'tio.', '—', 'Elva', 'var', 'apostelns', 'tal,', 'Ty', 'jag', 'räknar', 'icke', 'Judas,', 'Honom,', 'som', 'i', 'vänners', 'lag', 'Kysste', 'falskt;', 'det', 'gör', 'ej', 'jag,', 'Helst', 'när', 'vackra', 'läppar', 'bjudas.', 'Huru', 'står', 'min', 'räkning', 'här?', 'Aderton;', 'det', 'är', 'dock', 'något.', 'Nitton', '—', 'rimmet', 'gör', 'besvär,', 'Därföre', 'jag', 'fyller', 'tjoget.', 'Strofen', 'är', 'ej', 'full', 'som', 'jag,', 'In', 'i', 'hamnen', 'vill', 'jag', 'styra,', 'Därföre', 'till', 'godo', 'tag', 'Denna', 'gång', 'med', 'tjugofyra.', ''Kyssarna'', '('The', 'kisses'),', 'Esaias', 'Tegnér,', '1782-1846', 'int', 'main(void)', '{', 'return', '0;', '}' are invalid sandbox flags.
+CONSOLE ERROR: line 45: Error while parsing the 'sandbox' attribute: 'För', 'var', 'vers,', 'jag', 'gör,', 'Lovar', 'du', 'en', 'kyss', 'mig', 'giva;', 'Arket', 'fullt', 'jag', 'borde', 'skriva,', 'Mindre', 'har', 'jag', 'skrivit', 'för.', 'Men', 'man', 'måste', 'hålla', 'måtta,', 'Jag', 'med', 'vers,', 'med', 'kyssar', 'du.', 'Låt', 'mig', 'räkna:', 'Där', 'är', 'sju!', 'En', 'därtill', 'det', 'gör', 'mig', 'åtta.', 'Numro', 'åtta', 'är', 'fatal,', 'Greklands', 'sångmör', 'voro', 'nio,', 'Och', 'en', 'svensk', 'därtill', 'gör', 'tio.', '—', 'Elva', 'var', 'apostelns', 'tal,', 'Ty', 'jag', 'räknar', 'icke', 'Judas,', 'Honom,', 'som', 'i', 'vänners', 'lag', 'Kysste', 'falskt;', 'det', 'gör', 'ej', 'jag,', 'Helst', 'när', 'vackra', 'läppar', 'bjudas.', 'Huru', 'står', 'min', 'räkning', 'här?', 'Aderton;', 'det', 'är', 'dock', 'något.', 'Nitton', '—', 'rimmet', 'gör', 'besvär,', 'Därföre', 'jag', 'fyller', 'tjoget.', 'Strofen', 'är', 'ej', 'full', 'som', 'jag,', 'In', 'i', 'hamnen', 'vill', 'jag', 'styra,', 'Därföre', 'till', 'godo', 'tag', 'Denna', 'gång', 'med', 'tjugofyra.', ''Kyssarna'', '('The', 'kisses'),', 'Esaias', 'Tegnér,', '1782-1846', 'int', 'main(void)', '{', 'return', '0;', '}' are invalid sandbox flags.
 CONSOLE ERROR: Blocked form submission to 'javascript:top.disallowedFormSubmitted();' because the form's frame is sandboxed and the 'allow-forms' permission is not set.
 Ridiculously long, invalid text (well, for these purposes at least) with non-ASCII characters surrounding attribute value
 
diff --git a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-attribute-parsing-03.html b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-attribute-parsing-03.html
index 9e347049..e2f3764a 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-attribute-parsing-03.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-attribute-parsing-03.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 <html>
-<head>
+<head><meta charset="utf-8"/>
     <script src='resources/sandboxed-iframe-attribute-test.js'></script>
 </head>
 <body>
diff --git a/third_party/WebKit/LayoutTests/fast/js/webidl-attribute-getter-setter-lengths.html b/third_party/WebKit/LayoutTests/fast/js/webidl-attribute-getter-setter-lengths.html
index cc83a79a..2e81d280f 100644
--- a/third_party/WebKit/LayoutTests/fast/js/webidl-attribute-getter-setter-lengths.html
+++ b/third_party/WebKit/LayoutTests/fast/js/webidl-attribute-getter-setter-lengths.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <script src="../../resources/js-test.js"></script>
 <script>
 
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/5-levels-of-nesting-crash-expected.txt b/third_party/WebKit/LayoutTests/fast/multicol/5-levels-of-nesting-crash-expected.txt
new file mode 100644
index 0000000..f3d9d80
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/multicol/5-levels-of-nesting-crash-expected.txt
@@ -0,0 +1,7 @@
+PASS if no crash or assertion failure.
+
+
+
+
+
+
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/5-levels-of-nesting-crash.html b/third_party/WebKit/LayoutTests/fast/multicol/5-levels-of-nesting-crash.html
new file mode 100644
index 0000000..4833f113
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/multicol/5-levels-of-nesting-crash.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<script>
+    if (window.testRunner)
+        testRunner.dumpAsText();
+</script>
+<p>PASS if no crash or assertion failure.</p>
+<div style="columns:1; line-height:6px;">
+    <div style="height:1px;"></div>
+    <div style="columns:1;">
+        <div style="height:6px; break-after:column;"></div>
+        <div style="columns:1;">
+            <div style="break-after:column;">
+                <br>
+            </div>
+            <div style="columns:1;">
+                <div style="break-after:column; columns:1;">
+                    <br>
+                    <br>
+                    <br>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div style="height:1px;"></div>
+</div>
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/line-in-next-row-in-fourth-inner-multicol-expected.html b/third_party/WebKit/LayoutTests/fast/multicol/line-in-next-row-in-fourth-inner-multicol-expected.html
new file mode 100644
index 0000000..61494ed
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/multicol/line-in-next-row-in-fourth-inner-multicol-expected.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<p>The word "PASS" should be seen below.</p>
+<div style="margin-left:20em; line-height:20px;">
+    PASS
+</div>
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/line-in-next-row-in-fourth-inner-multicol.html b/third_party/WebKit/LayoutTests/fast/multicol/line-in-next-row-in-fourth-inner-multicol.html
new file mode 100644
index 0000000..05de00f0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/multicol/line-in-next-row-in-fourth-inner-multicol.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<style>
+    * { column-gap:0; }
+</style>
+<p>The word "PASS" should be seen below.</p>
+<div style="columns:1; column-fill:auto; width:10em; height:28px; line-height:20px;">
+    <div style="height:8px;"></div>
+    <div style="columns:1; column-fill:auto; height:68px;">
+        <div style="height:20px;"></div>
+        <div style="columns:1; column-fill:auto; height:48px;">
+            <div style="columns:1;">
+                <br>PASS<br>
+            </div>
+        </div>
+    </div>
+</div>
diff --git a/third_party/WebKit/LayoutTests/fast/parser/smart-quotes-in-tag.html b/third_party/WebKit/LayoutTests/fast/parser/smart-quotes-in-tag.html
index 820201c..457596ff 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/smart-quotes-in-tag.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/smart-quotes-in-tag.html
@@ -1,3 +1,4 @@
+<meta charset="utf-8">
 <script>
 if (window.testRunner)
     testRunner.dumpAsText();
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006-expected.html
index 6446323..1def546 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: outline layout and non-replaced inline and vertical-rl writing-mode</title>
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com" />
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-14  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006.html
index b3e2b62..e5b610f 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: outline layout and inline-block and vertical-rl writing-mode</title>
 <link rel="match" href="reference/outline-inline-block-vrl-006.html" />
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com" />
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vlr-006-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vlr-006-expected.html
index dff2da63..28332d51 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vlr-006-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vlr-006-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: outline layout and non-replaced inline and vertical-lr writing-mode</title>
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com" />
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-14  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vlr-006.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vlr-006.html
index 62e4049..2e58311 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vlr-006.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vlr-006.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: outline layout and non-replaced inline and vertical-lr writing-mode</title>
 <link rel="match" href="reference/outline-inline-vlr-006.html" />
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com" />
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006-expected.html
index 0b7b55c..ed5605c 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: outline layout and non-replaced inline and vertical-rl writing-mode</title>
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com" />
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-14  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006.html
index 7609ff8..03ec08f3 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: outline layout and non-replaced inline and vertical-rl writing-mode</title>
 <link rel="match" href="reference/outline-inline-vrl-006.html" />
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com" />
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-001-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-001-expected.html
index 7c8c7410..693c862 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-001-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-001-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Reference</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-001.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-001.html
index 4ca56f77e..d097ada7 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-001.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-001.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Test: vertical-lr Table Row/Rowgroup/Cell Ordering</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-002-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-002-expected.html
index 9d5a556..5f24b57 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-002-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-002-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Reference</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-002.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-002.html
index f88f5e5..97cfa22 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-002.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-002.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Test: vertical-lr Table Column/Colgroup Ordering</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-003-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-003-expected.html
index 7c8c7410..693c862 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-003-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-003-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Reference</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-003.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-003.html
index d4b2b81..65201145 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-003.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-003.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Test: vertical-lr upright orientation Table Row/Rowgroup/Cell Ordering</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2016-01-19  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-004-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-004-expected.html
index 9d5a556..5f24b57 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-004-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vlr-004-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Reference</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-001-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-001-expected.html
index 7c8c7410..693c862 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-001-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-001-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Reference</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-001.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-001.html
index 5e1cd56..79e5315e 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-001.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-001.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Test: vertical-rl Table Row/Rowgroup/Cell Ordering</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-002-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-002-expected.html
index 9d5a556..5f24b57 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-002-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-002-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Reference</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-002.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-002.html
index 4ce5dac64..b058cd7d 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-002.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-002.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Test: vertical-rl Table Column/Colgroup Ordering</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-003-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-003-expected.html
index 7c8c7410..693c862 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-003-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-003-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Reference</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-003.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-003.html
index 94357ef..a42813d 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-003.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-003.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Test: vertical-rl upright orientation Table Row/Rowgroup/Cell Ordering</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2016-01-19  -->
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-004-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-004-expected.html
index 9d5a556..5f24b57 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-004-expected.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/table-progression-vrl-004-expected.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Reference</title>
 <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
 <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2016-01-15  -->
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm b/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm
index ab916c7..f265c16 100644
--- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>IDBCursor direction - index with keyrange</title>
 <link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
 <link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#cursor-iteration-operation">
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm b/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm
index 9ae7ef5..6bb1fbf 100644
--- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>IDBCursor direction - object store with keyrange</title>
 <link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
 <link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#cursor-iteration-operation">
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html
index d1da937..6a00bba 100644
--- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html
@@ -1,4 +1,5 @@
 <!doctype html>
+<meta charset="utf-8">
 <title>DOMException-throwing tests</title>
 <link rel=author title="Aryeh Gregor" href=ayg@aryeh.name>
 <div id=log></div>
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml
index bdafb07..35e99cf 100644
--- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml">
-<head>
+<head><meta charset="utf-8"/>
 <title>Document.getElementsByTagName</title>
 <script src="../../../../resources/testharness.js"></script>
 <script src="../../../../resources/testharnessreport.js"></script>
diff --git a/third_party/WebKit/LayoutTests/inspector/tracing-model-storage.html b/third_party/WebKit/LayoutTests/inspector/tracing-model-storage.html
index 295cc672..2cadd42 100644
--- a/third_party/WebKit/LayoutTests/inspector/tracing-model-storage.html
+++ b/third_party/WebKit/LayoutTests/inspector/tracing-model-storage.html
@@ -1,5 +1,5 @@
 <html>
-<head>
+<head><meta charset="utf-8"/>
 <script src="../http/tests/inspector/inspector-test.js"></script>
 <script src="../http/tests/inspector/timeline-test.js"></script>
 <script>
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/dynamic/text-combine-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/dynamic/text-combine-expected.png
index f5bc125..8e4dd48 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/dynamic/text-combine-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/dynamic/text-combine-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/dynamic/text-combine-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/dynamic/text-combine-expected.txt
index 50ebd51..e6b241d 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/dynamic/text-combine-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/dynamic/text-combine-expected.txt
@@ -1,24 +1,24 @@
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
-layer at (664,0) size 136x600
-  LayoutBlockFlow {HTML} at (0,0) size 136x600
-    LayoutBlockFlow {BODY} at (16,8) size 112x584
+layer at (658,0) size 142x600
+  LayoutBlockFlow {HTML} at (0,0) size 142x600
+    LayoutBlockFlow {BODY} at (16,8) size 118x584
       LayoutBlockFlow {P} at (0,0) size 18x584
         LayoutText {#text} at (0,0) size 17x230
           text run at (0,0) width 230: "These two lines should be identical:"
-      LayoutBlockFlow {DIV} at (34,0) size 39x584
-        LayoutText {#text} at (7,0) size 26x276
-          text run at (7,0) width 276: "\x{5E0C}\x{8584}\x{5316}\x{5F8C}\x{306E}1\x{682A}\x{5F53}\x{308A}\x{5229}\x{76CA}\x{304C}"
+      LayoutBlockFlow {DIV} at (34,0) size 42x584
+        LayoutText {#text} at (8,0) size 26x276
+          text run at (8,0) width 276: "\x{5E0C}\x{8584}\x{5316}\x{5F8C}\x{306E}1\x{682A}\x{5F53}\x{308A}\x{5229}\x{76CA}\x{304C}"
         LayoutInline {SPAN} at (0,0) size 26x24
-          LayoutTextCombine {#text} at (7,276) size 26x24
-            text run at (7,276) width 24: "3.667"
-        LayoutText {#text} at (7,300) size 26x144
-          text run at (7,300) width 144: "\x{30C9}\x{30EB}\x{3067}\x{3057}\x{305F}\x{3002}"
-      LayoutBlockFlow {DIV} at (73,0) size 39x584
-        LayoutText {#text} at (7,0) size 26x276
-          text run at (7,0) width 276: "\x{5E0C}\x{8584}\x{5316}\x{5F8C}\x{306E}1\x{682A}\x{5F53}\x{308A}\x{5229}\x{76CA}\x{304C}"
+          LayoutTextCombine {#text} at (8,276) size 26x24
+            text run at (8,276) width 24: "3.667"
+        LayoutText {#text} at (8,300) size 26x144
+          text run at (8,300) width 144: "\x{30C9}\x{30EB}\x{3067}\x{3057}\x{305F}\x{3002}"
+      LayoutBlockFlow {DIV} at (76,0) size 42x584
+        LayoutText {#text} at (8,0) size 26x276
+          text run at (8,0) width 276: "\x{5E0C}\x{8584}\x{5316}\x{5F8C}\x{306E}1\x{682A}\x{5F53}\x{308A}\x{5229}\x{76CA}\x{304C}"
         LayoutInline {SPAN} at (0,0) size 26x24
-          LayoutTextCombine {#text} at (7,276) size 26x24
-            text run at (7,276) width 24: "3.667"
-        LayoutText {#text} at (7,300) size 26x144
-          text run at (7,300) width 144: "\x{30C9}\x{30EB}\x{3067}\x{3057}\x{305F}\x{3002}"
+          LayoutTextCombine {#text} at (8,276) size 26x24
+            text run at (8,276) width 24: "3.667"
+        LayoutText {#text} at (8,300) size 26x144
+          text run at (8,300) width 144: "\x{30C9}\x{30EB}\x{3067}\x{3057}\x{305F}\x{3002}"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/month/month-appearance-l10n-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/month/month-appearance-l10n-expected.png
index be8094a4..83914adc 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/month/month-appearance-l10n-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/month/month-appearance-l10n-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/inline/vertical-align-with-fallback-fonts-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/inline/vertical-align-with-fallback-fonts-expected.png
index 94f536d..068c4798 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/inline/vertical-align-with-fallback-fonts-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/inline/vertical-align-with-fallback-fonts-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/japanese-rl-selection-clear-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/japanese-rl-selection-clear-expected.txt
index 28d2ef1..df9ee1f5 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/japanese-rl-selection-clear-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/japanese-rl-selection-clear-expected.txt
@@ -6,7 +6,7 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [374, 123, 398, 395]
+        [377, 123, 394, 395]
       ],
       "paintInvalidationClients": [
         "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/japanese-rl-selection-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/japanese-rl-selection-repaint-expected.txt
index 9dd6a57..ce50e9b5 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/japanese-rl-selection-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/japanese-rl-selection-repaint-expected.txt
@@ -6,7 +6,7 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [408, 23, 364, 544]
+        [377, 23, 394, 544]
       ],
       "paintInvalidationClients": [
         "LayoutBlockFlow HTML",
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/ruby/base-shorter-than-text-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/ruby/base-shorter-than-text-expected.png
index 3db2c8d..9eebb3fb 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/ruby/base-shorter-than-text-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/ruby/base-shorter-than-text-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/ruby/base-shorter-than-text-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/ruby/base-shorter-than-text-expected.txt
index 3ee2d8ca..fe05fd8 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/ruby/base-shorter-than-text-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/ruby/base-shorter-than-text-expected.txt
@@ -1,46 +1,46 @@
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x532
-  LayoutBlockFlow {HTML} at (0,0) size 800x532
-    LayoutBlockFlow {BODY} at (8,16) size 784x508
-      LayoutBlockFlow {P} at (0,0) size 784x92
+layer at (0,0) size 800x530
+  LayoutBlockFlow {HTML} at (0,0) size 800x530
+    LayoutBlockFlow {BODY} at (8,16) size 784x506
+      LayoutBlockFlow {P} at (0,0) size 784x91
         LayoutRuby (inline) {RUBY} at (0,0) size 144x53
-          LayoutRubyRun (anonymous) at (0,15) size 144x77
-            LayoutRubyText {RT} at (0,-22) size 144x39
-              LayoutText {#text} at (0,7) size 144x26
-                text run at (0,7) width 144: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}"
-            LayoutRubyBase (anonymous) at (0,0) size 144x77
-              LayoutText {#text} at (12,11) size 120x53
-                text run at (12,11) width 120: "\x{653B}\x{6BBB}"
+          LayoutRubyRun (anonymous) at (0,7) size 144x84
+            LayoutRubyText {RT} at (0,-17) size 144x42
+              LayoutText {#text} at (0,10) size 144x26
+                text run at (0,10) width 144: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}"
+            LayoutRubyBase (anonymous) at (0,0) size 144x84
+              LayoutText {#text} at (12,19) size 120x53
+                text run at (12,19) width 120: "\x{653B}\x{6BBB}"
         LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {P} at (0,108) size 784x92
+      LayoutBlockFlow {P} at (0,107) size 784x91
         LayoutRuby (inline) {RUBY} at (0,0) size 192x53
-          LayoutRubyRun (anonymous) at (0,15) size 192x77
-            LayoutRubyText {RT} at (0,-22) size 192x39
-              LayoutText {#text} at (0,7) size 192x26
-                text run at (0,7) width 192: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}\x{3069}\x{3046}"
-            LayoutRubyBase (anonymous) at (0,0) size 192x77
-              LayoutText {#text} at (8,11) size 176x53
-                text run at (8,11) width 176: "\x{6A5F}\x{52D5}\x{968A}"
+          LayoutRubyRun (anonymous) at (0,7) size 192x84
+            LayoutRubyText {RT} at (0,-17) size 192x42
+              LayoutText {#text} at (0,10) size 192x26
+                text run at (0,10) width 192: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}\x{3069}\x{3046}"
+            LayoutRubyBase (anonymous) at (0,0) size 192x84
+              LayoutText {#text} at (8,19) size 176x53
+                text run at (8,19) width 176: "\x{6A5F}\x{52D5}\x{968A}"
         LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {DIV} at (0,216) size 232x292
-        LayoutBlockFlow {P} at (16,0) size 92x292
+      LayoutBlockFlow {DIV} at (0,214) size 238x292
+        LayoutBlockFlow {P} at (16,0) size 95x292
           LayoutRuby (inline) {RUBY} at (0,0) size 53x144
-            LayoutRubyRun (anonymous) at (15,0) size 77x144
-              LayoutRubyText {RT} at (-22,0) size 39x144
-                LayoutText {#text} at (7,0) size 26x144
-                  text run at (7,0) width 144: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}"
-              LayoutRubyBase (anonymous) at (0,0) size 77x144
-                LayoutText {#text} at (11,12) size 53x120
-                  text run at (11,12) width 120: "\x{653B}\x{6BBB}"
+            LayoutRubyRun (anonymous) at (11,0) size 84x144
+              LayoutRubyText {RT} at (-19,0) size 42x144
+                LayoutText {#text} at (8,0) size 26x144
+                  text run at (8,0) width 144: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 84x144
+                LayoutText {#text} at (15,12) size 53x120
+                  text run at (15,12) width 120: "\x{653B}\x{6BBB}"
           LayoutText {#text} at (0,0) size 0x0
-        LayoutBlockFlow {P} at (124,0) size 92x292
+        LayoutBlockFlow {P} at (127,0) size 95x292
           LayoutRuby (inline) {RUBY} at (0,0) size 53x192
-            LayoutRubyRun (anonymous) at (15,0) size 77x192
-              LayoutRubyText {RT} at (-22,0) size 39x192
-                LayoutText {#text} at (7,0) size 26x192
-                  text run at (7,0) width 192: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}\x{3069}\x{3046}"
-              LayoutRubyBase (anonymous) at (0,0) size 77x192
-                LayoutText {#text} at (11,8) size 53x176
-                  text run at (11,8) width 176: "\x{6A5F}\x{52D5}\x{968A}"
+            LayoutRubyRun (anonymous) at (11,0) size 84x192
+              LayoutRubyText {RT} at (-19,0) size 42x192
+                LayoutText {#text} at (8,0) size 26x192
+                  text run at (8,0) width 192: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}\x{3069}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 84x192
+                LayoutText {#text} at (15,8) size 53x176
+                  text run at (15,8) width 176: "\x{6A5F}\x{52D5}\x{968A}"
           LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/ruby/nested-ruby-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/ruby/nested-ruby-expected.png
index daa558d..a682cb3bb 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/ruby/nested-ruby-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/ruby/nested-ruby-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/ruby/nested-ruby-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/ruby/nested-ruby-expected.txt
index b10f662..15cb7407 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/ruby/nested-ruby-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/ruby/nested-ruby-expected.txt
@@ -1,48 +1,48 @@
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x78
-  LayoutBlockFlow {HTML} at (0,0) size 800x78
-    LayoutBlockFlow {BODY} at (8,16) size 784x46
-      LayoutBlockFlow {P} at (0,0) size 784x46
+layer at (0,0) size 800x80
+  LayoutBlockFlow {HTML} at (0,0) size 800x80
+    LayoutBlockFlow {BODY} at (8,16) size 784x48
+      LayoutBlockFlow {P} at (0,0) size 784x48
         LayoutRuby (inline) {RUBY} at (0,0) size 88x17
-          LayoutRubyRun (anonymous) at (0,12) size 88x34
-            LayoutRubyText {RT} at (0,-12) size 88x12
+          LayoutRubyRun (anonymous) at (0,14) size 88x34
+            LayoutRubyText {RT} at (0,-14) size 88x12
               LayoutText {#text} at (14,0) size 60x12
                 text run at (14,0) width 60: "K\x{14D}kakukid\x{14D}tai"
             LayoutRubyBase (anonymous) at (0,0) size 88x34
               LayoutRuby (inline) {RUBY} at (0,0) size 88x17
-                LayoutRubyRun (anonymous) at (0,8) size 18x26
-                  LayoutRubyText {RT} at (0,-8) size 18x15
-                    LayoutText {#text} at (0,0) size 18x12
-                      text run at (0,0) width 18: "\x{3053}\x{3046}"
-                  LayoutRubyBase (anonymous) at (0,0) size 18x26
-                    LayoutText {#text} at (1,4) size 16x17
-                      text run at (1,4) width 16: "\x{653B}"
-                LayoutRubyRun (anonymous) at (18,8) size 18x26
-                  LayoutRubyText {RT} at (0,-8) size 18x15
-                    LayoutText {#text} at (0,0) size 18x12
-                      text run at (0,0) width 18: "\x{304B}\x{304F}"
-                  LayoutRubyBase (anonymous) at (0,0) size 18x26
-                    LayoutText {#text} at (1,4) size 16x17
-                      text run at (1,4) width 16: "\x{6BBB}"
-                LayoutRubyRun (anonymous) at (36,8) size 16x26
-                  LayoutRubyText {RT} at (0,-8) size 16x15
-                    LayoutText {#text} at (3,0) size 10x12
-                      text run at (3,0) width 10: "\x{304D}"
-                  LayoutRubyBase (anonymous) at (0,0) size 16x26
-                    LayoutText {#text} at (0,4) size 16x17
-                      text run at (0,4) width 16: "\x{6A5F}"
-                LayoutRubyRun (anonymous) at (52,8) size 18x26
-                  LayoutRubyText {RT} at (0,-8) size 18x15
-                    LayoutText {#text} at (0,0) size 18x12
-                      text run at (0,0) width 18: "\x{3069}\x{3046}"
-                  LayoutRubyBase (anonymous) at (0,0) size 18x26
-                    LayoutText {#text} at (1,4) size 16x17
-                      text run at (1,4) width 16: "\x{52D5}"
-                LayoutRubyRun (anonymous) at (70,8) size 18x26
-                  LayoutRubyText {RT} at (0,-8) size 18x15
-                    LayoutText {#text} at (0,0) size 18x12
-                      text run at (0,0) width 18: "\x{305F}\x{3044}"
-                  LayoutRubyBase (anonymous) at (0,0) size 18x26
-                    LayoutText {#text} at (1,4) size 16x17
-                      text run at (1,4) width 16: "\x{968A}"
+                LayoutRubyRun (anonymous) at (0,6) size 18x28
+                  LayoutRubyText {RT} at (0,-8) size 18x16
+                    LayoutText {#text} at (0,2) size 18x12
+                      text run at (0,2) width 18: "\x{3053}\x{3046}"
+                  LayoutRubyBase (anonymous) at (0,0) size 18x28
+                    LayoutText {#text} at (1,6) size 16x17
+                      text run at (1,6) width 16: "\x{653B}"
+                LayoutRubyRun (anonymous) at (18,6) size 18x28
+                  LayoutRubyText {RT} at (0,-8) size 18x16
+                    LayoutText {#text} at (0,2) size 18x12
+                      text run at (0,2) width 18: "\x{304B}\x{304F}"
+                  LayoutRubyBase (anonymous) at (0,0) size 18x28
+                    LayoutText {#text} at (1,6) size 16x17
+                      text run at (1,6) width 16: "\x{6BBB}"
+                LayoutRubyRun (anonymous) at (36,6) size 16x28
+                  LayoutRubyText {RT} at (0,-8) size 16x16
+                    LayoutText {#text} at (3,2) size 10x12
+                      text run at (3,2) width 10: "\x{304D}"
+                  LayoutRubyBase (anonymous) at (0,0) size 16x28
+                    LayoutText {#text} at (0,6) size 16x17
+                      text run at (0,6) width 16: "\x{6A5F}"
+                LayoutRubyRun (anonymous) at (52,6) size 18x28
+                  LayoutRubyText {RT} at (0,-8) size 18x16
+                    LayoutText {#text} at (0,2) size 18x12
+                      text run at (0,2) width 18: "\x{3069}\x{3046}"
+                  LayoutRubyBase (anonymous) at (0,0) size 18x28
+                    LayoutText {#text} at (1,6) size 16x17
+                      text run at (1,6) width 16: "\x{52D5}"
+                LayoutRubyRun (anonymous) at (70,6) size 18x28
+                  LayoutRubyText {RT} at (0,-8) size 18x16
+                    LayoutText {#text} at (0,2) size 18x12
+                      text run at (0,2) width 18: "\x{305F}\x{3044}"
+                  LayoutRubyBase (anonymous) at (0,0) size 18x28
+                    LayoutText {#text} at (1,6) size 16x17
+                      text run at (1,6) width 16: "\x{968A}"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/decorations-with-text-combine-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/decorations-with-text-combine-expected.png
index dcdd3fe..6a3800d 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/decorations-with-text-combine-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/decorations-with-text-combine-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/decorations-with-text-combine-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/decorations-with-text-combine-expected.txt
index b13c6e9..d5d1b1e 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/decorations-with-text-combine-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/decorations-with-text-combine-expected.txt
@@ -3,119 +3,119 @@
 layer at (0,0) size 800x600
   LayoutBlockFlow {HTML} at (0,0) size 800x600
     LayoutBlockFlow {BODY} at (8,8) size 782x584
-      LayoutBlockFlow {DIV} at (0,0) size 88x584
-        LayoutBlockFlow {DIV} at (0,0) size 39x584
-          LayoutText {#text} at (7,0) size 26x72
-            text run at (7,0) width 72: "\x{305D}\x{306E}\x{5973}"
+      LayoutBlockFlow {DIV} at (0,0) size 94x584
+        LayoutBlockFlow {DIV} at (0,0) size 42x584
+          LayoutText {#text} at (8,0) size 26x72
+            text run at (8,0) width 72: "\x{305D}\x{306E}\x{5973}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,72) size 26x24
-              text run at (7,72) width 24: "1"
-          LayoutText {#text} at (7,96) size 26x48
-            text run at (7,96) width 48: "\x{304C}\x{306D}"
+            LayoutTextCombine {#text} at (8,72) size 26x24
+              text run at (8,72) width 24: "1"
+          LayoutText {#text} at (8,96) size 26x48
+            text run at (8,96) width 48: "\x{304C}\x{306D}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,144) size 26x24
-              text run at (7,144) width 24: "123"
-          LayoutText {#text} at (7,168) size 26x120
-            text run at (7,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
+            LayoutTextCombine {#text} at (8,144) size 26x24
+              text run at (8,144) width 24: "123"
+          LayoutText {#text} at (8,168) size 26x120
+            text run at (8,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,288) size 26x24
-              text run at (7,288) width 24: "12345"
-          LayoutText {#text} at (7,312) size 26x168
-            text run at (7,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
-        LayoutBlockFlow {DIV} at (49,0) size 39x584
-          LayoutText {#text} at (7,0) size 26x72
-            text run at (7,0) width 72: "\x{305D}\x{306E}\x{5973}"
+            LayoutTextCombine {#text} at (8,288) size 26x24
+              text run at (8,288) width 24: "12345"
+          LayoutText {#text} at (8,312) size 26x168
+            text run at (8,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
+        LayoutBlockFlow {DIV} at (52,0) size 42x584
+          LayoutText {#text} at (8,0) size 26x72
+            text run at (8,0) width 72: "\x{305D}\x{306E}\x{5973}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,72) size 26x24
-              text run at (7,72) width 24: "1"
-          LayoutText {#text} at (7,96) size 26x48
-            text run at (7,96) width 48: "\x{304C}\x{306D}"
+            LayoutTextCombine {#text} at (8,72) size 26x24
+              text run at (8,72) width 24: "1"
+          LayoutText {#text} at (8,96) size 26x48
+            text run at (8,96) width 48: "\x{304C}\x{306D}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,144) size 26x24
-              text run at (7,144) width 24: "123"
-          LayoutText {#text} at (7,168) size 26x120
-            text run at (7,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
+            LayoutTextCombine {#text} at (8,144) size 26x24
+              text run at (8,144) width 24: "123"
+          LayoutText {#text} at (8,168) size 26x120
+            text run at (8,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,288) size 26x24
-              text run at (7,288) width 24: "12345"
-          LayoutText {#text} at (7,312) size 26x168
-            text run at (7,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
-      LayoutBlockFlow {DIV} at (98,0) size 88x584
-        LayoutBlockFlow {DIV} at (0,0) size 39x584
-          LayoutText {#text} at (7,0) size 26x72
-            text run at (7,0) width 72: "\x{305D}\x{306E}\x{5973}"
+            LayoutTextCombine {#text} at (8,288) size 26x24
+              text run at (8,288) width 24: "12345"
+          LayoutText {#text} at (8,312) size 26x168
+            text run at (8,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
+      LayoutBlockFlow {DIV} at (104,0) size 94x584
+        LayoutBlockFlow {DIV} at (0,0) size 42x584
+          LayoutText {#text} at (8,0) size 26x72
+            text run at (8,0) width 72: "\x{305D}\x{306E}\x{5973}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,72) size 26x24
-              text run at (7,72) width 24: "1"
-          LayoutText {#text} at (7,96) size 26x48
-            text run at (7,96) width 48: "\x{304C}\x{306D}"
+            LayoutTextCombine {#text} at (8,72) size 26x24
+              text run at (8,72) width 24: "1"
+          LayoutText {#text} at (8,96) size 26x48
+            text run at (8,96) width 48: "\x{304C}\x{306D}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,144) size 26x24
-              text run at (7,144) width 24: "123"
-          LayoutText {#text} at (7,168) size 26x120
-            text run at (7,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
+            LayoutTextCombine {#text} at (8,144) size 26x24
+              text run at (8,144) width 24: "123"
+          LayoutText {#text} at (8,168) size 26x120
+            text run at (8,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,288) size 26x24
-              text run at (7,288) width 24: "12345"
-          LayoutText {#text} at (7,312) size 26x168
-            text run at (7,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
-        LayoutBlockFlow {DIV} at (49,0) size 39x584
-          LayoutText {#text} at (7,0) size 26x72
-            text run at (7,0) width 72: "\x{305D}\x{306E}\x{5973}"
+            LayoutTextCombine {#text} at (8,288) size 26x24
+              text run at (8,288) width 24: "12345"
+          LayoutText {#text} at (8,312) size 26x168
+            text run at (8,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
+        LayoutBlockFlow {DIV} at (52,0) size 42x584
+          LayoutText {#text} at (8,0) size 26x72
+            text run at (8,0) width 72: "\x{305D}\x{306E}\x{5973}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,72) size 26x24
-              text run at (7,72) width 24: "1"
-          LayoutText {#text} at (7,96) size 26x48
-            text run at (7,96) width 48: "\x{304C}\x{306D}"
+            LayoutTextCombine {#text} at (8,72) size 26x24
+              text run at (8,72) width 24: "1"
+          LayoutText {#text} at (8,96) size 26x48
+            text run at (8,96) width 48: "\x{304C}\x{306D}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,144) size 26x24
-              text run at (7,144) width 24: "123"
-          LayoutText {#text} at (7,168) size 26x120
-            text run at (7,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
+            LayoutTextCombine {#text} at (8,144) size 26x24
+              text run at (8,144) width 24: "123"
+          LayoutText {#text} at (8,168) size 26x120
+            text run at (8,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,288) size 26x24
-              text run at (7,288) width 24: "12345"
-          LayoutText {#text} at (7,312) size 26x168
-            text run at (7,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
-      LayoutBlockFlow {DIV} at (196,0) size 88x584
-        LayoutBlockFlow {DIV} at (0,0) size 39x584
-          LayoutText {#text} at (7,0) size 26x72
-            text run at (7,0) width 72: "\x{305D}\x{306E}\x{5973}"
+            LayoutTextCombine {#text} at (8,288) size 26x24
+              text run at (8,288) width 24: "12345"
+          LayoutText {#text} at (8,312) size 26x168
+            text run at (8,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
+      LayoutBlockFlow {DIV} at (208,0) size 94x584
+        LayoutBlockFlow {DIV} at (0,0) size 42x584
+          LayoutText {#text} at (8,0) size 26x72
+            text run at (8,0) width 72: "\x{305D}\x{306E}\x{5973}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,72) size 26x24
-              text run at (7,72) width 24: "1"
-          LayoutText {#text} at (7,96) size 26x48
-            text run at (7,96) width 48: "\x{304C}\x{306D}"
+            LayoutTextCombine {#text} at (8,72) size 26x24
+              text run at (8,72) width 24: "1"
+          LayoutText {#text} at (8,96) size 26x48
+            text run at (8,96) width 48: "\x{304C}\x{306D}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,144) size 26x24
-              text run at (7,144) width 24: "123"
-          LayoutText {#text} at (7,168) size 26x120
-            text run at (7,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
+            LayoutTextCombine {#text} at (8,144) size 26x24
+              text run at (8,144) width 24: "123"
+          LayoutText {#text} at (8,168) size 26x120
+            text run at (8,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,288) size 26x24
-              text run at (7,288) width 24: "12345"
-          LayoutText {#text} at (7,312) size 26x168
-            text run at (7,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
-        LayoutBlockFlow {DIV} at (49,0) size 39x584
-          LayoutText {#text} at (7,0) size 26x72
-            text run at (7,0) width 72: "\x{305D}\x{306E}\x{5973}"
+            LayoutTextCombine {#text} at (8,288) size 26x24
+              text run at (8,288) width 24: "12345"
+          LayoutText {#text} at (8,312) size 26x168
+            text run at (8,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
+        LayoutBlockFlow {DIV} at (52,0) size 42x584
+          LayoutText {#text} at (8,0) size 26x72
+            text run at (8,0) width 72: "\x{305D}\x{306E}\x{5973}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,72) size 26x24
-              text run at (7,72) width 24: "1"
-          LayoutText {#text} at (7,96) size 26x48
-            text run at (7,96) width 48: "\x{304C}\x{306D}"
+            LayoutTextCombine {#text} at (8,72) size 26x24
+              text run at (8,72) width 24: "1"
+          LayoutText {#text} at (8,96) size 26x48
+            text run at (8,96) width 48: "\x{304C}\x{306D}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,144) size 26x24
-              text run at (7,144) width 24: "123"
-          LayoutText {#text} at (7,168) size 26x120
-            text run at (7,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
+            LayoutTextCombine {#text} at (8,144) size 26x24
+              text run at (8,144) width 24: "123"
+          LayoutText {#text} at (8,168) size 26x120
+            text run at (8,168) width 120: "\x{304B}\x{3057}\x{3064}\x{3051}\x{306B}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
-            LayoutTextCombine {#text} at (7,288) size 26x24
-              text run at (7,288) width 24: "12345"
-          LayoutText {#text} at (7,312) size 26x168
-            text run at (7,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
-      LayoutBlockFlow {DIV} at (294,0) size 102x584
-        LayoutBlockFlow {DIV} at (0,0) size 46x584
+            LayoutTextCombine {#text} at (8,288) size 26x24
+              text run at (8,288) width 24: "12345"
+          LayoutText {#text} at (8,312) size 26x168
+            text run at (8,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
+      LayoutBlockFlow {DIV} at (312,0) size 106x584
+        LayoutBlockFlow {DIV} at (0,0) size 48x584
           LayoutText {#text} at (14,0) size 26x72
             text run at (14,0) width 72: "\x{305D}\x{306E}\x{5973}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
@@ -133,7 +133,7 @@
               text run at (14,288) width 24: "12345"
           LayoutText {#text} at (14,312) size 26x168
             text run at (14,312) width 168: "\x{6765}\x{3066}\x{304F}\x{308C}\x{308B}\x{307E}\x{3067}"
-        LayoutBlockFlow {DIV} at (56,0) size 46x584
+        LayoutBlockFlow {DIV} at (58,0) size 48x584
           LayoutText {#text} at (14,0) size 26x72
             text run at (14,0) width 72: "\x{305D}\x{306E}\x{5973}"
           LayoutInline {SPAN} at (0,0) size 26x24 [color=#0000FF]
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/emphasis-vertical-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/emphasis-vertical-expected.png
index 5d5eb6b..608a4df 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/emphasis-vertical-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/emphasis-vertical-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/emphasis-vertical-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/emphasis-vertical-expected.txt
index 3964dc18..ca69d126 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/emphasis-vertical-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/emphasis-vertical-expected.txt
@@ -1,121 +1,121 @@
-layer at (0,0) size 800x600
+layer at (0,0) size 800x600 scrollX 18.00 scrollWidth 818
   LayoutView at (0,0) size 800x600
-layer at (5,0) size 795x600
-  LayoutBlockFlow {HTML} at (0,0) size 795x600
+layer at (-18,0) size 818x600 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 818x600
     LayoutBlockFlow {BODY} at (8,8) size 0x584
-      LayoutBlockFlow (floating) {DIV} at (8,8) size 178x366 [border: (3px solid #000000)]
-        LayoutText {#text} at (15,3) size 23x270
+      LayoutBlockFlow (floating) {DIV} at (8,8) size 186x366 [border: (3px solid #000000)]
+        LayoutText {#text} at (15,3) size 24x270
           text run at (15,3) width 270: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}"
-        LayoutInline {SPAN} at (0,0) size 58x360
-          LayoutText {#text} at (15,273) size 58x360
-            text run at (15,273) width 90: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}"
-            text run at (50,3) width 144: "\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}"
-        LayoutText {#text} at (50,147) size 23x180
-          text run at (50,147) width 180: "\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}"
-        LayoutInline {SPAN} at (0,0) size 58x360
-          LayoutText {#text} at (50,327) size 58x360
-            text run at (50,327) width 36: "\x{306A}\x{3089}"
-            text run at (85,3) width 270: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}"
-        LayoutText {#text} at (85,273) size 87x360
-          text run at (85,273) width 90: "\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
-          text run at (120,3) width 360: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
-          text run at (149,3) width 108: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
-      LayoutBlockFlow (floating) {DIV} at (202,8) size 178x366 [border: (3px solid #000000)]
-        LayoutText {#text} at (15,3) size 23x54
-          text run at (15,3) width 54: "\x{305B}\x{3063}\x{304B}"
-        LayoutInline {SPAN} at (0,0) size 23x108
-          LayoutText {#text} at (15,57) size 23x108
-            text run at (15,57) width 108: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}"
-        LayoutInline {SPAN} at (0,0) size 23x72
-          LayoutText {#text} at (15,165) size 23x72
-            text run at (15,165) width 72: "\x{3070}\x{3089}\x{3057}\x{3044}"
-        LayoutInline {SPAN} at (0,0) size 23x72
-          LayoutText {#text} at (15,237) size 23x72
-            text run at (15,237) width 72: "\x{8A18}\x{4E8B}\x{304C}\x{3069}"
-        LayoutInline {SPAN} at (0,0) size 58x360
-          LayoutText {#text} at (15,309) size 58x360
-            text run at (15,309) width 54: "\x{3053}\x{306B}\x{3042}"
-            text run at (50,3) width 18: "\x{3063}"
-        LayoutInline {SPAN} at (0,0) size 23x108
-          LayoutText {#text} at (50,21) size 23x108
-            text run at (50,21) width 108: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}"
-        LayoutInline {SPAN} at (0,0) size 23x90
-          LayoutText {#text} at (50,129) size 23x90
-            text run at (50,129) width 90: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}"
-        LayoutInline {SPAN} at (0,0) size 23x108
-          LayoutText {#text} at (50,219) size 23x108
-            text run at (50,219) width 108: "\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}"
-        LayoutInline {SPAN} at (0,0) size 58x360
-          LayoutText {#text} at (50,327) size 58x360
-            text run at (50,327) width 36: "\x{306A}\x{3089}"
-            text run at (85,3) width 90: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}"
-        LayoutInline {SPAN} at (0,0) size 23x144
-          LayoutText {#text} at (85,93) size 23x144
-            text run at (85,93) width 144: "\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
-        LayoutInline {SPAN} at (0,0) size 23x126
-          LayoutText {#text} at (85,237) size 23x126
-            text run at (85,237) width 126: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
-        LayoutInline {SPAN} at (0,0) size 23x162
-          LayoutText {#text} at (120,3) size 23x162
-            text run at (120,3) width 162: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}"
-        LayoutText {#text} at (120,165) size 52x360
-          text run at (120,165) width 198: "\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
-          text run at (149,3) width 108: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
-      LayoutBlockFlow (floating) {DIV} at (396,8) size 175x366 [border: (3px solid #000000)]
-        LayoutText {#text} at (6,3) size 23x54
-          text run at (6,3) width 54: "\x{305B}\x{3063}\x{304B}"
-        LayoutInline {SPAN} at (0,0) size 23x108
-          LayoutText {#text} at (6,57) size 23x108
-            text run at (6,57) width 108: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}"
-        LayoutInline {SPAN} at (0,0) size 23x72
-          LayoutText {#text} at (6,165) size 23x72
-            text run at (6,165) width 72: "\x{3070}\x{3089}\x{3057}\x{3044}"
-        LayoutInline {SPAN} at (0,0) size 23x72
-          LayoutText {#text} at (6,237) size 23x72
-            text run at (6,237) width 72: "\x{8A18}\x{4E8B}\x{304C}\x{3069}"
-        LayoutInline {SPAN} at (0,0) size 58x360
-          LayoutText {#text} at (6,309) size 58x360
-            text run at (6,309) width 54: "\x{3053}\x{306B}\x{3042}"
-            text run at (41,3) width 18: "\x{3063}"
-        LayoutInline {SPAN} at (0,0) size 23x108
-          LayoutText {#text} at (41,21) size 23x108
-            text run at (41,21) width 108: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}"
-        LayoutInline {SPAN} at (0,0) size 23x90
-          LayoutText {#text} at (41,129) size 23x90
-            text run at (41,129) width 90: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}"
-        LayoutInline {SPAN} at (0,0) size 23x108
-          LayoutText {#text} at (41,219) size 23x108
-            text run at (41,219) width 108: "\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}"
-        LayoutInline {SPAN} at (0,0) size 58x360
-          LayoutText {#text} at (41,327) size 58x360
-            text run at (41,327) width 36: "\x{306A}\x{3089}"
-            text run at (76,3) width 90: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}"
-        LayoutInline {SPAN} at (0,0) size 23x144
-          LayoutText {#text} at (76,93) size 23x144
-            text run at (76,93) width 144: "\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
-        LayoutInline {SPAN} at (0,0) size 23x126
-          LayoutText {#text} at (76,237) size 23x126
-            text run at (76,237) width 126: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
-        LayoutInline {SPAN} at (0,0) size 23x162
-          LayoutText {#text} at (111,3) size 23x162
-            text run at (111,3) width 162: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}"
-        LayoutText {#text} at (111,165) size 58x360
-          text run at (111,165) width 198: "\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
-          text run at (146,3) width 108: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
-      LayoutBlockFlow (floating) {DIV} at (587,8) size 192x366 [border: (3px solid #000000)]
-        LayoutText {#text} at (15,3) size 23x270
-          text run at (15,3) width 270: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}"
-        LayoutInline {SPAN} at (0,0) size 59x360
-          LayoutText {#text} at (15,273) size 59x360
+        LayoutInline {SPAN} at (0,0) size 60x360
+          LayoutText {#text} at (15,273) size 60x360
             text run at (15,273) width 90: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}"
             text run at (51,3) width 144: "\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}"
-        LayoutText {#text} at (51,147) size 23x180
+        LayoutText {#text} at (51,147) size 24x180
           text run at (51,147) width 180: "\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}"
-        LayoutInline {SPAN} at (0,0) size 59x360
-          LayoutText {#text} at (51,327) size 59x360
+        LayoutInline {SPAN} at (0,0) size 60x360
+          LayoutText {#text} at (51,327) size 60x360
             text run at (51,327) width 36: "\x{306A}\x{3089}"
             text run at (87,3) width 270: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}"
-        LayoutText {#text} at (87,273) size 95x360
+        LayoutText {#text} at (87,273) size 92x360
+          text run at (87,273) width 90: "\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
+          text run at (123,3) width 360: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (155,3) width 108: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
+      LayoutBlockFlow (floating) {DIV} at (210,8) size 186x366 [border: (3px solid #000000)]
+        LayoutText {#text} at (15,3) size 24x54
+          text run at (15,3) width 54: "\x{305B}\x{3063}\x{304B}"
+        LayoutInline {SPAN} at (0,0) size 24x108
+          LayoutText {#text} at (15,57) size 24x108
+            text run at (15,57) width 108: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}"
+        LayoutInline {SPAN} at (0,0) size 24x72
+          LayoutText {#text} at (15,165) size 24x72
+            text run at (15,165) width 72: "\x{3070}\x{3089}\x{3057}\x{3044}"
+        LayoutInline {SPAN} at (0,0) size 24x72
+          LayoutText {#text} at (15,237) size 24x72
+            text run at (15,237) width 72: "\x{8A18}\x{4E8B}\x{304C}\x{3069}"
+        LayoutInline {SPAN} at (0,0) size 60x360
+          LayoutText {#text} at (15,309) size 60x360
+            text run at (15,309) width 54: "\x{3053}\x{306B}\x{3042}"
+            text run at (51,3) width 18: "\x{3063}"
+        LayoutInline {SPAN} at (0,0) size 24x108
+          LayoutText {#text} at (51,21) size 24x108
+            text run at (51,21) width 108: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}"
+        LayoutInline {SPAN} at (0,0) size 24x90
+          LayoutText {#text} at (51,129) size 24x90
+            text run at (51,129) width 90: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}"
+        LayoutInline {SPAN} at (0,0) size 24x108
+          LayoutText {#text} at (51,219) size 24x108
+            text run at (51,219) width 108: "\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}"
+        LayoutInline {SPAN} at (0,0) size 60x360
+          LayoutText {#text} at (51,327) size 60x360
+            text run at (51,327) width 36: "\x{306A}\x{3089}"
+            text run at (87,3) width 90: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}"
+        LayoutInline {SPAN} at (0,0) size 24x144
+          LayoutText {#text} at (87,93) size 24x144
+            text run at (87,93) width 144: "\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+        LayoutInline {SPAN} at (0,0) size 24x126
+          LayoutText {#text} at (87,237) size 24x126
+            text run at (87,237) width 126: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
+        LayoutInline {SPAN} at (0,0) size 24x162
+          LayoutText {#text} at (123,3) size 24x162
+            text run at (123,3) width 162: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}"
+        LayoutText {#text} at (123,165) size 56x360
+          text run at (123,165) width 198: "\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (155,3) width 108: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
+      LayoutBlockFlow (floating) {DIV} at (412,8) size 182x366 [border: (3px solid #000000)]
+        LayoutText {#text} at (7,3) size 24x54
+          text run at (7,3) width 54: "\x{305B}\x{3063}\x{304B}"
+        LayoutInline {SPAN} at (0,0) size 24x108
+          LayoutText {#text} at (7,57) size 24x108
+            text run at (7,57) width 108: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}"
+        LayoutInline {SPAN} at (0,0) size 24x72
+          LayoutText {#text} at (7,165) size 24x72
+            text run at (7,165) width 72: "\x{3070}\x{3089}\x{3057}\x{3044}"
+        LayoutInline {SPAN} at (0,0) size 24x72
+          LayoutText {#text} at (7,237) size 24x72
+            text run at (7,237) width 72: "\x{8A18}\x{4E8B}\x{304C}\x{3069}"
+        LayoutInline {SPAN} at (0,0) size 60x360
+          LayoutText {#text} at (7,309) size 60x360
+            text run at (7,309) width 54: "\x{3053}\x{306B}\x{3042}"
+            text run at (43,3) width 18: "\x{3063}"
+        LayoutInline {SPAN} at (0,0) size 24x108
+          LayoutText {#text} at (43,21) size 24x108
+            text run at (43,21) width 108: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}"
+        LayoutInline {SPAN} at (0,0) size 24x90
+          LayoutText {#text} at (43,129) size 24x90
+            text run at (43,129) width 90: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}"
+        LayoutInline {SPAN} at (0,0) size 24x108
+          LayoutText {#text} at (43,219) size 24x108
+            text run at (43,219) width 108: "\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}"
+        LayoutInline {SPAN} at (0,0) size 60x360
+          LayoutText {#text} at (43,327) size 60x360
+            text run at (43,327) width 36: "\x{306A}\x{3089}"
+            text run at (79,3) width 90: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}"
+        LayoutInline {SPAN} at (0,0) size 24x144
+          LayoutText {#text} at (79,93) size 24x144
+            text run at (79,93) width 144: "\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+        LayoutInline {SPAN} at (0,0) size 24x126
+          LayoutText {#text} at (79,237) size 24x126
+            text run at (79,237) width 126: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
+        LayoutInline {SPAN} at (0,0) size 24x162
+          LayoutText {#text} at (115,3) size 24x162
+            text run at (115,3) width 162: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}"
+        LayoutText {#text} at (115,165) size 60x360
+          text run at (115,165) width 198: "\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (151,3) width 108: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
+      LayoutBlockFlow (floating) {DIV} at (610,8) size 192x366 [border: (3px solid #000000)]
+        LayoutText {#text} at (15,3) size 24x270
+          text run at (15,3) width 270: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}"
+        LayoutInline {SPAN} at (0,0) size 60x360
+          LayoutText {#text} at (15,273) size 60x360
+            text run at (15,273) width 90: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}"
+            text run at (51,3) width 144: "\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}"
+        LayoutText {#text} at (51,147) size 24x180
+          text run at (51,147) width 180: "\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}"
+        LayoutInline {SPAN} at (0,0) size 60x360
+          LayoutText {#text} at (51,327) size 60x360
+            text run at (51,327) width 36: "\x{306A}\x{3089}"
+            text run at (87,3) width 270: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}"
+        LayoutText {#text} at (87,273) size 96x360
           text run at (87,273) width 90: "\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
           text run at (123,3) width 360: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
           text run at (159,3) width 108: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/001-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/001-expected.png
index 1074de6..51dde70 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/001-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/001-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/001-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/001-expected.txt
index 72fee0f3..4882f74 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/001-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/001-expected.txt
@@ -4,23 +4,23 @@
   LayoutBlockFlow {HTML} at (0,0) size 800x600
     LayoutBlockFlow {BODY} at (8,8) size 784x584
       LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-        LayoutText {#text} at (0,4) size 32x17
-          text run at (0,4) width 32: "\x{5EFA}\x{7BC9}"
-      LayoutText {#text} at (32,4) size 8x17
-        text run at (32,4) width 8: ", "
+        LayoutText {#text} at (0,6) size 32x17
+          text run at (0,6) width 32: "\x{5EFA}\x{7BC9}"
+      LayoutText {#text} at (32,6) size 8x17
+        text run at (32,6) width 8: ", "
       LayoutInline {A} at (0,0) size 48x17 [color=#0000EE]
-        LayoutText {#text} at (40,4) size 48x17
-          text run at (40,4) width 48: "\x{7F8E}\x{8853}\x{9928}"
-      LayoutText {#text} at (88,4) size 8x17
-        text run at (88,4) width 8: ", "
+        LayoutText {#text} at (40,6) size 48x17
+          text run at (40,6) width 48: "\x{7F8E}\x{8853}\x{9928}"
+      LayoutText {#text} at (88,6) size 8x17
+        text run at (88,6) width 8: ", "
       LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-        LayoutText {#text} at (96,4) size 32x17
-          text run at (96,4) width 32: "\x{6B74}\x{53F2}"
-      LayoutText {#text} at (128,4) size 8x17
-        text run at (128,4) width 8: ", "
+        LayoutText {#text} at (96,6) size 32x17
+          text run at (96,6) width 32: "\x{6B74}\x{53F2}"
+      LayoutText {#text} at (128,6) size 8x17
+        text run at (128,6) width 8: ", "
       LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-        LayoutText {#text} at (136,4) size 32x17
-          text run at (136,4) width 32: "\x{6587}\x{5B66}"
-      LayoutText {#text} at (168,4) size 24x17
-        text run at (168,4) width 4: " "
-        text run at (172,4) width 20: "...a"
+        LayoutText {#text} at (136,6) size 32x17
+          text run at (136,6) width 32: "\x{6587}\x{5B66}"
+      LayoutText {#text} at (168,6) size 24x17
+        text run at (168,6) width 4: " "
+        text run at (172,6) width 20: "...a"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/002-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/002-expected.png
index 3953517c..7226cb3 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/002-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/002-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/002-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/002-expected.txt
index dbd1794..abe355f7 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/002-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/002-expected.txt
@@ -3,15 +3,15 @@
 layer at (0,0) size 800x600
   LayoutBlockFlow {HTML} at (0,0) size 800x600
     LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutTable {TABLE} at (0,0) size 280x156
-        LayoutTableSection {TBODY} at (0,0) size 280x156
-          LayoutTableRow {TR} at (0,0) size 280x156
-            LayoutTableCell {TD} at (0,0) size 280x156 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (0,4) size 275x147
-                text run at (0,4) width 272: "\x{8AB0}\x{3067}\x{3082}\x{3042}\x{306A}\x{305F}\x{306E}\x{30C9}\x{30AD}\x{30E5}\x{30E1}\x{30F3}\x{30C8}\x{3092}\x{30AA}\x{30EA}\x{30B8}"
-                text run at (0,30) width 259: "\x{30CA}\x{30EB}\x{306E}\x{4F53}\x{88C1}\x{3067}\x{958B}\x{304F}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002} "
-                text run at (258,30) width 17: "\x{3042}"
-                text run at (0,56) width 272: "\x{306A}\x{305F}\x{306E}\x{610F}\x{56F3}\x{3057}\x{305F}\x{3068}\x{304A}\x{308A}\x{306B}\x{60C5}\x{5831}\x{3092}\x{4F1D}\x{3048}\x{308B}"
-                text run at (0,82) width 271: "\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{3055}\x{3089}\x{306B}\x{3001}\x{30D6}\x{30E9}\x{30A6}\x{30B6}\x{304B}"
-                text run at (0,108) width 272: "\x{3089}\x{30B3}\x{30E1}\x{30F3}\x{30C8}\x{3084}\x{30DE}\x{30FC}\x{30AF}\x{30A2}\x{30C3}\x{30D7}\x{3092}\x{66F8}\x{304D}\x{8FBC}\x{3093}"
-                text run at (0,134) width 32: "\x{3060}\x{308A}"
+      LayoutTable {TABLE} at (0,0) size 280x168
+        LayoutTableSection {TBODY} at (0,0) size 280x168
+          LayoutTableRow {TR} at (0,0) size 280x168
+            LayoutTableCell {TD} at (0,0) size 280x168 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,6) size 276x157
+                text run at (0,6) width 272: "\x{8AB0}\x{3067}\x{3082}\x{3042}\x{306A}\x{305F}\x{306E}\x{30C9}\x{30AD}\x{30E5}\x{30E1}\x{30F3}\x{30C8}\x{3092}\x{30AA}\x{30EA}\x{30B8}"
+                text run at (0,34) width 260: "\x{30CA}\x{30EB}\x{306E}\x{4F53}\x{88C1}\x{3067}\x{958B}\x{304F}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002} "
+                text run at (260,34) width 16: "\x{3042}"
+                text run at (0,62) width 272: "\x{306A}\x{305F}\x{306E}\x{610F}\x{56F3}\x{3057}\x{305F}\x{3068}\x{304A}\x{308A}\x{306B}\x{60C5}\x{5831}\x{3092}\x{4F1D}\x{3048}\x{308B}"
+                text run at (0,90) width 272: "\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{3055}\x{3089}\x{306B}\x{3001}\x{30D6}\x{30E9}\x{30A6}\x{30B6}\x{304B}"
+                text run at (0,118) width 272: "\x{3089}\x{30B3}\x{30E1}\x{30F3}\x{30C8}\x{3084}\x{30DE}\x{30FC}\x{30AF}\x{30A2}\x{30C3}\x{30D7}\x{3092}\x{66F8}\x{304D}\x{8FBC}\x{3093}"
+                text run at (0,146) width 32: "\x{3060}\x{308A}"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/003-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/003-expected.png
index 1f2b289..7b1317e 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/003-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/003-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/003-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/003-expected.txt
index f73ad154..d67b5377 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/003-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/003-expected.txt
@@ -3,80 +3,80 @@
 layer at (0,0) size 800x600
   LayoutBlockFlow {HTML} at (0,0) size 800x600
     LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutTable {TABLE} at (0,0) size 784x434 [border: (5px outset #808080)]
-        LayoutTableSection {TBODY} at (5,5) size 774x424
-          LayoutTableRow {TR} at (0,2) size 774x420
-            LayoutTableCell {TD} at (2,210) size 716x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
-            LayoutTableCell {TD} at (720,2) size 52x420 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+      LayoutTable {TABLE} at (0,0) size 784x466 [border: (5px outset #808080)]
+        LayoutTableSection {TBODY} at (5,5) size 774x456
+          LayoutTableRow {TR} at (0,2) size 774x452
+            LayoutTableCell {TD} at (2,226) size 716x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (720,2) size 52x452 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (2,6) size 32x17
-                  text run at (2,6) width 32: "\x{5CA1}\x{5C71}"
-              LayoutText {#text} at (34,6) size 16x17
-                text run at (34,6) width 16: "\x{FF5C}"
+                LayoutText {#text} at (2,8) size 32x17
+                  text run at (2,8) width 32: "\x{5CA1}\x{5C71}"
+              LayoutText {#text} at (34,8) size 16x17
+                text run at (34,8) width 16: "\x{FF5C}"
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (2,32) size 32x17
-                  text run at (2,32) width 32: "\x{5E83}\x{5CF6}"
-              LayoutText {#text} at (34,32) size 16x17
-                text run at (34,32) width 16: "\x{FF5C}"
+                LayoutText {#text} at (2,36) size 32x17
+                  text run at (2,36) width 32: "\x{5E83}\x{5CF6}"
+              LayoutText {#text} at (34,36) size 16x17
+                text run at (34,36) width 16: "\x{FF5C}"
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (2,58) size 32x17
-                  text run at (2,58) width 32: "\x{5C71}\x{53E3}"
-              LayoutText {#text} at (34,58) size 16x17
-                text run at (34,58) width 16: "\x{FF5C}"
+                LayoutText {#text} at (2,64) size 32x17
+                  text run at (2,64) width 32: "\x{5C71}\x{53E3}"
+              LayoutText {#text} at (34,64) size 16x17
+                text run at (34,64) width 16: "\x{FF5C}"
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (2,84) size 32x17
-                  text run at (2,84) width 32: "\x{5FB3}\x{5CF6}"
-              LayoutText {#text} at (34,84) size 16x17
-                text run at (34,84) width 16: "\x{FF5C}"
+                LayoutText {#text} at (2,92) size 32x17
+                  text run at (2,92) width 32: "\x{5FB3}\x{5CF6}"
+              LayoutText {#text} at (34,92) size 16x17
+                text run at (34,92) width 16: "\x{FF5C}"
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (2,110) size 32x17
-                  text run at (2,110) width 32: "\x{9999}\x{5DDD}"
-              LayoutText {#text} at (34,110) size 16x17
-                text run at (34,110) width 16: "\x{FF5C}"
+                LayoutText {#text} at (2,120) size 32x17
+                  text run at (2,120) width 32: "\x{9999}\x{5DDD}"
+              LayoutText {#text} at (34,120) size 16x17
+                text run at (34,120) width 16: "\x{FF5C}"
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (2,136) size 32x17
-                  text run at (2,136) width 32: "\x{611B}\x{5A9B}"
-              LayoutText {#text} at (34,136) size 16x17
-                text run at (34,136) width 16: "\x{FF5C}"
+                LayoutText {#text} at (2,148) size 32x17
+                  text run at (2,148) width 32: "\x{611B}\x{5A9B}"
+              LayoutText {#text} at (34,148) size 16x17
+                text run at (34,148) width 16: "\x{FF5C}"
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (2,162) size 32x17
-                  text run at (2,162) width 32: "\x{9AD8}\x{77E5}"
-              LayoutText {#text} at (34,162) size 16x17
-                text run at (34,162) width 16: "\x{FF5C}"
-              LayoutInline {A} at (0,0) size 48x43 [color=#0000EE]
-                LayoutText {#text} at (2,188) size 48x43
-                  text run at (2,188) width 48: "\x{798F}\x{5CA1}\x{30FB}"
-                  text run at (2,214) width 48: "\x{5317}\x{4E5D}\x{5DDE}"
-              LayoutText {#text} at (2,240) size 16x17
-                text run at (2,240) width 16: "\x{FF5C}"
+                LayoutText {#text} at (2,176) size 32x17
+                  text run at (2,176) width 32: "\x{9AD8}\x{77E5}"
+              LayoutText {#text} at (34,176) size 16x17
+                text run at (34,176) width 16: "\x{FF5C}"
+              LayoutInline {A} at (0,0) size 48x45 [color=#0000EE]
+                LayoutText {#text} at (2,204) size 48x45
+                  text run at (2,204) width 48: "\x{798F}\x{5CA1}\x{30FB}"
+                  text run at (2,232) width 48: "\x{5317}\x{4E5D}\x{5DDE}"
+              LayoutText {#text} at (2,260) size 16x17
+                text run at (2,260) width 16: "\x{FF5C}"
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (18,240) size 32x17
-                  text run at (18,240) width 32: "\x{4F50}\x{8CC0}"
-              LayoutText {#text} at (2,266) size 16x17
-                text run at (2,266) width 16: "\x{FF5C}"
+                LayoutText {#text} at (18,260) size 32x17
+                  text run at (18,260) width 32: "\x{4F50}\x{8CC0}"
+              LayoutText {#text} at (2,288) size 16x17
+                text run at (2,288) width 16: "\x{FF5C}"
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (18,266) size 32x17
-                  text run at (18,266) width 32: "\x{9577}\x{5D0E}"
-              LayoutText {#text} at (2,292) size 16x17
-                text run at (2,292) width 16: "\x{FF5C}"
+                LayoutText {#text} at (18,288) size 32x17
+                  text run at (18,288) width 32: "\x{9577}\x{5D0E}"
+              LayoutText {#text} at (2,316) size 16x17
+                text run at (2,316) width 16: "\x{FF5C}"
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (18,292) size 32x17
-                  text run at (18,292) width 32: "\x{718A}\x{672C}"
-              LayoutText {#text} at (2,318) size 16x17
-                text run at (2,318) width 16: "\x{FF5C}"
-              LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
-                LayoutText {#text} at (18,318) size 32x17
-                  text run at (18,318) width 32: "\x{5927}\x{5206}"
+                LayoutText {#text} at (18,316) size 32x17
+                  text run at (18,316) width 32: "\x{718A}\x{672C}"
               LayoutText {#text} at (2,344) size 16x17
                 text run at (2,344) width 16: "\x{FF5C}"
               LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
                 LayoutText {#text} at (18,344) size 32x17
-                  text run at (18,344) width 32: "\x{5BAE}\x{5D0E}"
-              LayoutText {#text} at (2,370) size 16x17
-                text run at (2,370) width 16: "\x{FF5C}"
-              LayoutInline {A} at (0,0) size 48x43 [color=#0000EE]
-                LayoutText {#text} at (18,370) size 48x43
-                  text run at (18,370) width 32: "\x{9E7F}\x{5150}"
-                  text run at (2,396) width 16: "\x{5CF6}"
-              LayoutText {#text} at (18,396) size 16x17
-                text run at (18,396) width 16: "\x{FF5C}"
+                  text run at (18,344) width 32: "\x{5927}\x{5206}"
+              LayoutText {#text} at (2,372) size 16x17
+                text run at (2,372) width 16: "\x{FF5C}"
+              LayoutInline {A} at (0,0) size 32x17 [color=#0000EE]
+                LayoutText {#text} at (18,372) size 32x17
+                  text run at (18,372) width 32: "\x{5BAE}\x{5D0E}"
+              LayoutText {#text} at (2,400) size 16x17
+                text run at (2,400) width 16: "\x{FF5C}"
+              LayoutInline {A} at (0,0) size 48x45 [color=#0000EE]
+                LayoutText {#text} at (18,400) size 48x45
+                  text run at (18,400) width 32: "\x{9E7F}\x{5150}"
+                  text run at (2,428) width 16: "\x{5CF6}"
+              LayoutText {#text} at (18,428) size 16x17
+                text run at (18,428) width 16: "\x{FF5C}"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/lang-glyph-cache-separation-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/lang-glyph-cache-separation-expected.png
index 880951c..216f479d 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/lang-glyph-cache-separation-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/lang-glyph-cache-separation-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/lang-glyph-cache-separation-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/lang-glyph-cache-separation-expected.txt
index 8272b1f1e..e966cd61 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/lang-glyph-cache-separation-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/lang-glyph-cache-separation-expected.txt
@@ -1,8 +1,8 @@
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x385
-  LayoutBlockFlow {HTML} at (0,0) size 800x385
-    LayoutBlockFlow {BODY} at (8,8) size 784x369
+layer at (0,0) size 800x391
+  LayoutBlockFlow {HTML} at (0,0) size 800x391
+    LayoutBlockFlow {BODY} at (8,8) size 784x375
       LayoutBlockFlow (anonymous) at (0,0) size 784x54
         LayoutText {#text} at (0,0) size 340x17
           text run at (0,0) width 340: "Tests if glyph caches of different languages interfere."
@@ -11,7 +11,7 @@
           text run at (0,18) width 743: "On systems that the locales have different font preferences, the following divs should be displayed in corresponding"
           text run at (0,36) width 179: "preferred fonts respectively."
         LayoutBR {BR} at (178,36) size 1x17
-      LayoutBlockFlow {DIV} at (0,54) size 784x105
+      LayoutBlockFlow {DIV} at (0,54) size 784x107
         LayoutBlockFlow (anonymous) at (0,0) size 784x18
           LayoutText {#text} at (0,0) size 130x17
             text run at (0,0) width 130: "Default font-family:"
@@ -21,13 +21,13 @@
         LayoutBlockFlow {DIV} at (0,37) size 784x21
           LayoutText {#text} at (0,3) size 183x17
             text run at (0,3) width 183: "Traditional Chinese: \x{8AA4}\x{904E}\x{9AA8}"
-        LayoutBlockFlow {DIV} at (0,58) size 784x26
-          LayoutText {#text} at (0,4) size 114x17
-            text run at (0,4) width 114: "Japanese: \x{8AA4}\x{904E}\x{9AA8}"
-        LayoutBlockFlow {DIV} at (0,84) size 784x21
+        LayoutBlockFlow {DIV} at (0,58) size 784x28
+          LayoutText {#text} at (0,6) size 114x17
+            text run at (0,6) width 114: "Japanese: \x{8AA4}\x{904E}\x{9AA8}"
+        LayoutBlockFlow {DIV} at (0,86) size 784x21
           LayoutText {#text} at (0,3) size 104x17
             text run at (0,3) width 104: "Korean: \x{8AA4}\x{904E}\x{9AA8}"
-      LayoutBlockFlow {DIV} at (0,159) size 784x105
+      LayoutBlockFlow {DIV} at (0,161) size 784x107
         LayoutBlockFlow (anonymous) at (0,0) size 784x18
           LayoutText {#text} at (0,0) size 224x17
             text run at (0,0) width 224: "Generic font-family (sans-serif):"
@@ -37,13 +37,13 @@
         LayoutBlockFlow {DIV} at (0,37) size 784x21
           LayoutText {#text} at (0,3) size 195x17
             text run at (0,3) width 195: "Traditional Chinese: \x{8AA4}\x{904E}\x{9AA8}"
-        LayoutBlockFlow {DIV} at (0,58) size 784x26
-          LayoutText {#text} at (0,4) size 127x17
-            text run at (0,4) width 127: "Japanese: \x{8AA4}\x{904E}\x{9AA8}"
-        LayoutBlockFlow {DIV} at (0,84) size 784x21
+        LayoutBlockFlow {DIV} at (0,58) size 784x28
+          LayoutText {#text} at (0,6) size 127x17
+            text run at (0,6) width 127: "Japanese: \x{8AA4}\x{904E}\x{9AA8}"
+        LayoutBlockFlow {DIV} at (0,86) size 784x21
           LayoutText {#text} at (0,3) size 109x17
             text run at (0,3) width 109: "Korean: \x{8AA4}\x{904E}\x{9AA8}"
-      LayoutBlockFlow {DIV} at (0,264) size 784x105
+      LayoutBlockFlow {DIV} at (0,268) size 784x107
         LayoutBlockFlow (anonymous) at (0,0) size 784x18
           LayoutText {#text} at (0,0) size 300x17
             text run at (0,0) width 300: "Non-generic font-family (Times New Roman):"
@@ -53,9 +53,9 @@
         LayoutBlockFlow {DIV} at (0,37) size 784x21
           LayoutText {#text} at (0,3) size 183x17
             text run at (0,3) width 183: "Traditional Chinese: \x{8AA4}\x{904E}\x{9AA8}"
-        LayoutBlockFlow {DIV} at (0,58) size 784x26
-          LayoutText {#text} at (0,4) size 114x17
-            text run at (0,4) width 114: "Japanese: \x{8AA4}\x{904E}\x{9AA8}"
-        LayoutBlockFlow {DIV} at (0,84) size 784x21
+        LayoutBlockFlow {DIV} at (0,58) size 784x28
+          LayoutText {#text} at (0,6) size 114x17
+            text run at (0,6) width 114: "Japanese: \x{8AA4}\x{904E}\x{9AA8}"
+        LayoutBlockFlow {DIV} at (0,86) size 784x21
           LayoutText {#text} at (0,3) size 104x17
             text run at (0,3) width 104: "Korean: \x{8AA4}\x{904E}\x{9AA8}"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/vertical-text-metrics-test-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/vertical-text-metrics-test-expected.txt
index 01b73d79..a5f5c9f 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/vertical-text-metrics-test-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/vertical-text-metrics-test-expected.txt
@@ -11,9 +11,9 @@
 string「あ、変っ!」。
 
 width=220
-width=34
-width=34
+width=37
+width=37
 width=220
-width=34
-width=34
+width=37
+width=37
 
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/wrap-CJK-001-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/wrap-CJK-001-expected.png
index 167aa9bf6..c101cb4 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/wrap-CJK-001-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/wrap-CJK-001-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/wrap-CJK-001-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/wrap-CJK-001-expected.txt
index 40246f4..175483b 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/wrap-CJK-001-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/wrap-CJK-001-expected.txt
@@ -6,7 +6,7 @@
       LayoutBlockFlow (anonymous) at (0,0) size 784x15
         LayoutText {#text} at (0,0) size 345x14
           text run at (0,0) width 345: "Tests that wrapping does not trim the last character if it is not whitespace."
-      LayoutBlockFlow {P} at (0,27) size 551x46 [border: (3px solid #FF0000)]
-        LayoutText {#text} at (3,6) size 544x34
-          text run at (3,6) width 544: "\x{6700}\x{5927}2GHz\x{306E}Intel Core Duo\x{30D7}\x{30ED}\x{30BB}\x{30C3}\x{30B5}\x{306E}\x{30D1}\x{30EF}\x{30FC}\x{3001}iSight\x{30AB}\x{30E1}\x{30E9}\x{3001}Front Row\x{3001}iLife \x{2019}06\x{3001}13\x{30A4}\x{30F3}\x{30C1}\x{306E}\x{30AF}\x{30EA}\x{30A2}"
-          text run at (3,26) width 168: "\x{30EF}\x{30A4}\x{30C9}\x{30B9}\x{30AF}\x{30EA}\x{30FC}\x{30F3}\x{30C7}\x{30A3}\x{30B9}\x{30D7}\x{30EC}\x{30A4}"
+      LayoutBlockFlow {P} at (0,27) size 551x48 [border: (3px solid #FF0000)]
+        LayoutText {#text} at (3,7) size 545x35
+          text run at (3,7) width 545: "\x{6700}\x{5927}2GHz\x{306E}Intel Core Duo\x{30D7}\x{30ED}\x{30BB}\x{30C3}\x{30B5}\x{306E}\x{30D1}\x{30EF}\x{30FC}\x{3001}iSight\x{30AB}\x{30E1}\x{30E9}\x{3001}Front Row\x{3001}iLife \x{2019}06\x{3001}13\x{30A4}\x{30F3}\x{30C1}\x{306E}\x{30AF}\x{30EA}\x{30A2}"
+          text run at (3,28) width 168: "\x{30EF}\x{30A4}\x{30C9}\x{30B9}\x{30AF}\x{30EA}\x{30FC}\x{30F3}\x{30C7}\x{30A3}\x{30B9}\x{30D7}\x{30EC}\x{30A4}"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-leading-expansion-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-leading-expansion-expected.png
index c46b7a6f..541a937 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-leading-expansion-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-leading-expansion-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-leading-expansion-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-leading-expansion-expected.txt
index a6384da..53d4c2b 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-leading-expansion-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-leading-expansion-expected.txt
@@ -1,39 +1,39 @@
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x320
-  LayoutBlockFlow {HTML} at (0,0) size 800x320
-    LayoutBlockFlow {BODY} at (8,8) size 784x304
-      LayoutBlockFlow {DIV} at (0,0) size 784x148
-        LayoutBlockFlow {DIV} at (0,0) size 96x50 [border: (3px solid #000000)]
-          LayoutText {#text} at (3,7) size 57x17
-            text run at (3,7) width 57: "a. b. "
+layer at (0,0) size 800x332
+  LayoutBlockFlow {HTML} at (0,0) size 800x332
+    LayoutBlockFlow {BODY} at (8,8) size 784x316
+      LayoutBlockFlow {DIV} at (0,0) size 784x154
+        LayoutBlockFlow {DIV} at (0,0) size 96x52 [border: (3px solid #000000)]
+          LayoutText {#text} at (3,9) size 57x17
+            text run at (3,9) width 57: "a. b. "
           LayoutInline {SPAN} at (0,0) size 5x17
-            LayoutText {#text} at (59,7) size 5x17
-              text run at (59,7) width 5: "i"
-          LayoutText {#text} at (63,7) size 90x39
-            text run at (63,7) width 30: "\x{306F}"
-            text run at (3,29) width 56: "xxxxxxx"
-        LayoutBlockFlow {DIV} at (0,58) size 96x50 [border: (3px solid #000000)]
-          LayoutText {#text} at (3,7) size 90x39
-            text run at (3,7) width 90: "a. b. i\x{306F}"
-            text run at (3,29) width 56: "xxxxxxx"
-        LayoutBlockFlow {DIV} at (0,116) size 96x32 [border: (3px solid #000000)]
-          LayoutText {#text} at (3,7) size 216x17
-            text run at (3,7) width 216: "xxxxxxxxxxxxxxxxxxxxx\x{FF08}\x{624B}\x{FF09}"
-      LayoutBlockFlow {DIV} at (0,156) size 784x148
-        LayoutBlockFlow {DIV} at (0,0) size 96x50 [border: (3px solid #000000)]
-          LayoutText {#text} at (3,7) size 57x17
-            text run at (3,7) width 57: "a. b. "
+            LayoutText {#text} at (59,9) size 5x17
+              text run at (59,9) width 5: "i"
+          LayoutText {#text} at (63,9) size 90x39
+            text run at (63,9) width 30: "\x{306F}"
+            text run at (3,31) width 56: "xxxxxxx"
+        LayoutBlockFlow {DIV} at (0,60) size 96x52 [border: (3px solid #000000)]
+          LayoutText {#text} at (3,9) size 90x39
+            text run at (3,9) width 90: "a. b. i\x{306F}"
+            text run at (3,31) width 56: "xxxxxxx"
+        LayoutBlockFlow {DIV} at (0,120) size 96x34 [border: (3px solid #000000)]
+          LayoutText {#text} at (3,9) size 216x17
+            text run at (3,9) width 216: "xxxxxxxxxxxxxxxxxxxxx\x{FF08}\x{624B}\x{FF09}"
+      LayoutBlockFlow {DIV} at (0,162) size 784x154
+        LayoutBlockFlow {DIV} at (0,0) size 96x52 [border: (3px solid #000000)]
+          LayoutText {#text} at (3,9) size 57x17
+            text run at (3,9) width 57: "a. b. "
           LayoutInline {SPAN} at (0,0) size 5x17
-            LayoutText {#text} at (59,7) size 5x17
-              text run at (59,7) width 5: "i"
-          LayoutText {#text} at (63,7) size 90x39
-            text run at (63,7) width 30: "\x{306F}"
-            text run at (3,29) width 56: "xxxxxxx"
-        LayoutBlockFlow {DIV} at (0,58) size 96x50 [border: (3px solid #000000)]
-          LayoutText {#text} at (3,7) size 90x39
-            text run at (3,7) width 90: "a. b. i\x{306F}"
-            text run at (3,29) width 56: "xxxxxxx"
-        LayoutBlockFlow {DIV} at (0,116) size 96x32 [border: (3px solid #000000)]
-          LayoutText {#text} at (3,7) size 216x17
-            text run at (3,7) width 216: "xxxxxxxxxxxxxxxxxxxxx\x{FF08}\x{624B}\x{FF09}"
+            LayoutText {#text} at (59,9) size 5x17
+              text run at (59,9) width 5: "i"
+          LayoutText {#text} at (63,9) size 90x39
+            text run at (63,9) width 30: "\x{306F}"
+            text run at (3,31) width 56: "xxxxxxx"
+        LayoutBlockFlow {DIV} at (0,60) size 96x52 [border: (3px solid #000000)]
+          LayoutText {#text} at (3,9) size 90x39
+            text run at (3,9) width 90: "a. b. i\x{306F}"
+            text run at (3,31) width 56: "xxxxxxx"
+        LayoutBlockFlow {DIV} at (0,120) size 96x34 [border: (3px solid #000000)]
+          LayoutText {#text} at (3,9) size 216x17
+            text run at (3,9) width 216: "xxxxxxxxxxxxxxxxxxxxx\x{FF08}\x{624B}\x{FF09}"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/selection-multiple-runs-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/selection-multiple-runs-expected.png
index 23b1dad6..6c7423a 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/selection-multiple-runs-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/selection-multiple-runs-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/selection-multiple-runs-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/selection-multiple-runs-expected.txt
index a96d81aa..e85b23a 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/selection-multiple-runs-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/selection-multiple-runs-expected.txt
@@ -1,21 +1,21 @@
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x246
-  LayoutBlockFlow {HTML} at (0,0) size 800x246
-    LayoutBlockFlow {BODY} at (8,30) size 784x208
-      LayoutBlockFlow {P} at (0,0) size 784x82
-        LayoutText {#text} at (0,7) size 769x74
-          text run at (0,7) width 769: "The selection should be painted correctly from and including \x{732B}"
-          text run at (0,48) width 580: "until and including C, then from right to left for "
-          text run at (579,48) width 39 RTL: "\x{627}\x{644}\x{639}\x{631}"
-          text run at (617,48) width 9: "."
-      LayoutBlockFlow {DIV} at (0,112) size 784x48
-        LayoutText {#text} at (0,7) size 425x33
-          text run at (0,7) width 360: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067} \x{92E}\x{93E}\x{928}\x{915} \x{939}\x{93F}\x{928}\x{94D}\x{926}\x{940}ABC"
-          text run at (359,7) width 66 RTL: "\x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
-      LayoutBlockFlow {DIV} at (0,160) size 784x48
-        LayoutText {#text} at (0,7) size 425x33
-          text run at (0,7) width 360: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067} \x{92E}\x{93E}\x{928}\x{915} \x{939}\x{93F}\x{928}\x{94D}\x{926}\x{940}ABC"
-          text run at (359,7) width 66 RTL: "\x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
+layer at (0,0) size 800x261
+  LayoutBlockFlow {HTML} at (0,0) size 800x261
+    LayoutBlockFlow {BODY} at (8,30) size 784x223
+      LayoutBlockFlow {P} at (0,0) size 784x87
+        LayoutText {#text} at (0,12) size 769x74
+          text run at (0,12) width 769: "The selection should be painted correctly from and including \x{732B}"
+          text run at (0,53) width 580: "until and including C, then from right to left for "
+          text run at (579,53) width 39 RTL: "\x{627}\x{644}\x{639}\x{631}"
+          text run at (617,53) width 9: "."
+      LayoutBlockFlow {DIV} at (0,117) size 784x53
+        LayoutText {#text} at (0,12) size 425x33
+          text run at (0,12) width 360: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067} \x{92E}\x{93E}\x{928}\x{915} \x{939}\x{93F}\x{928}\x{94D}\x{926}\x{940}ABC"
+          text run at (359,12) width 66 RTL: "\x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
+      LayoutBlockFlow {DIV} at (0,170) size 784x53
+        LayoutText {#text} at (0,12) size 425x33
+          text run at (0,12) width 360: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067} \x{92E}\x{93E}\x{928}\x{915} \x{939}\x{93F}\x{928}\x{94D}\x{926}\x{940}ABC"
+          text run at (359,12) width 66 RTL: "\x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
 selection start: position 3 of child 0 {#text} of child 5 {DIV} of body
 selection end:   position 24 of child 0 {#text} of child 5 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-lr-selection-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-lr-selection-expected.png
index 2bf4122..1a969a8 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-lr-selection-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-lr-selection-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-lr-selection-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-lr-selection-expected.txt
index 751dc88..ee355b4 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-lr-selection-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-lr-selection-expected.txt
@@ -1,24 +1,24 @@
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
-layer at (0,0) size 556x600
-  LayoutBlockFlow {HTML} at (0,0) size 556x600 [border: (10px solid #800000)]
-    LayoutBlockFlow {BODY} at (18,18) size 520x564 [border: (5px solid #000000)]
-      LayoutBlockFlow {DIV} at (5,105) size 510x400
-        LayoutText {#text} at (3,0) size 503x391
-          text run at (3,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}"
-          text run at (37,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}"
-          text run at (71,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
-          text run at (105,0) width 384: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}"
-          text run at (139,0) width 384: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}"
-          text run at (173,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}"
-          text run at (207,0) width 391: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}"
-          text run at (241,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
-          text run at (275,0) width 384: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
-          text run at (309,0) width 384: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}"
-          text run at (343,0) width 384: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
-          text run at (377,0) width 384: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}"
-          text run at (411,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}"
-          text run at (445,0) width 391: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}"
-          text run at (479,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+layer at (0,0) size 601x600
+  LayoutBlockFlow {HTML} at (0,0) size 601x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 565x564 [border: (5px solid #000000)]
+      LayoutBlockFlow {DIV} at (5,105) size 555x400
+        LayoutText {#text} at (4,0) size 546x391
+          text run at (4,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}"
+          text run at (41,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}"
+          text run at (78,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+          text run at (115,0) width 384: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}"
+          text run at (152,0) width 384: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}"
+          text run at (189,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}"
+          text run at (226,0) width 391: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}"
+          text run at (263,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+          text run at (300,0) width 384: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
+          text run at (337,0) width 384: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}"
+          text run at (374,0) width 384: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (411,0) width 384: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}"
+          text run at (448,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}"
+          text run at (485,0) width 391: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}"
+          text run at (522,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
 selection start: position 5 of child 0 {#text} of child 1 {DIV} of body
-selection end:   position 203 of child 0 {#text} of child 1 {DIV} of body
+selection end:   position 185 of child 0 {#text} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-rl-selection-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-rl-selection-expected.png
index e04c8d6..036ec13 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-rl-selection-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-rl-selection-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-rl-selection-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-rl-selection-expected.txt
index bb8aaf8..0c090c0 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-rl-selection-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-rl-selection-expected.txt
@@ -1,24 +1,24 @@
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
-layer at (244,0) size 556x600
-  LayoutBlockFlow {HTML} at (0,0) size 556x600 [border: (10px solid #800000)]
-    LayoutBlockFlow {BODY} at (18,18) size 520x564 [border: (5px solid #000000)]
-      LayoutBlockFlow {DIV} at (5,105) size 510x400
-        LayoutText {#text} at (3,0) size 503x391
-          text run at (3,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}"
-          text run at (37,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}"
-          text run at (71,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
-          text run at (105,0) width 384: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}"
-          text run at (139,0) width 384: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}"
-          text run at (173,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}"
-          text run at (207,0) width 391: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}"
-          text run at (241,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
-          text run at (275,0) width 384: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
-          text run at (309,0) width 384: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}"
-          text run at (343,0) width 384: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
-          text run at (377,0) width 384: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}"
-          text run at (411,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}"
-          text run at (445,0) width 391: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}"
-          text run at (479,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+layer at (199,0) size 601x600
+  LayoutBlockFlow {HTML} at (0,0) size 601x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 565x564 [border: (5px solid #000000)]
+      LayoutBlockFlow {DIV} at (5,105) size 555x400
+        LayoutText {#text} at (4,0) size 546x391
+          text run at (4,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}"
+          text run at (41,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}"
+          text run at (78,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+          text run at (115,0) width 384: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}"
+          text run at (152,0) width 384: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}"
+          text run at (189,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}"
+          text run at (226,0) width 391: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}"
+          text run at (263,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+          text run at (300,0) width 384: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
+          text run at (337,0) width 384: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}"
+          text run at (374,0) width 384: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (411,0) width 384: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}"
+          text run at (448,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}"
+          text run at (485,0) width 391: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}"
+          text run at (522,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
 selection start: position 5 of child 0 {#text} of child 1 {DIV} of body
-selection end:   position 203 of child 0 {#text} of child 1 {DIV} of body
+selection end:   position 185 of child 0 {#text} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-lr-expected.png
index 4ad97470..e7258c5 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-lr-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-lr-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-lr-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-lr-expected.txt
index 5b9d4d4..05db3e1 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-lr-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-lr-expected.txt
@@ -1,23 +1,23 @@
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
-layer at (0,0) size 112x600
-  LayoutBlockFlow {HTML} at (0,0) size 112x600 [border: (10px solid #800000)]
-    LayoutBlockFlow {BODY} at (18,18) size 76x564
-      LayoutText {#text} at (10,0) size 45x220
-        text run at (10,0) width 220: "\x{653B}\x{6BBB} \x{6A5F}\x{52D5}\x{968A} "
+layer at (0,0) size 115x600
+  LayoutBlockFlow {HTML} at (0,0) size 115x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 79x564
+      LayoutText {#text} at (13,0) size 45x220
+        text run at (13,0) width 220: "\x{653B}\x{6BBB} \x{6A5F}\x{52D5}\x{968A} "
       LayoutRuby (inline) {RUBY} at (0,0) size 45x200
-        LayoutRubyRun (anonymous) at (0,220) size 64x80
-          LayoutRubyText {RT} at (49,0) size 32x80
-            LayoutText {#text} at (5,0) size 22x80
-              text run at (5,0) width 80: "\x{3053}\x{3046}\x{304B}\x{304F}"
-          LayoutRubyBase (anonymous) at (0,0) size 64x80
-            LayoutText {#text} at (9,0) size 45x80
-              text run at (9,0) width 80: "\x{653B}\x{6BBB}"
-        LayoutRubyRun (anonymous) at (0,300) size 64x120
-          LayoutRubyText {RT} at (49,0) size 32x120
-            LayoutText {#text} at (5,2) size 22x116
-              text run at (5,2) width 116: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}"
-          LayoutRubyBase (anonymous) at (0,0) size 64x120
-            LayoutText {#text} at (9,0) size 45x120
-              text run at (9,0) width 120: "\x{6A5F}\x{52D5}\x{968A}"
+        LayoutRubyRun (anonymous) at (0,220) size 70x80
+          LayoutRubyText {RT} at (50,0) size 36x80
+            LayoutText {#text} at (7,0) size 22x80
+              text run at (7,0) width 80: "\x{3053}\x{3046}\x{304B}\x{304F}"
+          LayoutRubyBase (anonymous) at (0,0) size 70x80
+            LayoutText {#text} at (12,0) size 45x80
+              text run at (12,0) width 80: "\x{653B}\x{6BBB}"
+        LayoutRubyRun (anonymous) at (0,300) size 70x120
+          LayoutRubyText {RT} at (50,0) size 36x120
+            LayoutText {#text} at (7,2) size 22x116
+              text run at (7,2) width 116: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}"
+          LayoutRubyBase (anonymous) at (0,0) size 70x120
+            LayoutText {#text} at (12,0) size 45x120
+              text run at (12,0) width 120: "\x{6A5F}\x{52D5}\x{968A}"
       LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-rl-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-rl-expected.png
index dad39cdc9..3219b9c7 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-rl-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-rl-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-rl-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-rl-expected.txt
index be839ebd..5e77914 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-rl-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/japanese-ruby-vertical-rl-expected.txt
@@ -1,23 +1,23 @@
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
-layer at (687,0) size 113x600
-  LayoutBlockFlow {HTML} at (0,0) size 113x600 [border: (10px solid #800000)]
-    LayoutBlockFlow {BODY} at (18,18) size 77x564
+layer at (684,0) size 116x600
+  LayoutBlockFlow {HTML} at (0,0) size 116x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 80x564
       LayoutText {#text} at (22,0) size 45x220
         text run at (22,0) width 220: "\x{653B}\x{6BBB} \x{6A5F}\x{52D5}\x{968A} "
       LayoutRuby (inline) {RUBY} at (0,0) size 45x200
-        LayoutRubyRun (anonymous) at (13,220) size 64x80
-          LayoutRubyText {RT} at (-18,0) size 32x80
-            LayoutText {#text} at (5,0) size 22x80
-              text run at (5,0) width 80: "\x{3053}\x{3046}\x{304B}\x{304F}"
-          LayoutRubyBase (anonymous) at (0,0) size 64x80
-            LayoutText {#text} at (9,0) size 45x80
-              text run at (9,0) width 80: "\x{653B}\x{6BBB}"
-        LayoutRubyRun (anonymous) at (13,300) size 64x120
-          LayoutRubyText {RT} at (-18,0) size 32x120
-            LayoutText {#text} at (5,2) size 22x116
-              text run at (5,2) width 116: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}"
-          LayoutRubyBase (anonymous) at (0,0) size 64x120
-            LayoutText {#text} at (9,0) size 45x120
-              text run at (9,0) width 120: "\x{6A5F}\x{52D5}\x{968A}"
+        LayoutRubyRun (anonymous) at (10,220) size 70x80
+          LayoutRubyText {RT} at (-17,0) size 36x80
+            LayoutText {#text} at (7,0) size 22x80
+              text run at (7,0) width 80: "\x{3053}\x{3046}\x{304B}\x{304F}"
+          LayoutRubyBase (anonymous) at (0,0) size 70x80
+            LayoutText {#text} at (12,0) size 45x80
+              text run at (12,0) width 80: "\x{653B}\x{6BBB}"
+        LayoutRubyRun (anonymous) at (10,300) size 70x120
+          LayoutRubyText {RT} at (-17,0) size 36x120
+            LayoutText {#text} at (7,2) size 22x116
+              text run at (7,2) width 116: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}"
+          LayoutRubyBase (anonymous) at (0,0) size 70x120
+            LayoutText {#text} at (12,0) size 45x120
+              text run at (12,0) width 120: "\x{6A5F}\x{52D5}\x{968A}"
       LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/text-combine-various-fonts-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/text-combine-various-fonts-expected.png
index b32d9ffca..638ed02 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/text-combine-various-fonts-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/text-combine-various-fonts-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-01-t-expected.png
index 6c3edd5..4b258f038 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-01-t-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-01-t-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-01-t-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-01-t-expected.txt
index da2e037d..96449af 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-01-t-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-01-t-expected.txt
@@ -31,10 +31,10 @@
         LayoutSVGText {text} at (10,235) size 264x19 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 264x19
             chunk 1 text run 1 at (10.00,250.00) startOffset 0 endOffset 20 width 263.49: "Chinese:\x{6211}\x{80FD}\x{541E}\x{4E0B}\x{73BB}\x{7483}\x{800C}\x{4E0D}\x{4F24}\x{8EAB}\x{4F53}\x{3002}"
-      LayoutSVGContainer {g} at (10,270) size 255x19
-        LayoutSVGText {text} at (10,270) size 255x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 255x19
-            chunk 1 text run 1 at (10.00,285.00) startOffset 0 endOffset 21 width 254.34: "Japanese: \x{79C1}\x{306F}\x{30AC}\x{30E9}\x{30B9}\x{3092}\x{98DF}\x{3079}\x{307E}\x{3059}\x{3002}"
+      LayoutSVGContainer {g} at (10,270) size 257x19
+        LayoutSVGText {text} at (10,270) size 257x19 contains 1 chunk(s)
+          LayoutSVGInlineText {#text} at (0,0) size 257x19
+            chunk 1 text run 1 at (10.00,285.00) startOffset 0 endOffset 21 width 256.39: "Japanese: \x{79C1}\x{306F}\x{30AC}\x{30E9}\x{30B9}\x{3092}\x{98DF}\x{3079}\x{307E}\x{3059}\x{3002}"
     LayoutSVGText {text} at (10,304) size 264x45 contains 1 chunk(s)
       LayoutSVGInlineText {#text} at (0,0) size 264x45
         chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 263.34: "$Revision: 1.7 $"
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-03-b-expected.png
index 7c675c1..6b4ff47f 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-03-b-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-03-b-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-04-t-expected.png
index c8268b7..92f5290 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-04-t-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-04-t-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-04-t-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-04-t-expected.txt
index cdf162d..ff723c9e 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-04-t-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-intro-04-t-expected.txt
@@ -3,11 +3,11 @@
 layer at (0,0) size 480x360
   LayoutSVGRoot {svg} at (0,0) size 480x360
     LayoutSVGHiddenContainer {defs} at (0,0) size 0x0
-    LayoutSVGContainer {g} at (10,6) size 435x238
+    LayoutSVGContainer {g} at (10,6) size 436x238
       LayoutSVGText {text} at (10,6) size 138x17 contains 1 chunk(s)
         LayoutSVGInlineText {#text} at (0,0) size 138x17
           chunk 1 text run 1 at (10.00,20.00) startOffset 0 endOffset 21 width 137.84: "Test horizontal text."
-      LayoutSVGContainer {g} at (10,45) size 435x199
+      LayoutSVGContainer {g} at (10,45) size 436x199
         LayoutSVGText {text} at (10,45) size 283x19 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 283x19
             chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 42 width 282.83: "Polish: Mog\x{119} je\x{15B}\x{107} szk\x{142}o, i mi nie szkodzi."
@@ -30,9 +30,9 @@
         LayoutSVGText {text} at (10,195) size 264x19 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 264x19
             chunk 1 text run 1 at (10.00,210.00) startOffset 0 endOffset 20 width 263.49: "Chinese:\x{6211}\x{80FD}\x{541E}\x{4E0B}\x{73BB}\x{7483}\x{800C}\x{4E0D}\x{4F24}\x{8EAB}\x{4F53}\x{3002}"
-        LayoutSVGText {text} at (10,227) size 435x17 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 435x17
-            chunk 1 text run 1 at (10.00,240.00) startOffset 0 endOffset 35 width 434.20: "Japanese: \x{79C1}\x{306F}\x{30AC}\x{30E9}\x{30B9}\x{3092}\x{98DF}\x{3079}\x{3089}\x{308C}\x{307E}\x{3059}\x{3002}\x{305D}\x{308C}\x{306F}\x{79C1}\x{3092}\x{50B7}\x{3064}\x{3051}\x{307E}\x{305B}\x{3093}\x{3002}"
+        LayoutSVGText {text} at (10,227) size 436x17 contains 1 chunk(s)
+          LayoutSVGInlineText {#text} at (0,0) size 436x17
+            chunk 1 text run 1 at (10.00,240.00) startOffset 0 endOffset 35 width 436.00: "Japanese: \x{79C1}\x{306F}\x{30AC}\x{30E9}\x{30B9}\x{3092}\x{98DF}\x{3079}\x{3089}\x{308C}\x{307E}\x{3059}\x{3002}\x{305D}\x{308C}\x{306F}\x{79C1}\x{3092}\x{50B7}\x{3064}\x{3051}\x{307E}\x{305B}\x{3093}\x{3002}"
     LayoutSVGText {text} at (10,304) size 284x45 contains 1 chunk(s)
       LayoutSVGInlineText {#text} at (0,0) size 284x45
         chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 17 width 283.34: "$Revision: 1.10 $"
diff --git a/third_party/WebKit/LayoutTests/platform/win7/svg/W3C-SVG-1.1/text-intro-01-t-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/svg/W3C-SVG-1.1/text-intro-01-t-expected.txt
deleted file mode 100644
index 96449af..0000000
--- a/third_party/WebKit/LayoutTests/platform/win7/svg/W3C-SVG-1.1/text-intro-01-t-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-layer at (0,0) size 480x360
-  LayoutView at (0,0) size 480x360
-layer at (0,0) size 480x360
-  LayoutSVGRoot {svg} at (0,0) size 480x360
-    LayoutSVGHiddenContainer {defs} at (0,0) size 0x0
-    LayoutSVGContainer {g} at (5,4) size 363x285
-      LayoutSVGText {text} at (5,4) size 363x45 contains 1 chunk(s)
-        LayoutSVGInlineText {#text} at (0,0) size 363x45
-          chunk 1 text run 1 at (5.00,40.00) startOffset 0 endOffset 24 width 362.34: "Test left-to-right text."
-      LayoutSVGContainer {g} at (10,60) size 222x159
-        LayoutSVGText {text} at (10,60) size 215x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 215x19
-            chunk 1 text run 1 at (10.00,75.00) startOffset 0 endOffset 33 width 214.38: "Polish: Mog\x{119} je\x{15B}\x{107} szk\x{142}o, i mi ..."
-        LayoutSVGText {text} at (10,95) size 222x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 222x19
-            chunk 1 text run 1 at (10.00,110.00) startOffset 0 endOffset 32 width 221.34: "Russian: \x{42F} \x{43C}\x{43E}\x{433}\x{443} \x{435}\x{441}\x{442}\x{44C} \x{441}\x{442}\x{435}\x{43A}\x{43B}\x{43E}, ..."
-        LayoutSVGText {text} at (10,130) size 175x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 175x19
-            chunk 1 text run 1 at (10.00,145.00) startOffset 0 endOffset 23 width 174.37: "Greek: \x{39C}\x{3C0}\x{3BF}\x{3C1}\x{3CE} \x{3BD}\x{3B1} \x{3C6}\x{3AC}\x{3C9} ..."
-        LayoutSVGText {text} at (10,165) size 207x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 207x19
-            chunk 1 text run 1 at (10.00,180.00) startOffset 0 endOffset 8 width 62.78: "Hebrew: "
-            chunk 1 text run 1 at (72.78,180.00) startOffset 0 endOffset 21 width 126.91 RTL: "\x{5D0}\x{5E0}\x{5D9} \x{5D9}\x{5DB}\x{5D5}\x{5DC} \x{5DC}\x{5D0}\x{5DB}\x{5D5}\x{5DC} \x{5D6}\x{5DB}\x{5D5}\x{5DB}\x{5D9}\x{5EA}"
-            chunk 1 text run 1 at (199.69,180.00) startOffset 0 endOffset 4 width 17.00: " ..."
-        LayoutSVGText {text} at (10,200) size 201x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 201x19
-            chunk 1 text run 1 at (10.00,215.00) startOffset 0 endOffset 9 width 61.87: "Yiddish: "
-            chunk 1 text run 1 at (71.87,215.00) startOffset 0 endOffset 21 width 121.98 RTL: "\x{5D0}\x{5D9}\x{5DA} \x{5E7}\x{5E2}\x{5DF} \x{5E2}\x{5E1}\x{5DF} \x{5D2}\x{5DC}\x{5D0}\x{5B8}\x{5D6} \x{5D0}\x{5D5}\x{5DF}"
-            chunk 1 text run 1 at (193.85,215.00) startOffset 0 endOffset 4 width 17.00: " ..."
-      LayoutSVGContainer {g} at (10,235) size 264x19
-        LayoutSVGText {text} at (10,235) size 264x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 264x19
-            chunk 1 text run 1 at (10.00,250.00) startOffset 0 endOffset 20 width 263.49: "Chinese:\x{6211}\x{80FD}\x{541E}\x{4E0B}\x{73BB}\x{7483}\x{800C}\x{4E0D}\x{4F24}\x{8EAB}\x{4F53}\x{3002}"
-      LayoutSVGContainer {g} at (10,270) size 257x19
-        LayoutSVGText {text} at (10,270) size 257x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 257x19
-            chunk 1 text run 1 at (10.00,285.00) startOffset 0 endOffset 21 width 256.39: "Japanese: \x{79C1}\x{306F}\x{30AC}\x{30E9}\x{30B9}\x{3092}\x{98DF}\x{3079}\x{307E}\x{3059}\x{3002}"
-    LayoutSVGText {text} at (10,304) size 264x45 contains 1 chunk(s)
-      LayoutSVGInlineText {#text} at (0,0) size 264x45
-        chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 263.34: "$Revision: 1.7 $"
-    LayoutSVGRect {rect} at (0,0) size 480x360 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
diff --git a/third_party/WebKit/LayoutTests/platform/win7/svg/W3C-SVG-1.1/text-intro-04-t-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/svg/W3C-SVG-1.1/text-intro-04-t-expected.txt
deleted file mode 100644
index ff723c9e..0000000
--- a/third_party/WebKit/LayoutTests/platform/win7/svg/W3C-SVG-1.1/text-intro-04-t-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-layer at (0,0) size 480x360
-  LayoutView at (0,0) size 480x360
-layer at (0,0) size 480x360
-  LayoutSVGRoot {svg} at (0,0) size 480x360
-    LayoutSVGHiddenContainer {defs} at (0,0) size 0x0
-    LayoutSVGContainer {g} at (10,6) size 436x238
-      LayoutSVGText {text} at (10,6) size 138x17 contains 1 chunk(s)
-        LayoutSVGInlineText {#text} at (0,0) size 138x17
-          chunk 1 text run 1 at (10.00,20.00) startOffset 0 endOffset 21 width 137.84: "Test horizontal text."
-      LayoutSVGContainer {g} at (10,45) size 436x199
-        LayoutSVGText {text} at (10,45) size 283x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 283x19
-            chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 42 width 282.83: "Polish: Mog\x{119} je\x{15B}\x{107} szk\x{142}o, i mi nie szkodzi."
-        LayoutSVGText {text} at (10,75) size 341x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 341x19
-            chunk 1 text run 1 at (10.00,90.00) startOffset 0 endOffset 47 width 340.38: "Russian: \x{42F} \x{43C}\x{43E}\x{433}\x{443} \x{435}\x{441}\x{442}\x{44C} \x{441}\x{442}\x{435}\x{43A}\x{43B}\x{43E}, \x{44D}\x{442}\x{43E} \x{43C}\x{43D}\x{435} \x{43D}\x{435} \x{432}\x{440}\x{435}\x{434}\x{438}\x{442}."
-        LayoutSVGText {text} at (10,107) size 385x17 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 385x17
-            chunk 1 text run 1 at (10.00,120.00) startOffset 0 endOffset 57 width 384.49: "Greek: \x{39C}\x{3C0}\x{3BF}\x{3C1}\x{3CE} \x{3BD}\x{3B1} \x{3C6}\x{3AC}\x{3C9} \x{3C3}\x{3C0}\x{3B1}\x{3C3}\x{3BC}\x{3AD}\x{3BD}\x{3B1} \x{3B3}\x{3C5}\x{3B1}\x{3BB}\x{3B9}\x{3AC} \x{3C7}\x{3C9}\x{3C1}\x{3AF}\x{3C2} \x{3BD}\x{3B1} \x{3C0}\x{3AC}\x{3B8}\x{3C9} \x{3C4}\x{3AF}\x{3C0}\x{3BF}\x{3C4}\x{3B1}."
-        LayoutSVGText {text} at (10,135) size 354x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 354x19
-            chunk 1 text run 1 at (10.00,150.00) startOffset 0 endOffset 6 width 41.16: "Text \""
-            chunk 1 text run 1 at (51.16,150.00) startOffset 0 endOffset 36 width 214.62 RTL: "\x{5D0}\x{5E0}\x{5D9} \x{5D9}\x{5DB}\x{5D5}\x{5DC} \x{5DC}\x{5D0}\x{5DB}\x{5D5}\x{5DC} \x{5D6}\x{5DB}\x{5D5}\x{5DB}\x{5D9}\x{5EA} \x{5D5}\x{5D6}\x{5D4} \x{5DC}\x{5D0} \x{5DE}\x{5D6}\x{5D9}\x{5E7} \x{5DC}\x{5D9}"
-            chunk 1 text run 1 at (265.77,150.00) startOffset 0 endOffset 14 width 98.06: "\" is in Hebrew"
-        LayoutSVGText {text} at (10,165) size 314x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 314x19
-            chunk 1 text run 1 at (10.00,180.00) startOffset 0 endOffset 9 width 61.87: "Yiddish: "
-            chunk 1 text run 1 at (71.87,180.00) startOffset 0 endOffset 40 width 247.40 RTL: "\x{5D0}\x{5D9}\x{5DA} \x{5E7}\x{5E2}\x{5DF} \x{5E2}\x{5E1}\x{5DF} \x{5D2}\x{5DC}\x{5D0}\x{5B8}\x{5D6} \x{5D0}\x{5D5}\x{5DF} \x{5E2}\x{5E1} \x{5D8}\x{5D5}\x{5D8} \x{5DE}\x{5D9}\x{5E8} \x{5E0}\x{5D9}\x{5E9}\x{5D8} \x{5F0}\x{5F2}"
-            chunk 1 text run 1 at (319.27,180.00) startOffset 0 endOffset 1 width 4.25: "."
-        LayoutSVGText {text} at (10,195) size 264x19 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 264x19
-            chunk 1 text run 1 at (10.00,210.00) startOffset 0 endOffset 20 width 263.49: "Chinese:\x{6211}\x{80FD}\x{541E}\x{4E0B}\x{73BB}\x{7483}\x{800C}\x{4E0D}\x{4F24}\x{8EAB}\x{4F53}\x{3002}"
-        LayoutSVGText {text} at (10,227) size 436x17 contains 1 chunk(s)
-          LayoutSVGInlineText {#text} at (0,0) size 436x17
-            chunk 1 text run 1 at (10.00,240.00) startOffset 0 endOffset 35 width 436.00: "Japanese: \x{79C1}\x{306F}\x{30AC}\x{30E9}\x{30B9}\x{3092}\x{98DF}\x{3079}\x{3089}\x{308C}\x{307E}\x{3059}\x{3002}\x{305D}\x{308C}\x{306F}\x{79C1}\x{3092}\x{50B7}\x{3064}\x{3051}\x{307E}\x{305B}\x{3093}\x{3002}"
-    LayoutSVGText {text} at (10,304) size 284x45 contains 1 chunk(s)
-      LayoutSVGInlineText {#text} at (0,0) size 284x45
-        chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 17 width 283.34: "$Revision: 1.10 $"
-    LayoutSVGRect {rect} at (0,0) size 480x360 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
diff --git a/third_party/WebKit/LayoutTests/plugins/plugin-remove-subframe-expected.txt b/third_party/WebKit/LayoutTests/plugins/plugin-remove-subframe-expected.txt
index 83c681bd..ea30e40 100644
--- a/third_party/WebKit/LayoutTests/plugins/plugin-remove-subframe-expected.txt
+++ b/third_party/WebKit/LayoutTests/plugins/plugin-remove-subframe-expected.txt
@@ -1,4 +1,4 @@
-Test for bug 14437: RTÉ video crashes Safari.
+Test for bug 14437: RTÉ video crashes Safari.
 
 Only works with DumpRenderTree.
 
diff --git a/third_party/WebKit/LayoutTests/plugins/plugin-remove-subframe.html b/third_party/WebKit/LayoutTests/plugins/plugin-remove-subframe.html
index 2da034e..3062516 100644
--- a/third_party/WebKit/LayoutTests/plugins/plugin-remove-subframe.html
+++ b/third_party/WebKit/LayoutTests/plugins/plugin-remove-subframe.html
@@ -1,4 +1,4 @@
-<head>
+<head><meta charset="utf-8"/>
 <script>
 function test() {
   try {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/disallow-non-lengths-in-attrs.html b/third_party/WebKit/LayoutTests/svg/custom/disallow-non-lengths-in-attrs.html
index e6aaff5..6342b5cc 100644
--- a/third_party/WebKit/LayoutTests/svg/custom/disallow-non-lengths-in-attrs.html
+++ b/third_party/WebKit/LayoutTests/svg/custom/disallow-non-lengths-in-attrs.html
@@ -4,7 +4,7 @@
      https://svgwg.org/svg2-draft/styling.html#WidthProperty
      https://svgwg.org/svg2-draft/styling.html#HeightProperty
 
-     "For backwards compatibility, when the ‘width’ or ‘height’
+     "For backwards compatibility, when the 'width' or 'height'
       properties are specified as a presentation attributes, only the
       values that match the <length> production shall be mapped to
       CSS. Any other value must be treated as invalid." -->
diff --git a/third_party/WebKit/LayoutTests/svg/text/select-text-svgfont.html b/third_party/WebKit/LayoutTests/svg/text/select-text-svgfont.html
index b3dae37..87eb62429 100644
--- a/third_party/WebKit/LayoutTests/svg/text/select-text-svgfont.html
+++ b/third_party/WebKit/LayoutTests/svg/text/select-text-svgfont.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 <html>
-<head>
+<head><meta charset="utf-8"/>
 <title>Test for per-character selection with SVG font</title>
 <style>
 
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-layout-crash-expected.txt b/third_party/WebKit/LayoutTests/svg/text/text-layout-crash-expected.txt
index 534b2409..5e09f71 100644
--- a/third_party/WebKit/LayoutTests/svg/text/text-layout-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/svg/text/text-layout-crash-expected.txt
@@ -1,3 +1,3 @@
 This test passes if it does not crash.
-bc
+bc
  
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-layout-crash.html b/third_party/WebKit/LayoutTests/svg/text/text-layout-crash.html
index 1ee95f04..d530cb9 100644
--- a/third_party/WebKit/LayoutTests/svg/text/text-layout-crash.html
+++ b/third_party/WebKit/LayoutTests/svg/text/text-layout-crash.html
@@ -1,5 +1,6 @@
 <!DOCTYPE html>
 <html>
+<meta charset="utf-8">
 <body>
 <script>
   if (window.testRunner)
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/compositor-proxy-supports.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/compositor-proxy-supports.html
index 2a0437a..a323604 100644
--- a/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/compositor-proxy-supports.html
+++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/compositorworker/compositor-proxy-supports.html
@@ -1,4 +1,5 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <style>
 #container {
   width: 100px;
diff --git a/third_party/WebKit/Source/bindings/core/v8/CustomElementConstructorBuilder.cpp b/third_party/WebKit/Source/bindings/core/v8/CustomElementConstructorBuilder.cpp
index a601d09..5a7049ce 100644
--- a/third_party/WebKit/Source/bindings/core/v8/CustomElementConstructorBuilder.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/CustomElementConstructorBuilder.cpp
@@ -125,7 +125,7 @@
     return true;
 }
 
-PassRefPtrWillBeRawPtr<CustomElementLifecycleCallbacks> CustomElementConstructorBuilder::createCallbacks()
+RawPtr<CustomElementLifecycleCallbacks> CustomElementConstructorBuilder::createCallbacks()
 {
     ASSERT(!m_prototype.IsEmpty());
 
@@ -282,7 +282,7 @@
 
     ExceptionState exceptionState(ExceptionState::ConstructionContext, "CustomElement", info.Holder(), info.GetIsolate());
     CustomElementProcessingStack::CallbackDeliveryScope deliveryScope;
-    RefPtrWillBeRawPtr<Element> element = document->createElementNS(namespaceURI, tagName, maybeType->IsNull() ? nullAtom : type, exceptionState);
+    RawPtr<Element> element = document->createElementNS(namespaceURI, tagName, maybeType->IsNull() ? nullAtom : type, exceptionState);
     if (exceptionState.throwIfNeeded())
         return;
     v8SetReturnValueFast(info, element.release(), document);
diff --git a/third_party/WebKit/Source/bindings/core/v8/CustomElementConstructorBuilder.h b/third_party/WebKit/Source/bindings/core/v8/CustomElementConstructorBuilder.h
index 6e98e2b5..a3655ad4 100644
--- a/third_party/WebKit/Source/bindings/core/v8/CustomElementConstructorBuilder.h
+++ b/third_party/WebKit/Source/bindings/core/v8/CustomElementConstructorBuilder.h
@@ -65,7 +65,7 @@
 
     bool isFeatureAllowed() const;
     bool validateOptions(const AtomicString& type, QualifiedName& tagName, ExceptionState&);
-    PassRefPtrWillBeRawPtr<CustomElementLifecycleCallbacks> createCallbacks();
+    RawPtr<CustomElementLifecycleCallbacks> createCallbacks();
     bool createConstructor(Document*, CustomElementDefinition*, ExceptionState&);
     bool didRegisterDefinition() const;
 
@@ -83,7 +83,7 @@
     const ElementRegistrationOptions& m_options;
     v8::Local<v8::Object> m_prototype;
     v8::Local<v8::Function> m_constructor;
-    RefPtrWillBeMember<V8CustomElementLifecycleCallbacks> m_callbacks;
+    Member<V8CustomElementLifecycleCallbacks> m_callbacks;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/bindings/core/v8/DictionaryHelperForCore.cpp b/third_party/WebKit/Source/bindings/core/v8/DictionaryHelperForCore.cpp
index 5bf06c376..22f27920 100644
--- a/third_party/WebKit/Source/bindings/core/v8/DictionaryHelperForCore.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/DictionaryHelperForCore.cpp
@@ -188,7 +188,7 @@
 }
 
 template <>
-bool DictionaryHelper::get(const Dictionary& dictionary, const String& key, RefPtrWillBeMember<DOMWindow>& value)
+bool DictionaryHelper::get(const Dictionary& dictionary, const String& key, Member<DOMWindow>& value)
 {
     v8::Local<v8::Value> v8Value;
     if (!dictionary.get(key, v8Value))
@@ -222,7 +222,7 @@
 }
 
 template <>
-bool DictionaryHelper::get(const Dictionary& dictionary, const String& key, RefPtrWillBeMember<EventTarget>& value)
+bool DictionaryHelper::get(const Dictionary& dictionary, const String& key, Member<EventTarget>& value)
 {
     v8::Local<v8::Value> v8Value;
     if (!dictionary.get(key, v8Value))
diff --git a/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp b/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
index 60cc07d..4824e09 100644
--- a/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
@@ -68,7 +68,7 @@
             init.setPromise(ScriptPromise(m_scriptState, value));
             init.setReason(ScriptValue(m_scriptState, reason));
             init.setCancelable(true);
-            RefPtrWillBeRawPtr<PromiseRejectionEvent> event = PromiseRejectionEvent::create(m_scriptState, EventTypeNames::unhandledrejection, init);
+            RawPtr<PromiseRejectionEvent> event = PromiseRejectionEvent::create(m_scriptState, EventTypeNames::unhandledrejection, init);
             // Log to console if event was not canceled.
             m_shouldLogToConsole = target->dispatchEvent(event) == DispatchEventResult::NotCanceled;
         }
@@ -78,7 +78,7 @@
             Vector<ScriptValue> args;
             args.append(ScriptValue(m_scriptState, v8String(m_scriptState->isolate(), errorMessage)));
             args.append(ScriptValue(m_scriptState, reason));
-            RefPtrWillBeRawPtr<ScriptArguments> arguments = ScriptArguments::create(m_scriptState, args);
+            RawPtr<ScriptArguments> arguments = ScriptArguments::create(m_scriptState, args);
 
             String embedderErrorMessage = m_errorMessage;
             if (embedderErrorMessage.isEmpty())
@@ -86,7 +86,7 @@
             else if (embedderErrorMessage.startsWith("Uncaught "))
                 embedderErrorMessage.insert(" (in promise)", 8);
 
-            RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, embedderErrorMessage, m_resourceName, m_lineNumber, m_columnNumber);
+            RawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, embedderErrorMessage, m_resourceName, m_lineNumber, m_columnNumber);
             consoleMessage->setScriptArguments(arguments);
             consoleMessage->setCallStack(m_callStack);
             consoleMessage->setScriptId(m_scriptId);
@@ -115,12 +115,12 @@
             PromiseRejectionEventInit init;
             init.setPromise(ScriptPromise(m_scriptState, value));
             init.setReason(ScriptValue(m_scriptState, reason));
-            RefPtrWillBeRawPtr<PromiseRejectionEvent> event = PromiseRejectionEvent::create(m_scriptState, EventTypeNames::rejectionhandled, init);
+            RawPtr<PromiseRejectionEvent> event = PromiseRejectionEvent::create(m_scriptState, EventTypeNames::rejectionhandled, init);
             target->dispatchEvent(event);
         }
 
         if (m_shouldLogToConsole) {
-            RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessageSource, RevokedErrorMessageLevel, "Handler added to rejected promise");
+            RawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessageSource, RevokedErrorMessageLevel, "Handler added to rejected promise");
             consoleMessage->setRelatedMessageId(m_consoleMessageId);
             executionContext->addConsoleMessage(consoleMessage.release());
         }
@@ -220,7 +220,7 @@
         auto& message = m_reportedAsErrors.at(i);
         if (!message->isCollected() && message->hasPromise(data.GetPromise())) {
             message->makePromiseStrong();
-            Platform::current()->currentThread()->scheduler()->timerTaskRunner()->postTask(BLINK_FROM_HERE, bind(&RejectedPromises::revokeNow, PassRefPtrWillBeRawPtr<RejectedPromises>(this), message.release()));
+            Platform::current()->currentThread()->scheduler()->timerTaskRunner()->postTask(BLINK_FROM_HERE, bind(&RejectedPromises::revokeNow, RawPtr<RejectedPromises>(this), message.release()));
             m_reportedAsErrors.remove(i);
             return;
         }
diff --git a/third_party/WebKit/Source/bindings/core/v8/RetainedDOMInfo.h b/third_party/WebKit/Source/bindings/core/v8/RetainedDOMInfo.h
index 237868a..0372b167 100644
--- a/third_party/WebKit/Source/bindings/core/v8/RetainedDOMInfo.h
+++ b/third_party/WebKit/Source/bindings/core/v8/RetainedDOMInfo.h
@@ -57,7 +57,7 @@
 private:
     // V8 guarantees to keep RetainedObjectInfos alive only during a GC or heap snapshotting round, when renderer
     // doesn't get control. This allows us to use raw pointers.
-    RawPtrWillBeUntracedMember<Node> m_root;
+    UntracedMember<Node> m_root;
 };
 
 class ActiveDOMObjectsInfo final : public RetainedObjectInfo {
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.cpp b/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.cpp
index e217b8a5..d94c8b2 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.cpp
@@ -45,15 +45,15 @@
 
 namespace blink {
 
-PassOwnPtrWillBeRawPtr<ScheduledAction> ScheduledAction::create(ScriptState* scriptState, const ScriptValue& handler, const Vector<ScriptValue>& arguments)
+RawPtr<ScheduledAction> ScheduledAction::create(ScriptState* scriptState, const ScriptValue& handler, const Vector<ScriptValue>& arguments)
 {
     ASSERT(handler.isFunction());
-    return adoptPtrWillBeNoop(new ScheduledAction(scriptState, handler, arguments));
+    return new ScheduledAction(scriptState, handler, arguments);
 }
 
-PassOwnPtrWillBeRawPtr<ScheduledAction> ScheduledAction::create(ScriptState* scriptState, const String& handler)
+RawPtr<ScheduledAction> ScheduledAction::create(ScriptState* scriptState, const String& handler)
 {
-    return adoptPtrWillBeNoop(new ScheduledAction(scriptState, handler));
+    return new ScheduledAction(scriptState, handler);
 }
 
 DEFINE_TRACE(ScheduledAction)
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.h b/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.h
index 11fd9bb4..816eab1 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.h
+++ b/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.h
@@ -45,12 +45,11 @@
 class ExecutionContext;
 class WorkerGlobalScope;
 
-class ScheduledAction final : public NoBaseWillBeGarbageCollectedFinalized<ScheduledAction> {
+class ScheduledAction final : public GarbageCollectedFinalized<ScheduledAction> {
     WTF_MAKE_NONCOPYABLE(ScheduledAction);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(ScheduledAction);
 public:
-    static PassOwnPtrWillBeRawPtr<ScheduledAction> create(ScriptState*, const ScriptValue& handler, const Vector<ScriptValue>& arguments);
-    static PassOwnPtrWillBeRawPtr<ScheduledAction> create(ScriptState*, const String& handler);
+    static RawPtr<ScheduledAction> create(ScriptState*, const ScriptValue& handler, const Vector<ScriptValue>& arguments);
+    static RawPtr<ScheduledAction> create(ScriptState*, const String& handler);
 
     ~ScheduledAction();
     DECLARE_TRACE();
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp
index c88c738..b4de42a8 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp
@@ -124,7 +124,7 @@
 v8::MaybeLocal<v8::Value> ScriptController::callFunction(v8::Local<v8::Function> function, v8::Local<v8::Value> receiver, int argc, v8::Local<v8::Value> info[])
 {
     // Keep LocalFrame (and therefore ScriptController) alive.
-    RefPtrWillBeRawPtr<LocalFrame> protect(frame());
+    RawPtr<LocalFrame> protect(frame());
     return ScriptController::callFunction(frame()->document(), function, receiver, argc, info, isolate());
 }
 
@@ -160,7 +160,7 @@
             *compilationFinishTime = WTF::monotonicallyIncreasingTime();
         }
         // Keep LocalFrame (and therefore ScriptController) alive.
-        RefPtrWillBeRawPtr<LocalFrame> protect(frame());
+        RawPtr<LocalFrame> protect(frame());
         if (!v8Call(V8ScriptRunner::runCompiledScript(isolate(), script, frame()->document()), result, tryCatch))
             return result;
     }
@@ -357,8 +357,8 @@
 
     // We need to hold onto the LocalFrame here because executing script can
     // destroy the frame.
-    RefPtrWillBeRawPtr<LocalFrame> protect(frame());
-    RefPtrWillBeRawPtr<Document> ownerDocument(frame()->document());
+    RawPtr<LocalFrame> protect(frame());
+    RawPtr<Document> ownerDocument(frame()->document());
 
     const int javascriptSchemeLength = sizeof("javascript:") - 1;
 
@@ -421,7 +421,7 @@
     v8::EscapableHandleScope handleScope(isolate());
     ScriptState::Scope scope(scriptState);
 
-    RefPtrWillBeRawPtr<LocalFrame> protect(frame());
+    RawPtr<LocalFrame> protect(frame());
     if (frame()->loader().stateMachine()->isDisplayingInitialEmptyDocument())
         frame()->loader().didAccessInitialDocument();
 
@@ -434,7 +434,7 @@
     return handleScope.Escape(object);
 }
 
-void ScriptController::executeScriptInIsolatedWorld(int worldID, const WillBeHeapVector<ScriptSourceCode>& sources, int extensionGroup, Vector<v8::Local<v8::Value>>* results)
+void ScriptController::executeScriptInIsolatedWorld(int worldID, const HeapVector<ScriptSourceCode>& sources, int extensionGroup, Vector<v8::Local<v8::Value>>* results)
 {
     ASSERT(worldID > 0);
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptController.h b/third_party/WebKit/Source/bindings/core/v8/ScriptController.h
index fc7c0a8..0637b98 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptController.h
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptController.h
@@ -64,18 +64,17 @@
     NotAboutToExecuteScript
 };
 
-class CORE_EXPORT ScriptController final : public NoBaseWillBeGarbageCollectedFinalized<ScriptController> {
+class CORE_EXPORT ScriptController final : public GarbageCollectedFinalized<ScriptController> {
     WTF_MAKE_NONCOPYABLE(ScriptController);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(ScriptController);
 public:
     enum ExecuteScriptPolicy {
         ExecuteScriptWhenScriptsDisabled,
         DoNotExecuteScriptWhenScriptsDisabled
     };
 
-    static PassOwnPtrWillBeRawPtr<ScriptController> create(LocalFrame* frame)
+    static RawPtr<ScriptController> create(LocalFrame* frame)
     {
-        return adoptPtrWillBeNoop(new ScriptController(frame));
+        return new ScriptController(frame);
     }
 
     ~ScriptController();
@@ -100,7 +99,7 @@
     //
     // FIXME: Get rid of extensionGroup here.
     // FIXME: We don't want to support multiple scripts.
-    void executeScriptInIsolatedWorld(int worldID, const WillBeHeapVector<ScriptSourceCode>& sources, int extensionGroup, Vector<v8::Local<v8::Value>>* results);
+    void executeScriptInIsolatedWorld(int worldID, const HeapVector<ScriptSourceCode>& sources, int extensionGroup, Vector<v8::Local<v8::Value>>* results);
 
     // Returns true if argument is a JavaScript URL.
     bool executeScriptIfJavaScriptURL(const KURL&);
@@ -154,7 +153,7 @@
 
     v8::Local<v8::Value> evaluateScriptInMainWorld(const ScriptSourceCode&, AccessControlStatus, ExecuteScriptPolicy, double* compilationFinishTime = 0);
 
-    OwnPtrWillBeMember<WindowProxyManager> m_windowProxyManager;
+    Member<WindowProxyManager> m_windowProxyManager;
     const String* m_sourceURL;
 };
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptEventListener.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptEventListener.cpp
index 3c860ed..e080825 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptEventListener.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptEventListener.cpp
@@ -44,7 +44,7 @@
 
 namespace blink {
 
-PassRefPtrWillBeRawPtr<V8LazyEventListener> createAttributeEventListener(Node* node, const QualifiedName& name, const AtomicString& value, const AtomicString& eventParameterName)
+RawPtr<V8LazyEventListener> createAttributeEventListener(Node* node, const QualifiedName& name, const AtomicString& value, const AtomicString& eventParameterName)
 {
     ASSERT(node);
     if (value.isNull())
@@ -69,7 +69,7 @@
     return V8LazyEventListener::create(name.localName(), eventParameterName, value, sourceURL, position, node, isolate);
 }
 
-PassRefPtrWillBeRawPtr<V8LazyEventListener> createAttributeEventListener(LocalFrame* frame, const QualifiedName& name, const AtomicString& value, const AtomicString& eventParameterName)
+RawPtr<V8LazyEventListener> createAttributeEventListener(LocalFrame* frame, const QualifiedName& name, const AtomicString& value, const AtomicString& eventParameterName)
 {
     if (!frame)
         return nullptr;
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptEventListener.h b/third_party/WebKit/Source/bindings/core/v8/ScriptEventListener.h
index 0f6bc8ec5..6abc1530 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptEventListener.h
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptEventListener.h
@@ -43,8 +43,8 @@
 class Node;
 class QualifiedName;
 
-PassRefPtrWillBeRawPtr<V8LazyEventListener> createAttributeEventListener(Node*, const QualifiedName&, const AtomicString& value, const AtomicString& eventParameterName);
-PassRefPtrWillBeRawPtr<V8LazyEventListener> createAttributeEventListener(LocalFrame*, const QualifiedName&, const AtomicString& value, const AtomicString& eventParameterName);
+RawPtr<V8LazyEventListener> createAttributeEventListener(Node*, const QualifiedName&, const AtomicString& value, const AtomicString& eventParameterName);
+RawPtr<V8LazyEventListener> createAttributeEventListener(LocalFrame*, const QualifiedName&, const AtomicString& value, const AtomicString& eventParameterName);
 v8::Local<v8::Object> eventListenerHandler(ExecutionContext*, EventListener*);
 v8::Local<v8::Function> eventListenerEffectiveFunction(v8::Isolate*, v8::Local<v8::Object> handler);
 void getFunctionLocation(v8::Local<v8::Function>, String& scriptId, int& lineNumber, int& columnNumber);
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.h b/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.h
index 77bebd3..2aa2cdc 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.h
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyBase.h
@@ -24,7 +24,7 @@
 
 // TODO(yhirano): Remove NEVER_INLINE once we find the cause of crashes.
 class CORE_EXPORT ScriptPromisePropertyBase : public GarbageCollectedFinalized<ScriptPromisePropertyBase>, public ContextLifecycleObserver {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ScriptPromisePropertyBase);
+    USING_GARBAGE_COLLECTED_MIXIN(ScriptPromisePropertyBase);
 public:
     virtual ~ScriptPromisePropertyBase();
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptPromiseResolver.h b/third_party/WebKit/Source/bindings/core/v8/ScriptPromiseResolver.h
index 1a35e8361..15f0f5c 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptPromiseResolver.h
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptPromiseResolver.h
@@ -27,7 +27,7 @@
 //    resolve or reject will be delayed. When it is stopped, resolve or reject
 //    will be ignored.
 class CORE_EXPORT ScriptPromiseResolver : public GarbageCollectedFinalized<ScriptPromiseResolver>, public ActiveDOMObject {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ScriptPromiseResolver);
+    USING_GARBAGE_COLLECTED_MIXIN(ScriptPromiseResolver);
     WTF_MAKE_NONCOPYABLE(ScriptPromiseResolver);
 public:
     static ScriptPromiseResolver* create(ScriptState* scriptState)
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptSourceCode.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptSourceCode.cpp
index bc41b08..e42fbf4 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptSourceCode.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptSourceCode.cpp
@@ -34,7 +34,7 @@
     treatNullSourceAsEmpty();
 }
 
-ScriptSourceCode::ScriptSourceCode(PassRefPtrWillBeRawPtr<ScriptStreamer> streamer, ScriptResource* resource)
+ScriptSourceCode::ScriptSourceCode(RawPtr<ScriptStreamer> streamer, ScriptResource* resource)
     : m_source(resource->script())
     , m_resource(resource)
     , m_streamer(streamer)
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptSourceCode.h b/third_party/WebKit/Source/bindings/core/v8/ScriptSourceCode.h
index 0cc57e4..13143ce 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptSourceCode.h
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptSourceCode.h
@@ -50,7 +50,7 @@
     explicit ScriptSourceCode(ScriptResource*);
     ScriptSourceCode(const String&, const KURL& = KURL(), const TextPosition& startPosition = TextPosition::minimumPosition());
     ScriptSourceCode(const CompressibleString&, const KURL& = KURL(), const TextPosition& startPosition = TextPosition::minimumPosition());
-    ScriptSourceCode(PassRefPtrWillBeRawPtr<ScriptStreamer>, ScriptResource*);
+    ScriptSourceCode(RawPtr<ScriptStreamer>, ScriptResource*);
 
     ~ScriptSourceCode();
     DECLARE_TRACE();
@@ -74,8 +74,8 @@
     void treatNullSourceAsEmpty();
 
     CompressibleString m_source;
-    RefPtrWillBeMember<ScriptResource> m_resource;
-    RefPtrWillBeMember<ScriptStreamer> m_streamer;
+    Member<ScriptResource> m_resource;
+    Member<ScriptStreamer> m_streamer;
     mutable KURL m_url;
     TextPosition m_startPosition;
 };
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
index 2f82ff2..af05daba 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
@@ -570,7 +570,7 @@
 
     // Calling notifyFinishedToClient can result into the upper layers dropping
     // references to ScriptStreamer. Keep it alive until this function ends.
-    RefPtrWillBeRawPtr<ScriptStreamer> protect(this);
+    RawPtr<ScriptStreamer> protect(this);
 
     notifyFinishedToClient();
 }
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.h b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.h
index 67b5594..98c4f6e0 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.h
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.h
@@ -29,7 +29,7 @@
 // streaming. It is possible, though, that Document and the PendingScript are
 // destroyed while the streaming is in progress, and ScriptStreamer handles it
 // gracefully.
-class CORE_EXPORT ScriptStreamer final : public RefCountedWillBeRefCountedGarbageCollected<ScriptStreamer> {
+class CORE_EXPORT ScriptStreamer final : public RefCountedGarbageCollected<ScriptStreamer> {
     WTF_MAKE_NONCOPYABLE(ScriptStreamer);
 public:
     enum Type {
@@ -98,9 +98,9 @@
     // streamed. Non-const for testing.
     static size_t s_smallScriptThreshold;
 
-    static PassRefPtrWillBeRawPtr<ScriptStreamer> create(PendingScript* script, Type scriptType, ScriptState* scriptState, v8::ScriptCompiler::CompileOptions compileOptions, WebTaskRunner* loadingTaskRunner)
+    static RawPtr<ScriptStreamer> create(PendingScript* script, Type scriptType, ScriptState* scriptState, v8::ScriptCompiler::CompileOptions compileOptions, WebTaskRunner* loadingTaskRunner)
     {
-        return adoptRefWillBeNoop(new ScriptStreamer(script, scriptType, scriptState, compileOptions, loadingTaskRunner));
+        return new ScriptStreamer(script, scriptType, scriptState, compileOptions, loadingTaskRunner);
     }
     ScriptStreamer(PendingScript*, Type, ScriptState*, v8::ScriptCompiler::CompileOptions, WebTaskRunner*);
 
@@ -109,11 +109,11 @@
 
     static bool startStreamingInternal(PendingScript*, Type, Settings*, ScriptState*, WebTaskRunner*);
 
-    RawPtrWillBeMember<PendingScript> m_pendingScript;
+    Member<PendingScript> m_pendingScript;
     // This pointer is weak. If PendingScript and its Resource are deleted
     // before ScriptStreamer, PendingScript will notify ScriptStreamer of its
     // deletion by calling cancel().
-    RawPtrWillBeMember<ScriptResource> m_resource;
+    Member<ScriptResource> m_resource;
     // Whether ScriptStreamer is detached from the Resource. In those cases, the
     // script data is not needed any more, and the client won't get notified
     // when the loading and streaming are done.
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp
index 0e2c62d..b267c12 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp
@@ -88,8 +88,8 @@
     // fetch any data outside the test; the test controls the data by calling
     // ScriptResource::appendData.
     ResourceRequest m_resourceRequest;
-    RefPtrWillBePersistent<ScriptResource> m_resource;
-    OwnPtrWillBePersistent<PendingScript> m_pendingScript;
+    Persistent<ScriptResource> m_resource;
+    Persistent<PendingScript> m_pendingScript;
 };
 
 class TestScriptResourceClient : public ScriptResourceClient {
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp
index bb3c413..44b7af4 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp
@@ -1634,7 +1634,7 @@
     ImageData* imageData = doReadImageData();
     if (!imageData)
         return false;
-    RefPtrWillBeRawPtr<ImageBitmap> imageBitmap = ImageBitmap::create(imageData, IntRect(0, 0, imageData->width(), imageData->height()));
+    RawPtr<ImageBitmap> imageBitmap = ImageBitmap::create(imageData, IntRect(0, 0, imageData->width(), imageData->height()));
     if (!imageBitmap.get())
         return false;
     *value = toV8(imageBitmap.get(), m_scriptState->context()->Global(), isolate());
@@ -2172,7 +2172,7 @@
         return false;
     v8::Local<v8::Value> result = m_imageBitmaps.at(index);
     if (result.IsEmpty()) {
-        RefPtrWillBeRawPtr<ImageBitmap> bitmap = ImageBitmap::create(m_imageBitmapContents->at(index));
+        RawPtr<ImageBitmap> bitmap = ImageBitmap::create(m_imageBitmapContents->at(index));
         v8::Isolate* isolate = m_reader.getScriptState()->isolate();
         v8::Local<v8::Object> creationContext = m_reader.getScriptState()->context()->Global();
         result = toV8(bitmap.get(), creationContext, isolate);
diff --git a/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp b/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp
index 8e0d988a..912db456d 100644
--- a/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp
@@ -113,7 +113,7 @@
     }
 
     OwnPtr<ImageBitmapContentsArray> contents = adoptPtr(new ImageBitmapContentsArray);
-    WillBeHeapHashSet<RawPtrWillBeMember<ImageBitmap>> visited;
+    HeapHashSet<Member<ImageBitmap>> visited;
     for (size_t i = 0; i < imageBitmaps.size(); i++) {
         if (visited.contains(imageBitmaps[i].get()))
             continue;
@@ -247,7 +247,7 @@
             }
             arrayBuffers.append(sharedArrayBuffer.release());
         } else if (V8ImageBitmap::hasInstance(transferrable, isolate)) {
-            RefPtrWillBeRawPtr<ImageBitmap> imageBitmap = V8ImageBitmap::toImpl(v8::Local<v8::Object>::Cast(transferrable));
+            RawPtr<ImageBitmap> imageBitmap = V8ImageBitmap::toImpl(v8::Local<v8::Object>::Cast(transferrable));
             if (imageBitmaps.contains(imageBitmap)) {
                 exceptionState.throwDOMException(DataCloneError, "ImageBitmap at index " + String::number(i) + " is a duplicate of an earlier ImageBitmap.");
                 return false;
diff --git a/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.h b/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.h
index afd001a5..44d6863 100644
--- a/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.h
+++ b/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.h
@@ -57,7 +57,7 @@
 typedef Vector<RefPtr<DOMArrayBufferBase>, 1> ArrayBufferArray;
 typedef HashMap<String, RefPtr<BlobDataHandle>> BlobDataHandleMap;
 typedef Vector<WebBlobInfo> WebBlobInfoArray;
-typedef WillBeHeapVector<RefPtrWillBeMember<ImageBitmap>, 1> ImageBitmapArray;
+typedef HeapVector<Member<ImageBitmap>, 1> ImageBitmapArray;
 
 class CORE_EXPORT SerializedScriptValue : public ThreadSafeRefCounted<SerializedScriptValue> {
 public:
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp b/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp
index 4888c6d..cb67468 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp
@@ -88,7 +88,7 @@
 {
     // The callback function on XMLHttpRequest can clear the event listener and destroys 'this' object. Keep a local reference to it.
     // See issue 889829.
-    RefPtrWillBeRawPtr<V8AbstractEventListener> protect(this);
+    RawPtr<V8AbstractEventListener> protect(this);
 
     ScriptState::Scope scope(scriptState);
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h b/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h
index ea19fbaa..363c9fd 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h
@@ -84,7 +84,7 @@
         // as it may attempt to compile a function (lazy event listener), get an error
         // and invoke onerror callback which can execute arbitrary JS code.
         // Protect this event listener to keep it alive.
-        RefPtrWillBeRawPtr<V8AbstractEventListener> protect(this);
+        RawPtr<V8AbstractEventListener> protect(this);
         prepareListenerObject(executionContext);
         return m_listener.newLocal(m_isolate);
     }
@@ -148,7 +148,7 @@
     v8::Isolate* m_isolate;
 
     // nullptr unless this listener belongs to a worker.
-    RawPtrWillBeMember<WorkerGlobalScope> m_workerGlobalScope;
+    Member<WorkerGlobalScope> m_workerGlobalScope;
 
 #if ENABLE(OILPAN)
     SelfKeepAlive<V8AbstractEventListener> m_keepAlive;
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8Binding.cpp b/third_party/WebKit/Source/bindings/core/v8/V8Binding.cpp
index 42211f6..f1363a1d 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8Binding.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8Binding.cpp
@@ -92,17 +92,17 @@
     exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(expected, provided));
 }
 
-PassRefPtrWillBeRawPtr<NodeFilter> toNodeFilter(v8::Local<v8::Value> callback, v8::Local<v8::Object> creationContext, ScriptState* scriptState)
+RawPtr<NodeFilter> toNodeFilter(v8::Local<v8::Value> callback, v8::Local<v8::Object> creationContext, ScriptState* scriptState)
 {
     if (callback->IsNull())
         return nullptr;
-    RefPtrWillBeRawPtr<NodeFilter> filter = NodeFilter::create();
+    RawPtr<NodeFilter> filter = NodeFilter::create();
 
     v8::Local<v8::Value> filterWrapper = toV8(filter.get(), creationContext, scriptState->isolate());
     if (filterWrapper.IsEmpty())
         return nullptr;
 
-    RefPtrWillBeRawPtr<NodeFilterCondition> condition = V8NodeFilterCondition::create(callback, filterWrapper.As<v8::Object>(), scriptState);
+    RawPtr<NodeFilterCondition> condition = V8NodeFilterCondition::create(callback, filterWrapper.As<v8::Object>(), scriptState);
     filter->setCondition(condition.release());
 
     return filter.release();
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8Binding.h b/third_party/WebKit/Source/bindings/core/v8/V8Binding.h
index d76ce35..10b13dc 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8Binding.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8Binding.h
@@ -592,7 +592,7 @@
 }
 
 // FIXME: Remove the special casing for NodeFilter and XPathNSResolver.
-PassRefPtrWillBeRawPtr<NodeFilter> toNodeFilter(v8::Local<v8::Value>, v8::Local<v8::Object>, ScriptState*);
+RawPtr<NodeFilter> toNodeFilter(v8::Local<v8::Value>, v8::Local<v8::Object>, ScriptState*);
 XPathNSResolver* toXPathNSResolver(ScriptState*, v8::Local<v8::Value>);
 
 bool toV8Sequence(v8::Local<v8::Value>, uint32_t& length, v8::Isolate*, ExceptionState&);
@@ -654,79 +654,12 @@
 }
 
 template <typename T, typename V8T>
-WillBeHeapVector<RefPtrWillBeMember<T>> toRefPtrWillBeMemberNativeArray(v8::Local<v8::Value> value, int argumentIndex, v8::Isolate* isolate, ExceptionState& exceptionState)
-{
-    v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value));
-    uint32_t length = 0;
-    if (value->IsArray()) {
-        length = v8::Local<v8::Array>::Cast(v8Value)->Length();
-    } else if (!toV8Sequence(value, length, isolate, exceptionState)) {
-        if (!exceptionState.hadException())
-            exceptionState.throwTypeError(ExceptionMessages::notAnArrayTypeArgumentOrValue(argumentIndex));
-        return WillBeHeapVector<RefPtrWillBeMember<T>>();
-    }
-
-    WillBeHeapVector<RefPtrWillBeMember<T>> result;
-    result.reserveInitialCapacity(length);
-    v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value);
-    v8::TryCatch block(isolate);
-    for (uint32_t i = 0; i < length; ++i) {
-        v8::Local<v8::Value> element;
-        if (!v8Call(object->Get(isolate->GetCurrentContext(), i), element, block)) {
-            exceptionState.rethrowV8Exception(block.Exception());
-            return WillBeHeapVector<RefPtrWillBeMember<T>>();
-        }
-        if (V8T::hasInstance(element, isolate)) {
-            v8::Local<v8::Object> elementObject = v8::Local<v8::Object>::Cast(element);
-            result.uncheckedAppend(V8T::toImpl(elementObject));
-        } else {
-            exceptionState.throwTypeError("Invalid Array element type");
-            return WillBeHeapVector<RefPtrWillBeMember<T>>();
-        }
-    }
-    return result;
-}
-
-template <typename T, typename V8T>
-WillBeHeapVector<RefPtrWillBeMember<T>> toRefPtrWillBeMemberNativeArray(v8::Local<v8::Value> value, const String& propertyName, v8::Isolate* isolate, ExceptionState& exceptionState)
-{
-    v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value));
-    uint32_t length = 0;
-    if (value->IsArray()) {
-        length = v8::Local<v8::Array>::Cast(v8Value)->Length();
-    } else if (!toV8Sequence(value, length, isolate, exceptionState)) {
-        if (!exceptionState.hadException())
-            exceptionState.throwTypeError(ExceptionMessages::notASequenceTypeProperty(propertyName));
-        return WillBeHeapVector<RefPtrWillBeMember<T>>();
-    }
-
-    WillBeHeapVector<RefPtrWillBeMember<T>> result;
-    result.reserveInitialCapacity(length);
-    v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value);
-    v8::TryCatch block(isolate);
-    for (uint32_t i = 0; i < length; ++i) {
-        v8::Local<v8::Value> element;
-        if (!v8Call(object->Get(isolate->GetCurrentContext(), i), element, block)) {
-            exceptionState.rethrowV8Exception(block.Exception());
-            return WillBeHeapVector<RefPtrWillBeMember<T>>();
-        }
-        if (V8T::hasInstance(element, isolate)) {
-            v8::Local<v8::Object> elementObject = v8::Local<v8::Object>::Cast(element);
-            result.uncheckedAppend(V8T::toImpl(elementObject));
-        } else {
-            exceptionState.throwTypeError("Invalid Array element type");
-            return WillBeHeapVector<RefPtrWillBeMember<T>>();
-        }
-    }
-    return result;
-}
-
-template <typename T, typename V8T>
 HeapVector<Member<T>> toMemberNativeArray(v8::Local<v8::Value> value, int argumentIndex, v8::Isolate* isolate, ExceptionState& exceptionState)
 {
+    v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value));
     uint32_t length = 0;
     if (value->IsArray()) {
-        length = v8::Local<v8::Array>::Cast(value)->Length();
+        length = v8::Local<v8::Array>::Cast(v8Value)->Length();
     } else if (!toV8Sequence(value, length, isolate, exceptionState)) {
         if (!exceptionState.hadException())
             exceptionState.throwTypeError(ExceptionMessages::notAnArrayTypeArgumentOrValue(argumentIndex));
@@ -735,7 +668,41 @@
 
     HeapVector<Member<T>> result;
     result.reserveInitialCapacity(length);
-    v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(value);
+    v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value);
+    v8::TryCatch block(isolate);
+    for (uint32_t i = 0; i < length; ++i) {
+        v8::Local<v8::Value> element;
+        if (!v8Call(object->Get(isolate->GetCurrentContext(), i), element, block)) {
+            exceptionState.rethrowV8Exception(block.Exception());
+            return HeapVector<Member<T>>();
+        }
+        if (V8T::hasInstance(element, isolate)) {
+            v8::Local<v8::Object> elementObject = v8::Local<v8::Object>::Cast(element);
+            result.uncheckedAppend(V8T::toImpl(elementObject));
+        } else {
+            exceptionState.throwTypeError("Invalid Array element type");
+            return HeapVector<Member<T>>();
+        }
+    }
+    return result;
+}
+
+template <typename T, typename V8T>
+HeapVector<Member<T>> toMemberNativeArray(v8::Local<v8::Value> value, const String& propertyName, v8::Isolate* isolate, ExceptionState& exceptionState)
+{
+    v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value));
+    uint32_t length = 0;
+    if (value->IsArray()) {
+        length = v8::Local<v8::Array>::Cast(v8Value)->Length();
+    } else if (!toV8Sequence(value, length, isolate, exceptionState)) {
+        if (!exceptionState.hadException())
+            exceptionState.throwTypeError(ExceptionMessages::notASequenceTypeProperty(propertyName));
+        return HeapVector<Member<T>>();
+    }
+
+    HeapVector<Member<T>> result;
+    result.reserveInitialCapacity(length);
+    v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value);
     v8::TryCatch block(isolate);
     for (uint32_t i = 0; i < length; ++i) {
         v8::Local<v8::Value> element;
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8BindingForTesting.h b/third_party/WebKit/Source/bindings/core/v8/V8BindingForTesting.h
index 4b6b7da..7e4b847 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8BindingForTesting.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8BindingForTesting.h
@@ -21,7 +21,7 @@
     void setExecutionContext(ExecutionContext*) override;
 private:
     ScriptStateForTesting(v8::Local<v8::Context>, PassRefPtr<DOMWrapperWorld>);
-    RawPtrWillBePersistent<ExecutionContext> m_executionContext;
+    Persistent<ExecutionContext> m_executionContext;
 };
 
 class V8TestingScope {
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8CustomElementLifecycleCallbacks.cpp b/third_party/WebKit/Source/bindings/core/v8/V8CustomElementLifecycleCallbacks.cpp
index a13c0ab..20e06183 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8CustomElementLifecycleCallbacks.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8CustomElementLifecycleCallbacks.cpp
@@ -48,7 +48,7 @@
     V(detached, DetachedCallback)           \
     V(attributeChanged, AttributeChangedCallback)
 
-PassRefPtrWillBeRawPtr<V8CustomElementLifecycleCallbacks> V8CustomElementLifecycleCallbacks::create(ScriptState* scriptState, v8::Local<v8::Object> prototype, v8::MaybeLocal<v8::Function> created, v8::MaybeLocal<v8::Function> attached, v8::MaybeLocal<v8::Function> detached, v8::MaybeLocal<v8::Function> attributeChanged)
+RawPtr<V8CustomElementLifecycleCallbacks> V8CustomElementLifecycleCallbacks::create(ScriptState* scriptState, v8::Local<v8::Object> prototype, v8::MaybeLocal<v8::Function> created, v8::MaybeLocal<v8::Function> attached, v8::MaybeLocal<v8::Function> detached, v8::MaybeLocal<v8::Function> attributeChanged)
 {
     v8::Isolate* isolate = scriptState->isolate();
     // A given object can only be used as a Custom Element prototype
@@ -61,7 +61,7 @@
     CALLBACK_LIST(SET_HIDDEN_VALUE)
 #undef SET_HIDDEN_VALUE
 
-    return adoptRefWillBeNoop(new V8CustomElementLifecycleCallbacks(scriptState, prototype, created, attached, detached, attributeChanged));
+    return new V8CustomElementLifecycleCallbacks(scriptState, prototype, created, attached, detached, attributeChanged);
 }
 
 static CustomElementLifecycleCallbacks::CallbackType flagSet(v8::MaybeLocal<v8::Function> attached, v8::MaybeLocal<v8::Function> detached, v8::MaybeLocal<v8::Function> attributeChanged)
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8CustomElementLifecycleCallbacks.h b/third_party/WebKit/Source/bindings/core/v8/V8CustomElementLifecycleCallbacks.h
index 07089a15..00077ccc 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8CustomElementLifecycleCallbacks.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8CustomElementLifecycleCallbacks.h
@@ -46,9 +46,9 @@
 class V8PerContextData;
 
 class V8CustomElementLifecycleCallbacks final : public CustomElementLifecycleCallbacks, public ContextLifecycleObserver {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(V8CustomElementLifecycleCallbacks);
+    USING_GARBAGE_COLLECTED_MIXIN(V8CustomElementLifecycleCallbacks);
 public:
-    static PassRefPtrWillBeRawPtr<V8CustomElementLifecycleCallbacks> create(ScriptState*, v8::Local<v8::Object> prototype, v8::MaybeLocal<v8::Function> created, v8::MaybeLocal<v8::Function> attached, v8::MaybeLocal<v8::Function> detached, v8::MaybeLocal<v8::Function> attributeChanged);
+    static RawPtr<V8CustomElementLifecycleCallbacks> create(ScriptState*, v8::Local<v8::Object> prototype, v8::MaybeLocal<v8::Function> created, v8::MaybeLocal<v8::Function> attached, v8::MaybeLocal<v8::Function> detached, v8::MaybeLocal<v8::Function> attributeChanged);
 
     ~V8CustomElementLifecycleCallbacks() override;
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8ErrorHandler.h b/third_party/WebKit/Source/bindings/core/v8/V8ErrorHandler.h
index 0466f0df..97ea243 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8ErrorHandler.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8ErrorHandler.h
@@ -41,9 +41,9 @@
 
 class V8ErrorHandler final : public V8EventListener {
 public:
-    static PassRefPtrWillBeRawPtr<V8ErrorHandler> create(v8::Local<v8::Object> listener, bool isInline, ScriptState* scriptState)
+    static RawPtr<V8ErrorHandler> create(v8::Local<v8::Object> listener, bool isInline, ScriptState* scriptState)
     {
-        RefPtrWillBeRawPtr<V8ErrorHandler> eventListener = adoptRefWillBeNoop(new V8ErrorHandler(isInline, scriptState));
+        RawPtr<V8ErrorHandler> eventListener = new V8ErrorHandler(isInline, scriptState);
         eventListener->setListenerObject(listener);
         return eventListener.release();
     }
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8EventListener.h b/third_party/WebKit/Source/bindings/core/v8/V8EventListener.h
index 5b6423d..6dda77ed 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8EventListener.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8EventListener.h
@@ -43,9 +43,9 @@
 // that can handle the event.
 class V8EventListener : public V8AbstractEventListener {
 public:
-    static PassRefPtrWillBeRawPtr<V8EventListener> create(v8::Local<v8::Object> listener, bool isAttribute, ScriptState* scriptState)
+    static RawPtr<V8EventListener> create(v8::Local<v8::Object> listener, bool isAttribute, ScriptState* scriptState)
     {
-        RefPtrWillBeRawPtr<V8EventListener> eventListener = adoptRefWillBeNoop(new V8EventListener(isAttribute, scriptState));
+        RawPtr<V8EventListener> eventListener = new V8EventListener(isAttribute, scriptState);
         eventListener->setListenerObject(listener);
         return eventListener.release();
     }
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8EventListenerList.cpp b/third_party/WebKit/Source/bindings/core/v8/V8EventListenerList.cpp
index f62df4b..06904c6f 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8EventListenerList.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8EventListenerList.cpp
@@ -36,7 +36,7 @@
 
 namespace blink {
 
-PassRefPtrWillBeRawPtr<EventListener> V8EventListenerList::getEventListener(ScriptState* scriptState, v8::Local<v8::Value> value, bool isAttribute, ListenerLookupType lookup)
+RawPtr<EventListener> V8EventListenerList::getEventListener(ScriptState* scriptState, v8::Local<v8::Value> value, bool isAttribute, ListenerLookupType lookup)
 {
     if (lookup == ListenerFindOnly) {
         // Used by EventTarget::removeEventListener, specifically
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8EventListenerList.h b/third_party/WebKit/Source/bindings/core/v8/V8EventListenerList.h
index 323d233..ef465d3 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8EventListenerList.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8EventListenerList.h
@@ -48,7 +48,7 @@
 class V8EventListenerList {
     STATIC_ONLY(V8EventListenerList);
 public:
-    static PassRefPtrWillBeRawPtr<V8EventListener> findWrapper(v8::Local<v8::Value> value, ScriptState* scriptState)
+    static RawPtr<V8EventListener> findWrapper(v8::Local<v8::Value> value, ScriptState* scriptState)
     {
         ASSERT(scriptState->isolate()->InContext());
         if (!value->IsObject())
@@ -59,9 +59,9 @@
     }
 
     template<typename WrapperType>
-    static PassRefPtrWillBeRawPtr<V8EventListener> findOrCreateWrapper(v8::Local<v8::Value>, bool isAttribute, ScriptState*);
+    static RawPtr<V8EventListener> findOrCreateWrapper(v8::Local<v8::Value>, bool isAttribute, ScriptState*);
 
-    CORE_EXPORT static PassRefPtrWillBeRawPtr<EventListener> getEventListener(ScriptState*, v8::Local<v8::Value>, bool isAttribute, ListenerLookupType);
+    CORE_EXPORT static RawPtr<EventListener> getEventListener(ScriptState*, v8::Local<v8::Value>, bool isAttribute, ListenerLookupType);
 
 private:
     static V8EventListener* doFindWrapper(v8::Local<v8::Object> object, v8::Local<v8::String> wrapperProperty, ScriptState* scriptState)
@@ -81,7 +81,7 @@
 };
 
 template<typename WrapperType>
-PassRefPtrWillBeRawPtr<V8EventListener> V8EventListenerList::findOrCreateWrapper(v8::Local<v8::Value> value, bool isAttribute, ScriptState* scriptState)
+RawPtr<V8EventListener> V8EventListenerList::findOrCreateWrapper(v8::Local<v8::Value> value, bool isAttribute, ScriptState* scriptState)
 {
     v8::Isolate* isolate = scriptState->isolate();
     ASSERT(isolate->InContext());
@@ -95,7 +95,7 @@
     if (wrapper)
         return wrapper;
 
-    RefPtrWillBeRawPtr<V8EventListener> wrapperPtr = WrapperType::create(object, isAttribute, scriptState);
+    RawPtr<V8EventListener> wrapperPtr = WrapperType::create(object, isAttribute, scriptState);
     if (wrapperPtr)
         V8HiddenValue::setHiddenValue(scriptState, object, wrapperProperty, v8::External::New(isolate, wrapperPtr.get()));
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8GCController.cpp b/third_party/WebKit/Source/bindings/core/v8/V8GCController.cpp
index 464fbe0..b9ef96a 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8GCController.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8GCController.cpp
@@ -229,7 +229,7 @@
     // v8 guarantees that Blink will not regain control while a v8 GC runs
     // (=> no Oilpan GCs will be triggered), hence raw, untraced members
     // can safely be kept here.
-    Vector<RawPtrWillBeUntracedMember<Node>> m_groupsWhichNeedRetainerInfo;
+    Vector<UntracedMember<Node>> m_groupsWhichNeedRetainerInfo;
     int m_domObjectsWithPendingActivity;
     bool m_liveRootGroupIdSet;
     bool m_constructRetainedObjectInfos;
@@ -486,7 +486,7 @@
 
 private:
     v8::Isolate* m_isolate;
-    RawPtrWillBePersistent<ExecutionContext> m_executionContext;
+    Persistent<ExecutionContext> m_executionContext;
     bool m_pendingActivityFound;
 };
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp b/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp
index 5bd7d25..d3328f9 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp
@@ -157,7 +157,7 @@
     if (v8Call(message->GetLineNumber(scriptState->context()), lineNumber)
         && v8Call(message->GetStartColumn(scriptState->context()), columnNumber))
         ++columnNumber;
-    RefPtrWillBeRawPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, resourceName, lineNumber, columnNumber, &scriptState->world());
+    RawPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, resourceName, lineNumber, columnNumber, &scriptState->world());
 
     String messageForConsole = extractMessageForConsole(isolate, data);
     if (!messageForConsole.isEmpty())
@@ -430,7 +430,7 @@
         if (v8Call(message->GetLineNumber(scriptState->context()), lineNumber)
             && v8Call(message->GetStartColumn(scriptState->context()), columnNumber))
             ++columnNumber;
-        RefPtrWillBeRawPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, sourceURL, lineNumber, columnNumber, &DOMWrapperWorld::current(isolate));
+        RawPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, sourceURL, lineNumber, columnNumber, &DOMWrapperWorld::current(isolate));
         AccessControlStatus corsStatus = message->IsSharedCrossOrigin() ? SharableCrossOrigin : NotSharableCrossOrigin;
 
         // If execution termination has been triggered as part of constructing
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8IntersectionObserverCallback.h b/third_party/WebKit/Source/bindings/core/v8/V8IntersectionObserverCallback.h
index 18be3a8..d0cdfbe 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8IntersectionObserverCallback.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8IntersectionObserverCallback.h
@@ -14,7 +14,7 @@
 namespace blink {
 
 class V8IntersectionObserverCallback final : public IntersectionObserverCallback, public ActiveDOMCallback {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(V8IntersectionObserverCallback);
+    USING_GARBAGE_COLLECTED_MIXIN(V8IntersectionObserverCallback);
 public:
     CORE_EXPORT V8IntersectionObserverCallback(v8::Local<v8::Function>, v8::Local<v8::Object>, ScriptState*);
     ~V8IntersectionObserverCallback() override;
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8LazyEventListener.cpp b/third_party/WebKit/Source/bindings/core/v8/V8LazyEventListener.cpp
index b078f017..4fbea47f 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8LazyEventListener.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8LazyEventListener.cpp
@@ -213,7 +213,7 @@
     if (v8Call(message->GetLineNumber(v8Context), lineNumber)
         && v8Call(message->GetStartColumn(v8Context), columnNumber))
         ++columnNumber;
-    RefPtrWillBeRawPtr<ErrorEvent> event = ErrorEvent::create(messageText, m_sourceURL, lineNumber, columnNumber, &world());
+    RawPtr<ErrorEvent> event = ErrorEvent::create(messageText, m_sourceURL, lineNumber, columnNumber, &world());
 
     AccessControlStatus accessControlStatus = NotSharableCrossOrigin;
     if (message->IsOpaque())
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8LazyEventListener.h b/third_party/WebKit/Source/bindings/core/v8/V8LazyEventListener.h
index b3a11bf..146d11dc 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8LazyEventListener.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8LazyEventListener.h
@@ -45,9 +45,9 @@
 // A V8LazyEventListener is either a HTML or SVG event handler.
 class V8LazyEventListener final : public V8AbstractEventListener {
 public:
-    static PassRefPtrWillBeRawPtr<V8LazyEventListener> create(const AtomicString& functionName, const AtomicString& eventParameterName, const String& code, const String& sourceURL, const TextPosition& position, Node* node, v8::Isolate* isolate)
+    static RawPtr<V8LazyEventListener> create(const AtomicString& functionName, const AtomicString& eventParameterName, const String& code, const String& sourceURL, const TextPosition& position, Node* node, v8::Isolate* isolate)
     {
-        return adoptRefWillBeNoop(new V8LazyEventListener(isolate, functionName, eventParameterName, code, sourceURL, position, node));
+        return new V8LazyEventListener(isolate, functionName, eventParameterName, code, sourceURL, position, node);
     }
 
     DEFINE_INLINE_VIRTUAL_TRACE()
@@ -78,7 +78,7 @@
     AtomicString m_eventParameterName;
     String m_code;
     String m_sourceURL;
-    RawPtrWillBeMember<Node> m_node;
+    Member<Node> m_node;
     TextPosition m_position;
 };
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8MutationCallback.cpp b/third_party/WebKit/Source/bindings/core/v8/V8MutationCallback.cpp
index 61c92a4..1774c8a7 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8MutationCallback.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8MutationCallback.cpp
@@ -48,7 +48,7 @@
 {
 }
 
-void V8MutationCallback::call(const WillBeHeapVector<RefPtrWillBeMember<MutationRecord>>& mutations, MutationObserver* observer)
+void V8MutationCallback::call(const HeapVector<Member<MutationRecord>>& mutations, MutationObserver* observer)
 {
     if (!canInvokeCallback())
         return;
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8MutationCallback.h b/third_party/WebKit/Source/bindings/core/v8/V8MutationCallback.h
index 1d2cca7b..75be8c1 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8MutationCallback.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8MutationCallback.h
@@ -39,16 +39,15 @@
 class ExecutionContext;
 
 class V8MutationCallback final : public MutationCallback, public ActiveDOMCallback {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(V8MutationCallback);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(V8MutationCallback);
+    USING_GARBAGE_COLLECTED_MIXIN(V8MutationCallback);
 public:
-    static PassOwnPtrWillBeRawPtr<V8MutationCallback> create(v8::Local<v8::Function> callback, v8::Local<v8::Object> owner, ScriptState* scriptState)
+    static RawPtr<V8MutationCallback> create(v8::Local<v8::Function> callback, v8::Local<v8::Object> owner, ScriptState* scriptState)
     {
-        return adoptPtrWillBeNoop(new V8MutationCallback(callback, owner, scriptState));
+        return new V8MutationCallback(callback, owner, scriptState);
     }
     ~V8MutationCallback() override;
 
-    void call(const WillBeHeapVector<RefPtrWillBeMember<MutationRecord>>&, MutationObserver*) override;
+    void call(const HeapVector<Member<MutationRecord>>&, MutationObserver*) override;
     ExecutionContext* getExecutionContext() const override { return ContextLifecycleObserver::getExecutionContext(); }
 
     DECLARE_VIRTUAL_TRACE();
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8NodeFilterCondition.h b/third_party/WebKit/Source/bindings/core/v8/V8NodeFilterCondition.h
index f82e3d5..859b5fa 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8NodeFilterCondition.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8NodeFilterCondition.h
@@ -62,9 +62,9 @@
 // (V8)
 class V8NodeFilterCondition final : public NodeFilterCondition {
 public:
-    static PassRefPtrWillBeRawPtr<V8NodeFilterCondition> create(v8::Local<v8::Value> filter, v8::Local<v8::Object> owner, ScriptState* scriptState)
+    static RawPtr<V8NodeFilterCondition> create(v8::Local<v8::Value> filter, v8::Local<v8::Object> owner, ScriptState* scriptState)
     {
-        return adoptRefWillBeNoop(new V8NodeFilterCondition(filter, owner, scriptState));
+        return new V8NodeFilterCondition(filter, owner, scriptState);
     }
 
     ~V8NodeFilterCondition() override;
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8PagePopupControllerBinding.cpp b/third_party/WebKit/Source/bindings/core/v8/V8PagePopupControllerBinding.cpp
index bd3db2a6..ef310ef 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8PagePopupControllerBinding.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8PagePopupControllerBinding.cpp
@@ -21,7 +21,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     DOMWindow* impl = V8Window::toImpl(holder);
-    RefPtrWillBeRawPtr<PagePopupController> cppValue(PagePopupSupplement::pagePopupController(*toLocalDOMWindow(impl)->frame()));
+    RawPtr<PagePopupController> cppValue(PagePopupSupplement::pagePopupController(*toLocalDOMWindow(impl)->frame()));
     v8SetReturnValue(info, toV8(cppValue.get(), holder, info.GetIsolate()));
 }
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8PerformanceObserverCallback.h b/third_party/WebKit/Source/bindings/core/v8/V8PerformanceObserverCallback.h
index b75fbd69..f08cbf7 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8PerformanceObserverCallback.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8PerformanceObserverCallback.h
@@ -14,7 +14,7 @@
 namespace blink {
 
 class V8PerformanceObserverCallback final : public PerformanceObserverCallback, public ActiveDOMCallback {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(V8PerformanceObserverCallback);
+    USING_GARBAGE_COLLECTED_MIXIN(V8PerformanceObserverCallback);
 public:
     static V8PerformanceObserverCallback* create(v8::Local<v8::Function> callback, v8::Local<v8::Object> owner, ScriptState* scriptState)
     {
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunnerTest.cpp b/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunnerTest.cpp
index a974e8bc..23ccb8a 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunnerTest.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunnerTest.cpp
@@ -89,7 +89,7 @@
 
 protected:
     ResourceRequest m_resourceRequest;
-    RefPtrWillBePersistent<ScriptResource> m_resource;
+    Persistent<ScriptResource> m_resource;
     V8TestingScope m_scope;
 
     static int counter;
@@ -118,7 +118,7 @@
     EXPECT_FALSE(cacheHandler()->cachedMetadata(tagForCodeCache(cacheHandler())));
     // The cached data is associated with the encoding.
     ResourceRequest request(url());
-    RefPtrWillBeRawPtr<ScriptResource> anotherResource = ScriptResource::create(request, "UTF-16");
+    RawPtr<ScriptResource> anotherResource = ScriptResource::create(request, "UTF-16");
     EXPECT_FALSE(cacheHandler()->cachedMetadata(tagForParserCache(anotherResource->cacheHandler())));
 }
 
@@ -134,7 +134,7 @@
     EXPECT_TRUE(cacheHandler()->cachedMetadata(tagForCodeCache(cacheHandler())));
     // The cached data is associated with the encoding.
     ResourceRequest request(url());
-    RefPtrWillBeRawPtr<ScriptResource> anotherResource = ScriptResource::create(request, "UTF-16");
+    RawPtr<ScriptResource> anotherResource = ScriptResource::create(request, "UTF-16");
     EXPECT_FALSE(cacheHandler()->cachedMetadata(tagForCodeCache(anotherResource->cacheHandler())));
 }
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8WorkerGlobalScopeEventListener.cpp b/third_party/WebKit/Source/bindings/core/v8/V8WorkerGlobalScopeEventListener.cpp
index bed546f..d74ec6a 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8WorkerGlobalScopeEventListener.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8WorkerGlobalScopeEventListener.cpp
@@ -52,7 +52,7 @@
 {
     // The callback function on XMLHttpRequest can clear the event listener and destroys 'this' object. Keep a local reference to it.
     // See issue 889829.
-    RefPtrWillBeRawPtr<V8AbstractEventListener> protect(this);
+    RawPtr<V8AbstractEventListener> protect(this);
 
     WorkerOrWorkletScriptController* script = toWorkerGlobalScope(scriptState->getExecutionContext())->scriptController();
     if (!script)
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8WorkerGlobalScopeEventListener.h b/third_party/WebKit/Source/bindings/core/v8/V8WorkerGlobalScopeEventListener.h
index 63878d6c..89f03cc8 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8WorkerGlobalScopeEventListener.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8WorkerGlobalScopeEventListener.h
@@ -41,9 +41,9 @@
 
 class V8WorkerGlobalScopeEventListener final : public V8EventListener {
 public:
-    static PassRefPtrWillBeRawPtr<V8WorkerGlobalScopeEventListener> create(v8::Local<v8::Object> listener, bool isInline, ScriptState* scriptState)
+    static RawPtr<V8WorkerGlobalScopeEventListener> create(v8::Local<v8::Object> listener, bool isInline, ScriptState* scriptState)
     {
-        RefPtrWillBeRawPtr<V8WorkerGlobalScopeEventListener> eventListener = adoptRefWillBeNoop(new V8WorkerGlobalScopeEventListener(isInline, scriptState));
+        RawPtr<V8WorkerGlobalScopeEventListener> eventListener = new V8WorkerGlobalScopeEventListener(isInline, scriptState);
         eventListener->setListenerObject(listener);
         return eventListener.release();
     }
diff --git a/third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp b/third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp
index 93e6198e6..6d50fba 100644
--- a/third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp
@@ -76,9 +76,9 @@
     ASSERT(V8Document::toImpl(wrapper) == document);
 }
 
-PassOwnPtrWillBeRawPtr<WindowProxy> WindowProxy::create(v8::Isolate* isolate, Frame* frame, DOMWrapperWorld& world)
+RawPtr<WindowProxy> WindowProxy::create(v8::Isolate* isolate, Frame* frame, DOMWrapperWorld& world)
 {
-    return adoptPtrWillBeNoop(new WindowProxy(frame, &world, isolate));
+    return new WindowProxy(frame, &world, isolate);
 }
 
 WindowProxy::WindowProxy(Frame* frame, PassRefPtr<DOMWrapperWorld> world, v8::Isolate* isolate)
@@ -507,7 +507,7 @@
     if (!htmlDocument->hasNamedItem(key) && !htmlDocument->hasExtraNamedItem(key))
         return v8Undefined();
 
-    RefPtrWillBeRawPtr<DocumentNameCollection> items = htmlDocument->documentNamedItems(key);
+    RawPtr<DocumentNameCollection> items = htmlDocument->documentNamedItems(key);
     if (items->isEmpty())
         return v8Undefined();
 
@@ -519,7 +519,7 @@
             return toV8(frame->domWindow(), creationContext, isolate);
         return toV8(element, creationContext, isolate);
     }
-    return toV8(PassRefPtrWillBeRawPtr<HTMLCollection>(items.release()), creationContext, isolate);
+    return toV8(RawPtr<HTMLCollection>(items.release()), creationContext, isolate);
 }
 
 static void getter(v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value>& info)
diff --git a/third_party/WebKit/Source/bindings/core/v8/WindowProxy.h b/third_party/WebKit/Source/bindings/core/v8/WindowProxy.h
index 64c2768..9ea6a37 100644
--- a/third_party/WebKit/Source/bindings/core/v8/WindowProxy.h
+++ b/third_party/WebKit/Source/bindings/core/v8/WindowProxy.h
@@ -50,10 +50,9 @@
 
 // WindowProxy represents all the per-global object state for a Frame that
 // persist between navigations.
-class WindowProxy final : public NoBaseWillBeGarbageCollectedFinalized<WindowProxy> {
-    USING_FAST_MALLOC_WILL_BE_REMOVED(WindowProxy);
+class WindowProxy final : public GarbageCollectedFinalized<WindowProxy> {
 public:
-    static PassOwnPtrWillBeRawPtr<WindowProxy> create(v8::Isolate*, Frame*, DOMWrapperWorld&);
+    static RawPtr<WindowProxy> create(v8::Isolate*, Frame*, DOMWrapperWorld&);
 
     ~WindowProxy();
     DECLARE_TRACE();
@@ -109,7 +108,7 @@
     void createContext();
     bool installDOMWindow();
 
-    RawPtrWillBeMember<Frame> m_frame;
+    Member<Frame> m_frame;
     v8::Isolate* m_isolate;
     RefPtr<ScriptState> m_scriptState;
     RefPtr<DOMWrapperWorld> m_world;
diff --git a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp
index db724b7b..675acae3 100644
--- a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp
@@ -10,9 +10,9 @@
 
 namespace blink {
 
-PassOwnPtrWillBeRawPtr<WindowProxyManager> WindowProxyManager::create(Frame& frame)
+RawPtr<WindowProxyManager> WindowProxyManager::create(Frame& frame)
 {
-    return adoptPtrWillBeNoop(new WindowProxyManager(frame));
+    return new WindowProxyManager(frame);
 }
 
 WindowProxyManager::~WindowProxyManager()
@@ -38,7 +38,7 @@
         if (iter != m_isolatedWorlds.end()) {
             windowProxy = iter->value.get();
         } else {
-            OwnPtrWillBeRawPtr<WindowProxy> isolatedWorldWindowProxy = WindowProxy::create(m_isolate, m_frame, world);
+            RawPtr<WindowProxy> isolatedWorldWindowProxy = WindowProxy::create(m_isolate, m_frame, world);
             windowProxy = isolatedWorldWindowProxy.get();
             m_isolatedWorlds.set(world.worldId(), isolatedWorldWindowProxy.release());
         }
diff --git a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h
index 439b0f3..294c978 100644
--- a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h
+++ b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h
@@ -19,10 +19,9 @@
 class SecurityOrigin;
 class WindowProxy;
 
-class CORE_EXPORT WindowProxyManager final : public NoBaseWillBeGarbageCollectedFinalized<WindowProxyManager> {
-    USING_FAST_MALLOC_WILL_BE_REMOVED(WindowProxyManager);
+class CORE_EXPORT WindowProxyManager final : public GarbageCollectedFinalized<WindowProxyManager> {
 public:
-    static PassOwnPtrWillBeRawPtr<WindowProxyManager> create(Frame&);
+    static RawPtr<WindowProxyManager> create(Frame&);
 
     ~WindowProxyManager();
     DECLARE_TRACE();
@@ -44,14 +43,14 @@
     void setGlobals(const HashMap<DOMWrapperWorld*, v8::Local<v8::Object>>&);
 
 private:
-    typedef WillBeHeapHashMap<int, OwnPtrWillBeMember<WindowProxy>> IsolatedWorldMap;
+    typedef HeapHashMap<int, Member<WindowProxy>> IsolatedWorldMap;
 
     explicit WindowProxyManager(Frame&);
 
-    RawPtrWillBeMember<Frame> m_frame;
+    Member<Frame> m_frame;
     v8::Isolate* const m_isolate;
 
-    const OwnPtrWillBeMember<WindowProxy> m_windowProxy;
+    const Member<WindowProxy> m_windowProxy;
     IsolatedWorldMap m_isolatedWorlds;
 };
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/WorkerOrWorkletScriptController.cpp b/third_party/WebKit/Source/bindings/core/v8/WorkerOrWorkletScriptController.cpp
index 4e3054e..1a60161 100644
--- a/third_party/WebKit/Source/bindings/core/v8/WorkerOrWorkletScriptController.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/WorkerOrWorkletScriptController.cpp
@@ -85,7 +85,7 @@
     int columnNumber;
     String sourceURL;
     ScriptValue exception;
-    RefPtrWillBeMember<ErrorEvent> m_errorEventFromImportedScript;
+    Member<ErrorEvent> m_errorEventFromImportedScript;
 
     // A ExecutionState context is stack allocated by
     // WorkerOrWorkletScriptController::evaluate(), with the contoller using it
@@ -98,13 +98,13 @@
     //
     // With Oilpan, |m_outerState| isn't traced. It'll be "up the stack"
     // and its fields will be traced when scanning the stack.
-    RawPtrWillBeMember<WorkerOrWorkletScriptController> m_controller;
+    Member<WorkerOrWorkletScriptController> m_controller;
     ExecutionState* m_outerState;
 };
 
-PassOwnPtrWillBeRawPtr<WorkerOrWorkletScriptController> WorkerOrWorkletScriptController::create(WorkerOrWorkletGlobalScope* globalScope, v8::Isolate* isolate)
+RawPtr<WorkerOrWorkletScriptController> WorkerOrWorkletScriptController::create(WorkerOrWorkletGlobalScope* globalScope, v8::Isolate* isolate)
 {
-    return adoptPtrWillBeNoop(new WorkerOrWorkletScriptController(globalScope, isolate));
+    return new WorkerOrWorkletScriptController(globalScope, isolate);
 }
 
 WorkerOrWorkletScriptController::WorkerOrWorkletScriptController(WorkerOrWorkletGlobalScope* globalScope, v8::Isolate* isolate)
@@ -244,7 +244,7 @@
     return ScriptValue(m_scriptState.get(), result);
 }
 
-bool WorkerOrWorkletScriptController::evaluate(const ScriptSourceCode& sourceCode, RefPtrWillBeRawPtr<ErrorEvent>* errorEvent, CachedMetadataHandler* cacheHandler, V8CacheOptions v8CacheOptions)
+bool WorkerOrWorkletScriptController::evaluate(const ScriptSourceCode& sourceCode, RawPtr<ErrorEvent>* errorEvent, CachedMetadataHandler* cacheHandler, V8CacheOptions v8CacheOptions)
 {
     if (isExecutionForbidden())
         return false;
@@ -267,7 +267,7 @@
             V8ErrorHandler::storeExceptionOnErrorEventWrapper(m_scriptState.get(), errorEvent->get(), state.exception.v8Value(), m_scriptState->context()->Global());
         } else {
             ASSERT(!m_globalScope->shouldSanitizeScriptError(state.sourceURL, NotSharableCrossOrigin));
-            RefPtrWillBeRawPtr<ErrorEvent> event = nullptr;
+            RawPtr<ErrorEvent> event = nullptr;
             if (state.m_errorEventFromImportedScript)
                 event = state.m_errorEventFromImportedScript.release();
             else
@@ -312,7 +312,7 @@
     m_disableEvalPending = errorMessage;
 }
 
-void WorkerOrWorkletScriptController::rethrowExceptionFromImportedScript(PassRefPtrWillBeRawPtr<ErrorEvent> errorEvent, ExceptionState& exceptionState)
+void WorkerOrWorkletScriptController::rethrowExceptionFromImportedScript(RawPtr<ErrorEvent> errorEvent, ExceptionState& exceptionState)
 {
     const String& errorMessage = errorEvent->message();
     if (m_executionState)
diff --git a/third_party/WebKit/Source/bindings/core/v8/WorkerOrWorkletScriptController.h b/third_party/WebKit/Source/bindings/core/v8/WorkerOrWorkletScriptController.h
index b98c78b..76b01df 100644
--- a/third_party/WebKit/Source/bindings/core/v8/WorkerOrWorkletScriptController.h
+++ b/third_party/WebKit/Source/bindings/core/v8/WorkerOrWorkletScriptController.h
@@ -51,11 +51,10 @@
 class ScriptSourceCode;
 class WorkerOrWorkletGlobalScope;
 
-class CORE_EXPORT WorkerOrWorkletScriptController : public NoBaseWillBeGarbageCollectedFinalized<WorkerOrWorkletScriptController> {
-    USING_FAST_MALLOC_WILL_BE_REMOVED(WorkerOrWorkletScriptController);
+class CORE_EXPORT WorkerOrWorkletScriptController : public GarbageCollectedFinalized<WorkerOrWorkletScriptController> {
     WTF_MAKE_NONCOPYABLE(WorkerOrWorkletScriptController);
 public:
-    static PassOwnPtrWillBeRawPtr<WorkerOrWorkletScriptController> create(WorkerOrWorkletGlobalScope*, v8::Isolate*);
+    static RawPtr<WorkerOrWorkletScriptController> create(WorkerOrWorkletGlobalScope*, v8::Isolate*);
     virtual ~WorkerOrWorkletScriptController();
     void dispose();
 
@@ -63,7 +62,7 @@
     bool isExecutionTerminating() const;
 
     // Returns true if the evaluation completed with no uncaught exception.
-    bool evaluate(const ScriptSourceCode&, RefPtrWillBeRawPtr<ErrorEvent>* = nullptr, CachedMetadataHandler* = nullptr, V8CacheOptions = V8CacheOptionsDefault);
+    bool evaluate(const ScriptSourceCode&, RawPtr<ErrorEvent>* = nullptr, CachedMetadataHandler* = nullptr, V8CacheOptions = V8CacheOptionsDefault);
 
     // Prevents future JavaScript execution. See
     // willScheduleExecutionTermination, isExecutionForbidden.
@@ -79,7 +78,7 @@
     void willScheduleExecutionTermination();
 
     // Used by WorkerGlobalScope:
-    void rethrowExceptionFromImportedScript(PassRefPtrWillBeRawPtr<ErrorEvent>, ExceptionState&);
+    void rethrowExceptionFromImportedScript(RawPtr<ErrorEvent>, ExceptionState&);
     void disableEval(const String&);
 
     // Used by Inspector agents:
@@ -102,7 +101,7 @@
     ScriptValue evaluate(const CompressibleString& script, const String& fileName, const TextPosition& scriptStartPosition, CachedMetadataHandler*, V8CacheOptions);
     void disposeContextIfNeeded();
 
-    RawPtrWillBeMember<WorkerOrWorkletGlobalScope> m_globalScope;
+    Member<WorkerOrWorkletGlobalScope> m_globalScope;
 
     // The v8 isolate associated to the (worker or worklet) global scope. For
     // workers this should be the worker thread's isolate, while for worklets
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8CSSStyleDeclarationCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8CSSStyleDeclarationCustom.cpp
index 63a74be..2176eee 100644
--- a/third_party/WebKit/Source/bindings/core/v8/custom/V8CSSStyleDeclarationCustom.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8CSSStyleDeclarationCustom.cpp
@@ -198,7 +198,7 @@
 
     CSSStyleDeclaration* impl = V8CSSStyleDeclaration::toImpl(info.Holder());
     // TODO(leviw): This API doesn't support custom properties.
-    RefPtrWillBeRawPtr<CSSValue> cssValue = impl->getPropertyCSSValueInternal(resolvedProperty);
+    RawPtr<CSSValue> cssValue = impl->getPropertyCSSValueInternal(resolvedProperty);
     if (cssValue) {
         v8SetReturnValueStringOrNull(info, cssValue->cssText(), info.GetIsolate());
         return;
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8CustomEventCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8CustomEventCustom.cpp
index 99d4a05..5c961b60 100644
--- a/third_party/WebKit/Source/bindings/core/v8/custom/V8CustomEventCustom.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8CustomEventCustom.cpp
@@ -85,7 +85,7 @@
             return;
     }
 
-    RefPtrWillBeRawPtr<CustomEvent> impl = CustomEvent::create(type, eventInitDict);
+    RawPtr<CustomEvent> impl = CustomEvent::create(type, eventInitDict);
     v8::Local<v8::Object> wrapper = info.Holder();
     wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8CustomEvent::wrapperTypeInfo, wrapper);
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8DocumentCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8DocumentCustom.cpp
index 78066bf..c081fa43 100644
--- a/third_party/WebKit/Source/bindings/core/v8/custom/V8DocumentCustom.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8DocumentCustom.cpp
@@ -56,7 +56,7 @@
     Document* document = V8Document::toImpl(info.Holder());
 
     if (info.Length() > 2) {
-        RefPtrWillBeRawPtr<LocalFrame> frame = document->frame();
+        RawPtr<LocalFrame> frame = document->frame();
         if (!frame)
             return;
         // Fetch the global object for the frame.
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8EventTargetCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8EventTargetCustom.cpp
index 7e9fcc8b..4776be9 100644
--- a/third_party/WebKit/Source/bindings/core/v8/custom/V8EventTargetCustom.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8EventTargetCustom.cpp
@@ -92,7 +92,7 @@
         return;
     }
     V8StringResource<> type;
-    RefPtrWillBeRawPtr<EventListener> listener;
+    RawPtr<EventListener> listener;
     EventListenerOptionsOrBoolean options;
     {
         type = info[0];
@@ -131,7 +131,7 @@
         return;
     }
     V8StringResource<> type;
-    RefPtrWillBeRawPtr<EventListener> listener;
+    RawPtr<EventListener> listener;
     EventListenerOptionsOrBoolean options;
     {
         type = info[0];
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8HTMLAllCollectionCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8HTMLAllCollectionCustom.cpp
index c101782..9d25a57 100644
--- a/third_party/WebKit/Source/bindings/core/v8/custom/V8HTMLAllCollectionCustom.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8HTMLAllCollectionCustom.cpp
@@ -42,7 +42,7 @@
 template<class CallbackInfo>
 static v8::Local<v8::Value> getNamedItems(HTMLAllCollection* collection, AtomicString name, const CallbackInfo& info)
 {
-    WillBeHeapVector<RefPtrWillBeMember<Element>> namedItems;
+    HeapVector<Member<Element>> namedItems;
     collection->namedItems(name, namedItems);
 
     if (!namedItems.size())
@@ -76,7 +76,7 @@
     if (!argument->IsNumber())
         UseCounter::countIfNotPrivateScript(info.GetIsolate(), currentExecutionContext(info.GetIsolate()), indexedWithNonNumberFeature);
 
-    RefPtrWillBeRawPtr<Element> result = collection->item(index->Value());
+    RawPtr<Element> result = collection->item(index->Value());
     return toV8(result.release(), info.Holder(), info.GetIsolate());
 }
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8MutationObserverCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8MutationObserverCustom.cpp
index fa1e751..4ef905c5 100644
--- a/third_party/WebKit/Source/bindings/core/v8/custom/V8MutationObserverCustom.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8MutationObserverCustom.cpp
@@ -59,8 +59,8 @@
 
     v8::Local<v8::Object> wrapper = info.Holder();
 
-    OwnPtrWillBeRawPtr<MutationCallback> callback = V8MutationCallback::create(v8::Local<v8::Function>::Cast(arg), wrapper, ScriptState::current(info.GetIsolate()));
-    RefPtrWillBeRawPtr<MutationObserver> observer = MutationObserver::create(callback.release());
+    RawPtr<MutationCallback> callback = V8MutationCallback::create(v8::Local<v8::Function>::Cast(arg), wrapper, ScriptState::current(info.GetIsolate()));
+    RawPtr<MutationObserver> observer = MutationObserver::create(callback.release());
 
     v8SetReturnValue(info, V8DOMWrapper::associateObjectWithWrapper(info.GetIsolate(), observer.get(), &wrapperTypeInfo, wrapper));
 }
@@ -68,8 +68,8 @@
 void V8MutationObserver::visitDOMWrapper(v8::Isolate* isolate, ScriptWrappable* scriptWrappable, const v8::Persistent<v8::Object>& wrapper)
 {
     MutationObserver* observer = scriptWrappable->toImpl<MutationObserver>();
-    WillBeHeapHashSet<RawPtrWillBeMember<Node>> observedNodes = observer->getObservedNodes();
-    for (WillBeHeapHashSet<RawPtrWillBeMember<Node>>::iterator it = observedNodes.begin(); it != observedNodes.end(); ++it) {
+    HeapHashSet<Member<Node>> observedNodes = observer->getObservedNodes();
+    for (HeapHashSet<Member<Node>>::iterator it = observedNodes.begin(); it != observedNodes.end(); ++it) {
         v8::UniqueId id(reinterpret_cast<intptr_t>(V8GCController::opaqueRootForGC(isolate, *it)));
         isolate->SetReferenceFromGroup(id, wrapper);
     }
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8WindowCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8WindowCustom.cpp
index aa154d2a..52176ed 100644
--- a/third_party/WebKit/Source/bindings/core/v8/custom/V8WindowCustom.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8WindowCustom.cpp
@@ -192,7 +192,7 @@
     //   postMessage(message, targetOrigin, {sequence of transferrables})
     // Legacy non-standard implementations in webkit allowed:
     //   postMessage(message, {sequence of transferrables}, targetOrigin);
-    OwnPtrWillBeRawPtr<MessagePortArray> portArray = adoptPtrWillBeNoop(new MessagePortArray);
+    RawPtr<MessagePortArray> portArray = new MessagePortArray;
     ArrayBufferArray arrayBufferArray;
     ImageBitmapArray imageBitmapArray;
     int targetOriginArgIndex = 1;
@@ -239,7 +239,7 @@
 
     // |impl| has to be a LocalDOMWindow, since RemoteDOMWindows wouldn't have
     // passed the BindingSecurity check above.
-    RefPtrWillBeRawPtr<DOMWindow> openedWindow = toLocalDOMWindow(impl)->open(urlString, frameName, windowFeaturesString, callingDOMWindow(info.GetIsolate()), enteredDOMWindow(info.GetIsolate()));
+    RawPtr<DOMWindow> openedWindow = toLocalDOMWindow(impl)->open(urlString, frameName, windowFeaturesString, callingDOMWindow(info.GetIsolate()), enteredDOMWindow(info.GetIsolate()));
     if (!openedWindow)
         return;
 
@@ -371,7 +371,7 @@
         return;
     }
 
-    RefPtrWillBeRawPtr<HTMLCollection> items = doc->windowNamedItems(propName);
+    RawPtr<HTMLCollection> items = doc->windowNamedItems(propName);
     if (!items->isEmpty()) {
         // TODO(esprehn): Firefox doesn't return an HTMLCollection here if there's
         // multiple with the same name, but Chrome and Safari does. What's the
diff --git a/third_party/WebKit/Source/bindings/modules/v8/V8ServiceWorkerMessageEventInternal.h b/third_party/WebKit/Source/bindings/modules/v8/V8ServiceWorkerMessageEventInternal.h
index eed117a1..cacc454 100644
--- a/third_party/WebKit/Source/bindings/modules/v8/V8ServiceWorkerMessageEventInternal.h
+++ b/third_party/WebKit/Source/bindings/modules/v8/V8ServiceWorkerMessageEventInternal.h
@@ -46,7 +46,7 @@
             return;
     }
 
-    RefPtrWillBeRawPtr<EventType> impl = EventType::create(type, eventInitDict);
+    RawPtr<EventType> impl = EventType::create(type, eventInitDict);
     v8::Local<v8::Object> wrapper = info.Holder();
     wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TypeOf<EventType>::Type::wrapperTypeInfo, wrapper);
 
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_callback_interface.py b/third_party/WebKit/Source/bindings/scripts/v8_callback_interface.py
index 682cb55..5606a23 100644
--- a/third_party/WebKit/Source/bindings/scripts/v8_callback_interface.py
+++ b/third_party/WebKit/Source/bindings/scripts/v8_callback_interface.py
@@ -64,7 +64,7 @@
     # Callbacks use raw pointers, so raw_type=True
     raw_cpp_type = idl_type.cpp_type_args(raw_type=True)
     # Pass containers and dictionaries to callback method by const reference rather than by value
-    if raw_cpp_type.startswith(('Vector', 'HeapVector', 'WillBeHeapVector')) or idl_type.is_dictionary:
+    if raw_cpp_type.startswith(('Vector', 'HeapVector', 'HeapVector')) or idl_type.is_dictionary:
         return 'const %s&' % raw_cpp_type
     return raw_cpp_type
 
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_types.py b/third_party/WebKit/Source/bindings/scripts/v8_types.py
index 3c60c1f3..6c01a89 100644
--- a/third_party/WebKit/Source/bindings/scripts/v8_types.py
+++ b/third_party/WebKit/Source/bindings/scripts/v8_types.py
@@ -111,7 +111,7 @@
     'Date': 'double',
     'Dictionary': 'Dictionary',
     'EventHandler': 'EventListener*',
-    'NodeFilter': 'RefPtrWillBeRawPtr<NodeFilter>',
+    'NodeFilter': 'RawPtr<NodeFilter>',
     'Promise': 'ScriptPromise',
     'ScriptValue': 'ScriptValue',
     # FIXME: Eliminate custom bindings for XPathNSResolver  http://crbug.com/345529
diff --git a/third_party/WebKit/Source/bindings/templates/callback_interface.h b/third_party/WebKit/Source/bindings/templates/callback_interface.h
index c5fa748..d665579 100644
--- a/third_party/WebKit/Source/bindings/templates/callback_interface.h
+++ b/third_party/WebKit/Source/bindings/templates/callback_interface.h
@@ -9,7 +9,7 @@
 namespace blink {
 
 class {{v8_class}} final : public {{cpp_class}}, public ActiveDOMCallback {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN({{v8_class}});
+    USING_GARBAGE_COLLECTED_MIXIN({{v8_class}});
 public:
     static {{v8_class}}* create(v8::Local<v8::Function> callback, ScriptState* scriptState)
     {
diff --git a/third_party/WebKit/Source/bindings/templates/methods.cpp b/third_party/WebKit/Source/bindings/templates/methods.cpp
index e59be03..74da6e91 100644
--- a/third_party/WebKit/Source/bindings/templates/methods.cpp
+++ b/third_party/WebKit/Source/bindings/templates/methods.cpp
@@ -116,7 +116,7 @@
 {% macro generate_argument_var_declaration(argument) %}
 {# FIXME: remove EventListener special case #}
 {% if argument.idl_type == 'EventListener' %}
-RefPtrWillBeRawPtr<{{argument.idl_type}}> {{argument.name}}
+RawPtr<{{argument.idl_type}}> {{argument.name}}
 {%- else %}
 {{argument.cpp_type}} {{argument.name}}
 {%- endif %}{# argument.idl_type == 'EventListener' #}
@@ -251,7 +251,7 @@
 {% endif %}
 {% if method.is_call_with_script_arguments %}
 {# [CallWith=ScriptArguments] #}
-RefPtrWillBeRawPtr<ScriptArguments> scriptArguments(ScriptArguments::create(scriptState, info, {{method.number_of_arguments}}));
+RawPtr<ScriptArguments> scriptArguments(ScriptArguments::create(scriptState, info, {{method.number_of_arguments}}));
 {% endif %}
 {% if method.is_call_with_document %}
 {# [ConstructorCallWith=Document] #}
@@ -475,7 +475,7 @@
         exceptionState.throwIfNeeded();
         return;
     }
-    OwnPtrWillBeRawPtr<MessagePortArray> ports = adoptPtrWillBeNoop(new MessagePortArray);
+    RawPtr<MessagePortArray> ports = new MessagePortArray;
     ArrayBufferArray arrayBuffers;
     ImageBitmapArray imageBitmaps;
     if (info.Length() > 1) {
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/TestDictionary.cpp b/third_party/WebKit/Source/bindings/tests/results/core/TestDictionary.cpp
index 2a599ab..484ba45 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/TestDictionary.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/TestDictionary.cpp
@@ -20,7 +20,7 @@
     setStringSequenceMember(Vector<String>());
     setTestInterfaceGarbageCollectedSequenceMember(HeapVector<Member<TestInterfaceGarbageCollected>>());
     setTestInterfaceSequenceMember(Vector<RefPtr<TestInterfaceImplementation>>());
-    setTestInterfaceWillBeGarbageCollectedSequenceMember(WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>>());
+    setTestInterfaceWillBeGarbageCollectedSequenceMember(HeapVector<Member<TestInterfaceWillBeGarbageCollected>>());
     setUnrestrictedDoubleMember(3.14);
 }
 
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/TestDictionary.h b/third_party/WebKit/Source/bindings/tests/results/core/TestDictionary.h
index ae215ca..a07b772 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/TestDictionary.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/TestDictionary.h
@@ -62,9 +62,9 @@
     void setDoubleOrStringSequenceMember(const HeapVector<DoubleOrString>& value) { m_doubleOrStringSequenceMember = value; }
 
     bool hasElementOrNullMember() const { return m_elementOrNullMember; }
-    PassRefPtrWillBeRawPtr<Element> elementOrNullMember() const { return m_elementOrNullMember; }
-    void setElementOrNullMember(PassRefPtrWillBeRawPtr<Element> value) { m_elementOrNullMember = value; }
-    void setElementOrNullMemberToNull() { m_elementOrNullMember = RefPtrWillBeMember<Element>(); }
+    Element* elementOrNullMember() const { return m_elementOrNullMember; }
+    void setElementOrNullMember(Element* value) { m_elementOrNullMember = value; }
+    void setElementOrNullMemberToNull() { m_elementOrNullMember = Member<Element>(); }
 
     bool hasEnumMember() const { return !m_enumMember.isNull(); }
     String enumMember() const { return m_enumMember; }
@@ -75,8 +75,8 @@
     void setEnumSequenceMember(const Vector<String>& value) { m_enumSequenceMember = value; }
 
     bool hasEventTargetMember() const { return m_eventTargetMember; }
-    PassRefPtrWillBeRawPtr<EventTarget> eventTargetMember() const { return m_eventTargetMember; }
-    void setEventTargetMember(PassRefPtrWillBeRawPtr<EventTarget> value) { m_eventTargetMember = value; }
+    EventTarget* eventTargetMember() const { return m_eventTargetMember; }
+    void setEventTargetMember(EventTarget* value) { m_eventTargetMember = value; }
 
     bool hasInternalDictionarySequenceMember() const { return !m_internalDictionarySequenceMember.isNull(); }
     const HeapVector<InternalDictionary>& internalDictionarySequenceMember() const { return m_internalDictionarySequenceMember.get(); }
@@ -155,17 +155,17 @@
     void setTestInterfaceSequenceMember(const Vector<RefPtr<TestInterfaceImplementation>>& value) { m_testInterfaceSequenceMember = value; }
 
     bool hasTestInterfaceWillBeGarbageCollectedMember() const { return m_testInterfaceWillBeGarbageCollectedMember; }
-    PassRefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> testInterfaceWillBeGarbageCollectedMember() const { return m_testInterfaceWillBeGarbageCollectedMember; }
-    void setTestInterfaceWillBeGarbageCollectedMember(PassRefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> value) { m_testInterfaceWillBeGarbageCollectedMember = value; }
+    TestInterfaceWillBeGarbageCollected* testInterfaceWillBeGarbageCollectedMember() const { return m_testInterfaceWillBeGarbageCollectedMember; }
+    void setTestInterfaceWillBeGarbageCollectedMember(TestInterfaceWillBeGarbageCollected* value) { m_testInterfaceWillBeGarbageCollectedMember = value; }
 
     bool hasTestInterfaceWillBeGarbageCollectedOrNullMember() const { return m_testInterfaceWillBeGarbageCollectedOrNullMember; }
-    PassRefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> testInterfaceWillBeGarbageCollectedOrNullMember() const { return m_testInterfaceWillBeGarbageCollectedOrNullMember; }
-    void setTestInterfaceWillBeGarbageCollectedOrNullMember(PassRefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> value) { m_testInterfaceWillBeGarbageCollectedOrNullMember = value; }
-    void setTestInterfaceWillBeGarbageCollectedOrNullMemberToNull() { m_testInterfaceWillBeGarbageCollectedOrNullMember = RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>(); }
+    TestInterfaceWillBeGarbageCollected* testInterfaceWillBeGarbageCollectedOrNullMember() const { return m_testInterfaceWillBeGarbageCollectedOrNullMember; }
+    void setTestInterfaceWillBeGarbageCollectedOrNullMember(TestInterfaceWillBeGarbageCollected* value) { m_testInterfaceWillBeGarbageCollectedOrNullMember = value; }
+    void setTestInterfaceWillBeGarbageCollectedOrNullMemberToNull() { m_testInterfaceWillBeGarbageCollectedOrNullMember = Member<TestInterfaceWillBeGarbageCollected>(); }
 
     bool hasTestInterfaceWillBeGarbageCollectedSequenceMember() const { return !m_testInterfaceWillBeGarbageCollectedSequenceMember.isNull(); }
-    const WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>>& testInterfaceWillBeGarbageCollectedSequenceMember() const { return m_testInterfaceWillBeGarbageCollectedSequenceMember.get(); }
-    void setTestInterfaceWillBeGarbageCollectedSequenceMember(const WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>>& value) { m_testInterfaceWillBeGarbageCollectedSequenceMember = value; }
+    const HeapVector<Member<TestInterfaceWillBeGarbageCollected>>& testInterfaceWillBeGarbageCollectedSequenceMember() const { return m_testInterfaceWillBeGarbageCollectedSequenceMember.get(); }
+    void setTestInterfaceWillBeGarbageCollectedSequenceMember(const HeapVector<Member<TestInterfaceWillBeGarbageCollected>>& value) { m_testInterfaceWillBeGarbageCollectedSequenceMember = value; }
 
     bool hasUint8ArrayMember() const { return m_uint8ArrayMember; }
     PassRefPtr<DOMUint8Array> uint8ArrayMember() const { return m_uint8ArrayMember; }
@@ -185,10 +185,10 @@
     Nullable<double> m_doubleOrNullMember;
     DoubleOrString m_doubleOrStringMember;
     Nullable<HeapVector<DoubleOrString>> m_doubleOrStringSequenceMember;
-    RefPtrWillBeMember<Element> m_elementOrNullMember;
+    Member<Element> m_elementOrNullMember;
     String m_enumMember;
     Nullable<Vector<String>> m_enumSequenceMember;
-    RefPtrWillBeMember<EventTarget> m_eventTargetMember;
+    Member<EventTarget> m_eventTargetMember;
     Nullable<HeapVector<InternalDictionary>> m_internalDictionarySequenceMember;
     Nullable<int> m_longMember;
     ScriptValue m_objectMember;
@@ -207,9 +207,9 @@
     RefPtr<TestInterfaceImplementation> m_testInterfaceMember;
     RefPtr<TestInterfaceImplementation> m_testInterfaceOrNullMember;
     Nullable<Vector<RefPtr<TestInterfaceImplementation>>> m_testInterfaceSequenceMember;
-    RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected> m_testInterfaceWillBeGarbageCollectedMember;
-    RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected> m_testInterfaceWillBeGarbageCollectedOrNullMember;
-    Nullable<WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>>> m_testInterfaceWillBeGarbageCollectedSequenceMember;
+    Member<TestInterfaceWillBeGarbageCollected> m_testInterfaceWillBeGarbageCollectedMember;
+    Member<TestInterfaceWillBeGarbageCollected> m_testInterfaceWillBeGarbageCollectedOrNullMember;
+    Nullable<HeapVector<Member<TestInterfaceWillBeGarbageCollected>>> m_testInterfaceWillBeGarbageCollectedSequenceMember;
     RefPtr<DOMUint8Array> m_uint8ArrayMember;
     Nullable<double> m_unrestrictedDoubleMember;
 
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.cpp b/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.cpp
index 3a4495fe0..5d71c21 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.cpp
@@ -503,40 +503,40 @@
 {
 }
 
-PassRefPtrWillBeRawPtr<Node> NodeOrNodeList::getAsNode() const
+Node* NodeOrNodeList::getAsNode() const
 {
     ASSERT(isNode());
     return m_node;
 }
 
-void NodeOrNodeList::setNode(PassRefPtrWillBeRawPtr<Node> value)
+void NodeOrNodeList::setNode(Node* value)
 {
     ASSERT(isNull());
     m_node = value;
     m_type = SpecificTypeNode;
 }
 
-NodeOrNodeList NodeOrNodeList::fromNode(PassRefPtrWillBeRawPtr<Node> value)
+NodeOrNodeList NodeOrNodeList::fromNode(Node* value)
 {
     NodeOrNodeList container;
     container.setNode(value);
     return container;
 }
 
-PassRefPtrWillBeRawPtr<NodeList> NodeOrNodeList::getAsNodeList() const
+NodeList* NodeOrNodeList::getAsNodeList() const
 {
     ASSERT(isNodeList());
     return m_nodeList;
 }
 
-void NodeOrNodeList::setNodeList(PassRefPtrWillBeRawPtr<NodeList> value)
+void NodeOrNodeList::setNodeList(NodeList* value)
 {
     ASSERT(isNull());
     m_nodeList = value;
     m_type = SpecificTypeNodeList;
 }
 
-NodeOrNodeList NodeOrNodeList::fromNodeList(PassRefPtrWillBeRawPtr<NodeList> value)
+NodeOrNodeList NodeOrNodeList::fromNodeList(NodeList* value)
 {
     NodeOrNodeList container;
     container.setNodeList(value);
@@ -562,13 +562,13 @@
         return;
 
     if (V8Node::hasInstance(v8Value, isolate)) {
-        RefPtrWillBeRawPtr<Node> cppValue = V8Node::toImpl(v8::Local<v8::Object>::Cast(v8Value));
+        RawPtr<Node> cppValue = V8Node::toImpl(v8::Local<v8::Object>::Cast(v8Value));
         impl.setNode(cppValue);
         return;
     }
 
     if (V8NodeList::hasInstance(v8Value, isolate)) {
-        RefPtrWillBeRawPtr<NodeList> cppValue = V8NodeList::toImpl(v8::Local<v8::Object>::Cast(v8Value));
+        RawPtr<NodeList> cppValue = V8NodeList::toImpl(v8::Local<v8::Object>::Cast(v8Value));
         impl.setNodeList(cppValue);
         return;
     }
@@ -1455,20 +1455,20 @@
 {
 }
 
-PassRefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> TestInterfaceWillBeGarbageCollectedOrTestDictionary::getAsTestInterfaceWillBeGarbageCollected() const
+TestInterfaceWillBeGarbageCollected* TestInterfaceWillBeGarbageCollectedOrTestDictionary::getAsTestInterfaceWillBeGarbageCollected() const
 {
     ASSERT(isTestInterfaceWillBeGarbageCollected());
     return m_testInterfaceWillBeGarbageCollected;
 }
 
-void TestInterfaceWillBeGarbageCollectedOrTestDictionary::setTestInterfaceWillBeGarbageCollected(PassRefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> value)
+void TestInterfaceWillBeGarbageCollectedOrTestDictionary::setTestInterfaceWillBeGarbageCollected(TestInterfaceWillBeGarbageCollected* value)
 {
     ASSERT(isNull());
     m_testInterfaceWillBeGarbageCollected = value;
     m_type = SpecificTypeTestInterfaceWillBeGarbageCollected;
 }
 
-TestInterfaceWillBeGarbageCollectedOrTestDictionary TestInterfaceWillBeGarbageCollectedOrTestDictionary::fromTestInterfaceWillBeGarbageCollected(PassRefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> value)
+TestInterfaceWillBeGarbageCollectedOrTestDictionary TestInterfaceWillBeGarbageCollectedOrTestDictionary::fromTestInterfaceWillBeGarbageCollected(TestInterfaceWillBeGarbageCollected* value)
 {
     TestInterfaceWillBeGarbageCollectedOrTestDictionary container;
     container.setTestInterfaceWillBeGarbageCollected(value);
@@ -1514,7 +1514,7 @@
         return;
 
     if (V8TestInterfaceWillBeGarbageCollected::hasInstance(v8Value, isolate)) {
-        RefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> cppValue = V8TestInterfaceWillBeGarbageCollected::toImpl(v8::Local<v8::Object>::Cast(v8Value));
+        RawPtr<TestInterfaceWillBeGarbageCollected> cppValue = V8TestInterfaceWillBeGarbageCollected::toImpl(v8::Local<v8::Object>::Cast(v8Value));
         impl.setTestInterfaceWillBeGarbageCollected(cppValue);
         return;
     }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.h b/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.h
index 36cee27..269a7fa 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/UnionTypesCore.h
@@ -260,14 +260,14 @@
     bool isNull() const { return m_type == SpecificTypeNone; }
 
     bool isNode() const { return m_type == SpecificTypeNode; }
-    PassRefPtrWillBeRawPtr<Node> getAsNode() const;
-    void setNode(PassRefPtrWillBeRawPtr<Node>);
-    static NodeOrNodeList fromNode(PassRefPtrWillBeRawPtr<Node>);
+    Node* getAsNode() const;
+    void setNode(Node*);
+    static NodeOrNodeList fromNode(Node*);
 
     bool isNodeList() const { return m_type == SpecificTypeNodeList; }
-    PassRefPtrWillBeRawPtr<NodeList> getAsNodeList() const;
-    void setNodeList(PassRefPtrWillBeRawPtr<NodeList>);
-    static NodeOrNodeList fromNodeList(PassRefPtrWillBeRawPtr<NodeList>);
+    NodeList* getAsNodeList() const;
+    void setNodeList(NodeList*);
+    static NodeOrNodeList fromNodeList(NodeList*);
 
     NodeOrNodeList(const NodeOrNodeList&);
     ~NodeOrNodeList();
@@ -282,8 +282,8 @@
     };
     SpecificTypes m_type;
 
-    RefPtrWillBeMember<Node> m_node;
-    RefPtrWillBeMember<NodeList> m_nodeList;
+    Member<Node> m_node;
+    Member<NodeList> m_nodeList;
 
     friend CORE_EXPORT v8::Local<v8::Value> toV8(const NodeOrNodeList&, v8::Local<v8::Object>, v8::Isolate*);
 };
@@ -744,9 +744,9 @@
     bool isNull() const { return m_type == SpecificTypeNone; }
 
     bool isTestInterfaceWillBeGarbageCollected() const { return m_type == SpecificTypeTestInterfaceWillBeGarbageCollected; }
-    PassRefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> getAsTestInterfaceWillBeGarbageCollected() const;
-    void setTestInterfaceWillBeGarbageCollected(PassRefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected>);
-    static TestInterfaceWillBeGarbageCollectedOrTestDictionary fromTestInterfaceWillBeGarbageCollected(PassRefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected>);
+    TestInterfaceWillBeGarbageCollected* getAsTestInterfaceWillBeGarbageCollected() const;
+    void setTestInterfaceWillBeGarbageCollected(TestInterfaceWillBeGarbageCollected*);
+    static TestInterfaceWillBeGarbageCollectedOrTestDictionary fromTestInterfaceWillBeGarbageCollected(TestInterfaceWillBeGarbageCollected*);
 
     bool isTestDictionary() const { return m_type == SpecificTypeTestDictionary; }
     TestDictionary getAsTestDictionary() const;
@@ -766,7 +766,7 @@
     };
     SpecificTypes m_type;
 
-    RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected> m_testInterfaceWillBeGarbageCollected;
+    Member<TestInterfaceWillBeGarbageCollected> m_testInterfaceWillBeGarbageCollected;
     TestDictionary m_testDictionary;
 
     friend CORE_EXPORT v8::Local<v8::Value> toV8(const TestInterfaceWillBeGarbageCollectedOrTestDictionary&, v8::Local<v8::Object>, v8::Isolate*);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.cpp
index 94735c0..92c8004 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.cpp
@@ -197,7 +197,7 @@
     ScriptController::callFunction(m_scriptState->getExecutionContext(), m_callback.newLocal(m_scriptState->isolate()), thisHandle, 1, argv, m_scriptState->isolate());
 }
 
-void V8TestCallbackInterface::voidMethodWillBeGarbageCollectedSequenceArg(const WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>>& sequenceArg)
+void V8TestCallbackInterface::voidMethodWillBeGarbageCollectedSequenceArg(const HeapVector<Member<TestInterfaceWillBeGarbageCollected>>& sequenceArg)
 {
     if (!canInvokeCallback())
         return;
@@ -217,7 +217,7 @@
     ScriptController::callFunction(m_scriptState->getExecutionContext(), m_callback.newLocal(m_scriptState->isolate()), v8::Undefined(m_scriptState->isolate()), 1, argv, m_scriptState->isolate());
 }
 
-void V8TestCallbackInterface::voidMethodWillBeGarbageCollectedArrayArg(const WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>>& arrayArg)
+void V8TestCallbackInterface::voidMethodWillBeGarbageCollectedArrayArg(const HeapVector<Member<TestInterfaceWillBeGarbageCollected>>& arrayArg)
 {
     if (!canInvokeCallback())
         return;
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.h b/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.h
index 2442cc8..f013f927 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.h
@@ -16,7 +16,7 @@
 namespace blink {
 
 class V8TestCallbackInterface final : public TestCallbackInterface, public ActiveDOMCallback {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(V8TestCallbackInterface);
+    USING_GARBAGE_COLLECTED_MIXIN(V8TestCallbackInterface);
 public:
     static V8TestCallbackInterface* create(v8::Local<v8::Function> callback, ScriptState* scriptState)
     {
@@ -36,8 +36,8 @@
     void voidMethodTestInterfaceEmptyStringArg(TestInterfaceEmpty* testInterfaceEmptyArg, const String& stringArg) override;
     void callbackWithThisValueVoidMethodStringArg(ScriptValue thisValue, const String& stringArg) override;
     void customVoidMethodTestInterfaceEmptyArg(TestInterfaceEmpty* testInterfaceEmptyArg) override;
-    void voidMethodWillBeGarbageCollectedSequenceArg(const WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>>& sequenceArg) override;
-    void voidMethodWillBeGarbageCollectedArrayArg(const WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>>& arrayArg) override;
+    void voidMethodWillBeGarbageCollectedSequenceArg(const HeapVector<Member<TestInterfaceWillBeGarbageCollected>>& sequenceArg) override;
+    void voidMethodWillBeGarbageCollectedArrayArg(const HeapVector<Member<TestInterfaceWillBeGarbageCollected>>& arrayArg) override;
 private:
     CORE_EXPORT V8TestCallbackInterface(v8::Local<v8::Function>, ScriptState*);
 
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionary.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionary.cpp
index 6693b2c..cff88c3 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionary.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionary.cpp
@@ -618,7 +618,7 @@
         if (testInterfaceWillBeGarbageCollectedSequenceMemberValue.IsEmpty() || testInterfaceWillBeGarbageCollectedSequenceMemberValue->IsUndefined()) {
             // Do nothing.
         } else {
-            WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>> testInterfaceWillBeGarbageCollectedSequenceMember = (toRefPtrWillBeMemberNativeArray<TestInterfaceWillBeGarbageCollected, V8TestInterfaceWillBeGarbageCollected>(testInterfaceWillBeGarbageCollectedSequenceMemberValue, 0, isolate, exceptionState));
+            HeapVector<Member<TestInterfaceWillBeGarbageCollected>> testInterfaceWillBeGarbageCollectedSequenceMember = (toMemberNativeArray<TestInterfaceWillBeGarbageCollected, V8TestInterfaceWillBeGarbageCollected>(testInterfaceWillBeGarbageCollectedSequenceMemberValue, 0, isolate, exceptionState));
             if (exceptionState.hadException())
                 return;
             impl.setTestInterfaceWillBeGarbageCollectedSequenceMember(testInterfaceWillBeGarbageCollectedSequenceMember);
@@ -871,7 +871,7 @@
         if (!v8CallBoolean(dictionary->CreateDataProperty(isolate->GetCurrentContext(), v8String(isolate, "testInterfaceWillBeGarbageCollectedSequenceMember"), toV8(impl.testInterfaceWillBeGarbageCollectedSequenceMember(), creationContext, isolate))))
             return false;
     } else {
-        if (!v8CallBoolean(dictionary->CreateDataProperty(isolate->GetCurrentContext(), v8String(isolate, "testInterfaceWillBeGarbageCollectedSequenceMember"), toV8(WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>>(), creationContext, isolate))))
+        if (!v8CallBoolean(dictionary->CreateDataProperty(isolate->GetCurrentContext(), v8String(isolate, "testInterfaceWillBeGarbageCollectedSequenceMember"), toV8(HeapVector<Member<TestInterfaceWillBeGarbageCollected>>(), creationContext, isolate))))
             return false;
     }
 
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp
index e7638e6..69d2094 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp
@@ -27,7 +27,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceDocument::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceDocument::domTemplate, V8TestInterfaceDocument::refObject, V8TestInterfaceDocument::derefObject, V8TestInterfaceDocument::trace, 0, 0, V8TestInterfaceDocument::preparePrototypeAndInterfaceObject, V8TestInterfaceDocument::installConditionallyEnabledProperties, "TestInterfaceDocument", &V8Document::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::NodeClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Dependent, WrapperTypeInfo::WillBeGarbageCollectedObject };
+const WrapperTypeInfo V8TestInterfaceDocument::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceDocument::domTemplate, V8TestInterfaceDocument::refObject, V8TestInterfaceDocument::derefObject, V8TestInterfaceDocument::trace, 0, 0, V8TestInterfaceDocument::preparePrototypeAndInterfaceObject, V8TestInterfaceDocument::installConditionallyEnabledProperties, "TestInterfaceDocument", &V8Document::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::NodeClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Dependent, WrapperTypeInfo::GarbageCollectedObject };
 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG)
 #pragma clang diagnostic pop
 #endif
@@ -55,7 +55,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     TestInterfaceDocument* proxyImpl = V8TestInterfaceDocument::toImpl(holder);
-    RefPtrWillBeRawPtr<Location> impl = WTF::getPtr(proxyImpl->location());
+    RawPtr<Location> impl = WTF::getPtr(proxyImpl->location());
     if (!impl)
         return;
     V8StringResource<> cppValue = v8Value;
@@ -112,16 +112,10 @@
 
 void V8TestInterfaceDocument::refObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestInterfaceDocument>()->ref();
-#endif
 }
 
 void V8TestInterfaceDocument::derefObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestInterfaceDocument>()->deref();
-#endif
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.h b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.h
index 551fc7a..9b147556 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.h
@@ -36,9 +36,7 @@
     template<typename VisitorDispatcher>
     static void trace(VisitorDispatcher visitor, ScriptWrappable* scriptWrappable)
     {
-#if ENABLE(OILPAN)
         visitor->trace(scriptWrappable->toImpl<TestInterfaceDocument>());
-#endif
     }
     static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
     static void installConditionallyEnabledProperties(v8::Local<v8::Object>, v8::Isolate*) { }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp
index d1174e5..b3deb15 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp
@@ -24,7 +24,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceEventInitConstructor::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceEventInitConstructor::domTemplate, V8TestInterfaceEventInitConstructor::refObject, V8TestInterfaceEventInitConstructor::derefObject, V8TestInterfaceEventInitConstructor::trace, 0, 0, V8TestInterfaceEventInitConstructor::preparePrototypeAndInterfaceObject, V8TestInterfaceEventInitConstructor::installConditionallyEnabledProperties, "TestInterfaceEventInitConstructor", &V8Event::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClassId, WrapperTypeInfo::NotInheritFromEventTarget, WrapperTypeInfo::Independent, WrapperTypeInfo::WillBeGarbageCollectedObject };
+const WrapperTypeInfo V8TestInterfaceEventInitConstructor::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceEventInitConstructor::domTemplate, V8TestInterfaceEventInitConstructor::refObject, V8TestInterfaceEventInitConstructor::derefObject, V8TestInterfaceEventInitConstructor::trace, 0, 0, V8TestInterfaceEventInitConstructor::preparePrototypeAndInterfaceObject, V8TestInterfaceEventInitConstructor::installConditionallyEnabledProperties, "TestInterfaceEventInitConstructor", &V8Event::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClassId, WrapperTypeInfo::NotInheritFromEventTarget, WrapperTypeInfo::Independent, WrapperTypeInfo::GarbageCollectedObject };
 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG)
 #pragma clang diagnostic pop
 #endif
@@ -83,7 +83,7 @@
         if (exceptionState.throwIfNeeded())
             return;
     }
-    RefPtrWillBeRawPtr<TestInterfaceEventInitConstructor> impl = TestInterfaceEventInitConstructor::create(type, testInterfaceEventInit);
+    RawPtr<TestInterfaceEventInitConstructor> impl = TestInterfaceEventInitConstructor::create(type, testInterfaceEventInit);
     v8::Local<v8::Object> wrapper = info.Holder();
     wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceEventInitConstructor::wrapperTypeInfo, wrapper);
     v8SetReturnValue(info, wrapper);
@@ -154,16 +154,10 @@
 
 void V8TestInterfaceEventInitConstructor::refObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestInterfaceEventInitConstructor>()->ref();
-#endif
 }
 
 void V8TestInterfaceEventInitConstructor::derefObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestInterfaceEventInitConstructor>()->deref();
-#endif
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.h b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.h
index 133769f1..9c096a4 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.h
@@ -36,9 +36,7 @@
     template<typename VisitorDispatcher>
     static void trace(VisitorDispatcher visitor, ScriptWrappable* scriptWrappable)
     {
-#if ENABLE(OILPAN)
         visitor->trace(scriptWrappable->toImpl<TestInterfaceEventInitConstructor>());
-#endif
     }
     static void constructorCallback(const v8::FunctionCallbackInfo<v8::Value>&);
     static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp
index 712bca4..4c6d535 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp
@@ -22,7 +22,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceEventTarget::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceEventTarget::domTemplate, V8TestInterfaceEventTarget::refObject, V8TestInterfaceEventTarget::derefObject, V8TestInterfaceEventTarget::trace, 0, 0, V8TestInterfaceEventTarget::preparePrototypeAndInterfaceObject, V8TestInterfaceEventTarget::installConditionallyEnabledProperties, "TestInterfaceEventTarget", &V8EventTarget::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Independent, WrapperTypeInfo::WillBeGarbageCollectedObject };
+const WrapperTypeInfo V8TestInterfaceEventTarget::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceEventTarget::domTemplate, V8TestInterfaceEventTarget::refObject, V8TestInterfaceEventTarget::derefObject, V8TestInterfaceEventTarget::trace, 0, 0, V8TestInterfaceEventTarget::preparePrototypeAndInterfaceObject, V8TestInterfaceEventTarget::installConditionallyEnabledProperties, "TestInterfaceEventTarget", &V8EventTarget::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Independent, WrapperTypeInfo::GarbageCollectedObject };
 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG)
 #pragma clang diagnostic pop
 #endif
@@ -42,7 +42,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceEventTargetConstructor::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceEventTargetConstructor::domTemplate, V8TestInterfaceEventTarget::refObject, V8TestInterfaceEventTarget::derefObject, V8TestInterfaceEventTarget::trace, 0, 0, V8TestInterfaceEventTarget::preparePrototypeAndInterfaceObject, V8TestInterfaceEventTarget::installConditionallyEnabledProperties, "TestInterfaceEventTarget", 0, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Independent, WrapperTypeInfo::WillBeGarbageCollectedObject };
+const WrapperTypeInfo V8TestInterfaceEventTargetConstructor::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceEventTargetConstructor::domTemplate, V8TestInterfaceEventTarget::refObject, V8TestInterfaceEventTarget::derefObject, V8TestInterfaceEventTarget::trace, 0, 0, V8TestInterfaceEventTarget::preparePrototypeAndInterfaceObject, V8TestInterfaceEventTarget::installConditionallyEnabledProperties, "TestInterfaceEventTarget", 0, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Independent, WrapperTypeInfo::GarbageCollectedObject };
 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG)
 #pragma clang diagnostic pop
 #endif
@@ -59,7 +59,7 @@
         return;
     }
     Document& document = *toDocument(currentExecutionContext(info.GetIsolate()));
-    RefPtrWillBeRawPtr<TestInterfaceEventTarget> impl = TestInterfaceEventTarget::createForJSConstructor(document);
+    RawPtr<TestInterfaceEventTarget> impl = TestInterfaceEventTarget::createForJSConstructor(document);
     v8::Local<v8::Object> wrapper = info.Holder();
     wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceEventTargetConstructor::wrapperTypeInfo, wrapper);
     v8SetReturnValue(info, wrapper);
@@ -118,16 +118,10 @@
 
 void V8TestInterfaceEventTarget::refObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestInterfaceEventTarget>()->ref();
-#endif
 }
 
 void V8TestInterfaceEventTarget::derefObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestInterfaceEventTarget>()->deref();
-#endif
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.h b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.h
index 057d705..573b940 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.h
@@ -43,9 +43,7 @@
     template<typename VisitorDispatcher>
     static void trace(VisitorDispatcher visitor, ScriptWrappable* scriptWrappable)
     {
-#if ENABLE(OILPAN)
         visitor->trace(scriptWrappable->toImpl<TestInterfaceEventTarget>());
-#endif
     }
     static const int eventListenerCacheIndex = v8DefaultWrapperInternalFieldCount + 0;
     static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 1;
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp
index 32a9f50c..e703f28 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp
@@ -26,7 +26,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceNode::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceNode::domTemplate, V8TestInterfaceNode::refObject, V8TestInterfaceNode::derefObject, V8TestInterfaceNode::trace, 0, 0, V8TestInterfaceNode::preparePrototypeAndInterfaceObject, V8TestInterfaceNode::installConditionallyEnabledProperties, "TestInterfaceNode", &V8Node::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::NodeClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Dependent, WrapperTypeInfo::WillBeGarbageCollectedObject };
+const WrapperTypeInfo V8TestInterfaceNode::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceNode::domTemplate, V8TestInterfaceNode::refObject, V8TestInterfaceNode::derefObject, V8TestInterfaceNode::trace, 0, 0, V8TestInterfaceNode::preparePrototypeAndInterfaceObject, V8TestInterfaceNode::installConditionallyEnabledProperties, "TestInterfaceNode", &V8Node::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::NodeClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Dependent, WrapperTypeInfo::GarbageCollectedObject };
 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG)
 #pragma clang diagnostic pop
 #endif
@@ -358,16 +358,10 @@
 
 void V8TestInterfaceNode::refObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestInterfaceNode>()->ref();
-#endif
 }
 
 void V8TestInterfaceNode::derefObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestInterfaceNode>()->deref();
-#endif
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.h b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.h
index 6f03a80..67eaebb 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.h
@@ -36,9 +36,7 @@
     template<typename VisitorDispatcher>
     static void trace(VisitorDispatcher visitor, ScriptWrappable* scriptWrappable)
     {
-#if ENABLE(OILPAN)
         visitor->trace(scriptWrappable->toImpl<TestInterfaceNode>());
-#endif
     }
     static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
     static void installConditionallyEnabledProperties(v8::Local<v8::Object>, v8::Isolate*) { }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp
index 5f42832..51552875 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp
@@ -23,7 +23,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceWillBeGarbageCollected::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceWillBeGarbageCollected::domTemplate, V8TestInterfaceWillBeGarbageCollected::refObject, V8TestInterfaceWillBeGarbageCollected::derefObject, V8TestInterfaceWillBeGarbageCollected::trace, 0, 0, V8TestInterfaceWillBeGarbageCollected::preparePrototypeAndInterfaceObject, V8TestInterfaceWillBeGarbageCollected::installConditionallyEnabledProperties, "TestInterfaceWillBeGarbageCollected", &V8EventTarget::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Independent, WrapperTypeInfo::WillBeGarbageCollectedObject };
+const WrapperTypeInfo V8TestInterfaceWillBeGarbageCollected::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceWillBeGarbageCollected::domTemplate, V8TestInterfaceWillBeGarbageCollected::refObject, V8TestInterfaceWillBeGarbageCollected::derefObject, V8TestInterfaceWillBeGarbageCollected::trace, 0, 0, V8TestInterfaceWillBeGarbageCollected::preparePrototypeAndInterfaceObject, V8TestInterfaceWillBeGarbageCollected::installConditionallyEnabledProperties, "TestInterfaceWillBeGarbageCollected", &V8EventTarget::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Independent, WrapperTypeInfo::GarbageCollectedObject };
 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG)
 #pragma clang diagnostic pop
 #endif
@@ -102,7 +102,7 @@
         if (!str.prepare())
             return;
     }
-    RefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> impl = TestInterfaceWillBeGarbageCollected::create(str);
+    RawPtr<TestInterfaceWillBeGarbageCollected> impl = TestInterfaceWillBeGarbageCollected::create(str);
     v8::Local<v8::Object> wrapper = info.Holder();
     wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceWillBeGarbageCollected::wrapperTypeInfo, wrapper);
     v8SetReturnValue(info, wrapper);
@@ -124,7 +124,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestInterfaceWillBeGarbageCollectedConstructor::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceWillBeGarbageCollectedConstructor::domTemplate, V8TestInterfaceWillBeGarbageCollected::refObject, V8TestInterfaceWillBeGarbageCollected::derefObject, V8TestInterfaceWillBeGarbageCollected::trace, 0, 0, V8TestInterfaceWillBeGarbageCollected::preparePrototypeAndInterfaceObject, V8TestInterfaceWillBeGarbageCollected::installConditionallyEnabledProperties, "TestInterfaceWillBeGarbageCollected", 0, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Independent, WrapperTypeInfo::WillBeGarbageCollectedObject };
+const WrapperTypeInfo V8TestInterfaceWillBeGarbageCollectedConstructor::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceWillBeGarbageCollectedConstructor::domTemplate, V8TestInterfaceWillBeGarbageCollected::refObject, V8TestInterfaceWillBeGarbageCollected::derefObject, V8TestInterfaceWillBeGarbageCollected::trace, 0, 0, V8TestInterfaceWillBeGarbageCollected::preparePrototypeAndInterfaceObject, V8TestInterfaceWillBeGarbageCollected::installConditionallyEnabledProperties, "TestInterfaceWillBeGarbageCollected", 0, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::ObjectClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Independent, WrapperTypeInfo::GarbageCollectedObject };
 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG)
 #pragma clang diagnostic pop
 #endif
@@ -150,7 +150,7 @@
         if (!str.prepare())
             return;
     }
-    RefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> impl = TestInterfaceWillBeGarbageCollected::createForJSConstructor(str);
+    RawPtr<TestInterfaceWillBeGarbageCollected> impl = TestInterfaceWillBeGarbageCollected::createForJSConstructor(str);
     v8::Local<v8::Object> wrapper = info.Holder();
     wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestInterfaceWillBeGarbageCollectedConstructor::wrapperTypeInfo, wrapper);
     v8SetReturnValue(info, wrapper);
@@ -227,16 +227,10 @@
 
 void V8TestInterfaceWillBeGarbageCollected::refObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestInterfaceWillBeGarbageCollected>()->ref();
-#endif
 }
 
 void V8TestInterfaceWillBeGarbageCollected::derefObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestInterfaceWillBeGarbageCollected>()->deref();
-#endif
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.h b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.h
index 734bda7..3b96549 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.h
@@ -43,9 +43,7 @@
     template<typename VisitorDispatcher>
     static void trace(VisitorDispatcher visitor, ScriptWrappable* scriptWrappable)
     {
-#if ENABLE(OILPAN)
         visitor->trace(scriptWrappable->toImpl<TestInterfaceWillBeGarbageCollected>());
-#endif
     }
     static void constructorCallback(const v8::FunctionCallbackInfo<v8::Value>&);
     static const int eventListenerCacheIndex = v8DefaultWrapperInternalFieldCount + 0;
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp
index 5d5e6ee..354f10d 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp
@@ -22,7 +22,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wglobal-constructors"
 #endif
-const WrapperTypeInfo V8TestNode::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestNode::domTemplate, V8TestNode::refObject, V8TestNode::derefObject, V8TestNode::trace, 0, 0, V8TestNode::preparePrototypeAndInterfaceObject, V8TestNode::installConditionallyEnabledProperties, "TestNode", &V8Node::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::NodeClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Dependent, WrapperTypeInfo::WillBeGarbageCollectedObject };
+const WrapperTypeInfo V8TestNode::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestNode::domTemplate, V8TestNode::refObject, V8TestNode::derefObject, V8TestNode::trace, 0, 0, V8TestNode::preparePrototypeAndInterfaceObject, V8TestNode::installConditionallyEnabledProperties, "TestNode", &V8Node::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::NodeClassId, WrapperTypeInfo::InheritFromEventTarget, WrapperTypeInfo::Dependent, WrapperTypeInfo::GarbageCollectedObject };
 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG)
 #pragma clang diagnostic pop
 #endif
@@ -152,7 +152,7 @@
 
 static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info)
 {
-    RefPtrWillBeRawPtr<TestNode> impl = TestNode::create();
+    RawPtr<TestNode> impl = TestNode::create();
     v8::Local<v8::Object> wrapper = info.Holder();
     wrapper = impl->associateWithWrapper(info.GetIsolate(), &V8TestNode::wrapperTypeInfo, wrapper);
     v8SetReturnValue(info, wrapper);
@@ -220,16 +220,10 @@
 
 void V8TestNode::refObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestNode>()->ref();
-#endif
 }
 
 void V8TestNode::derefObject(ScriptWrappable* scriptWrappable)
 {
-#if !ENABLE(OILPAN)
-    scriptWrappable->toImpl<TestNode>()->deref();
-#endif
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.h b/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.h
index f18010b6..11ba0502 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.h
@@ -36,9 +36,7 @@
     template<typename VisitorDispatcher>
     static void trace(VisitorDispatcher visitor, ScriptWrappable* scriptWrappable)
     {
-#if ENABLE(OILPAN)
         visitor->trace(scriptWrappable->toImpl<TestNode>());
-#endif
     }
     static void constructorCallback(const v8::FunctionCallbackInfo<v8::Value>&);
     static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
index 6bcbda6..7618783 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
@@ -1021,7 +1021,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     TestObject* impl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<NodeFilter> cppValue = toNodeFilter(v8Value, info.Holder(), ScriptState::current(info.GetIsolate()));
+    RawPtr<NodeFilter> cppValue = toNodeFilter(v8Value, info.Holder(), ScriptState::current(info.GetIsolate()));
     impl->setNodeFilterAttribute(WTF::getPtr(cppValue));
 }
 
@@ -3013,7 +3013,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     TestObject* proxyImpl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<TestNode> impl = WTF::getPtr(proxyImpl->location());
+    RawPtr<TestNode> impl = WTF::getPtr(proxyImpl->location());
     if (!impl)
         return;
     V8StringResource<> cppValue = v8Value;
@@ -3045,7 +3045,7 @@
     v8::Local<v8::Object> holder = info.Holder();
     ExceptionState exceptionState(ExceptionState::SetterContext, "locationWithException", "TestObject", holder, info.GetIsolate());
     TestObject* proxyImpl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationWithException());
+    RawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationWithException());
     if (!impl)
         return;
     V8StringResource<> cppValue = v8Value;
@@ -3077,7 +3077,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     TestObject* proxyImpl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationWithCallWith());
+    RawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationWithCallWith());
     if (!impl)
         return;
     V8StringResource<> cppValue = v8Value;
@@ -3110,7 +3110,7 @@
     v8::Local<v8::Object> holder = info.Holder();
     ExceptionState exceptionState(ExceptionState::SetterContext, "locationByteString", "TestObject", holder, info.GetIsolate());
     TestObject* proxyImpl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationByteString());
+    RawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationByteString());
     if (!impl)
         return;
     V8StringResource<> cppValue = toByteString(info.GetIsolate(), v8Value, exceptionState);
@@ -3141,7 +3141,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     TestObject* proxyImpl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationWithPerWorldBindings());
+    RawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationWithPerWorldBindings());
     if (!impl)
         return;
     V8StringResource<> cppValue = v8Value;
@@ -3172,7 +3172,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     TestObject* proxyImpl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationWithPerWorldBindings());
+    RawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationWithPerWorldBindings());
     if (!impl)
         return;
     V8StringResource<> cppValue = v8Value;
@@ -3203,7 +3203,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     TestObject* proxyImpl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationLegacyInterfaceTypeChecking());
+    RawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationLegacyInterfaceTypeChecking());
     if (!impl)
         return;
     V8StringResource<> cppValue = v8Value;
@@ -3264,7 +3264,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     TestObject* impl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> cppValue(impl->locationWillBeGarbageCollected());
+    RawPtr<TestInterfaceWillBeGarbageCollected> cppValue(impl->locationWillBeGarbageCollected());
     if (cppValue && DOMDataStore::setReturnValue(info.GetReturnValue(), cppValue.get()))
         return;
     v8::Local<v8::Value> v8Value(toV8(cppValue.get(), holder, info.GetIsolate()));
@@ -3284,7 +3284,7 @@
     v8::Local<v8::Object> holder = info.Holder();
     ExceptionState exceptionState(ExceptionState::SetterContext, "locationWillBeGarbageCollected", "TestObject", holder, info.GetIsolate());
     TestObject* proxyImpl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> impl = WTF::getPtr(proxyImpl->locationWillBeGarbageCollected());
+    RawPtr<TestInterfaceWillBeGarbageCollected> impl = WTF::getPtr(proxyImpl->locationWillBeGarbageCollected());
     if (!impl)
         return;
     TestInterfaceWillBeGarbageCollected* cppValue = V8TestInterfaceWillBeGarbageCollected::toImplWithTypeCheck(info.GetIsolate(), v8Value);
@@ -4145,7 +4145,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     TestObject* proxyImpl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationPutForwards());
+    RawPtr<TestNode> impl = WTF::getPtr(proxyImpl->locationPutForwards());
     if (!impl)
         return;
     V8StringResource<> cppValue = v8Value;
@@ -4882,7 +4882,7 @@
 {
     v8::Local<v8::Object> holder = info.Holder();
     TestObject* impl = V8TestObject::toImpl(holder);
-    RefPtrWillBeRawPtr<Node> result = nullptr;
+    RawPtr<Node> result = nullptr;
     if (!V8TestObject::PrivateScript::nodeAttributeAttributeGetter(toLocalFrame(toFrameIfNotDetached(info.GetIsolate()->GetCurrentContext())), impl, &result))
         return;
     v8SetReturnValueFast(info, WTF::getPtr(result.release()), impl);
@@ -7009,7 +7009,7 @@
         return;
     }
     TestObject* impl = V8TestObject::toImpl(info.Holder());
-    RefPtrWillBeRawPtr<NodeFilter> nodeFilterArg;
+    RawPtr<NodeFilter> nodeFilterArg;
     {
         nodeFilterArg = toNodeFilter(info[0], info.Holder(), ScriptState::current(info.GetIsolate()));
     }
@@ -7896,7 +7896,7 @@
 {
     ExceptionState exceptionState(ExceptionState::ExecutionContext, "voidMethodVariadicTestInterfaceWillBeGarbageCollectedArg", "TestObject", info.Holder(), info.GetIsolate());
     TestObject* impl = V8TestObject::toImpl(info.Holder());
-    WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>> variadicTestInterfaceWillBeGarbageCollectedArg;
+    HeapVector<Member<TestInterfaceWillBeGarbageCollected>> variadicTestInterfaceWillBeGarbageCollectedArg;
     {
         for (int i = 0; i < info.Length(); ++i) {
             if (!V8TestInterfaceWillBeGarbageCollected::hasInstance(info[i], info.GetIsolate())) {
@@ -9280,7 +9280,7 @@
 {
     TestObject* impl = V8TestObject::toImpl(info.Holder());
     ScriptState* scriptState = ScriptState::current(info.GetIsolate());
-    RefPtrWillBeRawPtr<ScriptArguments> scriptArguments(ScriptArguments::create(scriptState, info, 0));
+    RawPtr<ScriptArguments> scriptArguments(ScriptArguments::create(scriptState, info, 0));
     impl->callWithScriptStateScriptArgumentsVoidMethod(scriptState, scriptArguments.release());
 }
 
@@ -9303,7 +9303,7 @@
         }
         if (UNLIKELY(numArgsPassed <= 0)) {
             ScriptState* scriptState = ScriptState::current(info.GetIsolate());
-            RefPtrWillBeRawPtr<ScriptArguments> scriptArguments(ScriptArguments::create(scriptState, info, 1));
+            RawPtr<ScriptArguments> scriptArguments(ScriptArguments::create(scriptState, info, 1));
             impl->callWithScriptStateScriptArgumentsVoidMethodOptionalBooleanArg(scriptState, scriptArguments.release());
             return;
         }
@@ -9312,7 +9312,7 @@
             return;
     }
     ScriptState* scriptState = ScriptState::current(info.GetIsolate());
-    RefPtrWillBeRawPtr<ScriptArguments> scriptArguments(ScriptArguments::create(scriptState, info, 1));
+    RawPtr<ScriptArguments> scriptArguments(ScriptArguments::create(scriptState, info, 1));
     impl->callWithScriptStateScriptArgumentsVoidMethodOptionalBooleanArg(scriptState, scriptArguments.release(), optionalBooleanArg);
 }
 
@@ -10192,7 +10192,7 @@
         exceptionState.throwIfNeeded();
         return;
     }
-    OwnPtrWillBeRawPtr<MessagePortArray> ports = adoptPtrWillBeNoop(new MessagePortArray);
+    RawPtr<MessagePortArray> ports = new MessagePortArray;
     ArrayBufferArray arrayBuffers;
     ImageBitmapArray imageBitmaps;
     if (info.Length() > 1) {
@@ -10906,9 +10906,9 @@
         return;
     }
     TestObject* impl = V8TestObject::toImpl(info.Holder());
-    WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>> testInterfaceWillBeGarbageCollectedSequenceArg;
+    HeapVector<Member<TestInterfaceWillBeGarbageCollected>> testInterfaceWillBeGarbageCollectedSequenceArg;
     {
-        testInterfaceWillBeGarbageCollectedSequenceArg = (toRefPtrWillBeMemberNativeArray<TestInterfaceWillBeGarbageCollected, V8TestInterfaceWillBeGarbageCollected>(info[0], 1, info.GetIsolate(), exceptionState));
+        testInterfaceWillBeGarbageCollectedSequenceArg = (toMemberNativeArray<TestInterfaceWillBeGarbageCollected, V8TestInterfaceWillBeGarbageCollected>(info[0], 1, info.GetIsolate(), exceptionState));
         if (exceptionState.throwIfNeeded())
             return;
     }
@@ -10929,9 +10929,9 @@
         return;
     }
     TestObject* impl = V8TestObject::toImpl(info.Holder());
-    WillBeHeapVector<RefPtrWillBeMember<TestInterfaceWillBeGarbageCollected>> testInterfaceWillBeGarbageCollectedArrayArg;
+    HeapVector<Member<TestInterfaceWillBeGarbageCollected>> testInterfaceWillBeGarbageCollectedArrayArg;
     {
-        testInterfaceWillBeGarbageCollectedArrayArg = (toRefPtrWillBeMemberNativeArray<TestInterfaceWillBeGarbageCollected, V8TestInterfaceWillBeGarbageCollected>(info[0], 1, info.GetIsolate(), exceptionState));
+        testInterfaceWillBeGarbageCollectedArrayArg = (toMemberNativeArray<TestInterfaceWillBeGarbageCollected, V8TestInterfaceWillBeGarbageCollected>(info[0], 1, info.GetIsolate(), exceptionState));
         if (exceptionState.throwIfNeeded())
             return;
     }
@@ -11055,7 +11055,7 @@
             return;
         }
     }
-    RefPtrWillBeRawPtr<Node> result = nullptr;
+    RawPtr<Node> result = nullptr;
     if (!V8TestObject::PrivateScript::nodeMethodWithNodeArgumentImplementedInPrivateScriptMethod(toLocalFrame(toFrameIfNotDetached(info.GetIsolate()->GetCurrentContext())), impl, value, &result))
         return;
     v8SetReturnValue(info, result.release());
@@ -11103,7 +11103,7 @@
         if (!string.prepare())
             return;
     }
-    RefPtrWillBeRawPtr<Node> result = nullptr;
+    RawPtr<Node> result = nullptr;
     if (!V8TestObject::PrivateScript::nodeMethodWithVariousArgumentsImplementedInPrivateScriptMethod(toLocalFrame(toFrameIfNotDetached(info.GetIsolate()->GetCurrentContext())), impl, document, node, value1, value2, string, &result))
         return;
     v8SetReturnValue(info, result.release());
@@ -12279,7 +12279,7 @@
     return true;
 }
 
-bool V8TestObject::PrivateScript::nodeMethodWithNodeArgumentImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, PassRefPtrWillBeRawPtr<Node> value, RefPtrWillBeRawPtr<Node>* result)
+bool V8TestObject::PrivateScript::nodeMethodWithNodeArgumentImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, Node* value, RawPtr<Node>* result)
 {
     if (!frame)
         return false;
@@ -12309,7 +12309,7 @@
     return true;
 }
 
-bool V8TestObject::PrivateScript::nodeMethodWithVariousArgumentsImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, PassRefPtrWillBeRawPtr<Document> document, PassRefPtrWillBeRawPtr<Node> node, int value1, double value2, String string, RefPtrWillBeRawPtr<Node>* result)
+bool V8TestObject::PrivateScript::nodeMethodWithVariousArgumentsImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, Document* document, Node* node, int value1, double value2, String string, RawPtr<Node>* result)
 {
     if (!frame)
         return false;
@@ -12513,7 +12513,7 @@
     return PrivateScriptRunner::runDOMAttributeSetter(scriptState, scriptStateInUserScript, "TestObject", "stringAttribute", holder, v8String(scriptState->isolate(), cppValue));
 }
 
-bool V8TestObject::PrivateScript::nodeAttributeAttributeGetter(LocalFrame* frame, TestObject* holderImpl, RefPtrWillBeRawPtr<Node>* result)
+bool V8TestObject::PrivateScript::nodeAttributeAttributeGetter(LocalFrame* frame, TestObject* holderImpl, RawPtr<Node>* result)
 {
     if (!frame)
         return false;
@@ -12542,7 +12542,7 @@
     return true;
 }
 
-bool V8TestObject::PrivateScript::nodeAttributeAttributeSetter(LocalFrame* frame, TestObject* holderImpl, PassRefPtrWillBeRawPtr<Node> cppValue)
+bool V8TestObject::PrivateScript::nodeAttributeAttributeSetter(LocalFrame* frame, TestObject* holderImpl, Node* cppValue)
 {
     if (!frame)
         return false;
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.h b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.h
index e3f3372b..cc92e0d2d 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.h
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.h
@@ -28,16 +28,16 @@
         static bool shortMethodImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, int* result);
         static bool shortMethodWithShortArgumentImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, int value, int* result);
         static bool stringMethodWithStringArgumentImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, String value, String* result);
-        static bool nodeMethodWithNodeArgumentImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, PassRefPtrWillBeRawPtr<Node> value, RefPtrWillBeRawPtr<Node>* result);
-        static bool nodeMethodWithVariousArgumentsImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, PassRefPtrWillBeRawPtr<Document> document, PassRefPtrWillBeRawPtr<Node> node, int value1, double value2, String string, RefPtrWillBeRawPtr<Node>* result);
+        static bool nodeMethodWithNodeArgumentImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, Node* value, RawPtr<Node>* result);
+        static bool nodeMethodWithVariousArgumentsImplementedInPrivateScriptMethod(LocalFrame* frame, TestObject* holderImpl, Document* document, Node* node, int value1, double value2, String string, RawPtr<Node>* result);
         static bool methodForPrivateScriptOnlyMethod(LocalFrame* frame, TestObject* holderImpl, int value1, int value2, int* result);
         static bool readonlyShortAttributeAttributeGetter(LocalFrame* frame, TestObject* holderImpl, int* result);
         static bool shortAttributeAttributeGetter(LocalFrame* frame, TestObject* holderImpl, int* result);
         static bool shortAttributeAttributeSetter(LocalFrame* frame, TestObject* holderImpl, int cppValue);
         static bool stringAttributeAttributeGetter(LocalFrame* frame, TestObject* holderImpl, String* result);
         static bool stringAttributeAttributeSetter(LocalFrame* frame, TestObject* holderImpl, String cppValue);
-        static bool nodeAttributeAttributeGetter(LocalFrame* frame, TestObject* holderImpl, RefPtrWillBeRawPtr<Node>* result);
-        static bool nodeAttributeAttributeSetter(LocalFrame* frame, TestObject* holderImpl, PassRefPtrWillBeRawPtr<Node> cppValue);
+        static bool nodeAttributeAttributeGetter(LocalFrame* frame, TestObject* holderImpl, RawPtr<Node>* result);
+        static bool nodeAttributeAttributeSetter(LocalFrame* frame, TestObject* holderImpl, Node* cppValue);
         static bool attributeForPrivateScriptOnlyAttributeGetter(LocalFrame* frame, TestObject* holderImpl, String* result);
         static bool attributeForPrivateScriptOnlyAttributeSetter(LocalFrame* frame, TestObject* holderImpl, String cppValue);
         static bool enumForPrivateScriptAttributeGetter(LocalFrame* frame, TestObject* holderImpl, String* result);
diff --git a/third_party/WebKit/Source/build/scripts/templates/CSSPropertyMetadata.cpp.tmpl b/third_party/WebKit/Source/build/scripts/templates/CSSPropertyMetadata.cpp.tmpl
index fae3302..821a885 100644
--- a/third_party/WebKit/Source/build/scripts/templates/CSSPropertyMetadata.cpp.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/CSSPropertyMetadata.cpp.tmpl
@@ -4,7 +4,7 @@
 #include "core/css/CSSPropertyMetadata.h"
 
 #include "platform/RuntimeEnabledFeatures.h"
-#include "wtf/BitArray.h"
+#include <bitset>
 
 namespace blink {
 {% for flag, function_name in switches %}
@@ -31,20 +31,21 @@
 bool CSSPropertyMetadata::isEnabledProperty(CSSPropertyID unresolvedProperty)
 {
     CSSPropertyID property = resolveCSSPropertyID(unresolvedProperty);
-    static BitArray<numCSSProperties>* enabledProperties = 0;
+    static std::bitset<numCSSProperties>* enabledProperties = nullptr;
     if (!enabledProperties) {
-        enabledProperties = new BitArray<numCSSProperties>(true); // All bits sets to 1.
+        enabledProperties = new std::bitset<numCSSProperties>();
+        enabledProperties->set(); // All bits sets to 1.
         {% for property_id, property in properties.items() if property.runtime_flag %}
         if (!RuntimeEnabledFeatures::{{property.runtime_flag|lower_first}}Enabled())
-            enabledProperties->clear({{property_id}} - {{first_enum_value}});
+            enabledProperties->reset({{property_id}} - {{first_enum_value}});
         {% endfor %}
         {% for property_id, property in properties.items() if property.is_internal %}
-        enabledProperties->clear({{property_id}} - {{first_enum_value}});
+        enabledProperties->reset({{property_id}} - {{first_enum_value}});
         {% endfor %}
     }
 
     if (unresolvedProperty >= {{first_enum_value}})
-        return enabledProperties->get(property - {{first_enum_value}});
+        return enabledProperties->test(property - {{first_enum_value}});
 
     if (unresolvedProperty == CSSPropertyVariable)
         return RuntimeEnabledFeatures::cssVariablesEnabled();
diff --git a/third_party/WebKit/Source/build/scripts/templates/ElementFactory.cpp.tmpl b/third_party/WebKit/Source/build/scripts/templates/ElementFactory.cpp.tmpl
index 9f1814d..63728fe 100644
--- a/third_party/WebKit/Source/build/scripts/templates/ElementFactory.cpp.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/ElementFactory.cpp.tmpl
@@ -21,7 +21,7 @@
 
 using namespace {{namespace}}Names;
 
-typedef PassRefPtrWillBeRawPtr<{{namespace}}Element> (*ConstructorFunction)(
+typedef RawPtr<{{namespace}}Element> (*ConstructorFunction)(
     Document&,
     {% if namespace == 'HTML' %}
     HTMLFormElement*,
@@ -33,7 +33,7 @@
 static FunctionMap* g_constructors = 0;
 
 {% for tag in tags|sort if not tag.noConstructor %}
-static PassRefPtrWillBeRawPtr<{{namespace}}Element> {{tag|symbol}}Constructor(
+static RawPtr<{{namespace}}Element> {{tag|symbol}}Constructor(
     Document& document,
     {% if namespace == 'HTML' %}
     HTMLFormElement* formElement,
@@ -73,7 +73,7 @@
         g_constructors->set(data[i].tag.localName(), data[i].func);
 }
 
-PassRefPtrWillBeRawPtr<{{namespace}}Element> {{namespace}}ElementFactory::create{{namespace}}Element(
+RawPtr<{{namespace}}Element> {{namespace}}ElementFactory::create{{namespace}}Element(
     const AtomicString& localName,
     Document& document,
     {% if namespace == 'HTML' %}
@@ -87,7 +87,7 @@
         return function(document, {% if namespace == 'HTML' %}formElement, {% endif %}createdByParser);
 
     if (document.registrationContext() && CustomElement::isValidName(localName)) {
-        RefPtrWillBeRawPtr<Element> element = document.registrationContext()->createCustomTagElement(document, QualifiedName(nullAtom, localName, {{namespace_prefix}}NamespaceURI));
+        RawPtr<Element> element = document.registrationContext()->createCustomTagElement(document, QualifiedName(nullAtom, localName, {{namespace_prefix}}NamespaceURI));
         ASSERT_WITH_SECURITY_IMPLICATION(element->is{{namespace}}Element());
         return static_pointer_cast<{{namespace}}Element>(element.release());
     }
diff --git a/third_party/WebKit/Source/build/scripts/templates/ElementFactory.h.tmpl b/third_party/WebKit/Source/build/scripts/templates/ElementFactory.h.tmpl
index fa9fa54f..c80229e 100644
--- a/third_party/WebKit/Source/build/scripts/templates/ElementFactory.h.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/ElementFactory.h.tmpl
@@ -18,7 +18,7 @@
 
 class {{namespace}}ElementFactory {
 public:
-    static PassRefPtrWillBeRawPtr<{{namespace}}Element> create{{namespace}}Element(
+    static RawPtr<{{namespace}}Element> create{{namespace}}Element(
         const AtomicString& localName,
         Document&,
         {% if namespace == 'HTML' %}
diff --git a/third_party/WebKit/Source/build/scripts/templates/EventFactory.cpp.tmpl b/third_party/WebKit/Source/build/scripts/templates/EventFactory.cpp.tmpl
index 52ef042..fe2aeb3 100644
--- a/third_party/WebKit/Source/build/scripts/templates/EventFactory.cpp.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/EventFactory.cpp.tmpl
@@ -13,7 +13,7 @@
 
 namespace blink {
 
-PassRefPtrWillBeRawPtr<{{namespace}}> {{namespace}}{{suffix}}Factory::create(ExecutionContext* executionContext, const String& type)
+RawPtr<{{namespace}}> {{namespace}}{{suffix}}Factory::create(ExecutionContext* executionContext, const String& type)
 {
     {% for event in events %}
     {% if event|script_name|create_event_whitelist %}
diff --git a/third_party/WebKit/Source/build/scripts/templates/InternalSettingsGenerated.h.tmpl b/third_party/WebKit/Source/build/scripts/templates/InternalSettingsGenerated.h.tmpl
index 4dbc6f0..90f9361 100644
--- a/third_party/WebKit/Source/build/scripts/templates/InternalSettingsGenerated.h.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/InternalSettingsGenerated.h.tmpl
@@ -14,7 +14,7 @@
 
 class Page;
 
-class InternalSettingsGenerated : public RefCountedWillBeGarbageCollectedFinalized<InternalSettingsGenerated>, public ScriptWrappable {
+class InternalSettingsGenerated : public GarbageCollectedFinalized<InternalSettingsGenerated>, public ScriptWrappable {
     DEFINE_WRAPPERTYPEINFO();
 public:
     explicit InternalSettingsGenerated(Page*);
@@ -27,7 +27,7 @@
     DECLARE_VIRTUAL_TRACE();
 
 private:
-    RawPtrWillBeMember<Page> m_page;
+    Member<Page> m_page;
 
     {% for setting in settings if setting.type|to_idl_type %}
     {{setting.type}} m_{{setting.name}};
diff --git a/third_party/WebKit/Source/build/scripts/templates/OriginTrials.cpp.tmpl b/third_party/WebKit/Source/build/scripts/templates/OriginTrials.cpp.tmpl
index c95d7fb..36a7772 100644
--- a/third_party/WebKit/Source/build/scripts/templates/OriginTrials.cpp.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/OriginTrials.cpp.tmpl
@@ -9,7 +9,7 @@
 
 namespace blink {
 
-OriginTrials::OriginTrials(PassOwnPtrWillBeRawPtr<OriginTrialContext> originTrialContext)
+OriginTrials::OriginTrials(RawPtr<OriginTrialContext> originTrialContext)
     : m_originTrialContext(originTrialContext) {}
 
 // static
@@ -21,10 +21,10 @@
 // static
 OriginTrials* OriginTrials::from(ExecutionContext* host)
 {
-    OriginTrials* originTrials = reinterpret_cast<OriginTrials*>(WillBeHeapSupplement<ExecutionContext>::from(host, supplementName()));
+    OriginTrials* originTrials = reinterpret_cast<OriginTrials*>(Supplement<ExecutionContext>::from(host, supplementName()));
     if (!originTrials) {
         originTrials = new OriginTrials(host->createOriginTrialContext());
-        WillBeHeapSupplement<ExecutionContext>::provideTo(*host, supplementName(), adoptPtrWillBeNoop(originTrials));
+        Supplement<ExecutionContext>::provideTo(*host, supplementName(), originTrials);
     }
     return originTrials;
 }
@@ -60,6 +60,6 @@
 DEFINE_TRACE(OriginTrials)
 {
     visitor->trace(m_originTrialContext);
-    WillBeHeapSupplement<ExecutionContext>::trace(visitor);
+    Supplement<ExecutionContext>::trace(visitor);
 }
 } // namespace blink
diff --git a/third_party/WebKit/Source/build/scripts/templates/OriginTrials.h.tmpl b/third_party/WebKit/Source/build/scripts/templates/OriginTrials.h.tmpl
index d7f4d54..a5817b6 100644
--- a/third_party/WebKit/Source/build/scripts/templates/OriginTrials.h.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/OriginTrials.h.tmpl
@@ -16,10 +16,10 @@
 // A class that stores dynamic tests for experimental features which can be
 // enabled through the experimental framework via API keys.
 
-class CORE_EXPORT OriginTrials final : public NoBaseWillBeGarbageCollected<OriginTrials>, public WillBeHeapSupplement<ExecutionContext> {
-WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(OriginTrials)
+class CORE_EXPORT OriginTrials final : public GarbageCollected<OriginTrials>, public Supplement<ExecutionContext> {
+    USING_GARBAGE_COLLECTED_MIXIN(OriginTrials);
 public:
-    OriginTrials(PassOwnPtrWillBeRawPtr<OriginTrialContext>);
+    OriginTrials(RawPtr<OriginTrialContext>);
 
     static const char* supplementName();
     static OriginTrials* from(ExecutionContext*);
@@ -41,7 +41,7 @@
     {% endif %}
     {% endfor %}
 
-    OwnPtrWillBeMember<OriginTrialContext> m_originTrialContext;
+    Member<OriginTrialContext> m_originTrialContext;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/animation/AnimationStack.cpp b/third_party/WebKit/Source/core/animation/AnimationStack.cpp
index 94e54f6..226949c4 100644
--- a/third_party/WebKit/Source/core/animation/AnimationStack.cpp
+++ b/third_party/WebKit/Source/core/animation/AnimationStack.cpp
@@ -34,7 +34,6 @@
 #include "core/animation/InvalidatableInterpolation.h"
 #include "core/animation/css/CSSAnimations.h"
 #include "platform/RuntimeEnabledFeatures.h"
-#include "wtf/BitArray.h"
 #include "wtf/NonCopyingSort.h"
 #include <algorithm>
 
diff --git a/third_party/WebKit/Source/core/animation/SampledEffect.h b/third_party/WebKit/Source/core/animation/SampledEffect.h
index 4045ec7..bf31c07 100644
--- a/third_party/WebKit/Source/core/animation/SampledEffect.h
+++ b/third_party/WebKit/Source/core/animation/SampledEffect.h
@@ -9,7 +9,6 @@
 #include "core/animation/Interpolation.h"
 #include "core/animation/KeyframeEffect.h"
 #include "wtf/Allocator.h"
-#include "wtf/BitArray.h"
 #include "wtf/Vector.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/core/animation/css/CSSAnimations.cpp b/third_party/WebKit/Source/core/animation/css/CSSAnimations.cpp
index 8f7a90e..1104211 100644
--- a/third_party/WebKit/Source/core/animation/css/CSSAnimations.cpp
+++ b/third_party/WebKit/Source/core/animation/css/CSSAnimations.cpp
@@ -56,9 +56,9 @@
 #include "platform/Histogram.h"
 #include "platform/animation/TimingFunction.h"
 #include "public/platform/Platform.h"
-#include "wtf/BitArray.h"
 #include "wtf/HashSet.h"
 #include <algorithm>
+#include <bitset>
 
 namespace blink {
 
@@ -606,7 +606,7 @@
     const bool animationStyleRecalc = elementAnimations && elementAnimations->isAnimationStyleChange();
 #endif
 
-    BitArray<numCSSProperties> listedProperties;
+    std::bitset<numCSSProperties> listedProperties;
     bool anyTransitionHadTransitionAll = false;
     const LayoutObject* layoutObject = animatingElement->layoutObject();
     if (!animationStyleRecalc && style.display() != NONE && layoutObject && layoutObject->style() && transitionData) {
@@ -648,7 +648,7 @@
     if (activeTransitions) {
         for (const auto& entry : *activeTransitions) {
             CSSPropertyID id = entry.key;
-            if (!anyTransitionHadTransitionAll && !animationStyleRecalc && !listedProperties.get(id - firstCSSProperty)) {
+            if (!anyTransitionHadTransitionAll && !animationStyleRecalc && !listedProperties.test(id - firstCSSProperty)) {
                 // TODO: Figure out why this fails on Chrome OS login page. crbug.com/365507
                 // ASSERT(animation.playStateInternal() == Animation::Finished || !(elementAnimations && elementAnimations->isAnimationStyleChange()));
                 update.cancelTransition(id);
diff --git a/third_party/WebKit/Source/core/css/CSS.idl b/third_party/WebKit/Source/core/css/CSS.idl
index 185541c4..21946f0 100644
--- a/third_party/WebKit/Source/core/css/CSS.idl
+++ b/third_party/WebKit/Source/core/css/CSS.idl
@@ -31,7 +31,7 @@
 
 [
     ImplementedAs=DOMWindowCSS,
-    WillBeGarbageCollected
+    GarbageCollected
 ] interface CSS {
     static boolean supports(DOMString property, DOMString value);
     static boolean supports(DOMString conditionText);
diff --git a/third_party/WebKit/Source/core/css/CSSBasicShapeValues.h b/third_party/WebKit/Source/core/css/CSSBasicShapeValues.h
index 1162155..107e2e7 100644
--- a/third_party/WebKit/Source/core/css/CSSBasicShapeValues.h
+++ b/third_party/WebKit/Source/core/css/CSSBasicShapeValues.h
@@ -42,7 +42,7 @@
 
 class CSSBasicShapeCircleValue final : public CSSValue {
 public:
-    static RawPtr<CSSBasicShapeCircleValue> create() { return adoptRefWillBeNoop(new CSSBasicShapeCircleValue); }
+    static RawPtr<CSSBasicShapeCircleValue> create() { return new CSSBasicShapeCircleValue; }
 
     String customCSSText() const;
     bool equals(const CSSBasicShapeCircleValue&) const;
@@ -70,7 +70,7 @@
 
 class CSSBasicShapeEllipseValue final : public CSSValue {
 public:
-    static RawPtr<CSSBasicShapeEllipseValue> create() { return adoptRefWillBeNoop(new CSSBasicShapeEllipseValue); }
+    static RawPtr<CSSBasicShapeEllipseValue> create() { return new CSSBasicShapeEllipseValue; }
 
     String customCSSText() const;
     bool equals(const CSSBasicShapeEllipseValue&) const;
@@ -101,7 +101,7 @@
 
 class CSSBasicShapePolygonValue final : public CSSValue {
 public:
-    static RawPtr<CSSBasicShapePolygonValue> create() { return adoptRefWillBeNoop(new CSSBasicShapePolygonValue); }
+    static RawPtr<CSSBasicShapePolygonValue> create() { return new CSSBasicShapePolygonValue; }
 
     void appendPoint(RawPtr<CSSPrimitiveValue> x, RawPtr<CSSPrimitiveValue> y)
     {
@@ -134,7 +134,7 @@
 
 class CSSBasicShapeInsetValue final : public CSSValue {
 public:
-    static RawPtr<CSSBasicShapeInsetValue> create() { return adoptRefWillBeNoop(new CSSBasicShapeInsetValue); }
+    static RawPtr<CSSBasicShapeInsetValue> create() { return new CSSBasicShapeInsetValue; }
 
     CSSPrimitiveValue* top() const { return m_top.get(); }
     CSSPrimitiveValue* right() const { return m_right.get(); }
diff --git a/third_party/WebKit/Source/core/css/CSSInheritedValue.h b/third_party/WebKit/Source/core/css/CSSInheritedValue.h
index ed9b1fb..232aff6a 100644
--- a/third_party/WebKit/Source/core/css/CSSInheritedValue.h
+++ b/third_party/WebKit/Source/core/css/CSSInheritedValue.h
@@ -30,7 +30,7 @@
 public:
     static RawPtr<CSSInheritedValue> create()
     {
-        return adoptRefWillBeNoop(new CSSInheritedValue);
+        return new CSSInheritedValue;
     }
 
     String customCSSText() const;
diff --git a/third_party/WebKit/Source/core/css/CSSRule.idl b/third_party/WebKit/Source/core/css/CSSRule.idl
index a0647114..a54f0ca 100644
--- a/third_party/WebKit/Source/core/css/CSSRule.idl
+++ b/third_party/WebKit/Source/core/css/CSSRule.idl
@@ -22,7 +22,7 @@
 
 [
     DependentLifetime,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface CSSRule {
     const unsigned short STYLE_RULE = 1;
     const unsigned short CHARSET_RULE = 2;
diff --git a/third_party/WebKit/Source/core/css/CSSRuleList.idl b/third_party/WebKit/Source/core/css/CSSRuleList.idl
index ffb548c..f8964ec 100644
--- a/third_party/WebKit/Source/core/css/CSSRuleList.idl
+++ b/third_party/WebKit/Source/core/css/CSSRuleList.idl
@@ -28,7 +28,7 @@
 // TODO(philipj): CSSRuleList should be an [ArrayClass].
 [
     DependentLifetime,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface CSSRuleList {
     [Measure] getter CSSRule? item(unsigned long index);
     readonly attribute unsigned long length;
diff --git a/third_party/WebKit/Source/core/css/CSSStyleDeclaration.idl b/third_party/WebKit/Source/core/css/CSSStyleDeclaration.idl
index b109bb0..e71c17f 100644
--- a/third_party/WebKit/Source/core/css/CSSStyleDeclaration.idl
+++ b/third_party/WebKit/Source/core/css/CSSStyleDeclaration.idl
@@ -22,7 +22,7 @@
 
 [
     DependentLifetime,
-    WillBeGarbageCollected
+    GarbageCollected
 ] interface CSSStyleDeclaration {
     [RaisesException=Setter] attribute DOMString cssText;
     readonly attribute unsigned long length;
diff --git a/third_party/WebKit/Source/core/css/CSSUnsetValue.h b/third_party/WebKit/Source/core/css/CSSUnsetValue.h
index 705eea6..3d36ddb 100644
--- a/third_party/WebKit/Source/core/css/CSSUnsetValue.h
+++ b/third_party/WebKit/Source/core/css/CSSUnsetValue.h
@@ -14,7 +14,7 @@
 public:
     static RawPtr<CSSUnsetValue> create()
     {
-        return adoptRefWillBeNoop(new CSSUnsetValue);
+        return new CSSUnsetValue;
     }
 
     String customCSSText() const;
diff --git a/third_party/WebKit/Source/core/css/FontFace.idl b/third_party/WebKit/Source/core/css/FontFace.idl
index 5c014146..cae7dbe 100644
--- a/third_party/WebKit/Source/core/css/FontFace.idl
+++ b/third_party/WebKit/Source/core/css/FontFace.idl
@@ -45,7 +45,7 @@
     Constructor(DOMString family, (DOMString or ArrayBuffer or ArrayBufferView) source, optional FontFaceDescriptors descriptors),
     ConstructorCallWith=ExecutionContext,
     MeasureAs=FontFaceConstructor,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface FontFace {
     [RaisesException=Setter, SetterCallWith=ExecutionContext] attribute DOMString family;
     [RaisesException=Setter, SetterCallWith=ExecutionContext] attribute DOMString style;
diff --git a/third_party/WebKit/Source/core/css/FontFaceCache.cpp b/third_party/WebKit/Source/core/css/FontFaceCache.cpp
index dcc3346..3b9fc85 100644
--- a/third_party/WebKit/Source/core/css/FontFaceCache.cpp
+++ b/third_party/WebKit/Source/core/css/FontFaceCache.cpp
@@ -61,7 +61,7 @@
 
     FamilyToTraitsMap::AddResult traitsResult = m_fontFaces.add(fontFace->family(), nullptr);
     if (!traitsResult.storedValue->value)
-        traitsResult.storedValue->value = adoptPtrWillBeNoop(new TraitsMap);
+        traitsResult.storedValue->value = new TraitsMap;
 
     TraitsMap::AddResult segmentedFontFaceResult = traitsResult.storedValue->value->add(fontFace->traits().bitfield(), nullptr);
     if (!segmentedFontFaceResult.storedValue->value)
@@ -136,7 +136,7 @@
 
     FamilyToTraitsMap::AddResult traitsResult = m_fonts.add(family, nullptr);
     if (!traitsResult.storedValue->value)
-        traitsResult.storedValue->value = adoptPtrWillBeNoop(new TraitsMap);
+        traitsResult.storedValue->value = new TraitsMap;
 
     FontTraits traits = fontDescription.traits();
     TraitsMap::AddResult faceResult = traitsResult.storedValue->value->add(traits.bitfield(), nullptr);
diff --git a/third_party/WebKit/Source/core/css/MediaList.idl b/third_party/WebKit/Source/core/css/MediaList.idl
index ff714af..68c8ec4 100644
--- a/third_party/WebKit/Source/core/css/MediaList.idl
+++ b/third_party/WebKit/Source/core/css/MediaList.idl
@@ -27,7 +27,7 @@
 
 // TODO(philipj): MediaList should be an [ArrayClass].
 [
-    WillBeGarbageCollected
+    GarbageCollected
 ] interface MediaList {
     // TODO(philipj): [TreatNullAs=EmptyString] stringifier attribute DOMString mediaText;
     attribute DOMString? mediaText;
diff --git a/third_party/WebKit/Source/core/css/MediaQueryListEvent.h b/third_party/WebKit/Source/core/css/MediaQueryListEvent.h
index f18d744..22315f8b 100644
--- a/third_party/WebKit/Source/core/css/MediaQueryListEvent.h
+++ b/third_party/WebKit/Source/core/css/MediaQueryListEvent.h
@@ -16,7 +16,7 @@
 public:
     static RawPtr<MediaQueryListEvent> create()
     {
-        return adoptRefWillBeNoop(new MediaQueryListEvent);
+        return new MediaQueryListEvent;
     }
 
     static RawPtr<MediaQueryListEvent> create(RawPtr<MediaQueryList> list)
diff --git a/third_party/WebKit/Source/core/css/RuleSet.cpp b/third_party/WebKit/Source/core/css/RuleSet.cpp
index d5e59cda..e13b6e2 100644
--- a/third_party/WebKit/Source/core/css/RuleSet.cpp
+++ b/third_party/WebKit/Source/core/css/RuleSet.cpp
@@ -124,7 +124,7 @@
 {
     Member<HeapLinkedStack<RuleData>>& rules = map.add(key, nullptr).storedValue->value;
     if (!rules)
-        rules = adoptPtrWillBeNoop(new HeapLinkedStack<RuleData>);
+        rules = new HeapLinkedStack<RuleData>;
     rules->push(ruleData);
 }
 
diff --git a/third_party/WebKit/Source/core/css/RuleSet.h b/third_party/WebKit/Source/core/css/RuleSet.h
index fb2b6aa5..6690dcd8 100644
--- a/third_party/WebKit/Source/core/css/RuleSet.h
+++ b/third_party/WebKit/Source/core/css/RuleSet.h
@@ -122,7 +122,7 @@
 class CORE_EXPORT RuleSet : public GarbageCollectedFinalized<RuleSet> {
     WTF_MAKE_NONCOPYABLE(RuleSet);
 public:
-    static RawPtr<RuleSet> create() { return adoptPtrWillBeNoop(new RuleSet); }
+    static RawPtr<RuleSet> create() { return new RuleSet; }
 
     void addRulesFromSheet(StyleSheetContents*, const MediaQueryEvaluator&, AddRuleFlags = RuleHasNoSpecialState);
     void addStyleRule(StyleRule*, AddRuleFlags);
@@ -187,7 +187,7 @@
 
     class PendingRuleMaps : public GarbageCollected<PendingRuleMaps> {
     public:
-        static RawPtr<PendingRuleMaps> create() { return adoptPtrWillBeNoop(new PendingRuleMaps); }
+        static RawPtr<PendingRuleMaps> create() { return new PendingRuleMaps; }
 
         PendingRuleMap idRules;
         PendingRuleMap classRules;
diff --git a/third_party/WebKit/Source/core/css/StyleMedia.idl b/third_party/WebKit/Source/core/css/StyleMedia.idl
index 38f4326c..2a12572 100644
--- a/third_party/WebKit/Source/core/css/StyleMedia.idl
+++ b/third_party/WebKit/Source/core/css/StyleMedia.idl
@@ -33,7 +33,7 @@
 
 [
     NoInterfaceObject,
-    WillBeGarbageCollected
+    GarbageCollected
 ] interface StyleMedia {
     [MeasureAs=StyleMediaType] readonly attribute DOMString type;
     [MeasureAs=StyleMediaMatchMedium] boolean matchMedium([Default=Undefined] optional DOMString mediaquery);
diff --git a/third_party/WebKit/Source/core/css/StylePropertySerializer.cpp b/third_party/WebKit/Source/core/css/StylePropertySerializer.cpp
index 1681995..8b25ec01 100644
--- a/third_party/WebKit/Source/core/css/StylePropertySerializer.cpp
+++ b/third_party/WebKit/Source/core/css/StylePropertySerializer.cpp
@@ -27,8 +27,8 @@
 #include "core/css/CSSCustomPropertyDeclaration.h"
 #include "core/css/CSSPropertyMetadata.h"
 #include "core/css/CSSValuePool.h"
-#include "wtf/BitArray.h"
 #include "wtf/text/StringBuilder.h"
+#include <bitset>
 
 namespace blink {
 
@@ -83,7 +83,7 @@
 
     CSSPropertyID propertyID = static_cast<CSSPropertyID>(index + firstCSSProperty);
     ASSERT(firstCSSProperty <= propertyID && propertyID <= lastCSSProperty);
-    if (m_longhandPropertyUsed.get(index)) {
+    if (m_longhandPropertyUsed.test(index)) {
         int index = m_propertySet->findPropertyIndex(propertyID);
         ASSERT(index != -1);
         return StylePropertySerializer::PropertyValueForSerializer(m_propertySet->propertyAt(index));
@@ -107,7 +107,7 @@
             return true;
         if (property.id() < firstCSSProperty || property.id() > lastCSSProperty)
             return false;
-        return m_longhandPropertyUsed.get(property.id() - firstCSSProperty);
+        return m_longhandPropertyUsed.test(property.id() - firstCSSProperty);
     }
 
     CSSPropertyID propertyID = static_cast<CSSPropertyID>(index + firstCSSProperty);
@@ -123,7 +123,7 @@
     // direction and unicode-bidi. It only accepts the CSS-wide keywords.
     // c.f. http://dev.w3.org/csswg/css-cascade/#all-shorthand
     if (!CSSProperty::isAffectedByAllProperty(propertyID))
-        return m_longhandPropertyUsed.get(index);
+        return m_longhandPropertyUsed.test(index);
 
     return true;
 }
@@ -223,8 +223,8 @@
 {
     StringBuilder result;
 
-    BitArray<numCSSProperties> shorthandPropertyUsed;
-    BitArray<numCSSProperties> shorthandPropertyAppeared;
+    std::bitset<numCSSProperties> shorthandPropertyUsed;
+    std::bitset<numCSSProperties> shorthandPropertyAppeared;
 
     unsigned size = m_propertySet.propertyCount();
     unsigned numDecls = 0;
@@ -276,13 +276,13 @@
                 borderFallbackShorthandProperty = CSSPropertyBorderColor;
 
             // FIXME: Deal with cases where only some of border-(top|right|bottom|left) are specified.
-            if (!shorthandPropertyAppeared.get(CSSPropertyBorder - firstCSSProperty)) {
+            if (!shorthandPropertyAppeared.test(CSSPropertyBorder - firstCSSProperty)) {
                 value = borderPropertyValue(ReturnNullOnUncommonValues);
                 if (value.isNull())
                     shorthandPropertyAppeared.set(CSSPropertyBorder - firstCSSProperty);
                 else
                     shorthandPropertyID = CSSPropertyBorder;
-            } else if (shorthandPropertyUsed.get(CSSPropertyBorder - firstCSSProperty)) {
+            } else if (shorthandPropertyUsed.test(CSSPropertyBorder - firstCSSProperty)) {
                 shorthandPropertyID = CSSPropertyBorder;
             }
             if (!shorthandPropertyID)
@@ -389,9 +389,9 @@
 
         unsigned shortPropertyIndex = shorthandPropertyID - firstCSSProperty;
         if (shorthandPropertyID) {
-            if (shorthandPropertyUsed.get(shortPropertyIndex))
+            if (shorthandPropertyUsed.test(shortPropertyIndex))
                 continue;
-            if (!shorthandPropertyAppeared.get(shortPropertyIndex) && value.isNull())
+            if (!shorthandPropertyAppeared.test(shortPropertyIndex) && value.isNull())
                 value = m_propertySet.getPropertyValue(shorthandPropertyID);
             shorthandPropertyAppeared.set(shortPropertyIndex);
         }
@@ -412,7 +412,7 @@
         result.append(getPropertyText(propertyID, value, property.isImportant(), numDecls++));
     }
 
-    if (shorthandPropertyAppeared.get(CSSPropertyBackground - firstCSSProperty))
+    if (shorthandPropertyAppeared.test(CSSPropertyBackground - firstCSSProperty))
         appendBackgroundPropertyAsText(result, numDecls);
 
     ASSERT(!numDecls ^ !result.isEmpty());
diff --git a/third_party/WebKit/Source/core/css/StylePropertySerializer.h b/third_party/WebKit/Source/core/css/StylePropertySerializer.h
index ef843157..24f4c20 100644
--- a/third_party/WebKit/Source/core/css/StylePropertySerializer.h
+++ b/third_party/WebKit/Source/core/css/StylePropertySerializer.h
@@ -25,8 +25,7 @@
 
 #include "core/css/CSSValueList.h"
 #include "core/css/StylePropertySet.h"
-
-#include "wtf/BitArray.h"
+#include <bitset>
 
 namespace blink {
 
@@ -113,7 +112,7 @@
 
         Member<const StylePropertySet> m_propertySet;
         int m_allIndex;
-        BitArray<numCSSProperties> m_longhandPropertyUsed;
+        std::bitset<numCSSProperties> m_longhandPropertyUsed;
         bool m_needToExpandAll;
     };
 
diff --git a/third_party/WebKit/Source/core/css/StyleSheet.idl b/third_party/WebKit/Source/core/css/StyleSheet.idl
index 09a1be3..2903d2a 100644
--- a/third_party/WebKit/Source/core/css/StyleSheet.idl
+++ b/third_party/WebKit/Source/core/css/StyleSheet.idl
@@ -22,7 +22,7 @@
 
 [
     SetWrapperReferenceFrom=ownerNode,
-    WillBeGarbageCollected
+    GarbageCollected
 ] interface StyleSheet {
     readonly attribute DOMString type;
     readonly attribute DOMString? href;
diff --git a/third_party/WebKit/Source/core/css/StyleSheetList.idl b/third_party/WebKit/Source/core/css/StyleSheetList.idl
index ce31d3b..200275a6 100644
--- a/third_party/WebKit/Source/core/css/StyleSheetList.idl
+++ b/third_party/WebKit/Source/core/css/StyleSheetList.idl
@@ -23,7 +23,7 @@
 // TODO(philipj): StyleSheetList should be an [ArrayClass].
 [
     SetWrapperReferenceFrom=document,
-    WillBeGarbageCollected
+    GarbageCollected
 ] interface StyleSheetList {
     [Measure] getter StyleSheet? item(unsigned long index);
     readonly attribute unsigned long length;
diff --git a/third_party/WebKit/Source/core/css/WebKitCSSMatrix.idl b/third_party/WebKit/Source/core/css/WebKitCSSMatrix.idl
index b43ec06..4df2685 100644
--- a/third_party/WebKit/Source/core/css/WebKitCSSMatrix.idl
+++ b/third_party/WebKit/Source/core/css/WebKitCSSMatrix.idl
@@ -29,7 +29,7 @@
     ConstructorCallWith=ExecutionContext,
     ImplementedAs=CSSMatrix,
     RaisesException=Constructor,
-    WillBeGarbageCollected
+    GarbageCollected
 ] interface WebKitCSSMatrix {
 
     // These attributes are simple aliases for certain elements of the 4x4 matrix
diff --git a/third_party/WebKit/Source/core/css/parser/CSSParserImpl.cpp b/third_party/WebKit/Source/core/css/parser/CSSParserImpl.cpp
index 39d71f3c..69b192bcb7 100644
--- a/third_party/WebKit/Source/core/css/parser/CSSParserImpl.cpp
+++ b/third_party/WebKit/Source/core/css/parser/CSSParserImpl.cpp
@@ -28,7 +28,7 @@
 #include "core/frame/Deprecation.h"
 #include "core/frame/UseCounter.h"
 #include "platform/TraceEvent.h"
-#include "wtf/BitArray.h"
+#include <bitset>
 
 namespace blink {
 
@@ -62,7 +62,7 @@
     return declaration->addParsedProperties(parser.m_parsedProperties);
 }
 
-static inline void filterProperties(bool important, const HeapVector<CSSProperty, 256>& input, HeapVector<CSSProperty, 256>& output, size_t& unusedEntries, BitArray<numCSSProperties>& seenProperties, HashSet<AtomicString>& seenCustomProperties)
+static inline void filterProperties(bool important, const HeapVector<CSSProperty, 256>& input, HeapVector<CSSProperty, 256>& output, size_t& unusedEntries, std::bitset<numCSSProperties>& seenProperties, HashSet<AtomicString>& seenCustomProperties)
 {
     // Add properties in reverse order so that highest priority definitions are reached first. Duplicate definitions can then be ignored when found.
     for (size_t i = input.size(); i--; ) {
@@ -79,7 +79,7 @@
         } else if (property.id() == CSSPropertyApplyAtRule) {
             // TODO(timloh): Do we need to do anything here?
         } else {
-            if (seenProperties.get(propertyIDIndex))
+            if (seenProperties.test(propertyIDIndex))
                 continue;
             seenProperties.set(propertyIDIndex);
         }
@@ -89,7 +89,7 @@
 
 static RawPtr<ImmutableStylePropertySet> createStylePropertySet(HeapVector<CSSProperty, 256>& parsedProperties, CSSParserMode mode)
 {
-    BitArray<numCSSProperties> seenProperties;
+    std::bitset<numCSSProperties> seenProperties;
     size_t unusedEntries = parsedProperties.size();
     HeapVector<CSSProperty, 256> results(unusedEntries);
     HashSet<AtomicString> seenCustomProperties;
@@ -125,7 +125,7 @@
     if (parser.m_parsedProperties.isEmpty())
         return false;
 
-    BitArray<numCSSProperties> seenProperties;
+    std::bitset<numCSSProperties> seenProperties;
     size_t unusedEntries = parser.m_parsedProperties.size();
     HeapVector<CSSProperty, 256> results(unusedEntries);
     HashSet<AtomicString> seenCustomProperties;
diff --git a/third_party/WebKit/Source/core/css/resolver/MatchedPropertiesCache.cpp b/third_party/WebKit/Source/core/css/resolver/MatchedPropertiesCache.cpp
index ce0e43e..20d8b6a 100644
--- a/third_party/WebKit/Source/core/css/resolver/MatchedPropertiesCache.cpp
+++ b/third_party/WebKit/Source/core/css/resolver/MatchedPropertiesCache.cpp
@@ -95,7 +95,7 @@
     ASSERT(hash);
     Cache::AddResult addResult = m_cache.add(hash, nullptr);
     if (addResult.isNewEntry)
-        addResult.storedValue->value = adoptPtrWillBeNoop(new CachedMatchedProperties);
+        addResult.storedValue->value = new CachedMatchedProperties;
 
     CachedMatchedProperties* cacheItem = addResult.storedValue->value.get();
     if (!addResult.isNewEntry)
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp b/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp
index 508bdb2f..b8ccadf 100644
--- a/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp
+++ b/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp
@@ -376,7 +376,7 @@
     unsigned depth = std::max(std::min(m_styleSharingDepth, styleSharingMaxDepth), 1u) - 1u;
 
     if (!m_styleSharingLists[depth])
-        m_styleSharingLists[depth] = adoptPtrWillBeNoop(new StyleSharingList);
+        m_styleSharingLists[depth] = new StyleSharingList;
     return *m_styleSharingLists[depth];
 }
 
diff --git a/third_party/WebKit/Source/core/dom/CSSSelectorWatch.cpp b/third_party/WebKit/Source/core/dom/CSSSelectorWatch.cpp
index 955bca94..22a8200 100644
--- a/third_party/WebKit/Source/core/dom/CSSSelectorWatch.cpp
+++ b/third_party/WebKit/Source/core/dom/CSSSelectorWatch.cpp
@@ -56,14 +56,14 @@
     CSSSelectorWatch* watch = fromIfExists(document);
     if (!watch) {
         watch = new CSSSelectorWatch(document);
-        HeapSupplement<Document>::provideTo(document, kSupplementName, adoptPtrWillBeNoop(watch));
+        Supplement<Document>::provideTo(document, kSupplementName, watch);
     }
     return *watch;
 }
 
 CSSSelectorWatch* CSSSelectorWatch::fromIfExists(Document& document)
 {
-    return static_cast<CSSSelectorWatch*>(HeapSupplement<Document>::from(document, kSupplementName));
+    return static_cast<CSSSelectorWatch*>(Supplement<Document>::from(document, kSupplementName));
 }
 
 void CSSSelectorWatch::callbackSelectorChangeTimerFired(Timer<CSSSelectorWatch>*)
@@ -166,7 +166,7 @@
 {
     visitor->trace(m_watchedCallbackSelectors);
     visitor->trace(m_document);
-    HeapSupplement<Document>::trace(visitor);
+    Supplement<Document>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/dom/CSSSelectorWatch.h b/third_party/WebKit/Source/core/dom/CSSSelectorWatch.h
index a5553b4..de4b0a9 100644
--- a/third_party/WebKit/Source/core/dom/CSSSelectorWatch.h
+++ b/third_party/WebKit/Source/core/dom/CSSSelectorWatch.h
@@ -43,7 +43,7 @@
 
 namespace blink {
 
-class CORE_EXPORT CSSSelectorWatch final : public GarbageCollectedFinalized<CSSSelectorWatch>, public HeapSupplement<Document> {
+class CORE_EXPORT CSSSelectorWatch final : public GarbageCollectedFinalized<CSSSelectorWatch>, public Supplement<Document> {
     USING_GARBAGE_COLLECTED_MIXIN(CSSSelectorWatch);
 public:
     virtual ~CSSSelectorWatch() { }
diff --git a/third_party/WebKit/Source/core/dom/DOMImplementation.idl b/third_party/WebKit/Source/core/dom/DOMImplementation.idl
index b058f29..bf744f1 100644
--- a/third_party/WebKit/Source/core/dom/DOMImplementation.idl
+++ b/third_party/WebKit/Source/core/dom/DOMImplementation.idl
@@ -22,7 +22,7 @@
 
 [
     SetWrapperReferenceFrom=document,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface DOMImplementation {
     [NewObject, RaisesException] DocumentType createDocumentType(DOMString qualifiedName, DOMString publicId, DOMString systemId);
     [NewObject, RaisesException] XMLDocument createDocument(DOMString? namespaceURI, [TreatNullAs=EmptyString] DOMString qualifiedName, optional DocumentType? doctype = null);
diff --git a/third_party/WebKit/Source/core/dom/DOMStringList.idl b/third_party/WebKit/Source/core/dom/DOMStringList.idl
index 3821bd8..82ad894d 100644
--- a/third_party/WebKit/Source/core/dom/DOMStringList.idl
+++ b/third_party/WebKit/Source/core/dom/DOMStringList.idl
@@ -27,7 +27,7 @@
 
 // FIXME: DOMStringList has been removed from the spec. crbug.com/460726
 [
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface DOMStringList {
     readonly attribute unsigned long length;
     getter DOMString? (unsigned long index);
diff --git a/third_party/WebKit/Source/core/dom/DOMStringMap.idl b/third_party/WebKit/Source/core/dom/DOMStringMap.idl
index 2034eac..47ba2f3 100644
--- a/third_party/WebKit/Source/core/dom/DOMStringMap.idl
+++ b/third_party/WebKit/Source/core/dom/DOMStringMap.idl
@@ -28,7 +28,7 @@
 [
     OverrideBuiltins,
     SetWrapperReferenceFrom=element,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface DOMStringMap {
     [ImplementedAs=item] getter DOMString (DOMString name);
     [RaisesException] setter void (DOMString name, DOMString value);
diff --git a/third_party/WebKit/Source/core/dom/DOMTokenList.idl b/third_party/WebKit/Source/core/dom/DOMTokenList.idl
index e49a183..e3e0e9e 100644
--- a/third_party/WebKit/Source/core/dom/DOMTokenList.idl
+++ b/third_party/WebKit/Source/core/dom/DOMTokenList.idl
@@ -26,7 +26,7 @@
 
 [
     SetWrapperReferenceFrom=element,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface DOMTokenList {
     readonly attribute unsigned long length;
     getter DOMString? item(unsigned long index);
diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp
index 7380252..dd206ad 100644
--- a/third_party/WebKit/Source/core/dom/Document.cpp
+++ b/third_party/WebKit/Source/core/dom/Document.cpp
@@ -420,7 +420,7 @@
     , m_containsPlugins(false)
     , m_updateFocusAppearanceSelectionBahavior(SelectionBehaviorOnFocus::Reset)
     , m_ignoreDestructiveWriteCount(0)
-    , m_markers(adoptPtrWillBeNoop(new DocumentMarkerController))
+    , m_markers(new DocumentMarkerController)
     , m_updateFocusAppearanceTimer(this, &Document::updateFocusAppearanceTimerFired)
     , m_cssTarget(nullptr)
     , m_loadEventProgress(LoadEventNotRun)
diff --git a/third_party/WebKit/Source/core/dom/DocumentOrderedMap.cpp b/third_party/WebKit/Source/core/dom/DocumentOrderedMap.cpp
index aca331d..8ab707e 100644
--- a/third_party/WebKit/Source/core/dom/DocumentOrderedMap.cpp
+++ b/third_party/WebKit/Source/core/dom/DocumentOrderedMap.cpp
@@ -43,7 +43,7 @@
 
 RawPtr<DocumentOrderedMap> DocumentOrderedMap::create()
 {
-    return adoptPtrWillBeNoop(new DocumentOrderedMap);
+    return new DocumentOrderedMap;
 }
 
 DocumentOrderedMap::DocumentOrderedMap()
diff --git a/third_party/WebKit/Source/core/dom/DocumentParserTiming.cpp b/third_party/WebKit/Source/core/dom/DocumentParserTiming.cpp
index 7272c1a..19c489f3 100644
--- a/third_party/WebKit/Source/core/dom/DocumentParserTiming.cpp
+++ b/third_party/WebKit/Source/core/dom/DocumentParserTiming.cpp
@@ -15,10 +15,10 @@
 
 DocumentParserTiming& DocumentParserTiming::from(Document& document)
 {
-    DocumentParserTiming* timing = static_cast<DocumentParserTiming*>(HeapSupplement<Document>::from(document, kSupplementName));
+    DocumentParserTiming* timing = static_cast<DocumentParserTiming*>(Supplement<Document>::from(document, kSupplementName));
     if (!timing) {
         timing = new DocumentParserTiming(document);
-        HeapSupplement<Document>::provideTo(document, kSupplementName, timing);
+        Supplement<Document>::provideTo(document, kSupplementName, timing);
     }
     return *timing;
 }
diff --git a/third_party/WebKit/Source/core/dom/DocumentParserTiming.h b/third_party/WebKit/Source/core/dom/DocumentParserTiming.h
index c199740e..6a2134ee 100644
--- a/third_party/WebKit/Source/core/dom/DocumentParserTiming.h
+++ b/third_party/WebKit/Source/core/dom/DocumentParserTiming.h
@@ -16,7 +16,7 @@
 
 // DocumentParserTiming is responsible for tracking parser-related timings for a
 // given document.
-class DocumentParserTiming final : public GarbageCollectedFinalized<DocumentParserTiming>, public HeapSupplement<Document> {
+class DocumentParserTiming final : public GarbageCollectedFinalized<DocumentParserTiming>, public Supplement<Document> {
     WTF_MAKE_NONCOPYABLE(DocumentParserTiming);
     USING_GARBAGE_COLLECTED_MIXIN(DocumentParserTiming);
 
diff --git a/third_party/WebKit/Source/core/dom/ElementData.cpp b/third_party/WebKit/Source/core/dom/ElementData.cpp
index cbd5856..5a277b9 100644
--- a/third_party/WebKit/Source/core/dom/ElementData.cpp
+++ b/third_party/WebKit/Source/core/dom/ElementData.cpp
@@ -198,7 +198,7 @@
 
 RawPtr<UniqueElementData> UniqueElementData::create()
 {
-    return adoptRefWillBeNoop(new UniqueElementData);
+    return new UniqueElementData;
 }
 
 RawPtr<ShareableElementData> UniqueElementData::makeShareableCopy() const
diff --git a/third_party/WebKit/Source/core/dom/ElementDataCache.h b/third_party/WebKit/Source/core/dom/ElementDataCache.h
index e75fe44..5d15f8ba 100644
--- a/third_party/WebKit/Source/core/dom/ElementDataCache.h
+++ b/third_party/WebKit/Source/core/dom/ElementDataCache.h
@@ -42,7 +42,7 @@
 
 class ElementDataCache final : public GarbageCollected<ElementDataCache>  {
 public:
-    static RawPtr<ElementDataCache> create() { return adoptPtrWillBeNoop(new ElementDataCache); }
+    static RawPtr<ElementDataCache> create() { return new ElementDataCache; }
 
     RawPtr<ShareableElementData> cachedShareableElementDataWithAttributes(const Vector<Attribute>&);
 
diff --git a/third_party/WebKit/Source/core/dom/ElementRareData.cpp b/third_party/WebKit/Source/core/dom/ElementRareData.cpp
index 338ad07..e415121 100644
--- a/third_party/WebKit/Source/core/dom/ElementRareData.cpp
+++ b/third_party/WebKit/Source/core/dom/ElementRareData.cpp
@@ -52,7 +52,7 @@
 AttrNodeList& ElementRareData::ensureAttrNodeList()
 {
     if (!m_attrNodeList)
-        m_attrNodeList = adoptPtrWillBeNoop(new AttrNodeList);
+        m_attrNodeList = new AttrNodeList;
     return *m_attrNodeList;
 }
 
diff --git a/third_party/WebKit/Source/core/dom/Fullscreen.cpp b/third_party/WebKit/Source/core/dom/Fullscreen.cpp
index fe387beb..ced9568 100644
--- a/third_party/WebKit/Source/core/dom/Fullscreen.cpp
+++ b/third_party/WebKit/Source/core/dom/Fullscreen.cpp
@@ -139,7 +139,7 @@
     Fullscreen* fullscreen = fromIfExists(document);
     if (!fullscreen) {
         fullscreen = new Fullscreen(document);
-        HeapSupplement<Document>::provideTo(document, supplementName(), adoptPtrWillBeNoop(fullscreen));
+        Supplement<Document>::provideTo(document, supplementName(), fullscreen);
     }
 
     return *fullscreen;
@@ -147,7 +147,7 @@
 
 Fullscreen* Fullscreen::fromIfExistsSlow(Document& document)
 {
-    return static_cast<Fullscreen*>(HeapSupplement<Document>::from(document, supplementName()));
+    return static_cast<Fullscreen*>(Supplement<Document>::from(document, supplementName()));
 }
 
 Element* Fullscreen::fullscreenElementFrom(Document& document)
@@ -627,7 +627,7 @@
     visitor->trace(m_fullScreenElementStack);
     visitor->trace(m_eventQueue);
 #endif
-    HeapSupplement<Document>::trace(visitor);
+    Supplement<Document>::trace(visitor);
     DocumentLifecycleObserver::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/core/dom/Fullscreen.h b/third_party/WebKit/Source/core/dom/Fullscreen.h
index 3d205fd52..f41859f 100644
--- a/third_party/WebKit/Source/core/dom/Fullscreen.h
+++ b/third_party/WebKit/Source/core/dom/Fullscreen.h
@@ -46,7 +46,7 @@
 
 class CORE_EXPORT Fullscreen final
     : public GarbageCollectedFinalized<Fullscreen>
-    , public HeapSupplement<Document>
+    , public Supplement<Document>
     , public DocumentLifecycleObserver {
     USING_GARBAGE_COLLECTED_MIXIN(Fullscreen);
 public:
diff --git a/third_party/WebKit/Source/core/dom/MutationObserver.idl b/third_party/WebKit/Source/core/dom/MutationObserver.idl
index 467b4547..c774e706 100644
--- a/third_party/WebKit/Source/core/dom/MutationObserver.idl
+++ b/third_party/WebKit/Source/core/dom/MutationObserver.idl
@@ -33,7 +33,7 @@
 [
     CustomConstructor(MutationCallback callback),
     Custom=VisitDOMWrapper,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface MutationObserver {
     [RaisesException] void observe(Node target, MutationObserverInit options);
     void disconnect();
diff --git a/third_party/WebKit/Source/core/dom/MutationObserverRegistration.cpp b/third_party/WebKit/Source/core/dom/MutationObserverRegistration.cpp
index 23eef8d..74012d4 100644
--- a/third_party/WebKit/Source/core/dom/MutationObserverRegistration.cpp
+++ b/third_party/WebKit/Source/core/dom/MutationObserverRegistration.cpp
@@ -79,7 +79,7 @@
     m_observer->setHasTransientRegistration();
 
     if (!m_transientRegistrationNodes) {
-        m_transientRegistrationNodes = adoptPtrWillBeNoop(new NodeHashSet);
+        m_transientRegistrationNodes = new NodeHashSet;
 
         ASSERT(m_registrationNode);
         ASSERT(!m_registrationNodeKeepAlive);
diff --git a/third_party/WebKit/Source/core/dom/MutationRecord.idl b/third_party/WebKit/Source/core/dom/MutationRecord.idl
index 0ca53dc..e67e2c2b 100644
--- a/third_party/WebKit/Source/core/dom/MutationRecord.idl
+++ b/third_party/WebKit/Source/core/dom/MutationRecord.idl
@@ -31,7 +31,7 @@
 // https://dom.spec.whatwg.org/#interface-mutationrecord
 
 [
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface MutationRecord {
     readonly attribute DOMString type;
     readonly attribute Node target;
diff --git a/third_party/WebKit/Source/core/dom/NamedNodeMap.idl b/third_party/WebKit/Source/core/dom/NamedNodeMap.idl
index b5af211..410fe5d1 100644
--- a/third_party/WebKit/Source/core/dom/NamedNodeMap.idl
+++ b/third_party/WebKit/Source/core/dom/NamedNodeMap.idl
@@ -22,7 +22,7 @@
 
 [
     SetWrapperReferenceFrom=element,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface NamedNodeMap {
     readonly attribute unsigned long length;
     [MeasureAs=NamedNodeMapItem] getter Attr? item(unsigned long index);
diff --git a/third_party/WebKit/Source/core/dom/Node.cpp b/third_party/WebKit/Source/core/dom/Node.cpp
index 821eb4f9d..da9b660 100644
--- a/third_party/WebKit/Source/core/dom/Node.cpp
+++ b/third_party/WebKit/Source/core/dom/Node.cpp
@@ -1901,7 +1901,7 @@
         return *eventTargetDataMap().get(this);
     ASSERT(!eventTargetDataMap().contains(this));
     setHasEventTargetData(true);
-    RawPtr<EventTargetData> data = adoptPtrWillBeNoop(new EventTargetData);
+    RawPtr<EventTargetData> data = new EventTargetData;
     EventTargetData* dataPtr = data.get();
     eventTargetDataMap().set(this, data.release());
     return *dataPtr;
diff --git a/third_party/WebKit/Source/core/dom/NodeFilter.idl b/third_party/WebKit/Source/core/dom/NodeFilter.idl
index bcb5557..5f07950 100644
--- a/third_party/WebKit/Source/core/dom/NodeFilter.idl
+++ b/third_party/WebKit/Source/core/dom/NodeFilter.idl
@@ -23,7 +23,7 @@
 // FIXME: NodeFilter should be a callback interface. crbug.com/462946
 [
     DependentLifetime,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface NodeFilter {
     // Constants for acceptNode()
     const unsigned short FILTER_ACCEPT = 1;
diff --git a/third_party/WebKit/Source/core/dom/NodeIterator.idl b/third_party/WebKit/Source/core/dom/NodeIterator.idl
index 4262b7ab..32dd395 100644
--- a/third_party/WebKit/Source/core/dom/NodeIterator.idl
+++ b/third_party/WebKit/Source/core/dom/NodeIterator.idl
@@ -22,7 +22,7 @@
 
 [
     SetWrapperReferenceTo(NodeFilter filter),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface NodeIterator {
     [SameObject] readonly attribute Node root;
     readonly attribute Node referenceNode;
diff --git a/third_party/WebKit/Source/core/dom/NodeList.idl b/third_party/WebKit/Source/core/dom/NodeList.idl
index 15fb98a8..0ecf568 100644
--- a/third_party/WebKit/Source/core/dom/NodeList.idl
+++ b/third_party/WebKit/Source/core/dom/NodeList.idl
@@ -23,7 +23,7 @@
 [
     DependentLifetime,
     SetWrapperReferenceFrom=virtualOwnerNode,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface NodeList {
     getter Node? item(unsigned long index);
     readonly attribute unsigned long length;
diff --git a/third_party/WebKit/Source/core/dom/NodeListsNodeData.h b/third_party/WebKit/Source/core/dom/NodeListsNodeData.h
index 84f22cf6..40375fb7 100644
--- a/third_party/WebKit/Source/core/dom/NodeListsNodeData.h
+++ b/third_party/WebKit/Source/core/dom/NodeListsNodeData.h
@@ -168,7 +168,7 @@
 
     static RawPtr<NodeListsNodeData> create()
     {
-        return adoptPtrWillBeNoop(new NodeListsNodeData);
+        return new NodeListsNodeData;
     }
 
     void invalidateCaches(const QualifiedName* attrName = 0);
diff --git a/third_party/WebKit/Source/core/dom/NodeRareData.h b/third_party/WebKit/Source/core/dom/NodeRareData.h
index 04fcdbac..a85bd3ac 100644
--- a/third_party/WebKit/Source/core/dom/NodeRareData.h
+++ b/third_party/WebKit/Source/core/dom/NodeRareData.h
@@ -39,7 +39,7 @@
 
     static RawPtr<NodeMutationObserverData> create()
     {
-        return adoptPtrWillBeNoop(new NodeMutationObserverData);
+        return new NodeMutationObserverData;
     }
 
     DEFINE_INLINE_TRACE()
diff --git a/third_party/WebKit/Source/core/dom/PresentationAttributeStyle.cpp b/third_party/WebKit/Source/core/dom/PresentationAttributeStyle.cpp
index a3906d2..a158dc9c 100644
--- a/third_party/WebKit/Source/core/dom/PresentationAttributeStyle.cpp
+++ b/third_party/WebKit/Source/core/dom/PresentationAttributeStyle.cpp
@@ -187,7 +187,7 @@
     if (!cacheHash || cacheValue->value)
         return style.release();
 
-    RawPtr<PresentationAttributeCacheEntry> newEntry = adoptPtrWillBeNoop(new PresentationAttributeCacheEntry);
+    RawPtr<PresentationAttributeCacheEntry> newEntry = new PresentationAttributeCacheEntry;
     newEntry->key = cacheKey;
     newEntry->value = style;
 
diff --git a/third_party/WebKit/Source/core/dom/Range.idl b/third_party/WebKit/Source/core/dom/Range.idl
index 88a4a36..fd9b6c7e 100644
--- a/third_party/WebKit/Source/core/dom/Range.idl
+++ b/third_party/WebKit/Source/core/dom/Range.idl
@@ -24,7 +24,7 @@
 [
     Constructor,
     ConstructorCallWith=Document,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface Range {
     readonly attribute Node startContainer;
     readonly attribute long startOffset;
diff --git a/third_party/WebKit/Source/core/dom/StaticNodeList.h b/third_party/WebKit/Source/core/dom/StaticNodeList.h
index 98a26fa7..9c1db01d 100644
--- a/third_party/WebKit/Source/core/dom/StaticNodeList.h
+++ b/third_party/WebKit/Source/core/dom/StaticNodeList.h
@@ -46,7 +46,7 @@
 
     static RawPtr<StaticNodeTypeList> createEmpty()
     {
-        return adoptRefWillBeNoop(new StaticNodeTypeList);
+        return new StaticNodeTypeList;
     }
 
     ~StaticNodeTypeList() override;
@@ -66,7 +66,7 @@
 template <typename NodeType>
 RawPtr<StaticNodeTypeList<NodeType>> StaticNodeTypeList<NodeType>::adopt(HeapVector<Member<NodeType>>& nodes)
 {
-    RawPtr<StaticNodeTypeList<NodeType>> nodeList = adoptRefWillBeNoop(new StaticNodeTypeList<NodeType>);
+    RawPtr<StaticNodeTypeList<NodeType>> nodeList = new StaticNodeTypeList<NodeType>;
     nodeList->m_nodes.swap(nodes);
     return nodeList.release();
 }
diff --git a/third_party/WebKit/Source/core/dom/Touch.idl b/third_party/WebKit/Source/core/dom/Touch.idl
index 926f843..9436b38 100644
--- a/third_party/WebKit/Source/core/dom/Touch.idl
+++ b/third_party/WebKit/Source/core/dom/Touch.idl
@@ -28,7 +28,7 @@
 [
     Constructor(TouchInit initDict),
     ConstructorCallWith=Document,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface Touch {
     readonly attribute long identifier;
     readonly attribute EventTarget target;
diff --git a/third_party/WebKit/Source/core/dom/TouchList.h b/third_party/WebKit/Source/core/dom/TouchList.h
index 46000ff..1326ee0b 100644
--- a/third_party/WebKit/Source/core/dom/TouchList.h
+++ b/third_party/WebKit/Source/core/dom/TouchList.h
@@ -40,12 +40,12 @@
 public:
     static RawPtr<TouchList> create()
     {
-        return adoptRefWillBeNoop(new TouchList);
+        return new TouchList;
     }
 
     static RawPtr<TouchList> create(const HeapVector<Member<Touch>>& touches)
     {
-        RawPtr<TouchList> list = adoptRefWillBeNoop(new TouchList);
+        RawPtr<TouchList> list = new TouchList;
         list->m_values.appendVector(touches);
         return list.release();
     }
diff --git a/third_party/WebKit/Source/core/dom/TouchList.idl b/third_party/WebKit/Source/core/dom/TouchList.idl
index ea7d013..78511ad 100644
--- a/third_party/WebKit/Source/core/dom/TouchList.idl
+++ b/third_party/WebKit/Source/core/dom/TouchList.idl
@@ -26,7 +26,7 @@
 // https://w3c.github.io/touch-events/#touchlist-interface
 
 [
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface TouchList {
     readonly attribute unsigned long length;
     getter Touch? item(unsigned long index);
diff --git a/third_party/WebKit/Source/core/dom/TreeWalker.idl b/third_party/WebKit/Source/core/dom/TreeWalker.idl
index 4fa1298..a11116e 100644
--- a/third_party/WebKit/Source/core/dom/TreeWalker.idl
+++ b/third_party/WebKit/Source/core/dom/TreeWalker.idl
@@ -22,7 +22,7 @@
 
 [
     SetWrapperReferenceTo(NodeFilter filter),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface TreeWalker {
     [SameObject] readonly attribute Node root;
     readonly attribute unsigned long whatToShow;
diff --git a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
index 1a6f7f5..11b24f0 100644
--- a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
+++ b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
@@ -223,7 +223,7 @@
     if (m_shadowRootRareData)
         return m_shadowRootRareData.get();
 
-    m_shadowRootRareData = adoptPtrWillBeNoop(new ShadowRootRareData);
+    m_shadowRootRareData = new ShadowRootRareData;
     return m_shadowRootRareData.get();
 }
 
diff --git a/third_party/WebKit/Source/core/dom/shadow/SlotAssignment.h b/third_party/WebKit/Source/core/dom/shadow/SlotAssignment.h
index 7b863fe..6a30af6 100644
--- a/third_party/WebKit/Source/core/dom/shadow/SlotAssignment.h
+++ b/third_party/WebKit/Source/core/dom/shadow/SlotAssignment.h
@@ -17,7 +17,7 @@
 public:
     static RawPtr<SlotAssignment> create()
     {
-        return adoptPtrWillBeNoop(new SlotAssignment);
+        return new SlotAssignment;
     }
 
     HTMLSlotElement* assignedSlotFor(const Node&) const;
diff --git a/third_party/WebKit/Source/core/editing/DragCaretController.cpp b/third_party/WebKit/Source/core/editing/DragCaretController.cpp
index 334757f1..6a50958 100644
--- a/third_party/WebKit/Source/core/editing/DragCaretController.cpp
+++ b/third_party/WebKit/Source/core/editing/DragCaretController.cpp
@@ -38,7 +38,7 @@
 
 RawPtr<DragCaretController> DragCaretController::create()
 {
-    return adoptPtrWillBeNoop(new DragCaretController);
+    return new DragCaretController;
 }
 
 bool DragCaretController::isContentRichlyEditable() const
diff --git a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
index 04446715..790ea770 100644
--- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
+++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
@@ -197,13 +197,13 @@
 
     Member<MarkerLists>& markers = m_markers.add(node, nullptr).storedValue->value;
     if (!markers) {
-        markers = adoptPtrWillBeNoop(new MarkerLists);
+        markers = new MarkerLists;
         markers->grow(DocumentMarker::MarkerTypeIndexesCount);
     }
 
     DocumentMarker::MarkerTypeIndex markerListIndex = MarkerTypeToMarkerIndex(newMarker.type());
     if (!markers->at(markerListIndex)) {
-        markers->insert(markerListIndex, adoptPtrWillBeNoop(new MarkerList));
+        markers->insert(markerListIndex, new MarkerList);
     }
 
     Member<MarkerList>& list = markers->at(markerListIndex);
diff --git a/third_party/WebKit/Source/core/events/AnimationEvent.h b/third_party/WebKit/Source/core/events/AnimationEvent.h
index 4490219..6b034374 100644
--- a/third_party/WebKit/Source/core/events/AnimationEvent.h
+++ b/third_party/WebKit/Source/core/events/AnimationEvent.h
@@ -36,7 +36,7 @@
 public:
     static RawPtr<AnimationEvent> create()
     {
-        return adoptRefWillBeNoop(new AnimationEvent);
+        return new AnimationEvent;
     }
     static RawPtr<AnimationEvent> create(const AtomicString& type, const String& animationName, double elapsedTime)
     {
diff --git a/third_party/WebKit/Source/core/events/AnimationPlayerEvent.h b/third_party/WebKit/Source/core/events/AnimationPlayerEvent.h
index 469fb10..b0c15b5 100644
--- a/third_party/WebKit/Source/core/events/AnimationPlayerEvent.h
+++ b/third_party/WebKit/Source/core/events/AnimationPlayerEvent.h
@@ -15,7 +15,7 @@
 public:
     static RawPtr<AnimationPlayerEvent> create()
     {
-        return adoptRefWillBeNoop(new AnimationPlayerEvent);
+        return new AnimationPlayerEvent;
     }
     static RawPtr<AnimationPlayerEvent> create(const AtomicString& type, double currentTime, double timelineTime)
     {
diff --git a/third_party/WebKit/Source/core/events/ApplicationCacheErrorEvent.h b/third_party/WebKit/Source/core/events/ApplicationCacheErrorEvent.h
index fad86082..2c6f631 100644
--- a/third_party/WebKit/Source/core/events/ApplicationCacheErrorEvent.h
+++ b/third_party/WebKit/Source/core/events/ApplicationCacheErrorEvent.h
@@ -19,7 +19,7 @@
 
     static RawPtr<ApplicationCacheErrorEvent> create()
     {
-        return adoptRefWillBeNoop(new ApplicationCacheErrorEvent);
+        return new ApplicationCacheErrorEvent;
     }
 
     static RawPtr<ApplicationCacheErrorEvent> create(WebApplicationCacheHost::ErrorReason reason, const String& url, int status, const String& message)
diff --git a/third_party/WebKit/Source/core/events/AutocompleteErrorEvent.h b/third_party/WebKit/Source/core/events/AutocompleteErrorEvent.h
index 2f8062c..a2b8de1f 100644
--- a/third_party/WebKit/Source/core/events/AutocompleteErrorEvent.h
+++ b/third_party/WebKit/Source/core/events/AutocompleteErrorEvent.h
@@ -35,7 +35,7 @@
 public:
     static RawPtr<AutocompleteErrorEvent> create()
     {
-        return adoptRefWillBeNoop(new AutocompleteErrorEvent);
+        return new AutocompleteErrorEvent;
     }
 
     static RawPtr<AutocompleteErrorEvent> create(const String& reason)
diff --git a/third_party/WebKit/Source/core/events/BeforeUnloadEvent.h b/third_party/WebKit/Source/core/events/BeforeUnloadEvent.h
index f4970c5..e1b8eac 100644
--- a/third_party/WebKit/Source/core/events/BeforeUnloadEvent.h
+++ b/third_party/WebKit/Source/core/events/BeforeUnloadEvent.h
@@ -36,7 +36,7 @@
 
     static RawPtr<BeforeUnloadEvent> create()
     {
-        return adoptRefWillBeNoop(new BeforeUnloadEvent);
+        return new BeforeUnloadEvent;
     }
 
     bool isBeforeUnloadEvent() const override;
diff --git a/third_party/WebKit/Source/core/events/CompositionEvent.h b/third_party/WebKit/Source/core/events/CompositionEvent.h
index 810a180..cff7f12 100644
--- a/third_party/WebKit/Source/core/events/CompositionEvent.h
+++ b/third_party/WebKit/Source/core/events/CompositionEvent.h
@@ -37,7 +37,7 @@
 public:
     static RawPtr<CompositionEvent> create()
     {
-        return adoptRefWillBeNoop(new CompositionEvent);
+        return new CompositionEvent;
     }
 
     static RawPtr<CompositionEvent> create(const AtomicString& type, RawPtr<AbstractView> view, const String& data)
diff --git a/third_party/WebKit/Source/core/events/CustomEvent.h b/third_party/WebKit/Source/core/events/CustomEvent.h
index 9916057..5a1a5e38 100644
--- a/third_party/WebKit/Source/core/events/CustomEvent.h
+++ b/third_party/WebKit/Source/core/events/CustomEvent.h
@@ -41,7 +41,7 @@
 
     static RawPtr<CustomEvent> create()
     {
-        return adoptRefWillBeNoop(new CustomEvent);
+        return new CustomEvent;
     }
 
     static RawPtr<CustomEvent> create(const AtomicString& type, const CustomEventInit& initializer)
diff --git a/third_party/WebKit/Source/core/events/DragEvent.h b/third_party/WebKit/Source/core/events/DragEvent.h
index 8243671..c447d02 100644
--- a/third_party/WebKit/Source/core/events/DragEvent.h
+++ b/third_party/WebKit/Source/core/events/DragEvent.h
@@ -19,7 +19,7 @@
 public:
     static RawPtr<DragEvent> create()
     {
-        return adoptRefWillBeNoop(new DragEvent);
+        return new DragEvent;
     }
 
     static RawPtr<DragEvent> create(DataTransfer* dataTransfer)
diff --git a/third_party/WebKit/Source/core/events/ErrorEvent.h b/third_party/WebKit/Source/core/events/ErrorEvent.h
index 434b80fc..0be9b0d 100644
--- a/third_party/WebKit/Source/core/events/ErrorEvent.h
+++ b/third_party/WebKit/Source/core/events/ErrorEvent.h
@@ -44,7 +44,7 @@
 public:
     static RawPtr<ErrorEvent> create()
     {
-        return adoptRefWillBeNoop(new ErrorEvent);
+        return new ErrorEvent;
     }
     static RawPtr<ErrorEvent> create(const String& message, const String& fileName, unsigned lineNumber, unsigned columnNumber, DOMWrapperWorld* world)
     {
diff --git a/third_party/WebKit/Source/core/events/Event.h b/third_party/WebKit/Source/core/events/Event.h
index 01405224..acffc4e 100644
--- a/third_party/WebKit/Source/core/events/Event.h
+++ b/third_party/WebKit/Source/core/events/Event.h
@@ -77,7 +77,7 @@
 
     static RawPtr<Event> create()
     {
-        return adoptRefWillBeNoop(new Event);
+        return new Event;
     }
 
     // A factory for a simple event. The event doesn't bubble, and isn't
diff --git a/third_party/WebKit/Source/core/events/Event.idl b/third_party/WebKit/Source/core/events/Event.idl
index f04cb53c..06fcda0 100644
--- a/third_party/WebKit/Source/core/events/Event.idl
+++ b/third_party/WebKit/Source/core/events/Event.idl
@@ -23,7 +23,7 @@
 [
     Constructor(DOMString type, optional EventInit eventInitDict),
     Exposed=(Window,Worker),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface Event {
     readonly attribute DOMString type;
     readonly attribute EventTarget? target;
diff --git a/third_party/WebKit/Source/core/events/EventListener.idl b/third_party/WebKit/Source/core/events/EventListener.idl
index 2823f16..05289895 100644
--- a/third_party/WebKit/Source/core/events/EventListener.idl
+++ b/third_party/WebKit/Source/core/events/EventListener.idl
@@ -21,7 +21,7 @@
 // https://dom.spec.whatwg.org/#callbackdef-eventlistener
 
 [
-    WillBeGarbageCollected
+    GarbageCollected
 ] callback interface EventListener {
     void handleEvent(Event event);
 };
diff --git a/third_party/WebKit/Source/core/events/EventListenerMap.cpp b/third_party/WebKit/Source/core/events/EventListenerMap.cpp
index e863085..2473513 100644
--- a/third_party/WebKit/Source/core/events/EventListenerMap.cpp
+++ b/third_party/WebKit/Source/core/events/EventListenerMap.cpp
@@ -126,7 +126,7 @@
             return addListenerToVector(entry.second.get(), listener, options);
     }
 
-    m_entries.append(std::make_pair(eventType, adoptPtrWillBeNoop(new EventListenerVector)));
+    m_entries.append(std::make_pair(eventType, new EventListenerVector));
     return addListenerToVector(m_entries.last().second.get(), listener, options);
 }
 
diff --git a/third_party/WebKit/Source/core/events/EventTarget.idl b/third_party/WebKit/Source/core/events/EventTarget.idl
index b17db3f6..7543ea3 100644
--- a/third_party/WebKit/Source/core/events/EventTarget.idl
+++ b/third_party/WebKit/Source/core/events/EventTarget.idl
@@ -22,7 +22,7 @@
 
 [
     CheckSecurity=Receiver,
-    WillBeGarbageCollected,
+    GarbageCollected,
     Exposed=(Window,Worker)
 ] interface EventTarget {
     [Custom] void addEventListener(DOMString type, EventListener? listener, optional (EventListenerOptions or boolean) options);
diff --git a/third_party/WebKit/Source/core/events/FocusEvent.h b/third_party/WebKit/Source/core/events/FocusEvent.h
index 3b3bf1d..8a623685 100644
--- a/third_party/WebKit/Source/core/events/FocusEvent.h
+++ b/third_party/WebKit/Source/core/events/FocusEvent.h
@@ -37,7 +37,7 @@
 public:
     static RawPtr<FocusEvent> create()
     {
-        return adoptRefWillBeNoop(new FocusEvent);
+        return new FocusEvent;
     }
 
     static RawPtr<FocusEvent> create(const AtomicString& type, bool canBubble, bool cancelable, RawPtr<AbstractView> view, int detail, EventTarget* relatedTarget, InputDeviceCapabilities* sourceCapabilities)
diff --git a/third_party/WebKit/Source/core/events/HashChangeEvent.h b/third_party/WebKit/Source/core/events/HashChangeEvent.h
index 80c5d96..c893151 100644
--- a/third_party/WebKit/Source/core/events/HashChangeEvent.h
+++ b/third_party/WebKit/Source/core/events/HashChangeEvent.h
@@ -31,7 +31,7 @@
 public:
     static RawPtr<HashChangeEvent> create()
     {
-        return adoptRefWillBeNoop(new HashChangeEvent);
+        return new HashChangeEvent;
     }
 
     static RawPtr<HashChangeEvent> create(const String& oldURL, const String& newURL)
diff --git a/third_party/WebKit/Source/core/events/InputEvent.h b/third_party/WebKit/Source/core/events/InputEvent.h
index cff834d..f29a634c 100644
--- a/third_party/WebKit/Source/core/events/InputEvent.h
+++ b/third_party/WebKit/Source/core/events/InputEvent.h
@@ -16,7 +16,7 @@
 public:
     static RawPtr<InputEvent> create()
     {
-        return adoptRefWillBeNoop(new InputEvent);
+        return new InputEvent;
     }
 
     static RawPtr<InputEvent> create(const AtomicString& type, const InputEventInit& initializer)
diff --git a/third_party/WebKit/Source/core/events/KeyboardEvent.h b/third_party/WebKit/Source/core/events/KeyboardEvent.h
index 02177b8..59adc56b 100644
--- a/third_party/WebKit/Source/core/events/KeyboardEvent.h
+++ b/third_party/WebKit/Source/core/events/KeyboardEvent.h
@@ -45,7 +45,7 @@
 
     static RawPtr<KeyboardEvent> create()
     {
-        return adoptRefWillBeNoop(new KeyboardEvent);
+        return new KeyboardEvent;
     }
 
     static RawPtr<KeyboardEvent> create(const PlatformKeyboardEvent& platformEvent, AbstractView* view)
diff --git a/third_party/WebKit/Source/core/events/MessageEvent.h b/third_party/WebKit/Source/core/events/MessageEvent.h
index 2f556b3..1f55c943 100644
--- a/third_party/WebKit/Source/core/events/MessageEvent.h
+++ b/third_party/WebKit/Source/core/events/MessageEvent.h
@@ -45,7 +45,7 @@
 public:
     static RawPtr<MessageEvent> create()
     {
-        return adoptRefWillBeNoop(new MessageEvent);
+        return new MessageEvent;
     }
     static RawPtr<MessageEvent> create(MessagePortArray* ports, const String& origin = String(), const String& lastEventId = String(), RawPtr<EventTarget> source = nullptr, const String& suborigin = String())
     {
diff --git a/third_party/WebKit/Source/core/events/MouseEvent.h b/third_party/WebKit/Source/core/events/MouseEvent.h
index 1298e8a..b25fdcd 100644
--- a/third_party/WebKit/Source/core/events/MouseEvent.h
+++ b/third_party/WebKit/Source/core/events/MouseEvent.h
@@ -39,7 +39,7 @@
 public:
     static RawPtr<MouseEvent> create()
     {
-        return adoptRefWillBeNoop(new MouseEvent);
+        return new MouseEvent;
     }
 
     // TODO(mustaq): Should replace most/all of these params with a MouseEventInit.
diff --git a/third_party/WebKit/Source/core/events/MutationEvent.h b/third_party/WebKit/Source/core/events/MutationEvent.h
index b41ae80..dad446e 100644
--- a/third_party/WebKit/Source/core/events/MutationEvent.h
+++ b/third_party/WebKit/Source/core/events/MutationEvent.h
@@ -42,7 +42,7 @@
 
     static RawPtr<MutationEvent> create()
     {
-        return adoptRefWillBeNoop(new MutationEvent);
+        return new MutationEvent;
     }
 
     static RawPtr<MutationEvent> create(
diff --git a/third_party/WebKit/Source/core/events/PageTransitionEvent.h b/third_party/WebKit/Source/core/events/PageTransitionEvent.h
index 9bf3665..cb18a53 100644
--- a/third_party/WebKit/Source/core/events/PageTransitionEvent.h
+++ b/third_party/WebKit/Source/core/events/PageTransitionEvent.h
@@ -36,7 +36,7 @@
 public:
     static RawPtr<PageTransitionEvent> create()
     {
-        return adoptRefWillBeNoop(new PageTransitionEvent);
+        return new PageTransitionEvent;
     }
     static RawPtr<PageTransitionEvent> create(const AtomicString& type, bool persisted)
     {
diff --git a/third_party/WebKit/Source/core/events/PointerEvent.h b/third_party/WebKit/Source/core/events/PointerEvent.h
index 6791fec..a73900e 100644
--- a/third_party/WebKit/Source/core/events/PointerEvent.h
+++ b/third_party/WebKit/Source/core/events/PointerEvent.h
@@ -17,7 +17,7 @@
 public:
     static RawPtr<PointerEvent> create()
     {
-        return adoptRefWillBeNoop(new PointerEvent);
+        return new PointerEvent;
     }
 
     static RawPtr<PointerEvent> create(const AtomicString& type, const PointerEventInit& initializer)
diff --git a/third_party/WebKit/Source/core/events/PopStateEvent.cpp b/third_party/WebKit/Source/core/events/PopStateEvent.cpp
index 7f54a4e..c088d1ff 100644
--- a/third_party/WebKit/Source/core/events/PopStateEvent.cpp
+++ b/third_party/WebKit/Source/core/events/PopStateEvent.cpp
@@ -59,7 +59,7 @@
 
 RawPtr<PopStateEvent> PopStateEvent::create()
 {
-    return adoptRefWillBeNoop(new PopStateEvent);
+    return new PopStateEvent;
 }
 
 RawPtr<PopStateEvent> PopStateEvent::create(PassRefPtr<SerializedScriptValue> serializedState, History* history)
diff --git a/third_party/WebKit/Source/core/events/ProgressEvent.h b/third_party/WebKit/Source/core/events/ProgressEvent.h
index 608b009..6342d08e 100644
--- a/third_party/WebKit/Source/core/events/ProgressEvent.h
+++ b/third_party/WebKit/Source/core/events/ProgressEvent.h
@@ -37,7 +37,7 @@
 public:
     static RawPtr<ProgressEvent> create()
     {
-        return adoptRefWillBeNoop(new ProgressEvent);
+        return new ProgressEvent;
     }
     static RawPtr<ProgressEvent> create(const AtomicString& type, bool lengthComputable, unsigned long long loaded, unsigned long long total)
     {
diff --git a/third_party/WebKit/Source/core/events/PromiseRejectionEvent.h b/third_party/WebKit/Source/core/events/PromiseRejectionEvent.h
index 95e67d40..418a26b 100644
--- a/third_party/WebKit/Source/core/events/PromiseRejectionEvent.h
+++ b/third_party/WebKit/Source/core/events/PromiseRejectionEvent.h
@@ -21,7 +21,7 @@
 public:
     static RawPtr<PromiseRejectionEvent> create()
     {
-        return adoptRefWillBeNoop(new PromiseRejectionEvent);
+        return new PromiseRejectionEvent;
     }
     static RawPtr<PromiseRejectionEvent> create(ScriptState* state, const AtomicString& type, const PromiseRejectionEventInit& initializer)
     {
diff --git a/third_party/WebKit/Source/core/events/RelatedEvent.cpp b/third_party/WebKit/Source/core/events/RelatedEvent.cpp
index 5db2386..2f27c7a 100644
--- a/third_party/WebKit/Source/core/events/RelatedEvent.cpp
+++ b/third_party/WebKit/Source/core/events/RelatedEvent.cpp
@@ -12,7 +12,7 @@
 
 RawPtr<RelatedEvent> RelatedEvent::create()
 {
-    return adoptRefWillBeNoop(new RelatedEvent);
+    return new RelatedEvent;
 }
 
 RawPtr<RelatedEvent> RelatedEvent::create(const AtomicString& type, bool canBubble, bool cancelable, EventTarget* relatedTarget)
diff --git a/third_party/WebKit/Source/core/events/ResourceProgressEvent.h b/third_party/WebKit/Source/core/events/ResourceProgressEvent.h
index 4190016..22d4256 100644
--- a/third_party/WebKit/Source/core/events/ResourceProgressEvent.h
+++ b/third_party/WebKit/Source/core/events/ResourceProgressEvent.h
@@ -48,7 +48,7 @@
 public:
     static RawPtr<ResourceProgressEvent> create()
     {
-        return adoptRefWillBeNoop(new ResourceProgressEvent);
+        return new ResourceProgressEvent;
     }
     static RawPtr<ResourceProgressEvent> create(const AtomicString& type, bool lengthComputable, unsigned long long loaded, unsigned long long total, const String& url)
     {
diff --git a/third_party/WebKit/Source/core/events/TextEvent.cpp b/third_party/WebKit/Source/core/events/TextEvent.cpp
index 9920c60..738c253f 100644
--- a/third_party/WebKit/Source/core/events/TextEvent.cpp
+++ b/third_party/WebKit/Source/core/events/TextEvent.cpp
@@ -32,7 +32,7 @@
 
 RawPtr<TextEvent> TextEvent::create()
 {
-    return adoptRefWillBeNoop(new TextEvent);
+    return new TextEvent;
 }
 
 RawPtr<TextEvent> TextEvent::create(RawPtr<AbstractView> view, const String& data, TextEventInputType inputType)
diff --git a/third_party/WebKit/Source/core/events/TouchEvent.h b/third_party/WebKit/Source/core/events/TouchEvent.h
index 8cf0297..d31ca1e 100644
--- a/third_party/WebKit/Source/core/events/TouchEvent.h
+++ b/third_party/WebKit/Source/core/events/TouchEvent.h
@@ -43,7 +43,7 @@
     // We only initialize sourceCapabilities when we create TouchEvent from EventHandler, null if it is from JavaScript.
     static RawPtr<TouchEvent> create()
     {
-        return adoptRefWillBeNoop(new TouchEvent);
+        return new TouchEvent;
     }
     static RawPtr<TouchEvent> create(TouchList* touches,
         TouchList* targetTouches, TouchList* changedTouches,
diff --git a/third_party/WebKit/Source/core/events/TouchEventContext.cpp b/third_party/WebKit/Source/core/events/TouchEventContext.cpp
index 916c545d..bf6b428e 100644
--- a/third_party/WebKit/Source/core/events/TouchEventContext.cpp
+++ b/third_party/WebKit/Source/core/events/TouchEventContext.cpp
@@ -34,7 +34,7 @@
 
 RawPtr<TouchEventContext> TouchEventContext::create()
 {
-    return adoptRefWillBeNoop(new TouchEventContext);
+    return new TouchEventContext;
 }
 
 TouchEventContext::TouchEventContext()
diff --git a/third_party/WebKit/Source/core/events/TransitionEvent.h b/third_party/WebKit/Source/core/events/TransitionEvent.h
index 3fef7f11..a68f8c2 100644
--- a/third_party/WebKit/Source/core/events/TransitionEvent.h
+++ b/third_party/WebKit/Source/core/events/TransitionEvent.h
@@ -37,7 +37,7 @@
 public:
     static RawPtr<TransitionEvent> create()
     {
-        return adoptRefWillBeNoop(new TransitionEvent);
+        return new TransitionEvent;
     }
     static RawPtr<TransitionEvent> create(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement)
     {
diff --git a/third_party/WebKit/Source/core/events/UIEvent.h b/third_party/WebKit/Source/core/events/UIEvent.h
index 61d8bd9..92f088f0 100644
--- a/third_party/WebKit/Source/core/events/UIEvent.h
+++ b/third_party/WebKit/Source/core/events/UIEvent.h
@@ -41,7 +41,7 @@
 public:
     static RawPtr<UIEvent> create()
     {
-        return adoptRefWillBeNoop(new UIEvent);
+        return new UIEvent;
     }
     static RawPtr<UIEvent> create(const AtomicString& type, bool canBubble, bool cancelable, RawPtr<AbstractView> view, int detail)
     {
diff --git a/third_party/WebKit/Source/core/events/WheelEvent.h b/third_party/WebKit/Source/core/events/WheelEvent.h
index 5a2d972..9083d43 100644
--- a/third_party/WebKit/Source/core/events/WheelEvent.h
+++ b/third_party/WebKit/Source/core/events/WheelEvent.h
@@ -47,7 +47,7 @@
 
     static RawPtr<WheelEvent> create()
     {
-        return adoptRefWillBeNoop(new WheelEvent);
+        return new WheelEvent;
     }
 
     static RawPtr<WheelEvent> create(const PlatformWheelEvent& platformEvent, RawPtr<AbstractView>);
diff --git a/third_party/WebKit/Source/core/fetch/RawResourceTest.cpp b/third_party/WebKit/Source/core/fetch/RawResourceTest.cpp
index 1bea2c2d..18e5931ed 100644
--- a/third_party/WebKit/Source/core/fetch/RawResourceTest.cpp
+++ b/third_party/WebKit/Source/core/fetch/RawResourceTest.cpp
@@ -173,7 +173,7 @@
 
 TEST(RawResourceTest, RevalidationSucceededUpdateHeaders)
 {
-    RefPtrWillBeRawPtr<Resource> resource = RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw);
+    RawPtr<Resource> resource = RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw);
     ResourceResponse response;
     response.setHTTPStatusCode(200);
     response.addHTTPHeaderField("keep-alive", "keep-alive value");
diff --git a/third_party/WebKit/Source/core/fetch/Resource.cpp b/third_party/WebKit/Source/core/fetch/Resource.cpp
index b80847b..9dc8f188 100644
--- a/third_party/WebKit/Source/core/fetch/Resource.cpp
+++ b/third_party/WebKit/Source/core/fetch/Resource.cpp
@@ -920,7 +920,7 @@
     //
     // Keep it out of LSan's reach instead.
     LEAK_SANITIZER_DISABLED_SCOPE;
-    DEFINE_STATIC_LOCAL(Persistent<ResourceCallback>, callbackHandler, (adoptPtrWillBeNoop(new ResourceCallback)));
+    DEFINE_STATIC_LOCAL(Persistent<ResourceCallback>, callbackHandler, (new ResourceCallback));
     return callbackHandler.get();
 }
 
diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
index 77af0621..22cf53e 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
@@ -854,7 +854,7 @@
     resource->increasePreloadCount();
 
     if (!m_preloads)
-        m_preloads = adoptPtrWillBeNoop(new HeapListHashSet<Member<Resource>>);
+        m_preloads = new HeapListHashSet<Member<Resource>>;
     m_preloads->add(resource);
 
 #if PRELOAD_DEBUG
diff --git a/third_party/WebKit/Source/core/fileapi/FileReader.cpp b/third_party/WebKit/Source/core/fileapi/FileReader.cpp
index e2bf238..542428e 100644
--- a/third_party/WebKit/Source/core/fileapi/FileReader.cpp
+++ b/third_party/WebKit/Source/core/fileapi/FileReader.cpp
@@ -71,18 +71,18 @@
 static const size_t kMaxOutstandingRequestsPerThread = 100;
 static const double progressNotificationIntervalMS = 50;
 
-class FileReader::ThrottlingController final : public NoBaseWillBeGarbageCollectedFinalized<FileReader::ThrottlingController>, public WillBeHeapSupplement<ExecutionContext> {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(FileReader::ThrottlingController);
+class FileReader::ThrottlingController final : public GarbageCollectedFinalized<FileReader::ThrottlingController>, public Supplement<ExecutionContext> {
+    USING_GARBAGE_COLLECTED_MIXIN(FileReader::ThrottlingController);
 public:
     static ThrottlingController* from(ExecutionContext* context)
     {
         if (!context)
             return 0;
 
-        ThrottlingController* controller = static_cast<ThrottlingController*>(WillBeHeapSupplement<ExecutionContext>::from(*context, supplementName()));
+        ThrottlingController* controller = static_cast<ThrottlingController*>(Supplement<ExecutionContext>::from(*context, supplementName()));
         if (!controller) {
-            controller = new ThrottlingController();
-            WillBeHeapSupplement<ExecutionContext>::provideTo(*context, supplementName(), adoptPtrWillBeNoop(controller));
+            controller = new ThrottlingController;
+            provideTo(*context, supplementName(), controller);
         }
         return controller;
     }
@@ -127,7 +127,7 @@
         visitor->trace(m_pendingReaders);
         visitor->trace(m_runningReaders);
 #endif
-        WillBeHeapSupplement<ExecutionContext>::trace(visitor);
+        Supplement<ExecutionContext>::trace(visitor);
     }
 
 private:
@@ -187,8 +187,8 @@
 
     const size_t m_maxRunningReaders;
 
-    using FileReaderDeque = PersistentHeapDequeWillBeHeapDeque<Member<FileReader>>;
-    using FileReaderHashSet = PersistentHeapHashSetWillBeHeapHashSet<Member<FileReader>>;
+    using FileReaderDeque = HeapDeque<Member<FileReader>>;
+    using FileReaderHashSet = HeapHashSet<Member<FileReader>>;
 
     FileReaderDeque m_pendingReaders;
     FileReaderHashSet m_runningReaders;
diff --git a/third_party/WebKit/Source/core/fileapi/FileReader.h b/third_party/WebKit/Source/core/fileapi/FileReader.h
index 351f7fe..b006f5f 100644
--- a/third_party/WebKit/Source/core/fileapi/FileReader.h
+++ b/third_party/WebKit/Source/core/fileapi/FileReader.h
@@ -53,7 +53,7 @@
 class CORE_EXPORT FileReader final : public RefCountedGarbageCollectedEventTargetWithInlineData<FileReader>, public ActiveScriptWrappable, public ActiveDOMObject, public FileReaderLoaderClient {
     DEFINE_WRAPPERTYPEINFO();
     REFCOUNTED_GARBAGE_COLLECTED_EVENT_TARGET(FileReader);
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(FileReader);
+    USING_GARBAGE_COLLECTED_MIXIN(FileReader);
 public:
     static FileReader* create(ExecutionContext*);
 
diff --git a/third_party/WebKit/Source/core/frame/BarProp.idl b/third_party/WebKit/Source/core/frame/BarProp.idl
index 278b34d0..2992d16 100644
--- a/third_party/WebKit/Source/core/frame/BarProp.idl
+++ b/third_party/WebKit/Source/core/frame/BarProp.idl
@@ -29,7 +29,7 @@
 // https://html.spec.whatwg.org/#barprop
 
 [
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface BarProp {
     readonly attribute boolean visible;
 };
diff --git a/third_party/WebKit/Source/core/frame/FrameOwner.h b/third_party/WebKit/Source/core/frame/FrameOwner.h
index 95fe6e0..2dfa9fe 100644
--- a/third_party/WebKit/Source/core/frame/FrameOwner.h
+++ b/third_party/WebKit/Source/core/frame/FrameOwner.h
@@ -45,7 +45,7 @@
 public:
     static RawPtr<DummyFrameOwner> create()
     {
-        return adoptPtrWillBeNoop(new DummyFrameOwner);
+        return new DummyFrameOwner;
     }
 
     DEFINE_INLINE_VIRTUAL_TRACE() { FrameOwner::trace(visitor); }
diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp
index 41bc723..c427ff3a 100644
--- a/third_party/WebKit/Source/core/frame/FrameView.cpp
+++ b/third_party/WebKit/Source/core/frame/FrameView.cpp
@@ -2947,7 +2947,7 @@
 {
     ASSERT(scrollableArea);
     if (!m_scrollableAreas)
-        m_scrollableAreas = adoptPtrWillBeNoop(new ScrollableAreaSet);
+        m_scrollableAreas = new ScrollableAreaSet;
     m_scrollableAreas->add(scrollableArea);
 
     if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator())
@@ -2968,7 +2968,7 @@
 {
     ASSERT(scrollableArea);
     if (!m_animatingScrollableAreas)
-        m_animatingScrollableAreas = adoptPtrWillBeNoop(new ScrollableAreaSet);
+        m_animatingScrollableAreas = new ScrollableAreaSet;
     m_animatingScrollableAreas->add(scrollableArea);
 }
 
diff --git a/third_party/WebKit/Source/core/frame/FrameViewTest.cpp b/third_party/WebKit/Source/core/frame/FrameViewTest.cpp
index 31350b9..c4024cd 100644
--- a/third_party/WebKit/Source/core/frame/FrameViewTest.cpp
+++ b/third_party/WebKit/Source/core/frame/FrameViewTest.cpp
@@ -41,7 +41,7 @@
 class FrameViewTestBase : public testing::Test {
 protected:
     FrameViewTestBase()
-        : m_chromeClient(adoptPtrWillBeNoop(new MockChromeClient))
+        : m_chromeClient(new MockChromeClient)
     { }
 
     ~FrameViewTestBase()
diff --git a/third_party/WebKit/Source/core/frame/ImageBitmap.idl b/third_party/WebKit/Source/core/frame/ImageBitmap.idl
index b47435f..9203cb79 100644
--- a/third_party/WebKit/Source/core/frame/ImageBitmap.idl
+++ b/third_party/WebKit/Source/core/frame/ImageBitmap.idl
@@ -6,7 +6,7 @@
 
 [
     Exposed=(Window,Worker),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface ImageBitmap {
     readonly attribute unsigned long width;
     readonly attribute unsigned long height;
diff --git a/third_party/WebKit/Source/core/frame/Location.idl b/third_party/WebKit/Source/core/frame/Location.idl
index 7d08340e..e3d42b31 100644
--- a/third_party/WebKit/Source/core/frame/Location.idl
+++ b/third_party/WebKit/Source/core/frame/Location.idl
@@ -31,7 +31,7 @@
 [
     CheckSecurity=Receiver,
     Unforgeable,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface Location {
     // |assign|, |replace|, and *writing* |href| do not require a security
     // check, as they *change* the page, and thus these do not change any
diff --git a/third_party/WebKit/Source/core/html/HTMLAllCollection.idl b/third_party/WebKit/Source/core/html/HTMLAllCollection.idl
index dc4ba0d4..65e6b404 100644
--- a/third_party/WebKit/Source/core/html/HTMLAllCollection.idl
+++ b/third_party/WebKit/Source/core/html/HTMLAllCollection.idl
@@ -30,7 +30,7 @@
     Custom=LegacyCallAsFunction,
     DependentLifetime,
     SetWrapperReferenceFrom=ownerNode,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface HTMLAllCollection {
     readonly attribute unsigned long length;
     [ImplementedAs=item] getter Element (unsigned long index);
diff --git a/third_party/WebKit/Source/core/html/HTMLCollection.h b/third_party/WebKit/Source/core/html/HTMLCollection.h
index 36fb4354..59bb446 100644
--- a/third_party/WebKit/Source/core/html/HTMLCollection.h
+++ b/third_party/WebKit/Source/core/html/HTMLCollection.h
@@ -75,7 +75,7 @@
     public:
         static RawPtr<NamedItemCache> create()
         {
-            return adoptPtrWillBeNoop(new NamedItemCache);
+            return new NamedItemCache;
         }
 
         HeapVector<Member<Element>>* getElementsById(const AtomicString& id) const { return m_idCache.get(id.impl()); }
@@ -98,7 +98,7 @@
         {
             Member<HeapVector<Member<Element>>>& vector = map.add(key.impl(), nullptr).storedValue->value;
             if (!vector)
-                vector = adoptPtrWillBeNoop(new HeapVector<Member<Element>>);
+                vector = new HeapVector<Member<Element>>;
             vector->append(element);
         }
 
diff --git a/third_party/WebKit/Source/core/html/HTMLCollection.idl b/third_party/WebKit/Source/core/html/HTMLCollection.idl
index b285517..2554758 100644
--- a/third_party/WebKit/Source/core/html/HTMLCollection.idl
+++ b/third_party/WebKit/Source/core/html/HTMLCollection.idl
@@ -24,7 +24,7 @@
 [
     DependentLifetime,
     SetWrapperReferenceFrom=ownerNode,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface HTMLCollection {
     readonly attribute unsigned long length;
     getter Element? item(unsigned long index);
diff --git a/third_party/WebKit/Source/core/html/HTMLFormElement.cpp b/third_party/WebKit/Source/core/html/HTMLFormElement.cpp
index 574e933d..16a0678 100644
--- a/third_party/WebKit/Source/core/html/HTMLFormElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLFormElement.cpp
@@ -737,7 +737,7 @@
     if (pastName.isEmpty())
         return;
     if (!m_pastNamesMap)
-        m_pastNamesMap = adoptPtrWillBeNoop(new PastNamesMap);
+        m_pastNamesMap = new PastNamesMap;
     m_pastNamesMap->set(pastName, element);
 }
 
diff --git a/third_party/WebKit/Source/core/html/HTMLVideoElementTest.cpp b/third_party/WebKit/Source/core/html/HTMLVideoElementTest.cpp
index deaabb85..661a2cc7 100644
--- a/third_party/WebKit/Source/core/html/HTMLVideoElementTest.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLVideoElementTest.cpp
@@ -60,7 +60,7 @@
 public:
     static RawPtr<StubFrameLoaderClient> create()
     {
-        return adoptPtrWillBeNoop(new StubFrameLoaderClient);
+        return new StubFrameLoaderClient;
     }
 
     PassOwnPtr<WebMediaPlayer> createWebMediaPlayer(HTMLMediaElement&, const WebURL&, WebMediaPlayerClient*) override
diff --git a/third_party/WebKit/Source/core/html/ValidityState.idl b/third_party/WebKit/Source/core/html/ValidityState.idl
index 5883d83..897dee6 100644
--- a/third_party/WebKit/Source/core/html/ValidityState.idl
+++ b/third_party/WebKit/Source/core/html/ValidityState.idl
@@ -23,7 +23,7 @@
 // https://html.spec.whatwg.org/#validitystate
 
 [
-    WillBeGarbageCollected
+    GarbageCollected
 ] interface ValidityState {
     readonly attribute boolean valueMissing;
     readonly attribute boolean typeMismatch;
diff --git a/third_party/WebKit/Source/core/html/forms/CheckboxInputType.cpp b/third_party/WebKit/Source/core/html/forms/CheckboxInputType.cpp
index 795a4d8..cae776ac 100644
--- a/third_party/WebKit/Source/core/html/forms/CheckboxInputType.cpp
+++ b/third_party/WebKit/Source/core/html/forms/CheckboxInputType.cpp
@@ -72,7 +72,7 @@
     // An event handler can use preventDefault or "return false" to reverse the checking we do here.
     // The ClickHandlingState object contains what we need to undo what we did here in didDispatchClick.
 
-    RawPtr<ClickHandlingState> state = adoptPtrWillBeNoop(new ClickHandlingState);
+    RawPtr<ClickHandlingState> state = new ClickHandlingState;
 
     state->checked = element().checked();
     state->indeterminate = element().indeterminate();
diff --git a/third_party/WebKit/Source/core/html/forms/FormController.cpp b/third_party/WebKit/Source/core/html/forms/FormController.cpp
index 82e1a45..8e236ef8 100644
--- a/third_party/WebKit/Source/core/html/forms/FormController.cpp
+++ b/third_party/WebKit/Source/core/html/forms/FormController.cpp
@@ -290,7 +290,7 @@
 class FormKeyGenerator final : public GarbageCollectedFinalized<FormKeyGenerator> {
     WTF_MAKE_NONCOPYABLE(FormKeyGenerator);
 public:
-    static RawPtr<FormKeyGenerator> create() { return adoptPtrWillBeNoop(new FormKeyGenerator); }
+    static RawPtr<FormKeyGenerator> create() { return new FormKeyGenerator; }
     DEFINE_INLINE_TRACE()
     {
 #if ENABLE(OILPAN)
@@ -381,7 +381,7 @@
 
 RawPtr<DocumentState> DocumentState::create()
 {
-    return adoptRefWillBeNoop(new DocumentState);
+    return new DocumentState;
 }
 
 DEFINE_TRACE(DocumentState)
diff --git a/third_party/WebKit/Source/core/html/forms/FormController.h b/third_party/WebKit/Source/core/html/forms/FormController.h
index ca6884d..63e5fa2 100644
--- a/third_party/WebKit/Source/core/html/forms/FormController.h
+++ b/third_party/WebKit/Source/core/html/forms/FormController.h
@@ -92,7 +92,7 @@
 public:
     static RawPtr<FormController> create()
     {
-        return adoptPtrWillBeNoop(new FormController);
+        return new FormController;
     }
     ~FormController();
     DECLARE_TRACE();
diff --git a/third_party/WebKit/Source/core/html/forms/RadioButtonGroupScope.cpp b/third_party/WebKit/Source/core/html/forms/RadioButtonGroupScope.cpp
index 66c7e17..94e4cba 100644
--- a/third_party/WebKit/Source/core/html/forms/RadioButtonGroupScope.cpp
+++ b/third_party/WebKit/Source/core/html/forms/RadioButtonGroupScope.cpp
@@ -71,7 +71,7 @@
 
 RawPtr<RadioButtonGroup> RadioButtonGroup::create()
 {
-    return adoptPtrWillBeNoop(new RadioButtonGroup);
+    return new RadioButtonGroup;
 }
 
 inline bool RadioButtonGroup::isValid() const
@@ -236,7 +236,7 @@
         return;
 
     if (!m_nameToGroupMap)
-        m_nameToGroupMap = adoptPtrWillBeNoop(new NameToGroupMap);
+        m_nameToGroupMap = new NameToGroupMap;
 
     Member<RadioButtonGroup>& group = m_nameToGroupMap->add(element->name(), nullptr).storedValue->value;
     if (!group)
diff --git a/third_party/WebKit/Source/core/html/forms/RadioInputType.cpp b/third_party/WebKit/Source/core/html/forms/RadioInputType.cpp
index 63eebd8..a0d9409 100644
--- a/third_party/WebKit/Source/core/html/forms/RadioInputType.cpp
+++ b/third_party/WebKit/Source/core/html/forms/RadioInputType.cpp
@@ -174,7 +174,7 @@
     // Therefore if nothing is currently selected, we won't allow the upcoming action to be "undone", since
     // we want some object in the radio group to actually get selected.
 
-    RawPtr<ClickHandlingState> state = adoptPtrWillBeNoop(new ClickHandlingState);
+    RawPtr<ClickHandlingState> state = new ClickHandlingState;
 
     state->checked = element().checked();
     state->checkedRadioButton = element().checkedRadioButtonForGroup();
diff --git a/third_party/WebKit/Source/core/html/imports/HTMLImportsController.h b/third_party/WebKit/Source/core/html/imports/HTMLImportsController.h
index e23614ac..f0c1b2d 100644
--- a/third_party/WebKit/Source/core/html/imports/HTMLImportsController.h
+++ b/third_party/WebKit/Source/core/html/imports/HTMLImportsController.h
@@ -46,7 +46,7 @@
 class HTMLImportTreeRoot;
 class KURL;
 
-class HTMLImportsController final : public GarbageCollectedFinalized<HTMLImportsController>, public HeapSupplement<Document> {
+class HTMLImportsController final : public GarbageCollectedFinalized<HTMLImportsController>, public Supplement<Document> {
     USING_GARBAGE_COLLECTED_MIXIN(HTMLImportsController);
 public:
     static const char* supplementName();
diff --git a/third_party/WebKit/Source/core/html/track/TrackEvent.h b/third_party/WebKit/Source/core/html/track/TrackEvent.h
index 85b588f3..27910ac 100644
--- a/third_party/WebKit/Source/core/html/track/TrackEvent.h
+++ b/third_party/WebKit/Source/core/html/track/TrackEvent.h
@@ -41,7 +41,7 @@
 
     static RawPtr<TrackEvent> create()
     {
-        return adoptRefWillBeNoop(new TrackEvent);
+        return new TrackEvent;
     }
 
     static RawPtr<TrackEvent> create(const AtomicString& type, const TrackEventInit& initializer)
diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
index 0304c538..c65872f0 100644
--- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
+++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
@@ -143,10 +143,10 @@
 template<class GlobalObject>
 ImageBitmapFactories& ImageBitmapFactories::fromInternal(GlobalObject& object)
 {
-    ImageBitmapFactories* supplement = static_cast<ImageBitmapFactories*>(WillBeHeapSupplement<GlobalObject>::from(object, supplementName()));
+    ImageBitmapFactories* supplement = static_cast<ImageBitmapFactories*>(Supplement<GlobalObject>::from(object, supplementName()));
     if (!supplement) {
-        supplement = new ImageBitmapFactories();
-        WillBeHeapSupplement<GlobalObject>::provideTo(object, supplementName(), adoptPtrWillBeNoop(supplement));
+        supplement = new ImageBitmapFactories;
+        Supplement<GlobalObject>::provideTo(object, supplementName(), supplement);
     }
     return *supplement;
 }
@@ -179,8 +179,8 @@
 DEFINE_TRACE(ImageBitmapFactories)
 {
     visitor->trace(m_pendingLoaders);
-    WillBeHeapSupplement<LocalDOMWindow>::trace(visitor);
-    WillBeHeapSupplement<WorkerGlobalScope>::trace(visitor);
+    Supplement<LocalDOMWindow>::trace(visitor);
+    Supplement<WorkerGlobalScope>::trace(visitor);
 }
 
 void ImageBitmapFactories::ImageBitmapLoader::rejectPromise()
@@ -249,7 +249,7 @@
         m_cropRect = IntRect(IntPoint(), image->size());
     }
 
-    RefPtrWillBeRawPtr<ImageBitmap> imageBitmap = ImageBitmap::create(image, m_cropRect, m_options);
+    RawPtr<ImageBitmap> imageBitmap = ImageBitmap::create(image, m_cropRect, m_options);
     if (imageBitmap && imageBitmap->bitmapImage()) {
         m_resolver->resolve(imageBitmap.release());
     } else {
diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h
index 239626d..c335eaf9 100644
--- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h
+++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h
@@ -55,10 +55,8 @@
 
 typedef HTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrImageBitmap ImageBitmapSourceUnion;
 
-class ImageBitmapFactories final : public NoBaseWillBeGarbageCollectedFinalized<ImageBitmapFactories>, public WillBeHeapSupplement<LocalDOMWindow>, public WillBeHeapSupplement<WorkerGlobalScope> {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ImageBitmapFactories);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(ImageBitmapFactories);
-
+class ImageBitmapFactories final : public GarbageCollectedFinalized<ImageBitmapFactories>, public Supplement<LocalDOMWindow>, public Supplement<WorkerGlobalScope> {
+    USING_GARBAGE_COLLECTED_MIXIN(ImageBitmapFactories);
 public:
     static ScriptPromise createImageBitmap(ScriptState*, EventTarget&, const ImageBitmapSourceUnion&, ExceptionState&);
     static ScriptPromise createImageBitmap(ScriptState*, EventTarget&, const ImageBitmapSourceUnion&, const ImageBitmapOptions&, ExceptionState&);
@@ -104,7 +102,7 @@
         void didFail(FileError::ErrorCode) override;
 
         FileReaderLoader m_loader;
-        RawPtrWillBeMember<ImageBitmapFactories> m_factory;
+        Member<ImageBitmapFactories> m_factory;
         Member<ScriptPromiseResolver> m_resolver;
         IntRect m_cropRect;
         ImageBitmapOptions m_options;
@@ -118,7 +116,7 @@
     void addLoader(ImageBitmapLoader*);
     void didFinishLoading(ImageBitmapLoader*);
 
-    PersistentHeapHashSetWillBeHeapHashSet<Member<ImageBitmapLoader>> m_pendingLoaders;
+    HeapHashSet<Member<ImageBitmapLoader>> m_pendingLoaders;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapSource.cpp b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapSource.cpp
index 5a8567d..d194467 100644
--- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapSource.cpp
+++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapSource.cpp
@@ -9,7 +9,7 @@
 
 namespace blink {
 
-ScriptPromise ImageBitmapSource::fulfillImageBitmap(ScriptState* scriptState, PassRefPtrWillBeRawPtr<ImageBitmap> imageBitmap)
+ScriptPromise ImageBitmapSource::fulfillImageBitmap(ScriptState* scriptState, RawPtr<ImageBitmap> imageBitmap)
 {
     ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
     ScriptPromise promise = resolver->promise();
diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapSource.h b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapSource.h
index e3194345..bf2a173 100644
--- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapSource.h
+++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapSource.h
@@ -24,7 +24,7 @@
 
     virtual bool isBlob() const { return false; }
 
-    static ScriptPromise fulfillImageBitmap(ScriptState*, PassRefPtrWillBeRawPtr<ImageBitmap>);
+    static ScriptPromise fulfillImageBitmap(ScriptState*, RawPtr<ImageBitmap>);
 protected:
     virtual ~ImageBitmapSource() {}
 };
diff --git a/third_party/WebKit/Source/core/input/EventHandler.cpp b/third_party/WebKit/Source/core/input/EventHandler.cpp
index 164b666..b403fec 100644
--- a/third_party/WebKit/Source/core/input/EventHandler.cpp
+++ b/third_party/WebKit/Source/core/input/EventHandler.cpp
@@ -984,7 +984,7 @@
     if (mouseEvent.button() == NoButton)
         return WebInputEventResult::HandledSuppressed;
 
-    RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
+    RawPtr<FrameView> protector(m_frame->view());
 
     UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);
     m_frame->localFrameRoot()->eventHandler().m_lastMouseDownUserGestureToken = gestureIndicator.currentToken();
@@ -1020,7 +1020,7 @@
     m_mousePressNode = mev.innerNode();
     m_frame->document()->setSequentialFocusNavigationStartingPoint(mev.innerNode());
 
-    RefPtrWillBeRawPtr<LocalFrame> subframe = subframeForHitTestResult(mev);
+    RawPtr<LocalFrame> subframe = subframeForHitTestResult(mev);
     if (subframe) {
         WebInputEventResult result = passMousePressEventToSubframe(mev, subframe.get());
         // Start capturing future events for this frame.  We only do this if we didn't clear
@@ -1146,7 +1146,7 @@
 {
     TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent");
 
-    RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
+    RawPtr<FrameView> protector(m_frame->view());
 
     HitTestResult hoveredNode = HitTestResult();
     WebInputEventResult result = handleMouseMoveOrLeaveEvent(event, &hoveredNode);
@@ -1173,7 +1173,7 @@
 {
     TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent");
 
-    RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
+    RawPtr<FrameView> protector(m_frame->view());
     handleMouseMoveOrLeaveEvent(event, 0, false, true);
 }
 
@@ -1249,7 +1249,7 @@
     }
 
     WebInputEventResult eventResult = WebInputEventResult::NotHandled;
-    RefPtrWillBeRawPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get() ? subframeForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev);
+    RawPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get() ? subframeForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev);
 
     // We want mouseouts to happen first, from the inside out.  First send a move event to the last subframe so that it will fire mouseouts.
     if (m_lastMouseMoveEventSubframe && m_lastMouseMoveEventSubframe->tree().isDescendantOf(m_frame) && m_lastMouseMoveEventSubframe != newSubframe)
@@ -1312,7 +1312,7 @@
     if (mouseEvent.button() == NoButton)
         return WebInputEventResult::HandledSuppressed;
 
-    RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
+    RawPtr<FrameView> protector(m_frame->view());
 
     m_frame->selection().setCaretBlinkingSuspended(false);
 
@@ -1413,7 +1413,7 @@
     if (!view)
         return WebInputEventResult::NotHandled;
 
-    RefPtrWillBeRawPtr<DragEvent> me = DragEvent::create(eventType,
+    RawPtr<DragEvent> me = DragEvent::create(eventType,
         true, true, m_frame->document()->domWindow(),
         0, event.globalPosition().x(), event.globalPosition().y(), event.position().x(), event.position().y(),
         event.movementDelta().x(), event.movementDelta().y(),
@@ -1486,7 +1486,7 @@
     MouseEventWithHitTestResults mev = prepareMouseEvent(request, event);
 
     // Drag events should never go to text nodes (following IE, and proper mouseover/out dispatch)
-    RefPtrWillBeRawPtr<Node> newTarget = mev.innerNode();
+    RawPtr<Node> newTarget = mev.innerNode();
     if (newTarget && newTarget->isTextNode())
         newTarget = FlatTreeTraversal::parent(*newTarget);
 
@@ -1584,7 +1584,7 @@
     m_shouldOnlyFireDragOverEvent = false;
 }
 
-void EventHandler::setCapturingMouseEventsNode(PassRefPtrWillBeRawPtr<Node> n)
+void EventHandler::setCapturingMouseEventsNode(RawPtr<Node> n)
 {
     m_capturingMouseEventsNode = n;
     m_eventHandlerWillResetCapturingMouseEventsNode = false;
@@ -1598,7 +1598,7 @@
     return m_frame->document()->prepareMouseEvent(request, contentPointFromRootFrame(m_frame, mev.position()), mev);
 }
 
-PassRefPtrWillBeRawPtr<Node> EventHandler::updateMouseEventTargetNode(Node* targetNode,
+RawPtr<Node> EventHandler::updateMouseEventTargetNode(Node* targetNode,
     const PlatformMouseEvent& mouseEvent)
 {
     Node* result = targetNode;
@@ -1611,7 +1611,7 @@
         if (result && result->isTextNode())
             result = FlatTreeTraversal::parent(*result);
     }
-    RefPtrWillBeMember<Node> lastNodeUnderMouse = m_nodeUnderMouse;
+    Member<Node> lastNodeUnderMouse = m_nodeUnderMouse;
     m_nodeUnderMouse = result;
 
     PaintLayer* layerForLastNode = layerForNode(lastNodeUnderMouse.get());
@@ -1653,7 +1653,7 @@
 void EventHandler::updateMouseEventTargetNodeAndSendEvents(Node* targetNode,
     const PlatformMouseEvent& mouseEvent, bool isFrameBoundaryTransition)
 {
-    RefPtrWillBeRawPtr<Node> lastNodeUnderMouse = updateMouseEventTargetNode(targetNode, mouseEvent);
+    RawPtr<Node> lastNodeUnderMouse = updateMouseEventTargetNode(targetNode, mouseEvent);
     m_pointerEventManager.sendMouseAndPossiblyPointerNodeTransitionEvents(
         lastNodeUnderMouse, m_nodeUnderMouse, mouseEvent,
         m_frame->document()->domWindow(), isFrameBoundaryTransition);
@@ -1665,7 +1665,7 @@
     if (!m_nodeUnderMouse)
         return WebInputEventResult::NotHandled;
 
-    RefPtrWillBeRawPtr<MouseEvent> event = MouseEvent::create(eventType, m_nodeUnderMouse->document().domWindow(), mouseEvent, clickCount, nullptr);
+    RawPtr<MouseEvent> event = MouseEvent::create(eventType, m_nodeUnderMouse->document().domWindow(), mouseEvent, clickCount, nullptr);
     return toWebInputEventResult(m_nodeUnderMouse->dispatchEvent(event));
 }
 
@@ -1697,7 +1697,7 @@
         || mouseEventType == EventTypeNames::mousemove
         || mouseEventType == EventTypeNames::mouseup);
 
-    RefPtrWillBeRawPtr<Node> lastNodeUnderMouse = updateMouseEventTargetNode(targetNode, mouseEvent);
+    RawPtr<Node> lastNodeUnderMouse = updateMouseEventTargetNode(targetNode, mouseEvent);
 
     return m_pointerEventManager.sendMousePointerEvent(
         m_nodeUnderMouse, mouseEventType, clickCount, mouseEvent, nullptr,
@@ -1796,7 +1796,7 @@
     if (!doc->layoutView())
         return WebInputEventResult::NotHandled;
 
-    RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
+    RawPtr<FrameView> protector(m_frame->view());
 
     FrameView* view = m_frame->view();
     if (!view)
@@ -1834,7 +1834,7 @@
     }
 
     if (node) {
-        RefPtrWillBeRawPtr<WheelEvent> domEvent = WheelEvent::create(event, node->document().domWindow());
+        RawPtr<WheelEvent> domEvent = WheelEvent::create(event, node->document().domWindow());
         if (sendDOMEvent) {
             DispatchEventResult domEventResult = node->dispatchEvent(domEvent);
             if (domEventResult != DispatchEventResult::NotCanceled)
@@ -1960,8 +1960,8 @@
 {
     ASSERT(!targetedEvent.event().isScrollEvent());
 
-    RefPtrWillBeRawPtr<Node> eventTarget = targetedEvent.hitTestResult().innerNode();
-    RefPtrWillBeRawPtr<Scrollbar> scrollbar = targetedEvent.hitTestResult().scrollbar();
+    RawPtr<Node> eventTarget = targetedEvent.hitTestResult().innerNode();
+    RawPtr<Scrollbar> scrollbar = targetedEvent.hitTestResult().scrollbar();
     const PlatformGestureEvent& gestureEvent = targetedEvent.event();
 
     if (scrollbar) {
@@ -1974,7 +1974,7 @@
     }
 
     if (eventTarget) {
-        RefPtrWillBeRawPtr<GestureEvent> gestureDomEvent = GestureEvent::create(eventTarget->document().domWindow(), gestureEvent);
+        RawPtr<GestureEvent> gestureDomEvent = GestureEvent::create(eventTarget->document().domWindow(), gestureEvent);
         if (gestureDomEvent.get()) {
             DispatchEventResult gestureDomEventResult = eventTarget->dispatchEvent(gestureDomEvent);
             if (gestureDomEventResult != DispatchEventResult::NotCanceled) {
@@ -2013,8 +2013,8 @@
 {
     TRACE_EVENT0("input", "EventHandler::handleGestureScrollEvent");
 
-    RefPtrWillBeRawPtr<Node> eventTarget = nullptr;
-    RefPtrWillBeRawPtr<Scrollbar> scrollbar = nullptr;
+    RawPtr<Node> eventTarget = nullptr;
+    RawPtr<Scrollbar> scrollbar = nullptr;
     if (gestureEvent.type() != PlatformEvent::GestureScrollBegin) {
         scrollbar = m_scrollbarHandlingScrollGesture.get();
         eventTarget = m_scrollGestureHandlingNode.get();
@@ -2055,7 +2055,7 @@
         if (handleScrollGestureOnResizer(eventTarget.get(), gestureEvent))
             return WebInputEventResult::HandledSuppressed;
 
-        RefPtrWillBeRawPtr<GestureEvent> gestureDomEvent = GestureEvent::create(eventTarget->document().domWindow(), gestureEvent);
+        RawPtr<GestureEvent> gestureDomEvent = GestureEvent::create(eventTarget->document().domWindow(), gestureEvent);
         if (gestureDomEvent.get()) {
             DispatchEventResult gestureDomEventResult = eventTarget->dispatchEvent(gestureDomEvent);
             if (gestureDomEventResult != DispatchEventResult::NotCanceled) {
@@ -2085,7 +2085,7 @@
 
 WebInputEventResult EventHandler::handleGestureTap(const GestureEventWithHitTestResults& targetedEvent)
 {
-    RefPtrWillBeRawPtr<FrameView> frameView(m_frame->view());
+    RawPtr<FrameView> frameView(m_frame->view());
     const PlatformGestureEvent& gestureEvent = targetedEvent.event();
     HitTestRequest::HitTestRequestType hitType = getHitTypeForGestureType(gestureEvent.type());
     uint64_t preDispatchDomTreeVersion = m_frame->document()->domTreeVersion();
@@ -2123,7 +2123,7 @@
     m_clickNode = currentHitTest.innerNode();
 
     // Capture data for showUnhandledTapUIIfNeeded.
-    RefPtrWillBeRawPtr<Node> tappedNode = m_clickNode;
+    RawPtr<Node> tappedNode = m_clickNode;
     IntPoint tappedPosition = gestureEvent.position();
 
     if (m_clickNode && m_clickNode->isTextNode())
@@ -2216,7 +2216,7 @@
         m_mouseDownMayStartDrag = true;
         dragState().m_dragSrc = nullptr;
         m_mouseDownPos = m_frame->view()->rootFrameToContents(mouseDragEvent.position());
-        RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
+        RawPtr<FrameView> protector(m_frame->view());
         if (handleDrag(mev, DragInitiator::Touch)) {
             m_longTapShouldInvokeContextMenu = true;
             return WebInputEventResult::HandledSystem;
@@ -2225,7 +2225,7 @@
 
     IntPoint hitTestPoint = m_frame->view()->rootFrameToContents(gestureEvent.position());
     HitTestResult result = hitTestResultAtPoint(hitTestPoint);
-    RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
+    RawPtr<FrameView> protector(m_frame->view());
     if (selectionController().handleGestureLongPress(gestureEvent, result)) {
         focusDocumentView();
         return WebInputEventResult::HandledSystem;
@@ -2289,7 +2289,7 @@
 
 WebInputEventResult EventHandler::handleGestureScrollEnd(const PlatformGestureEvent& gestureEvent)
 {
-    RefPtrWillBeRawPtr<Node> node = m_scrollGestureHandlingNode;
+    RawPtr<Node> node = m_scrollGestureHandlingNode;
 
     if (node) {
         passScrollGestureEventToWidget(gestureEvent, node->layoutObject());
@@ -2300,7 +2300,7 @@
             scrollStateData->from_user_input = true;
             scrollStateData->is_direct_manipulation = true;
             scrollStateData->delta_consumed_for_scroll_sequence = m_deltaConsumedForScrollSequence;
-            RefPtrWillBeRawPtr<ScrollState> scrollState = ScrollState::create(scrollStateData.release());
+            RawPtr<ScrollState> scrollState = ScrollState::create(scrollStateData.release());
             customizedScroll(*node.get(), *scrollState);
         }
     }
@@ -2341,7 +2341,7 @@
         scrollStateData->is_beginning = true;
         scrollStateData->from_user_input = true;
         scrollStateData->delta_consumed_for_scroll_sequence = m_deltaConsumedForScrollSequence;
-        RefPtrWillBeRawPtr<ScrollState> scrollState = ScrollState::create(scrollStateData.release());
+        RawPtr<ScrollState> scrollState = ScrollState::create(scrollStateData.release());
         customizedScroll(*m_scrollGestureHandlingNode.get(), *scrollState);
     } else {
         if (m_frame->isMainFrame())
@@ -2404,7 +2404,7 @@
         if (!layoutObject)
             return WebInputEventResult::NotHandled;
 
-        RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
+        RawPtr<FrameView> protector(m_frame->view());
 
         // Try to send the event to the correct view.
         WebInputEventResult result = passScrollGestureEventToWidget(gestureEvent, layoutObject);
@@ -2431,7 +2431,7 @@
             scrollStateData->is_in_inertial_phase = gestureEvent.inertial();
             scrollStateData->from_user_input = true;
             scrollStateData->delta_consumed_for_scroll_sequence = m_deltaConsumedForScrollSequence;
-            RefPtrWillBeRawPtr<ScrollState> scrollState = ScrollState::create(scrollStateData.release());
+            RawPtr<ScrollState> scrollState = ScrollState::create(scrollStateData.release());
             if (m_previousGestureScrolledNode) {
                 // The ScrollState needs to know what the current
                 // native scrolling element is, so that for an
@@ -2513,11 +2513,11 @@
     IntPoint touchCenter = m_frame->view()->contentsToRootFrame(result.roundedPointInMainFrame());
     IntRect touchRect = m_frame->view()->contentsToRootFrame(result.hitTestLocation().boundingBox());
 
-    WillBeHeapVector<RefPtrWillBeMember<Node>, 11> nodes;
+    HeapVector<Member<Node>, 11> nodes;
     copyToVector(result.listBasedTestResult(), nodes);
 
     // FIXME: the explicit Vector conversion copies into a temporary and is wasteful.
-    return findBestClickableCandidate(targetNode, targetPoint, touchCenter, touchRect, WillBeHeapVector<RefPtrWillBeMember<Node>> (nodes));
+    return findBestClickableCandidate(targetNode, targetPoint, touchCenter, touchRect, HeapVector<Member<Node>> (nodes));
 }
 
 bool EventHandler::bestContextMenuNodeForHitTestResult(const HitTestResult& result, IntPoint& targetPoint, Node*& targetNode)
@@ -2525,11 +2525,11 @@
     ASSERT(result.isRectBasedTest());
     IntPoint touchCenter = m_frame->view()->contentsToRootFrame(result.roundedPointInMainFrame());
     IntRect touchRect = m_frame->view()->contentsToRootFrame(result.hitTestLocation().boundingBox());
-    WillBeHeapVector<RefPtrWillBeMember<Node>, 11> nodes;
+    HeapVector<Member<Node>, 11> nodes;
     copyToVector(result.listBasedTestResult(), nodes);
 
     // FIXME: the explicit Vector conversion copies into a temporary and is wasteful.
-    return findBestContextMenuCandidate(targetNode, targetPoint, touchCenter, touchRect, WillBeHeapVector<RefPtrWillBeMember<Node>>(nodes));
+    return findBestContextMenuCandidate(targetNode, targetPoint, touchCenter, touchRect, HeapVector<Member<Node>>(nodes));
 }
 
 bool EventHandler::bestZoomableAreaForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntRect& targetArea, Node*& targetNode)
@@ -2543,11 +2543,11 @@
     HitTestResult result = hitTestResultAtPoint(hitTestPoint, hitType, LayoutSize(touchRadius));
 
     IntRect touchRect(touchCenter - touchRadius, touchRadius + touchRadius);
-    WillBeHeapVector<RefPtrWillBeMember<Node>, 11> nodes;
+    HeapVector<Member<Node>, 11> nodes;
     copyToVector(result.listBasedTestResult(), nodes);
 
     // FIXME: the explicit Vector conversion copies into a temporary and is wasteful.
-    return findBestZoomableArea(targetNode, targetArea, touchCenter, touchRect, WillBeHeapVector<RefPtrWillBeMember<Node>>(nodes));
+    return findBestZoomableArea(targetNode, targetArea, touchCenter, touchRect, HeapVector<Member<Node>>(nodes));
 }
 
 // Update the hover and active state across all frames for this gesture.
@@ -2557,7 +2557,7 @@
 {
     ASSERT(m_frame == m_frame->localFrameRoot());
 
-    WillBeHeapVector<RawPtrWillBeMember<LocalFrame>> newHoverFrameChain;
+    HeapVector<Member<LocalFrame>> newHoverFrameChain;
     LocalFrame* newHoverFrameInDocument = innerElement ? innerElement->document().frame() : nullptr;
     // Insert the ancestors of the frame having the new hovered node to the frame chain
     // The frame chain doesn't include the main frame to avoid the redundant work that cleans the hover state.
@@ -2568,8 +2568,8 @@
         newHoverFrameInDocument = parentFrame && parentFrame->isLocalFrame() ? toLocalFrame(parentFrame) : nullptr;
     }
 
-    RefPtrWillBeRawPtr<Node> oldHoverNodeInCurDoc = m_frame->document()->hoverNode();
-    RefPtrWillBeRawPtr<Node> newInnermostHoverNode = innerElement;
+    RawPtr<Node> oldHoverNodeInCurDoc = m_frame->document()->hoverNode();
+    RawPtr<Node> newInnermostHoverNode = innerElement;
 
     if (newInnermostHoverNode != oldHoverNodeInCurDoc) {
         size_t indexFrameChain = newHoverFrameChain.size();
@@ -2617,7 +2617,7 @@
     // - Dispatch mouseover/mouseenter events of the entered frames into the inside.
 
     // Insert the ancestors of the frame having the new target node to the entered frame chain
-    WillBeHeapVector<RawPtrWillBeMember<LocalFrame>> enteredFrameChain;
+    HeapVector<Member<LocalFrame>> enteredFrameChain;
     LocalFrame* enteredFrameInDocument = targetedEvent.hitTestResult().innerNodeFrame();
     while (enteredFrameInDocument) {
         enteredFrameChain.append(enteredFrameInDocument);
@@ -2627,7 +2627,7 @@
 
     size_t indexEnteredFrameChain = enteredFrameChain.size();
     LocalFrame* exitedFrameInDocument = m_frame;
-    WillBeHeapVector<RawPtrWillBeMember<LocalFrame>> exitedFrameChain;
+    HeapVector<Member<LocalFrame>> exitedFrameChain;
     // Insert the frame from the disagreement between last frames and entered frames
     while (exitedFrameInDocument) {
         Node* lastNodeUnderTap = exitedFrameInDocument->eventHandler().m_nodeUnderMouse.get();
@@ -3089,7 +3089,7 @@
 
 WebInputEventResult EventHandler::keyEvent(const PlatformKeyboardEvent& initialKeyEvent)
 {
-    RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
+    RawPtr<FrameView> protector(m_frame->view());
     m_frame->chromeClient().clearToolTip();
 
     if (initialKeyEvent.windowsVirtualKeyCode() == VK_CAPITAL)
@@ -3108,7 +3108,7 @@
 
     // Check for cases where we are too early for events -- possible unmatched key up
     // from pressing return in the location bar.
-    RefPtrWillBeRawPtr<Node> node = eventTargetNodeForDocument(m_frame->document());
+    RawPtr<Node> node = eventTargetNodeForDocument(m_frame->document());
     if (!node)
         return WebInputEventResult::NotHandled;
 
@@ -3125,7 +3125,7 @@
 
     // FIXME: it would be fair to let an input method handle KeyUp events before DOM dispatch.
     if (initialKeyEvent.type() == PlatformEvent::KeyUp || initialKeyEvent.type() == PlatformEvent::Char) {
-        RefPtrWillBeRawPtr<KeyboardEvent> domEvent = KeyboardEvent::create(initialKeyEvent, m_frame->document()->domWindow());
+        RawPtr<KeyboardEvent> domEvent = KeyboardEvent::create(initialKeyEvent, m_frame->document()->domWindow());
 
         return toWebInputEventResult(node->dispatchEvent(domEvent));
     }
@@ -3133,7 +3133,7 @@
     PlatformKeyboardEvent keyDownEvent = initialKeyEvent;
     if (keyDownEvent.type() != PlatformEvent::RawKeyDown)
         keyDownEvent.disambiguateKeyDownEvent(PlatformEvent::RawKeyDown);
-    RefPtrWillBeRawPtr<KeyboardEvent> keydown = KeyboardEvent::create(keyDownEvent, m_frame->document()->domWindow());
+    RawPtr<KeyboardEvent> keydown = KeyboardEvent::create(keyDownEvent, m_frame->document()->domWindow());
     if (matchedAnAccessKey)
         keydown->setDefaultPrevented(true);
     keydown->setTarget(node);
@@ -3159,7 +3159,7 @@
     keyPressEvent.disambiguateKeyDownEvent(PlatformEvent::Char);
     if (keyPressEvent.text().isEmpty())
         return WebInputEventResult::NotHandled;
-    RefPtrWillBeRawPtr<KeyboardEvent> keypress = KeyboardEvent::create(keyPressEvent, m_frame->document()->domWindow());
+    RawPtr<KeyboardEvent> keypress = KeyboardEvent::create(keyPressEvent, m_frame->document()->domWindow());
     keypress->setTarget(node);
     return toWebInputEventResult(node->dispatchEvent(keypress));
 }
@@ -3403,7 +3403,7 @@
     if (!target)
         return false;
 
-    RefPtrWillBeRawPtr<TextEvent> event = TextEvent::create(m_frame->domWindow(), text, inputType);
+    RawPtr<TextEvent> event = TextEvent::create(m_frame->domWindow(), text, inputType);
     event->setUnderlyingEvent(underlyingEvent);
 
     target->dispatchEvent(event);
@@ -3570,7 +3570,7 @@
 }
 
 void EventHandler::dispatchPointerEvents(const PlatformTouchEvent& event,
-    WillBeHeapVector<TouchInfo>& touchInfos)
+    HeapVector<TouchInfo>& touchInfos)
 {
     if (!RuntimeEnabledFeatures::pointerEventEnabled())
         return;
@@ -3594,7 +3594,7 @@
     }
 }
 
-void EventHandler::sendPointerCancels(WillBeHeapVector<TouchInfo>& touchInfos)
+void EventHandler::sendPointerCancels(HeapVector<TouchInfo>& touchInfos)
 {
     if (!RuntimeEnabledFeatures::pointerEventEnabled())
         return;
@@ -3628,9 +3628,9 @@
 public:
     // The touches corresponding to the particular change state this struct
     // instance represents.
-    RefPtrWillBeMember<TouchList> m_touches;
+    Member<TouchList> m_touches;
 
-    using EventTargetSet = WillBeHeapHashSet<RefPtrWillBeMember<EventTarget>>;
+    using EventTargetSet = HeapHashSet<Member<EventTarget>>;
     // Set of targets involved in m_touches.
     EventTargetSet m_targets;
 };
@@ -3638,7 +3638,7 @@
 } // namespace
 
 WebInputEventResult EventHandler::dispatchTouchEvents(const PlatformTouchEvent& event,
-    WillBeHeapVector<TouchInfo>& touchInfos, bool freshTouchEvents, bool allTouchReleased)
+    HeapVector<TouchInfo>& touchInfos, bool freshTouchEvents, bool allTouchReleased)
 {
     // Build up the lists to use for the 'touches', 'targetTouches' and
     // 'changedTouches' attributes in the JS event. See
@@ -3646,11 +3646,11 @@
     // lists fit together.
 
     // Holds the complete set of touches on the screen.
-    RefPtrWillBeRawPtr<TouchList> touches = TouchList::create();
+    RawPtr<TouchList> touches = TouchList::create();
 
     // A different view on the 'touches' list above, filtered and grouped by
     // event target. Used for the 'targetTouches' list in the JS event.
-    using TargetTouchesHeapMap = WillBeHeapHashMap<EventTarget*, RefPtrWillBeMember<TouchList>>;
+    using TargetTouchesHeapMap = HeapHashMap<EventTarget*, Member<TouchList>>;
     TargetTouchesHeapMap touchesByTarget;
 
     // Array of touches per state, used to assemble the 'changedTouches' list.
@@ -3664,7 +3664,7 @@
         if (touchInfo.consumed)
             continue;
 
-        RefPtrWillBeRawPtr<Touch> touch = Touch::create(
+        RawPtr<Touch> touch = Touch::create(
             touchInfo.targetFrame.get(),
             touchInfo.touchTarget.get(),
             point.id(),
@@ -3721,7 +3721,7 @@
         const AtomicString& eventName(touchEventNameForTouchPointState(static_cast<PlatformTouchPoint::TouchState>(state)));
         for (const auto& eventTarget : changedTouches[state].m_targets) {
             EventTarget* touchEventTarget = eventTarget.get();
-            RefPtrWillBeRawPtr<TouchEvent> touchEvent = TouchEvent::create(
+            RawPtr<TouchEvent> touchEvent = TouchEvent::create(
                 touches.get(), touchesByTarget.get(touchEventTarget), changedTouches[state].m_touches.get(),
                 eventName, touchEventTarget->toNode()->document().domWindow(),
                 event.getModifiers(), event.cancelable(), event.causesScrollingIfUncanceled(), event.timestamp());
@@ -3846,12 +3846,12 @@
     }
 
     // Compute and store the common info used by both PointerEvent and TouchEvent.
-    WillBeHeapVector<TouchInfo> touchInfos(points.size());
+    HeapVector<TouchInfo> touchInfos(points.size());
 
     for (unsigned i = 0; i < points.size(); ++i) {
         const PlatformTouchPoint& point = points[i];
         PlatformTouchPoint::TouchState pointState = point.state();
-        RefPtrWillBeRawPtr<EventTarget> touchTarget = nullptr;
+        RawPtr<EventTarget> touchTarget = nullptr;
         String regionID;
 
         if (pointState == PlatformTouchPoint::TouchReleased || pointState == PlatformTouchPoint::TouchCancelled) {
diff --git a/third_party/WebKit/Source/core/input/EventHandler.h b/third_party/WebKit/Source/core/input/EventHandler.h
index 120a341..e5cf6c4 100644
--- a/third_party/WebKit/Source/core/input/EventHandler.h
+++ b/third_party/WebKit/Source/core/input/EventHandler.h
@@ -86,9 +86,8 @@
 
 enum class DragInitiator;
 
-class CORE_EXPORT EventHandler final : public NoBaseWillBeGarbageCollectedFinalized<EventHandler> {
+class CORE_EXPORT EventHandler final : public GarbageCollectedFinalized<EventHandler> {
     WTF_MAKE_NONCOPYABLE(EventHandler);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(EventHandler);
 public:
     explicit EventHandler(LocalFrame*);
     ~EventHandler();
@@ -114,7 +113,7 @@
 
     bool mousePressed() const { return m_mousePressed; }
 
-    void setCapturingMouseEventsNode(PassRefPtrWillBeRawPtr<Node>); // A caller is responsible for resetting capturing node to 0.
+    void setCapturingMouseEventsNode(RawPtr<Node>); // A caller is responsible for resetting capturing node to 0.
 
     WebInputEventResult updateDragAndDrop(const PlatformMouseEvent&, DataTransfer*);
     void cancelDragAndDrop(const PlatformMouseEvent&, DataTransfer*);
@@ -226,8 +225,8 @@
         }
 
         PlatformTouchPoint point;
-        RefPtrWillBeMember<EventTarget> touchTarget;
-        RefPtrWillBeMember<LocalFrame> targetFrame;
+        Member<EventTarget> touchTarget;
+        Member<LocalFrame> targetFrame;
         FloatPoint adjustedPagePoint;
         FloatSize adjustedRadius;
         bool knownTarget;
@@ -310,7 +309,7 @@
 
     void invalidateClick();
 
-    PassRefPtrWillBeRawPtr<Node> updateMouseEventTargetNode(Node*, const PlatformMouseEvent&);
+    RawPtr<Node> updateMouseEventTargetNode(Node*, const PlatformMouseEvent&);
     void updateMouseEventTargetNodeAndSendEvents(Node*, const PlatformMouseEvent&, bool isFrameBoundaryTransition = false);
 
 
@@ -373,25 +372,25 @@
     // the given element.
     bool slideFocusOnShadowHostIfNecessary(const Element&);
 
-    void dispatchPointerEvents(const PlatformTouchEvent&, WillBeHeapVector<TouchInfo>&);
-    void sendPointerCancels(WillBeHeapVector<TouchInfo>&);
+    void dispatchPointerEvents(const PlatformTouchEvent&, HeapVector<TouchInfo>&);
+    void sendPointerCancels(HeapVector<TouchInfo>&);
 
-    WebInputEventResult dispatchTouchEvents(const PlatformTouchEvent&, WillBeHeapVector<TouchInfo>&, bool, bool);
+    WebInputEventResult dispatchTouchEvents(const PlatformTouchEvent&, HeapVector<TouchInfo>&, bool, bool);
 
     // NOTE: If adding a new field to this class please ensure that it is
     // cleared in |EventHandler::clear()|.
 
-    const RawPtrWillBeMember<LocalFrame> m_frame;
+    const Member<LocalFrame> m_frame;
 
     // Current button-press state for mouse/mouse-like-stylus.
     // TODO(crbug.com/563676): Buggy for chorded buttons.
     bool m_mousePressed;
 
     bool m_capturesDragging;
-    RefPtrWillBeMember<Node> m_mousePressNode;
+    Member<Node> m_mousePressNode;
 
     bool m_mouseDownMayStartDrag;
-    const OwnPtrWillBeMember<SelectionController> m_selectionController;
+    const Member<SelectionController> m_selectionController;
 
     LayoutPoint m_dragStartPos;
 
@@ -407,24 +406,24 @@
 
     bool m_svgPan;
 
-    RawPtrWillBeMember<PaintLayerScrollableArea> m_resizeScrollableArea;
+    Member<PaintLayerScrollableArea> m_resizeScrollableArea;
 
-    RefPtrWillBeMember<Node> m_capturingMouseEventsNode;
+    Member<Node> m_capturingMouseEventsNode;
     bool m_eventHandlerWillResetCapturingMouseEventsNode;
 
     // Note the difference of this and m_nodeUnderPointer in PointerEventManager
-    RefPtrWillBeMember<Node> m_nodeUnderMouse;
+    Member<Node> m_nodeUnderMouse;
 
-    RefPtrWillBeMember<LocalFrame> m_lastMouseMoveEventSubframe;
-    RefPtrWillBeMember<Scrollbar> m_lastScrollbarUnderMouse;
+    Member<LocalFrame> m_lastMouseMoveEventSubframe;
+    Member<Scrollbar> m_lastScrollbarUnderMouse;
 
     int m_clickCount;
-    RefPtrWillBeMember<Node> m_clickNode;
+    Member<Node> m_clickNode;
 
-    RefPtrWillBeMember<Node> m_dragTarget;
+    Member<Node> m_dragTarget;
     bool m_shouldOnlyFireDragOverEvent;
 
-    RefPtrWillBeMember<HTMLFrameSetElement> m_frameSetBeingResized;
+    Member<HTMLFrameSetElement> m_frameSetBeingResized;
 
     LayoutSize m_offsetFromResizeCorner; // In the coords of m_resizeScrollableArea.
 
@@ -440,13 +439,13 @@
     RefPtr<UserGestureToken> m_lastMouseDownUserGestureToken;
 
     // The target of each active touch point indexed by the touch ID.
-    using TouchTargetMap = WillBeHeapHashMap<unsigned, RefPtrWillBeMember<EventTarget>, DefaultHash<unsigned>::Hash, WTF::UnsignedWithZeroKeyHashTraits<unsigned>>;
+    using TouchTargetMap = HeapHashMap<unsigned, Member<EventTarget>, DefaultHash<unsigned>::Hash, WTF::UnsignedWithZeroKeyHashTraits<unsigned>>;
     TouchTargetMap m_targetForTouchID;
-    using TouchRegionMap = WillBeHeapHashMap<unsigned, String, DefaultHash<unsigned>::Hash, WTF::UnsignedWithZeroKeyHashTraits<unsigned>>;
+    using TouchRegionMap = HeapHashMap<unsigned, String, DefaultHash<unsigned>::Hash, WTF::UnsignedWithZeroKeyHashTraits<unsigned>>;
     TouchRegionMap m_regionForTouchID;
 
     // If set, the document of the active touch sequence. Unset if no touch sequence active.
-    RefPtrWillBeMember<Document> m_touchSequenceDocument;
+    Member<Document> m_touchSequenceDocument;
     RefPtr<UserGestureToken> m_touchSequenceUserGestureToken;
 
     bool m_touchPressed;
@@ -458,14 +457,14 @@
     // TODO(mustaq): Consider a state per pointerType, as in PointerIdManager? Exclude mouse?
     bool m_inPointerCanceledState;
 
-    RefPtrWillBeMember<Node> m_scrollGestureHandlingNode;
+    Member<Node> m_scrollGestureHandlingNode;
     bool m_lastGestureScrollOverWidget;
     // The most recent element to scroll natively during this scroll
     // sequence. Null if no native element has scrolled this scroll
     // sequence, or if the most recent element to scroll used scroll
     // customization.
-    RefPtrWillBeMember<Node> m_previousGestureScrolledNode;
-    RefPtrWillBeMember<Scrollbar> m_scrollbarHandlingScrollGesture;
+    Member<Node> m_previousGestureScrolledNode;
+    Member<Scrollbar> m_scrollbarHandlingScrollGesture;
 
     double m_maxMouseMovedDuration;
 
@@ -473,7 +472,7 @@
 
     Timer<EventHandler> m_activeIntervalTimer;
     double m_lastShowPressTimestamp;
-    RefPtrWillBeMember<Element> m_lastDeferredTapElement;
+    Member<Element> m_lastDeferredTapElement;
 
     // Only used with the ScrollCustomization runtime enabled feature.
     std::deque<int> m_currentScrollChain;
diff --git a/third_party/WebKit/Source/core/input/EventHandlerTest.cpp b/third_party/WebKit/Source/core/input/EventHandlerTest.cpp
index 6a9c3884..629a946 100644
--- a/third_party/WebKit/Source/core/input/EventHandlerTest.cpp
+++ b/third_party/WebKit/Source/core/input/EventHandlerTest.cpp
@@ -106,7 +106,7 @@
 
     FrameSelection& selection = document().frame()->selection();
     ASSERT_TRUE(selection.isRange());
-    RefPtrWillBeRawPtr<Range> range = createRange(selection.selection().toNormalizedEphemeralRange());
+    RawPtr<Range> range = createRange(selection.selection().toNormalizedEphemeralRange());
     ASSERT_TRUE(range.get());
     EXPECT_EQ("Line 1\nLine 2", range->text());
 }
diff --git a/third_party/WebKit/Source/core/input/PointerEventManager.cpp b/third_party/WebKit/Source/core/input/PointerEventManager.cpp
index 5a18188..ffdc2ed 100644
--- a/third_party/WebKit/Source/core/input/PointerEventManager.cpp
+++ b/third_party/WebKit/Source/core/input/PointerEventManager.cpp
@@ -31,25 +31,25 @@
     }
 }
 
-bool isInDocument(PassRefPtrWillBeRawPtr<EventTarget> n)
+bool isInDocument(RawPtr<EventTarget> n)
 {
     return n && n->toNode() && n->toNode()->inDocument();
 }
 
 WebInputEventResult dispatchMouseEvent(
-    PassRefPtrWillBeRawPtr<EventTarget> prpTarget,
+    RawPtr<EventTarget> prpTarget,
     const AtomicString& mouseEventType,
     const PlatformMouseEvent& mouseEvent,
-    PassRefPtrWillBeRawPtr<EventTarget> prpRelatedTarget,
+    RawPtr<EventTarget> prpRelatedTarget,
     int detail = 0,
     bool checkForListener = false)
 {
-    RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
-    RefPtrWillBeRawPtr<EventTarget> relatedTarget = prpRelatedTarget;
+    RawPtr<EventTarget> target = prpTarget;
+    RawPtr<EventTarget> relatedTarget = prpRelatedTarget;
     if (target && target->toNode()
         && (!checkForListener || target->hasEventListeners(mouseEventType))) {
-        RefPtrWillBeRawPtr<Node> targetNode = target->toNode();
-        RefPtrWillBeRawPtr<MouseEvent> event = MouseEvent::create(mouseEventType,
+        RawPtr<Node> targetNode = target->toNode();
+        RawPtr<MouseEvent> event = MouseEvent::create(mouseEventType,
             targetNode->document().domWindow(), mouseEvent, detail,
             relatedTarget ? relatedTarget->toNode() : nullptr);
         DispatchEventResult dispatchResult = target->dispatchEvent(event);
@@ -61,12 +61,12 @@
 } // namespace
 
 WebInputEventResult PointerEventManager::dispatchPointerEvent(
-    PassRefPtrWillBeRawPtr<EventTarget> prpTarget,
-    PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent,
+    RawPtr<EventTarget> prpTarget,
+    RawPtr<PointerEvent> prpPointerEvent,
     bool checkForListener)
 {
-    RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
-    RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
+    RawPtr<EventTarget> target = prpTarget;
+    RawPtr<PointerEvent> pointerEvent = prpPointerEvent;
 
     if (!target)
         return WebInputEventResult::NotHandled;
@@ -77,7 +77,7 @@
     if ((eventType == EventTypeNames::pointerout
         || eventType == EventTypeNames::pointerover)
         && m_nodeUnderPointer.contains(pointerId)) {
-        RefPtrWillBeRawPtr<EventTarget> targetUnderPointer =
+        RawPtr<EventTarget> targetUnderPointer =
             m_nodeUnderPointer.get(pointerId).target;
         if (targetUnderPointer == target) {
             m_nodeUnderPointer.set(pointerId, EventTargetAttributes
@@ -95,8 +95,8 @@
     return WebInputEventResult::NotHandled;
 }
 
-PassRefPtrWillBeRawPtr<EventTarget> PointerEventManager::getEffectiveTargetForPointerEvent(
-    PassRefPtrWillBeRawPtr<EventTarget> target, int pointerId)
+RawPtr<EventTarget> PointerEventManager::getEffectiveTargetForPointerEvent(
+    RawPtr<EventTarget> target, int pointerId)
 {
     if (EventTarget* capturingTarget = getCapturingNode(pointerId))
         return capturingTarget;
@@ -104,14 +104,14 @@
 }
 
 void PointerEventManager::sendMouseAndPossiblyPointerNodeTransitionEvents(
-    PassRefPtrWillBeRawPtr<Node> exitedNode,
-    PassRefPtrWillBeRawPtr<Node> enteredNode,
+    RawPtr<Node> exitedNode,
+    RawPtr<Node> enteredNode,
     const PlatformMouseEvent& mouseEvent,
-    PassRefPtrWillBeRawPtr<AbstractView> view,
+    RawPtr<AbstractView> view,
     bool isFrameBoundaryTransition)
 {
     // Pointer event type does not matter as it will be overridden in the sendNodeTransitionEvents
-    RefPtrWillBeRawPtr<PointerEvent> pointerEvent =
+    RawPtr<PointerEvent> pointerEvent =
         m_pointerEventFactory.create(EventTypeNames::mouseout, mouseEvent,
         nullptr, view);
 
@@ -129,14 +129,14 @@
 }
 
 void PointerEventManager::sendNodeTransitionEvents(
-    PassRefPtrWillBeRawPtr<EventTarget> prpExitedTarget,
-    PassRefPtrWillBeRawPtr<EventTarget> prpEnteredTarget,
-    PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent,
+    RawPtr<EventTarget> prpExitedTarget,
+    RawPtr<EventTarget> prpEnteredTarget,
+    RawPtr<PointerEvent> prpPointerEvent,
     const PlatformMouseEvent& mouseEvent, bool sendMouseEvent)
 {
-    RefPtrWillBeRawPtr<EventTarget> exitedTarget = prpExitedTarget;
-    RefPtrWillBeRawPtr<EventTarget> enteredTarget = prpEnteredTarget;
-    RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
+    RawPtr<EventTarget> exitedTarget = prpExitedTarget;
+    RawPtr<EventTarget> enteredTarget = prpEnteredTarget;
+    RawPtr<PointerEvent> pointerEvent = prpPointerEvent;
 
     if (exitedTarget == enteredTarget)
         return;
@@ -162,19 +162,19 @@
     }
 
     // Create lists of all exited/entered ancestors, locate the common ancestor
-    WillBeHeapVector<RefPtrWillBeMember<Node>, 32> exitedAncestors;
-    WillBeHeapVector<RefPtrWillBeMember<Node>, 32> enteredAncestors;
+    HeapVector<Member<Node>, 32> exitedAncestors;
+    HeapVector<Member<Node>, 32> enteredAncestors;
     if (isInDocument(exitedTarget)) {
-        RefPtrWillBeRawPtr<Node> exitedNode = exitedTarget->toNode();
+        RawPtr<Node> exitedNode = exitedTarget->toNode();
         exitedNode->updateDistribution();
-        for (RefPtrWillBeRawPtr<Node> node = exitedNode; node; node = FlatTreeTraversal::parent(*node))
+        for (RawPtr<Node> node = exitedNode; node; node = FlatTreeTraversal::parent(*node))
             exitedAncestors.append(node);
     }
 
     if (isInDocument(enteredTarget)) {
-        RefPtrWillBeRawPtr<Node> enteredNode = enteredTarget->toNode();
+        RawPtr<Node> enteredNode = enteredTarget->toNode();
         enteredNode->updateDistribution();
-        for (RefPtrWillBeRawPtr<Node> node = enteredNode; node; node = FlatTreeTraversal::parent(*node))
+        for (RawPtr<Node> node = enteredNode; node; node = FlatTreeTraversal::parent(*node))
             enteredAncestors.append(node);
     }
 
@@ -268,12 +268,12 @@
 }
 
 void PointerEventManager::setNodeUnderPointer(
-    PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent,
-    PassRefPtrWillBeRawPtr<EventTarget> prpTarget,
+    RawPtr<PointerEvent> prpPointerEvent,
+    RawPtr<EventTarget> prpTarget,
     bool sendEvent)
 {
-    RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
-    RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
+    RawPtr<PointerEvent> pointerEvent = prpPointerEvent;
+    RawPtr<EventTarget> target = prpTarget;
     if (m_nodeUnderPointer.contains(pointerEvent->pointerId())) {
         EventTargetAttributes node = m_nodeUnderPointer.get(
             pointerEvent->pointerId());
@@ -294,10 +294,10 @@
     }
 }
 
-void PointerEventManager::sendTouchCancelPointerEvent(PassRefPtrWillBeRawPtr<EventTarget> prpTarget, const PlatformTouchPoint& point)
+void PointerEventManager::sendTouchCancelPointerEvent(RawPtr<EventTarget> prpTarget, const PlatformTouchPoint& point)
 {
-    RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
-    RefPtrWillBeRawPtr<PointerEvent> pointerEvent = m_pointerEventFactory.createPointerCancelEvent(point);
+    RawPtr<EventTarget> target = prpTarget;
+    RawPtr<PointerEvent> pointerEvent = m_pointerEventFactory.createPointerCancelEvent(point);
 
 
     processCaptureAndPositionOfPointerEvent(pointerEvent, target);
@@ -313,14 +313,14 @@
 }
 
 WebInputEventResult PointerEventManager::sendTouchPointerEvent(
-    PassRefPtrWillBeRawPtr<EventTarget> prpTarget,
+    RawPtr<EventTarget> prpTarget,
     const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers,
     const double width, const double height,
     const double clientX, const double clientY)
 {
-    RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
+    RawPtr<EventTarget> target = prpTarget;
 
-    RefPtrWillBeRawPtr<PointerEvent> pointerEvent =
+    RawPtr<PointerEvent> pointerEvent =
         m_pointerEventFactory.create(
         pointerEventNameForTouchPointState(touchPoint.state()),
         touchPoint, modifiers, width, height, clientX, clientY);
@@ -342,15 +342,15 @@
 }
 
 WebInputEventResult PointerEventManager::sendMousePointerEvent(
-    PassRefPtrWillBeRawPtr<Node> prpTarget, const AtomicString& mouseEventType,
+    RawPtr<Node> prpTarget, const AtomicString& mouseEventType,
     int clickCount, const PlatformMouseEvent& mouseEvent,
-    PassRefPtrWillBeRawPtr<Node> relatedTarget,
-    PassRefPtrWillBeRawPtr<AbstractView> view,
-    PassRefPtrWillBeRawPtr<Node> lastNodeUnderMouse)
+    RawPtr<Node> relatedTarget,
+    RawPtr<AbstractView> view,
+    RawPtr<Node> lastNodeUnderMouse)
 {
-    RefPtrWillBeRawPtr<Node> target = prpTarget;
+    RawPtr<Node> target = prpTarget;
 
-    RefPtrWillBeRawPtr<PointerEvent> pointerEvent =
+    RawPtr<PointerEvent> pointerEvent =
         m_pointerEventFactory.create(mouseEventType, mouseEvent,
         relatedTarget, view);
 
@@ -363,7 +363,7 @@
     processCaptureAndPositionOfPointerEvent(pointerEvent, target,
         lastNodeUnderMouse, mouseEvent, true, true);
 
-    RefPtrWillBeRawPtr<EventTarget> effectiveTarget =
+    RawPtr<EventTarget> effectiveTarget =
         getEffectiveTargetForPointerEvent(target, pointerEvent->pointerId());
 
     WebInputEventResult result =
@@ -404,14 +404,14 @@
 }
 
 void PointerEventManager::processCaptureAndPositionOfPointerEvent(
-    const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent,
-    const PassRefPtrWillBeRawPtr<EventTarget> prpHitTestTarget,
-    const PassRefPtrWillBeRawPtr<EventTarget> lastNodeUnderMouse,
+    const RawPtr<PointerEvent> prpPointerEvent,
+    const RawPtr<EventTarget> prpHitTestTarget,
+    const RawPtr<EventTarget> lastNodeUnderMouse,
     const PlatformMouseEvent& mouseEvent,
     bool sendMouseEvent, bool setPointerPosition)
 {
-    RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
-    RefPtrWillBeRawPtr<EventTarget> hitTestTarget = prpHitTestTarget;
+    RawPtr<PointerEvent> pointerEvent = prpPointerEvent;
+    RawPtr<EventTarget> hitTestTarget = prpHitTestTarget;
     bool isCaptureChanged = false;
 
     if (setPointerPosition) {
@@ -430,17 +430,17 @@
 }
 
 bool PointerEventManager::processPendingPointerCapture(
-    const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent,
-    const PassRefPtrWillBeRawPtr<EventTarget> prpHitTestTarget,
+    const RawPtr<PointerEvent> prpPointerEvent,
+    const RawPtr<EventTarget> prpHitTestTarget,
     const PlatformMouseEvent& mouseEvent, bool sendMouseEvent)
 {
-    RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
-    RefPtrWillBeRawPtr<EventTarget> hitTestTarget = prpHitTestTarget;
+    RawPtr<PointerEvent> pointerEvent = prpPointerEvent;
+    RawPtr<EventTarget> hitTestTarget = prpHitTestTarget;
     int pointerId = pointerEvent->pointerId();
-    const RefPtrWillBeRawPtr<EventTarget> pointerCaptureTarget =
+    const RawPtr<EventTarget> pointerCaptureTarget =
         m_pointerCaptureTarget.contains(pointerId)
         ? m_pointerCaptureTarget.get(pointerId) : nullptr;
-    const RefPtrWillBeRawPtr<EventTarget> pendingPointerCaptureTarget =
+    const RawPtr<EventTarget> pendingPointerCaptureTarget =
         m_pendingPointerCaptureTarget.contains(pointerId)
         ? m_pendingPointerCaptureTarget.get(pointerId) : nullptr;
     const EventTargetAttributes &nodeUnderPointerAtt =
@@ -528,9 +528,9 @@
 }
 
 void PointerEventManager::removePointer(
-    const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent)
+    const RawPtr<PointerEvent> prpPointerEvent)
 {
-    RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
+    RawPtr<PointerEvent> pointerEvent = prpPointerEvent;
     if (m_pointerEventFactory.remove(pointerEvent)) {
         int pointerId = pointerEvent->pointerId();
         m_pendingPointerCaptureTarget.remove(pointerId);
diff --git a/third_party/WebKit/Source/core/input/PointerEventManager.h b/third_party/WebKit/Source/core/input/PointerEventManager.h
index deebe075..3e8ca4ee 100644
--- a/third_party/WebKit/Source/core/input/PointerEventManager.h
+++ b/third_party/WebKit/Source/core/input/PointerEventManager.h
@@ -26,20 +26,20 @@
     DECLARE_TRACE();
 
     WebInputEventResult sendMousePointerEvent(
-        PassRefPtrWillBeRawPtr<Node>, const AtomicString& type,
+        RawPtr<Node>, const AtomicString& type,
         int clickCount, const PlatformMouseEvent&,
-        PassRefPtrWillBeRawPtr<Node> relatedTarget,
-        PassRefPtrWillBeRawPtr<AbstractView>,
-        PassRefPtrWillBeRawPtr<Node> lastNodeUnderMouse);
+        RawPtr<Node> relatedTarget,
+        RawPtr<AbstractView>,
+        RawPtr<Node> lastNodeUnderMouse);
 
     // Returns whether the event is consumed or not
     WebInputEventResult sendTouchPointerEvent(
-        PassRefPtrWillBeRawPtr<EventTarget>,
+        RawPtr<EventTarget>,
         const PlatformTouchPoint&, PlatformEvent::Modifiers,
         const double width, const double height,
         const double clientX, const double clientY);
 
-    void sendTouchCancelPointerEvent(PassRefPtrWillBeRawPtr<EventTarget>,
+    void sendTouchCancelPointerEvent(RawPtr<EventTarget>,
         const PlatformTouchPoint&);
 
     // Sends node transition events mouseout/leave/over/enter to the
@@ -54,10 +54,10 @@
     // and their corresponding transition events will be handled altogether by
     // sendMousePointerEvent function.
     void sendMouseAndPossiblyPointerNodeTransitionEvents(
-        PassRefPtrWillBeRawPtr<Node> exitedNode,
-        PassRefPtrWillBeRawPtr<Node> enteredNode,
+        RawPtr<Node> exitedNode,
+        RawPtr<Node> enteredNode,
         const PlatformMouseEvent&,
-        PassRefPtrWillBeRawPtr<AbstractView>, bool isFrameBoundaryTransition);
+        RawPtr<AbstractView>, bool isFrameBoundaryTransition);
 
     // Clear all the existing ids.
     void clear();
@@ -68,7 +68,7 @@
     bool isActive(const int);
 
 private:
-    typedef WillBeHeapHashMap<int, RefPtrWillBeMember<EventTarget>> PointerCapturingMap;
+    typedef HeapHashMap<int, Member<EventTarget>> PointerCapturingMap;
     class EventTargetAttributes {
         DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
     public:
@@ -76,32 +76,32 @@
         {
             visitor->trace(target);
         }
-        RefPtrWillBeMember<EventTarget> target;
+        Member<EventTarget> target;
         bool hasRecievedOverEvent;
         EventTargetAttributes()
         : target(nullptr)
         , hasRecievedOverEvent(false) {}
-        EventTargetAttributes(PassRefPtrWillBeRawPtr<EventTarget> target,
+        EventTargetAttributes(RawPtr<EventTarget> target,
             bool hasRecievedOverEvent)
         : target(target)
         , hasRecievedOverEvent(hasRecievedOverEvent) {}
     };
 
     void sendNodeTransitionEvents(
-        PassRefPtrWillBeRawPtr<EventTarget> exitedTarget,
-        PassRefPtrWillBeRawPtr<EventTarget> enteredTarget,
-        PassRefPtrWillBeRawPtr<PointerEvent>,
+        RawPtr<EventTarget> exitedTarget,
+        RawPtr<EventTarget> enteredTarget,
+        RawPtr<PointerEvent>,
         const PlatformMouseEvent& = PlatformMouseEvent(),
         bool sendMouseEvent = false);
-    void setNodeUnderPointer(PassRefPtrWillBeRawPtr<PointerEvent>,
-        PassRefPtrWillBeRawPtr<EventTarget>, bool sendEvent = true);
+    void setNodeUnderPointer(RawPtr<PointerEvent>,
+        RawPtr<EventTarget>, bool sendEvent = true);
 
     // Returns whether the pointer capture is changed. In this case this
     // function will take care of transition events and setNodeUnderPointer
     // should not send transition events.
     bool processPendingPointerCapture(
-        const PassRefPtrWillBeRawPtr<PointerEvent>,
-        const PassRefPtrWillBeRawPtr<EventTarget>,
+        const RawPtr<PointerEvent>,
+        const RawPtr<EventTarget>,
         const PlatformMouseEvent& = PlatformMouseEvent(),
         bool sendMouseEvent = false);
 
@@ -110,22 +110,22 @@
     // setPointerPosition is true. It also sends corresponding transition events
     // for mouse if sendMouseEvent is true.
     void processCaptureAndPositionOfPointerEvent(
-        const PassRefPtrWillBeRawPtr<PointerEvent>,
-        const PassRefPtrWillBeRawPtr<EventTarget> hitTestTarget,
-        const PassRefPtrWillBeRawPtr<EventTarget> lastNodeUnderMouse = nullptr,
+        const RawPtr<PointerEvent>,
+        const RawPtr<EventTarget> hitTestTarget,
+        const RawPtr<EventTarget> lastNodeUnderMouse = nullptr,
         const PlatformMouseEvent& = PlatformMouseEvent(),
         bool sendMouseEvent = false,
         bool setPointerPosition = true);
 
     void removeTargetFromPointerCapturingMapping(
         PointerCapturingMap&, const EventTarget*);
-    PassRefPtrWillBeRawPtr<EventTarget> getEffectiveTargetForPointerEvent(
-        PassRefPtrWillBeRawPtr<EventTarget>, int);
+    RawPtr<EventTarget> getEffectiveTargetForPointerEvent(
+        RawPtr<EventTarget>, int);
     EventTarget* getCapturingNode(int);
-    void removePointer(const PassRefPtrWillBeRawPtr<PointerEvent>);
+    void removePointer(const RawPtr<PointerEvent>);
     WebInputEventResult dispatchPointerEvent(
-        PassRefPtrWillBeRawPtr<EventTarget>,
-        PassRefPtrWillBeRawPtr<PointerEvent>,
+        RawPtr<EventTarget>,
+        RawPtr<PointerEvent>,
         bool checkForListener = false);
     void releasePointerCapture(int);
 
@@ -138,7 +138,7 @@
     // which might be different than m_nodeUnderMouse in EventHandler. That one
     // keeps track of any compatibility mouse event positions but this map for
     // the pointer with id=1 is only taking care of true mouse related events.
-    WillBeHeapHashMap<int, EventTargetAttributes> m_nodeUnderPointer;
+    HeapHashMap<int, EventTargetAttributes> m_nodeUnderPointer;
 
     PointerCapturingMap m_pointerCaptureTarget;
     PointerCapturingMap m_pendingPointerCaptureTarget;
diff --git a/third_party/WebKit/Source/core/inspector/DOMPatchSupport.cpp b/third_party/WebKit/Source/core/inspector/DOMPatchSupport.cpp
index b7b2b170..81618f2 100644
--- a/third_party/WebKit/Source/core/inspector/DOMPatchSupport.cpp
+++ b/third_party/WebKit/Source/core/inspector/DOMPatchSupport.cpp
@@ -435,7 +435,7 @@
 
     if (unusedNodesMap)
         unusedNodesMap->add(digest->m_sha1, digest);
-    return adoptPtrWillBeNoop(digest);
+    return digest;
 }
 
 bool DOMPatchSupport::insertBeforeAndMarkAsUsed(ContainerNode* parentNode, Digest* digest, Node* anchor, ExceptionState& exceptionState)
diff --git a/third_party/WebKit/Source/core/inspector/DevToolsHost.idl b/third_party/WebKit/Source/core/inspector/DevToolsHost.idl
index 096fd64..5dea038 100644
--- a/third_party/WebKit/Source/core/inspector/DevToolsHost.idl
+++ b/third_party/WebKit/Source/core/inspector/DevToolsHost.idl
@@ -31,7 +31,7 @@
  */
 
 [
-    WillBeGarbageCollected,
+    GarbageCollected,
     NoInterfaceObject,
 ] interface DevToolsHost {
     float zoomFactor();
diff --git a/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
index b41d57c..cb63ec0 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
@@ -744,7 +744,7 @@
     HeapHashSet<Member<CSSStyleSheet>>* documentCSSStyleSheets = m_documentToCSSStyleSheets.get(document);
     if (!documentCSSStyleSheets) {
         documentCSSStyleSheets = new HeapHashSet<Member<CSSStyleSheet>>();
-        RawPtr<HeapHashSet<Member<CSSStyleSheet>>> documentCSSStyleSheetsPtr = adoptPtrWillBeNoop(documentCSSStyleSheets);
+        RawPtr<HeapHashSet<Member<CSSStyleSheet>>> documentCSSStyleSheetsPtr = documentCSSStyleSheets;
         m_documentToCSSStyleSheets.set(document, documentCSSStyleSheetsPtr.release());
     }
 
diff --git a/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
index 85a2bdb..fa3ccc5 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
@@ -690,7 +690,7 @@
         node = parent;
 
     // Node being pushed is detached -> push subtree root.
-    RawPtr<NodeToIdMap> newMap = adoptPtrWillBeNoop(new NodeToIdMap);
+    RawPtr<NodeToIdMap> newMap = new NodeToIdMap;
     NodeToIdMap* danglingMap = newMap.get();
     m_danglingNodeToIdMaps.append(newMap.release());
     OwnPtr<protocol::Array<protocol::DOM::Node>> children = protocol::Array<protocol::DOM::Node>::create();
diff --git a/third_party/WebKit/Source/core/inspector/InspectorOverlayHost.idl b/third_party/WebKit/Source/core/inspector/InspectorOverlayHost.idl
index c35fdeb..7ac9e5f 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorOverlayHost.idl
+++ b/third_party/WebKit/Source/core/inspector/InspectorOverlayHost.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    WillBeGarbageCollected,
+    GarbageCollected,
     NoInterfaceObject
 ] interface InspectorOverlayHost {
     void resume();
diff --git a/third_party/WebKit/Source/core/layout/HitTestCache.h b/third_party/WebKit/Source/core/layout/HitTestCache.h
index bdea06f..f429566 100644
--- a/third_party/WebKit/Source/core/layout/HitTestCache.h
+++ b/third_party/WebKit/Source/core/layout/HitTestCache.h
@@ -39,7 +39,7 @@
 public:
     static RawPtr<HitTestCache> create()
     {
-        return adoptPtrWillBeNoop(new HitTestCache);
+        return new HitTestCache;
     }
 
     // Check the cache for a possible hit and update |result| if
diff --git a/third_party/WebKit/Source/core/layout/HitTestResult.cpp b/third_party/WebKit/Source/core/layout/HitTestResult.cpp
index 9ce0a30..9420322 100644
--- a/third_party/WebKit/Source/core/layout/HitTestResult.cpp
+++ b/third_party/WebKit/Source/core/layout/HitTestResult.cpp
@@ -493,14 +493,14 @@
 const HitTestResult::NodeSet& HitTestResult::listBasedTestResult() const
 {
     if (!m_listBasedTestResult)
-        m_listBasedTestResult = adoptPtrWillBeNoop(new NodeSet);
+        m_listBasedTestResult = new NodeSet;
     return *m_listBasedTestResult;
 }
 
 HitTestResult::NodeSet& HitTestResult::mutableListBasedTestResult()
 {
     if (!m_listBasedTestResult)
-        m_listBasedTestResult = adoptPtrWillBeNoop(new NodeSet);
+        m_listBasedTestResult = new NodeSet;
     return *m_listBasedTestResult;
 }
 
diff --git a/third_party/WebKit/Source/core/layout/LayoutImageResource.h b/third_party/WebKit/Source/core/layout/LayoutImageResource.h
index a7d3a5d..b98509b 100644
--- a/third_party/WebKit/Source/core/layout/LayoutImageResource.h
+++ b/third_party/WebKit/Source/core/layout/LayoutImageResource.h
@@ -40,7 +40,7 @@
 
     static RawPtr<LayoutImageResource> create()
     {
-        return adoptPtrWillBeNoop(new LayoutImageResource);
+        return new LayoutImageResource;
     }
 
     virtual void initialize(LayoutObject*);
diff --git a/third_party/WebKit/Source/core/layout/LayoutMultiColumnFlowThread.cpp b/third_party/WebKit/Source/core/layout/LayoutMultiColumnFlowThread.cpp
index 226b9d6..a8fc25a 100644
--- a/third_party/WebKit/Source/core/layout/LayoutMultiColumnFlowThread.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutMultiColumnFlowThread.cpp
@@ -384,7 +384,21 @@
     // thread needs layout as well.
     layoutScope.setChildNeedsLayout(this);
 
-    m_blockOffsetInEnclosingFragmentationContext = enclosingFragmentationContext() ? multiColumnBlockFlow()->offsetFromLogicalTopOfFirstPage() : LayoutUnit();
+    if (FragmentationContext* enclosingFragmentationContext = this->enclosingFragmentationContext()) {
+        m_blockOffsetInEnclosingFragmentationContext = multiColumnBlockFlow()->offsetFromLogicalTopOfFirstPage();
+
+        if (LayoutMultiColumnFlowThread* enclosingFlowThread = enclosingFragmentationContext->associatedFlowThread()) {
+            if (LayoutMultiColumnSet* firstSet = firstMultiColumnSet()) {
+                // Before we can start to lay out the contents of this multicol container, we need
+                // to make sure that all ancestor multicol containers have established a row to hold
+                // the first column contents of this container (this multicol container may start at
+                // the beginning of a new outer row). Without sufficient rows in all ancestor
+                // multicol containers, we may use the wrong column height.
+                LayoutUnit offset = m_blockOffsetInEnclosingFragmentationContext + firstSet->logicalTopFromMulticolContentEdge();
+                enclosingFlowThread->appendNewFragmentainerGroupIfNeeded(offset, AssociateWithLatterPage);
+            }
+        }
+    }
 
     for (LayoutBox* columnBox = firstMultiColumnBox(); columnBox; columnBox = columnBox->nextSiblingMultiColumnBox()) {
         if (!columnBox->isLayoutMultiColumnSet()) {
@@ -455,7 +469,7 @@
     return view()->fragmentationContext();
 }
 
-void LayoutMultiColumnFlowThread::appendNewFragmentainerGroupIfNeeded(LayoutUnit bottomOffsetInFlowThread)
+void LayoutMultiColumnFlowThread::appendNewFragmentainerGroupIfNeeded(LayoutUnit offsetInFlowThread, PageBoundaryRule pageBoundaryRule)
 {
     if (!isPageLogicalHeightKnown()) {
         // If we have no clue about the height of the multicol container, bail. This situation
@@ -465,11 +479,12 @@
         // Its height is indefinite for now.
         return;
     }
-    // TODO(mstensho): bottomOffsetInFlowThread is an endpoint-exclusive offset, i.e. the offset
-    // just after the bottom of some object. So, ideally, columnSetAtBlockOffset() should be
-    // informed about this (i.e. take a PageBoundaryRule argument). This is not the only place with
-    // this issue; see also pageRemainingLogicalHeightForOffset().
-    LayoutMultiColumnSet* columnSet = columnSetAtBlockOffset(bottomOffsetInFlowThread);
+    // TODO(mstensho): If pageBoundaryRule is AssociateWithFormerPage, offsetInFlowThread is an
+    // endpoint-exclusive offset, i.e. the offset just after the bottom of some object. So, ideally,
+    // columnSetAtBlockOffset() should be informed about this (i.e. take a PageBoundaryRule
+    // argument). This is not the only place with this issue; see also
+    // pageRemainingLogicalHeightForOffset().
+    LayoutMultiColumnSet* columnSet = columnSetAtBlockOffset(offsetInFlowThread);
     if (columnSet->isInitialHeightCalculated()) {
         // We only insert additional fragmentainer groups in the initial layout pass. We only want
         // to balance columns in the last fragmentainer group (if we need to balance at all), so we
@@ -477,7 +492,7 @@
         return;
     }
 
-    if (!columnSet->hasFragmentainerGroupForColumnAt(bottomOffsetInFlowThread)) {
+    if (!columnSet->hasFragmentainerGroupForColumnAt(offsetInFlowThread, pageBoundaryRule)) {
         FragmentationContext* enclosingFragmentationContext = this->enclosingFragmentationContext();
         if (!enclosingFragmentationContext)
             return; // Not nested. We'll never need more rows than the one we already have then.
@@ -487,7 +502,7 @@
         // multicol container. That in turn may mean that we've run out of columns there too.
         const MultiColumnFragmentainerGroup& newRow = columnSet->appendNewFragmentainerGroup();
         if (LayoutMultiColumnFlowThread* enclosingFlowThread = enclosingFragmentationContext->associatedFlowThread())
-            enclosingFlowThread->appendNewFragmentainerGroupIfNeeded(newRow.blockOffsetInEnclosingFragmentationContext() + newRow.logicalHeight());
+            enclosingFlowThread->appendNewFragmentainerGroupIfNeeded(newRow.blockOffsetInEnclosingFragmentationContext(), AssociateWithLatterPage);
     }
 }
 
@@ -956,7 +971,7 @@
     bool mayBeNested = multiColumnBlockFlow()->isInsideFlowThread() || view()->fragmentationContext();
     if (!mayBeNested)
         return;
-    appendNewFragmentainerGroupIfNeeded(logicalBottomInFlowThreadAfterPagination);
+    appendNewFragmentainerGroupIfNeeded(logicalBottomInFlowThreadAfterPagination, AssociateWithFormerPage);
 }
 
 bool LayoutMultiColumnFlowThread::canSkipLayout(const LayoutBox& root) const
diff --git a/third_party/WebKit/Source/core/layout/LayoutMultiColumnFlowThread.h b/third_party/WebKit/Source/core/layout/LayoutMultiColumnFlowThread.h
index 6634b22..c898d713 100644
--- a/third_party/WebKit/Source/core/layout/LayoutMultiColumnFlowThread.h
+++ b/third_party/WebKit/Source/core/layout/LayoutMultiColumnFlowThread.h
@@ -215,7 +215,7 @@
     // If we've run out of columns in the last fragmentainer group (column row), we have to insert
     // another fragmentainer group in order to hold more columns. This means that we're moving to
     // the next outer column (in the enclosing fragmentation context).
-    void appendNewFragmentainerGroupIfNeeded(LayoutUnit bottomOffsetInFlowThread);
+    void appendNewFragmentainerGroupIfNeeded(LayoutUnit offsetInFlowThread, PageBoundaryRule);
 
     // Implementing FragmentationContext:
     bool isFragmentainerLogicalHeightKnown() final;
diff --git a/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.cpp b/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.cpp
index 95802c0..bedf6229 100644
--- a/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.cpp
@@ -178,12 +178,13 @@
     return nullptr;
 }
 
-bool LayoutMultiColumnSet::hasFragmentainerGroupForColumnAt(LayoutUnit bottomOffsetInFlowThread) const
+bool LayoutMultiColumnSet::hasFragmentainerGroupForColumnAt(LayoutUnit offsetInFlowThread, PageBoundaryRule pageBoundaryRule) const
 {
     const MultiColumnFragmentainerGroup& lastRow = lastFragmentainerGroup();
-    if (lastRow.logicalTopInFlowThread() > bottomOffsetInFlowThread)
-        return true;
-    return bottomOffsetInFlowThread - lastRow.logicalTopInFlowThread() <= lastRow.logicalHeight() * usedColumnCount();
+    LayoutUnit maxLogicalBottomInFlowThread = lastRow.logicalTopInFlowThread() + lastRow.logicalHeight() * usedColumnCount();
+    if (pageBoundaryRule == AssociateWithFormerPage)
+        return offsetInFlowThread <= maxLogicalBottomInFlowThread;
+    return offsetInFlowThread < maxLogicalBottomInFlowThread;
 }
 
 MultiColumnFragmentainerGroup& LayoutMultiColumnSet::appendNewFragmentainerGroup()
diff --git a/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.h b/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.h
index 2a08f240..4f304c2 100644
--- a/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.h
+++ b/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.h
@@ -97,7 +97,7 @@
     LayoutMultiColumnSet* previousSiblingMultiColumnSet() const;
 
     // Return true if we have a fragmentainer group that can hold a column at the specified flow thread block offset.
-    bool hasFragmentainerGroupForColumnAt(LayoutUnit bottomOffsetInFlowThread) const;
+    bool hasFragmentainerGroupForColumnAt(LayoutUnit bottomOffsetInFlowThread, PageBoundaryRule) const;
 
     MultiColumnFragmentainerGroup& appendNewFragmentainerGroup();
 
diff --git a/third_party/WebKit/Source/core/layout/LayoutTestHelper.h b/third_party/WebKit/Source/core/layout/LayoutTestHelper.h
index fb0aaf12..581a156a 100644
--- a/third_party/WebKit/Source/core/layout/LayoutTestHelper.h
+++ b/third_party/WebKit/Source/core/layout/LayoutTestHelper.h
@@ -65,7 +65,7 @@
 
 class SingleChildFrameLoaderClient final : public EmptyFrameLoaderClient {
 public:
-    static RawPtr<SingleChildFrameLoaderClient> create() { return adoptPtrWillBeNoop(new SingleChildFrameLoaderClient); }
+    static RawPtr<SingleChildFrameLoaderClient> create() { return new SingleChildFrameLoaderClient; }
 
     DEFINE_INLINE_VIRTUAL_TRACE()
     {
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
index 6d30f03..176e2f4b 100644
--- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
@@ -289,7 +289,7 @@
     // reference graph adjustments on changes, so we need to break possible cycles here.
     // This strong reference is safe, as it is guaranteed that this set will be emptied
     // at the end of recursion.
-    DEFINE_STATIC_LOCAL(Persistent<SVGElementSet>, invalidatingDependencies, (adoptPtrWillBeNoop(new SVGElementSet)));
+    DEFINE_STATIC_LOCAL(Persistent<SVGElementSet>, invalidatingDependencies, (new SVGElementSet));
 
     for (SVGElement* element : *dependencies) {
         if (LayoutObject* layoutObject = element->layoutObject()) {
diff --git a/third_party/WebKit/Source/core/loader/BeaconLoader.cpp b/third_party/WebKit/Source/core/loader/BeaconLoader.cpp
index 1bd3a4f2f3..077f05d 100644
--- a/third_party/WebKit/Source/core/loader/BeaconLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/BeaconLoader.cpp
@@ -98,7 +98,7 @@
         initiatorInfo.name = FetchInitiatorTypeNames::beacon;
 
         // Leak the loader, since it will kill itself as soon as it receives a response.
-        RefPtrWillBeRawPtr<BeaconLoader> loader = adoptRefWillBeNoop(new BeaconLoader(frame, request, initiatorInfo, AllowStoredCredentials));
+        RawPtr<BeaconLoader> loader = new BeaconLoader(frame, request, initiatorInfo, AllowStoredCredentials);
         loader->ref();
         return true;
     }
diff --git a/third_party/WebKit/Source/core/loader/BeaconLoader.h b/third_party/WebKit/Source/core/loader/BeaconLoader.h
index 5df535c..7121c65 100644
--- a/third_party/WebKit/Source/core/loader/BeaconLoader.h
+++ b/third_party/WebKit/Source/core/loader/BeaconLoader.h
@@ -25,7 +25,6 @@
 // staying alive. PingLoader providing the service.
 class CORE_EXPORT BeaconLoader final : public PingLoader {
     WTF_MAKE_NONCOPYABLE(BeaconLoader);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(BeaconLoader);
 public:
     ~BeaconLoader() override { }
 
diff --git a/third_party/WebKit/Source/core/loader/DocumentLoadTiming.h b/third_party/WebKit/Source/core/loader/DocumentLoadTiming.h
index 278bb5d..cac157bb5 100644
--- a/third_party/WebKit/Source/core/loader/DocumentLoadTiming.h
+++ b/third_party/WebKit/Source/core/loader/DocumentLoadTiming.h
@@ -97,7 +97,7 @@
     bool m_hasCrossOriginRedirect;
     bool m_hasSameOriginAsPreviousDocument;
 
-    RawPtrWillBeMember<DocumentLoader> m_documentLoader;
+    Member<DocumentLoader> m_documentLoader;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/loader/DocumentLoader.cpp b/third_party/WebKit/Source/core/loader/DocumentLoader.cpp
index df38588..75aa0419 100644
--- a/third_party/WebKit/Source/core/loader/DocumentLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/DocumentLoader.cpp
@@ -166,7 +166,7 @@
 
 Resource* DocumentLoader::startPreload(Resource::Type type, FetchRequest& request)
 {
-    RefPtrWillBeRawPtr<Resource> resource = nullptr;
+    RawPtr<Resource> resource = nullptr;
     switch (type) {
     case Resource::Image:
         resource = ImageResource::fetch(request, fetcher());
@@ -243,7 +243,7 @@
     ASSERT_UNUSED(resource, m_mainResource == resource);
     ASSERT(m_mainResource);
 
-    RefPtrWillBeRawPtr<DocumentLoader> protect(this);
+    RawPtr<DocumentLoader> protect(this);
 
     if (!m_mainResource->errorOccurred() && !m_mainResource->wasCanceled()) {
         finishedLoading(m_mainResource->loadFinishTime());
@@ -261,7 +261,7 @@
 {
     ASSERT(!m_frame->page()->defersLoading() || InspectorInstrumentation::isDebuggerPaused(m_frame));
 
-    RefPtrWillBeRawPtr<DocumentLoader> protect(this);
+    RawPtr<DocumentLoader> protect(this);
 
     double responseEndTime = finishTime;
     if (!responseEndTime)
@@ -366,7 +366,7 @@
 {
     ASSERT_UNUSED(resource, m_mainResource == resource);
     ASSERT_UNUSED(handle, !handle);
-    RefPtrWillBeRawPtr<DocumentLoader> protect(this);
+    RawPtr<DocumentLoader> protect(this);
     ASSERT(frame());
 
     m_applicationCacheHost->didReceiveResponseForMainResource(response);
@@ -392,7 +392,7 @@
             String content = it->value;
             if (frameLoader()->shouldInterruptLoadForXFrameOptions(content, response.url(), mainResourceIdentifier())) {
                 String message = "Refused to display '" + response.url().elidedString() + "' in a frame because it set 'X-Frame-Options' to '" + content + "'.";
-                RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(SecurityMessageSource, ErrorMessageLevel, message);
+                RawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(SecurityMessageSource, ErrorMessageLevel, message);
                 consoleMessage->setRequestIdentifier(mainResourceIdentifier());
                 frame()->document()->addConsoleMessage(consoleMessage.release());
 
@@ -500,8 +500,8 @@
 
     // Both unloading the old page and parsing the new page may execute JavaScript which destroys the datasource
     // by starting a new load, so retain temporarily.
-    RefPtrWillBeRawPtr<LocalFrame> protectFrame(m_frame.get());
-    RefPtrWillBeRawPtr<DocumentLoader> protectLoader(this);
+    RawPtr<LocalFrame> protectFrame(m_frame.get());
+    RawPtr<DocumentLoader> protectLoader(this);
 
     TemporaryChange<bool> reentrancyProtector(m_inDataReceived, true);
     processData(data, length);
@@ -550,8 +550,8 @@
 void DocumentLoader::detachFromFrame()
 {
     ASSERT(m_frame);
-    RefPtrWillBeRawPtr<LocalFrame> protectFrame(m_frame.get());
-    RefPtrWillBeRawPtr<DocumentLoader> protectLoader(this);
+    RawPtr<LocalFrame> protectFrame(m_frame.get());
+    RawPtr<DocumentLoader> protectLoader(this);
 
     // It never makes sense to have a document loader that is detached from its
     // frame have any loads active, so go ahead and kill all the loads.
@@ -624,7 +624,7 @@
 
 void DocumentLoader::startLoadingMainResource()
 {
-    RefPtrWillBeRawPtr<DocumentLoader> protect(this);
+    RawPtr<DocumentLoader> protect(this);
     timing().markNavigationStart();
     ASSERT(!m_mainResource);
     ASSERT(m_state == NotStarted);
@@ -671,7 +671,7 @@
     m_writer.clear();
 }
 
-PassRefPtrWillBeRawPtr<DocumentWriter> DocumentLoader::createWriterFor(const DocumentInit& init, const AtomicString& mimeType, const AtomicString& encoding, bool dispatch, ParserSynchronizationPolicy parsingPolicy)
+RawPtr<DocumentWriter> DocumentLoader::createWriterFor(const DocumentInit& init, const AtomicString& mimeType, const AtomicString& encoding, bool dispatch, ParserSynchronizationPolicy parsingPolicy)
 {
     LocalFrame* frame = init.frame();
 
@@ -681,7 +681,7 @@
     if (!init.shouldReuseDefaultView())
         frame->setDOMWindow(LocalDOMWindow::create(*frame));
 
-    RefPtrWillBeRawPtr<Document> document = frame->localDOMWindow()->installNewDocument(mimeType, init);
+    RawPtr<Document> document = frame->localDOMWindow()->installNewDocument(mimeType, init);
 
     frame->loader().didBeginDocument(dispatch);
 
diff --git a/third_party/WebKit/Source/core/loader/DocumentLoader.h b/third_party/WebKit/Source/core/loader/DocumentLoader.h
index 0be0143..984f7d5 100644
--- a/third_party/WebKit/Source/core/loader/DocumentLoader.h
+++ b/third_party/WebKit/Source/core/loader/DocumentLoader.h
@@ -58,12 +58,11 @@
 class FrameLoader;
 class ResourceLoader;
 
-class CORE_EXPORT DocumentLoader : public RefCountedWillBeGarbageCollectedFinalized<DocumentLoader>, private RawResourceClient {
-    USING_FAST_MALLOC_WILL_BE_REMOVED(DocumentLoader);
+class CORE_EXPORT DocumentLoader : public GarbageCollectedFinalized<DocumentLoader>, private RawResourceClient {
 public:
-    static PassRefPtrWillBeRawPtr<DocumentLoader> create(LocalFrame* frame, const ResourceRequest& request, const SubstituteData& data)
+    static RawPtr<DocumentLoader> create(LocalFrame* frame, const ResourceRequest& request, const SubstituteData& data)
     {
-        return adoptRefWillBeNoop(new DocumentLoader(frame, request, data));
+        return new DocumentLoader(frame, request, data);
     }
     ~DocumentLoader() override;
 
@@ -118,7 +117,7 @@
     void clearRedirectChain();
     void appendRedirect(const KURL&);
 
-    PassRefPtrWillBeRawPtr<ContentSecurityPolicy> releaseContentSecurityPolicy() { return m_contentSecurityPolicy.release(); }
+    RawPtr<ContentSecurityPolicy> releaseContentSecurityPolicy() { return m_contentSecurityPolicy.release(); }
 
     ClientHintsPreferences& clientHintsPreferences() { return m_clientHintsPreferences; }
 
@@ -148,7 +147,7 @@
     Vector<KURL> m_redirectChain;
 
 private:
-    static PassRefPtrWillBeRawPtr<DocumentWriter> createWriterFor(const DocumentInit&, const AtomicString& mimeType, const AtomicString& encoding, bool dispatch, ParserSynchronizationPolicy);
+    static RawPtr<DocumentWriter> createWriterFor(const DocumentInit&, const AtomicString& mimeType, const AtomicString& encoding, bool dispatch, ParserSynchronizationPolicy);
 
     void ensureWriter(const AtomicString& mimeType, const KURL& overridingURL = KURL());
     void endWriting(DocumentWriter*);
@@ -177,12 +176,12 @@
 
     bool shouldContinueForResponse() const;
 
-    RawPtrWillBeMember<LocalFrame> m_frame;
-    PersistentWillBeMember<ResourceFetcher> m_fetcher;
+    Member<LocalFrame> m_frame;
+    Member<ResourceFetcher> m_fetcher;
 
-    RefPtrWillBeMember<RawResource> m_mainResource;
+    Member<RawResource> m_mainResource;
 
-    RefPtrWillBeMember<DocumentWriter> m_writer;
+    Member<DocumentWriter> m_writer;
 
     // A reference to actual request used to create the data source.
     // The only part of this request that should change is the url, and
@@ -207,9 +206,9 @@
 
     double m_timeOfLastDataReceived;
 
-    PersistentWillBeMember<ApplicationCacheHost> m_applicationCacheHost;
+    Member<ApplicationCacheHost> m_applicationCacheHost;
 
-    RefPtrWillBeMember<ContentSecurityPolicy> m_contentSecurityPolicy;
+    Member<ContentSecurityPolicy> m_contentSecurityPolicy;
     ClientHintsPreferences m_clientHintsPreferences;
     InitialScrollState m_initialScrollState;
 
diff --git a/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp b/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
index 30bd000..193d962 100644
--- a/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
@@ -859,7 +859,7 @@
     FetchRequest fetchRequest(request, m_options.initiator, resourceLoaderOptions);
     if (m_options.crossOriginRequestPolicy == AllowCrossOriginRequests)
         fetchRequest.setOriginRestriction(FetchRequest::NoOriginRestriction);
-    RefPtrWillBeRawPtr<Resource> resource = RawResource::fetchSynchronously(fetchRequest, document().fetcher());
+    RawPtr<Resource> resource = RawResource::fetchSynchronously(fetchRequest, document().fetcher());
     ResourceResponse response = resource ? resource->response() : ResourceResponse();
     unsigned long identifier = resource ? resource->identifier() : std::numeric_limits<unsigned long>::max();
     ResourceError error = resource ? resource->resourceError() : ResourceError();
diff --git a/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.h b/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.h
index b313a14..4b4e85e 100644
--- a/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.h
+++ b/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.h
@@ -164,12 +164,12 @@
         // this re-implementation of ResourceOwner.
         RawResource* resource() const { return m_resource.get(); }
         void clearResource() { setResource(nullptr); }
-        void setResource(const PassRefPtrWillBeRawPtr<RawResource>& newResource)
+        void setResource(const RawPtr<RawResource>& newResource)
         {
             if (newResource == m_resource)
                 return;
 
-            if (PassRefPtrWillBeRawPtr<RawResource> oldResource = m_resource.release())
+            if (RawPtr<RawResource> oldResource = m_resource.release())
                 oldResource->removeClient(this);
 
             if (newResource) {
@@ -177,14 +177,14 @@
                 m_resource->addClient(this);
             }
         }
-        RefPtrWillBePersistent<RawResource> m_resource;
+        Persistent<RawResource> m_resource;
         // End of ResourceOwner re-implementation, see above.
 
         SecurityOrigin* getSecurityOrigin() const;
         Document& document() const;
 
         ThreadableLoaderClient* m_client;
-        RawPtrWillBeWeakPersistent<Document> m_document;
+        WeakPersistent<Document> m_document;
 
         const ThreadableLoaderOptions m_options;
         // Some items may be overridden by m_forceDoNotAllowStoredCredentials
diff --git a/third_party/WebKit/Source/core/loader/DocumentWriter.cpp b/third_party/WebKit/Source/core/loader/DocumentWriter.cpp
index f6f0067..c511b00 100644
--- a/third_party/WebKit/Source/core/loader/DocumentWriter.cpp
+++ b/third_party/WebKit/Source/core/loader/DocumentWriter.cpp
@@ -43,9 +43,9 @@
 
 namespace blink {
 
-PassRefPtrWillBeRawPtr<DocumentWriter> DocumentWriter::create(Document* document, ParserSynchronizationPolicy parsingPolicy, const AtomicString& mimeType, const AtomicString& encoding)
+RawPtr<DocumentWriter> DocumentWriter::create(Document* document, ParserSynchronizationPolicy parsingPolicy, const AtomicString& mimeType, const AtomicString& encoding)
 {
-    return adoptRefWillBeNoop(new DocumentWriter(document, parsingPolicy, mimeType, encoding));
+    return new DocumentWriter(document, parsingPolicy, mimeType, encoding);
 }
 
 DocumentWriter::DocumentWriter(Document* document, ParserSynchronizationPolicy parserSyncPolicy, const AtomicString& mimeType, const AtomicString& encoding)
@@ -100,7 +100,7 @@
     // http://bugs.webkit.org/show_bug.cgi?id=10854
     // The frame's last ref may be removed and it can be deleted by checkCompleted(),
     // so we'll add a protective refcount
-    RefPtrWillBeRawPtr<LocalFrame> protect(m_document->frame());
+    RawPtr<LocalFrame> protect(m_document->frame());
 
     if (!m_parser)
         return;
@@ -111,7 +111,7 @@
     }
 
     // finish() can result replacing DocumentLoader::m_writer.
-    RefPtrWillBeRawPtr<DocumentWriter> protectingThis(this);
+    RawPtr<DocumentWriter> protectingThis(this);
     m_parser->finish();
     m_parser = nullptr;
     m_document = nullptr;
diff --git a/third_party/WebKit/Source/core/loader/DocumentWriter.h b/third_party/WebKit/Source/core/loader/DocumentWriter.h
index 9d1eb03..29546b3e 100644
--- a/third_party/WebKit/Source/core/loader/DocumentWriter.h
+++ b/third_party/WebKit/Source/core/loader/DocumentWriter.h
@@ -40,10 +40,10 @@
 class Document;
 class DocumentParser;
 
-class DocumentWriter final : public RefCountedWillBeGarbageCollectedFinalized<DocumentWriter> {
+class DocumentWriter final : public GarbageCollectedFinalized<DocumentWriter> {
     WTF_MAKE_NONCOPYABLE(DocumentWriter);
 public:
-    static PassRefPtrWillBeRawPtr<DocumentWriter> create(Document*, ParserSynchronizationPolicy, const AtomicString& mimeType, const AtomicString& encoding);
+    static RawPtr<DocumentWriter> create(Document*, ParserSynchronizationPolicy, const AtomicString& mimeType, const AtomicString& encoding);
 
     ~DocumentWriter();
     DECLARE_TRACE();
@@ -63,10 +63,10 @@
 private:
     DocumentWriter(Document*, ParserSynchronizationPolicy, const AtomicString& mimeType, const AtomicString& encoding);
 
-    RawPtrWillBeMember<Document> m_document;
+    Member<Document> m_document;
     TextResourceDecoderBuilder m_decoderBuilder;
 
-    RefPtrWillBeMember<DocumentParser> m_parser;
+    Member<DocumentParser> m_parser;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/loader/EmptyClients.cpp b/third_party/WebKit/Source/core/loader/EmptyClients.cpp
index 3505f77d..decc957 100644
--- a/third_party/WebKit/Source/core/loader/EmptyClients.cpp
+++ b/third_party/WebKit/Source/core/loader/EmptyClients.cpp
@@ -45,7 +45,7 @@
 
 void fillWithEmptyClients(Page::PageClients& pageClients)
 {
-    DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<ChromeClient>, dummyChromeClient, (EmptyChromeClient::create()));
+    DEFINE_STATIC_LOCAL(Persistent<ChromeClient>, dummyChromeClient, (EmptyChromeClient::create()));
     pageClients.chromeClient = dummyChromeClient.get();
 
     DEFINE_STATIC_LOCAL(EmptyContextMenuClient, dummyContextMenuClient, ());
@@ -86,17 +86,17 @@
     return Platform::current()->currentThread()->getWebTaskRunner();
 }
 
-PassRefPtrWillBeRawPtr<PopupMenu> EmptyChromeClient::openPopupMenu(LocalFrame&, HTMLSelectElement&)
+RawPtr<PopupMenu> EmptyChromeClient::openPopupMenu(LocalFrame&, HTMLSelectElement&)
 {
-    return adoptRefWillBeNoop(new EmptyPopupMenu());
+    return new EmptyPopupMenu();
 }
 
-PassOwnPtrWillBeRawPtr<ColorChooser> EmptyChromeClient::openColorChooser(LocalFrame*, ColorChooserClient*, const Color&)
+RawPtr<ColorChooser> EmptyChromeClient::openColorChooser(LocalFrame*, ColorChooserClient*, const Color&)
 {
     return nullptr;
 }
 
-PassRefPtrWillBeRawPtr<DateTimeChooser> EmptyChromeClient::openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&)
+RawPtr<DateTimeChooser> EmptyChromeClient::openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&)
 {
     return nullptr;
 }
@@ -137,17 +137,17 @@
 {
 }
 
-PassRefPtrWillBeRawPtr<DocumentLoader> EmptyFrameLoaderClient::createDocumentLoader(LocalFrame* frame, const ResourceRequest& request, const SubstituteData& substituteData)
+RawPtr<DocumentLoader> EmptyFrameLoaderClient::createDocumentLoader(LocalFrame* frame, const ResourceRequest& request, const SubstituteData& substituteData)
 {
     return DocumentLoader::create(frame, request, substituteData);
 }
 
-PassRefPtrWillBeRawPtr<LocalFrame> EmptyFrameLoaderClient::createFrame(const FrameLoadRequest&, const AtomicString&, HTMLFrameOwnerElement*)
+RawPtr<LocalFrame> EmptyFrameLoaderClient::createFrame(const FrameLoadRequest&, const AtomicString&, HTMLFrameOwnerElement*)
 {
     return nullptr;
 }
 
-PassRefPtrWillBeRawPtr<Widget> EmptyFrameLoaderClient::createPlugin(HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool, DetachedPluginPolicy)
+RawPtr<Widget> EmptyFrameLoaderClient::createPlugin(HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool, DetachedPluginPolicy)
 {
     return nullptr;
 }
@@ -162,7 +162,7 @@
     return nullptr;
 }
 
-void EmptyTextCheckerClient::requestCheckingOfString(PassRefPtrWillBeRawPtr<TextCheckingRequest>)
+void EmptyTextCheckerClient::requestCheckingOfString(RawPtr<TextCheckingRequest>)
 {
 }
 
diff --git a/third_party/WebKit/Source/core/loader/EmptyClients.h b/third_party/WebKit/Source/core/loader/EmptyClients.h
index d802e722..2ac5d1fd 100644
--- a/third_party/WebKit/Source/core/loader/EmptyClients.h
+++ b/third_party/WebKit/Source/core/loader/EmptyClients.h
@@ -68,7 +68,7 @@
 
 class CORE_EXPORT EmptyChromeClient : public ChromeClient {
 public:
-    static PassOwnPtrWillBeRawPtr<EmptyChromeClient> create() { return adoptPtrWillBeNoop(new EmptyChromeClient); }
+    static RawPtr<EmptyChromeClient> create() { return new EmptyChromeClient; }
 
     ~EmptyChromeClient() override {}
     void chromeDestroyed() override {}
@@ -119,7 +119,7 @@
     bool openJavaScriptPromptDelegate(LocalFrame*, const String&, const String&, String&) override { return false; }
 
     bool hasOpenedPopup() const override { return false; }
-    PassRefPtrWillBeRawPtr<PopupMenu> openPopupMenu(LocalFrame&, HTMLSelectElement&) override;
+    RawPtr<PopupMenu> openPopupMenu(LocalFrame&, HTMLSelectElement&) override;
     DOMWindow* pagePopupWindowForTesting() const override { return nullptr; }
 
     void setStatusbarText(const String&) override {}
@@ -144,8 +144,8 @@
 
     void enumerateChosenDirectory(FileChooser*) override {}
 
-    PassOwnPtrWillBeRawPtr<ColorChooser> openColorChooser(LocalFrame*, ColorChooserClient*, const Color&) override;
-    PassRefPtrWillBeRawPtr<DateTimeChooser> openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&) override;
+    RawPtr<ColorChooser> openColorChooser(LocalFrame*, ColorChooserClient*, const Color&) override;
+    RawPtr<DateTimeChooser> openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&) override;
     void openTextDataListChooser(HTMLInputElement&) override;
 
     void openFileChooser(LocalFrame*, PassRefPtr<FileChooser>) override;
@@ -162,7 +162,7 @@
 
     void setTouchAction(TouchAction) override {}
 
-    void didAssociateFormControls(const WillBeHeapVector<RefPtrWillBeMember<Element>>&, LocalFrame*) override {}
+    void didAssociateFormControls(const HeapVector<Member<Element>>&, LocalFrame*) override {}
 
     void annotatedRegionsChanged() override {}
     String acceptLanguages() override;
@@ -175,9 +175,8 @@
 
 class CORE_EXPORT EmptyFrameLoaderClient : public FrameLoaderClient {
     WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(EmptyFrameLoaderClient);
 public:
-    static PassOwnPtrWillBeRawPtr<EmptyFrameLoaderClient> create() { return adoptPtrWillBeNoop(new EmptyFrameLoaderClient); }
+    static RawPtr<EmptyFrameLoaderClient> create() { return new EmptyFrameLoaderClient; }
     ~EmptyFrameLoaderClient() override {}
 
     bool hasWebView() const override { return true; } // mainly for assertions
@@ -227,7 +226,7 @@
 
     void loadURLExternally(const ResourceRequest&, NavigationPolicy, const String&, bool) override {}
 
-    PassRefPtrWillBeRawPtr<DocumentLoader> createDocumentLoader(LocalFrame*, const ResourceRequest&, const SubstituteData&) override;
+    RawPtr<DocumentLoader> createDocumentLoader(LocalFrame*, const ResourceRequest&, const SubstituteData&) override;
 
     String userAgent() override { return ""; }
 
@@ -243,8 +242,8 @@
     void didDisplayContentWithCertificateErrors(const KURL&, const CString&, const WebURL& mainResourceUrl, const CString& mainResourceSecurityInfo) override {}
     void didRunContentWithCertificateErrors(const KURL&, const CString&, const WebURL& mainResourceUrl, const CString& mainResourceSecurityInfo) override {}
     void selectorMatchChanged(const Vector<String>&, const Vector<String>&) override {}
-    PassRefPtrWillBeRawPtr<LocalFrame> createFrame(const FrameLoadRequest&, const AtomicString&, HTMLFrameOwnerElement*) override;
-    PassRefPtrWillBeRawPtr<Widget> createPlugin(HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool, DetachedPluginPolicy) override;
+    RawPtr<LocalFrame> createFrame(const FrameLoadRequest&, const AtomicString&, HTMLFrameOwnerElement*) override;
+    RawPtr<Widget> createPlugin(HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool, DetachedPluginPolicy) override;
     bool canCreatePluginWithoutRenderer(const String& mimeType) const override { return false; }
     PassOwnPtr<WebMediaPlayer> createWebMediaPlayer(HTMLMediaElement&, const WebURL&, WebMediaPlayerClient*) override;
     PassOwnPtr<WebMediaSession> createWebMediaSession() override;
@@ -283,7 +282,7 @@
 
     void checkSpellingOfString(const String&, int*, int*) override {}
     void checkGrammarOfString(const String&, Vector<GrammarDetail>&, int*, int*) override {}
-    void requestCheckingOfString(PassRefPtrWillBeRawPtr<TextCheckingRequest>) override;
+    void requestCheckingOfString(RawPtr<TextCheckingRequest>) override;
 };
 
 class EmptySpellCheckerClient : public SpellCheckerClient {
diff --git a/third_party/WebKit/Source/core/loader/FormSubmission.cpp b/third_party/WebKit/Source/core/loader/FormSubmission.cpp
index 538b97be..d7fd950 100644
--- a/third_party/WebKit/Source/core/loader/FormSubmission.cpp
+++ b/third_party/WebKit/Source/core/loader/FormSubmission.cpp
@@ -142,7 +142,7 @@
     m_acceptCharset = other.m_acceptCharset;
 }
 
-inline FormSubmission::FormSubmission(SubmitMethod method, const KURL& action, const AtomicString& target, const AtomicString& contentType, HTMLFormElement* form, PassRefPtr<EncodedFormData> data, const String& boundary, PassRefPtrWillBeRawPtr<Event> event)
+inline FormSubmission::FormSubmission(SubmitMethod method, const KURL& action, const AtomicString& target, const AtomicString& contentType, HTMLFormElement* form, PassRefPtr<EncodedFormData> data, const String& boundary, RawPtr<Event> event)
     : m_method(method)
     , m_action(action)
     , m_target(target)
@@ -160,7 +160,7 @@
 {
 }
 
-PassRefPtrWillBeRawPtr<FormSubmission> FormSubmission::create(HTMLFormElement* form, const Attributes& attributes, PassRefPtrWillBeRawPtr<Event> event)
+RawPtr<FormSubmission> FormSubmission::create(HTMLFormElement* form, const Attributes& attributes, RawPtr<Event> event)
 {
     ASSERT(form);
 
@@ -190,8 +190,8 @@
 
     if (copiedAttributes.method() == DialogMethod) {
         if (submitButton)
-            return adoptRefWillBeNoop(new FormSubmission(submitButton->resultForDialogSubmit()));
-        return adoptRefWillBeNoop(new FormSubmission(""));
+            return new FormSubmission(submitButton->resultForDialogSubmit());
+        return new FormSubmission("");
     }
 
     Document& document = form->document();
@@ -242,7 +242,7 @@
     formData->setIdentifier(generateFormDataIdentifier());
     formData->setContainsPasswordData(containsPasswordData);
     AtomicString targetOrBaseTarget = copiedAttributes.target().isEmpty() ? document.baseTarget() : copiedAttributes.target();
-    return adoptRefWillBeNoop(new FormSubmission(copiedAttributes.method(), actionURL, targetOrBaseTarget, encodingType, form, formData.release(), boundary, event));
+    return new FormSubmission(copiedAttributes.method(), actionURL, targetOrBaseTarget, encodingType, form, formData.release(), boundary, event);
 }
 
 DEFINE_TRACE(FormSubmission)
diff --git a/third_party/WebKit/Source/core/loader/FormSubmission.h b/third_party/WebKit/Source/core/loader/FormSubmission.h
index 5ed889d..71d9f6d 100644
--- a/third_party/WebKit/Source/core/loader/FormSubmission.h
+++ b/third_party/WebKit/Source/core/loader/FormSubmission.h
@@ -43,7 +43,7 @@
 struct FrameLoadRequest;
 class HTMLFormElement;
 
-class FormSubmission : public RefCountedWillBeGarbageCollectedFinalized<FormSubmission> {
+class FormSubmission : public GarbageCollectedFinalized<FormSubmission> {
 public:
     enum SubmitMethod { GetMethod, PostMethod, DialogMethod };
 
@@ -89,7 +89,7 @@
         String m_acceptCharset;
     };
 
-    static PassRefPtrWillBeRawPtr<FormSubmission> create(HTMLFormElement*, const Attributes&, PassRefPtrWillBeRawPtr<Event>);
+    static RawPtr<FormSubmission> create(HTMLFormElement*, const Attributes&, RawPtr<Event>);
     DECLARE_TRACE();
 
     void populateFrameLoadRequest(FrameLoadRequest&);
@@ -107,7 +107,7 @@
     const String& result() const { return m_result; }
 
 private:
-    FormSubmission(SubmitMethod, const KURL& action, const AtomicString& target, const AtomicString& contentType, HTMLFormElement*, PassRefPtr<EncodedFormData>, const String& boundary, PassRefPtrWillBeRawPtr<Event>);
+    FormSubmission(SubmitMethod, const KURL& action, const AtomicString& target, const AtomicString& contentType, HTMLFormElement*, PassRefPtr<EncodedFormData>, const String& boundary, RawPtr<Event>);
     // FormSubmission for DialogMethod
     FormSubmission(const String& result);
 
@@ -116,10 +116,10 @@
     KURL m_action;
     AtomicString m_target;
     AtomicString m_contentType;
-    RefPtrWillBeMember<HTMLFormElement> m_form;
+    Member<HTMLFormElement> m_form;
     RefPtr<EncodedFormData> m_formData;
     String m_boundary;
-    RefPtrWillBeMember<Event> m_event;
+    Member<Event> m_event;
     String m_result;
 };
 
diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContext.h b/third_party/WebKit/Source/core/loader/FrameFetchContext.h
index af271899..34812a3 100644
--- a/third_party/WebKit/Source/core/loader/FrameFetchContext.h
+++ b/third_party/WebKit/Source/core/loader/FrameFetchContext.h
@@ -127,8 +127,8 @@
     // FIXME: Oilpan: Ideally this should just be a traced Member but that will
     // currently leak because ComputedStyle and its data are not on the heap.
     // See crbug.com/383860 for details.
-    RawPtrWillBeWeakMember<Document> m_document;
-    RawPtrWillBeMember<DocumentLoader> m_documentLoader;
+    WeakMember<Document> m_document;
+    Member<DocumentLoader> m_documentLoader;
 
     bool m_imageFetched : 1;
 };
diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp b/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp
index f137770..1dc902b 100644
--- a/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp
+++ b/third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp
@@ -50,9 +50,9 @@
 
 class StubFrameLoaderClientWithParent final : public EmptyFrameLoaderClient {
 public:
-    static PassOwnPtrWillBeRawPtr<StubFrameLoaderClientWithParent> create(Frame* parent)
+    static RawPtr<StubFrameLoaderClientWithParent> create(Frame* parent)
     {
-        return adoptPtrWillBeNoop(new StubFrameLoaderClientWithParent(parent));
+        return new StubFrameLoaderClientWithParent(parent);
     }
 
     DEFINE_INLINE_VIRTUAL_TRACE()
@@ -69,7 +69,7 @@
     {
     }
 
-    RawPtrWillBeMember<Frame> m_parent;
+    Member<Frame> m_parent;
 };
 
 class MockFrameLoaderClient : public EmptyFrameLoaderClient {
@@ -122,15 +122,15 @@
     OwnPtr<DummyPageHolder> dummyPageHolder;
     // We don't use the DocumentLoader directly in any tests, but need to keep it around as long
     // as the ResourceFetcher and Document live due to indirect usage.
-    RefPtrWillBePersistent<DocumentLoader> documentLoader;
-    RefPtrWillBePersistent<Document> document;
+    Persistent<DocumentLoader> documentLoader;
+    Persistent<Document> document;
     Persistent<FrameFetchContext> fetchContext;
 
-    OwnPtrWillBePersistent<StubFrameLoaderClientWithParent> childClient;
-    RefPtrWillBePersistent<LocalFrame> childFrame;
-    RefPtrWillBePersistent<DocumentLoader> childDocumentLoader;
-    RefPtrWillBePersistent<Document> childDocument;
-    OwnPtrWillBePersistent<DummyFrameOwner> owner;
+    Persistent<StubFrameLoaderClientWithParent> childClient;
+    Persistent<LocalFrame> childFrame;
+    Persistent<DocumentLoader> childDocumentLoader;
+    Persistent<Document> childDocument;
+    Persistent<DummyFrameOwner> owner;
 };
 
 // This test class sets up a mock frame loader client that expects a
@@ -144,7 +144,7 @@
         mainResourceUrl = KURL(KURL(), "https://www.example.test");
         MockFrameLoaderClient* client = new MockFrameLoaderClient;
         EXPECT_CALL(*client, didDisplayContentWithCertificateErrors(url, securityInfo, WebURL(mainResourceUrl), CString()));
-        dummyPageHolder = DummyPageHolder::create(IntSize(500, 500), nullptr, adoptPtrWillBeNoop(client));
+        dummyPageHolder = DummyPageHolder::create(IntSize(500, 500), nullptr, client);
         dummyPageHolder->page().setDeviceScaleFactor(1.0);
         documentLoader = DocumentLoader::create(&dummyPageHolder->frame(), ResourceRequest(mainResourceUrl), SubstituteData());
         document = toHTMLDocument(&dummyPageHolder->document());
@@ -568,7 +568,7 @@
     response.setURL(url);
     response.setSecurityInfo(securityInfo);
     response.setHasMajorCertificateErrors(true);
-    RefPtrWillBeRawPtr<Resource> resource = Resource::create(resourceRequest, Resource::Image);
+    RawPtr<Resource> resource = Resource::create(resourceRequest, Resource::Image);
     resource->setResponse(response);
     fetchContext->dispatchDidLoadResourceFromMemoryCache(resource.get(), WebURLRequest::FrameTypeNone, WebURLRequest::RequestContextImage);
 }
diff --git a/third_party/WebKit/Source/core/loader/FrameLoadRequest.h b/third_party/WebKit/Source/core/loader/FrameLoadRequest.h
index aa923a8..53684f7 100644
--- a/third_party/WebKit/Source/core/loader/FrameLoadRequest.h
+++ b/third_party/WebKit/Source/core/loader/FrameLoadRequest.h
@@ -81,10 +81,10 @@
     void setClientRedirect(ClientRedirectPolicy clientRedirect) { m_clientRedirect = clientRedirect; }
 
     Event* triggeringEvent() const { return m_triggeringEvent.get(); }
-    void setTriggeringEvent(PassRefPtrWillBeRawPtr<Event> triggeringEvent) { m_triggeringEvent = triggeringEvent; }
+    void setTriggeringEvent(RawPtr<Event> triggeringEvent) { m_triggeringEvent = triggeringEvent; }
 
     HTMLFormElement* form() const { return m_form.get(); }
-    void setForm(PassRefPtrWillBeRawPtr<HTMLFormElement> form) { m_form = form; }
+    void setForm(RawPtr<HTMLFormElement> form) { m_form = form; }
 
     ShouldSendReferrer getShouldSendReferrer() const { return m_shouldSendReferrer; }
     void setShouldSendReferrer(ShouldSendReferrer shouldSendReferrer) { m_shouldSendReferrer = shouldSendReferrer; }
@@ -117,14 +117,14 @@
         m_resourceRequest.setFetchCredentialsMode(WebURLRequest::FetchCredentialsModeInclude);
         m_resourceRequest.setFetchRedirectMode(WebURLRequest::FetchRedirectModeManual);
     }
-    RefPtrWillBeMember<Document> m_originDocument;
+    Member<Document> m_originDocument;
     ResourceRequest m_resourceRequest;
     AtomicString m_frameName;
     SubstituteData m_substituteData;
     bool m_replacesCurrentItem;
     ClientRedirectPolicy m_clientRedirect;
-    RefPtrWillBeMember<Event> m_triggeringEvent;
-    RefPtrWillBeMember<HTMLFormElement> m_form;
+    Member<Event> m_triggeringEvent;
+    Member<HTMLFormElement> m_form;
     ShouldSendReferrer m_shouldSendReferrer;
     ShouldSetOpener m_shouldSetOpener;
     ContentSecurityPolicyDisposition m_shouldCheckMainWorldContentSecurityPolicy;
diff --git a/third_party/WebKit/Source/core/loader/FrameLoader.cpp b/third_party/WebKit/Source/core/loader/FrameLoader.cpp
index a169c6e..31009e70 100644
--- a/third_party/WebKit/Source/core/loader/FrameLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/FrameLoader.cpp
@@ -194,7 +194,7 @@
 void FrameLoader::init()
 {
     // init() may dispatch JS events, so protect a reference to m_frame.
-    RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
+    RawPtr<LocalFrame> protect(m_frame.get());
     ResourceRequest initialRequest(KURL(ParsedURLString, emptyString()));
     initialRequest.setRequestContext(WebURLRequest::RequestContextInternal);
     initialRequest.setFrameType(m_frame->isMainFrame() ? WebURLRequest::FrameTypeTopLevel : WebURLRequest::FrameTypeNested);
@@ -324,7 +324,7 @@
 
     // DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL can cause the DocumentLoader to get deref'ed and possible destroyed,
     // so protect it with a RefPtr.
-    RefPtrWillBeRawPtr<DocumentLoader> documentLoader(m_frame->document()->loader());
+    RawPtr<DocumentLoader> documentLoader(m_frame->document()->loader());
 
     UseCounter::count(*m_frame->document(), UseCounter::ReplaceDocumentViaJavaScriptURL);
 
@@ -361,7 +361,7 @@
 
 void FrameLoader::setHistoryItemStateForCommit(HistoryCommitType historyCommitType, HistoryNavigationType navigationType)
 {
-    RefPtrWillBeRawPtr<HistoryItem> oldItem = m_currentItem;
+    RawPtr<HistoryItem> oldItem = m_currentItem;
     if (historyCommitType == BackForwardCommit && m_provisionalItem)
         m_currentItem = m_provisionalItem.release();
     else
@@ -498,7 +498,7 @@
     // This can be called from the LocalFrame's destructor, in which case we shouldn't protect ourselves
     // because doing so will cause us to re-enter the destructor when protector goes out of scope.
     // Null-checking the FrameView indicates whether or not we're in the destructor.
-    RefPtrWillBeRawPtr<LocalFrame> protect(m_frame->view() ? m_frame.get() : nullptr);
+    RawPtr<LocalFrame> protect(m_frame->view() ? m_frame.get() : nullptr);
 
     m_progressTracker->finishedParsing();
 
@@ -586,7 +586,7 @@
 
 void FrameLoader::checkCompleted()
 {
-    RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
+    RawPtr<LocalFrame> protect(m_frame.get());
     if (!shouldComplete(m_frame->document()))
         return;
 
@@ -699,7 +699,7 @@
         client()->didStopLoading();
 }
 
-void FrameLoader::detachDocumentLoader(RefPtrWillBeMember<DocumentLoader>& loader)
+void FrameLoader::detachDocumentLoader(Member<DocumentLoader>& loader)
 {
     if (!loader)
         return;
@@ -892,7 +892,7 @@
 {
     ASSERT(m_frame->document());
 
-    RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
+    RawPtr<LocalFrame> protect(m_frame.get());
 
     if (m_inStopAllLoaders)
         return;
@@ -908,7 +908,7 @@
     if (!prepareRequestForThisFrame(request))
         return;
 
-    RefPtrWillBeRawPtr<Frame> targetFrame = request.form() ? nullptr : m_frame->findFrameForNavigation(AtomicString(request.frameName()), *m_frame);
+    RawPtr<Frame> targetFrame = request.form() ? nullptr : m_frame->findFrameForNavigation(AtomicString(request.frameName()), *m_frame);
 
     if (isBackForwardLoadType(frameLoadType)) {
         ASSERT(historyItem);
@@ -997,11 +997,11 @@
         return;
 
     // Stopping a document loader can blow away the frame from underneath.
-    RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
+    RawPtr<LocalFrame> protect(m_frame.get());
 
     m_inStopAllLoaders = true;
 
-    for (RefPtrWillBeRawPtr<Frame> child = m_frame->tree().firstChild(); child; child = child->tree().nextSibling()) {
+    for (RawPtr<Frame> child = m_frame->tree().firstChild(); child; child = child->tree().nextSibling()) {
         if (child->isLocalFrame())
             toLocalFrame(child.get())->loader().stopAllLoaders();
     }
@@ -1052,7 +1052,7 @@
 bool FrameLoader::prepareForCommit()
 {
     PluginScriptForbiddenScope forbidPluginDestructorScripting;
-    RefPtrWillBeRawPtr<DocumentLoader> pdl = m_provisionalDocumentLoader;
+    RawPtr<DocumentLoader> pdl = m_provisionalDocumentLoader;
 
     if (m_frame->document()) {
         unsigned nodeCount = 0;
@@ -1108,7 +1108,7 @@
 void FrameLoader::commitProvisionalLoad()
 {
     ASSERT(client()->hasWebView());
-    RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
+    RawPtr<LocalFrame> protect(m_frame.get());
 
     // Check if the destination page is allowed to access the previous page's timing information.
     if (m_frame->document()) {
@@ -1236,8 +1236,8 @@
 void FrameLoader::loadFailed(DocumentLoader* loader, const ResourceError& error)
 {
     // Retain because the stop may release the last reference to it.
-    RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
-    RefPtrWillBeRawPtr<DocumentLoader> protectDocumentLoader(loader);
+    RawPtr<LocalFrame> protect(m_frame.get());
+    RawPtr<DocumentLoader> protectDocumentLoader(loader);
 
     if (!error.isCancellation() && m_frame->owner()) {
         // FIXME: For now, fallback content doesn't work cross process.
@@ -1288,7 +1288,7 @@
         return;
 
     // Leaking scroll position to a cross-origin ancestor would permit the so-called "framesniffing" attack.
-    RefPtrWillBeRawPtr<Frame> boundaryFrame = url.hasFragmentIdentifier() ? m_frame->findUnsafeParentScrollPropagationBoundary() : 0;
+    RawPtr<Frame> boundaryFrame = url.hasFragmentIdentifier() ? m_frame->findUnsafeParentScrollPropagationBoundary() : 0;
 
     // FIXME: Handle RemoteFrames
     if (boundaryFrame && boundaryFrame->isLocalFrame())
@@ -1313,7 +1313,7 @@
         return true;
 
     // Store all references to each subframe in advance since beforeunload's event handler may modify frame
-    WillBeHeapVector<RefPtrWillBeMember<LocalFrame>> targetFrames;
+    HeapVector<Member<LocalFrame>> targetFrames;
     targetFrames.append(m_frame);
     for (Frame* child = m_frame->tree().firstChild(); child; child = child->tree().traverseNext(m_frame)) {
         // FIXME: There is not yet any way to dispatch events to out-of-process frames.
@@ -1384,7 +1384,7 @@
 {
     ASSERT(client()->hasWebView());
     // Lots of things in this function can detach the LocalFrame (stopAllLoaders, beforeunload handlers, etc.), so protect the frame.
-    RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
+    RawPtr<LocalFrame> protect(m_frame.get());
     if (m_frame->document()->pageDismissalEventBeingDispatched() != Document::NoDismissal)
         return;
 
@@ -1467,13 +1467,13 @@
     case XFrameOptionsAllowAll:
         return false;
     case XFrameOptionsConflict: {
-        RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, "Multiple 'X-Frame-Options' headers with conflicting values ('" + content + "') encountered when loading '" + url.elidedString() + "'. Falling back to 'DENY'.");
+        RawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, "Multiple 'X-Frame-Options' headers with conflicting values ('" + content + "') encountered when loading '" + url.elidedString() + "'. Falling back to 'DENY'.");
         consoleMessage->setRequestIdentifier(requestIdentifier);
         m_frame->document()->addConsoleMessage(consoleMessage.release());
         return true;
     }
     case XFrameOptionsInvalid: {
-        RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, "Invalid 'X-Frame-Options' header encountered when loading '" + url.elidedString() + "': '" + content + "' is not a recognized directive. The header will be ignored.");
+        RawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, "Invalid 'X-Frame-Options' header encountered when loading '" + url.elidedString() + "': '" + content + "' is not a recognized directive. The header will be ignored.");
         consoleMessage->setRequestIdentifier(requestIdentifier);
         m_frame->document()->addConsoleMessage(consoleMessage.release());
         return false;
diff --git a/third_party/WebKit/Source/core/loader/FrameLoader.h b/third_party/WebKit/Source/core/loader/FrameLoader.h
index 6f2b14be..4a6f0159 100644
--- a/third_party/WebKit/Source/core/loader/FrameLoader.h
+++ b/third_party/WebKit/Source/core/loader/FrameLoader.h
@@ -216,16 +216,16 @@
 
     void scheduleCheckCompleted();
 
-    void detachDocumentLoader(RefPtrWillBeMember<DocumentLoader>&);
+    void detachDocumentLoader(Member<DocumentLoader>&);
 
-    RawPtrWillBeMember<LocalFrame> m_frame;
+    Member<LocalFrame> m_frame;
 
     // FIXME: These should be OwnPtr<T> to reduce build times and simplify
     // header dependencies unless performance testing proves otherwise.
     // Some of these could be lazily created for memory savings on devices.
     mutable FrameLoaderStateMachine m_stateMachine;
 
-    OwnPtrWillBeMember<ProgressTracker> m_progressTracker;
+    Member<ProgressTracker> m_progressTracker;
 
     FrameLoadType m_loadType;
 
@@ -233,18 +233,18 @@
     // a new request is being loaded, the old document loader may still be referenced.
     // E.g. while a new request is in the "policy" state, the old document loader may
     // be consulted in particular as it makes sense to imply certain settings on the new loader.
-    RefPtrWillBeMember<DocumentLoader> m_documentLoader;
-    RefPtrWillBeMember<DocumentLoader> m_provisionalDocumentLoader;
+    Member<DocumentLoader> m_documentLoader;
+    Member<DocumentLoader> m_provisionalDocumentLoader;
 
-    RefPtrWillBeMember<HistoryItem> m_currentItem;
-    RefPtrWillBeMember<HistoryItem> m_provisionalItem;
+    Member<HistoryItem> m_currentItem;
+    Member<HistoryItem> m_provisionalItem;
 
-    class DeferredHistoryLoad : public NoBaseWillBeGarbageCollectedFinalized<DeferredHistoryLoad> {
+    class DeferredHistoryLoad : public GarbageCollectedFinalized<DeferredHistoryLoad> {
         WTF_MAKE_NONCOPYABLE(DeferredHistoryLoad);
     public:
-        static PassOwnPtrWillBeRawPtr<DeferredHistoryLoad> create(ResourceRequest request, HistoryItem* item, FrameLoadType loadType, HistoryLoadType historyLoadType)
+        static RawPtr<DeferredHistoryLoad> create(ResourceRequest request, HistoryItem* item, FrameLoadType loadType, HistoryLoadType historyLoadType)
         {
-            return adoptPtrWillBeNoop(new DeferredHistoryLoad(request, item, loadType, historyLoadType));
+            return new DeferredHistoryLoad(request, item, loadType, historyLoadType);
         }
 
         DeferredHistoryLoad(ResourceRequest request, HistoryItem* item, FrameLoadType loadType,
@@ -262,12 +262,12 @@
         }
 
         ResourceRequest m_request;
-        RefPtrWillBeMember<HistoryItem> m_item;
+        Member<HistoryItem> m_item;
         FrameLoadType m_loadType;
         HistoryLoadType m_historyLoadType;
     };
 
-    OwnPtrWillBeMember<DeferredHistoryLoad> m_deferredHistoryLoad;
+    Member<DeferredHistoryLoad> m_deferredHistoryLoad;
 
     bool m_inStopAllLoaders;
 
diff --git a/third_party/WebKit/Source/core/loader/FrameLoaderClient.h b/third_party/WebKit/Source/core/loader/FrameLoaderClient.h
index fb99716..961a3c0 100644
--- a/third_party/WebKit/Source/core/loader/FrameLoaderClient.h
+++ b/third_party/WebKit/Source/core/loader/FrameLoaderClient.h
@@ -144,7 +144,7 @@
     // that match any element on the frame.
     virtual void selectorMatchChanged(const Vector<String>& addedSelectors, const Vector<String>& removedSelectors) = 0;
 
-    virtual PassRefPtrWillBeRawPtr<DocumentLoader> createDocumentLoader(LocalFrame*, const ResourceRequest&, const SubstituteData&) = 0;
+    virtual RawPtr<DocumentLoader> createDocumentLoader(LocalFrame*, const ResourceRequest&, const SubstituteData&) = 0;
 
     virtual String userAgent() = 0;
 
@@ -152,14 +152,14 @@
 
     virtual void transitionToCommittedForNewPage() = 0;
 
-    virtual PassRefPtrWillBeRawPtr<LocalFrame> createFrame(const FrameLoadRequest&, const AtomicString& name, HTMLFrameOwnerElement*) = 0;
+    virtual RawPtr<LocalFrame> createFrame(const FrameLoadRequest&, const AtomicString& name, HTMLFrameOwnerElement*) = 0;
     // Whether or not plugin creation should fail if the HTMLPlugInElement isn't in the DOM after plugin initialization.
     enum DetachedPluginPolicy {
         FailOnDetachedPlugin,
         AllowDetachedPlugin,
     };
     virtual bool canCreatePluginWithoutRenderer(const String& mimeType) const = 0;
-    virtual PassRefPtrWillBeRawPtr<Widget> createPlugin(HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually, DetachedPluginPolicy) = 0;
+    virtual RawPtr<Widget> createPlugin(HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually, DetachedPluginPolicy) = 0;
 
     virtual PassOwnPtr<WebMediaPlayer> createWebMediaPlayer(HTMLMediaElement&, const WebURL&, WebMediaPlayerClient*) = 0;
 
@@ -256,7 +256,7 @@
     };
     virtual void suddenTerminationDisablerChanged(bool present, SuddenTerminationDisablerType) { }
 
-    virtual PassOwnPtrWillBeRawPtr<LinkResource> createServiceWorkerLinkResource(HTMLLinkElement*) { return nullptr; }
+    virtual RawPtr<LinkResource> createServiceWorkerLinkResource(HTMLLinkElement*) { return nullptr; }
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/loader/HistoryItem.h b/third_party/WebKit/Source/core/loader/HistoryItem.h
index 20f7491..9cee0cf 100644
--- a/third_party/WebKit/Source/core/loader/HistoryItem.h
+++ b/third_party/WebKit/Source/core/loader/HistoryItem.h
@@ -45,11 +45,11 @@
 class KURL;
 class ResourceRequest;
 
-class CORE_EXPORT HistoryItem final : public RefCountedWillBeGarbageCollectedFinalized<HistoryItem> {
+class CORE_EXPORT HistoryItem final : public GarbageCollectedFinalized<HistoryItem> {
 public:
-    static PassRefPtrWillBeRawPtr<HistoryItem> create()
+    static RawPtr<HistoryItem> create()
     {
-        return adoptRefWillBeNoop(new HistoryItem);
+        return new HistoryItem;
     }
     ~HistoryItem();
 
@@ -112,7 +112,7 @@
     IntPoint m_scrollPoint;
     float m_pageScaleFactor;
     Vector<String> m_documentStateVector;
-    RefPtrWillBeMember<DocumentState> m_documentState;
+    Member<DocumentState> m_documentState;
 
     // If two HistoryItems have the same item sequence number, then they are
     // clones of one another. Traversing history from one such HistoryItem to
diff --git a/third_party/WebKit/Source/core/loader/HttpEquiv.cpp b/third_party/WebKit/Source/core/loader/HttpEquiv.cpp
index 26447d3b..b6e2084 100644
--- a/third_party/WebKit/Source/core/loader/HttpEquiv.cpp
+++ b/third_party/WebKit/Source/core/loader/HttpEquiv.cpp
@@ -96,7 +96,7 @@
     if (!frame->loader().shouldInterruptLoadForXFrameOptions(content, document.url(), requestIdentifier))
         return;
 
-    RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(SecurityMessageSource, ErrorMessageLevel,
+    RawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(SecurityMessageSource, ErrorMessageLevel,
         "Refused to display '" + document.url().elidedString() + "' in a frame because it set 'X-Frame-Options' to '" + content + "'.");
     consoleMessage->setRequestIdentifier(requestIdentifier);
     document.addConsoleMessage(consoleMessage.release());
diff --git a/third_party/WebKit/Source/core/loader/ImageLoader.cpp b/third_party/WebKit/Source/core/loader/ImageLoader.cpp
index 53248b8..5c9ed3d 100644
--- a/third_party/WebKit/Source/core/loader/ImageLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/ImageLoader.cpp
@@ -54,13 +54,13 @@
 
 static ImageEventSender& loadEventSender()
 {
-    DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<ImageEventSender>, sender, (ImageEventSender::create(EventTypeNames::load)));
+    DEFINE_STATIC_LOCAL(Persistent<ImageEventSender>, sender, (ImageEventSender::create(EventTypeNames::load)));
     return *sender;
 }
 
 static ImageEventSender& errorEventSender()
 {
-    DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<ImageEventSender>, sender, (ImageEventSender::create(EventTypeNames::error)));
+    DEFINE_STATIC_LOCAL(Persistent<ImageEventSender>, sender, (ImageEventSender::create(EventTypeNames::error)));
     return *sender;
 }
 
@@ -137,7 +137,7 @@
     }
 
 private:
-    RawPtrWillBeWeakPersistent<ImageLoader> m_loader;
+    WeakPersistent<ImageLoader> m_loader;
     BypassMainWorldBehavior m_shouldBypassMainWorldCSP;
     UpdateFromElementBehavior m_updateBehavior;
     RefPtr<ScriptState> m_scriptState;
@@ -298,8 +298,8 @@
 
     AtomicString imageSourceURL = m_element->imageSourceURL();
     KURL url = imageSourceToKURL(imageSourceURL);
-    RefPtrWillBeRawPtr<ImageResource> newImage = nullptr;
-    RefPtrWillBeRawPtr<Element> protectElement(m_element.get());
+    RawPtr<ImageResource> newImage = nullptr;
+    RawPtr<Element> protectElement(m_element.get());
     if (!url.isNull()) {
         // Unlike raw <img>, we block mixed content inside of <picture> or <img srcset>.
         ResourceLoaderOptions resourceLoaderOptions = ResourceFetcher::defaultResourceOptions();
@@ -347,7 +347,7 @@
         noImageResourceToLoad();
     }
 
-    RefPtrWillBeRawPtr<ImageResource> oldImage = m_image.get();
+    RawPtr<ImageResource> oldImage = m_image.get();
     if (updateBehavior == UpdateSizeChanged && m_element->layoutObject() && m_element->layoutObject()->isImage() && newImage == oldImage) {
         toLayoutImage(m_element->layoutObject())->intrinsicSizeChanged();
     } else {
diff --git a/third_party/WebKit/Source/core/loader/ImageLoader.h b/third_party/WebKit/Source/core/loader/ImageLoader.h
index abb6414f..1e48abf 100644
--- a/third_party/WebKit/Source/core/loader/ImageLoader.h
+++ b/third_party/WebKit/Source/core/loader/ImageLoader.h
@@ -44,9 +44,8 @@
 template<typename T> class EventSender;
 using ImageEventSender = EventSender<ImageLoader>;
 
-class CORE_EXPORT ImageLoader : public NoBaseWillBeGarbageCollectedFinalized<ImageLoader>, public ResourceClient, public ImageResourceObserver {
-    WILL_BE_USING_PRE_FINALIZER(ImageLoader, dispose);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(ImageLoader);
+class CORE_EXPORT ImageLoader : public GarbageCollectedFinalized<ImageLoader>, public ResourceClient, public ImageResourceObserver {
+    USING_PRE_FINALIZER(ImageLoader, dispose);
 public:
     explicit ImageLoader(Element*);
     ~ImageLoader() override;
@@ -144,12 +143,12 @@
     // have already been finalized in the current lazy sweeping.
     void dispose();
 
-    RawPtrWillBeMember<Element> m_element;
-    RefPtrWillBeMember<ImageResource> m_image;
+    Member<Element> m_element;
+    Member<ImageResource> m_image;
     // FIXME: Oilpan: We might be able to remove this Persistent hack when
     // ImageResourceClient is traceable.
     GC_PLUGIN_IGNORE("http://crbug.com/383741")
-    RefPtrWillBePersistent<Element> m_keepAlive;
+    Persistent<Element> m_keepAlive;
 
     Timer<ImageLoader> m_derefElementTimer;
     AtomicString m_failedLoadURL;
diff --git a/third_party/WebKit/Source/core/loader/LinkLoader.cpp b/third_party/WebKit/Source/core/loader/LinkLoader.cpp
index 3489d87..4cf2886 100644
--- a/third_party/WebKit/Source/core/loader/LinkLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/LinkLoader.cpp
@@ -263,12 +263,12 @@
     }
 
     if (!media.isEmpty()) {
-        RefPtrWillBeRawPtr<MediaValues> mediaValues = MediaValues::createDynamicIfFrameExists(document.frame());
+        RawPtr<MediaValues> mediaValues = MediaValues::createDynamicIfFrameExists(document.frame());
         if (viewportDescription)
             mediaValues->overrideViewportDimensions(viewportDescription->maxWidth.getFloatValue(), viewportDescription->maxHeight.getFloatValue());
 
         // Preload only if media matches
-        RefPtrWillBeRawPtr<MediaQuerySet> mediaQueries = MediaQuerySet::create(media);
+        RawPtr<MediaQuerySet> mediaQueries = MediaQuerySet::create(media);
         MediaQueryEvaluator evaluator(*mediaValues);
         if (!evaluator.eval(mediaQueries.get()))
             return nullptr;
diff --git a/third_party/WebKit/Source/core/loader/LinkLoader.h b/third_party/WebKit/Source/core/loader/LinkLoader.h
index 3529536..428587e 100644
--- a/third_party/WebKit/Source/core/loader/LinkLoader.h
+++ b/third_party/WebKit/Source/core/loader/LinkLoader.h
@@ -52,12 +52,12 @@
 struct ViewportDescriptionWrapper;
 
 // The LinkLoader can load link rel types icon, dns-prefetch, subresource, prefetch and prerender.
-class CORE_EXPORT LinkLoader final : public NoBaseWillBeGarbageCollectedFinalized<LinkLoader>, public ResourceOwner<Resource, ResourceClient>, public PrerenderClient {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkLoader);
+class CORE_EXPORT LinkLoader final : public GarbageCollectedFinalized<LinkLoader>, public ResourceOwner<Resource, ResourceClient>, public PrerenderClient {
+    USING_GARBAGE_COLLECTED_MIXIN(LinkLoader);
 public:
-    static PassOwnPtrWillBeRawPtr<LinkLoader> create(LinkLoaderClient* client)
+    static RawPtr<LinkLoader> create(LinkLoaderClient* client)
     {
-        return adoptPtrWillBeNoop(new LinkLoader(client));
+        return new LinkLoader(client);
     }
     ~LinkLoader() override;
 
@@ -88,13 +88,13 @@
     void linkLoadingErrorTimerFired(Timer<LinkLoader>*);
     void createLinkPreloadResourceClient(Resource*);
 
-    RawPtrWillBeMember<LinkLoaderClient> m_client;
+    Member<LinkLoaderClient> m_client;
 
     Timer<LinkLoader> m_linkLoadTimer;
     Timer<LinkLoader> m_linkLoadingErrorTimer;
 
-    OwnPtrWillBeMember<PrerenderHandle> m_prerender;
-    OwnPtrWillBeMember<LinkPreloadResourceClient> m_linkPreloadResourceClient;
+    Member<PrerenderHandle> m_prerender;
+    Member<LinkPreloadResourceClient> m_linkPreloadResourceClient;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/loader/LinkLoaderClient.h b/third_party/WebKit/Source/core/loader/LinkLoaderClient.h
index 11213d8f..9991061 100644
--- a/third_party/WebKit/Source/core/loader/LinkLoaderClient.h
+++ b/third_party/WebKit/Source/core/loader/LinkLoaderClient.h
@@ -35,7 +35,7 @@
 
 namespace blink {
 
-class CORE_EXPORT LinkLoaderClient : public WillBeGarbageCollectedMixin {
+class CORE_EXPORT LinkLoaderClient : public GarbageCollectedMixin {
 public:
     virtual ~LinkLoaderClient() { }
     DEFINE_INLINE_VIRTUAL_TRACE() { }
diff --git a/third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp b/third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp
index c5b8395..db4b432 100644
--- a/third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp
+++ b/third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp
@@ -21,12 +21,12 @@
 
 namespace blink {
 
-class MockLinkLoaderClient final : public NoBaseWillBeGarbageCollectedFinalized<MockLinkLoaderClient>, public LinkLoaderClient {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(MockLinkLoaderClient);
+class MockLinkLoaderClient final : public GarbageCollectedFinalized<MockLinkLoaderClient>, public LinkLoaderClient {
+    USING_GARBAGE_COLLECTED_MIXIN(MockLinkLoaderClient);
 public:
-    static PassOwnPtrWillBeRawPtr<MockLinkLoaderClient> create(bool shouldLoad)
+    static RawPtr<MockLinkLoaderClient> create(bool shouldLoad)
     {
-        return adoptPtrWillBeNoop(new MockLinkLoaderClient(shouldLoad));
+        return new MockLinkLoaderClient(shouldLoad);
     }
 
     DEFINE_INLINE_VIRTUAL_TRACE() { LinkLoaderClient::trace(visitor); }
@@ -138,8 +138,8 @@
     for (const auto& testCase : cases) {
         OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSize(500, 500));
         dummyPageHolder->frame().settings()->setScriptEnabled(true);
-        OwnPtrWillBePersistent<MockLinkLoaderClient> loaderClient = MockLinkLoaderClient::create(testCase.linkLoaderShouldLoadValue);
-        OwnPtrWillBeRawPtr<LinkLoader> loader = LinkLoader::create(loaderClient.get());
+        Persistent<MockLinkLoaderClient> loaderClient = MockLinkLoaderClient::create(testCase.linkLoaderShouldLoadValue);
+        RawPtr<LinkLoader> loader = LinkLoader::create(loaderClient.get());
         KURL hrefURL = KURL(KURL(), testCase.href);
         URLTestHelpers::registerMockedErrorURLLoad(hrefURL);
         loader->loadLink(LinkRelAttribute("preload"),
@@ -151,7 +151,7 @@
             dummyPageHolder->document(),
             NetworkHintsMock());
         ASSERT(dummyPageHolder->document().fetcher());
-        WillBeHeapListHashSet<RefPtrWillBeMember<Resource>>* preloads = dummyPageHolder->document().fetcher()->preloads();
+        HeapListHashSet<Member<Resource>>* preloads = dummyPageHolder->document().fetcher()->preloads();
         if (testCase.expectingLoad) {
             if (!preloads)
                 fprintf(stderr, "Unexpected result %s %s %s\n", testCase.href, testCase.as, testCase.type);
@@ -195,8 +195,8 @@
     for (const auto& testCase : cases) {
         OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSize(500, 500));
         dummyPageHolder->document().settings()->setDNSPrefetchingEnabled(true);
-        OwnPtrWillBePersistent<MockLinkLoaderClient> loaderClient = MockLinkLoaderClient::create(testCase.shouldLoad);
-        OwnPtrWillBeRawPtr<LinkLoader> loader = LinkLoader::create(loaderClient.get());
+        Persistent<MockLinkLoaderClient> loaderClient = MockLinkLoaderClient::create(testCase.shouldLoad);
+        RawPtr<LinkLoader> loader = LinkLoader::create(loaderClient.get());
         KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.com")), testCase.href);
         NetworkHintsMock networkHints;
         loader->loadLink(LinkRelAttribute("dns-prefetch"),
@@ -230,8 +230,8 @@
     // Test the cases with a single header
     for (const auto& testCase : cases) {
         OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSize(500, 500));
-        OwnPtrWillBePersistent<MockLinkLoaderClient> loaderClient = MockLinkLoaderClient::create(testCase.shouldLoad);
-        OwnPtrWillBeRawPtr<LinkLoader> loader = LinkLoader::create(loaderClient.get());
+        Persistent<MockLinkLoaderClient> loaderClient = MockLinkLoaderClient::create(testCase.shouldLoad);
+        RawPtr<LinkLoader> loader = LinkLoader::create(loaderClient.get());
         KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.com")), testCase.href);
         NetworkHintsMock networkHints;
         loader->loadLink(LinkRelAttribute("preconnect"),
diff --git a/third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h b/third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h
index c9029c4..523160ff 100644
--- a/third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h
+++ b/third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h
@@ -18,7 +18,7 @@
 
 class LinkLoader;
 
-class LinkPreloadResourceClient : public NoBaseWillBeGarbageCollectedFinalized<LinkPreloadResourceClient> {
+class LinkPreloadResourceClient : public GarbageCollectedFinalized<LinkPreloadResourceClient> {
 public:
     virtual ~LinkPreloadResourceClient() { }
 
@@ -38,16 +38,15 @@
     }
 
 private:
-    RawPtrWillBeMember<LinkLoader> m_loader;
+    Member<LinkLoader> m_loader;
 };
 
 class LinkPreloadScriptResourceClient: public LinkPreloadResourceClient, public ResourceOwner<ScriptResource, ScriptResourceClient> {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadScriptResourceClient);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(LinkPreloadScriptResourceClient);
+    USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadScriptResourceClient);
 public:
-    static PassOwnPtrWillBeRawPtr<LinkPreloadScriptResourceClient> create(LinkLoader* loader, PassRefPtrWillBeRawPtr<ScriptResource> resource)
+    static RawPtr<LinkPreloadScriptResourceClient> create(LinkLoader* loader, RawPtr<ScriptResource> resource)
     {
-        return adoptPtrWillBeNoop(new LinkPreloadScriptResourceClient(loader, resource));
+        return new LinkPreloadScriptResourceClient(loader, resource);
     }
 
     virtual String debugName() const { return "LinkPreloadScript"; }
@@ -68,7 +67,7 @@
     }
 
 private:
-    LinkPreloadScriptResourceClient(LinkLoader* loader, PassRefPtrWillBeRawPtr<ScriptResource> resource)
+    LinkPreloadScriptResourceClient(LinkLoader* loader, RawPtr<ScriptResource> resource)
         : LinkPreloadResourceClient(loader)
     {
         setResource(resource);
@@ -76,12 +75,11 @@
 };
 
 class LinkPreloadStyleResourceClient: public LinkPreloadResourceClient, public ResourceOwner<CSSStyleSheetResource, StyleSheetResourceClient> {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadStyleResourceClient);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(LinkPreloadStyleResourceClient);
+    USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadStyleResourceClient);
 public:
-    static PassOwnPtrWillBeRawPtr<LinkPreloadStyleResourceClient> create(LinkLoader* loader, PassRefPtrWillBeRawPtr<CSSStyleSheetResource> resource)
+    static RawPtr<LinkPreloadStyleResourceClient> create(LinkLoader* loader, RawPtr<CSSStyleSheetResource> resource)
     {
-        return adoptPtrWillBeNoop(new LinkPreloadStyleResourceClient(loader, resource));
+        return new LinkPreloadStyleResourceClient(loader, resource);
     }
 
     virtual String debugName() const { return "LinkPreloadStyle"; }
@@ -102,7 +100,7 @@
     }
 
 private:
-    LinkPreloadStyleResourceClient(LinkLoader* loader, PassRefPtrWillBeRawPtr<CSSStyleSheetResource> resource)
+    LinkPreloadStyleResourceClient(LinkLoader* loader, RawPtr<CSSStyleSheetResource> resource)
         : LinkPreloadResourceClient(loader)
     {
         setResource(resource);
@@ -110,12 +108,11 @@
 };
 
 class LinkPreloadImageResourceClient: public LinkPreloadResourceClient, public ResourceOwner<ImageResource> {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadImageResourceClient);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(LinkPreloadImageResourceClient);
+    USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadImageResourceClient);
 public:
-    static PassOwnPtrWillBeRawPtr<LinkPreloadImageResourceClient> create(LinkLoader* loader, PassRefPtrWillBeRawPtr<ImageResource> resource)
+    static RawPtr<LinkPreloadImageResourceClient> create(LinkLoader* loader, RawPtr<ImageResource> resource)
     {
-        return adoptPtrWillBeNoop(new LinkPreloadImageResourceClient(loader, resource));
+        return new LinkPreloadImageResourceClient(loader, resource);
     }
 
     virtual String debugName() const { return "LinkPreloadImage"; }
@@ -136,7 +133,7 @@
     }
 
 private:
-    LinkPreloadImageResourceClient(LinkLoader* loader, PassRefPtrWillBeRawPtr<ImageResource> resource)
+    LinkPreloadImageResourceClient(LinkLoader* loader, RawPtr<ImageResource> resource)
         : LinkPreloadResourceClient(loader)
     {
         setResource(resource);
@@ -144,12 +141,11 @@
 };
 
 class LinkPreloadFontResourceClient: public LinkPreloadResourceClient, public ResourceOwner<FontResource, FontResourceClient> {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadFontResourceClient);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(LinkPreloadFontResourceClient);
+    USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadFontResourceClient);
 public:
-    static PassOwnPtrWillBeRawPtr<LinkPreloadFontResourceClient> create(LinkLoader* loader, PassRefPtrWillBeRawPtr<FontResource> resource)
+    static RawPtr<LinkPreloadFontResourceClient> create(LinkLoader* loader, RawPtr<FontResource> resource)
     {
-        return adoptPtrWillBeNoop(new LinkPreloadFontResourceClient(loader, resource));
+        return new LinkPreloadFontResourceClient(loader, resource);
     }
 
     virtual String debugName() const { return "LinkPreloadFont"; }
@@ -170,7 +166,7 @@
     }
 
 private:
-    LinkPreloadFontResourceClient(LinkLoader* loader, PassRefPtrWillBeRawPtr<FontResource> resource)
+    LinkPreloadFontResourceClient(LinkLoader* loader, RawPtr<FontResource> resource)
         : LinkPreloadResourceClient(loader)
     {
         setResource(resource);
@@ -178,12 +174,11 @@
 };
 
 class LinkPreloadRawResourceClient: public LinkPreloadResourceClient, public ResourceOwner<RawResource, RawResourceClient> {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadRawResourceClient);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(LinkPreloadRawResourceClient);
+    USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadRawResourceClient);
 public:
-    static PassOwnPtrWillBeRawPtr<LinkPreloadRawResourceClient> create(LinkLoader* loader, PassRefPtrWillBeRawPtr<RawResource> resource)
+    static RawPtr<LinkPreloadRawResourceClient> create(LinkLoader* loader, RawPtr<RawResource> resource)
     {
-        return adoptPtrWillBeNoop(new LinkPreloadRawResourceClient(loader, resource));
+        return new LinkPreloadRawResourceClient(loader, resource);
     }
 
     virtual String debugName() const { return "LinkPreloadRaw"; }
@@ -204,7 +199,7 @@
     }
 
 private:
-    LinkPreloadRawResourceClient(LinkLoader* loader, PassRefPtrWillBeRawPtr<RawResource> resource)
+    LinkPreloadRawResourceClient(LinkLoader* loader, RawPtr<RawResource> resource)
         : LinkPreloadResourceClient(loader)
     {
         setResource(resource);
diff --git a/third_party/WebKit/Source/core/loader/MixedContentCheckerTest.cpp b/third_party/WebKit/Source/core/loader/MixedContentCheckerTest.cpp
index f9977828..a2538ae 100644
--- a/third_party/WebKit/Source/core/loader/MixedContentCheckerTest.cpp
+++ b/third_party/WebKit/Source/core/loader/MixedContentCheckerTest.cpp
@@ -86,7 +86,7 @@
 TEST(MixedContentCheckerTest, HandleCertificateError)
 {
     MockFrameLoaderClient* client = new MockFrameLoaderClient;
-    OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSize(1, 1), nullptr, adoptPtrWillBeNoop(client));
+    OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSize(1, 1), nullptr, client);
 
     KURL mainResourceUrl(KURL(), "https://example.test");
     KURL displayedUrl(KURL(), "https://example-displayed.test");
diff --git a/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp b/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
index b59a1dad..da2d285 100644
--- a/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
+++ b/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
@@ -56,8 +56,8 @@
 
 unsigned NavigationDisablerForBeforeUnload::s_navigationDisableCount = 0;
 
-class ScheduledNavigation : public NoBaseWillBeGarbageCollectedFinalized<ScheduledNavigation> {
-    WTF_MAKE_NONCOPYABLE(ScheduledNavigation); USING_FAST_MALLOC_WILL_BE_REMOVED(ScheduledNavigation);
+class ScheduledNavigation : public GarbageCollectedFinalized<ScheduledNavigation> {
+    WTF_MAKE_NONCOPYABLE(ScheduledNavigation);
 public:
     ScheduledNavigation(double delay, Document* originDocument, bool replacesCurrentItem, bool isLocationChange)
         : m_delay(delay)
@@ -96,7 +96,7 @@
 
 private:
     double m_delay;
-    RefPtrWillBeMember<Document> m_originDocument;
+    Member<Document> m_originDocument;
     bool m_replacesCurrentItem;
     bool m_isLocationChange;
     bool m_wasUserGesture;
@@ -132,9 +132,9 @@
 
 class ScheduledRedirect final : public ScheduledURLNavigation {
 public:
-    static PassOwnPtrWillBeRawPtr<ScheduledRedirect> create(double delay, Document* originDocument, const String& url, bool replacesCurrentItem)
+    static RawPtr<ScheduledRedirect> create(double delay, Document* originDocument, const String& url, bool replacesCurrentItem)
     {
-        return adoptPtrWillBeNoop(new ScheduledRedirect(delay, originDocument, url, replacesCurrentItem));
+        return new ScheduledRedirect(delay, originDocument, url, replacesCurrentItem);
     }
 
     bool shouldStartTimer(LocalFrame* frame) override { return frame->document()->loadEventFinished(); }
@@ -160,9 +160,9 @@
 
 class ScheduledLocationChange final : public ScheduledURLNavigation {
 public:
-    static PassOwnPtrWillBeRawPtr<ScheduledLocationChange> create(Document* originDocument, const String& url, bool replacesCurrentItem)
+    static RawPtr<ScheduledLocationChange> create(Document* originDocument, const String& url, bool replacesCurrentItem)
     {
-        return adoptPtrWillBeNoop(new ScheduledLocationChange(originDocument, url, replacesCurrentItem));
+        return new ScheduledLocationChange(originDocument, url, replacesCurrentItem);
     }
 
 private:
@@ -172,9 +172,9 @@
 
 class ScheduledReload final : public ScheduledNavigation {
 public:
-    static PassOwnPtrWillBeRawPtr<ScheduledReload> create()
+    static RawPtr<ScheduledReload> create()
     {
-        return adoptPtrWillBeNoop(new ScheduledReload);
+        return new ScheduledReload;
     }
 
     void fire(LocalFrame* frame) override
@@ -198,9 +198,9 @@
 
 class ScheduledPageBlock final : public ScheduledURLNavigation {
 public:
-    static PassOwnPtrWillBeRawPtr<ScheduledPageBlock> create(Document* originDocument, const String& url)
+    static RawPtr<ScheduledPageBlock> create(Document* originDocument, const String& url)
     {
-        return adoptPtrWillBeNoop(new ScheduledPageBlock(originDocument, url));
+        return new ScheduledPageBlock(originDocument, url);
     }
 
     void fire(LocalFrame* frame) override
@@ -222,9 +222,9 @@
 
 class ScheduledFormSubmission final : public ScheduledNavigation {
 public:
-    static PassOwnPtrWillBeRawPtr<ScheduledFormSubmission> create(Document* document, PassRefPtrWillBeRawPtr<FormSubmission> submission, bool replacesCurrentItem)
+    static RawPtr<ScheduledFormSubmission> create(Document* document, RawPtr<FormSubmission> submission, bool replacesCurrentItem)
     {
-        return adoptPtrWillBeNoop(new ScheduledFormSubmission(document, submission, replacesCurrentItem));
+        return new ScheduledFormSubmission(document, submission, replacesCurrentItem);
     }
 
     void fire(LocalFrame* frame) override
@@ -245,14 +245,14 @@
     }
 
 private:
-    ScheduledFormSubmission(Document* document, PassRefPtrWillBeRawPtr<FormSubmission> submission, bool replacesCurrentItem)
+    ScheduledFormSubmission(Document* document, RawPtr<FormSubmission> submission, bool replacesCurrentItem)
         : ScheduledNavigation(0, document, replacesCurrentItem, true)
         , m_submission(submission)
     {
         ASSERT(m_submission->form());
     }
 
-    RefPtrWillBeMember<FormSubmission> m_submission;
+    Member<FormSubmission> m_submission;
 };
 
 NavigationScheduler::NavigationScheduler(LocalFrame* frame)
@@ -350,7 +350,7 @@
     schedule(ScheduledPageBlock::create(originDocument, url));
 }
 
-void NavigationScheduler::scheduleFormSubmission(Document* document, PassRefPtrWillBeRawPtr<FormSubmission> submission)
+void NavigationScheduler::scheduleFormSubmission(Document* document, RawPtr<FormSubmission> submission)
 {
     ASSERT(m_frame->page());
     schedule(ScheduledFormSubmission::create(document, submission, mustReplaceCurrentItem(m_frame)));
@@ -376,14 +376,14 @@
         return;
     }
 
-    RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
+    RawPtr<LocalFrame> protect(m_frame.get());
 
-    OwnPtrWillBeRawPtr<ScheduledNavigation> redirect(m_redirect.release());
+    RawPtr<ScheduledNavigation> redirect(m_redirect.release());
     redirect->fire(m_frame);
     InspectorInstrumentation::frameClearedScheduledNavigation(m_frame);
 }
 
-void NavigationScheduler::schedule(PassOwnPtrWillBeRawPtr<ScheduledNavigation> redirect)
+void NavigationScheduler::schedule(RawPtr<ScheduledNavigation> redirect)
 {
     ASSERT(m_frame->page());
 
@@ -392,7 +392,7 @@
     // and/or confuse the JS when it shortly thereafter tries to schedule a location change. Let the JS have its way.
     // FIXME: This check seems out of place.
     if (!m_frame->loader().stateMachine()->committedFirstRealDocumentLoad() && m_frame->loader().provisionalDocumentLoader()) {
-        RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
+        RawPtr<LocalFrame> protect(m_frame.get());
         m_frame->loader().stopAllLoaders();
         if (!m_frame->host())
             return;
diff --git a/third_party/WebKit/Source/core/loader/NavigationScheduler.h b/third_party/WebKit/Source/core/loader/NavigationScheduler.h
index 01d0fddb..fce30b1 100644
--- a/third_party/WebKit/Source/core/loader/NavigationScheduler.h
+++ b/third_party/WebKit/Source/core/loader/NavigationScheduler.h
@@ -49,13 +49,12 @@
 class LocalFrame;
 class ScheduledNavigation;
 
-class CORE_EXPORT NavigationScheduler final : public NoBaseWillBeGarbageCollectedFinalized<NavigationScheduler> {
+class CORE_EXPORT NavigationScheduler final : public GarbageCollectedFinalized<NavigationScheduler> {
     WTF_MAKE_NONCOPYABLE(NavigationScheduler);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(NavigationScheduler);
 public:
-    static PassOwnPtrWillBeRawPtr<NavigationScheduler> create(LocalFrame* frame)
+    static RawPtr<NavigationScheduler> create(LocalFrame* frame)
     {
-        return adoptPtrWillBeNoop(new NavigationScheduler(frame));
+        return new NavigationScheduler(frame);
     }
 
     ~NavigationScheduler();
@@ -66,7 +65,7 @@
     void scheduleRedirect(double delay, const String& url);
     void scheduleLocationChange(Document*, const String& url, bool replacesCurrentItem = true);
     void schedulePageBlock(Document*);
-    void scheduleFormSubmission(Document*, PassRefPtrWillBeRawPtr<FormSubmission>);
+    void scheduleFormSubmission(Document*, RawPtr<FormSubmission>);
     void scheduleReload();
 
     void startTimer();
@@ -81,13 +80,13 @@
     bool shouldScheduleNavigation(const String& url) const;
 
     void navigateTask();
-    void schedule(PassOwnPtrWillBeRawPtr<ScheduledNavigation>);
+    void schedule(RawPtr<ScheduledNavigation>);
 
     static bool mustReplaceCurrentItem(LocalFrame* targetFrame);
 
-    RawPtrWillBeMember<LocalFrame> m_frame;
+    Member<LocalFrame> m_frame;
     OwnPtr<CancellableTaskFactory> m_navigateTaskFactory;
-    OwnPtrWillBeMember<ScheduledNavigation> m_redirect;
+    Member<ScheduledNavigation> m_redirect;
 };
 
 class NavigationDisablerForBeforeUnload {
diff --git a/third_party/WebKit/Source/core/loader/PingLoader.cpp b/third_party/WebKit/Source/core/loader/PingLoader.cpp
index bea5c41..1a6d4ac 100644
--- a/third_party/WebKit/Source/core/loader/PingLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/PingLoader.cpp
@@ -126,7 +126,7 @@
         return;
 
     // Leak the ping loader, since it will kill itself as soon as it receives a response.
-    RefPtrWillBeRawPtr<PingLoader> loader = adoptRefWillBeNoop(new PingLoader(frame, request, initiatorInfo, credentialsAllowed));
+    RawPtr<PingLoader> loader = new PingLoader(frame, request, initiatorInfo, credentialsAllowed);
     loader->ref();
 }
 
diff --git a/third_party/WebKit/Source/core/loader/PingLoader.h b/third_party/WebKit/Source/core/loader/PingLoader.h
index 261f4cd..3350441 100644
--- a/third_party/WebKit/Source/core/loader/PingLoader.h
+++ b/third_party/WebKit/Source/core/loader/PingLoader.h
@@ -57,10 +57,9 @@
 // The ping loader is used by audit pings, beacon transmissions and image loads
 // during page unloading.
 //
-class CORE_EXPORT PingLoader : public RefCountedWillBeRefCountedGarbageCollected<PingLoader>, public LocalFrameLifecycleObserver, private WebURLLoaderClient {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(PingLoader);
+class CORE_EXPORT PingLoader : public RefCountedGarbageCollected<PingLoader>, public LocalFrameLifecycleObserver, private WebURLLoaderClient {
+    USING_GARBAGE_COLLECTED_MIXIN(PingLoader);
     WTF_MAKE_NONCOPYABLE(PingLoader);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(PingLoader);
 public:
     ~PingLoader() override;
 
diff --git a/third_party/WebKit/Source/core/loader/PrerenderHandle.cpp b/third_party/WebKit/Source/core/loader/PrerenderHandle.cpp
index a08c27cc..67a99df 100644
--- a/third_party/WebKit/Source/core/loader/PrerenderHandle.cpp
+++ b/third_party/WebKit/Source/core/loader/PrerenderHandle.cpp
@@ -41,7 +41,7 @@
 namespace blink {
 
 // static
-PassOwnPtrWillBeRawPtr<PrerenderHandle> PrerenderHandle::create(Document& document, PrerenderClient* client, const KURL& url, const unsigned prerenderRelTypes)
+RawPtr<PrerenderHandle> PrerenderHandle::create(Document& document, PrerenderClient* client, const KURL& url, const unsigned prerenderRelTypes)
 {
     // Prerenders are unlike requests in most ways (for instance, they pass down fragments, and they don't return data),
     // but they do have referrers.
@@ -55,7 +55,7 @@
         prerendererClient->willAddPrerender(prerender.get());
     prerender->add();
 
-    return adoptPtrWillBeNoop(new PrerenderHandle(document, prerender.release()));
+    return new PrerenderHandle(document, prerender.release());
 }
 
 PrerenderHandle::PrerenderHandle(Document& document, PassRefPtr<Prerender> prerender)
diff --git a/third_party/WebKit/Source/core/loader/PrerenderHandle.h b/third_party/WebKit/Source/core/loader/PrerenderHandle.h
index 9a8bb9a..a3455ae 100644
--- a/third_party/WebKit/Source/core/loader/PrerenderHandle.h
+++ b/third_party/WebKit/Source/core/loader/PrerenderHandle.h
@@ -44,12 +44,11 @@
 class Prerender;
 class PrerenderClient;
 
-class PrerenderHandle final : public NoBaseWillBeGarbageCollectedFinalized<PrerenderHandle>, public DocumentLifecycleObserver {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(PrerenderHandle);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(PrerenderHandle);
+class PrerenderHandle final : public GarbageCollectedFinalized<PrerenderHandle>, public DocumentLifecycleObserver {
+    USING_GARBAGE_COLLECTED_MIXIN(PrerenderHandle);
     WTF_MAKE_NONCOPYABLE(PrerenderHandle);
 public:
-    static PassOwnPtrWillBeRawPtr<PrerenderHandle> create(Document&, PrerenderClient*, const KURL&, unsigned prerenderRelTypes);
+    static RawPtr<PrerenderHandle> create(Document&, PrerenderClient*, const KURL&, unsigned prerenderRelTypes);
 
     virtual ~PrerenderHandle();
 
diff --git a/third_party/WebKit/Source/core/loader/PrerendererClient.cpp b/third_party/WebKit/Source/core/loader/PrerendererClient.cpp
index 13bb957..d674f770 100644
--- a/third_party/WebKit/Source/core/loader/PrerendererClient.cpp
+++ b/third_party/WebKit/Source/core/loader/PrerendererClient.cpp
@@ -44,13 +44,13 @@
 // static
 PrerendererClient* PrerendererClient::from(Page* page)
 {
-    PrerendererClient* supplement = static_cast<PrerendererClient*>(WillBeHeapSupplement<Page>::from(page, supplementName()));
+    PrerendererClient* supplement = static_cast<PrerendererClient*>(Supplement<Page>::from(page, supplementName()));
     return supplement;
 }
 
 void providePrerendererClientTo(Page& page, PrerendererClient* client)
 {
-    PrerendererClient::provideTo(page, PrerendererClient::supplementName(), adoptPtrWillBeNoop(client));
+    PrerendererClient::provideTo(page, PrerendererClient::supplementName(), client);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/loader/PrerendererClient.h b/third_party/WebKit/Source/core/loader/PrerendererClient.h
index 10bc6cf..72c1f205 100644
--- a/third_party/WebKit/Source/core/loader/PrerendererClient.h
+++ b/third_party/WebKit/Source/core/loader/PrerendererClient.h
@@ -41,7 +41,7 @@
 class Page;
 class Prerender;
 
-class CORE_EXPORT PrerendererClient : public WillBeHeapSupplement<Page> {
+class CORE_EXPORT PrerendererClient : public Supplement<Page> {
 public:
     virtual void willAddPrerender(Prerender*) = 0;
 
diff --git a/third_party/WebKit/Source/core/loader/ProgressTracker.cpp b/third_party/WebKit/Source/core/loader/ProgressTracker.cpp
index 90f41db8..7b88633 100644
--- a/third_party/WebKit/Source/core/loader/ProgressTracker.cpp
+++ b/third_party/WebKit/Source/core/loader/ProgressTracker.cpp
@@ -63,9 +63,9 @@
     long long estimatedLength;
 };
 
-PassOwnPtrWillBeRawPtr<ProgressTracker> ProgressTracker::create(LocalFrame* frame)
+RawPtr<ProgressTracker> ProgressTracker::create(LocalFrame* frame)
 {
-    return adoptPtrWillBeNoop(new ProgressTracker(frame));
+    return new ProgressTracker(frame);
 }
 
 ProgressTracker::ProgressTracker(LocalFrame* frame)
diff --git a/third_party/WebKit/Source/core/loader/ProgressTracker.h b/third_party/WebKit/Source/core/loader/ProgressTracker.h
index 8c48fd4..3c740069 100644
--- a/third_party/WebKit/Source/core/loader/ProgressTracker.h
+++ b/third_party/WebKit/Source/core/loader/ProgressTracker.h
@@ -43,10 +43,10 @@
 // FIXME: This is only used on Android. Android is the only Chrome
 // browser which shows a progress bar during loading.
 // We should find a better way for Android to get this data and remove this!
-class CORE_EXPORT ProgressTracker final : public NoBaseWillBeGarbageCollectedFinalized<ProgressTracker> {
-    WTF_MAKE_NONCOPYABLE(ProgressTracker); USING_FAST_MALLOC_WILL_BE_REMOVED(ProgressTracker);
+class CORE_EXPORT ProgressTracker final : public GarbageCollectedFinalized<ProgressTracker> {
+    WTF_MAKE_NONCOPYABLE(ProgressTracker);
 public:
-    static PassOwnPtrWillBeRawPtr<ProgressTracker> create(LocalFrame*);
+    static RawPtr<ProgressTracker> create(LocalFrame*);
 
     ~ProgressTracker();
     DECLARE_TRACE();
@@ -73,7 +73,7 @@
     void sendFinalProgress();
     void reset();
 
-    RawPtrWillBeMember<LocalFrame> m_frame;
+    Member<LocalFrame> m_frame;
     unsigned long m_mainResourceIdentifier;
     long long m_totalPageAndResourceBytesToLoad;
     long long m_totalBytesReceived;
diff --git a/third_party/WebKit/Source/core/loader/SinkDocument.cpp b/third_party/WebKit/Source/core/loader/SinkDocument.cpp
index 7ecda83..22136e9 100644
--- a/third_party/WebKit/Source/core/loader/SinkDocument.cpp
+++ b/third_party/WebKit/Source/core/loader/SinkDocument.cpp
@@ -31,9 +31,9 @@
 
 class SinkDocumentParser : public RawDataDocumentParser {
 public:
-    static PassRefPtrWillBeRawPtr<SinkDocumentParser> create(SinkDocument* document)
+    static RawPtr<SinkDocumentParser> create(SinkDocument* document)
     {
-        return adoptRefWillBeNoop(new SinkDocumentParser(document));
+        return new SinkDocumentParser(document);
     }
 
 private:
@@ -53,7 +53,7 @@
     lockCompatibilityMode();
 }
 
-PassRefPtrWillBeRawPtr<DocumentParser> SinkDocument::createParser()
+RawPtr<DocumentParser> SinkDocument::createParser()
 {
     return SinkDocumentParser::create(this);
 }
diff --git a/third_party/WebKit/Source/core/loader/SinkDocument.h b/third_party/WebKit/Source/core/loader/SinkDocument.h
index 8a2ceb4..517d137 100644
--- a/third_party/WebKit/Source/core/loader/SinkDocument.h
+++ b/third_party/WebKit/Source/core/loader/SinkDocument.h
@@ -32,15 +32,15 @@
 
 class SinkDocument final : public HTMLDocument {
 public:
-    static PassRefPtrWillBeRawPtr<SinkDocument> create(const DocumentInit& initializer = DocumentInit())
+    static RawPtr<SinkDocument> create(const DocumentInit& initializer = DocumentInit())
     {
-        return adoptRefWillBeNoop(new SinkDocument(initializer));
+        return new SinkDocument(initializer);
     }
 
 private:
     SinkDocument(const DocumentInit&);
 
-    PassRefPtrWillBeRawPtr<DocumentParser> createParser() override;
+    RawPtr<DocumentParser> createParser() override;
 };
 
 
diff --git a/third_party/WebKit/Source/core/loader/TextTrackLoader.h b/third_party/WebKit/Source/core/loader/TextTrackLoader.h
index 20ef4bc..32aaa71 100644
--- a/third_party/WebKit/Source/core/loader/TextTrackLoader.h
+++ b/third_party/WebKit/Source/core/loader/TextTrackLoader.h
@@ -48,13 +48,12 @@
     virtual void newRegionsAvailable(TextTrackLoader*) = 0;
 };
 
-class TextTrackLoader final : public NoBaseWillBeGarbageCollectedFinalized<TextTrackLoader>, public ResourceOwner<RawResource>, private VTTParserClient {
-    USING_FAST_MALLOC_WILL_BE_REMOVED(TextTrackLoader);
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(TextTrackLoader);
+class TextTrackLoader final : public GarbageCollectedFinalized<TextTrackLoader>, public ResourceOwner<RawResource>, private VTTParserClient {
+    USING_GARBAGE_COLLECTED_MIXIN(TextTrackLoader);
 public:
-    static PassOwnPtrWillBeRawPtr<TextTrackLoader> create(TextTrackLoaderClient& client, Document& document)
+    static RawPtr<TextTrackLoader> create(TextTrackLoaderClient& client, Document& document)
     {
-        return adoptPtrWillBeNoop(new TextTrackLoader(client, document));
+        return new TextTrackLoader(client, document);
     }
     ~TextTrackLoader() override;
 
@@ -88,9 +87,9 @@
     Document& document() const { return *m_document; }
 
     TextTrackLoaderClient& m_client;
-    PersistentWillBeMember<VTTParser> m_cueParser;
+    Member<VTTParser> m_cueParser;
     // FIXME: Remove this pointer and get the Document from m_client.
-    RawPtrWillBeMember<Document> m_document;
+    Member<Document> m_document;
     Timer<TextTrackLoader> m_cueLoadTimer;
     State m_state;
     bool m_newCuesAvailable;
diff --git a/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.h b/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.h
index bbbdb57..244e5f3 100644
--- a/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.h
+++ b/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.h
@@ -197,7 +197,7 @@
 
     void didReceiveResourceTiming(const ResourceTimingInfo&) override;
 
-    RefPtrWillBePersistent<WorkerGlobalScope> m_workerGlobalScope;
+    Persistent<WorkerGlobalScope> m_workerGlobalScope;
     RefPtr<ThreadableLoaderClientWrapper> m_workerClientWrapper;
 
     MainThreadBridgeBase* m_bridge;
diff --git a/third_party/WebKit/Source/core/loader/appcache/ApplicationCache.h b/third_party/WebKit/Source/core/loader/appcache/ApplicationCache.h
index ec4438e..dc74da4 100644
--- a/third_party/WebKit/Source/core/loader/appcache/ApplicationCache.h
+++ b/third_party/WebKit/Source/core/loader/appcache/ApplicationCache.h
@@ -42,7 +42,7 @@
 class ApplicationCache final : public RefCountedGarbageCollectedEventTargetWithInlineData<ApplicationCache>, public DOMWindowProperty {
     DEFINE_WRAPPERTYPEINFO();
     REFCOUNTED_GARBAGE_COLLECTED_EVENT_TARGET(ApplicationCache);
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ApplicationCache);
+    USING_GARBAGE_COLLECTED_MIXIN(ApplicationCache);
 public:
     static ApplicationCache* create(LocalFrame* frame)
     {
diff --git a/third_party/WebKit/Source/core/loader/appcache/ApplicationCacheHost.cpp b/third_party/WebKit/Source/core/loader/appcache/ApplicationCacheHost.cpp
index 2c571c5..81adb3e 100644
--- a/third_party/WebKit/Source/core/loader/appcache/ApplicationCacheHost.cpp
+++ b/third_party/WebKit/Source/core/loader/appcache/ApplicationCacheHost.cpp
@@ -227,7 +227,7 @@
 
 void ApplicationCacheHost::stopDeferringEvents()
 {
-    RefPtrWillBeRawPtr<DocumentLoader> protect(documentLoader());
+    RawPtr<DocumentLoader> protect(documentLoader());
     for (unsigned i = 0; i < m_deferredEvents.size(); ++i) {
         const DeferredEvent& deferred = m_deferredEvents[i];
         dispatchDOMEvent(deferred.eventID, deferred.progressTotal, deferred.progressDone, deferred.errorReason, deferred.errorURL, deferred.errorStatus, deferred.errorMessage);
@@ -244,7 +244,7 @@
     const AtomicString& eventType = ApplicationCache::toEventType(id);
     if (eventType.isEmpty() || !m_domApplicationCache->getExecutionContext())
         return;
-    RefPtrWillBeRawPtr<Event> event = nullptr;
+    RawPtr<Event> event = nullptr;
     if (id == PROGRESS_EVENT)
         event = ProgressEvent::create(eventType, true, progressDone, progressTotal);
     else if (id == ERROR_EVENT)
diff --git a/third_party/WebKit/Source/core/loader/appcache/ApplicationCacheHost.h b/third_party/WebKit/Source/core/loader/appcache/ApplicationCacheHost.h
index 131e7b3..524e86ee 100644
--- a/third_party/WebKit/Source/core/loader/appcache/ApplicationCacheHost.h
+++ b/third_party/WebKit/Source/core/loader/appcache/ApplicationCacheHost.h
@@ -169,7 +169,7 @@
         };
 
         WeakMember<ApplicationCache> m_domApplicationCache;
-        RawPtrWillBeMember<DocumentLoader> m_documentLoader;
+        Member<DocumentLoader> m_documentLoader;
         bool m_defersEvents; // Events are deferred until after document onload.
         Vector<DeferredEvent> m_deferredEvents;
 
diff --git a/third_party/WebKit/Source/core/origin_trials/DocumentOriginTrialContext.h b/third_party/WebKit/Source/core/origin_trials/DocumentOriginTrialContext.h
index d407ae8..a45587c 100644
--- a/third_party/WebKit/Source/core/origin_trials/DocumentOriginTrialContext.h
+++ b/third_party/WebKit/Source/core/origin_trials/DocumentOriginTrialContext.h
@@ -33,7 +33,7 @@
     friend class DocumentOriginTrialContextTest;
 
 private:
-    RawPtrWillBeMember<Document> m_parent;
+    Member<Document> m_parent;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/origin_trials/DocumentOriginTrialContextTest.cpp b/third_party/WebKit/Source/core/origin_trials/DocumentOriginTrialContextTest.cpp
index 1c6b231d..5f00329d2 100644
--- a/third_party/WebKit/Source/core/origin_trials/DocumentOriginTrialContextTest.cpp
+++ b/third_party/WebKit/Source/core/origin_trials/DocumentOriginTrialContextTest.cpp
@@ -76,7 +76,7 @@
         HTMLElement* head = document().head();
         ASSERT_TRUE(head);
 
-        RefPtrWillBeRawPtr<HTMLMetaElement> meta = HTMLMetaElement::create(document());
+        RawPtr<HTMLMetaElement> meta = HTMLMetaElement::create(document());
         meta->setAttribute(HTMLNames::http_equivAttr, OriginTrialContext::kTrialHeaderName);
         meta->setAttribute(HTMLNames::contentAttr, token);
         head->appendChild(meta.release());
diff --git a/third_party/WebKit/Source/core/origin_trials/OriginTrialContext.h b/third_party/WebKit/Source/core/origin_trials/OriginTrialContext.h
index 6b9f0d7..d8e0629 100644
--- a/third_party/WebKit/Source/core/origin_trials/OriginTrialContext.h
+++ b/third_party/WebKit/Source/core/origin_trials/OriginTrialContext.h
@@ -34,7 +34,7 @@
 // which supports origin trials.
 //
 // TODO(chasej): Link to documentation, or provide more detail on keys, .etc
-class CORE_EXPORT OriginTrialContext : public NoBaseWillBeGarbageCollectedFinalized<OriginTrialContext> {
+class CORE_EXPORT OriginTrialContext : public GarbageCollectedFinalized<OriginTrialContext> {
 public:
     static const char kTrialHeaderName[];
     virtual ~OriginTrialContext() = default;
diff --git a/third_party/WebKit/Source/core/origin_trials/OriginTrialContextTest.cpp b/third_party/WebKit/Source/core/origin_trials/OriginTrialContextTest.cpp
index c7ebd46..843129e 100644
--- a/third_party/WebKit/Source/core/origin_trials/OriginTrialContextTest.cpp
+++ b/third_party/WebKit/Source/core/origin_trials/OriginTrialContextTest.cpp
@@ -72,8 +72,8 @@
 // token strings to use for tests.
 class TestOriginTrialContext : public OriginTrialContext {
 public:
-    explicit TestOriginTrialContext()
-        : m_parent(adoptRefWillBeNoop(new NullExecutionContext()))
+    TestOriginTrialContext()
+        : m_parent(new NullExecutionContext())
     {
     }
 
@@ -110,7 +110,7 @@
     }
 
 private:
-    RefPtrWillBeMember<NullExecutionContext> m_parent;
+    Member<NullExecutionContext> m_parent;
     Vector<String> m_tokens;
 };
 
@@ -121,7 +121,7 @@
     OriginTrialContextTest()
         : m_frameworkWasEnabled(RuntimeEnabledFeatures::experimentalFrameworkEnabled())
         , m_tokenValidator(adoptPtr(new MockTokenValidator()))
-        , m_originTrialContext(adoptPtrWillBeNoop(new TestOriginTrialContext))
+        , m_originTrialContext(new TestOriginTrialContext)
     {
         RuntimeEnabledFeatures::setExperimentalFrameworkEnabled(true);
     }
@@ -148,7 +148,7 @@
 private:
     const bool m_frameworkWasEnabled;
     OwnPtr<MockTokenValidator> m_tokenValidator;
-    OwnPtrWillBePersistent<TestOriginTrialContext> m_originTrialContext;
+    Persistent<TestOriginTrialContext> m_originTrialContext;
 };
 
 TEST_F(OriginTrialContextTest, EnabledNonExistingFeature)
diff --git a/third_party/WebKit/Source/core/page/FocusController.cpp b/third_party/WebKit/Source/core/page/FocusController.cpp
index c50abf7..e7db0e88b 100644
--- a/third_party/WebKit/Source/core/page/FocusController.cpp
+++ b/third_party/WebKit/Source/core/page/FocusController.cpp
@@ -95,9 +95,9 @@
 private:
     ScopedFocusNavigation(TreeScope&, const Element*);
     ScopedFocusNavigation(HTMLSlotElement&, const Element*);
-    RawPtrWillBeMember<ContainerNode> m_rootNode;
-    RawPtrWillBeMember<HTMLSlotElement> m_rootSlot;
-    RawPtrWillBeMember<Element> m_current;
+    Member<ContainerNode> m_rootNode;
+    Member<HTMLSlotElement> m_rootSlot;
+    Member<Element> m_current;
     bool m_slotFallbackTraversal;
 };
 
@@ -168,7 +168,7 @@
 {
     if (m_rootSlot) {
         if (!m_slotFallbackTraversal) {
-            WillBeHeapVector<RefPtrWillBeMember<Node>> assignedNodes = m_rootSlot->getAssignedNodes();
+            HeapVector<Member<Node>> assignedNodes = m_rootSlot->getAssignedNodes();
             for (auto assignedNode : assignedNodes) {
                 if (assignedNode->isElementNode()) {
                     m_current = toElement(assignedNode);
@@ -194,7 +194,7 @@
 {
     if (m_rootSlot) {
         if (!m_slotFallbackTraversal) {
-            WillBeHeapVector<RefPtrWillBeMember<Node>> assignedNodes = m_rootSlot->getAssignedNodes();
+            HeapVector<Member<Node>> assignedNodes = m_rootSlot->getAssignedNodes();
             for (auto assignedNode = assignedNodes.rbegin(); assignedNode != assignedNodes.rend(); ++assignedNode) {
                 if ((*assignedNode)->isElementNode()) {
                     m_current = ElementTraversal::lastWithinOrSelf(*toElement(*assignedNode));
@@ -923,7 +923,7 @@
 
     document->updateLayoutIgnorePendingStylesheets();
     ScopedFocusNavigation scope = current ? ScopedFocusNavigation::createFor(*current) : ScopedFocusNavigation::createForDocument(*document);
-    RefPtrWillBeRawPtr<Element> element = findFocusableElementAcrossFocusScopes(type, scope);
+    RawPtr<Element> element = findFocusableElementAcrossFocusScopes(type, scope);
     if (!element) {
         // If there's a RemoteFrame on the ancestor chain, we need to continue
         // searching for focusable elements there.
diff --git a/third_party/WebKit/Source/core/page/PagePopupController.idl b/third_party/WebKit/Source/core/page/PagePopupController.idl
index f32cc46..392fd54 100644
--- a/third_party/WebKit/Source/core/page/PagePopupController.idl
+++ b/third_party/WebKit/Source/core/page/PagePopupController.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    WillBeGarbageCollected,
+    GarbageCollected,
     NoInterfaceObject,
     RuntimeEnabled=PagePopup
 ] interface PagePopupController {
diff --git a/third_party/WebKit/Source/core/page/PagePopupSupplement.cpp b/third_party/WebKit/Source/core/page/PagePopupSupplement.cpp
index 7dc61071..2922699 100644
--- a/third_party/WebKit/Source/core/page/PagePopupSupplement.cpp
+++ b/third_party/WebKit/Source/core/page/PagePopupSupplement.cpp
@@ -67,7 +67,7 @@
 DEFINE_TRACE(PagePopupSupplement)
 {
     visitor->trace(m_controller);
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/page/PagePopupSupplement.h b/third_party/WebKit/Source/core/page/PagePopupSupplement.h
index 7a6b286..91f0e87 100644
--- a/third_party/WebKit/Source/core/page/PagePopupSupplement.h
+++ b/third_party/WebKit/Source/core/page/PagePopupSupplement.h
@@ -42,7 +42,7 @@
 class PagePopupClient;
 class PagePopupController;
 
-class CORE_EXPORT PagePopupSupplement final : public GarbageCollected<PagePopupSupplement>, public HeapSupplement<LocalFrame> {
+class CORE_EXPORT PagePopupSupplement final : public GarbageCollected<PagePopupSupplement>, public Supplement<LocalFrame> {
     USING_GARBAGE_COLLECTED_MIXIN(PagePopupSupplement);
 public:
     static PagePopupController* pagePopupController(LocalFrame&);
diff --git a/third_party/WebKit/Source/core/page/scrolling/ScrollState.cpp b/third_party/WebKit/Source/core/page/scrolling/ScrollState.cpp
index 411640a..67f114f 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollState.cpp
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollState.cpp
@@ -41,13 +41,13 @@
     scrollStateData->is_direct_manipulation = init.isDirectManipulation();
     scrollStateData->delta_granularity = init.deltaGranularity();
     ScrollState* scrollState = new ScrollState(scrollStateData.release());
-    return adoptRefWillBeNoop(scrollState);
+    return scrollState;
 }
 
 RawPtr<ScrollState> ScrollState::create(PassOwnPtr<ScrollStateData> data)
 {
     ScrollState* scrollState = new ScrollState(data);
-    return adoptRefWillBeNoop(scrollState);
+    return scrollState;
 }
 
 ScrollState::ScrollState(PassOwnPtr<ScrollStateData> data)
diff --git a/third_party/WebKit/Source/core/page/scrolling/ScrollState.idl b/third_party/WebKit/Source/core/page/scrolling/ScrollState.idl
index 7e5ff50..ae275fe 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollState.idl
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollState.idl
@@ -6,7 +6,7 @@
 
 [
   Constructor(optional ScrollStateInit scrollStateInit),
-  WillBeGarbageCollected,
+  GarbageCollected,
   RuntimeEnabled = ScrollCustomization,
 ] interface ScrollState
 {
diff --git a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
index 7a5b74d..1f2020e8 100644
--- a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
+++ b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
@@ -134,14 +134,14 @@
 bool FilterEffectBuilder::build(Element* element, const FilterOperations& operations, float zoom, const FloatSize* referenceBoxSize, const SkPaint* fillPaint, const SkPaint* strokePaint)
 {
     // Create a parent filter for shorthand filters. These have already been scaled by the CSS code for page zoom, so scale is 1.0 here.
-    RefPtrWillBeRawPtr<Filter> parentFilter = Filter::create(1.0f);
-    RefPtrWillBeRawPtr<FilterEffect> previousEffect = parentFilter->getSourceGraphic();
+    RawPtr<Filter> parentFilter = Filter::create(1.0f);
+    RawPtr<FilterEffect> previousEffect = parentFilter->getSourceGraphic();
     for (size_t i = 0; i < operations.operations().size(); ++i) {
-        RefPtrWillBeRawPtr<FilterEffect> effect = nullptr;
+        RawPtr<FilterEffect> effect = nullptr;
         FilterOperation* filterOperation = operations.operations().at(i).get();
         switch (filterOperation->type()) {
         case FilterOperation::REFERENCE: {
-            RefPtrWillBeRawPtr<Filter> referenceFilter = ReferenceFilterBuilder::build(zoom, element, previousEffect.get(), toReferenceFilterOperation(*filterOperation), referenceBoxSize, fillPaint, strokePaint);
+            RawPtr<Filter> referenceFilter = ReferenceFilterBuilder::build(zoom, element, previousEffect.get(), toReferenceFilterOperation(*filterOperation), referenceBoxSize, fillPaint, strokePaint);
             if (referenceFilter) {
                 effect = referenceFilter->lastEffect();
                 m_referenceFilters.append(referenceFilter);
diff --git a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.h b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.h
index 9022ddf..0b9e1c4e 100644
--- a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.h
+++ b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.h
@@ -42,12 +42,11 @@
 class FilterOperations;
 class Element;
 
-class CORE_EXPORT FilterEffectBuilder final : public RefCountedWillBeGarbageCollectedFinalized<FilterEffectBuilder> {
-    USING_FAST_MALLOC_WILL_BE_REMOVED(FilterEffectBuilder);
+class CORE_EXPORT FilterEffectBuilder final : public GarbageCollectedFinalized<FilterEffectBuilder> {
 public:
-    static PassRefPtrWillBeRawPtr<FilterEffectBuilder> create()
+    static RawPtr<FilterEffectBuilder> create()
     {
-        return adoptRefWillBeNoop(new FilterEffectBuilder());
+        return new FilterEffectBuilder();
     }
 
     virtual ~FilterEffectBuilder();
@@ -55,7 +54,7 @@
 
     bool build(Element*, const FilterOperations&, float zoom, const FloatSize* referenceBoxSize = nullptr, const SkPaint* fillPaint = nullptr, const SkPaint* strokePaint = nullptr);
 
-    PassRefPtrWillBeRawPtr<FilterEffect> lastEffect() const
+    RawPtr<FilterEffect> lastEffect() const
     {
         return m_lastEffect;
     }
@@ -63,8 +62,8 @@
 private:
     FilterEffectBuilder();
 
-    RefPtrWillBeMember<FilterEffect> m_lastEffect;
-    WillBeHeapVector<RefPtrWillBeMember<Filter>> m_referenceFilters;
+    Member<FilterEffect> m_lastEffect;
+    HeapVector<Member<Filter>> m_referenceFilters;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/FilterPainter.cpp b/third_party/WebKit/Source/core/paint/FilterPainter.cpp
index b646c22..6e0ceeba 100644
--- a/third_party/WebKit/Source/core/paint/FilterPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/FilterPainter.cpp
@@ -30,7 +30,7 @@
     if (!layer.paintsWithFilters())
         return;
 
-    RefPtrWillBeRawPtr<FilterEffect> lastEffect = layer.lastFilterEffect();
+    RawPtr<FilterEffect> lastEffect = layer.lastFilterEffect();
     if (!lastEffect)
         return;
 
diff --git a/third_party/WebKit/Source/core/paint/FramePainter.h b/third_party/WebKit/Source/core/paint/FramePainter.h
index d1500757..f8938e9 100644
--- a/third_party/WebKit/Source/core/paint/FramePainter.h
+++ b/third_party/WebKit/Source/core/paint/FramePainter.h
@@ -32,7 +32,7 @@
 
     const FrameView& frameView();
 
-    RawPtrWillBeMember<const FrameView> m_frameView;
+    Member<const FrameView> m_frameView;
     static bool s_inPaintContents;
 };
 
diff --git a/third_party/WebKit/Source/core/paint/NinePieceImageGridTest.cpp b/third_party/WebKit/Source/core/paint/NinePieceImageGridTest.cpp
index d138edc2..e479595 100644
--- a/third_party/WebKit/Source/core/paint/NinePieceImageGridTest.cpp
+++ b/third_party/WebKit/Source/core/paint/NinePieceImageGridTest.cpp
@@ -18,9 +18,9 @@
 public:
     NinePieceImageGridTest() { }
 
-    PassRefPtrWillBeRawPtr<StyleImage> generatedImage()
+    RawPtr<StyleImage> generatedImage()
     {
-        RefPtrWillBeRawPtr<CSSLinearGradientValue> gradient = CSSLinearGradientValue::create(Repeating);
+        RawPtr<CSSLinearGradientValue> gradient = CSSLinearGradientValue::create(Repeating);
         return StyleGeneratedImage::create(*gradient);
     }
 
diff --git a/third_party/WebKit/Source/core/paint/PaintLayer.cpp b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
index fb600ab..598e148 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayer.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
@@ -102,7 +102,7 @@
     void* pointers[9];
     LayoutUnit layoutUnits[4];
     IntSize size;
-    OwnPtrWillBePersistent<PaintLayerScrollableArea> scrollableArea;
+    Persistent<PaintLayerScrollableArea> scrollableArea;
     struct {
         IntRect rect;
         void* pointers[2];
@@ -2600,7 +2600,7 @@
                 continue;
             ReferenceFilterOperation& referenceOperation = toReferenceFilterOperation(*filterOperation);
             // FIXME: Cache the Filter if it didn't change.
-            RefPtrWillBeRawPtr<Filter> referenceFilter = ReferenceFilterBuilder::build(effectiveZoom, toElement(enclosingNode), nullptr, referenceOperation);
+            RawPtr<Filter> referenceFilter = ReferenceFilterBuilder::build(effectiveZoom, toElement(enclosingNode), nullptr, referenceOperation);
             referenceOperation.setFilter(referenceFilter.release());
         }
     }
diff --git a/third_party/WebKit/Source/core/paint/PaintLayer.h b/third_party/WebKit/Source/core/paint/PaintLayer.h
index 42981f29..2a28fab1 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayer.h
+++ b/third_party/WebKit/Source/core/paint/PaintLayer.h
@@ -848,7 +848,7 @@
     AncestorDependentCompositingInputs m_ancestorDependentCompositingInputs;
     OwnPtr<RareAncestorDependentCompositingInputs> m_rareAncestorDependentCompositingInputs;
 
-    OwnPtrWillBePersistent<PaintLayerScrollableArea> m_scrollableArea;
+    Persistent<PaintLayerScrollableArea> m_scrollableArea;
 
     mutable OwnPtr<ClipRectsCache> m_clipRectsCache;
 
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerFilterInfo.cpp b/third_party/WebKit/Source/core/paint/PaintLayerFilterInfo.cpp
index 4ed74ba..ff4f036 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerFilterInfo.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayerFilterInfo.cpp
@@ -45,7 +45,7 @@
     clearFilterReferences();
 }
 
-void PaintLayerFilterInfo::setBuilder(PassRefPtrWillBeRawPtr<FilterEffectBuilder> builder)
+void PaintLayerFilterInfo::setBuilder(RawPtr<FilterEffectBuilder> builder)
 {
     m_builder = builder;
 }
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerFilterInfo.h b/third_party/WebKit/Source/core/paint/PaintLayerFilterInfo.h
index 7fdf14d..bbf317e 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerFilterInfo.h
+++ b/third_party/WebKit/Source/core/paint/PaintLayerFilterInfo.h
@@ -59,7 +59,7 @@
     ~PaintLayerFilterInfo() override;
 
     FilterEffectBuilder* builder() const { return m_builder.get(); }
-    void setBuilder(PassRefPtrWillBeRawPtr<FilterEffectBuilder>);
+    void setBuilder(RawPtr<FilterEffectBuilder>);
 
     void updateReferenceFilterClients(const FilterOperations&);
 
@@ -67,7 +67,7 @@
 
 private:
     PaintLayer* m_layer;
-    RefPtrWillBePersistent<FilterEffectBuilder> m_builder;
+    Persistent<FilterEffectBuilder> m_builder;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
index 5f441be..44b2e81d 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
@@ -344,7 +344,7 @@
     LocalFrame* frame = box().frame();
     ASSERT(frame);
 
-    RefPtrWillBeRawPtr<FrameView> frameView = box().frameView();
+    RawPtr<FrameView> frameView = box().frameView();
 
     TRACE_EVENT1("devtools.timeline", "ScrollLayer", "data", InspectorScrollLayerEvent::data(&box()));
 
@@ -1545,10 +1545,10 @@
     }
 }
 
-PassRefPtrWillBeRawPtr<Scrollbar> PaintLayerScrollableArea::ScrollbarManager::createScrollbar(ScrollbarOrientation orientation)
+RawPtr<Scrollbar> PaintLayerScrollableArea::ScrollbarManager::createScrollbar(ScrollbarOrientation orientation)
 {
     ASSERT(orientation == HorizontalScrollbar ? !m_hBarIsAttached : !m_vBarIsAttached);
-    RefPtrWillBeRawPtr<Scrollbar> scrollbar = nullptr;
+    RawPtr<Scrollbar> scrollbar = nullptr;
     const LayoutObject& actualLayoutObject = layoutObjectForScrollbar(m_scrollableArea->box());
     bool hasCustomScrollbarStyle = actualLayoutObject.isBox() && actualLayoutObject.styleRef().hasPseudoStyle(PseudoIdScrollbar);
     if (hasCustomScrollbarStyle) {
@@ -1565,7 +1565,7 @@
 
 void PaintLayerScrollableArea::ScrollbarManager::destroyScrollbar(ScrollbarOrientation orientation)
 {
-    RefPtrWillBeMember<Scrollbar>& scrollbar = orientation == HorizontalScrollbar ? m_hBar : m_vBar;
+    Member<Scrollbar>& scrollbar = orientation == HorizontalScrollbar ? m_hBar : m_vBar;
     ASSERT(orientation == HorizontalScrollbar ? !m_hBarIsAttached: !m_vBarIsAttached);
     if (!scrollbar)
         return;
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h
index 5ba25a8..bca49031 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h
+++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h
@@ -98,9 +98,8 @@
 // to be painted on top of everything. Hardware accelerated overlay scrollbars
 // are painted by their associated GraphicsLayer that sets the paint flag
 // PaintLayerPaintingOverlayScrollbars.
-class CORE_EXPORT PaintLayerScrollableArea final : public NoBaseWillBeGarbageCollectedFinalized<PaintLayerScrollableArea>, public PaintInvalidationCapableScrollableArea {
-    USING_FAST_MALLOC_WILL_BE_REMOVED(PaintLayerScrollableArea);
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(PaintLayerScrollableArea);
+class CORE_EXPORT PaintLayerScrollableArea final : public GarbageCollectedFinalized<PaintLayerScrollableArea>, public PaintInvalidationCapableScrollableArea {
+    USING_GARBAGE_COLLECTED_MIXIN(PaintLayerScrollableArea);
     friend class Internals;
 
 private:
@@ -140,15 +139,15 @@
         DECLARE_TRACE();
 
     private:
-        PassRefPtrWillBeRawPtr<Scrollbar> createScrollbar(ScrollbarOrientation);
+        RawPtr<Scrollbar> createScrollbar(ScrollbarOrientation);
         void destroyScrollbar(ScrollbarOrientation);
 
     private:
-        RawPtrWillBeMember<PaintLayerScrollableArea> m_scrollableArea;
+        Member<PaintLayerScrollableArea> m_scrollableArea;
 
         // The scrollbars associated with m_scrollableArea. Both can nullptr.
-        RefPtrWillBeMember<Scrollbar> m_hBar;
-        RefPtrWillBeMember<Scrollbar> m_vBar;
+        Member<Scrollbar> m_hBar;
+        Member<Scrollbar> m_vBar;
 
         unsigned m_canDetachScrollbars: 1;
         unsigned m_hBarIsAttached: 1;
@@ -158,9 +157,9 @@
 public:
     // FIXME: We should pass in the LayoutBox but this opens a window
     // for crashers during PaintLayer setup (see crbug.com/368062).
-    static PassOwnPtrWillBeRawPtr<PaintLayerScrollableArea> create(PaintLayer& layer)
+    static RawPtr<PaintLayerScrollableArea> create(PaintLayer& layer)
     {
-        return adoptPtrWillBeNoop(new PaintLayerScrollableArea(layer));
+        return new PaintLayerScrollableArea(layer);
     }
 
     ~PaintLayerScrollableArea() override;
diff --git a/third_party/WebKit/Source/core/paint/PaintTiming.cpp b/third_party/WebKit/Source/core/paint/PaintTiming.cpp
index aa205b6..9fffec3f 100644
--- a/third_party/WebKit/Source/core/paint/PaintTiming.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintTiming.cpp
@@ -15,10 +15,10 @@
 
 PaintTiming& PaintTiming::from(Document& document)
 {
-    PaintTiming* timing = static_cast<PaintTiming*>(WillBeHeapSupplement<Document>::from(document, kSupplementName));
+    PaintTiming* timing = static_cast<PaintTiming*>(Supplement<Document>::from(document, kSupplementName));
     if (!timing) {
         timing = new PaintTiming(document);
-        WillBeHeapSupplement<Document>::provideTo(document, kSupplementName, adoptPtrWillBeNoop(timing));
+        Supplement<Document>::provideTo(document, kSupplementName, timing);
     }
     return *timing;
 }
diff --git a/third_party/WebKit/Source/core/paint/PaintTiming.h b/third_party/WebKit/Source/core/paint/PaintTiming.h
index b2a28a1b3..f8e0aa24c 100644
--- a/third_party/WebKit/Source/core/paint/PaintTiming.h
+++ b/third_party/WebKit/Source/core/paint/PaintTiming.h
@@ -16,9 +16,9 @@
 
 // PaintTiming is responsible for tracking paint-related timings for a given
 // document.
-class PaintTiming final : public NoBaseWillBeGarbageCollectedFinalized<PaintTiming>, public WillBeHeapSupplement<Document> {
+class PaintTiming final : public GarbageCollectedFinalized<PaintTiming>, public Supplement<Document> {
     WTF_MAKE_NONCOPYABLE(PaintTiming);
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(PaintTiming);
+    USING_GARBAGE_COLLECTED_MIXIN(PaintTiming);
 public:
     virtual ~PaintTiming() { }
 
@@ -82,7 +82,7 @@
     double m_firstImagePaint = 0.0;
     double m_firstContentfulPaint = 0.0;
 
-    RawPtrWillBeMember<Document> m_document;
+    Member<Document> m_document;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp b/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp
index a07945e5..f4fe2b7 100644
--- a/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp
@@ -118,7 +118,7 @@
         return nullptr;
     }
 
-    OwnPtrWillBeRawPtr<FilterData> filterData = FilterData::create();
+    RawPtr<FilterData> filterData = FilterData::create();
     FloatRect referenceBox = object.objectBoundingBox();
 
     SVGFilterElement* filterElement = toSVGFilterElement(m_filter.element());
diff --git a/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.h b/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.h
index 9d2a23b..fd6480d5 100644
--- a/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.h
+++ b/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.h
@@ -31,7 +31,7 @@
 
     PaintLayerScrollableArea& getScrollableArea() const;
 
-    RawPtrWillBeMember<PaintLayerScrollableArea> m_scrollableArea;
+    Member<PaintLayerScrollableArea> m_scrollableArea;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/ScrollbarPainter.h b/third_party/WebKit/Source/core/paint/ScrollbarPainter.h
index 347e48e8..acd0167 100644
--- a/third_party/WebKit/Source/core/paint/ScrollbarPainter.h
+++ b/third_party/WebKit/Source/core/paint/ScrollbarPainter.h
@@ -27,7 +27,7 @@
     static void paintIntoRect(const LayoutScrollbarPart&, GraphicsContext&, const LayoutPoint& paintOffset, const LayoutRect&);
 
 private:
-    RawPtrWillBeMember<const LayoutScrollbar> m_layoutScrollbar;
+    Member<const LayoutScrollbar> m_layoutScrollbar;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/ThemePainter.cpp b/third_party/WebKit/Source/core/paint/ThemePainter.cpp
index 326e4c2..4e9180c 100644
--- a/third_party/WebKit/Source/core/paint/ThemePainter.cpp
+++ b/third_party/WebKit/Source/core/paint/ThemePainter.cpp
@@ -282,7 +282,7 @@
         tickRegionSideMargin = trackBounds.y() + (thumbSize.width() - tickSize.width() * zoomFactor) / 2.0;
         tickRegionWidth = trackBounds.height() - thumbSize.width();
     }
-    RefPtrWillBeRawPtr<HTMLDataListOptionsCollection> options = dataList->options();
+    RawPtr<HTMLDataListOptionsCollection> options = dataList->options();
     for (unsigned i = 0; HTMLOptionElement* optionElement = options->item(i); i++) {
         String value = optionElement->value();
         if (!input->isValidValue(value))
diff --git a/third_party/WebKit/Source/core/streams/ReadableStreamOperationsTest.cpp b/third_party/WebKit/Source/core/streams/ReadableStreamOperationsTest.cpp
index 5708a2e..7bfa71d 100644
--- a/third_party/WebKit/Source/core/streams/ReadableStreamOperationsTest.cpp
+++ b/third_party/WebKit/Source/core/streams/ReadableStreamOperationsTest.cpp
@@ -173,7 +173,7 @@
 
     V8TestingScope m_scope;
     v8::TryCatch m_block;
-    RefPtrWillBePersistent<Document> m_document;
+    Persistent<Document> m_document;
 };
 
 TEST_F(ReadableStreamOperationsTest, IsReadableStream)
diff --git a/third_party/WebKit/Source/core/streams/ReadableStreamReader.h b/third_party/WebKit/Source/core/streams/ReadableStreamReader.h
index 2f913f62..3c79ea9 100644
--- a/third_party/WebKit/Source/core/streams/ReadableStreamReader.h
+++ b/third_party/WebKit/Source/core/streams/ReadableStreamReader.h
@@ -27,7 +27,7 @@
 // https://streams.spec.whatwg.org/.
 class CORE_EXPORT ReadableStreamReader final : public GarbageCollectedFinalized<ReadableStreamReader>, public ScriptWrappable, public ActiveScriptWrappable, public ActiveDOMObject {
     DEFINE_WRAPPERTYPEINFO();
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ReadableStreamReader);
+    USING_GARBAGE_COLLECTED_MIXIN(ReadableStreamReader);
 public:
     // The stream must not be locked to any ReadableStreamReader when called.
     ReadableStreamReader(ExecutionContext*, ReadableStream*);
diff --git a/third_party/WebKit/Source/core/streams/Stream.h b/third_party/WebKit/Source/core/streams/Stream.h
index 1e83727..b11696a 100644
--- a/third_party/WebKit/Source/core/streams/Stream.h
+++ b/third_party/WebKit/Source/core/streams/Stream.h
@@ -43,7 +43,7 @@
 class ExecutionContext;
 
 class CORE_EXPORT Stream final : public GarbageCollectedFinalized<Stream>, public ScriptWrappable, public ActiveDOMObject {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(Stream);
+    USING_GARBAGE_COLLECTED_MIXIN(Stream);
     DEFINE_WRAPPERTYPEINFO();
 public:
     static Stream* create(ExecutionContext* context, const String& mediaType)
diff --git a/third_party/WebKit/Source/core/streams/UnderlyingSourceBase.h b/third_party/WebKit/Source/core/streams/UnderlyingSourceBase.h
index 5db69b0..bba33af 100644
--- a/third_party/WebKit/Source/core/streams/UnderlyingSourceBase.h
+++ b/third_party/WebKit/Source/core/streams/UnderlyingSourceBase.h
@@ -21,7 +21,7 @@
 
 class CORE_EXPORT UnderlyingSourceBase : public GarbageCollectedFinalized<UnderlyingSourceBase>, public ScriptWrappable, public ActiveScriptWrappable, public ActiveDOMObject {
     DEFINE_WRAPPERTYPEINFO();
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(UnderlyingSourceBase);
+    USING_GARBAGE_COLLECTED_MIXIN(UnderlyingSourceBase);
 
 public:
     DECLARE_VIRTUAL_TRACE();
diff --git a/third_party/WebKit/Source/core/style/StyleFilterData.h b/third_party/WebKit/Source/core/style/StyleFilterData.h
index d984c6fe..5e47af51 100644
--- a/third_party/WebKit/Source/core/style/StyleFilterData.h
+++ b/third_party/WebKit/Source/core/style/StyleFilterData.h
@@ -40,7 +40,7 @@
 public:
     static RawPtr<StyleFilterData> create()
     {
-        return adoptRefWillBeNoop(new StyleFilterData);
+        return new StyleFilterData;
     }
 
     RawPtr<StyleFilterData> copy() const
diff --git a/third_party/WebKit/Source/core/svg/SVGAngle.idl b/third_party/WebKit/Source/core/svg/SVGAngle.idl
index 64aa811d..376d5d6 100644
--- a/third_party/WebKit/Source/core/svg/SVGAngle.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAngle.idl
@@ -25,7 +25,7 @@
 [
     ImplementedAs=SVGAngleTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAngle {
     // Angle Unit Types
     const unsigned short SVG_ANGLETYPE_UNKNOWN = 0;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedAngle.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedAngle.idl
index 4bd5848..e831b19c 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedAngle.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedAngle.idl
@@ -27,7 +27,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedAngle {
     readonly attribute SVGAngle baseVal;
     readonly attribute SVGAngle animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedBoolean.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedBoolean.idl
index 531af6a2..5078a8b 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedBoolean.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedBoolean.idl
@@ -27,7 +27,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedBoolean {
     [RaisesException=Setter] attribute boolean baseVal;
     readonly attribute boolean animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedEnumeration.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedEnumeration.idl
index 830f2c95..8c31054 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedEnumeration.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedEnumeration.idl
@@ -28,7 +28,7 @@
 [
     ImplementedAs=SVGAnimatedEnumerationBase,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedEnumeration {
     [RaisesException=Setter] attribute unsigned short baseVal;
     readonly attribute unsigned short animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedInteger.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedInteger.idl
index 78520f65..f9960c6 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedInteger.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedInteger.idl
@@ -27,7 +27,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedInteger {
     [RaisesException=Setter] attribute long baseVal;
     readonly attribute long animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedLength.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedLength.idl
index 3fbc2452..32c39ad6 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedLength.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedLength.idl
@@ -27,7 +27,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedLength {
     readonly attribute SVGLength baseVal;
     readonly attribute SVGLength animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedLengthList.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedLengthList.idl
index 2f79e7fb..3eb2a2fd 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedLengthList.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedLengthList.idl
@@ -27,7 +27,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedLengthList {
     readonly attribute SVGLengthList baseVal;
     readonly attribute SVGLengthList animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedNumber.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedNumber.idl
index 9f228b4..326cac4 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedNumber.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedNumber.idl
@@ -28,7 +28,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedNumber {
     [RaisesException=Setter] attribute float baseVal;
     readonly attribute float animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedNumberList.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedNumberList.idl
index c38f5cd5..1bd41cb1 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedNumberList.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedNumberList.idl
@@ -27,7 +27,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedNumberList {
     readonly attribute SVGNumberList baseVal;
     readonly attribute SVGNumberList animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedPreserveAspectRatio.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedPreserveAspectRatio.idl
index e4b4a93..a06416c 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedPreserveAspectRatio.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedPreserveAspectRatio.idl
@@ -27,7 +27,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedPreserveAspectRatio {
     readonly attribute SVGPreserveAspectRatio baseVal;
     readonly attribute SVGPreserveAspectRatio animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedRect.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedRect.idl
index d020f95..870dd18 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedRect.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedRect.idl
@@ -27,7 +27,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedRect {
     // TODO(philipj): SVGRect should be DOMRectReadOnly.
     readonly attribute SVGRect baseVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedString.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedString.idl
index e881925a..0f2f953 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedString.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedString.idl
@@ -27,7 +27,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedString {
     [RaisesException=Setter] attribute DOMString baseVal;
     readonly attribute DOMString animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGAnimatedTransformList.idl b/third_party/WebKit/Source/core/svg/SVGAnimatedTransformList.idl
index fca3d24f..8ccc7d9 100644
--- a/third_party/WebKit/Source/core/svg/SVGAnimatedTransformList.idl
+++ b/third_party/WebKit/Source/core/svg/SVGAnimatedTransformList.idl
@@ -27,7 +27,7 @@
 
 [
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGAnimatedTransformList {
     [MeasureAs=SVGAnimatedTransformListBaseVal] readonly attribute SVGTransformList baseVal;
     readonly attribute SVGTransformList animVal;
diff --git a/third_party/WebKit/Source/core/svg/SVGDocumentExtensions.cpp b/third_party/WebKit/Source/core/svg/SVGDocumentExtensions.cpp
index 3c733e25..8d79a5f0 100644
--- a/third_party/WebKit/Source/core/svg/SVGDocumentExtensions.cpp
+++ b/third_party/WebKit/Source/core/svg/SVGDocumentExtensions.cpp
@@ -163,7 +163,7 @@
 
     HeapHashMap<AtomicString, Member<SVGPendingElements>>::AddResult result = m_pendingResources.add(id, nullptr);
     if (result.isNewEntry)
-        result.storedValue->value = adoptPtrWillBeNoop(new SVGPendingElements);
+        result.storedValue->value = new SVGPendingElements;
     result.storedValue->value->add(element);
 
     element->setHasPendingResources();
diff --git a/third_party/WebKit/Source/core/svg/SVGLength.idl b/third_party/WebKit/Source/core/svg/SVGLength.idl
index 06b7617..ebb20a2 100644
--- a/third_party/WebKit/Source/core/svg/SVGLength.idl
+++ b/third_party/WebKit/Source/core/svg/SVGLength.idl
@@ -25,7 +25,7 @@
 [
     ImplementedAs=SVGLengthTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGLength {
     // Length Unit Types
     const unsigned short SVG_LENGTHTYPE_UNKNOWN    = 0;
diff --git a/third_party/WebKit/Source/core/svg/SVGLengthList.idl b/third_party/WebKit/Source/core/svg/SVGLengthList.idl
index 5d6113c..3b073bf 100644
--- a/third_party/WebKit/Source/core/svg/SVGLengthList.idl
+++ b/third_party/WebKit/Source/core/svg/SVGLengthList.idl
@@ -29,7 +29,7 @@
 [
     ImplementedAs=SVGLengthListTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGLengthList {
     readonly attribute unsigned long length;
     [ImplementedAs=length] readonly attribute unsigned long numberOfItems;
diff --git a/third_party/WebKit/Source/core/svg/SVGMatrix.idl b/third_party/WebKit/Source/core/svg/SVGMatrix.idl
index 0c960a1f..ed2582b 100644
--- a/third_party/WebKit/Source/core/svg/SVGMatrix.idl
+++ b/third_party/WebKit/Source/core/svg/SVGMatrix.idl
@@ -26,7 +26,7 @@
 [
     ImplementedAs=SVGMatrixTearOff,
     SetWrapperReferenceTo(SVGTransform contextTransform),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGMatrix {
     // FIXME: these attributes should all be floats but since we implement
     // AffineTransform with doubles setting these as doubles makes more sense.
diff --git a/third_party/WebKit/Source/core/svg/SVGNumber.idl b/third_party/WebKit/Source/core/svg/SVGNumber.idl
index 0a2aa67..47eca25 100644
--- a/third_party/WebKit/Source/core/svg/SVGNumber.idl
+++ b/third_party/WebKit/Source/core/svg/SVGNumber.idl
@@ -25,7 +25,7 @@
 [
     ImplementedAs=SVGNumberTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGNumber {
     [RaisesException=Setter] attribute float value;
 };
diff --git a/third_party/WebKit/Source/core/svg/SVGNumberList.idl b/third_party/WebKit/Source/core/svg/SVGNumberList.idl
index 3d02ae5e1..965296b9 100644
--- a/third_party/WebKit/Source/core/svg/SVGNumberList.idl
+++ b/third_party/WebKit/Source/core/svg/SVGNumberList.idl
@@ -29,7 +29,7 @@
 [
     ImplementedAs=SVGNumberListTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGNumberList {
     readonly attribute unsigned long length;
     [ImplementedAs=length] readonly attribute unsigned long numberOfItems;
diff --git a/third_party/WebKit/Source/core/svg/SVGPoint.idl b/third_party/WebKit/Source/core/svg/SVGPoint.idl
index b7c1434..61b768b6 100644
--- a/third_party/WebKit/Source/core/svg/SVGPoint.idl
+++ b/third_party/WebKit/Source/core/svg/SVGPoint.idl
@@ -26,7 +26,7 @@
 [
     ImplementedAs=SVGPointTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGPoint {
     [RaisesException=Setter] attribute unrestricted float x;
     [RaisesException=Setter] attribute unrestricted float y;
diff --git a/third_party/WebKit/Source/core/svg/SVGPointList.idl b/third_party/WebKit/Source/core/svg/SVGPointList.idl
index 97589be..82107da 100644
--- a/third_party/WebKit/Source/core/svg/SVGPointList.idl
+++ b/third_party/WebKit/Source/core/svg/SVGPointList.idl
@@ -28,7 +28,7 @@
 [
     ImplementedAs=SVGPointListTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGPointList {
     readonly attribute unsigned long length;
     [ImplementedAs=length] readonly attribute unsigned long numberOfItems;
diff --git a/third_party/WebKit/Source/core/svg/SVGPreserveAspectRatio.idl b/third_party/WebKit/Source/core/svg/SVGPreserveAspectRatio.idl
index 6e1d4ad..58957a0 100644
--- a/third_party/WebKit/Source/core/svg/SVGPreserveAspectRatio.idl
+++ b/third_party/WebKit/Source/core/svg/SVGPreserveAspectRatio.idl
@@ -28,7 +28,7 @@
 [
     ImplementedAs=SVGPreserveAspectRatioTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGPreserveAspectRatio {
     // Alignment types
     const unsigned short SVG_PRESERVEASPECTRATIO_UNKNOWN = 0;
diff --git a/third_party/WebKit/Source/core/svg/SVGRect.idl b/third_party/WebKit/Source/core/svg/SVGRect.idl
index 725ee0f..5cc13bd8 100644
--- a/third_party/WebKit/Source/core/svg/SVGRect.idl
+++ b/third_party/WebKit/Source/core/svg/SVGRect.idl
@@ -26,7 +26,7 @@
 [
     ImplementedAs=SVGRectTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGRect {
     [RaisesException=Setter] attribute unrestricted float x;
     [RaisesException=Setter] attribute unrestricted float y;
diff --git a/third_party/WebKit/Source/core/svg/SVGStringList.idl b/third_party/WebKit/Source/core/svg/SVGStringList.idl
index 7241243..a540ac55 100644
--- a/third_party/WebKit/Source/core/svg/SVGStringList.idl
+++ b/third_party/WebKit/Source/core/svg/SVGStringList.idl
@@ -28,7 +28,7 @@
 [
     SetWrapperReferenceTo(SVGElement contextElement),
     ImplementedAs=SVGStringListTearOff,
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGStringList {
     readonly attribute unsigned long length;
     [ImplementedAs=length] readonly attribute unsigned long numberOfItems;
diff --git a/third_party/WebKit/Source/core/svg/SVGTransform.idl b/third_party/WebKit/Source/core/svg/SVGTransform.idl
index dd594e1..39b603e 100644
--- a/third_party/WebKit/Source/core/svg/SVGTransform.idl
+++ b/third_party/WebKit/Source/core/svg/SVGTransform.idl
@@ -24,7 +24,7 @@
 [
     ImplementedAs=SVGTransformTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGTransform {
     // Transform Types
     const unsigned short SVG_TRANSFORM_UNKNOWN = 0;
diff --git a/third_party/WebKit/Source/core/svg/SVGTransformList.idl b/third_party/WebKit/Source/core/svg/SVGTransformList.idl
index 2ffb5bc8..e373f37 100644
--- a/third_party/WebKit/Source/core/svg/SVGTransformList.idl
+++ b/third_party/WebKit/Source/core/svg/SVGTransformList.idl
@@ -29,7 +29,7 @@
 [
     ImplementedAs=SVGTransformListTearOff,
     SetWrapperReferenceTo(SVGElement contextElement),
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface SVGTransformList {
     readonly attribute unsigned long length;
     [ImplementedAs=length] readonly attribute unsigned long numberOfItems;
diff --git a/third_party/WebKit/Source/core/svg/SVGUnitTypes.idl b/third_party/WebKit/Source/core/svg/SVGUnitTypes.idl
index 2b42b50..d1290e2 100644
--- a/third_party/WebKit/Source/core/svg/SVGUnitTypes.idl
+++ b/third_party/WebKit/Source/core/svg/SVGUnitTypes.idl
@@ -27,7 +27,7 @@
 
 [
     DependentLifetime,
-    WillBeGarbageCollected
+    GarbageCollected
 ] interface SVGUnitTypes {
     // Unit Types
     const unsigned short SVG_UNIT_TYPE_UNKNOWN           = 0;
diff --git a/third_party/WebKit/Source/core/svg/SVGViewSpec.idl b/third_party/WebKit/Source/core/svg/SVGViewSpec.idl
index 5c16d614..fc69fed 100644
--- a/third_party/WebKit/Source/core/svg/SVGViewSpec.idl
+++ b/third_party/WebKit/Source/core/svg/SVGViewSpec.idl
@@ -27,7 +27,7 @@
 
 [
     DependentLifetime,
-    WillBeGarbageCollected,
+    GarbageCollected,
     SetWrapperReferenceTo(SVGElement contextElement),
 ] interface SVGViewSpec {
       [ImplementedAs=transformFromJavascript] readonly attribute SVGTransformList transform;
diff --git a/third_party/WebKit/Source/core/svg/SVGZoomEvent.h b/third_party/WebKit/Source/core/svg/SVGZoomEvent.h
index 5528b72..e896572 100644
--- a/third_party/WebKit/Source/core/svg/SVGZoomEvent.h
+++ b/third_party/WebKit/Source/core/svg/SVGZoomEvent.h
@@ -34,7 +34,7 @@
 public:
     static RawPtr<SVGZoomEvent> create()
     {
-        return adoptRefWillBeNoop(new SVGZoomEvent);
+        return new SVGZoomEvent;
     }
 
     // 'SVGZoomEvent' functions
diff --git a/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp b/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
index 083aaec..617a6e6 100644
--- a/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
+++ b/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
@@ -93,7 +93,7 @@
     ElementAttributePair key(target, attributeName);
     Member<AnimationsLinkedHashSet>& scheduled = m_scheduledAnimations.add(key, nullptr).storedValue->value;
     if (!scheduled)
-        scheduled = adoptPtrWillBeNoop(new AnimationsLinkedHashSet);
+        scheduled = new AnimationsLinkedHashSet;
     ASSERT(!scheduled->contains(animation));
     scheduled->add(animation);
 
diff --git a/third_party/WebKit/Source/core/svg/graphics/filters/SVGFilterBuilder.h b/third_party/WebKit/Source/core/svg/graphics/filters/SVGFilterBuilder.h
index 35a2dd6..d6faaf87 100644
--- a/third_party/WebKit/Source/core/svg/graphics/filters/SVGFilterBuilder.h
+++ b/third_party/WebKit/Source/core/svg/graphics/filters/SVGFilterBuilder.h
@@ -43,7 +43,7 @@
 public:
     static RawPtr<SVGFilterGraphNodeMap> create()
     {
-        return adoptRefWillBeNoop(new SVGFilterGraphNodeMap);
+        return new SVGFilterGraphNodeMap;
     }
 
     typedef HeapHashSet<Member<FilterEffect>> FilterEffectSet;
diff --git a/third_party/WebKit/Source/core/testing/DictionaryTest.h b/third_party/WebKit/Source/core/testing/DictionaryTest.h
index 1911f40..fc69567 100644
--- a/third_party/WebKit/Source/core/testing/DictionaryTest.h
+++ b/third_party/WebKit/Source/core/testing/DictionaryTest.h
@@ -74,13 +74,13 @@
     String m_enumMemberWithDefault;
     String m_enumOrNullMember;
     Nullable<Vector<String>> m_enumArrayMember;
-    RefPtrWillBeMember<Element> m_elementMember;
-    RefPtrWillBeMember<Element> m_elementOrNullMember;
+    Member<Element> m_elementMember;
+    Member<Element> m_elementOrNullMember;
     ScriptValue m_objectMember;
     ScriptValue m_objectOrNullMemberWithDefault;
     DoubleOrString m_doubleOrStringMember;
     Nullable<HeapVector<DoubleOrString>> m_doubleOrStringSequenceMember;
-    RefPtrWillBeMember<EventTarget> m_eventTargetOrNullMember;
+    Member<EventTarget> m_eventTargetOrNullMember;
     String m_derivedStringMember;
     String m_derivedStringMemberWithDefault;
     bool m_requiredBooleanMember;
diff --git a/third_party/WebKit/Source/core/testing/DummyPageHolder.cpp b/third_party/WebKit/Source/core/testing/DummyPageHolder.cpp
index 2e9b253d..8f193712 100644
--- a/third_party/WebKit/Source/core/testing/DummyPageHolder.cpp
+++ b/third_party/WebKit/Source/core/testing/DummyPageHolder.cpp
@@ -48,7 +48,7 @@
 PassOwnPtr<DummyPageHolder> DummyPageHolder::create(
     const IntSize& initialViewSize,
     Page::PageClients* pageClients,
-    PassOwnPtrWillBeRawPtr<FrameLoaderClient> frameLoaderClient,
+    RawPtr<FrameLoaderClient> frameLoaderClient,
     FrameSettingOverrideFunction settingOverrider) {
     return adoptPtr(new DummyPageHolder(initialViewSize, pageClients, frameLoaderClient, settingOverrider));
 }
@@ -56,7 +56,7 @@
 DummyPageHolder::DummyPageHolder(
     const IntSize& initialViewSize,
     Page::PageClients* pageClientsArgument,
-    PassOwnPtrWillBeRawPtr<FrameLoaderClient> frameLoaderClient,
+    RawPtr<FrameLoaderClient> frameLoaderClient,
     FrameSettingOverrideFunction settingOverrider)
 {
     Page::PageClients pageClients;
diff --git a/third_party/WebKit/Source/core/testing/DummyPageHolder.h b/third_party/WebKit/Source/core/testing/DummyPageHolder.h
index 0a0847c..276604e 100644
--- a/third_party/WebKit/Source/core/testing/DummyPageHolder.h
+++ b/third_party/WebKit/Source/core/testing/DummyPageHolder.h
@@ -68,7 +68,7 @@
     static PassOwnPtr<DummyPageHolder> create(
         const IntSize& initialViewSize = IntSize(),
         Page::PageClients* = 0,
-        PassOwnPtrWillBeRawPtr<FrameLoaderClient> = nullptr,
+        RawPtr<FrameLoaderClient> = nullptr,
         FrameSettingOverrideFunction = nullptr);
     ~DummyPageHolder();
 
@@ -78,12 +78,12 @@
     Document& document() const;
 
 private:
-    DummyPageHolder(const IntSize& initialViewSize, Page::PageClients*, PassOwnPtrWillBeRawPtr<FrameLoaderClient>, FrameSettingOverrideFunction settingOverrider);
+    DummyPageHolder(const IntSize& initialViewSize, Page::PageClients*, RawPtr<FrameLoaderClient>, FrameSettingOverrideFunction settingOverrider);
 
-    OwnPtrWillBePersistent<Page> m_page;
-    RefPtrWillBePersistent<LocalFrame> m_frame;
+    Persistent<Page> m_page;
+    Persistent<LocalFrame> m_frame;
 
-    OwnPtrWillBePersistent<FrameLoaderClient> m_frameLoaderClient;
+    Persistent<FrameLoaderClient> m_frameLoaderClient;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/testing/InternalSettings.cpp b/third_party/WebKit/Source/core/testing/InternalSettings.cpp
index aae34cf..b002f41 100644
--- a/third_party/WebKit/Source/core/testing/InternalSettings.cpp
+++ b/third_party/WebKit/Source/core/testing/InternalSettings.cpp
@@ -102,9 +102,9 @@
 
 InternalSettings* InternalSettings::from(Page& page)
 {
-    if (!HeapSupplement<Page>::from(page, supplementName()))
-        HeapSupplement<Page>::provideTo(page, supplementName(), new InternalSettings(page));
-    return static_cast<InternalSettings*>(HeapSupplement<Page>::from(page, supplementName()));
+    if (!Supplement<Page>::from(page, supplementName()))
+        Supplement<Page>::provideTo(page, supplementName(), new InternalSettings(page));
+    return static_cast<InternalSettings*>(Supplement<Page>::from(page, supplementName()));
 }
 const char* InternalSettings::supplementName()
 {
diff --git a/third_party/WebKit/Source/core/testing/InternalSettings.h b/third_party/WebKit/Source/core/testing/InternalSettings.h
index 061369d..1b9e8a8 100644
--- a/third_party/WebKit/Source/core/testing/InternalSettings.h
+++ b/third_party/WebKit/Source/core/testing/InternalSettings.h
@@ -47,12 +47,8 @@
 class Page;
 class Settings;
 
-#if ENABLE(OILPAN)
-class InternalSettings final : public InternalSettingsGenerated, public HeapSupplement<Page> {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(InternalSettings);
-#else
-class InternalSettings final : public InternalSettingsGenerated {
-#endif
+class InternalSettings final : public InternalSettingsGenerated, public Supplement<Page> {
+    USING_GARBAGE_COLLECTED_MIXIN(InternalSettings);
     DEFINE_WRAPPERTYPEINFO();
 public:
     class Backup {
@@ -82,16 +78,12 @@
         bool m_originalCompositorWorkerEnabled;
     };
 
-    static PassRefPtrWillBeRawPtr<InternalSettings> create(Page& page)
+    static RawPtr<InternalSettings> create(Page& page)
     {
-        return adoptRefWillBeNoop(new InternalSettings(page));
+        return new InternalSettings(page);
     }
     static InternalSettings* from(Page&);
 
-#if !ENABLE(OILPAN)
-    void hostDestroyed() { m_page = nullptr; }
-#endif
-
     ~InternalSettings() override;
     void resetToConsistentState();
 
@@ -146,7 +138,7 @@
     Page* page() const { return m_page; }
     static const char* supplementName();
 
-    RawPtrWillBeWeakMember<Page> m_page;
+    WeakMember<Page> m_page;
     Backup m_backup;
 };
 
diff --git a/third_party/WebKit/Source/core/testing/InternalSettings.idl b/third_party/WebKit/Source/core/testing/InternalSettings.idl
index 2e55bb3..76b574c 100644
--- a/third_party/WebKit/Source/core/testing/InternalSettings.idl
+++ b/third_party/WebKit/Source/core/testing/InternalSettings.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    WillBeGarbageCollected,
+    GarbageCollected,
 ] interface InternalSettings : InternalSettingsGenerated {
     // All methods which access Page::settings() can raise an exception
     // when the page cannot be accessed. (Such as during page tear-down.)
diff --git a/third_party/WebKit/Source/core/testing/Internals.cpp b/third_party/WebKit/Source/core/testing/Internals.cpp
index 7544deed..1ae4aef 100644
--- a/third_party/WebKit/Source/core/testing/Internals.cpp
+++ b/third_party/WebKit/Source/core/testing/Internals.cpp
@@ -657,17 +657,17 @@
     return representation;
 }
 
-PassRefPtrWillBeRawPtr<CSSStyleDeclaration> Internals::computedStyleIncludingVisitedInfo(Node* node) const
+RawPtr<CSSStyleDeclaration> Internals::computedStyleIncludingVisitedInfo(Node* node) const
 {
     ASSERT(node);
     bool allowVisitedStyle = true;
     return CSSComputedStyleDeclaration::create(node, allowVisitedStyle);
 }
 
-PassRefPtrWillBeRawPtr<ShadowRoot> Internals::createUserAgentShadowRoot(Element* host)
+RawPtr<ShadowRoot> Internals::createUserAgentShadowRoot(Element* host)
 {
     ASSERT(host);
-    return PassRefPtrWillBeRawPtr<ShadowRoot>(host->ensureUserAgentShadowRoot());
+    return RawPtr<ShadowRoot>(host->ensureUserAgentShadowRoot());
 }
 
 ShadowRoot* Internals::shadowRoot(Element* host)
@@ -874,7 +874,7 @@
     return markers[index];
 }
 
-PassRefPtrWillBeRawPtr<Range> Internals::markerRangeForNode(Node* node, const String& markerType, unsigned index, ExceptionState& exceptionState)
+RawPtr<Range> Internals::markerRangeForNode(Node* node, const String& markerType, unsigned index, ExceptionState& exceptionState)
 {
     ASSERT(node);
     DocumentMarker* marker = markerAt(node, markerType, index, exceptionState);
@@ -1040,7 +1040,7 @@
     toHTMLFormControlElement(element)->setAutofilled(enabled);
 }
 
-PassRefPtrWillBeRawPtr<Range> Internals::rangeFromLocationAndLength(Element* scope, int rangeLocation, int rangeLength)
+RawPtr<Range> Internals::rangeFromLocationAndLength(Element* scope, int rangeLocation, int rangeLength)
 {
     ASSERT(scope);
 
@@ -1486,7 +1486,7 @@
     return tags;
 }
 
-PassRefPtrWillBeRawPtr<StaticNodeList> Internals::nodesFromRect(Document* document, int centerX, int centerY, unsigned topPadding, unsigned rightPadding,
+RawPtr<StaticNodeList> Internals::nodesFromRect(Document* document, int centerX, int centerY, unsigned topPadding, unsigned rightPadding,
     unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allowChildFrameContent, ExceptionState& exceptionState) const
 {
     ASSERT(document);
@@ -1517,7 +1517,7 @@
     if (!request.ignoreClipping() && !frameView->visibleContentRect().intersects(HitTestLocation::rectForPoint(point, topPadding, rightPadding, bottomPadding, leftPadding)))
         return nullptr;
 
-    WillBeHeapVector<RefPtrWillBeMember<Node>> matches;
+    HeapVector<Member<Node>> matches;
     HitTestResult result(request, point, topPadding, rightPadding, bottomPadding, leftPadding);
     layoutView->hitTest(result);
     copyToVector(result.listBasedTestResult(), matches);
@@ -2439,7 +2439,7 @@
 }
 
 void Internals::setScrollChain(
-    ScrollState* scrollState, const WillBeHeapVector<RefPtrWillBeMember<Element>>& elements, ExceptionState&)
+    ScrollState* scrollState, const HeapVector<Member<Element>>& elements, ExceptionState&)
 {
     std::deque<int> scrollChain;
     for (size_t i = 0; i < elements.size(); ++i)
diff --git a/third_party/WebKit/Source/core/testing/Internals.h b/third_party/WebKit/Source/core/testing/Internals.h
index 08d794a..c4ac2a5 100644
--- a/third_party/WebKit/Source/core/testing/Internals.h
+++ b/third_party/WebKit/Source/core/testing/Internals.h
@@ -75,7 +75,7 @@
 
 class Internals final : public GarbageCollectedFinalized<Internals>, public ScriptWrappable, public ContextLifecycleObserver, public ValueIterable<int> {
     DEFINE_WRAPPERTYPEINFO();
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(Internals);
+    USING_GARBAGE_COLLECTED_MIXIN(Internals);
 public:
     static Internals* create(ScriptState*);
     virtual ~Internals();
@@ -94,9 +94,9 @@
 
     bool isSharingStyle(Element*, Element*) const;
 
-    PassRefPtrWillBeRawPtr<CSSStyleDeclaration> computedStyleIncludingVisitedInfo(Node*) const;
+    RawPtr<CSSStyleDeclaration> computedStyleIncludingVisitedInfo(Node*) const;
 
-    PassRefPtrWillBeRawPtr<ShadowRoot> createUserAgentShadowRoot(Element* host);
+    RawPtr<ShadowRoot> createUserAgentShadowRoot(Element* host);
 
     ShadowRoot* shadowRoot(Element* host);
     ShadowRoot* youngestShadowRoot(Element* host);
@@ -159,7 +159,7 @@
 
     unsigned markerCountForNode(Node*, const String&, ExceptionState&);
     unsigned activeMarkerCountForNode(Node*);
-    PassRefPtrWillBeRawPtr<Range> markerRangeForNode(Node*, const String& markerType, unsigned index, ExceptionState&);
+    RawPtr<Range> markerRangeForNode(Node*, const String& markerType, unsigned index, ExceptionState&);
     String markerDescriptionForNode(Node*, const String& markerType, unsigned index, ExceptionState&);
     void addTextMatchMarker(const Range*, bool isActive);
     void setMarkersActive(Node*, unsigned startOffset, unsigned endOffset, bool);
@@ -174,7 +174,7 @@
     void setEditingValue(Element* inputElement, const String&, ExceptionState&);
     void setAutofilled(Element*, bool enabled, ExceptionState&);
 
-    PassRefPtrWillBeRawPtr<Range> rangeFromLocationAndLength(Element* scope, int rangeLocation, int rangeLength);
+    RawPtr<Range> rangeFromLocationAndLength(Element* scope, int rangeLocation, int rangeLength);
     unsigned locationFromRange(Element* scope, const Range*);
     unsigned lengthFromRange(Element* scope, const Range*);
     String rangeAsText(const Range*);
@@ -205,7 +205,7 @@
     Vector<AtomicString> svgTags();
 
     // This is used to test rect based hit testing like what's done on touch screens.
-    PassRefPtrWillBeRawPtr<StaticNodeList> nodesFromRect(Document*, int x, int y, unsigned topPadding, unsigned rightPadding,
+    RawPtr<StaticNodeList> nodesFromRect(Document*, int x, int y, unsigned topPadding, unsigned rightPadding,
         unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allowChildFrameContent, ExceptionState&) const;
 
     bool hasSpellingMarker(Document*, int from, int length);
@@ -244,7 +244,7 @@
     unsigned numberOfLiveDocuments() const;
     String dumpRefCountedInstanceCounts() const;
     Vector<String> consoleMessageArgumentCounts(Document*) const;
-    PassRefPtrWillBeRawPtr<LocalDOMWindow> openDummyInspectorFrontend(const String& url);
+    RawPtr<LocalDOMWindow> openDummyInspectorFrontend(const String& url);
     void closeDummyInspectorFrontend();
     Vector<unsigned long> setMemoryCacheCapacities(unsigned long minDeadBytes, unsigned long maxDeadBytes, unsigned long totalBytes);
 
@@ -355,7 +355,7 @@
     bool isInCanvasFontCache(Document*, const String&);
     unsigned canvasFontCacheMaxFonts();
 
-    void setScrollChain(ScrollState*, const WillBeHeapVector<RefPtrWillBeMember<Element>>& elements, ExceptionState&);
+    void setScrollChain(ScrollState*, const HeapVector<Member<Element>>& elements, ExceptionState&);
 
     // Schedule a forced Blink GC run (Oilpan) at the end of event loop.
     // Note: This is designed to be only used from PerformanceTests/BlinkGC to explicitly measure only Blink GC time.
diff --git a/third_party/WebKit/Source/core/testing/LayerRect.h b/third_party/WebKit/Source/core/testing/LayerRect.h
index 7930471..d8f4084 100644
--- a/third_party/WebKit/Source/core/testing/LayerRect.h
+++ b/third_party/WebKit/Source/core/testing/LayerRect.h
@@ -46,7 +46,7 @@
 class LayerRect final : public GarbageCollectedFinalized<LayerRect>, public ScriptWrappable {
     DEFINE_WRAPPERTYPEINFO();
 public:
-    static LayerRect* create(PassRefPtrWillBeRawPtr<Node> node, const String& layerType, int nodeOffsetX, int nodeOffsetY, ClientRect* rect)
+    static LayerRect* create(RawPtr<Node> node, const String& layerType, int nodeOffsetX, int nodeOffsetY, ClientRect* rect)
     {
         return new LayerRect(node, layerType, nodeOffsetX, nodeOffsetY, rect);
     }
@@ -64,14 +64,14 @@
     }
 
 private:
-    LayerRect(PassRefPtrWillBeRawPtr<Node> node, const String& layerName, int nodeOffsetX, int nodeOffsetY, ClientRect* rect)
+    LayerRect(RawPtr<Node> node, const String& layerName, int nodeOffsetX, int nodeOffsetY, ClientRect* rect)
         : m_layerAssociatedNode(node)
         , m_layerType(layerName)
         , m_associatedNodeOffsetX(nodeOffsetX)
         , m_associatedNodeOffsetY(nodeOffsetY)
         , m_rect(rect) { }
 
-    RefPtrWillBeMember<Node> m_layerAssociatedNode;
+    Member<Node> m_layerAssociatedNode;
     String m_layerType;
     int m_associatedNodeOffsetX;
     int m_associatedNodeOffsetY;
diff --git a/third_party/WebKit/Source/core/testing/LayerRectList.cpp b/third_party/WebKit/Source/core/testing/LayerRectList.cpp
index 8302ed3..4364eee5 100644
--- a/third_party/WebKit/Source/core/testing/LayerRectList.cpp
+++ b/third_party/WebKit/Source/core/testing/LayerRectList.cpp
@@ -53,7 +53,7 @@
     return m_list[index].get();
 }
 
-void LayerRectList::append(PassRefPtrWillBeRawPtr<Node> layerRootNode, const String& layerType, int layerOffsetX, int layerOffsetY, ClientRect* layerRelativeRect)
+void LayerRectList::append(RawPtr<Node> layerRootNode, const String& layerType, int layerOffsetX, int layerOffsetY, ClientRect* layerRelativeRect)
 {
     m_list.append(LayerRect::create(layerRootNode, layerType, layerOffsetX, layerOffsetY, layerRelativeRect));
 }
diff --git a/third_party/WebKit/Source/core/testing/LayerRectList.h b/third_party/WebKit/Source/core/testing/LayerRectList.h
index dc5e5e4bd..5fe14dc4 100644
--- a/third_party/WebKit/Source/core/testing/LayerRectList.h
+++ b/third_party/WebKit/Source/core/testing/LayerRectList.h
@@ -53,7 +53,7 @@
 
     unsigned length() const;
     LayerRect* item(unsigned index);
-    void append(PassRefPtrWillBeRawPtr<Node> layerAssociatedNode, const String& layerName, int layerOffsetX, int layerOffsetY, ClientRect* layerRelativeRect);
+    void append(RawPtr<Node> layerAssociatedNode, const String& layerName, int layerOffsetX, int layerOffsetY, ClientRect* layerRelativeRect);
 
     DECLARE_TRACE();
 
diff --git a/third_party/WebKit/Source/core/testing/NullExecutionContext.cpp b/third_party/WebKit/Source/core/testing/NullExecutionContext.cpp
index a52527e..4d31ecf 100644
--- a/third_party/WebKit/Source/core/testing/NullExecutionContext.cpp
+++ b/third_party/WebKit/Source/core/testing/NullExecutionContext.cpp
@@ -16,7 +16,7 @@
 public:
     NullEventQueue() { }
     ~NullEventQueue() override { }
-    bool enqueueEvent(PassRefPtrWillBeRawPtr<Event>) override { return true; }
+    bool enqueueEvent(RawPtr<Event>) override { return true; }
     bool cancelEvent(Event*) override { return true; }
     void close() override { }
 };
@@ -26,7 +26,7 @@
 NullExecutionContext::NullExecutionContext()
     : m_tasksNeedSuspension(false)
     , m_isSecureContext(true)
-    , m_queue(adoptPtrWillBeNoop(new NullEventQueue()))
+    , m_queue(new NullEventQueue())
 {
 }
 
diff --git a/third_party/WebKit/Source/core/testing/NullExecutionContext.h b/third_party/WebKit/Source/core/testing/NullExecutionContext.h
index 70f72d2..4c970d8 100644
--- a/third_party/WebKit/Source/core/testing/NullExecutionContext.h
+++ b/third_party/WebKit/Source/core/testing/NullExecutionContext.h
@@ -16,8 +16,8 @@
 
 namespace blink {
 
-class NullExecutionContext final : public RefCountedWillBeGarbageCollectedFinalized<NullExecutionContext>, public SecurityContext, public ExecutionContext {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(NullExecutionContext);
+class NullExecutionContext final : public GarbageCollectedFinalized<NullExecutionContext>, public SecurityContext, public ExecutionContext {
+    USING_GARBAGE_COLLECTED_MIXIN(NullExecutionContext);
 public:
     NullExecutionContext();
 
@@ -37,7 +37,7 @@
     SecurityContext& securityContext() override { return *this; }
     DOMTimerCoordinator* timers() override { return nullptr; }
 
-    void addConsoleMessage(PassRefPtrWillBeRawPtr<ConsoleMessage>) override { }
+    void addConsoleMessage(RawPtr<ConsoleMessage>) override { }
     void logExceptionToConsole(const String& errorMessage, int scriptId, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtr<ScriptCallStack>) override { }
 
     void setIsSecureContext(bool);
@@ -65,7 +65,7 @@
 private:
     bool m_tasksNeedSuspension;
     bool m_isSecureContext;
-    OwnPtrWillBeMember<EventQueue> m_queue;
+    Member<EventQueue> m_queue;
 
     KURL m_dummyURL;
 };
diff --git a/third_party/WebKit/Source/core/timing/ConsoleMemory.cpp b/third_party/WebKit/Source/core/timing/ConsoleMemory.cpp
index 50b520c9..8663482 100644
--- a/third_party/WebKit/Source/core/timing/ConsoleMemory.cpp
+++ b/third_party/WebKit/Source/core/timing/ConsoleMemory.cpp
@@ -12,7 +12,7 @@
 // static
 ConsoleMemory& ConsoleMemory::from(Console& console)
 {
-    ConsoleMemory* supplement = static_cast<ConsoleMemory*>(HeapSupplement<Console>::from(console, supplementName()));
+    ConsoleMemory* supplement = static_cast<ConsoleMemory*>(Supplement<Console>::from(console, supplementName()));
     if (!supplement) {
         supplement = new ConsoleMemory();
         provideTo(console, supplementName(), supplement);
diff --git a/third_party/WebKit/Source/core/timing/ConsoleMemory.h b/third_party/WebKit/Source/core/timing/ConsoleMemory.h
index ad7c0db..d1701e3 100644
--- a/third_party/WebKit/Source/core/timing/ConsoleMemory.h
+++ b/third_party/WebKit/Source/core/timing/ConsoleMemory.h
@@ -12,14 +12,14 @@
 class Console;
 class MemoryInfo;
 
-class ConsoleMemory final : public GarbageCollected<ConsoleMemory>, public HeapSupplement<Console> {
+class ConsoleMemory final : public GarbageCollected<ConsoleMemory>, public Supplement<Console> {
     USING_GARBAGE_COLLECTED_MIXIN(ConsoleMemory);
 public:
     static ConsoleMemory& from(Console&);
     static MemoryInfo* memory(Console&);
     static void setMemory(Console&, MemoryInfo*) { }
 
-    DEFINE_INLINE_VIRTUAL_TRACE() { HeapSupplement<Console>::trace(visitor); }
+    DEFINE_INLINE_VIRTUAL_TRACE() { Supplement<Console>::trace(visitor); }
 
 private:
     static const char* supplementName() { return "ConsoleMemory"; }
diff --git a/third_party/WebKit/Source/core/timing/DOMWindowPerformance.cpp b/third_party/WebKit/Source/core/timing/DOMWindowPerformance.cpp
index 8b3b474..2548d09 100644
--- a/third_party/WebKit/Source/core/timing/DOMWindowPerformance.cpp
+++ b/third_party/WebKit/Source/core/timing/DOMWindowPerformance.cpp
@@ -16,13 +16,11 @@
 {
 }
 
-DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(DOMWindowPerformance);
-
 DEFINE_TRACE(DOMWindowPerformance)
 {
     visitor->trace(m_window);
     visitor->trace(m_performance);
-    WillBeHeapSupplement<LocalDOMWindow>::trace(visitor);
+    Supplement<LocalDOMWindow>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
@@ -35,10 +33,10 @@
 // static
 DOMWindowPerformance& DOMWindowPerformance::from(LocalDOMWindow& window)
 {
-    DOMWindowPerformance* supplement = static_cast<DOMWindowPerformance*>(WillBeHeapSupplement<LocalDOMWindow>::from(window, supplementName()));
+    DOMWindowPerformance* supplement = static_cast<DOMWindowPerformance*>(Supplement<LocalDOMWindow>::from(window, supplementName()));
     if (!supplement) {
         supplement = new DOMWindowPerformance(window);
-        provideTo(window, supplementName(), adoptPtrWillBeNoop(supplement));
+        provideTo(window, supplementName(), supplement);
     }
     return *supplement;
 }
diff --git a/third_party/WebKit/Source/core/timing/DOMWindowPerformance.h b/third_party/WebKit/Source/core/timing/DOMWindowPerformance.h
index 5b2b5ee..c486f307 100644
--- a/third_party/WebKit/Source/core/timing/DOMWindowPerformance.h
+++ b/third_party/WebKit/Source/core/timing/DOMWindowPerformance.h
@@ -16,11 +16,9 @@
 class DOMWindow;
 class Performance;
 
-class CORE_EXPORT DOMWindowPerformance final : public NoBaseWillBeGarbageCollected<DOMWindowPerformance>, public WillBeHeapSupplement<LocalDOMWindow>, public DOMWindowProperty {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(DOMWindowPerformance);
-    DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(DOMWindowPerformance);
+class CORE_EXPORT DOMWindowPerformance final : public GarbageCollected<DOMWindowPerformance>, public Supplement<LocalDOMWindow>, public DOMWindowProperty {
+    USING_GARBAGE_COLLECTED_MIXIN(DOMWindowPerformance);
     WTF_MAKE_NONCOPYABLE(DOMWindowPerformance);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(DOMWindowPerformance);
 public:
     static DOMWindowPerformance& from(LocalDOMWindow&);
     static Performance* performance(DOMWindow&);
@@ -34,8 +32,8 @@
     Performance* performance();
 
     // TODO(sof): try to move this direct reference and instead rely on frame().
-    RawPtrWillBeMember<LocalDOMWindow> m_window;
-    PersistentWillBeMember<Performance> m_performance;
+    Member<LocalDOMWindow> m_window;
+    Member<Performance> m_performance;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/timing/Performance.h b/third_party/WebKit/Source/core/timing/Performance.h
index 42681246..d67b714 100644
--- a/third_party/WebKit/Source/core/timing/Performance.h
+++ b/third_party/WebKit/Source/core/timing/Performance.h
@@ -43,7 +43,7 @@
 
 class CORE_EXPORT Performance final : public PerformanceBase, public DOMWindowProperty {
     DEFINE_WRAPPERTYPEINFO();
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(Performance);
+    USING_GARBAGE_COLLECTED_MIXIN(Performance);
 public:
     static Performance* create(LocalFrame* frame)
     {
diff --git a/third_party/WebKit/Source/core/timing/PerformanceCompositeTiming.h b/third_party/WebKit/Source/core/timing/PerformanceCompositeTiming.h
index 908cb30..6128e20 100644
--- a/third_party/WebKit/Source/core/timing/PerformanceCompositeTiming.h
+++ b/third_party/WebKit/Source/core/timing/PerformanceCompositeTiming.h
@@ -61,7 +61,7 @@
     ~PerformanceCompositeTiming() override;
 
     unsigned m_sourceFrame;
-    RefPtrWillBeMember<Document> m_requestingDocument;
+    Member<Document> m_requestingDocument;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/timing/PerformanceNavigation.h b/third_party/WebKit/Source/core/timing/PerformanceNavigation.h
index 2acc0eaf..2a72f1a2 100644
--- a/third_party/WebKit/Source/core/timing/PerformanceNavigation.h
+++ b/third_party/WebKit/Source/core/timing/PerformanceNavigation.h
@@ -42,7 +42,7 @@
 
 class CORE_EXPORT PerformanceNavigation final : public GarbageCollectedFinalized<PerformanceNavigation>, public ScriptWrappable, public DOMWindowProperty {
     DEFINE_WRAPPERTYPEINFO();
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(PerformanceNavigation);
+    USING_GARBAGE_COLLECTED_MIXIN(PerformanceNavigation);
 public:
     static PerformanceNavigation* create(LocalFrame* frame)
     {
diff --git a/third_party/WebKit/Source/core/timing/PerformanceRenderTiming.h b/third_party/WebKit/Source/core/timing/PerformanceRenderTiming.h
index 9aea801..53a1fc5 100644
--- a/third_party/WebKit/Source/core/timing/PerformanceRenderTiming.h
+++ b/third_party/WebKit/Source/core/timing/PerformanceRenderTiming.h
@@ -61,7 +61,7 @@
     ~PerformanceRenderTiming() override;
 
     unsigned m_sourceFrame;
-    RefPtrWillBeMember<Document> m_requestingDocument;
+    Member<Document> m_requestingDocument;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/timing/PerformanceTiming.h b/third_party/WebKit/Source/core/timing/PerformanceTiming.h
index cff29bfe..ac6a23b 100644
--- a/third_party/WebKit/Source/core/timing/PerformanceTiming.h
+++ b/third_party/WebKit/Source/core/timing/PerformanceTiming.h
@@ -50,7 +50,7 @@
 
 class CORE_EXPORT PerformanceTiming final : public GarbageCollectedFinalized<PerformanceTiming>, public ScriptWrappable, public DOMWindowProperty {
     DEFINE_WRAPPERTYPEINFO();
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(PerformanceTiming);
+    USING_GARBAGE_COLLECTED_MIXIN(PerformanceTiming);
 public:
     static PerformanceTiming* create(LocalFrame* frame)
     {
diff --git a/third_party/WebKit/Source/core/timing/SharedWorkerPerformance.cpp b/third_party/WebKit/Source/core/timing/SharedWorkerPerformance.cpp
index 59fa8ea..c6975dbe 100644
--- a/third_party/WebKit/Source/core/timing/SharedWorkerPerformance.cpp
+++ b/third_party/WebKit/Source/core/timing/SharedWorkerPerformance.cpp
@@ -49,7 +49,7 @@
 
 SharedWorkerPerformance& SharedWorkerPerformance::from(SharedWorker& sharedWorker)
 {
-    SharedWorkerPerformance* supplement = static_cast<SharedWorkerPerformance*>(HeapSupplement<SharedWorker>::from(sharedWorker, supplementName()));
+    SharedWorkerPerformance* supplement = static_cast<SharedWorkerPerformance*>(Supplement<SharedWorker>::from(sharedWorker, supplementName()));
     if (!supplement) {
         supplement = new SharedWorkerPerformance();
         provideTo(sharedWorker, supplementName(), supplement);
diff --git a/third_party/WebKit/Source/core/timing/SharedWorkerPerformance.h b/third_party/WebKit/Source/core/timing/SharedWorkerPerformance.h
index e049ad9..b02d24d 100644
--- a/third_party/WebKit/Source/core/timing/SharedWorkerPerformance.h
+++ b/third_party/WebKit/Source/core/timing/SharedWorkerPerformance.h
@@ -38,7 +38,7 @@
 class ExecutionContext;
 class SharedWorker;
 
-class SharedWorkerPerformance final : public GarbageCollected<SharedWorkerPerformance>, public HeapSupplement<SharedWorker> {
+class SharedWorkerPerformance final : public GarbageCollected<SharedWorkerPerformance>, public Supplement<SharedWorker> {
     USING_GARBAGE_COLLECTED_MIXIN(SharedWorkerPerformance);
 public:
     static SharedWorkerPerformance& from(SharedWorker&);
@@ -46,7 +46,7 @@
     static double workerStart(ExecutionContext*, SharedWorker&);
     double getWorkerStart(ExecutionContext*, SharedWorker&) const;
 
-    DEFINE_INLINE_VIRTUAL_TRACE() { HeapSupplement<SharedWorker>::trace(visitor); }
+    DEFINE_INLINE_VIRTUAL_TRACE() { Supplement<SharedWorker>::trace(visitor); }
 
 private:
     SharedWorkerPerformance();
diff --git a/third_party/WebKit/Source/core/timing/WorkerGlobalScopePerformance.cpp b/third_party/WebKit/Source/core/timing/WorkerGlobalScopePerformance.cpp
index c0998cb..c924fa1 100644
--- a/third_party/WebKit/Source/core/timing/WorkerGlobalScopePerformance.cpp
+++ b/third_party/WebKit/Source/core/timing/WorkerGlobalScopePerformance.cpp
@@ -46,10 +46,10 @@
 
 WorkerGlobalScopePerformance& WorkerGlobalScopePerformance::from(WorkerGlobalScope& context)
 {
-    WorkerGlobalScopePerformance* supplement = static_cast<WorkerGlobalScopePerformance*>(WillBeHeapSupplement<WorkerGlobalScope>::from(context, supplementName()));
+    WorkerGlobalScopePerformance* supplement = static_cast<WorkerGlobalScopePerformance*>(Supplement<WorkerGlobalScope>::from(context, supplementName()));
     if (!supplement) {
-        supplement = new WorkerGlobalScopePerformance();
-        provideTo(context, supplementName(), adoptPtrWillBeNoop(supplement));
+        supplement = new WorkerGlobalScopePerformance;
+        provideTo(context, supplementName(), supplement);
     }
     return *supplement;
 }
@@ -69,7 +69,7 @@
 DEFINE_TRACE(WorkerGlobalScopePerformance)
 {
     visitor->trace(m_performance);
-    WillBeHeapSupplement<WorkerGlobalScope>::trace(visitor);
+    Supplement<WorkerGlobalScope>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/timing/WorkerGlobalScopePerformance.h b/third_party/WebKit/Source/core/timing/WorkerGlobalScopePerformance.h
index 0c719fe..6cfa9bfa 100644
--- a/third_party/WebKit/Source/core/timing/WorkerGlobalScopePerformance.h
+++ b/third_party/WebKit/Source/core/timing/WorkerGlobalScopePerformance.h
@@ -39,9 +39,8 @@
 
 class WorkerGlobalScope;
 
-class WorkerGlobalScopePerformance final : public NoBaseWillBeGarbageCollected<WorkerGlobalScopePerformance>, public WillBeHeapSupplement<WorkerGlobalScope> {
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(WorkerGlobalScopePerformance);
-    USING_FAST_MALLOC_WILL_BE_REMOVED(WorkerGlobalScopePerformance);
+class WorkerGlobalScopePerformance final : public GarbageCollected<WorkerGlobalScopePerformance>, public Supplement<WorkerGlobalScope> {
+    USING_GARBAGE_COLLECTED_MIXIN(WorkerGlobalScopePerformance);
 public:
     static WorkerGlobalScopePerformance& from(WorkerGlobalScope&);
 
@@ -55,7 +54,7 @@
     WorkerPerformance* performance(WorkerGlobalScope*);
     static const char* supplementName();
 
-    PersistentWillBeMember<WorkerPerformance> m_performance;
+    Member<WorkerPerformance> m_performance;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/timing/WorkerPerformance.h b/third_party/WebKit/Source/core/timing/WorkerPerformance.h
index c62e55b5..fd46d56 100644
--- a/third_party/WebKit/Source/core/timing/WorkerPerformance.h
+++ b/third_party/WebKit/Source/core/timing/WorkerPerformance.h
@@ -45,7 +45,7 @@
 
 class WorkerPerformance final : public PerformanceBase, public ContextLifecycleObserver {
     DEFINE_WRAPPERTYPEINFO();
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(WorkerPerformance);
+    USING_GARBAGE_COLLECTED_MIXIN(WorkerPerformance);
 public:
     static WorkerPerformance* create(WorkerGlobalScope* context)
     {
diff --git a/third_party/WebKit/Source/core/workers/WorkerGlobalScopeProxyProvider.cpp b/third_party/WebKit/Source/core/workers/WorkerGlobalScopeProxyProvider.cpp
index 2477a55..5a764e1 100644
--- a/third_party/WebKit/Source/core/workers/WorkerGlobalScopeProxyProvider.cpp
+++ b/third_party/WebKit/Source/core/workers/WorkerGlobalScopeProxyProvider.cpp
@@ -36,7 +36,7 @@
 
 WorkerGlobalScopeProxyProvider* WorkerGlobalScopeProxyProvider::from(Page& page)
 {
-    return static_cast<WorkerGlobalScopeProxyProvider*>(HeapSupplement<Page>::from(page, supplementName()));
+    return static_cast<WorkerGlobalScopeProxyProvider*>(Supplement<Page>::from(page, supplementName()));
 }
 
 const char* WorkerGlobalScopeProxyProvider::supplementName()
@@ -46,7 +46,7 @@
 
 void provideWorkerGlobalScopeProxyProviderTo(Page& page, RawPtr<WorkerGlobalScopeProxyProvider> provider)
 {
-    HeapSupplement<Page>::provideTo(page, WorkerGlobalScopeProxyProvider::supplementName(), provider);
+    Supplement<Page>::provideTo(page, WorkerGlobalScopeProxyProvider::supplementName(), provider);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/workers/WorkerGlobalScopeProxyProvider.h b/third_party/WebKit/Source/core/workers/WorkerGlobalScopeProxyProvider.h
index 5e19338..fe05526c 100644
--- a/third_party/WebKit/Source/core/workers/WorkerGlobalScopeProxyProvider.h
+++ b/third_party/WebKit/Source/core/workers/WorkerGlobalScopeProxyProvider.h
@@ -43,7 +43,7 @@
 class WorkerGlobalScopeProxy;
 class Worker;
 
-class WorkerGlobalScopeProxyProvider : public HeapSupplement<Page> {
+class WorkerGlobalScopeProxyProvider : public Supplement<Page> {
     WTF_MAKE_NONCOPYABLE(WorkerGlobalScopeProxyProvider);
 public:
     WorkerGlobalScopeProxyProvider() { }
diff --git a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h
index dfaf9d4a..13b6453 100644
--- a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h
+++ b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h
@@ -69,7 +69,7 @@
 
 class XMLHttpRequest final : public XMLHttpRequestEventTarget, private ThreadableLoaderClient, public DocumentParserClient, public ActiveScriptWrappable, public ActiveDOMObject {
     DEFINE_WRAPPERTYPEINFO();
-    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(XMLHttpRequest);
+    USING_GARBAGE_COLLECTED_MIXIN(XMLHttpRequest);
 public:
     static XMLHttpRequest* create(ScriptState*);
     static XMLHttpRequest* create(ExecutionContext*);
@@ -276,8 +276,8 @@
     OwnPtr<TextResourceDecoder> m_decoder;
 
     ScriptString m_responseText;
-    RefPtrWillBeMember<Document> m_responseDocument;
-    RefPtrWillBeMember<DocumentParser> m_responseDocumentParser;
+    Member<Document> m_responseDocument;
+    Member<DocumentParser> m_responseDocumentParser;
 
     RefPtr<SharedBuffer> m_binaryResponseBuilder;
     long long m_lengthDownloadedToFile;
diff --git a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.cpp b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.cpp
index ff5a02eb..6051ce7 100644
--- a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.cpp
+++ b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.cpp
@@ -61,11 +61,11 @@
     m_total = 0;
 }
 
-PassRefPtrWillBeRawPtr<Event> XMLHttpRequestProgressEventThrottle::DeferredEvent::take()
+RawPtr<Event> XMLHttpRequestProgressEventThrottle::DeferredEvent::take()
 {
     ASSERT(m_isSet);
 
-    RefPtrWillBeRawPtr<Event> event = ProgressEvent::create(EventTypeNames::progress, m_lengthComputable, m_loaded, m_total);
+    RawPtr<Event> event = ProgressEvent::create(EventTypeNames::progress, m_lengthComputable, m_loaded, m_total);
     clear();
     return event.release();
 }
@@ -98,7 +98,7 @@
     }
 }
 
-void XMLHttpRequestProgressEventThrottle::dispatchReadyStateChangeEvent(PassRefPtrWillBeRawPtr<Event> event, DeferredEventAction action)
+void XMLHttpRequestProgressEventThrottle::dispatchReadyStateChangeEvent(RawPtr<Event> event, DeferredEventAction action)
 {
     XMLHttpRequest::State state = m_target->readyState();
     // Given that ResourceDispatcher doesn't deliver an event when suspended,
@@ -123,7 +123,7 @@
     }
 }
 
-void XMLHttpRequestProgressEventThrottle::dispatchProgressProgressEvent(PassRefPtrWillBeRawPtr<Event> progressEvent)
+void XMLHttpRequestProgressEventThrottle::dispatchProgressProgressEvent(RawPtr<Event> progressEvent)
 {
     XMLHttpRequest::State state = m_target->readyState();
     if (m_target->readyState() == XMLHttpRequest::LOADING && m_hasDispatchedProgressProgressEvent) {
diff --git a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.h b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.h
index 61269f2e..fbae73f3 100644
--- a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.h
+++ b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.h
@@ -75,7 +75,7 @@
     void dispatchProgressEvent(const AtomicString&, bool lengthComputable, unsigned long long loaded, unsigned long long total);
     // Dispatches the given event after operation about the "progress" event
     // depending on the value of the ProgressEventAction argument.
-    void dispatchReadyStateChangeEvent(PassRefPtrWillBeRawPtr<Event>, DeferredEventAction);
+    void dispatchReadyStateChangeEvent(RawPtr<Event>, DeferredEventAction);
 
     void suspend();
     void resume();
@@ -89,7 +89,7 @@
 
     // Dispatches a "progress" progress event and usually a readyStateChange
     // event as well.
-    void dispatchProgressProgressEvent(PassRefPtrWillBeRawPtr<Event>);
+    void dispatchProgressProgressEvent(RawPtr<Event>);
 
     // The main purpose of this class is to throttle the "progress"
     // ProgressEvent dispatching. This class represents such a deferred
@@ -100,7 +100,7 @@
         void set(bool lengthComputable, unsigned long long loaded, unsigned long long total);
         void clear();
         bool isSet() const { return m_isSet; }
-        PassRefPtrWillBeRawPtr<Event> take();
+        RawPtr<Event> take();
 
     private:
         unsigned long long m_loaded;
diff --git a/third_party/WebKit/Source/modules/audio_output_devices/AudioOutputDeviceClient.cpp b/third_party/WebKit/Source/modules/audio_output_devices/AudioOutputDeviceClient.cpp
index 4120e62..7389fdc 100644
--- a/third_party/WebKit/Source/modules/audio_output_devices/AudioOutputDeviceClient.cpp
+++ b/third_party/WebKit/Source/modules/audio_output_devices/AudioOutputDeviceClient.cpp
@@ -24,7 +24,7 @@
     if (!document->frame() || !document->frame()->isLocalFrame())
         return nullptr;
 
-    return static_cast<AudioOutputDeviceClient*>(HeapSupplement<LocalFrame>::from(document->frame(), supplementName()));
+    return static_cast<AudioOutputDeviceClient*>(Supplement<LocalFrame>::from(document->frame(), supplementName()));
 }
 
 void provideAudioOutputDeviceClientTo(LocalFrame& frame, RawPtr<AudioOutputDeviceClient> client)
diff --git a/third_party/WebKit/Source/modules/audio_output_devices/AudioOutputDeviceClient.h b/third_party/WebKit/Source/modules/audio_output_devices/AudioOutputDeviceClient.h
index c7a5db3..953aad1 100644
--- a/third_party/WebKit/Source/modules/audio_output_devices/AudioOutputDeviceClient.h
+++ b/third_party/WebKit/Source/modules/audio_output_devices/AudioOutputDeviceClient.h
@@ -17,14 +17,14 @@
 class WebString;
 class ScriptState;
 
-class AudioOutputDeviceClient : public HeapSupplement<LocalFrame> {
+class AudioOutputDeviceClient : public Supplement<LocalFrame> {
 public:
     virtual ~AudioOutputDeviceClient() {}
 
     // Checks that a given sink exists and has permissions to be used from the origin of the current frame.
     virtual void checkIfAudioSinkExistsAndIsAuthorized(ExecutionContext*, const WebString& sinkId, PassOwnPtr<WebSetSinkIdCallbacks>) = 0;
 
-    // HeapSupplement requirements.
+    // Supplement requirements.
     static AudioOutputDeviceClient* from(ExecutionContext*);
     static const char* supplementName();
 };
diff --git a/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp b/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
index 78f0bdb4..d4f2da94 100644
--- a/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
+++ b/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
@@ -117,17 +117,17 @@
 
 HTMLMediaElementAudioOutputDevice& HTMLMediaElementAudioOutputDevice::from(HTMLMediaElement& element)
 {
-    HTMLMediaElementAudioOutputDevice* supplement = static_cast<HTMLMediaElementAudioOutputDevice*>(HeapSupplement<HTMLMediaElement>::from(element, supplementName()));
+    HTMLMediaElementAudioOutputDevice* supplement = static_cast<HTMLMediaElementAudioOutputDevice*>(Supplement<HTMLMediaElement>::from(element, supplementName()));
     if (!supplement) {
         supplement = new HTMLMediaElementAudioOutputDevice();
-        provideTo(element, supplementName(), adoptPtrWillBeNoop(supplement));
+        provideTo(element, supplementName(), supplement);
     }
     return *supplement;
 }
 
 DEFINE_TRACE(HTMLMediaElementAudioOutputDevice)
 {
-    HeapSupplement<HTMLMediaElement>::trace(visitor);
+    Supplement<HTMLMediaElement>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.h b/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.h
index 8c61d71..9ec8c365 100644
--- a/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.h
+++ b/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.h
@@ -18,7 +18,7 @@
 class HTMLMediaElement;
 class ScriptState;
 
-class MODULES_EXPORT HTMLMediaElementAudioOutputDevice final : public GarbageCollectedFinalized<HTMLMediaElementAudioOutputDevice>, public HeapSupplement<HTMLMediaElement> {
+class MODULES_EXPORT HTMLMediaElementAudioOutputDevice final : public GarbageCollectedFinalized<HTMLMediaElementAudioOutputDevice>, public Supplement<HTMLMediaElement> {
     USING_GARBAGE_COLLECTED_MIXIN(HTMLMediaElementAudioOutputDevice);
 public:
     DECLARE_VIRTUAL_TRACE();
diff --git a/third_party/WebKit/Source/modules/background_sync/ServiceWorkerRegistrationSync.cpp b/third_party/WebKit/Source/modules/background_sync/ServiceWorkerRegistrationSync.cpp
index 6305c37..868d06d0 100644
--- a/third_party/WebKit/Source/modules/background_sync/ServiceWorkerRegistrationSync.cpp
+++ b/third_party/WebKit/Source/modules/background_sync/ServiceWorkerRegistrationSync.cpp
@@ -25,7 +25,7 @@
 
 ServiceWorkerRegistrationSync& ServiceWorkerRegistrationSync::from(ServiceWorkerRegistration& registration)
 {
-    ServiceWorkerRegistrationSync* supplement = static_cast<ServiceWorkerRegistrationSync*>(HeapSupplement<ServiceWorkerRegistration>::from(registration, supplementName()));
+    ServiceWorkerRegistrationSync* supplement = static_cast<ServiceWorkerRegistrationSync*>(Supplement<ServiceWorkerRegistration>::from(registration, supplementName()));
     if (!supplement) {
         supplement = new ServiceWorkerRegistrationSync(&registration);
         provideTo(registration, supplementName(), supplement);
@@ -49,7 +49,7 @@
 {
     visitor->trace(m_registration);
     visitor->trace(m_syncManager);
-    HeapSupplement<ServiceWorkerRegistration>::trace(visitor);
+    Supplement<ServiceWorkerRegistration>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/background_sync/ServiceWorkerRegistrationSync.h b/third_party/WebKit/Source/modules/background_sync/ServiceWorkerRegistrationSync.h
index 3b040b5..d317ccef 100644
--- a/third_party/WebKit/Source/modules/background_sync/ServiceWorkerRegistrationSync.h
+++ b/third_party/WebKit/Source/modules/background_sync/ServiceWorkerRegistrationSync.h
@@ -13,7 +13,7 @@
 class SyncManager;
 class ServiceWorkerRegistration;
 
-class ServiceWorkerRegistrationSync final : public GarbageCollectedFinalized<ServiceWorkerRegistrationSync>, public HeapSupplement<ServiceWorkerRegistration> {
+class ServiceWorkerRegistrationSync final : public GarbageCollectedFinalized<ServiceWorkerRegistrationSync>, public Supplement<ServiceWorkerRegistration> {
     USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerRegistrationSync);
     WTF_MAKE_NONCOPYABLE(ServiceWorkerRegistrationSync);
 public:
diff --git a/third_party/WebKit/Source/modules/background_sync/SyncEvent.h b/third_party/WebKit/Source/modules/background_sync/SyncEvent.h
index 590637b..b69d50e 100644
--- a/third_party/WebKit/Source/modules/background_sync/SyncEvent.h
+++ b/third_party/WebKit/Source/modules/background_sync/SyncEvent.h
@@ -19,7 +19,7 @@
 public:
     static RawPtr<SyncEvent> create()
     {
-        return adoptRefWillBeNoop(new SyncEvent);
+        return new SyncEvent;
     }
     static RawPtr<SyncEvent> create(const AtomicString& type, const String& tag, bool lastChance, WaitUntilObserver* observer)
     {
diff --git a/third_party/WebKit/Source/modules/battery/NavigatorBattery.cpp b/third_party/WebKit/Source/modules/battery/NavigatorBattery.cpp
index d38a7adf..3cd87c0 100644
--- a/third_party/WebKit/Source/modules/battery/NavigatorBattery.cpp
+++ b/third_party/WebKit/Source/modules/battery/NavigatorBattery.cpp
@@ -33,7 +33,7 @@
 
 NavigatorBattery& NavigatorBattery::from(Navigator& navigator)
 {
-    NavigatorBattery* supplement = static_cast<NavigatorBattery*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorBattery* supplement = static_cast<NavigatorBattery*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorBattery();
         provideTo(navigator, supplementName(), supplement);
@@ -44,7 +44,7 @@
 DEFINE_TRACE(NavigatorBattery)
 {
     visitor->trace(m_batteryManager);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/battery/NavigatorBattery.h b/third_party/WebKit/Source/modules/battery/NavigatorBattery.h
index 3539751a..57b64e8 100644
--- a/third_party/WebKit/Source/modules/battery/NavigatorBattery.h
+++ b/third_party/WebKit/Source/modules/battery/NavigatorBattery.h
@@ -15,7 +15,7 @@
 class BatteryManager;
 class Navigator;
 
-class NavigatorBattery final : public GarbageCollected<NavigatorBattery>, public HeapSupplement<Navigator> {
+class NavigatorBattery final : public GarbageCollected<NavigatorBattery>, public Supplement<Navigator> {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorBattery);
 public:
     static NavigatorBattery& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.cpp b/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.cpp
index a75ae8ae..adcbe47 100644
--- a/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.cpp
+++ b/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.cpp
@@ -32,7 +32,7 @@
 DEFINE_TRACE(NavigatorBeacon)
 {
     LocalFrameLifecycleObserver::trace(visitor);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
 }
 
 const char* NavigatorBeacon::supplementName()
@@ -42,7 +42,7 @@
 
 NavigatorBeacon& NavigatorBeacon::from(Navigator& navigator)
 {
-    NavigatorBeacon* supplement = static_cast<NavigatorBeacon*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorBeacon* supplement = static_cast<NavigatorBeacon*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorBeacon(navigator);
         provideTo(navigator, supplementName(), supplement);
diff --git a/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.h b/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.h
index 5f11250..bc76a6da 100644
--- a/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.h
+++ b/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.h
@@ -18,7 +18,7 @@
 class KURL;
 class ArrayBufferViewOrBlobOrStringOrFormData;
 
-class NavigatorBeacon final : public GarbageCollectedFinalized<NavigatorBeacon>, public LocalFrameLifecycleObserver, public HeapSupplement<Navigator> {
+class NavigatorBeacon final : public GarbageCollectedFinalized<NavigatorBeacon>, public LocalFrameLifecycleObserver, public Supplement<Navigator> {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorBeacon);
 public:
     static NavigatorBeacon& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothSupplement.cpp b/third_party/WebKit/Source/modules/bluetooth/BluetoothSupplement.cpp
index e0493ae..df2b273 100644
--- a/third_party/WebKit/Source/modules/bluetooth/BluetoothSupplement.cpp
+++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothSupplement.cpp
@@ -21,12 +21,12 @@
 void BluetoothSupplement::provideTo(LocalFrame& frame, WebBluetooth* bluetooth)
 {
     RawPtr<BluetoothSupplement> bluetoothSupplement = new BluetoothSupplement(bluetooth);
-    HeapSupplement<LocalFrame>::provideTo(frame, supplementName(), bluetoothSupplement.release());
+    Supplement<LocalFrame>::provideTo(frame, supplementName(), bluetoothSupplement.release());
 };
 
 WebBluetooth* BluetoothSupplement::from(LocalFrame* frame)
 {
-    BluetoothSupplement* supplement = static_cast<BluetoothSupplement*>(HeapSupplement<LocalFrame>::from(frame, supplementName()));
+    BluetoothSupplement* supplement = static_cast<BluetoothSupplement*>(Supplement<LocalFrame>::from(frame, supplementName()));
 
     ASSERT(supplement);
     ASSERT(supplement->m_bluetooth);
@@ -49,7 +49,7 @@
 
 DEFINE_TRACE(BluetoothSupplement)
 {
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothSupplement.h b/third_party/WebKit/Source/modules/bluetooth/BluetoothSupplement.h
index d23c3c2..48b4372 100644
--- a/third_party/WebKit/Source/modules/bluetooth/BluetoothSupplement.h
+++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothSupplement.h
@@ -14,7 +14,7 @@
 // This class is attached to a LocalFrame in WebLocalFrameImpl::setCoreFrame, to
 // pass WebFrameClient::bluetooth() (accessible by web/ only) to the Bluetooth
 // code in modules/.
-class BLINK_EXPORT BluetoothSupplement : public GarbageCollected<BluetoothSupplement>, public HeapSupplement<LocalFrame> {
+class BLINK_EXPORT BluetoothSupplement : public GarbageCollected<BluetoothSupplement>, public Supplement<LocalFrame> {
     WTF_MAKE_NONCOPYABLE(BluetoothSupplement);
     USING_GARBAGE_COLLECTED_MIXIN(BluetoothSupplement);
 
diff --git a/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.cpp b/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.cpp
index fb291b8..43e567ae 100644
--- a/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.cpp
+++ b/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.cpp
@@ -11,7 +11,7 @@
 
 NavigatorBluetooth& NavigatorBluetooth::from(Navigator& navigator)
 {
-    NavigatorBluetooth* supplement = static_cast<NavigatorBluetooth*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorBluetooth* supplement = static_cast<NavigatorBluetooth*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorBluetooth();
         provideTo(navigator, supplementName(), supplement);
@@ -34,7 +34,7 @@
 DEFINE_TRACE(NavigatorBluetooth)
 {
     visitor->trace(m_bluetooth);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
 }
 
 NavigatorBluetooth::NavigatorBluetooth()
diff --git a/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.h b/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.h
index 3bcf7a2..40a8216 100644
--- a/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.h
+++ b/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.h
@@ -13,7 +13,7 @@
 class Bluetooth;
 class Navigator;
 
-class NavigatorBluetooth final : public GarbageCollected<NavigatorBluetooth>, public HeapSupplement<Navigator> {
+class NavigatorBluetooth final : public GarbageCollected<NavigatorBluetooth>, public Supplement<Navigator> {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorBluetooth);
 public:
     // Gets, or creates, NavigatorBluetooth supplement on Navigator.
diff --git a/third_party/WebKit/Source/modules/cachestorage/CacheTest.cpp b/third_party/WebKit/Source/modules/cachestorage/CacheTest.cpp
index 7bc1990d..cbd0ea7 100644
--- a/third_party/WebKit/Source/modules/cachestorage/CacheTest.cpp
+++ b/third_party/WebKit/Source/modules/cachestorage/CacheTest.cpp
@@ -39,7 +39,7 @@
 public:
     static RawPtr<ScopedFetcherForTests> create()
     {
-        return adoptPtrWillBeNoop(new ScopedFetcherForTests);
+        return new ScopedFetcherForTests;
     }
 
     ScriptPromise fetch(ScriptState* scriptState, const RequestInfo& requestInfo, const Dictionary&, ExceptionState&) override
diff --git a/third_party/WebKit/Source/modules/cachestorage/GlobalCacheStorage.cpp b/third_party/WebKit/Source/modules/cachestorage/GlobalCacheStorage.cpp
index bd9eaac..84505c6 100644
--- a/third_party/WebKit/Source/modules/cachestorage/GlobalCacheStorage.cpp
+++ b/third_party/WebKit/Source/modules/cachestorage/GlobalCacheStorage.cpp
@@ -19,15 +19,15 @@
 namespace {
 
 template <typename T>
-class GlobalCacheStorageImpl final : public GarbageCollectedFinalized<GlobalCacheStorageImpl<T>>, public HeapSupplement<T> {
+class GlobalCacheStorageImpl final : public GarbageCollectedFinalized<GlobalCacheStorageImpl<T>>, public Supplement<T> {
     USING_GARBAGE_COLLECTED_MIXIN(GlobalCacheStorageImpl);
 public:
     static GlobalCacheStorageImpl& from(T& supplementable, ExecutionContext* executionContext)
     {
-        GlobalCacheStorageImpl* supplement = static_cast<GlobalCacheStorageImpl*>(HeapSupplement<T>::from(supplementable, name()));
+        GlobalCacheStorageImpl* supplement = static_cast<GlobalCacheStorageImpl*>(Supplement<T>::from(supplementable, name()));
         if (!supplement) {
-            supplement = new GlobalCacheStorageImpl();
-            HeapSupplement<T>::provideTo(supplementable, name(), adoptPtrWillBeNoop(supplement));
+            supplement = new GlobalCacheStorageImpl;
+            Supplement<T>::provideTo(supplementable, name(), supplement);
         }
         return *supplement;
     }
@@ -62,7 +62,7 @@
     DEFINE_INLINE_VIRTUAL_TRACE()
     {
         visitor->trace(m_caches);
-        HeapSupplement<T>::trace(visitor);
+        Supplement<T>::trace(visitor);
     }
 
 private:
diff --git a/third_party/WebKit/Source/modules/canvas/HTMLCanvasElementModuleTest.cpp b/third_party/WebKit/Source/modules/canvas/HTMLCanvasElementModuleTest.cpp
index 4e3566f..1388183 100644
--- a/third_party/WebKit/Source/modules/canvas/HTMLCanvasElementModuleTest.cpp
+++ b/third_party/WebKit/Source/modules/canvas/HTMLCanvasElementModuleTest.cpp
@@ -21,7 +21,7 @@
         Page::PageClients pageClients;
         fillWithEmptyClients(pageClients);
         OwnPtr<DummyPageHolder> m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600), &pageClients);
-        RefPtrWillBePersistent<HTMLDocument> m_document = toHTMLDocument(&m_dummyPageHolder->document());
+        Persistent<HTMLDocument> m_document = toHTMLDocument(&m_dummyPageHolder->document());
         m_document->documentElement()->setInnerHTML("<body><canvas id='c'></canvas></body>", ASSERT_NO_EXCEPTION);
         m_document->view()->updateAllLifecyclePhases();
         m_canvasElement = toHTMLCanvasElement(m_document->getElementById("c"));
@@ -29,7 +29,7 @@
 
     HTMLCanvasElement& canvasElement() const { return *m_canvasElement; }
 private:
-    RefPtrWillBePersistent<HTMLCanvasElement> m_canvasElement;
+    Persistent<HTMLCanvasElement> m_canvasElement;
 };
 
 TEST_F(HTMLCanvasElementModuleTest, TransferControlToOffscreen)
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.h b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.h
index 3dd9caf6..32a55d71 100644
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.h
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.h
@@ -24,7 +24,7 @@
 public:
     static RawPtr<CanvasRenderingContext2DState> create()
     {
-        return adoptPtrWillBeNoop(new CanvasRenderingContext2DState);
+        return new CanvasRenderingContext2DState;
     }
 
     ~CanvasRenderingContext2DState() override;
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
index af0af594..c95f88a 100644
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
@@ -95,7 +95,7 @@
     public:
         static RawPtr<WrapGradients> create()
         {
-            return adoptPtrWillBeNoop(new WrapGradients);
+            return new WrapGradients;
         }
 
         DEFINE_INLINE_TRACE()
diff --git a/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerClient.cpp b/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerClient.cpp
index 73913e8..30b7bbb 100644
--- a/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerClient.cpp
+++ b/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerClient.cpp
@@ -22,7 +22,7 @@
 
 DEFINE_TRACE(CredentialManagerClient)
 {
-    HeapSupplement<Page>::trace(visitor);
+    Supplement<Page>::trace(visitor);
 }
 
 // static
@@ -42,12 +42,12 @@
 // static
 CredentialManagerClient* CredentialManagerClient::from(Page* page)
 {
-    return static_cast<CredentialManagerClient*>(HeapSupplement<Page>::from(page, supplementName()));
+    return static_cast<CredentialManagerClient*>(Supplement<Page>::from(page, supplementName()));
 }
 
 void provideCredentialManagerClientTo(Page& page, CredentialManagerClient* client)
 {
-    CredentialManagerClient::provideTo(page, CredentialManagerClient::supplementName(), adoptPtrWillBeNoop(client));
+    CredentialManagerClient::provideTo(page, CredentialManagerClient::supplementName(), client);
 }
 
 void CredentialManagerClient::dispatchFailedSignIn(const WebCredential& credential, WebCredentialManagerClient::NotificationCallbacks* callbacks)
diff --git a/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerClient.h b/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerClient.h
index ae612d2..a09998b 100644
--- a/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerClient.h
+++ b/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerClient.h
@@ -20,7 +20,7 @@
 
 // CredentialManagerClient lives as a supplement to Page, and wraps the embedder-provided
 // WebCredentialManagerClient's methods to make them visible to the bindings code.
-class MODULES_EXPORT CredentialManagerClient final : public GarbageCollectedFinalized<CredentialManagerClient>, public HeapSupplement<Page> {
+class MODULES_EXPORT CredentialManagerClient final : public GarbageCollectedFinalized<CredentialManagerClient>, public Supplement<Page> {
     USING_GARBAGE_COLLECTED_MIXIN(CredentialManagerClient);
 public:
     explicit CredentialManagerClient(WebCredentialManagerClient*);
diff --git a/third_party/WebKit/Source/modules/credentialmanager/NavigatorCredentials.cpp b/third_party/WebKit/Source/modules/credentialmanager/NavigatorCredentials.cpp
index 17c408c..5326cf0f 100644
--- a/third_party/WebKit/Source/modules/credentialmanager/NavigatorCredentials.cpp
+++ b/third_party/WebKit/Source/modules/credentialmanager/NavigatorCredentials.cpp
@@ -23,7 +23,7 @@
 
 NavigatorCredentials& NavigatorCredentials::from(Navigator& navigator)
 {
-    NavigatorCredentials* supplement = static_cast<NavigatorCredentials*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorCredentials* supplement = static_cast<NavigatorCredentials*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorCredentials(navigator);
         provideTo(navigator, supplementName(), supplement);
@@ -51,7 +51,7 @@
 DEFINE_TRACE(NavigatorCredentials)
 {
     visitor->trace(m_credentialsContainer);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/credentialmanager/NavigatorCredentials.h b/third_party/WebKit/Source/modules/credentialmanager/NavigatorCredentials.h
index 59fdc36..bcf9126 100644
--- a/third_party/WebKit/Source/modules/credentialmanager/NavigatorCredentials.h
+++ b/third_party/WebKit/Source/modules/credentialmanager/NavigatorCredentials.h
@@ -15,7 +15,7 @@
 class CredentialsContainer;
 class Navigator;
 
-class NavigatorCredentials final : public GarbageCollectedFinalized<NavigatorCredentials>, public HeapSupplement<Navigator>, public DOMWindowProperty {
+class NavigatorCredentials final : public GarbageCollectedFinalized<NavigatorCredentials>, public Supplement<Navigator>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorCredentials);
 public:
     static NavigatorCredentials& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/crypto/DOMWindowCrypto.cpp b/third_party/WebKit/Source/modules/crypto/DOMWindowCrypto.cpp
index f8c5489d8..d4a663e 100644
--- a/third_party/WebKit/Source/modules/crypto/DOMWindowCrypto.cpp
+++ b/third_party/WebKit/Source/modules/crypto/DOMWindowCrypto.cpp
@@ -47,10 +47,10 @@
 
 DOMWindowCrypto& DOMWindowCrypto::from(LocalDOMWindow& window)
 {
-    DOMWindowCrypto* supplement = static_cast<DOMWindowCrypto*>(HeapSupplement<LocalDOMWindow>::from(window, supplementName()));
+    DOMWindowCrypto* supplement = static_cast<DOMWindowCrypto*>(Supplement<LocalDOMWindow>::from(window, supplementName()));
     if (!supplement) {
         supplement = new DOMWindowCrypto(window);
-        provideTo(window, supplementName(), adoptPtrWillBeNoop(supplement));
+        provideTo(window, supplementName(), supplement);
     }
     return *supplement;
 }
@@ -70,7 +70,7 @@
 DEFINE_TRACE(DOMWindowCrypto)
 {
     visitor->trace(m_crypto);
-    HeapSupplement<LocalDOMWindow>::trace(visitor);
+    Supplement<LocalDOMWindow>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/crypto/DOMWindowCrypto.h b/third_party/WebKit/Source/modules/crypto/DOMWindowCrypto.h
index 9d5f361..9f965bd 100644
--- a/third_party/WebKit/Source/modules/crypto/DOMWindowCrypto.h
+++ b/third_party/WebKit/Source/modules/crypto/DOMWindowCrypto.h
@@ -40,7 +40,7 @@
 class Crypto;
 class DOMWindow;
 
-class DOMWindowCrypto final : public GarbageCollected<DOMWindowCrypto>, public HeapSupplement<LocalDOMWindow>, public DOMWindowProperty {
+class DOMWindowCrypto final : public GarbageCollected<DOMWindowCrypto>, public Supplement<LocalDOMWindow>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(DOMWindowCrypto);
 public:
     static DOMWindowCrypto& from(LocalDOMWindow&);
diff --git a/third_party/WebKit/Source/modules/csspaint/WindowPaintWorklet.cpp b/third_party/WebKit/Source/modules/csspaint/WindowPaintWorklet.cpp
index 0db67ca..ad97908 100644
--- a/third_party/WebKit/Source/modules/csspaint/WindowPaintWorklet.cpp
+++ b/third_party/WebKit/Source/modules/csspaint/WindowPaintWorklet.cpp
@@ -23,7 +23,7 @@
 // static
 WindowPaintWorklet& WindowPaintWorklet::from(LocalDOMWindow& window)
 {
-    WindowPaintWorklet* supplement = static_cast<WindowPaintWorklet*>(HeapSupplement<LocalDOMWindow>::from(window, supplementName()));
+    WindowPaintWorklet* supplement = static_cast<WindowPaintWorklet*>(Supplement<LocalDOMWindow>::from(window, supplementName()));
     if (!supplement) {
         supplement = new WindowPaintWorklet(window);
         provideTo(window, supplementName(), supplement);
@@ -47,7 +47,7 @@
 DEFINE_TRACE(WindowPaintWorklet)
 {
     visitor->trace(m_paintWorklet);
-    HeapSupplement<LocalDOMWindow>::trace(visitor);
+    Supplement<LocalDOMWindow>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/csspaint/WindowPaintWorklet.h b/third_party/WebKit/Source/modules/csspaint/WindowPaintWorklet.h
index 7d663893d..404ec033 100644
--- a/third_party/WebKit/Source/modules/csspaint/WindowPaintWorklet.h
+++ b/third_party/WebKit/Source/modules/csspaint/WindowPaintWorklet.h
@@ -17,7 +17,7 @@
 class PaintWorklet;
 class Worklet;
 
-class MODULES_EXPORT WindowPaintWorklet final : public GarbageCollected<WindowPaintWorklet>, public HeapSupplement<LocalDOMWindow>, public DOMWindowProperty {
+class MODULES_EXPORT WindowPaintWorklet final : public GarbageCollected<WindowPaintWorklet>, public Supplement<LocalDOMWindow>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(WindowPaintWorklet);
 public:
     static WindowPaintWorklet& from(LocalDOMWindow&);
diff --git a/third_party/WebKit/Source/modules/device_light/DeviceLightController.cpp b/third_party/WebKit/Source/modules/device_light/DeviceLightController.cpp
index 1fed15f5..adce04d 100644
--- a/third_party/WebKit/Source/modules/device_light/DeviceLightController.cpp
+++ b/third_party/WebKit/Source/modules/device_light/DeviceLightController.cpp
@@ -31,10 +31,10 @@
 
 DeviceLightController& DeviceLightController::from(Document& document)
 {
-    DeviceLightController* controller = static_cast<DeviceLightController*>(HeapSupplement<Document>::from(document, supplementName()));
+    DeviceLightController* controller = static_cast<DeviceLightController*>(Supplement<Document>::from(document, supplementName()));
     if (!controller) {
         controller = new DeviceLightController(document);
-        HeapSupplement<Document>::provideTo(document, supplementName(), adoptPtrWillBeNoop(controller));
+        Supplement<Document>::provideTo(document, supplementName(), controller);
     }
     return *controller;
 }
@@ -74,7 +74,7 @@
 DEFINE_TRACE(DeviceLightController)
 {
     DeviceSingleWindowEventController::trace(visitor);
-    HeapSupplement<Document>::trace(visitor);
+    Supplement<Document>::trace(visitor);
 }
 
 
diff --git a/third_party/WebKit/Source/modules/device_light/DeviceLightController.h b/third_party/WebKit/Source/modules/device_light/DeviceLightController.h
index b4fe665..f8fa7707 100644
--- a/third_party/WebKit/Source/modules/device_light/DeviceLightController.h
+++ b/third_party/WebKit/Source/modules/device_light/DeviceLightController.h
@@ -13,7 +13,7 @@
 
 class Event;
 
-class MODULES_EXPORT DeviceLightController final : public DeviceSingleWindowEventController, public HeapSupplement<Document> {
+class MODULES_EXPORT DeviceLightController final : public DeviceSingleWindowEventController, public Supplement<Document> {
     USING_GARBAGE_COLLECTED_MIXIN(DeviceLightController);
 public:
     ~DeviceLightController() override;
diff --git a/third_party/WebKit/Source/modules/device_light/DeviceLightEvent.h b/third_party/WebKit/Source/modules/device_light/DeviceLightEvent.h
index 5ce9a066..aab1174 100644
--- a/third_party/WebKit/Source/modules/device_light/DeviceLightEvent.h
+++ b/third_party/WebKit/Source/modules/device_light/DeviceLightEvent.h
@@ -18,7 +18,7 @@
 
     static RawPtr<DeviceLightEvent> create()
     {
-        return adoptRefWillBeNoop(new DeviceLightEvent);
+        return new DeviceLightEvent;
     }
     static RawPtr<DeviceLightEvent> create(const AtomicString& eventType, double value)
     {
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionController.cpp b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionController.cpp
index 06100c5..4e3f1e3 100644
--- a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionController.cpp
+++ b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionController.cpp
@@ -36,10 +36,10 @@
 
 DeviceMotionController& DeviceMotionController::from(Document& document)
 {
-    DeviceMotionController* controller = static_cast<DeviceMotionController*>(HeapSupplement<Document>::from(document, supplementName()));
+    DeviceMotionController* controller = static_cast<DeviceMotionController*>(Supplement<Document>::from(document, supplementName()));
     if (!controller) {
         controller = new DeviceMotionController(document);
-        HeapSupplement<Document>::provideTo(document, supplementName(), adoptPtrWillBeNoop(controller));
+        Supplement<Document>::provideTo(document, supplementName(), controller);
     }
     return *controller;
 }
@@ -101,7 +101,7 @@
 DEFINE_TRACE(DeviceMotionController)
 {
     DeviceSingleWindowEventController::trace(visitor);
-    HeapSupplement<Document>::trace(visitor);
+    Supplement<Document>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionController.h b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionController.h
index a12bbec9..6bd69be6 100644
--- a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionController.h
+++ b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionController.h
@@ -13,7 +13,7 @@
 
 class Event;
 
-class MODULES_EXPORT DeviceMotionController final : public DeviceSingleWindowEventController, public HeapSupplement<Document> {
+class MODULES_EXPORT DeviceMotionController final : public DeviceSingleWindowEventController, public Supplement<Document> {
     USING_GARBAGE_COLLECTED_MIXIN(DeviceMotionController);
 public:
     ~DeviceMotionController() override;
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.h b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.h
index f7cfe99..89357f5 100644
--- a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.h
+++ b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.h
@@ -41,7 +41,7 @@
     ~DeviceMotionEvent() override;
     static RawPtr<DeviceMotionEvent> create()
     {
-        return adoptRefWillBeNoop(new DeviceMotionEvent);
+        return new DeviceMotionEvent;
     }
     static RawPtr<DeviceMotionEvent> create(const AtomicString& eventType, DeviceMotionData* deviceMotionData)
     {
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationAbsoluteController.cpp b/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationAbsoluteController.cpp
index f48a90f..88221a6 100644
--- a/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationAbsoluteController.cpp
+++ b/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationAbsoluteController.cpp
@@ -29,10 +29,10 @@
 
 DeviceOrientationAbsoluteController& DeviceOrientationAbsoluteController::from(Document& document)
 {
-    DeviceOrientationAbsoluteController* controller = static_cast<DeviceOrientationAbsoluteController*>(HeapSupplement<Document>::from(document, DeviceOrientationAbsoluteController::supplementName()));
+    DeviceOrientationAbsoluteController* controller = static_cast<DeviceOrientationAbsoluteController*>(Supplement<Document>::from(document, DeviceOrientationAbsoluteController::supplementName()));
     if (!controller) {
         controller = new DeviceOrientationAbsoluteController(document);
-        HeapSupplement<Document>::provideTo(document, DeviceOrientationAbsoluteController::supplementName(), adoptPtrWillBeNoop(controller));
+        Supplement<Document>::provideTo(document, DeviceOrientationAbsoluteController::supplementName(), controller);
     }
     return *controller;
 }
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationController.cpp b/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationController.cpp
index f539c32..a6b606b7 100644
--- a/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationController.cpp
+++ b/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationController.cpp
@@ -43,10 +43,10 @@
 
 DeviceOrientationController& DeviceOrientationController::from(Document& document)
 {
-    DeviceOrientationController* controller = static_cast<DeviceOrientationController*>(HeapSupplement<Document>::from(document, supplementName()));
+    DeviceOrientationController* controller = static_cast<DeviceOrientationController*>(Supplement<Document>::from(document, supplementName()));
     if (!controller) {
         controller = new DeviceOrientationController(document);
-        HeapSupplement<Document>::provideTo(document, supplementName(), adoptPtrWillBeNoop(controller));
+        Supplement<Document>::provideTo(document, supplementName(), controller);
     }
     return *controller;
 }
@@ -135,7 +135,7 @@
 {
     visitor->trace(m_overrideOrientationData);
     DeviceSingleWindowEventController::trace(visitor);
-    HeapSupplement<Document>::trace(visitor);
+    Supplement<Document>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationController.h b/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationController.h
index 006f328..ea72d7e 100644
--- a/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationController.h
+++ b/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationController.h
@@ -15,7 +15,7 @@
 class DeviceOrientationDispatcher;
 class Event;
 
-class MODULES_EXPORT DeviceOrientationController : public DeviceSingleWindowEventController, public HeapSupplement<Document> {
+class MODULES_EXPORT DeviceOrientationController : public DeviceSingleWindowEventController, public Supplement<Document> {
     USING_GARBAGE_COLLECTED_MIXIN(DeviceOrientationController);
 public:
     ~DeviceOrientationController() override;
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationEvent.h b/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationEvent.h
index 0592459..b97f5d1 100644
--- a/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationEvent.h
+++ b/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationEvent.h
@@ -40,7 +40,7 @@
     ~DeviceOrientationEvent() override;
     static RawPtr<DeviceOrientationEvent> create()
     {
-        return adoptRefWillBeNoop(new DeviceOrientationEvent);
+        return new DeviceOrientationEvent;
     }
     static RawPtr<DeviceOrientationEvent> create(const AtomicString& eventType, DeviceOrientationData* orientation)
     {
diff --git a/third_party/WebKit/Source/modules/donottrack/NavigatorDoNotTrack.cpp b/third_party/WebKit/Source/modules/donottrack/NavigatorDoNotTrack.cpp
index 683f9c4..9c5921a 100644
--- a/third_party/WebKit/Source/modules/donottrack/NavigatorDoNotTrack.cpp
+++ b/third_party/WebKit/Source/modules/donottrack/NavigatorDoNotTrack.cpp
@@ -47,7 +47,7 @@
 
 DEFINE_TRACE(NavigatorDoNotTrack)
 {
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
@@ -58,7 +58,7 @@
 
 NavigatorDoNotTrack& NavigatorDoNotTrack::from(Navigator& navigator)
 {
-    NavigatorDoNotTrack* supplement = static_cast<NavigatorDoNotTrack*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorDoNotTrack* supplement = static_cast<NavigatorDoNotTrack*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorDoNotTrack(navigator.frame());
         provideTo(navigator, supplementName(), supplement);
diff --git a/third_party/WebKit/Source/modules/donottrack/NavigatorDoNotTrack.h b/third_party/WebKit/Source/modules/donottrack/NavigatorDoNotTrack.h
index 922dcd8..aa45827c 100644
--- a/third_party/WebKit/Source/modules/donottrack/NavigatorDoNotTrack.h
+++ b/third_party/WebKit/Source/modules/donottrack/NavigatorDoNotTrack.h
@@ -41,7 +41,7 @@
 class LocalFrame;
 class Navigator;
 
-class NavigatorDoNotTrack final : public GarbageCollectedFinalized<NavigatorDoNotTrack>, public HeapSupplement<Navigator>, public DOMWindowProperty {
+class NavigatorDoNotTrack final : public GarbageCollectedFinalized<NavigatorDoNotTrack>, public Supplement<Navigator>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorDoNotTrack);
 public:
     static NavigatorDoNotTrack& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
index 07da456..9ffb7f5 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
+++ b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
@@ -300,10 +300,10 @@
 
 HTMLMediaElementEncryptedMedia& HTMLMediaElementEncryptedMedia::from(HTMLMediaElement& element)
 {
-    HTMLMediaElementEncryptedMedia* supplement = static_cast<HTMLMediaElementEncryptedMedia*>(HeapSupplement<HTMLMediaElement>::from(element, supplementName()));
+    HTMLMediaElementEncryptedMedia* supplement = static_cast<HTMLMediaElementEncryptedMedia*>(Supplement<HTMLMediaElement>::from(element, supplementName()));
     if (!supplement) {
         supplement = new HTMLMediaElementEncryptedMedia(element);
-        provideTo(element, supplementName(), adoptPtrWillBeNoop(supplement));
+        provideTo(element, supplementName(), supplement);
     }
     return *supplement;
 }
@@ -413,7 +413,7 @@
 {
     visitor->trace(m_mediaElement);
     visitor->trace(m_mediaKeys);
-    HeapSupplement<HTMLMediaElement>::trace(visitor);
+    Supplement<HTMLMediaElement>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h
index 6cf20eb..e91b32e 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h
+++ b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h
@@ -24,7 +24,7 @@
 class WebContentDecryptionModule;
 class WebMediaPlayer;
 
-class MODULES_EXPORT HTMLMediaElementEncryptedMedia final : public GarbageCollectedFinalized<HTMLMediaElementEncryptedMedia>, public HeapSupplement<HTMLMediaElement>, public WebMediaPlayerEncryptedMediaClient {
+class MODULES_EXPORT HTMLMediaElementEncryptedMedia final : public GarbageCollectedFinalized<HTMLMediaElementEncryptedMedia>, public Supplement<HTMLMediaElement>, public WebMediaPlayerEncryptedMediaClient {
     USING_GARBAGE_COLLECTED_MIXIN(HTMLMediaElementEncryptedMedia);
 public:
     static MediaKeys* mediaKeys(HTMLMediaElement&);
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/MediaEncryptedEvent.h b/third_party/WebKit/Source/modules/encryptedmedia/MediaEncryptedEvent.h
index fa1557b6..4877595 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/MediaEncryptedEvent.h
+++ b/third_party/WebKit/Source/modules/encryptedmedia/MediaEncryptedEvent.h
@@ -38,7 +38,7 @@
 
     static RawPtr<MediaEncryptedEvent> create()
     {
-        return adoptRefWillBeNoop(new MediaEncryptedEvent);
+        return new MediaEncryptedEvent;
     }
 
     static RawPtr<MediaEncryptedEvent> create(const AtomicString& type, const MediaEncryptedEventInit& initializer)
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeyMessageEvent.h b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeyMessageEvent.h
index 2986057..e26ddf0 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeyMessageEvent.h
+++ b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeyMessageEvent.h
@@ -41,7 +41,7 @@
 
     static RawPtr<MediaKeyMessageEvent> create()
     {
-        return adoptRefWillBeNoop(new MediaKeyMessageEvent);
+        return new MediaKeyMessageEvent;
     }
 
     static RawPtr<MediaKeyMessageEvent> create(const AtomicString& type, const MediaKeyMessageEventInit& initializer)
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysController.h b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysController.h
index eebb3832f..6db7648 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysController.h
+++ b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysController.h
@@ -14,15 +14,15 @@
 class MediaKeysClient;
 class WebEncryptedMediaClient;
 
-class MODULES_EXPORT MediaKeysController final : public GarbageCollected<MediaKeysController>, public HeapSupplement<Page> {
+class MODULES_EXPORT MediaKeysController final : public GarbageCollected<MediaKeysController>, public Supplement<Page> {
     USING_GARBAGE_COLLECTED_MIXIN(MediaKeysController);
 public:
     WebEncryptedMediaClient* encryptedMediaClient(ExecutionContext*);
 
     static void provideMediaKeysTo(Page&, MediaKeysClient*);
-    static MediaKeysController* from(Page* page) { return static_cast<MediaKeysController*>(HeapSupplement<Page>::from(page, supplementName())); }
+    static MediaKeysController* from(Page* page) { return static_cast<MediaKeysController*>(Supplement<Page>::from(page, supplementName())); }
 
-    DEFINE_INLINE_VIRTUAL_TRACE() { HeapSupplement<Page>::trace(visitor); }
+    DEFINE_INLINE_VIRTUAL_TRACE() { Supplement<Page>::trace(visitor); }
 
 private:
     explicit MediaKeysController(MediaKeysClient*);
diff --git a/third_party/WebKit/Source/modules/fetch/GlobalFetch.cpp b/third_party/WebKit/Source/modules/fetch/GlobalFetch.cpp
index 46dda65..2cefdf6c 100644
--- a/third_party/WebKit/Source/modules/fetch/GlobalFetch.cpp
+++ b/third_party/WebKit/Source/modules/fetch/GlobalFetch.cpp
@@ -18,21 +18,17 @@
 namespace {
 
 template <typename T>
-class GlobalFetchImpl final : public GarbageCollectedFinalized<GlobalFetchImpl<T>>, public GlobalFetch::ScopedFetcher, public HeapSupplement<T> {
+class GlobalFetchImpl final : public GarbageCollectedFinalized<GlobalFetchImpl<T>>, public GlobalFetch::ScopedFetcher, public Supplement<T> {
     USING_GARBAGE_COLLECTED_MIXIN(GlobalFetchImpl);
 public:
     static RawPtr<ScopedFetcher> from(T& supplementable, ExecutionContext* executionContext)
     {
-        GlobalFetchImpl* supplement = static_cast<GlobalFetchImpl*>(HeapSupplement<T>::from(supplementable, supplementName()));
+        GlobalFetchImpl* supplement = static_cast<GlobalFetchImpl*>(Supplement<T>::from(supplementable, supplementName()));
         if (!supplement) {
             supplement = new GlobalFetchImpl(executionContext);
-            HeapSupplement<T>::provideTo(supplementable, supplementName(), adoptPtrWillBeNoop(supplement));
+            Supplement<T>::provideTo(supplementable, supplementName(), supplement);
         }
-#if ENABLE(OILPAN)
         return supplement;
-#else
-        return supplement->m_weakFactory.createWeakPtr();
-#endif
     }
 
     ScriptPromise fetch(ScriptState* scriptState, const RequestInfo& input, const Dictionary& init, ExceptionState& exceptionState) override
@@ -55,23 +51,18 @@
     {
         visitor->trace(m_fetchManager);
         ScopedFetcher::trace(visitor);
-        HeapSupplement<T>::trace(visitor);
+        Supplement<T>::trace(visitor);
     }
 
 private:
     explicit GlobalFetchImpl(ExecutionContext* executionContext)
         : m_fetchManager(FetchManager::create(executionContext))
-#if !ENABLE(OILPAN)
-        , m_weakFactory(this)
-#endif
     {
     }
+
     static const char* supplementName() { return "GlobalFetch"; }
 
     Member<FetchManager> m_fetchManager;
-#if !ENABLE(OILPAN)
-    WeakPtrFactory<ScopedFetcher> m_weakFactory;
-#endif
 };
 
 } // namespace
diff --git a/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.cpp b/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.cpp
index a7f2c435..5e8799a 100644
--- a/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.cpp
+++ b/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.cpp
@@ -56,7 +56,7 @@
 
 DraggedIsolatedFileSystemImpl* DraggedIsolatedFileSystemImpl::from(DataObject* dataObject)
 {
-    return static_cast<DraggedIsolatedFileSystemImpl*>(HeapSupplement<DataObject>::from(dataObject, supplementName()));
+    return static_cast<DraggedIsolatedFileSystemImpl*>(Supplement<DataObject>::from(dataObject, supplementName()));
 }
 
 DraggedIsolatedFileSystemImpl::DraggedIsolatedFileSystemImpl(DataObject& host, const String& filesystemId)
@@ -67,7 +67,7 @@
 DEFINE_TRACE(DraggedIsolatedFileSystemImpl)
 {
     visitor->trace(m_filesystem);
-    HeapSupplement<DataObject>::trace(visitor);
+    Supplement<DataObject>::trace(visitor);
 }
 
 void DraggedIsolatedFileSystemImpl::prepareForDataObject(DataObject* dataObject, const String& filesystemId)
diff --git a/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.h b/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.h
index e0c5f039..c7ffd609 100644
--- a/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.h
+++ b/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.h
@@ -41,7 +41,7 @@
 
 class DOMFileSystem;
 
-class DraggedIsolatedFileSystemImpl final : public GarbageCollectedFinalized<DraggedIsolatedFileSystemImpl>, public DraggedIsolatedFileSystem, public HeapSupplement<DataObject> {
+class DraggedIsolatedFileSystemImpl final : public GarbageCollectedFinalized<DraggedIsolatedFileSystemImpl>, public DraggedIsolatedFileSystem, public Supplement<DataObject> {
     USING_GARBAGE_COLLECTED_MIXIN(DraggedIsolatedFileSystemImpl);
 public:
     static DraggedIsolatedFileSystemImpl* create(DataObject& host, const String& filesystemId)
diff --git a/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.cpp b/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.cpp
index b34bd45..d26d883a 100644
--- a/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.cpp
+++ b/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.cpp
@@ -204,11 +204,11 @@
 LocalFileSystem* LocalFileSystem::from(ExecutionContext& context)
 {
     if (context.isDocument())
-        return static_cast<LocalFileSystem*>(HeapSupplement<LocalFrame>::from(toDocument(context).frame(), supplementName()));
+        return static_cast<LocalFileSystem*>(Supplement<LocalFrame>::from(toDocument(context).frame(), supplementName()));
 
     WorkerClients* clients = toWorkerGlobalScope(context).clients();
     ASSERT(clients);
-    return static_cast<LocalFileSystem*>(HeapSupplement<WorkerClients>::from(clients, supplementName()));
+    return static_cast<LocalFileSystem*>(Supplement<WorkerClients>::from(clients, supplementName()));
 }
 
 void provideLocalFileSystemTo(LocalFrame& frame, PassOwnPtr<FileSystemClient> client)
diff --git a/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.h b/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.h
index e4ac00e..b24c5fe 100644
--- a/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.h
+++ b/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.h
@@ -47,7 +47,7 @@
 class LocalFrame;
 class WebFileSystem;
 
-class LocalFileSystem final : public GarbageCollectedFinalized<LocalFileSystem>, public HeapSupplement<LocalFrame>, public HeapSupplement<WorkerClients> {
+class LocalFileSystem final : public GarbageCollectedFinalized<LocalFileSystem>, public Supplement<LocalFrame>, public Supplement<WorkerClients> {
     USING_GARBAGE_COLLECTED_MIXIN(LocalFileSystem);
     WTF_MAKE_NONCOPYABLE(LocalFileSystem);
 public:
@@ -65,8 +65,8 @@
 
     DEFINE_INLINE_VIRTUAL_TRACE()
     {
-        HeapSupplement<LocalFrame>::trace(visitor);
-        HeapSupplement<WorkerClients>::trace(visitor);
+        Supplement<LocalFrame>::trace(visitor);
+        Supplement<WorkerClients>::trace(visitor);
     }
 
 protected:
diff --git a/third_party/WebKit/Source/modules/gamepad/GamepadEvent.h b/third_party/WebKit/Source/modules/gamepad/GamepadEvent.h
index cb062f2..38e5647 100644
--- a/third_party/WebKit/Source/modules/gamepad/GamepadEvent.h
+++ b/third_party/WebKit/Source/modules/gamepad/GamepadEvent.h
@@ -16,7 +16,7 @@
 public:
     static RawPtr<GamepadEvent> create()
     {
-        return adoptRefWillBeNoop(new GamepadEvent);
+        return new GamepadEvent;
     }
     static RawPtr<GamepadEvent> create(const AtomicString& type, bool canBubble, bool cancelable, Gamepad* gamepad)
     {
diff --git a/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.cpp b/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.cpp
index efad7b6..c4cd70d 100644
--- a/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.cpp
+++ b/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.cpp
@@ -79,7 +79,7 @@
 
 NavigatorGamepad& NavigatorGamepad::from(Navigator& navigator)
 {
-    NavigatorGamepad* supplement = static_cast<NavigatorGamepad*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorGamepad* supplement = static_cast<NavigatorGamepad*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorGamepad(navigator.frame());
         provideTo(navigator, supplementName(), supplement);
@@ -106,7 +106,7 @@
     visitor->trace(m_gamepads);
     visitor->trace(m_pendingEvents);
     visitor->trace(m_dispatchOneEventRunner);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
     PlatformEventController::trace(visitor);
     DOMWindowLifecycleObserver::trace(visitor);
diff --git a/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.h b/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.h
index 29963b8..8648d75f 100644
--- a/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.h
+++ b/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.h
@@ -42,7 +42,7 @@
 class GamepadList;
 class Navigator;
 
-class MODULES_EXPORT NavigatorGamepad final : public GarbageCollectedFinalized<NavigatorGamepad>, public HeapSupplement<Navigator>, public DOMWindowProperty, public PlatformEventController, public DOMWindowLifecycleObserver {
+class MODULES_EXPORT NavigatorGamepad final : public GarbageCollectedFinalized<NavigatorGamepad>, public Supplement<Navigator>, public DOMWindowProperty, public PlatformEventController, public DOMWindowLifecycleObserver {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorGamepad);
 public:
     static NavigatorGamepad* from(Document&);
diff --git a/third_party/WebKit/Source/modules/geofencing/GeofencingEvent.h b/third_party/WebKit/Source/modules/geofencing/GeofencingEvent.h
index 2f4cfc7e..3ac139c 100644
--- a/third_party/WebKit/Source/modules/geofencing/GeofencingEvent.h
+++ b/third_party/WebKit/Source/modules/geofencing/GeofencingEvent.h
@@ -22,7 +22,7 @@
 public:
     static RawPtr<GeofencingEvent> create()
     {
-        return adoptRefWillBeNoop(new GeofencingEvent);
+        return new GeofencingEvent;
     }
 
     static RawPtr<GeofencingEvent> create(const AtomicString& type, const String& id, GeofencingRegion* region)
diff --git a/third_party/WebKit/Source/modules/geofencing/ServiceWorkerRegistrationGeofencing.cpp b/third_party/WebKit/Source/modules/geofencing/ServiceWorkerRegistrationGeofencing.cpp
index 9b12eaf..2be5af1 100644
--- a/third_party/WebKit/Source/modules/geofencing/ServiceWorkerRegistrationGeofencing.cpp
+++ b/third_party/WebKit/Source/modules/geofencing/ServiceWorkerRegistrationGeofencing.cpp
@@ -25,7 +25,7 @@
 
 ServiceWorkerRegistrationGeofencing& ServiceWorkerRegistrationGeofencing::from(ServiceWorkerRegistration& registration)
 {
-    ServiceWorkerRegistrationGeofencing* supplement = static_cast<ServiceWorkerRegistrationGeofencing*>(HeapSupplement<ServiceWorkerRegistration>::from(registration, supplementName()));
+    ServiceWorkerRegistrationGeofencing* supplement = static_cast<ServiceWorkerRegistrationGeofencing*>(Supplement<ServiceWorkerRegistration>::from(registration, supplementName()));
     if (!supplement) {
         supplement = new ServiceWorkerRegistrationGeofencing(&registration);
         provideTo(registration, supplementName(), supplement);
@@ -49,7 +49,7 @@
 {
     visitor->trace(m_registration);
     visitor->trace(m_geofencing);
-    HeapSupplement<ServiceWorkerRegistration>::trace(visitor);
+    Supplement<ServiceWorkerRegistration>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/geofencing/ServiceWorkerRegistrationGeofencing.h b/third_party/WebKit/Source/modules/geofencing/ServiceWorkerRegistrationGeofencing.h
index 5cca1fb..31a98ed 100644
--- a/third_party/WebKit/Source/modules/geofencing/ServiceWorkerRegistrationGeofencing.h
+++ b/third_party/WebKit/Source/modules/geofencing/ServiceWorkerRegistrationGeofencing.h
@@ -13,7 +13,7 @@
 class Geofencing;
 class ServiceWorkerRegistration;
 
-class ServiceWorkerRegistrationGeofencing final : public GarbageCollectedFinalized<ServiceWorkerRegistrationGeofencing>, public HeapSupplement<ServiceWorkerRegistration> {
+class ServiceWorkerRegistrationGeofencing final : public GarbageCollectedFinalized<ServiceWorkerRegistrationGeofencing>, public Supplement<ServiceWorkerRegistration> {
     USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerRegistrationGeofencing);
     WTF_MAKE_NONCOPYABLE(ServiceWorkerRegistrationGeofencing);
 public:
diff --git a/third_party/WebKit/Source/modules/geofencing/WorkerNavigatorGeofencing.cpp b/third_party/WebKit/Source/modules/geofencing/WorkerNavigatorGeofencing.cpp
index 61d8340e..6fb17a2 100644
--- a/third_party/WebKit/Source/modules/geofencing/WorkerNavigatorGeofencing.cpp
+++ b/third_party/WebKit/Source/modules/geofencing/WorkerNavigatorGeofencing.cpp
@@ -24,7 +24,7 @@
 
 WorkerNavigatorGeofencing& WorkerNavigatorGeofencing::from(WorkerNavigator& navigator)
 {
-    WorkerNavigatorGeofencing* supplement = static_cast<WorkerNavigatorGeofencing*>(HeapSupplement<WorkerNavigator>::from(navigator, supplementName()));
+    WorkerNavigatorGeofencing* supplement = static_cast<WorkerNavigatorGeofencing*>(Supplement<WorkerNavigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new WorkerNavigatorGeofencing();
         provideTo(navigator, supplementName(), supplement);
@@ -47,7 +47,7 @@
 DEFINE_TRACE(WorkerNavigatorGeofencing)
 {
     visitor->trace(m_geofencing);
-    HeapSupplement<WorkerNavigator>::trace(visitor);
+    Supplement<WorkerNavigator>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/geofencing/WorkerNavigatorGeofencing.h b/third_party/WebKit/Source/modules/geofencing/WorkerNavigatorGeofencing.h
index 9bc8bce..3c53293 100644
--- a/third_party/WebKit/Source/modules/geofencing/WorkerNavigatorGeofencing.h
+++ b/third_party/WebKit/Source/modules/geofencing/WorkerNavigatorGeofencing.h
@@ -14,7 +14,7 @@
 class WorkerNavigator;
 
 // FIXME: Delete this class once ServiceWorkerRegistration is exposed in service workers.
-class WorkerNavigatorGeofencing final : public GarbageCollectedFinalized<WorkerNavigatorGeofencing>, public HeapSupplement<WorkerNavigator> {
+class WorkerNavigatorGeofencing final : public GarbageCollectedFinalized<WorkerNavigatorGeofencing>, public Supplement<WorkerNavigator> {
     USING_GARBAGE_COLLECTED_MIXIN(WorkerNavigatorGeofencing);
     WTF_MAKE_NONCOPYABLE(WorkerNavigatorGeofencing);
 public:
diff --git a/third_party/WebKit/Source/modules/geolocation/GeolocationController.cpp b/third_party/WebKit/Source/modules/geolocation/GeolocationController.cpp
index b399325b..2ab6033 100644
--- a/third_party/WebKit/Source/modules/geolocation/GeolocationController.cpp
+++ b/third_party/WebKit/Source/modules/geolocation/GeolocationController.cpp
@@ -187,13 +187,13 @@
     visitor->trace(m_lastPosition);
     visitor->trace(m_observers);
     visitor->trace(m_highAccuracyObservers);
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
     PageLifecycleObserver::trace(visitor);
 }
 
 void provideGeolocationTo(LocalFrame& frame, GeolocationClient* client)
 {
-    HeapSupplement<LocalFrame>::provideTo(frame, GeolocationController::supplementName(), GeolocationController::create(frame, client));
+    Supplement<LocalFrame>::provideTo(frame, GeolocationController::supplementName(), GeolocationController::create(frame, client));
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/geolocation/GeolocationController.h b/third_party/WebKit/Source/modules/geolocation/GeolocationController.h
index dac3c16..e2e7a92a 100644
--- a/third_party/WebKit/Source/modules/geolocation/GeolocationController.h
+++ b/third_party/WebKit/Source/modules/geolocation/GeolocationController.h
@@ -40,7 +40,7 @@
 class GeolocationError;
 class GeolocationPosition;
 
-class MODULES_EXPORT GeolocationController : public GarbageCollectedFinalized<GeolocationController>, public HeapSupplement<LocalFrame>, public PageLifecycleObserver {
+class MODULES_EXPORT GeolocationController : public GarbageCollectedFinalized<GeolocationController>, public Supplement<LocalFrame>, public PageLifecycleObserver {
     USING_GARBAGE_COLLECTED_MIXIN(GeolocationController);
     WTF_MAKE_NONCOPYABLE(GeolocationController);
 public:
@@ -67,7 +67,7 @@
     void pageVisibilityChanged() override;
 
     static const char* supplementName();
-    static GeolocationController* from(LocalFrame* frame) { return static_cast<GeolocationController*>(HeapSupplement<LocalFrame>::from(frame, supplementName())); }
+    static GeolocationController* from(LocalFrame* frame) { return static_cast<GeolocationController*>(Supplement<LocalFrame>::from(frame, supplementName())); }
 
     // Inherited from Supplement.
     DECLARE_VIRTUAL_TRACE();
diff --git a/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.cpp b/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.cpp
index a965c80..1af9561b 100644
--- a/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.cpp
+++ b/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.cpp
@@ -45,7 +45,7 @@
 
 NavigatorGeolocation& NavigatorGeolocation::from(Navigator& navigator)
 {
-    NavigatorGeolocation* supplement = static_cast<NavigatorGeolocation*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorGeolocation* supplement = static_cast<NavigatorGeolocation*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorGeolocation(navigator.frame());
         provideTo(navigator, supplementName(), supplement);
@@ -68,7 +68,7 @@
 DEFINE_TRACE(NavigatorGeolocation)
 {
     visitor->trace(m_geolocation);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.h b/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.h
index feecf4a..092a927 100644
--- a/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.h
+++ b/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.h
@@ -30,7 +30,7 @@
 class Geolocation;
 class Navigator;
 
-class NavigatorGeolocation final : public GarbageCollectedFinalized<NavigatorGeolocation>, public HeapSupplement<Navigator>, public DOMWindowProperty {
+class NavigatorGeolocation final : public GarbageCollectedFinalized<NavigatorGeolocation>, public Supplement<Navigator>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorGeolocation);
 public:
     static NavigatorGeolocation& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/indexeddb/DOMWindowIndexedDatabase.cpp b/third_party/WebKit/Source/modules/indexeddb/DOMWindowIndexedDatabase.cpp
index b474ba8..4abd2922 100644
--- a/third_party/WebKit/Source/modules/indexeddb/DOMWindowIndexedDatabase.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/DOMWindowIndexedDatabase.cpp
@@ -42,7 +42,7 @@
 {
     visitor->trace(m_window);
     visitor->trace(m_idbFactory);
-    HeapSupplement<LocalDOMWindow>::trace(visitor);
+    Supplement<LocalDOMWindow>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
@@ -53,10 +53,10 @@
 
 DOMWindowIndexedDatabase& DOMWindowIndexedDatabase::from(LocalDOMWindow& window)
 {
-    DOMWindowIndexedDatabase* supplement = static_cast<DOMWindowIndexedDatabase*>(HeapSupplement<LocalDOMWindow>::from(window, supplementName()));
+    DOMWindowIndexedDatabase* supplement = static_cast<DOMWindowIndexedDatabase*>(Supplement<LocalDOMWindow>::from(window, supplementName()));
     if (!supplement) {
         supplement = new DOMWindowIndexedDatabase(window);
-        provideTo(window, supplementName(), adoptPtrWillBeNoop(supplement));
+        provideTo(window, supplementName(), supplement);
     }
     return *supplement;
 }
diff --git a/third_party/WebKit/Source/modules/indexeddb/DOMWindowIndexedDatabase.h b/third_party/WebKit/Source/modules/indexeddb/DOMWindowIndexedDatabase.h
index f773b1ca..ec6398bb 100644
--- a/third_party/WebKit/Source/modules/indexeddb/DOMWindowIndexedDatabase.h
+++ b/third_party/WebKit/Source/modules/indexeddb/DOMWindowIndexedDatabase.h
@@ -35,7 +35,7 @@
 class IDBFactory;
 class DOMWindow;
 
-class DOMWindowIndexedDatabase final : public GarbageCollected<DOMWindowIndexedDatabase>, public HeapSupplement<LocalDOMWindow>, public DOMWindowProperty {
+class DOMWindowIndexedDatabase final : public GarbageCollected<DOMWindowIndexedDatabase>, public Supplement<LocalDOMWindow>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(DOMWindowIndexedDatabase);
 public:
     static DOMWindowIndexedDatabase& from(LocalDOMWindow&);
diff --git a/third_party/WebKit/Source/modules/installedapp/InstalledAppController.cpp b/third_party/WebKit/Source/modules/installedapp/InstalledAppController.cpp
index c282647c..c43109d 100644
--- a/third_party/WebKit/Source/modules/installedapp/InstalledAppController.cpp
+++ b/third_party/WebKit/Source/modules/installedapp/InstalledAppController.cpp
@@ -19,12 +19,12 @@
     ASSERT(RuntimeEnabledFeatures::installedAppEnabled());
 
     RawPtr<InstalledAppController> controller = new InstalledAppController(frame, client);
-    HeapSupplement<LocalFrame>::provideTo(frame, supplementName(), controller.release());
+    Supplement<LocalFrame>::provideTo(frame, supplementName(), controller.release());
 }
 
 InstalledAppController* InstalledAppController::from(LocalFrame& frame)
 {
-    InstalledAppController* controller = static_cast<InstalledAppController*>(HeapSupplement<LocalFrame>::from(frame, supplementName()));
+    InstalledAppController* controller = static_cast<InstalledAppController*>(Supplement<LocalFrame>::from(frame, supplementName()));
     ASSERT(controller);
     return controller;
 }
@@ -59,7 +59,7 @@
 
 DEFINE_TRACE(InstalledAppController)
 {
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
     LocalFrameLifecycleObserver::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/installedapp/InstalledAppController.h b/third_party/WebKit/Source/modules/installedapp/InstalledAppController.h
index 3a03e8f..f7a0553 100644
--- a/third_party/WebKit/Source/modules/installedapp/InstalledAppController.h
+++ b/third_party/WebKit/Source/modules/installedapp/InstalledAppController.h
@@ -15,7 +15,7 @@
 class WebSecurityOrigin;
 
 class MODULES_EXPORT InstalledAppController final
-    : public GarbageCollectedFinalized<InstalledAppController>, public HeapSupplement<LocalFrame>, public LocalFrameLifecycleObserver {
+    : public GarbageCollectedFinalized<InstalledAppController>, public Supplement<LocalFrame>, public LocalFrameLifecycleObserver {
     USING_GARBAGE_COLLECTED_MIXIN(InstalledAppController);
     WTF_MAKE_NONCOPYABLE(InstalledAppController);
 public:
diff --git a/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.cpp b/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.cpp
index af1db4a..90a7c60 100644
--- a/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.cpp
+++ b/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.cpp
@@ -36,7 +36,7 @@
 
 NavigatorInstalledApp& NavigatorInstalledApp::from(Navigator& navigator)
 {
-    NavigatorInstalledApp* supplement = static_cast<NavigatorInstalledApp*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorInstalledApp* supplement = static_cast<NavigatorInstalledApp*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorInstalledApp(navigator.frame());
         provideTo(navigator, supplementName(), supplement);
@@ -99,7 +99,7 @@
 
 DEFINE_TRACE(NavigatorInstalledApp)
 {
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.h b/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.h
index c32f57f..38f5db2 100644
--- a/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.h
+++ b/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.h
@@ -18,7 +18,7 @@
 class ScriptState;
 class InstalledAppController;
 
-class NavigatorInstalledApp final : public GarbageCollectedFinalized<NavigatorInstalledApp>, public HeapSupplement<Navigator>, public DOMWindowProperty {
+class NavigatorInstalledApp final : public GarbageCollectedFinalized<NavigatorInstalledApp>, public Supplement<Navigator>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorInstalledApp);
 public:
     static NavigatorInstalledApp* from(Document&);
diff --git a/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.cpp b/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.cpp
index fc8df4e..ba579bb 100644
--- a/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.cpp
+++ b/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.cpp
@@ -12,7 +12,7 @@
 // static
 RawPtr<BlobEvent> BlobEvent::create()
 {
-    return adoptRefWillBeNoop(new BlobEvent);
+    return new BlobEvent;
 }
 
 // static
diff --git a/third_party/WebKit/Source/modules/mediasession/HTMLMediaElementMediaSession.cpp b/third_party/WebKit/Source/modules/mediasession/HTMLMediaElementMediaSession.cpp
index 6b9cfdb..225c250c 100644
--- a/third_party/WebKit/Source/modules/mediasession/HTMLMediaElementMediaSession.cpp
+++ b/third_party/WebKit/Source/modules/mediasession/HTMLMediaElementMediaSession.cpp
@@ -36,20 +36,20 @@
     HTMLMediaElementMediaSession* supplement = fromIfExists(element);
     if (!supplement) {
         supplement = new HTMLMediaElementMediaSession();
-        provideTo(element, supplementName(), adoptPtrWillBeNoop(supplement));
+        provideTo(element, supplementName(), supplement);
     }
     return *supplement;
 }
 
 HTMLMediaElementMediaSession* HTMLMediaElementMediaSession::fromIfExists(HTMLMediaElement& element)
 {
-    return static_cast<HTMLMediaElementMediaSession*>(HeapSupplement<HTMLMediaElement>::from(element, supplementName()));
+    return static_cast<HTMLMediaElementMediaSession*>(Supplement<HTMLMediaElement>::from(element, supplementName()));
 }
 
 DEFINE_TRACE(HTMLMediaElementMediaSession)
 {
     visitor->trace(m_session);
-    HeapSupplement<HTMLMediaElement>::trace(visitor);
+    Supplement<HTMLMediaElement>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/mediasession/HTMLMediaElementMediaSession.h b/third_party/WebKit/Source/modules/mediasession/HTMLMediaElementMediaSession.h
index 35c7ed2..28d93ab 100644
--- a/third_party/WebKit/Source/modules/mediasession/HTMLMediaElementMediaSession.h
+++ b/third_party/WebKit/Source/modules/mediasession/HTMLMediaElementMediaSession.h
@@ -15,7 +15,7 @@
 
 // A supplement to HTMLMediaElement responsible for the integration of
 // MediaSession with HTMLMediaElement.
-class MODULES_EXPORT HTMLMediaElementMediaSession final : public GarbageCollected<HTMLMediaElementMediaSession>, public HeapSupplement<HTMLMediaElement> {
+class MODULES_EXPORT HTMLMediaElementMediaSession final : public GarbageCollected<HTMLMediaElementMediaSession>, public Supplement<HTMLMediaElement> {
     USING_GARBAGE_COLLECTED_MIXIN(HTMLMediaElementMediaSession);
 public:
     static MediaSession* session(HTMLMediaElement&);
diff --git a/third_party/WebKit/Source/modules/mediastream/MediaStreamEvent.cpp b/third_party/WebKit/Source/modules/mediastream/MediaStreamEvent.cpp
index 851547a..76734ee 100644
--- a/third_party/WebKit/Source/modules/mediastream/MediaStreamEvent.cpp
+++ b/third_party/WebKit/Source/modules/mediastream/MediaStreamEvent.cpp
@@ -28,7 +28,7 @@
 
 RawPtr<MediaStreamEvent> MediaStreamEvent::create()
 {
-    return adoptRefWillBeNoop(new MediaStreamEvent);
+    return new MediaStreamEvent;
 }
 
 RawPtr<MediaStreamEvent> MediaStreamEvent::create(const AtomicString& type, bool canBubble, bool cancelable, MediaStream* stream)
diff --git a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrackEvent.cpp b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrackEvent.cpp
index 73cc65e..bece9844 100644
--- a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrackEvent.cpp
+++ b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrackEvent.cpp
@@ -30,7 +30,7 @@
 
 RawPtr<MediaStreamTrackEvent> MediaStreamTrackEvent::create()
 {
-    return adoptRefWillBeNoop(new MediaStreamTrackEvent);
+    return new MediaStreamTrackEvent;
 }
 
 RawPtr<MediaStreamTrackEvent> MediaStreamTrackEvent::create(const AtomicString& type, bool canBubble, bool cancelable, MediaStreamTrack* track)
diff --git a/third_party/WebKit/Source/modules/mediastream/NavigatorUserMedia.cpp b/third_party/WebKit/Source/modules/mediastream/NavigatorUserMedia.cpp
index 3334efb..9e831009 100644
--- a/third_party/WebKit/Source/modules/mediastream/NavigatorUserMedia.cpp
+++ b/third_party/WebKit/Source/modules/mediastream/NavigatorUserMedia.cpp
@@ -22,7 +22,7 @@
 
 NavigatorUserMedia& NavigatorUserMedia::from(Navigator& navigator)
 {
-    NavigatorUserMedia* supplement = static_cast<NavigatorUserMedia*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorUserMedia* supplement = static_cast<NavigatorUserMedia*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorUserMedia();
         provideTo(navigator, supplementName(), supplement);
@@ -43,7 +43,7 @@
 DEFINE_TRACE(NavigatorUserMedia)
 {
     visitor->trace(m_mediaDevices);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/mediastream/NavigatorUserMedia.h b/third_party/WebKit/Source/modules/mediastream/NavigatorUserMedia.h
index 1502db22..310bbf8 100644
--- a/third_party/WebKit/Source/modules/mediastream/NavigatorUserMedia.h
+++ b/third_party/WebKit/Source/modules/mediastream/NavigatorUserMedia.h
@@ -13,7 +13,7 @@
 class Navigator;
 class MediaDevices;
 
-class NavigatorUserMedia final : public GarbageCollected<NavigatorUserMedia>, public HeapSupplement<Navigator> {
+class NavigatorUserMedia final : public GarbageCollected<NavigatorUserMedia>, public Supplement<Navigator> {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorUserMedia)
 public:
     static MediaDevices* mediaDevices(Navigator&);
diff --git a/third_party/WebKit/Source/modules/mediastream/RTCDTMFToneChangeEvent.cpp b/third_party/WebKit/Source/modules/mediastream/RTCDTMFToneChangeEvent.cpp
index 96e2e69d..f545977c 100644
--- a/third_party/WebKit/Source/modules/mediastream/RTCDTMFToneChangeEvent.cpp
+++ b/third_party/WebKit/Source/modules/mediastream/RTCDTMFToneChangeEvent.cpp
@@ -29,7 +29,7 @@
 
 RawPtr<RTCDTMFToneChangeEvent> RTCDTMFToneChangeEvent::create()
 {
-    return adoptRefWillBeNoop(new RTCDTMFToneChangeEvent);
+    return new RTCDTMFToneChangeEvent;
 }
 
 RawPtr<RTCDTMFToneChangeEvent> RTCDTMFToneChangeEvent::create(const String& tone)
diff --git a/third_party/WebKit/Source/modules/mediastream/RTCDataChannelEvent.cpp b/third_party/WebKit/Source/modules/mediastream/RTCDataChannelEvent.cpp
index 7d2b0c4..8552758 100644
--- a/third_party/WebKit/Source/modules/mediastream/RTCDataChannelEvent.cpp
+++ b/third_party/WebKit/Source/modules/mediastream/RTCDataChannelEvent.cpp
@@ -28,7 +28,7 @@
 
 RawPtr<RTCDataChannelEvent> RTCDataChannelEvent::create()
 {
-    return adoptRefWillBeNoop(new RTCDataChannelEvent);
+    return new RTCDataChannelEvent;
 }
 
 RawPtr<RTCDataChannelEvent> RTCDataChannelEvent::create(const AtomicString& type, bool canBubble, bool cancelable, RTCDataChannel* channel)
diff --git a/third_party/WebKit/Source/modules/mediastream/RTCIceCandidateEvent.cpp b/third_party/WebKit/Source/modules/mediastream/RTCIceCandidateEvent.cpp
index 69cbbbea..f5b12c53 100644
--- a/third_party/WebKit/Source/modules/mediastream/RTCIceCandidateEvent.cpp
+++ b/third_party/WebKit/Source/modules/mediastream/RTCIceCandidateEvent.cpp
@@ -30,7 +30,7 @@
 
 RawPtr<RTCIceCandidateEvent> RTCIceCandidateEvent::create()
 {
-    return adoptRefWillBeNoop(new RTCIceCandidateEvent);
+    return new RTCIceCandidateEvent;
 }
 
 RawPtr<RTCIceCandidateEvent> RTCIceCandidateEvent::create(bool canBubble, bool cancelable, RTCIceCandidate* candidate)
diff --git a/third_party/WebKit/Source/modules/mediastream/UserMediaController.cpp b/third_party/WebKit/Source/modules/mediastream/UserMediaController.cpp
index 2010ef9..148e60bc 100644
--- a/third_party/WebKit/Source/modules/mediastream/UserMediaController.cpp
+++ b/third_party/WebKit/Source/modules/mediastream/UserMediaController.cpp
@@ -38,7 +38,7 @@
 
 DEFINE_TRACE(UserMediaController)
 {
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
 }
 
 RawPtr<UserMediaController> UserMediaController::create(UserMediaClient* client)
diff --git a/third_party/WebKit/Source/modules/mediastream/UserMediaController.h b/third_party/WebKit/Source/modules/mediastream/UserMediaController.h
index e39c6b8..8ea96cda 100644
--- a/third_party/WebKit/Source/modules/mediastream/UserMediaController.h
+++ b/third_party/WebKit/Source/modules/mediastream/UserMediaController.h
@@ -34,7 +34,7 @@
 class MediaDevicesRequest;
 class UserMediaRequest;
 
-class UserMediaController final : public GarbageCollected<UserMediaController>, public HeapSupplement<LocalFrame> {
+class UserMediaController final : public GarbageCollected<UserMediaController>, public Supplement<LocalFrame> {
     USING_GARBAGE_COLLECTED_MIXIN(UserMediaController);
 public:
     static RawPtr<UserMediaController> create(UserMediaClient*);
@@ -52,7 +52,7 @@
     void requestSources(MediaStreamTrackSourcesRequest*);
 
     static const char* supplementName();
-    static UserMediaController* from(LocalFrame* frame) { return static_cast<UserMediaController*>(HeapSupplement<LocalFrame>::from(frame, supplementName())); }
+    static UserMediaController* from(LocalFrame* frame) { return static_cast<UserMediaController*>(Supplement<LocalFrame>::from(frame, supplementName())); }
 
 private:
     explicit UserMediaController(UserMediaClient*);
diff --git a/third_party/WebKit/Source/modules/navigatorcontentutils/NavigatorContentUtils.cpp b/third_party/WebKit/Source/modules/navigatorcontentutils/NavigatorContentUtils.cpp
index 40e41be..67e8720 100644
--- a/third_party/WebKit/Source/modules/navigatorcontentutils/NavigatorContentUtils.cpp
+++ b/third_party/WebKit/Source/modules/navigatorcontentutils/NavigatorContentUtils.cpp
@@ -138,7 +138,7 @@
 
 NavigatorContentUtils* NavigatorContentUtils::from(LocalFrame& frame)
 {
-    return static_cast<NavigatorContentUtils*>(HeapSupplement<LocalFrame>::from(frame, supplementName()));
+    return static_cast<NavigatorContentUtils*>(Supplement<LocalFrame>::from(frame, supplementName()));
 }
 
 NavigatorContentUtils::~NavigatorContentUtils()
diff --git a/third_party/WebKit/Source/modules/navigatorcontentutils/NavigatorContentUtils.h b/third_party/WebKit/Source/modules/navigatorcontentutils/NavigatorContentUtils.h
index 429fdf4..958ac28 100644
--- a/third_party/WebKit/Source/modules/navigatorcontentutils/NavigatorContentUtils.h
+++ b/third_party/WebKit/Source/modules/navigatorcontentutils/NavigatorContentUtils.h
@@ -40,7 +40,7 @@
 class LocalFrame;
 class Navigator;
 
-class MODULES_EXPORT NavigatorContentUtils final : public GarbageCollectedFinalized<NavigatorContentUtils>, public HeapSupplement<LocalFrame> {
+class MODULES_EXPORT NavigatorContentUtils final : public GarbageCollectedFinalized<NavigatorContentUtils>, public Supplement<LocalFrame> {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorContentUtils);
 public:
     virtual ~NavigatorContentUtils();
@@ -57,7 +57,7 @@
     DEFINE_INLINE_VIRTUAL_TRACE()
     {
         visitor->trace(m_client);
-        HeapSupplement<LocalFrame>::trace(visitor);
+        Supplement<LocalFrame>::trace(visitor);
     }
 
     void setClientForTest(RawPtr<NavigatorContentUtilsClient> client) { m_client = client; }
diff --git a/third_party/WebKit/Source/modules/navigatorcontentutils/testing/NavigatorContentUtilsClientMock.h b/third_party/WebKit/Source/modules/navigatorcontentutils/testing/NavigatorContentUtilsClientMock.h
index eec618e..46532eb3 100644
--- a/third_party/WebKit/Source/modules/navigatorcontentutils/testing/NavigatorContentUtilsClientMock.h
+++ b/third_party/WebKit/Source/modules/navigatorcontentutils/testing/NavigatorContentUtilsClientMock.h
@@ -19,7 +19,7 @@
 public:
     static RawPtr<NavigatorContentUtilsClientMock> create()
     {
-        return adoptPtrWillBeNoop(new NavigatorContentUtilsClientMock);
+        return new NavigatorContentUtilsClientMock;
     }
 
     ~NavigatorContentUtilsClientMock() override { }
diff --git a/third_party/WebKit/Source/modules/netinfo/NavigatorNetworkInformation.cpp b/third_party/WebKit/Source/modules/netinfo/NavigatorNetworkInformation.cpp
index f3505aff..8152df47 100644
--- a/third_party/WebKit/Source/modules/netinfo/NavigatorNetworkInformation.cpp
+++ b/third_party/WebKit/Source/modules/netinfo/NavigatorNetworkInformation.cpp
@@ -32,7 +32,7 @@
 
 NavigatorNetworkInformation* NavigatorNetworkInformation::toNavigatorNetworkInformation(Navigator& navigator)
 {
-    return static_cast<NavigatorNetworkInformation*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    return static_cast<NavigatorNetworkInformation*>(Supplement<Navigator>::from(navigator, supplementName()));
 }
 
 const char* NavigatorNetworkInformation::supplementName()
@@ -57,7 +57,7 @@
 DEFINE_TRACE(NavigatorNetworkInformation)
 {
     visitor->trace(m_connection);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/netinfo/NavigatorNetworkInformation.h b/third_party/WebKit/Source/modules/netinfo/NavigatorNetworkInformation.h
index ea722dd..8975023e 100644
--- a/third_party/WebKit/Source/modules/netinfo/NavigatorNetworkInformation.h
+++ b/third_party/WebKit/Source/modules/netinfo/NavigatorNetworkInformation.h
@@ -13,7 +13,7 @@
 class Navigator;
 class NetworkInformation;
 
-class NavigatorNetworkInformation final : public GarbageCollectedFinalized<NavigatorNetworkInformation>, public HeapSupplement<Navigator>, public DOMWindowProperty {
+class NavigatorNetworkInformation final : public GarbageCollectedFinalized<NavigatorNetworkInformation>, public Supplement<Navigator>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorNetworkInformation);
 public:
     static NavigatorNetworkInformation& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/netinfo/WorkerNavigatorNetworkInformation.cpp b/third_party/WebKit/Source/modules/netinfo/WorkerNavigatorNetworkInformation.cpp
index 03ac7835..0a4a48d 100644
--- a/third_party/WebKit/Source/modules/netinfo/WorkerNavigatorNetworkInformation.cpp
+++ b/third_party/WebKit/Source/modules/netinfo/WorkerNavigatorNetworkInformation.cpp
@@ -25,7 +25,7 @@
 
 WorkerNavigatorNetworkInformation* WorkerNavigatorNetworkInformation::toWorkerNavigatorNetworkInformation(WorkerNavigator& navigator, ExecutionContext* context)
 {
-    return static_cast<WorkerNavigatorNetworkInformation*>(HeapSupplement<WorkerNavigator>::from(navigator, supplementName()));
+    return static_cast<WorkerNavigatorNetworkInformation*>(Supplement<WorkerNavigator>::from(navigator, supplementName()));
 }
 
 const char* WorkerNavigatorNetworkInformation::supplementName()
@@ -41,7 +41,7 @@
 DEFINE_TRACE(WorkerNavigatorNetworkInformation)
 {
     visitor->trace(m_connection);
-    HeapSupplement<WorkerNavigator>::trace(visitor);
+    Supplement<WorkerNavigator>::trace(visitor);
 }
 
 NetworkInformation* WorkerNavigatorNetworkInformation::connection(ExecutionContext* context)
diff --git a/third_party/WebKit/Source/modules/netinfo/WorkerNavigatorNetworkInformation.h b/third_party/WebKit/Source/modules/netinfo/WorkerNavigatorNetworkInformation.h
index 0b6f62dd..9b723076 100644
--- a/third_party/WebKit/Source/modules/netinfo/WorkerNavigatorNetworkInformation.h
+++ b/third_party/WebKit/Source/modules/netinfo/WorkerNavigatorNetworkInformation.h
@@ -13,7 +13,7 @@
 class NetworkInformation;
 class WorkerNavigator;
 
-class WorkerNavigatorNetworkInformation final : public GarbageCollected<WorkerNavigatorNetworkInformation>, public HeapSupplement<WorkerNavigator> {
+class WorkerNavigatorNetworkInformation final : public GarbageCollected<WorkerNavigatorNetworkInformation>, public Supplement<WorkerNavigator> {
     USING_GARBAGE_COLLECTED_MIXIN(WorkerNavigatorNetworkInformation);
 public:
     static WorkerNavigatorNetworkInformation& from(WorkerNavigator&, ExecutionContext*);
diff --git a/third_party/WebKit/Source/modules/nfc/NavigatorNFC.cpp b/third_party/WebKit/Source/modules/nfc/NavigatorNFC.cpp
index 4d63442..6fa5cdc2 100644
--- a/third_party/WebKit/Source/modules/nfc/NavigatorNFC.cpp
+++ b/third_party/WebKit/Source/modules/nfc/NavigatorNFC.cpp
@@ -20,7 +20,7 @@
 
 NavigatorNFC& NavigatorNFC::from(Navigator& navigator)
 {
-    NavigatorNFC* supplement = static_cast<NavigatorNFC*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorNFC* supplement = static_cast<NavigatorNFC*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorNFC();
         provideTo(navigator, supplementName(), supplement);
@@ -42,7 +42,7 @@
 DEFINE_TRACE(NavigatorNFC)
 {
     visitor->trace(m_nfc);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/nfc/NavigatorNFC.h b/third_party/WebKit/Source/modules/nfc/NavigatorNFC.h
index 7dfea19..0d30e63b 100644
--- a/third_party/WebKit/Source/modules/nfc/NavigatorNFC.h
+++ b/third_party/WebKit/Source/modules/nfc/NavigatorNFC.h
@@ -15,7 +15,7 @@
 
 class NavigatorNFC final
     : public GarbageCollected<NavigatorNFC>
-    , public HeapSupplement<Navigator> {
+    , public Supplement<Navigator> {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorNFC);
 
 public:
diff --git a/third_party/WebKit/Source/modules/notifications/NotificationEvent.h b/third_party/WebKit/Source/modules/notifications/NotificationEvent.h
index 716b1b45..d79e7a0b 100644
--- a/third_party/WebKit/Source/modules/notifications/NotificationEvent.h
+++ b/third_party/WebKit/Source/modules/notifications/NotificationEvent.h
@@ -20,7 +20,7 @@
 public:
     static RawPtr<NotificationEvent> create()
     {
-        return adoptRefWillBeNoop(new NotificationEvent);
+        return new NotificationEvent;
     }
     static RawPtr<NotificationEvent> create(const AtomicString& type, const NotificationEventInit& initializer)
     {
diff --git a/third_party/WebKit/Source/modules/notifications/NotificationPermissionClient.cpp b/third_party/WebKit/Source/modules/notifications/NotificationPermissionClient.cpp
index 2c2f80e..e19cc31a 100644
--- a/third_party/WebKit/Source/modules/notifications/NotificationPermissionClient.cpp
+++ b/third_party/WebKit/Source/modules/notifications/NotificationPermissionClient.cpp
@@ -24,7 +24,7 @@
     if (!document->frame() || !document->frame()->isLocalFrame())
         return nullptr;
 
-    return static_cast<NotificationPermissionClient*>(HeapSupplement<LocalFrame>::from(document->frame(), supplementName()));
+    return static_cast<NotificationPermissionClient*>(Supplement<LocalFrame>::from(document->frame(), supplementName()));
 }
 
 void provideNotificationPermissionClientTo(LocalFrame& frame, RawPtr<NotificationPermissionClient> client)
diff --git a/third_party/WebKit/Source/modules/notifications/NotificationPermissionClient.h b/third_party/WebKit/Source/modules/notifications/NotificationPermissionClient.h
index a05f64c..f8b49c7 100644
--- a/third_party/WebKit/Source/modules/notifications/NotificationPermissionClient.h
+++ b/third_party/WebKit/Source/modules/notifications/NotificationPermissionClient.h
@@ -17,7 +17,7 @@
 class NotificationPermissionCallback;
 class ScriptState;
 
-class NotificationPermissionClient : public HeapSupplement<LocalFrame> {
+class NotificationPermissionClient : public Supplement<LocalFrame> {
 public:
     virtual ~NotificationPermissionClient() { }
 
@@ -25,7 +25,7 @@
     // current frame. The provided callback will be ran when the user has made a decision.
     virtual ScriptPromise requestPermission(ScriptState*, NotificationPermissionCallback*) = 0;
 
-    // HeapSupplement requirements.
+    // Supplement requirements.
     static const char* supplementName();
     static NotificationPermissionClient* from(ExecutionContext*);
 };
diff --git a/third_party/WebKit/Source/modules/permissions/NavigatorPermissions.cpp b/third_party/WebKit/Source/modules/permissions/NavigatorPermissions.cpp
index 254563f..f391bd5 100644
--- a/third_party/WebKit/Source/modules/permissions/NavigatorPermissions.cpp
+++ b/third_party/WebKit/Source/modules/permissions/NavigatorPermissions.cpp
@@ -22,7 +22,7 @@
 // static
 NavigatorPermissions& NavigatorPermissions::from(Navigator& navigator)
 {
-    NavigatorPermissions* supplement = static_cast<NavigatorPermissions*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorPermissions* supplement = static_cast<NavigatorPermissions*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorPermissions();
         provideTo(navigator, supplementName(), supplement);
@@ -42,7 +42,7 @@
 DEFINE_TRACE(NavigatorPermissions)
 {
     visitor->trace(m_permissions);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/permissions/NavigatorPermissions.h b/third_party/WebKit/Source/modules/permissions/NavigatorPermissions.h
index 33e631b..a120fb06 100644
--- a/third_party/WebKit/Source/modules/permissions/NavigatorPermissions.h
+++ b/third_party/WebKit/Source/modules/permissions/NavigatorPermissions.h
@@ -13,7 +13,7 @@
 class Navigator;
 class Permissions;
 
-class NavigatorPermissions final : public GarbageCollected<NavigatorPermissions>, public HeapSupplement<Navigator> {
+class NavigatorPermissions final : public GarbageCollected<NavigatorPermissions>, public Supplement<Navigator> {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorPermissions);
 public:
     static NavigatorPermissions& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/permissions/PermissionController.cpp b/third_party/WebKit/Source/modules/permissions/PermissionController.cpp
index a9800ad..96e06c5 100644
--- a/third_party/WebKit/Source/modules/permissions/PermissionController.cpp
+++ b/third_party/WebKit/Source/modules/permissions/PermissionController.cpp
@@ -19,12 +19,12 @@
     ASSERT(RuntimeEnabledFeatures::permissionsEnabled());
 
     PermissionController* controller = new PermissionController(frame, client);
-    HeapSupplement<LocalFrame>::provideTo(frame, supplementName(), adoptPtrWillBeNoop(controller));
+    Supplement<LocalFrame>::provideTo(frame, supplementName(), controller);
 }
 
 PermissionController* PermissionController::from(LocalFrame& frame)
 {
-    return static_cast<PermissionController*>(HeapSupplement<LocalFrame>::from(frame, supplementName()));
+    return static_cast<PermissionController*>(Supplement<LocalFrame>::from(frame, supplementName()));
 }
 
 PermissionController::PermissionController(LocalFrame& frame, WebPermissionClient* client)
@@ -51,7 +51,7 @@
 DEFINE_TRACE(PermissionController)
 {
     LocalFrameLifecycleObserver::trace(visitor);
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/permissions/PermissionController.h b/third_party/WebKit/Source/modules/permissions/PermissionController.h
index 9d88a4c..6c4f7c1 100644
--- a/third_party/WebKit/Source/modules/permissions/PermissionController.h
+++ b/third_party/WebKit/Source/modules/permissions/PermissionController.h
@@ -15,7 +15,7 @@
 
 class MODULES_EXPORT PermissionController final
     : public GarbageCollectedFinalized<PermissionController>
-    , public HeapSupplement<LocalFrame>
+    , public Supplement<LocalFrame>
     , public LocalFrameLifecycleObserver {
     WTF_MAKE_NONCOPYABLE(PermissionController);
     USING_GARBAGE_COLLECTED_MIXIN(PermissionController);
diff --git a/third_party/WebKit/Source/modules/permissions/WorkerNavigatorPermissions.cpp b/third_party/WebKit/Source/modules/permissions/WorkerNavigatorPermissions.cpp
index 2ac5498..91fff59 100644
--- a/third_party/WebKit/Source/modules/permissions/WorkerNavigatorPermissions.cpp
+++ b/third_party/WebKit/Source/modules/permissions/WorkerNavigatorPermissions.cpp
@@ -22,7 +22,7 @@
 // static
 WorkerNavigatorPermissions& WorkerNavigatorPermissions::from(WorkerNavigator& workerNavigator)
 {
-    WorkerNavigatorPermissions* supplement = static_cast<WorkerNavigatorPermissions*>(HeapSupplement<WorkerNavigator>::from(workerNavigator, supplementName()));
+    WorkerNavigatorPermissions* supplement = static_cast<WorkerNavigatorPermissions*>(Supplement<WorkerNavigator>::from(workerNavigator, supplementName()));
     if (!supplement) {
         supplement = new WorkerNavigatorPermissions();
         provideTo(workerNavigator, supplementName(), supplement);
@@ -42,7 +42,7 @@
 DEFINE_TRACE(WorkerNavigatorPermissions)
 {
     visitor->trace(m_permissions);
-    HeapSupplement<WorkerNavigator>::trace(visitor);
+    Supplement<WorkerNavigator>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/permissions/WorkerNavigatorPermissions.h b/third_party/WebKit/Source/modules/permissions/WorkerNavigatorPermissions.h
index 61de22d6..04b8340 100644
--- a/third_party/WebKit/Source/modules/permissions/WorkerNavigatorPermissions.h
+++ b/third_party/WebKit/Source/modules/permissions/WorkerNavigatorPermissions.h
@@ -13,7 +13,7 @@
 class WorkerNavigator;
 class Permissions;
 
-class WorkerNavigatorPermissions final : public GarbageCollected<WorkerNavigatorPermissions>, public HeapSupplement<WorkerNavigator> {
+class WorkerNavigatorPermissions final : public GarbageCollected<WorkerNavigatorPermissions>, public Supplement<WorkerNavigator> {
     USING_GARBAGE_COLLECTED_MIXIN(WorkerNavigatorPermissions);
 public:
     static WorkerNavigatorPermissions& from(WorkerNavigator&);
diff --git a/third_party/WebKit/Source/modules/plugins/NavigatorPlugins.cpp b/third_party/WebKit/Source/modules/plugins/NavigatorPlugins.cpp
index 4342eeb..ca749f4 100644
--- a/third_party/WebKit/Source/modules/plugins/NavigatorPlugins.cpp
+++ b/third_party/WebKit/Source/modules/plugins/NavigatorPlugins.cpp
@@ -35,7 +35,7 @@
 // static
 NavigatorPlugins* NavigatorPlugins::toNavigatorPlugins(Navigator& navigator)
 {
-    return static_cast<NavigatorPlugins*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    return static_cast<NavigatorPlugins*>(Supplement<Navigator>::from(navigator, supplementName()));
 }
 
 // static
@@ -80,7 +80,7 @@
 {
     visitor->trace(m_plugins);
     visitor->trace(m_mimeTypes);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/plugins/NavigatorPlugins.h b/third_party/WebKit/Source/modules/plugins/NavigatorPlugins.h
index e91cd16..7d6c54d 100644
--- a/third_party/WebKit/Source/modules/plugins/NavigatorPlugins.h
+++ b/third_party/WebKit/Source/modules/plugins/NavigatorPlugins.h
@@ -15,7 +15,7 @@
 class LocalFrame;
 class Navigator;
 
-class NavigatorPlugins final : public GarbageCollectedFinalized<NavigatorPlugins>, public HeapSupplement<Navigator>, public DOMWindowProperty {
+class NavigatorPlugins final : public GarbageCollectedFinalized<NavigatorPlugins>, public Supplement<Navigator>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorPlugins);
 public:
     static NavigatorPlugins& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/presentation/NavigatorPresentation.cpp b/third_party/WebKit/Source/modules/presentation/NavigatorPresentation.cpp
index 453b935..a406f22 100644
--- a/third_party/WebKit/Source/modules/presentation/NavigatorPresentation.cpp
+++ b/third_party/WebKit/Source/modules/presentation/NavigatorPresentation.cpp
@@ -22,7 +22,7 @@
 // static
 NavigatorPresentation& NavigatorPresentation::from(Navigator& navigator)
 {
-    NavigatorPresentation* supplement = static_cast<NavigatorPresentation*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorPresentation* supplement = static_cast<NavigatorPresentation*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorPresentation();
         provideTo(navigator, supplementName(), supplement);
@@ -45,7 +45,7 @@
 DEFINE_TRACE(NavigatorPresentation)
 {
     visitor->trace(m_presentation);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/presentation/NavigatorPresentation.h b/third_party/WebKit/Source/modules/presentation/NavigatorPresentation.h
index d9affc88..ec97afa 100644
--- a/third_party/WebKit/Source/modules/presentation/NavigatorPresentation.h
+++ b/third_party/WebKit/Source/modules/presentation/NavigatorPresentation.h
@@ -13,7 +13,7 @@
 class Navigator;
 class Presentation;
 
-class NavigatorPresentation final : public GarbageCollectedFinalized<NavigatorPresentation>, public HeapSupplement<Navigator> {
+class NavigatorPresentation final : public GarbageCollectedFinalized<NavigatorPresentation>, public Supplement<Navigator> {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorPresentation);
 public:
     static NavigatorPresentation& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/presentation/PresentationConnectionAvailableEvent.h b/third_party/WebKit/Source/modules/presentation/PresentationConnectionAvailableEvent.h
index cc4c559..0eb986a 100644
--- a/third_party/WebKit/Source/modules/presentation/PresentationConnectionAvailableEvent.h
+++ b/third_party/WebKit/Source/modules/presentation/PresentationConnectionAvailableEvent.h
@@ -23,7 +23,7 @@
 
     static RawPtr<PresentationConnectionAvailableEvent> create()
     {
-        return adoptRefWillBeNoop(new PresentationConnectionAvailableEvent);
+        return new PresentationConnectionAvailableEvent;
     }
     static RawPtr<PresentationConnectionAvailableEvent> create(const AtomicString& eventType, PresentationConnection* connection)
     {
diff --git a/third_party/WebKit/Source/modules/presentation/PresentationConnectionCloseEvent.h b/third_party/WebKit/Source/modules/presentation/PresentationConnectionCloseEvent.h
index 53b59bb..9df1034 100644
--- a/third_party/WebKit/Source/modules/presentation/PresentationConnectionCloseEvent.h
+++ b/third_party/WebKit/Source/modules/presentation/PresentationConnectionCloseEvent.h
@@ -22,7 +22,7 @@
 
     static RawPtr<PresentationConnectionCloseEvent> create()
     {
-        return adoptRefWillBeNoop(new PresentationConnectionCloseEvent);
+        return new PresentationConnectionCloseEvent;
     }
 
     static RawPtr<PresentationConnectionCloseEvent> create(const AtomicString& eventType, const String& reason, const String& message)
diff --git a/third_party/WebKit/Source/modules/presentation/PresentationController.cpp b/third_party/WebKit/Source/modules/presentation/PresentationController.cpp
index 3dea7e77..f1474241 100644
--- a/third_party/WebKit/Source/modules/presentation/PresentationController.cpp
+++ b/third_party/WebKit/Source/modules/presentation/PresentationController.cpp
@@ -39,13 +39,13 @@
 // static
 PresentationController* PresentationController::from(LocalFrame& frame)
 {
-    return static_cast<PresentationController*>(HeapSupplement<LocalFrame>::from(frame, supplementName()));
+    return static_cast<PresentationController*>(Supplement<LocalFrame>::from(frame, supplementName()));
 }
 
 // static
 void PresentationController::provideTo(LocalFrame& frame, WebPresentationClient* client)
 {
-    HeapSupplement<LocalFrame>::provideTo(frame, PresentationController::supplementName(), PresentationController::create(frame, client));
+    Supplement<LocalFrame>::provideTo(frame, PresentationController::supplementName(), PresentationController::create(frame, client));
 }
 
 WebPresentationClient* PresentationController::client()
@@ -57,7 +57,7 @@
 {
     visitor->trace(m_presentation);
     visitor->trace(m_connections);
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
     LocalFrameLifecycleObserver::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/presentation/PresentationController.h b/third_party/WebKit/Source/modules/presentation/PresentationController.h
index 4228113..903c09c 100644
--- a/third_party/WebKit/Source/modules/presentation/PresentationController.h
+++ b/third_party/WebKit/Source/modules/presentation/PresentationController.h
@@ -27,7 +27,7 @@
 // layer represented via |WebPresentationClient|.
 class MODULES_EXPORT PresentationController final
     : public GarbageCollectedFinalized<PresentationController>
-    , public HeapSupplement<LocalFrame>
+    , public Supplement<LocalFrame>
     , public LocalFrameLifecycleObserver
     , public WebPresentationController {
     USING_GARBAGE_COLLECTED_MIXIN(PresentationController);
@@ -44,7 +44,7 @@
 
     WebPresentationClient* client();
 
-    // Implementation of HeapSupplement.
+    // Implementation of Supplement.
     DECLARE_VIRTUAL_TRACE();
 
     // Implementation of WebPresentationController.
diff --git a/third_party/WebKit/Source/modules/push_messaging/PushController.h b/third_party/WebKit/Source/modules/push_messaging/PushController.h
index 9b1e6e6c..918b26a 100644
--- a/third_party/WebKit/Source/modules/push_messaging/PushController.h
+++ b/third_party/WebKit/Source/modules/push_messaging/PushController.h
@@ -16,16 +16,16 @@
 
 class WebPushClient;
 
-class PushController final : public GarbageCollected<PushController>, public HeapSupplement<LocalFrame> {
+class PushController final : public GarbageCollected<PushController>, public Supplement<LocalFrame> {
     USING_GARBAGE_COLLECTED_MIXIN(PushController);
     WTF_MAKE_NONCOPYABLE(PushController);
 public:
     static RawPtr<PushController> create(WebPushClient*);
     static const char* supplementName();
-    static PushController* from(LocalFrame* frame) { return static_cast<PushController*>(HeapSupplement<LocalFrame>::from(frame, supplementName())); }
+    static PushController* from(LocalFrame* frame) { return static_cast<PushController*>(Supplement<LocalFrame>::from(frame, supplementName())); }
     static WebPushClient& clientFrom(LocalFrame*);
 
-    DEFINE_INLINE_VIRTUAL_TRACE() { HeapSupplement<LocalFrame>::trace(visitor); }
+    DEFINE_INLINE_VIRTUAL_TRACE() { Supplement<LocalFrame>::trace(visitor); }
 
 private:
     explicit PushController(WebPushClient*);
diff --git a/third_party/WebKit/Source/modules/push_messaging/PushEvent.h b/third_party/WebKit/Source/modules/push_messaging/PushEvent.h
index 4fb3754a..20f776c 100644
--- a/third_party/WebKit/Source/modules/push_messaging/PushEvent.h
+++ b/third_party/WebKit/Source/modules/push_messaging/PushEvent.h
@@ -22,7 +22,7 @@
 public:
     static RawPtr<PushEvent> create()
     {
-        return adoptRefWillBeNoop(new PushEvent);
+        return new PushEvent;
     }
     static RawPtr<PushEvent> create(const AtomicString& type, PushMessageData* data, WaitUntilObserver* observer)
     {
diff --git a/third_party/WebKit/Source/modules/push_messaging/ServiceWorkerRegistrationPush.cpp b/third_party/WebKit/Source/modules/push_messaging/ServiceWorkerRegistrationPush.cpp
index 4e884d3..8164a2f 100644
--- a/third_party/WebKit/Source/modules/push_messaging/ServiceWorkerRegistrationPush.cpp
+++ b/third_party/WebKit/Source/modules/push_messaging/ServiceWorkerRegistrationPush.cpp
@@ -25,7 +25,7 @@
 
 ServiceWorkerRegistrationPush& ServiceWorkerRegistrationPush::from(ServiceWorkerRegistration& registration)
 {
-    ServiceWorkerRegistrationPush* supplement = static_cast<ServiceWorkerRegistrationPush*>(HeapSupplement<ServiceWorkerRegistration>::from(registration, supplementName()));
+    ServiceWorkerRegistrationPush* supplement = static_cast<ServiceWorkerRegistrationPush*>(Supplement<ServiceWorkerRegistration>::from(registration, supplementName()));
     if (!supplement) {
         supplement = new ServiceWorkerRegistrationPush(&registration);
         provideTo(registration, supplementName(), supplement);
@@ -49,7 +49,7 @@
 {
     visitor->trace(m_registration);
     visitor->trace(m_pushManager);
-    HeapSupplement<ServiceWorkerRegistration>::trace(visitor);
+    Supplement<ServiceWorkerRegistration>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/push_messaging/ServiceWorkerRegistrationPush.h b/third_party/WebKit/Source/modules/push_messaging/ServiceWorkerRegistrationPush.h
index ba8a4f0..de488568 100644
--- a/third_party/WebKit/Source/modules/push_messaging/ServiceWorkerRegistrationPush.h
+++ b/third_party/WebKit/Source/modules/push_messaging/ServiceWorkerRegistrationPush.h
@@ -13,7 +13,7 @@
 class PushManager;
 class ServiceWorkerRegistration;
 
-class ServiceWorkerRegistrationPush final : public GarbageCollectedFinalized<ServiceWorkerRegistrationPush>, public HeapSupplement<ServiceWorkerRegistration> {
+class ServiceWorkerRegistrationPush final : public GarbageCollectedFinalized<ServiceWorkerRegistrationPush>, public Supplement<ServiceWorkerRegistration> {
     USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerRegistrationPush);
     WTF_MAKE_NONCOPYABLE(ServiceWorkerRegistrationPush);
 public:
diff --git a/third_party/WebKit/Source/modules/quota/DOMWindowQuota.cpp b/third_party/WebKit/Source/modules/quota/DOMWindowQuota.cpp
index f7d7720..524cb93 100644
--- a/third_party/WebKit/Source/modules/quota/DOMWindowQuota.cpp
+++ b/third_party/WebKit/Source/modules/quota/DOMWindowQuota.cpp
@@ -50,10 +50,10 @@
 // static
 DOMWindowQuota& DOMWindowQuota::from(LocalDOMWindow& window)
 {
-    DOMWindowQuota* supplement = static_cast<DOMWindowQuota*>(HeapSupplement<LocalDOMWindow>::from(window, supplementName()));
+    DOMWindowQuota* supplement = static_cast<DOMWindowQuota*>(Supplement<LocalDOMWindow>::from(window, supplementName()));
     if (!supplement) {
         supplement = new DOMWindowQuota(window);
-        provideTo(window, supplementName(), adoptPtrWillBeNoop(supplement));
+        provideTo(window, supplementName(), supplement);
     }
     return *supplement;
 }
@@ -74,7 +74,7 @@
 DEFINE_TRACE(DOMWindowQuota)
 {
     visitor->trace(m_storageInfo);
-    HeapSupplement<LocalDOMWindow>::trace(visitor);
+    Supplement<LocalDOMWindow>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/quota/DOMWindowQuota.h b/third_party/WebKit/Source/modules/quota/DOMWindowQuota.h
index 7c525a9..77f4522 100644
--- a/third_party/WebKit/Source/modules/quota/DOMWindowQuota.h
+++ b/third_party/WebKit/Source/modules/quota/DOMWindowQuota.h
@@ -40,7 +40,7 @@
 class DeprecatedStorageInfo;
 class DOMWindow;
 
-class DOMWindowQuota final : public GarbageCollected<DOMWindowQuota>, public HeapSupplement<LocalDOMWindow>, public DOMWindowProperty {
+class DOMWindowQuota final : public GarbageCollected<DOMWindowQuota>, public Supplement<LocalDOMWindow>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(DOMWindowQuota);
 public:
     static DOMWindowQuota& from(LocalDOMWindow&);
diff --git a/third_party/WebKit/Source/modules/quota/NavigatorStorageQuota.cpp b/third_party/WebKit/Source/modules/quota/NavigatorStorageQuota.cpp
index 190e4599..6eab87b 100644
--- a/third_party/WebKit/Source/modules/quota/NavigatorStorageQuota.cpp
+++ b/third_party/WebKit/Source/modules/quota/NavigatorStorageQuota.cpp
@@ -53,7 +53,7 @@
 
 NavigatorStorageQuota& NavigatorStorageQuota::from(Navigator& navigator)
 {
-    NavigatorStorageQuota* supplement = static_cast<NavigatorStorageQuota*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorStorageQuota* supplement = static_cast<NavigatorStorageQuota*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorStorageQuota(navigator.frame());
         provideTo(navigator, supplementName(), supplement);
@@ -115,7 +115,7 @@
     visitor->trace(m_temporaryStorage);
     visitor->trace(m_persistentStorage);
     visitor->trace(m_storageManager);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/quota/NavigatorStorageQuota.h b/third_party/WebKit/Source/modules/quota/NavigatorStorageQuota.h
index c10996a..e35e7f1 100644
--- a/third_party/WebKit/Source/modules/quota/NavigatorStorageQuota.h
+++ b/third_party/WebKit/Source/modules/quota/NavigatorStorageQuota.h
@@ -43,7 +43,7 @@
 class StorageManager;
 class StorageQuota;
 
-class NavigatorStorageQuota final : public GarbageCollectedFinalized<NavigatorStorageQuota>, public HeapSupplement<Navigator>, public DOMWindowProperty {
+class NavigatorStorageQuota final : public GarbageCollectedFinalized<NavigatorStorageQuota>, public Supplement<Navigator>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorStorageQuota);
 public:
     static NavigatorStorageQuota& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/quota/StorageQuotaClient.cpp b/third_party/WebKit/Source/modules/quota/StorageQuotaClient.cpp
index 43fb8db..db2066f 100644
--- a/third_party/WebKit/Source/modules/quota/StorageQuotaClient.cpp
+++ b/third_party/WebKit/Source/modules/quota/StorageQuotaClient.cpp
@@ -45,7 +45,7 @@
 {
     if (!context->isDocument())
         return 0;
-    return static_cast<StorageQuotaClient*>(HeapSupplement<Page>::from(toDocument(context)->page(), supplementName()));
+    return static_cast<StorageQuotaClient*>(Supplement<Page>::from(toDocument(context)->page(), supplementName()));
 }
 
 void provideStorageQuotaClientTo(Page& page, RawPtr<StorageQuotaClient> client)
diff --git a/third_party/WebKit/Source/modules/quota/StorageQuotaClient.h b/third_party/WebKit/Source/modules/quota/StorageQuotaClient.h
index 4ea6da6..cb5073db 100644
--- a/third_party/WebKit/Source/modules/quota/StorageQuotaClient.h
+++ b/third_party/WebKit/Source/modules/quota/StorageQuotaClient.h
@@ -47,7 +47,7 @@
 class StorageErrorCallback;
 class StorageQuotaCallback;
 
-class StorageQuotaClient : public HeapSupplement<Page> {
+class StorageQuotaClient : public Supplement<Page> {
     WTF_MAKE_NONCOPYABLE(StorageQuotaClient);
 public:
     StorageQuotaClient() { }
diff --git a/third_party/WebKit/Source/modules/quota/WorkerNavigatorStorageQuota.cpp b/third_party/WebKit/Source/modules/quota/WorkerNavigatorStorageQuota.cpp
index 89bb927..f5cd7d8 100644
--- a/third_party/WebKit/Source/modules/quota/WorkerNavigatorStorageQuota.cpp
+++ b/third_party/WebKit/Source/modules/quota/WorkerNavigatorStorageQuota.cpp
@@ -46,7 +46,7 @@
 
 WorkerNavigatorStorageQuota& WorkerNavigatorStorageQuota::from(WorkerNavigator& navigator)
 {
-    WorkerNavigatorStorageQuota* supplement = static_cast<WorkerNavigatorStorageQuota*>(HeapSupplement<WorkerNavigator>::from(navigator, supplementName()));
+    WorkerNavigatorStorageQuota* supplement = static_cast<WorkerNavigatorStorageQuota*>(Supplement<WorkerNavigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new WorkerNavigatorStorageQuota();
         provideTo(navigator, supplementName(), supplement);
@@ -95,7 +95,7 @@
     visitor->trace(m_temporaryStorage);
     visitor->trace(m_persistentStorage);
     visitor->trace(m_storageManager);
-    HeapSupplement<WorkerNavigator>::trace(visitor);
+    Supplement<WorkerNavigator>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/quota/WorkerNavigatorStorageQuota.h b/third_party/WebKit/Source/modules/quota/WorkerNavigatorStorageQuota.h
index 5dbf9f3..81206e5 100644
--- a/third_party/WebKit/Source/modules/quota/WorkerNavigatorStorageQuota.h
+++ b/third_party/WebKit/Source/modules/quota/WorkerNavigatorStorageQuota.h
@@ -41,7 +41,7 @@
 
 class StorageManager;
 
-class WorkerNavigatorStorageQuota final : public GarbageCollected<WorkerNavigatorStorageQuota>, public HeapSupplement<WorkerNavigator> {
+class WorkerNavigatorStorageQuota final : public GarbageCollected<WorkerNavigatorStorageQuota>, public Supplement<WorkerNavigator> {
     USING_GARBAGE_COLLECTED_MIXIN(WorkerNavigatorStorageQuota);
 public:
     static WorkerNavigatorStorageQuota& from(WorkerNavigator&);
diff --git a/third_party/WebKit/Source/modules/remoteplayback/HTMLMediaElementRemotePlayback.cpp b/third_party/WebKit/Source/modules/remoteplayback/HTMLMediaElementRemotePlayback.cpp
index ffda26518..f238151 100644
--- a/third_party/WebKit/Source/modules/remoteplayback/HTMLMediaElementRemotePlayback.cpp
+++ b/third_party/WebKit/Source/modules/remoteplayback/HTMLMediaElementRemotePlayback.cpp
@@ -28,10 +28,10 @@
 // static
 HTMLMediaElementRemotePlayback& HTMLMediaElementRemotePlayback::from(HTMLMediaElement& element)
 {
-    HTMLMediaElementRemotePlayback* supplement = static_cast<HTMLMediaElementRemotePlayback*>(HeapSupplement<HTMLMediaElement>::from(element, supplementName()));
+    HTMLMediaElementRemotePlayback* supplement = static_cast<HTMLMediaElementRemotePlayback*>(Supplement<HTMLMediaElement>::from(element, supplementName()));
     if (!supplement) {
         supplement = new HTMLMediaElementRemotePlayback();
-        provideTo(element, supplementName(), adoptPtrWillBeNoop(supplement));
+        provideTo(element, supplementName(), supplement);
     }
     return *supplement;
 }
@@ -59,7 +59,7 @@
 DEFINE_TRACE(HTMLMediaElementRemotePlayback)
 {
     visitor->trace(m_remote);
-    HeapSupplement<HTMLMediaElement>::trace(visitor);
+    Supplement<HTMLMediaElement>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/remoteplayback/HTMLMediaElementRemotePlayback.h b/third_party/WebKit/Source/modules/remoteplayback/HTMLMediaElementRemotePlayback.h
index 65cf1f8..28f9a7ba 100644
--- a/third_party/WebKit/Source/modules/remoteplayback/HTMLMediaElementRemotePlayback.h
+++ b/third_party/WebKit/Source/modules/remoteplayback/HTMLMediaElementRemotePlayback.h
@@ -17,7 +17,7 @@
 
 // Class used to implement the Remote Playback API. It is a supplement to
 // HTMLMediaElement.
-class HTMLMediaElementRemotePlayback final : public GarbageCollected<HTMLMediaElementRemotePlayback>, public HeapSupplement<HTMLMediaElement> {
+class HTMLMediaElementRemotePlayback final : public GarbageCollected<HTMLMediaElementRemotePlayback>, public Supplement<HTMLMediaElement> {
     USING_GARBAGE_COLLECTED_MIXIN(HTMLMediaElementRemotePlayback);
 public:
     static bool fastHasAttribute(const QualifiedName&, const HTMLMediaElement&);
diff --git a/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationController.cpp b/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationController.cpp
index e46e948..87380a3 100644
--- a/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationController.cpp
+++ b/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationController.cpp
@@ -27,12 +27,12 @@
     ASSERT(RuntimeEnabledFeatures::screenOrientationEnabled());
 
     ScreenOrientationController* controller = new ScreenOrientationController(frame, client);
-    HeapSupplement<LocalFrame>::provideTo(frame, supplementName(), adoptPtrWillBeNoop(controller));
+    Supplement<LocalFrame>::provideTo(frame, supplementName(), controller);
 }
 
 ScreenOrientationController* ScreenOrientationController::from(LocalFrame& frame)
 {
-    return static_cast<ScreenOrientationController*>(HeapSupplement<LocalFrame>::from(frame, supplementName()));
+    return static_cast<ScreenOrientationController*>(Supplement<LocalFrame>::from(frame, supplementName()));
 }
 
 ScreenOrientationController::ScreenOrientationController(LocalFrame& frame, WebScreenOrientationClient* client)
@@ -214,7 +214,7 @@
 {
     visitor->trace(m_orientation);
     LocalFrameLifecycleObserver::trace(visitor);
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
     PlatformEventController::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationController.h b/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationController.h
index a728882..07e7ed6 100644
--- a/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationController.h
+++ b/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationController.h
@@ -22,7 +22,7 @@
 
 class MODULES_EXPORT ScreenOrientationController final
     : public GarbageCollectedFinalized<ScreenOrientationController>
-    , public HeapSupplement<LocalFrame>
+    , public Supplement<LocalFrame>
     , public LocalFrameLifecycleObserver
     , public PlatformEventController {
     USING_GARBAGE_COLLECTED_MIXIN(ScreenOrientationController);
diff --git a/third_party/WebKit/Source/modules/screen_orientation/ScreenScreenOrientation.cpp b/third_party/WebKit/Source/modules/screen_orientation/ScreenScreenOrientation.cpp
index ddf0947..410fd87 100644
--- a/third_party/WebKit/Source/modules/screen_orientation/ScreenScreenOrientation.cpp
+++ b/third_party/WebKit/Source/modules/screen_orientation/ScreenScreenOrientation.cpp
@@ -13,7 +13,7 @@
 // static
 ScreenScreenOrientation& ScreenScreenOrientation::from(Screen& screen)
 {
-    ScreenScreenOrientation* supplement = static_cast<ScreenScreenOrientation*>(HeapSupplement<Screen>::from(screen, supplementName()));
+    ScreenScreenOrientation* supplement = static_cast<ScreenScreenOrientation*>(Supplement<Screen>::from(screen, supplementName()));
     if (!supplement) {
         supplement = new ScreenScreenOrientation();
         provideTo(screen, supplementName(), supplement);
@@ -42,7 +42,7 @@
 DEFINE_TRACE(ScreenScreenOrientation)
 {
     visitor->trace(m_orientation);
-    HeapSupplement<Screen>::trace(visitor);
+    Supplement<Screen>::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/modules/screen_orientation/ScreenScreenOrientation.h b/third_party/WebKit/Source/modules/screen_orientation/ScreenScreenOrientation.h
index e1c3da8..1834a777 100644
--- a/third_party/WebKit/Source/modules/screen_orientation/ScreenScreenOrientation.h
+++ b/third_party/WebKit/Source/modules/screen_orientation/ScreenScreenOrientation.h
@@ -14,7 +14,7 @@
 class Screen;
 class ScriptState;
 
-class ScreenScreenOrientation final : public GarbageCollected<ScreenScreenOrientation>, public HeapSupplement<Screen> {
+class ScreenScreenOrientation final : public GarbageCollected<ScreenScreenOrientation>, public Supplement<Screen> {
     USING_GARBAGE_COLLECTED_MIXIN(ScreenScreenOrientation);
 public:
     static ScreenScreenOrientation& from(Screen&);
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ExtendableMessageEvent.cpp b/third_party/WebKit/Source/modules/serviceworkers/ExtendableMessageEvent.cpp
index 14a6b23..58c5e4f 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ExtendableMessageEvent.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ExtendableMessageEvent.cpp
@@ -8,7 +8,7 @@
 
 RawPtr<ExtendableMessageEvent> ExtendableMessageEvent::create()
 {
-    return adoptRefWillBeNoop(new ExtendableMessageEvent);
+    return new ExtendableMessageEvent;
 }
 
 RawPtr<ExtendableMessageEvent> ExtendableMessageEvent::create(const AtomicString& type, const ExtendableMessageEventInit& initializer)
diff --git a/third_party/WebKit/Source/modules/serviceworkers/NavigatorServiceWorker.cpp b/third_party/WebKit/Source/modules/serviceworkers/NavigatorServiceWorker.cpp
index 8602f43..70ee04f 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/NavigatorServiceWorker.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/NavigatorServiceWorker.cpp
@@ -45,7 +45,7 @@
 
 NavigatorServiceWorker* NavigatorServiceWorker::toNavigatorServiceWorker(Navigator& navigator)
 {
-    return static_cast<NavigatorServiceWorker*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    return static_cast<NavigatorServiceWorker*>(Supplement<Navigator>::from(navigator, supplementName()));
 }
 
 const char* NavigatorServiceWorker::supplementName()
@@ -86,7 +86,7 @@
 DEFINE_TRACE(NavigatorServiceWorker)
 {
     visitor->trace(m_serviceWorker);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/serviceworkers/NavigatorServiceWorker.h b/third_party/WebKit/Source/modules/serviceworkers/NavigatorServiceWorker.h
index 03ee922c..b9b2a28 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/NavigatorServiceWorker.h
+++ b/third_party/WebKit/Source/modules/serviceworkers/NavigatorServiceWorker.h
@@ -17,7 +17,7 @@
 class Navigator;
 class ServiceWorkerContainer;
 
-class MODULES_EXPORT NavigatorServiceWorker final : public GarbageCollectedFinalized<NavigatorServiceWorker>, public HeapSupplement<Navigator>, public DOMWindowProperty {
+class MODULES_EXPORT NavigatorServiceWorker final : public GarbageCollectedFinalized<NavigatorServiceWorker>, public Supplement<Navigator>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorServiceWorker);
 public:
     static NavigatorServiceWorker* from(Document&);
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerClient.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerClient.cpp
index 2a5cabf..f5defc34 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerClient.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerClient.cpp
@@ -37,16 +37,16 @@
     if (context->isWorkerGlobalScope()) {
         WorkerClients* clients = toWorkerGlobalScope(context)->clients();
         ASSERT(clients);
-        return static_cast<ServiceWorkerContainerClient*>(HeapSupplement<WorkerClients>::from(clients, supplementName()));
+        return static_cast<ServiceWorkerContainerClient*>(Supplement<WorkerClients>::from(clients, supplementName()));
     }
     Document* document = toDocument(context);
     if (!document->frame())
         return nullptr;
 
-    ServiceWorkerContainerClient* client = static_cast<ServiceWorkerContainerClient*>(HeapSupplement<Document>::from(document, supplementName()));
+    ServiceWorkerContainerClient* client = static_cast<ServiceWorkerContainerClient*>(Supplement<Document>::from(document, supplementName()));
     if (!client) {
         client = new ServiceWorkerContainerClient(document->frame()->loader().client()->createServiceWorkerProvider());
-        HeapSupplement<Document>::provideTo(*document, supplementName(), adoptPtrWillBeNoop(client));
+        Supplement<Document>::provideTo(*document, supplementName(), client);
     }
     return client;
 }
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerClient.h b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerClient.h
index b3d1b99e..cd3bcb55 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerClient.h
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerClient.h
@@ -19,8 +19,8 @@
 // Owned by Document (or WorkerClients).
 class MODULES_EXPORT ServiceWorkerContainerClient final
     : public GarbageCollectedFinalized<ServiceWorkerContainerClient>
-    , public HeapSupplement<Document>
-    , public HeapSupplement<WorkerClients> {
+    , public Supplement<Document>
+    , public Supplement<WorkerClients> {
     USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerContainerClient);
     WTF_MAKE_NONCOPYABLE(ServiceWorkerContainerClient);
 public:
@@ -34,8 +34,8 @@
 
     DEFINE_INLINE_VIRTUAL_TRACE()
     {
-        HeapSupplement<Document>::trace(visitor);
-        HeapSupplement<WorkerClients>::trace(visitor);
+        Supplement<Document>::trace(visitor);
+        Supplement<WorkerClients>::trace(visitor);
     }
 
 protected:
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerTest.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerTest.cpp
index fa61439..5b4fa59 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerTest.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerTest.cpp
@@ -164,7 +164,7 @@
 
     void provide(PassOwnPtr<WebServiceWorkerProvider> provider)
     {
-        HeapSupplement<Document>::provideTo(m_page->document(), ServiceWorkerContainerClient::supplementName(), ServiceWorkerContainerClient::create(provider));
+        Supplement<Document>::provideTo(m_page->document(), ServiceWorkerContainerClient::supplementName(), ServiceWorkerContainerClient::create(provider));
     }
 
     void setPageURL(const String& url)
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeClient.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeClient.cpp
index e1b806c..acfda7b 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeClient.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeClient.cpp
@@ -44,7 +44,7 @@
 {
     WorkerClients* clients = toWorkerGlobalScope(context)->clients();
     ASSERT(clients);
-    return static_cast<ServiceWorkerGlobalScopeClient*>(HeapSupplement<WorkerClients>::from(clients, supplementName()));
+    return static_cast<ServiceWorkerGlobalScopeClient*>(Supplement<WorkerClients>::from(clients, supplementName()));
 }
 
 void provideServiceWorkerGlobalScopeClientToWorker(WorkerClients* clients, RawPtr<ServiceWorkerGlobalScopeClient> client)
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeClient.h b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeClient.h
index 28fed93..7ec0d21 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeClient.h
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeClient.h
@@ -53,7 +53,7 @@
 class WorkerClients;
 
 // See WebServiceWorkerContextClient for documentation for the methods in this class.
-class MODULES_EXPORT ServiceWorkerGlobalScopeClient : public HeapSupplement<WorkerClients> {
+class MODULES_EXPORT ServiceWorkerGlobalScopeClient : public Supplement<WorkerClients> {
     WTF_MAKE_NONCOPYABLE(ServiceWorkerGlobalScopeClient);
     DISALLOW_NEW();
 public:
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerMessageEvent.h b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerMessageEvent.h
index 2242ecb..6e6f5a60 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerMessageEvent.h
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerMessageEvent.h
@@ -18,7 +18,7 @@
 public:
     static RawPtr<ServiceWorkerMessageEvent> create()
     {
-        return adoptRefWillBeNoop(new ServiceWorkerMessageEvent);
+        return new ServiceWorkerMessageEvent;
     }
 
     static RawPtr<ServiceWorkerMessageEvent> create(const AtomicString& type, const ServiceWorkerMessageEventInit& initializer)
diff --git a/third_party/WebKit/Source/modules/speech/DOMWindowSpeechSynthesis.cpp b/third_party/WebKit/Source/modules/speech/DOMWindowSpeechSynthesis.cpp
index 87e3d79..24404ce 100644
--- a/third_party/WebKit/Source/modules/speech/DOMWindowSpeechSynthesis.cpp
+++ b/third_party/WebKit/Source/modules/speech/DOMWindowSpeechSynthesis.cpp
@@ -49,10 +49,10 @@
 // static
 DOMWindowSpeechSynthesis& DOMWindowSpeechSynthesis::from(LocalDOMWindow& window)
 {
-    DOMWindowSpeechSynthesis* supplement = static_cast<DOMWindowSpeechSynthesis*>(HeapSupplement<LocalDOMWindow>::from(window, supplementName()));
+    DOMWindowSpeechSynthesis* supplement = static_cast<DOMWindowSpeechSynthesis*>(Supplement<LocalDOMWindow>::from(window, supplementName()));
     if (!supplement) {
         supplement = new DOMWindowSpeechSynthesis(window);
-        provideTo(window, supplementName(), adoptPtrWillBeNoop(supplement));
+        provideTo(window, supplementName(), supplement);
     }
     return *supplement;
 }
@@ -73,7 +73,7 @@
 DEFINE_TRACE(DOMWindowSpeechSynthesis)
 {
     visitor->trace(m_speechSynthesis);
-    HeapSupplement<LocalDOMWindow>::trace(visitor);
+    Supplement<LocalDOMWindow>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/speech/DOMWindowSpeechSynthesis.h b/third_party/WebKit/Source/modules/speech/DOMWindowSpeechSynthesis.h
index 2f0e18f..91b182047 100644
--- a/third_party/WebKit/Source/modules/speech/DOMWindowSpeechSynthesis.h
+++ b/third_party/WebKit/Source/modules/speech/DOMWindowSpeechSynthesis.h
@@ -36,7 +36,7 @@
 
 class DOMWindow;
 
-class MODULES_EXPORT DOMWindowSpeechSynthesis final : public GarbageCollected<DOMWindowSpeechSynthesis>, public HeapSupplement<LocalDOMWindow>, public DOMWindowProperty {
+class MODULES_EXPORT DOMWindowSpeechSynthesis final : public GarbageCollected<DOMWindowSpeechSynthesis>, public Supplement<LocalDOMWindow>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(DOMWindowSpeechSynthesis);
 public:
     static SpeechSynthesis* speechSynthesis(DOMWindow&);
diff --git a/third_party/WebKit/Source/modules/speech/SpeechRecognitionController.h b/third_party/WebKit/Source/modules/speech/SpeechRecognitionController.h
index 54bb532..962ef10 100644
--- a/third_party/WebKit/Source/modules/speech/SpeechRecognitionController.h
+++ b/third_party/WebKit/Source/modules/speech/SpeechRecognitionController.h
@@ -34,7 +34,7 @@
 
 class MediaStreamTrack;
 
-class SpeechRecognitionController final : public GarbageCollectedFinalized<SpeechRecognitionController>, public HeapSupplement<Page> {
+class SpeechRecognitionController final : public GarbageCollectedFinalized<SpeechRecognitionController>, public Supplement<Page> {
     USING_GARBAGE_COLLECTED_MIXIN(SpeechRecognitionController);
 public:
     virtual ~SpeechRecognitionController();
@@ -49,9 +49,9 @@
 
     static RawPtr<SpeechRecognitionController> create(PassOwnPtr<SpeechRecognitionClient>);
     static const char* supplementName();
-    static SpeechRecognitionController* from(Page* page) { return static_cast<SpeechRecognitionController*>(HeapSupplement<Page>::from(page, supplementName())); }
+    static SpeechRecognitionController* from(Page* page) { return static_cast<SpeechRecognitionController*>(Supplement<Page>::from(page, supplementName())); }
 
-    DEFINE_INLINE_VIRTUAL_TRACE() { HeapSupplement<Page>::trace(visitor); }
+    DEFINE_INLINE_VIRTUAL_TRACE() { Supplement<Page>::trace(visitor); }
 
 private:
     explicit SpeechRecognitionController(PassOwnPtr<SpeechRecognitionClient>);
diff --git a/third_party/WebKit/Source/modules/speech/SpeechRecognitionEvent.cpp b/third_party/WebKit/Source/modules/speech/SpeechRecognitionEvent.cpp
index b61c201..6cdd4c0 100644
--- a/third_party/WebKit/Source/modules/speech/SpeechRecognitionEvent.cpp
+++ b/third_party/WebKit/Source/modules/speech/SpeechRecognitionEvent.cpp
@@ -29,7 +29,7 @@
 
 RawPtr<SpeechRecognitionEvent> SpeechRecognitionEvent::create()
 {
-    return adoptRefWillBeNoop(new SpeechRecognitionEvent);
+    return new SpeechRecognitionEvent;
 }
 
 RawPtr<SpeechRecognitionEvent> SpeechRecognitionEvent::create(const AtomicString& eventName, const SpeechRecognitionEventInit& initializer)
diff --git a/third_party/WebKit/Source/modules/speech/SpeechSynthesisEvent.cpp b/third_party/WebKit/Source/modules/speech/SpeechSynthesisEvent.cpp
index 6a5e94e3..a1e58ba 100644
--- a/third_party/WebKit/Source/modules/speech/SpeechSynthesisEvent.cpp
+++ b/third_party/WebKit/Source/modules/speech/SpeechSynthesisEvent.cpp
@@ -29,7 +29,7 @@
 
 RawPtr<SpeechSynthesisEvent> SpeechSynthesisEvent::create()
 {
-    return adoptRefWillBeNoop(new SpeechSynthesisEvent);
+    return new SpeechSynthesisEvent;
 }
 
 RawPtr<SpeechSynthesisEvent> SpeechSynthesisEvent::create(const AtomicString& type, SpeechSynthesisUtterance* utterance, unsigned charIndex, float elapsedTime, const String& name)
diff --git a/third_party/WebKit/Source/modules/storage/DOMWindowStorage.cpp b/third_party/WebKit/Source/modules/storage/DOMWindowStorage.cpp
index 8de3df5..a7d3240 100644
--- a/third_party/WebKit/Source/modules/storage/DOMWindowStorage.cpp
+++ b/third_party/WebKit/Source/modules/storage/DOMWindowStorage.cpp
@@ -28,7 +28,7 @@
     visitor->trace(m_window);
     visitor->trace(m_sessionStorage);
     visitor->trace(m_localStorage);
-    HeapSupplement<LocalDOMWindow>::trace(visitor);
+    Supplement<LocalDOMWindow>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
@@ -41,10 +41,10 @@
 // static
 DOMWindowStorage& DOMWindowStorage::from(LocalDOMWindow& window)
 {
-    DOMWindowStorage* supplement = static_cast<DOMWindowStorage*>(HeapSupplement<LocalDOMWindow>::from(window, supplementName()));
+    DOMWindowStorage* supplement = static_cast<DOMWindowStorage*>(Supplement<LocalDOMWindow>::from(window, supplementName()));
     if (!supplement) {
         supplement = new DOMWindowStorage(window);
-        provideTo(window, supplementName(), adoptPtrWillBeNoop(supplement));
+        provideTo(window, supplementName(), supplement);
     }
     return *supplement;
 }
diff --git a/third_party/WebKit/Source/modules/storage/DOMWindowStorage.h b/third_party/WebKit/Source/modules/storage/DOMWindowStorage.h
index b44d145de8..0299ab0 100644
--- a/third_party/WebKit/Source/modules/storage/DOMWindowStorage.h
+++ b/third_party/WebKit/Source/modules/storage/DOMWindowStorage.h
@@ -15,7 +15,7 @@
 class ExceptionState;
 class Storage;
 
-class DOMWindowStorage final : public GarbageCollected<DOMWindowStorage>, public HeapSupplement<LocalDOMWindow>, public DOMWindowProperty {
+class DOMWindowStorage final : public GarbageCollected<DOMWindowStorage>, public Supplement<LocalDOMWindow>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(DOMWindowStorage);
 public:
     static DOMWindowStorage& from(LocalDOMWindow&);
diff --git a/third_party/WebKit/Source/modules/storage/DOMWindowStorageController.cpp b/third_party/WebKit/Source/modules/storage/DOMWindowStorageController.cpp
index 0da05ee..d4aa8d2 100644
--- a/third_party/WebKit/Source/modules/storage/DOMWindowStorageController.cpp
+++ b/third_party/WebKit/Source/modules/storage/DOMWindowStorageController.cpp
@@ -21,7 +21,7 @@
 DEFINE_TRACE(DOMWindowStorageController)
 {
     visitor->trace(m_document);
-    HeapSupplement<Document>::trace(visitor);
+    Supplement<Document>::trace(visitor);
     DOMWindowLifecycleObserver::trace(visitor);
 }
 
@@ -34,10 +34,10 @@
 // static
 DOMWindowStorageController& DOMWindowStorageController::from(Document& document)
 {
-    DOMWindowStorageController* controller = static_cast<DOMWindowStorageController*>(HeapSupplement<Document>::from(document, supplementName()));
+    DOMWindowStorageController* controller = static_cast<DOMWindowStorageController*>(Supplement<Document>::from(document, supplementName()));
     if (!controller) {
         controller = new DOMWindowStorageController(document);
-        HeapSupplement<Document>::provideTo(document, supplementName(), adoptPtrWillBeNoop(controller));
+        Supplement<Document>::provideTo(document, supplementName(), controller);
     }
     return *controller;
 }
diff --git a/third_party/WebKit/Source/modules/storage/DOMWindowStorageController.h b/third_party/WebKit/Source/modules/storage/DOMWindowStorageController.h
index 50db24c..024e724 100644
--- a/third_party/WebKit/Source/modules/storage/DOMWindowStorageController.h
+++ b/third_party/WebKit/Source/modules/storage/DOMWindowStorageController.h
@@ -16,7 +16,7 @@
 class Document;
 class Event;
 
-class MODULES_EXPORT DOMWindowStorageController final : public GarbageCollected<DOMWindowStorageController>, public HeapSupplement<Document>, public DOMWindowLifecycleObserver {
+class MODULES_EXPORT DOMWindowStorageController final : public GarbageCollected<DOMWindowStorageController>, public Supplement<Document>, public DOMWindowLifecycleObserver {
     USING_GARBAGE_COLLECTED_MIXIN(DOMWindowStorageController);
 public:
     DECLARE_VIRTUAL_TRACE();
diff --git a/third_party/WebKit/Source/modules/storage/StorageEvent.cpp b/third_party/WebKit/Source/modules/storage/StorageEvent.cpp
index 59ff58e..aa5596d 100644
--- a/third_party/WebKit/Source/modules/storage/StorageEvent.cpp
+++ b/third_party/WebKit/Source/modules/storage/StorageEvent.cpp
@@ -33,7 +33,7 @@
 
 RawPtr<StorageEvent> StorageEvent::create()
 {
-    return adoptRefWillBeNoop(new StorageEvent);
+    return new StorageEvent;
 }
 
 StorageEvent::StorageEvent()
diff --git a/third_party/WebKit/Source/modules/storage/StorageNamespaceController.cpp b/third_party/WebKit/Source/modules/storage/StorageNamespaceController.cpp
index 60f39a5..8b290a3 100644
--- a/third_party/WebKit/Source/modules/storage/StorageNamespaceController.cpp
+++ b/third_party/WebKit/Source/modules/storage/StorageNamespaceController.cpp
@@ -27,7 +27,7 @@
 
 DEFINE_TRACE(StorageNamespaceController)
 {
-    HeapSupplement<Page>::trace(visitor);
+    Supplement<Page>::trace(visitor);
     visitor->trace(m_inspectorAgent);
 }
 
diff --git a/third_party/WebKit/Source/modules/storage/StorageNamespaceController.h b/third_party/WebKit/Source/modules/storage/StorageNamespaceController.h
index 6c5435d7..8ac6cb08 100644
--- a/third_party/WebKit/Source/modules/storage/StorageNamespaceController.h
+++ b/third_party/WebKit/Source/modules/storage/StorageNamespaceController.h
@@ -16,7 +16,7 @@
 class StorageClient;
 class StorageNamespace;
 
-class MODULES_EXPORT StorageNamespaceController final : public GarbageCollectedFinalized<StorageNamespaceController>, public HeapSupplement<Page> {
+class MODULES_EXPORT StorageNamespaceController final : public GarbageCollectedFinalized<StorageNamespaceController>, public Supplement<Page> {
     USING_GARBAGE_COLLECTED_MIXIN(StorageNamespaceController);
 public:
     StorageNamespace* sessionStorage(bool optionalCreate = true);
@@ -24,7 +24,7 @@
     ~StorageNamespaceController();
 
     static void provideStorageNamespaceTo(Page&, StorageClient*);
-    static StorageNamespaceController* from(Page* page) { return static_cast<StorageNamespaceController*>(HeapSupplement<Page>::from(page, supplementName())); }
+    static StorageNamespaceController* from(Page* page) { return static_cast<StorageNamespaceController*>(Supplement<Page>::from(page, supplementName())); }
 
     DECLARE_TRACE();
 
diff --git a/third_party/WebKit/Source/modules/vibration/NavigatorVibration.cpp b/third_party/WebKit/Source/modules/vibration/NavigatorVibration.cpp
index 8d402ca..3b36ffb 100644
--- a/third_party/WebKit/Source/modules/vibration/NavigatorVibration.cpp
+++ b/third_party/WebKit/Source/modules/vibration/NavigatorVibration.cpp
@@ -184,10 +184,10 @@
 
 NavigatorVibration& NavigatorVibration::from(Page& page)
 {
-    NavigatorVibration* navigatorVibration = static_cast<NavigatorVibration*>(HeapSupplement<Page>::from(page, supplementName()));
+    NavigatorVibration* navigatorVibration = static_cast<NavigatorVibration*>(Supplement<Page>::from(page, supplementName()));
     if (!navigatorVibration) {
         navigatorVibration = new NavigatorVibration(page);
-        HeapSupplement<Page>::provideTo(page, supplementName(), adoptPtrWillBeNoop(navigatorVibration));
+        Supplement<Page>::provideTo(page, supplementName(), navigatorVibration);
     }
     return *navigatorVibration;
 }
@@ -199,7 +199,7 @@
 
 DEFINE_TRACE(NavigatorVibration)
 {
-    HeapSupplement<Page>::trace(visitor);
+    Supplement<Page>::trace(visitor);
     PageLifecycleObserver::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/vibration/NavigatorVibration.h b/third_party/WebKit/Source/modules/vibration/NavigatorVibration.h
index 2a7b555..c44ea30 100644
--- a/third_party/WebKit/Source/modules/vibration/NavigatorVibration.h
+++ b/third_party/WebKit/Source/modules/vibration/NavigatorVibration.h
@@ -35,7 +35,7 @@
 
 class MODULES_EXPORT NavigatorVibration final
     : public GarbageCollectedFinalized<NavigatorVibration>
-    , public HeapSupplement<Page>
+    , public Supplement<Page>
     , public PageLifecycleObserver {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorVibration);
 public:
diff --git a/third_party/WebKit/Source/modules/vr/NavigatorVRDevice.cpp b/third_party/WebKit/Source/modules/vr/NavigatorVRDevice.cpp
index 9b8e02e..dfad15c 100644
--- a/third_party/WebKit/Source/modules/vr/NavigatorVRDevice.cpp
+++ b/third_party/WebKit/Source/modules/vr/NavigatorVRDevice.cpp
@@ -32,7 +32,7 @@
 
 NavigatorVRDevice& NavigatorVRDevice::from(Navigator& navigator)
 {
-    NavigatorVRDevice* supplement = static_cast<NavigatorVRDevice*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorVRDevice* supplement = static_cast<NavigatorVRDevice*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorVRDevice(navigator.frame());
         provideTo(navigator, supplementName(), supplement);
@@ -75,7 +75,7 @@
 {
     visitor->trace(m_hardwareUnits);
 
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/vr/NavigatorVRDevice.h b/third_party/WebKit/Source/modules/vr/NavigatorVRDevice.h
index 68e12e7..a20e1fd 100644
--- a/third_party/WebKit/Source/modules/vr/NavigatorVRDevice.h
+++ b/third_party/WebKit/Source/modules/vr/NavigatorVRDevice.h
@@ -22,7 +22,7 @@
 class VRController;
 class VRHardwareUnitCollection;
 
-class MODULES_EXPORT NavigatorVRDevice final : public GarbageCollectedFinalized<NavigatorVRDevice>, public HeapSupplement<Navigator>, public DOMWindowProperty {
+class MODULES_EXPORT NavigatorVRDevice final : public GarbageCollectedFinalized<NavigatorVRDevice>, public Supplement<Navigator>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorVRDevice);
     WTF_MAKE_NONCOPYABLE(NavigatorVRDevice);
 public:
diff --git a/third_party/WebKit/Source/modules/vr/VRController.cpp b/third_party/WebKit/Source/modules/vr/VRController.cpp
index d0d8bb80..36aa47c 100644
--- a/third_party/WebKit/Source/modules/vr/VRController.cpp
+++ b/third_party/WebKit/Source/modules/vr/VRController.cpp
@@ -18,12 +18,12 @@
     ASSERT(RuntimeEnabledFeatures::webVREnabled());
 
     VRController* controller = new VRController(frame, client);
-    HeapSupplement<LocalFrame>::provideTo(frame, supplementName(), adoptPtrWillBeNoop(controller));
+    Supplement<LocalFrame>::provideTo(frame, supplementName(), controller);
 }
 
 VRController* VRController::from(LocalFrame& frame)
 {
-    return static_cast<VRController*>(HeapSupplement<LocalFrame>::from(frame, supplementName()));
+    return static_cast<VRController*>(Supplement<LocalFrame>::from(frame, supplementName()));
 }
 
 VRController::VRController(LocalFrame& frame, WebVRClient* client)
@@ -73,7 +73,7 @@
 
 DEFINE_TRACE(VRController)
 {
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
     LocalFrameLifecycleObserver::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/vr/VRController.h b/third_party/WebKit/Source/modules/vr/VRController.h
index 9bad95c..eb4e0ea 100644
--- a/third_party/WebKit/Source/modules/vr/VRController.h
+++ b/third_party/WebKit/Source/modules/vr/VRController.h
@@ -15,7 +15,7 @@
 
 class MODULES_EXPORT VRController final
     : public GarbageCollectedFinalized<VRController>
-    , public HeapSupplement<LocalFrame>
+    , public Supplement<LocalFrame>
     , public LocalFrameLifecycleObserver {
     USING_GARBAGE_COLLECTED_MIXIN(VRController);
     WTF_MAKE_NONCOPYABLE(VRController);
diff --git a/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.cpp b/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.cpp
index 8c46f66..331e672 100644
--- a/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.cpp
+++ b/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.cpp
@@ -47,14 +47,14 @@
 // static
 ScreenWakeLock* ScreenWakeLock::from(LocalFrame* frame)
 {
-    return static_cast<ScreenWakeLock*>(HeapSupplement<LocalFrame>::from(frame, supplementName()));
+    return static_cast<ScreenWakeLock*>(Supplement<LocalFrame>::from(frame, supplementName()));
 }
 
 // static
 void ScreenWakeLock::provideTo(LocalFrame& frame, WebWakeLockClient* client)
 {
     ASSERT(RuntimeEnabledFeatures::wakeLockEnabled());
-    HeapSupplement<LocalFrame>::provideTo(
+    Supplement<LocalFrame>::provideTo(
         frame,
         ScreenWakeLock::supplementName(),
         new ScreenWakeLock(frame, client));
@@ -80,7 +80,7 @@
 
 DEFINE_TRACE(ScreenWakeLock)
 {
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
     PageLifecycleObserver::trace(visitor);
     LocalFrameLifecycleObserver::trace(visitor);
 }
diff --git a/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.h b/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.h
index 0a98be0..ea9ee36 100644
--- a/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.h
+++ b/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.h
@@ -16,7 +16,7 @@
 class Screen;
 class WebWakeLockClient;
 
-class MODULES_EXPORT ScreenWakeLock final : public GarbageCollected<ScreenWakeLock>, public HeapSupplement<LocalFrame>, public PageLifecycleObserver, public LocalFrameLifecycleObserver {
+class MODULES_EXPORT ScreenWakeLock final : public GarbageCollected<ScreenWakeLock>, public Supplement<LocalFrame>, public PageLifecycleObserver, public LocalFrameLifecycleObserver {
     USING_GARBAGE_COLLECTED_MIXIN(ScreenWakeLock);
     WTF_MAKE_NONCOPYABLE(ScreenWakeLock);
 public:
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioProcessingEvent.cpp b/third_party/WebKit/Source/modules/webaudio/AudioProcessingEvent.cpp
index 0ce631c0..bc8a3ae35 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioProcessingEvent.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioProcessingEvent.cpp
@@ -28,7 +28,7 @@
 
 RawPtr<AudioProcessingEvent> AudioProcessingEvent::create()
 {
-    return adoptRefWillBeNoop(new AudioProcessingEvent);
+    return new AudioProcessingEvent;
 }
 
 RawPtr<AudioProcessingEvent> AudioProcessingEvent::create(AudioBuffer* inputBuffer, AudioBuffer* outputBuffer, double playbackTime)
diff --git a/third_party/WebKit/Source/modules/webaudio/OfflineAudioCompletionEvent.cpp b/third_party/WebKit/Source/modules/webaudio/OfflineAudioCompletionEvent.cpp
index fdb2d444..13aa884e 100644
--- a/third_party/WebKit/Source/modules/webaudio/OfflineAudioCompletionEvent.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/OfflineAudioCompletionEvent.cpp
@@ -28,7 +28,7 @@
 
 RawPtr<OfflineAudioCompletionEvent> OfflineAudioCompletionEvent::create()
 {
-    return adoptRefWillBeNoop(new OfflineAudioCompletionEvent);
+    return new OfflineAudioCompletionEvent;
 }
 
 RawPtr<OfflineAudioCompletionEvent> OfflineAudioCompletionEvent::create(AudioBuffer* renderedBuffer)
diff --git a/third_party/WebKit/Source/modules/webdatabase/DatabaseClient.cpp b/third_party/WebKit/Source/modules/webdatabase/DatabaseClient.cpp
index e43c849c..67eab9f 100644
--- a/third_party/WebKit/Source/modules/webdatabase/DatabaseClient.cpp
+++ b/third_party/WebKit/Source/modules/webdatabase/DatabaseClient.cpp
@@ -48,7 +48,7 @@
 
 DatabaseClient* DatabaseClient::fromPage(Page* page)
 {
-    return static_cast<DatabaseClient*>(HeapSupplement<Page>::from(page, supplementName()));
+    return static_cast<DatabaseClient*>(Supplement<Page>::from(page, supplementName()));
 }
 
 DatabaseClient* DatabaseClient::from(ExecutionContext* context)
diff --git a/third_party/WebKit/Source/modules/webdatabase/DatabaseClient.h b/third_party/WebKit/Source/modules/webdatabase/DatabaseClient.h
index 5a5d420..5c9542e 100644
--- a/third_party/WebKit/Source/modules/webdatabase/DatabaseClient.h
+++ b/third_party/WebKit/Source/modules/webdatabase/DatabaseClient.h
@@ -44,7 +44,7 @@
 class InspectorDatabaseAgent;
 class Page;
 
-class MODULES_EXPORT DatabaseClient : public HeapSupplement<Page> {
+class MODULES_EXPORT DatabaseClient : public Supplement<Page> {
     WTF_MAKE_NONCOPYABLE(DatabaseClient);
 public:
     DatabaseClient();
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLContextEvent.h b/third_party/WebKit/Source/modules/webgl/WebGLContextEvent.h
index 4115b8b..1c3e918b 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLContextEvent.h
+++ b/third_party/WebKit/Source/modules/webgl/WebGLContextEvent.h
@@ -37,7 +37,7 @@
 public:
     static RawPtr<WebGLContextEvent> create()
     {
-        return adoptRefWillBeNoop(new WebGLContextEvent);
+        return new WebGLContextEvent;
     }
     static RawPtr<WebGLContextEvent> create(const AtomicString& type, bool canBubble, bool cancelable, const String& statusMessage)
     {
diff --git a/third_party/WebKit/Source/modules/webmidi/MIDIController.h b/third_party/WebKit/Source/modules/webmidi/MIDIController.h
index d1980c07..5e3b7d0 100644
--- a/third_party/WebKit/Source/modules/webmidi/MIDIController.h
+++ b/third_party/WebKit/Source/modules/webmidi/MIDIController.h
@@ -40,7 +40,7 @@
 class MIDIClient;
 class MIDIOptions;
 
-class MIDIController final : public GarbageCollectedFinalized<MIDIController>, public HeapSupplement<LocalFrame> {
+class MIDIController final : public GarbageCollectedFinalized<MIDIController>, public Supplement<LocalFrame> {
     USING_GARBAGE_COLLECTED_MIXIN(MIDIController);
 public:
     virtual ~MIDIController();
@@ -50,9 +50,9 @@
 
     static RawPtr<MIDIController> create(PassOwnPtr<MIDIClient>);
     static const char* supplementName();
-    static MIDIController* from(LocalFrame* frame) { return static_cast<MIDIController*>(HeapSupplement<LocalFrame>::from(frame, supplementName())); }
+    static MIDIController* from(LocalFrame* frame) { return static_cast<MIDIController*>(Supplement<LocalFrame>::from(frame, supplementName())); }
 
-    DEFINE_INLINE_VIRTUAL_TRACE() { HeapSupplement<LocalFrame>::trace(visitor); }
+    DEFINE_INLINE_VIRTUAL_TRACE() { Supplement<LocalFrame>::trace(visitor); }
 
 protected:
     explicit MIDIController(PassOwnPtr<MIDIClient>);
diff --git a/third_party/WebKit/Source/modules/webmidi/NavigatorWebMIDI.cpp b/third_party/WebKit/Source/modules/webmidi/NavigatorWebMIDI.cpp
index 0b1935ed..901973b 100644
--- a/third_party/WebKit/Source/modules/webmidi/NavigatorWebMIDI.cpp
+++ b/third_party/WebKit/Source/modules/webmidi/NavigatorWebMIDI.cpp
@@ -53,7 +53,7 @@
 
 DEFINE_TRACE(NavigatorWebMIDI)
 {
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
     DOMWindowProperty::trace(visitor);
 }
 
@@ -64,7 +64,7 @@
 
 NavigatorWebMIDI& NavigatorWebMIDI::from(Navigator& navigator)
 {
-    NavigatorWebMIDI* supplement = static_cast<NavigatorWebMIDI*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorWebMIDI* supplement = static_cast<NavigatorWebMIDI*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorWebMIDI(navigator.frame());
         provideTo(navigator, supplementName(), supplement);
diff --git a/third_party/WebKit/Source/modules/webmidi/NavigatorWebMIDI.h b/third_party/WebKit/Source/modules/webmidi/NavigatorWebMIDI.h
index 05a8b89..152c65a1 100644
--- a/third_party/WebKit/Source/modules/webmidi/NavigatorWebMIDI.h
+++ b/third_party/WebKit/Source/modules/webmidi/NavigatorWebMIDI.h
@@ -41,7 +41,7 @@
 
 class Navigator;
 
-class NavigatorWebMIDI final : public GarbageCollectedFinalized<NavigatorWebMIDI>, public HeapSupplement<Navigator>, public DOMWindowProperty {
+class NavigatorWebMIDI final : public GarbageCollectedFinalized<NavigatorWebMIDI>, public Supplement<Navigator>, public DOMWindowProperty {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorWebMIDI);
 public:
     static NavigatorWebMIDI& from(Navigator&);
diff --git a/third_party/WebKit/Source/modules/webusb/NavigatorUSB.cpp b/third_party/WebKit/Source/modules/webusb/NavigatorUSB.cpp
index e47c764..8d1cefc 100644
--- a/third_party/WebKit/Source/modules/webusb/NavigatorUSB.cpp
+++ b/third_party/WebKit/Source/modules/webusb/NavigatorUSB.cpp
@@ -11,7 +11,7 @@
 
 NavigatorUSB& NavigatorUSB::from(Navigator& navigator)
 {
-    NavigatorUSB* supplement = static_cast<NavigatorUSB*>(HeapSupplement<Navigator>::from(navigator, supplementName()));
+    NavigatorUSB* supplement = static_cast<NavigatorUSB*>(Supplement<Navigator>::from(navigator, supplementName()));
     if (!supplement) {
         supplement = new NavigatorUSB(navigator);
         provideTo(navigator, supplementName(), supplement);
@@ -32,7 +32,7 @@
 DEFINE_TRACE(NavigatorUSB)
 {
     visitor->trace(m_usb);
-    HeapSupplement<Navigator>::trace(visitor);
+    Supplement<Navigator>::trace(visitor);
 }
 
 NavigatorUSB::NavigatorUSB(Navigator& navigator)
diff --git a/third_party/WebKit/Source/modules/webusb/NavigatorUSB.h b/third_party/WebKit/Source/modules/webusb/NavigatorUSB.h
index 32ba5a0..59bf79e 100644
--- a/third_party/WebKit/Source/modules/webusb/NavigatorUSB.h
+++ b/third_party/WebKit/Source/modules/webusb/NavigatorUSB.h
@@ -15,7 +15,7 @@
 
 class NavigatorUSB final
     : public GarbageCollected<NavigatorUSB>
-    , public HeapSupplement<Navigator> {
+    , public Supplement<Navigator> {
     USING_GARBAGE_COLLECTED_MIXIN(NavigatorUSB);
 public:
     // Gets, or creates, NavigatorUSB supplement on Navigator.
diff --git a/third_party/WebKit/Source/modules/webusb/USBController.cpp b/third_party/WebKit/Source/modules/webusb/USBController.cpp
index 6329e229..5277fa9 100644
--- a/third_party/WebKit/Source/modules/webusb/USBController.cpp
+++ b/third_party/WebKit/Source/modules/webusb/USBController.cpp
@@ -17,12 +17,12 @@
 {
     ASSERT(RuntimeEnabledFeatures::webUSBEnabled());
     USBController* controller = new USBController(frame, client);
-    HeapSupplement<LocalFrame>::provideTo(frame, supplementName(), adoptPtrWillBeNoop(controller));
+    Supplement<LocalFrame>::provideTo(frame, supplementName(), controller);
 }
 
 USBController& USBController::from(LocalFrame& frame)
 {
-    USBController* controller = static_cast<USBController*>(HeapSupplement<LocalFrame>::from(frame, supplementName()));
+    USBController* controller = static_cast<USBController*>(Supplement<LocalFrame>::from(frame, supplementName()));
     ASSERT(controller);
     return *controller;
 }
@@ -45,7 +45,7 @@
 
 DEFINE_TRACE(USBController)
 {
-    HeapSupplement<LocalFrame>::trace(visitor);
+    Supplement<LocalFrame>::trace(visitor);
     LocalFrameLifecycleObserver::trace(visitor);
 }
 
diff --git a/third_party/WebKit/Source/modules/webusb/USBController.h b/third_party/WebKit/Source/modules/webusb/USBController.h
index 2a5a1d43..ee59e3d 100644
--- a/third_party/WebKit/Source/modules/webusb/USBController.h
+++ b/third_party/WebKit/Source/modules/webusb/USBController.h
@@ -16,7 +16,7 @@
 
 class MODULES_EXPORT USBController final
     : public GarbageCollectedFinalized<USBController>
-    , public HeapSupplement<LocalFrame>
+    , public Supplement<LocalFrame>
     , public LocalFrameLifecycleObserver {
     WTF_MAKE_NONCOPYABLE(USBController);
     USING_GARBAGE_COLLECTED_MIXIN(USBController);
diff --git a/third_party/WebKit/Source/platform/MemoryPurgeController.h b/third_party/WebKit/Source/platform/MemoryPurgeController.h
index f1308a5f..c9e363c 100644
--- a/third_party/WebKit/Source/platform/MemoryPurgeController.h
+++ b/third_party/WebKit/Source/platform/MemoryPurgeController.h
@@ -43,7 +43,7 @@
 
     static RawPtr<MemoryPurgeController> create()
     {
-        return adoptPtrWillBeNoop(new MemoryPurgeController);
+        return new MemoryPurgeController;
     }
     ~MemoryPurgeController();
 
diff --git a/third_party/WebKit/Source/platform/Supplementable.h b/third_party/WebKit/Source/platform/Supplementable.h
index 88c14ed..b2bc6ef 100644
--- a/third_party/WebKit/Source/platform/Supplementable.h
+++ b/third_party/WebKit/Source/platform/Supplementable.h
@@ -163,9 +163,6 @@
 #endif
 };
 
-// TODO(sof): replace all HeapSupplement<T> uses with Supplement<T>.
-#define HeapSupplement Supplement
-
 template<typename T>
 struct ThreadingTrait<Supplement<T>> {
     static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
diff --git a/third_party/WebKit/Source/platform/graphics/BitmapImageTest.cpp b/third_party/WebKit/Source/platform/graphics/BitmapImageTest.cpp
index 52094f2..44c76f9 100644
--- a/third_party/WebKit/Source/platform/graphics/BitmapImageTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/BitmapImageTest.cpp
@@ -136,7 +136,7 @@
     void SetUp() override
     {
         DeferredImageDecoder::setEnabled(m_enableDeferredDecoding);
-        m_imageObserver = adoptPtrWillBeNoop(new FakeImageObserver);
+        m_imageObserver = new FakeImageObserver;
         m_image = BitmapImage::create(m_imageObserver.get());
     }
 
diff --git a/third_party/WebKit/Source/platform/graphics/GraphicsLayerTest.cpp b/third_party/WebKit/Source/platform/graphics/GraphicsLayerTest.cpp
index 019a7d5..827a987 100644
--- a/third_party/WebKit/Source/platform/graphics/GraphicsLayerTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/GraphicsLayerTest.cpp
@@ -163,7 +163,7 @@
 public:
     static RawPtr<FakeScrollableArea> create()
     {
-        return adoptPtrWillBeNoop(new FakeScrollableArea);
+        return new FakeScrollableArea;
     }
 
     LayoutRect visualRectForScrollbarParts() const override { return LayoutRect(); }
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.cpp b/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.cpp
index a7c41db1..666cece 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.cpp
@@ -10,9 +10,9 @@
 
 namespace blink {
 
-PassRefPtrWillBeRawPtr<FEBoxReflect> FEBoxReflect::create(Filter* filter, ReflectionDirection direction, float offset)
+RawPtr<FEBoxReflect> FEBoxReflect::create(Filter* filter, ReflectionDirection direction, float offset)
 {
-    return adoptRefWillBeNoop(new FEBoxReflect(filter, direction, offset));
+    return new FEBoxReflect(filter, direction, offset);
 }
 
 FEBoxReflect::FEBoxReflect(Filter* filter, ReflectionDirection direction, float offset)
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.h b/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.h
index 00ace338..5522657 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.h
@@ -14,7 +14,7 @@
 // Used to implement the -webkit-box-reflect property as a filter.
 class PLATFORM_EXPORT FEBoxReflect final : public FilterEffect {
 public:
-    static PassRefPtrWillBeRawPtr<FEBoxReflect> create(Filter*, ReflectionDirection, float offset);
+    static RawPtr<FEBoxReflect> create(Filter*, ReflectionDirection, float offset);
 
     // FilterEffect implementation
     FloatRect mapRect(const FloatRect&, bool forward = true) final;
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FilterOperation.cpp b/third_party/WebKit/Source/platform/graphics/filters/FilterOperation.cpp
index dff2edfb..b73900a 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FilterOperation.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FilterOperation.cpp
@@ -146,7 +146,7 @@
         blink::blend(fromOp->getColor(), m_color, progress));
 }
 
-PassRefPtrWillBeRawPtr<FilterOperation> BoxReflectFilterOperation::blend(const FilterOperation* from, double progress) const
+RawPtr<FilterOperation> BoxReflectFilterOperation::blend(const FilterOperation* from, double progress) const
 {
     ASSERT_NOT_REACHED();
     return nullptr;
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FilterOperation.h b/third_party/WebKit/Source/platform/graphics/filters/FilterOperation.h
index 8dd8707..1b7fc20 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FilterOperation.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FilterOperation.h
@@ -319,9 +319,9 @@
 
 class PLATFORM_EXPORT BoxReflectFilterOperation : public FilterOperation {
 public:
-    static PassRefPtrWillBeRawPtr<BoxReflectFilterOperation> create(ReflectionDirection direction, float offset)
+    static RawPtr<BoxReflectFilterOperation> create(ReflectionDirection direction, float offset)
     {
-        return adoptRefWillBeNoop(new BoxReflectFilterOperation(direction, offset));
+        return new BoxReflectFilterOperation(direction, offset);
     }
 
     ReflectionDirection direction() const { return m_direction; }
@@ -331,7 +331,7 @@
     bool movesPixels() const override { return true; }
 
 private:
-    PassRefPtrWillBeRawPtr<FilterOperation> blend(const FilterOperation* from, double progress) const override;
+    RawPtr<FilterOperation> blend(const FilterOperation* from, double progress) const override;
     bool operator==(const FilterOperation&) const override;
 
     BoxReflectFilterOperation(ReflectionDirection direction, float offset)
diff --git a/third_party/WebKit/Source/platform/mhtml/MHTMLArchive.cpp b/third_party/WebKit/Source/platform/mhtml/MHTMLArchive.cpp
index da1f0b6..c638293 100644
--- a/third_party/WebKit/Source/platform/mhtml/MHTMLArchive.cpp
+++ b/third_party/WebKit/Source/platform/mhtml/MHTMLArchive.cpp
@@ -82,7 +82,7 @@
     if (resources.isEmpty())
         return nullptr; // Invalid MHTML file.
 
-    RawPtr<MHTMLArchive> archive = adoptRefWillBeNoop(new MHTMLArchive);
+    RawPtr<MHTMLArchive> archive = new MHTMLArchive;
     // The first document suitable resource is the main resource of the top frame.
     for (size_t i = 0; i < resources.size(); ++i) {
         const AtomicString& mimeType = resources[i]->mimeType();
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp
index 0298780..e0a9c98 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp
@@ -449,7 +449,7 @@
 TEST(ScrollAnimatorTest, CancellingCompositorAnimation)
 {
     RawPtr<MockScrollableArea> scrollableArea = MockScrollableArea::create(true);
-    RawPtr<TestScrollAnimator> scrollAnimator = adoptPtrWillBeNoop(new TestScrollAnimator(scrollableArea.get(), getMockedTime));
+    RawPtr<TestScrollAnimator> scrollAnimator = new TestScrollAnimator(scrollableArea.get(), getMockedTime);
 
     EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1))
         .WillRepeatedly(Return(IntPoint()));
diff --git a/third_party/WebKit/Source/web/ContextFeaturesClientImpl.cpp b/third_party/WebKit/Source/web/ContextFeaturesClientImpl.cpp
index e55239a..a66d77b 100644
--- a/third_party/WebKit/Source/web/ContextFeaturesClientImpl.cpp
+++ b/third_party/WebKit/Source/web/ContextFeaturesClientImpl.cpp
@@ -38,7 +38,7 @@
 
 namespace blink {
 
-class ContextFeaturesCache final : public GarbageCollectedFinalized<ContextFeaturesCache>, public HeapSupplement<Document> {
+class ContextFeaturesCache final : public GarbageCollectedFinalized<ContextFeaturesCache>, public Supplement<Document> {
     USING_GARBAGE_COLLECTED_MIXIN(ContextFeaturesCache);
 public:
     class Entry {
@@ -90,7 +90,7 @@
 
     DEFINE_INLINE_VIRTUAL_TRACE()
     {
-        HeapSupplement<Document>::trace(visitor);
+        Supplement<Document>::trace(visitor);
     }
 
 private:
@@ -105,10 +105,10 @@
 
 ContextFeaturesCache& ContextFeaturesCache::from(Document& document)
 {
-    ContextFeaturesCache* cache = static_cast<ContextFeaturesCache*>(HeapSupplement<Document>::from(document, supplementName()));
+    ContextFeaturesCache* cache = static_cast<ContextFeaturesCache*>(Supplement<Document>::from(document, supplementName()));
     if (!cache) {
         cache = new ContextFeaturesCache();
-        HeapSupplement<Document>::provideTo(document, supplementName(), adoptPtrWillBeNoop(cache));
+        Supplement<Document>::provideTo(document, supplementName(), cache);
     }
 
     return *cache;
diff --git a/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp b/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
index 1f1287a..ed9282b2 100644
--- a/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
+++ b/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
@@ -275,7 +275,7 @@
         WebDevToolsAgentImpl* agent = new WebDevToolsAgentImpl(frame, client, nullptr);
         if (frame->frameWidget())
             agent->layerTreeViewChanged(toWebFrameWidgetImpl(frame->frameWidget())->layerTreeView());
-        return adoptPtrWillBeNoop(agent);
+        return agent;
     }
 
     WebDevToolsAgentImpl* agent = new WebDevToolsAgentImpl(frame, client, InspectorOverlay::create(view));
@@ -291,7 +291,7 @@
     agent->m_agents.append(InspectorDOMStorageAgent::create(view->page()));
     agent->m_agents.append(InspectorCacheStorageAgent::create());
     agent->layerTreeViewChanged(view->layerTreeView());
-    return adoptPtrWillBeNoop(agent);
+    return agent;
 }
 
 WebDevToolsAgentImpl::WebDevToolsAgentImpl(
diff --git a/third_party/WebKit/Source/web/WorkerContentSettingsClient.cpp b/third_party/WebKit/Source/web/WorkerContentSettingsClient.cpp
index 6c4bd1a..bd49bff 100644
--- a/third_party/WebKit/Source/web/WorkerContentSettingsClient.cpp
+++ b/third_party/WebKit/Source/web/WorkerContentSettingsClient.cpp
@@ -70,7 +70,7 @@
 {
     WorkerClients* clients = toWorkerGlobalScope(context).clients();
     DCHECK(clients);
-    return static_cast<WorkerContentSettingsClient*>(HeapSupplement<WorkerClients>::from(*clients, supplementName()));
+    return static_cast<WorkerContentSettingsClient*>(Supplement<WorkerClients>::from(*clients, supplementName()));
 }
 
 WorkerContentSettingsClient::WorkerContentSettingsClient(PassOwnPtr<WebWorkerContentSettingsClientProxy> proxy)
diff --git a/third_party/WebKit/Source/web/WorkerContentSettingsClient.h b/third_party/WebKit/Source/web/WorkerContentSettingsClient.h
index c63fcf5..c37c74e 100644
--- a/third_party/WebKit/Source/web/WorkerContentSettingsClient.h
+++ b/third_party/WebKit/Source/web/WorkerContentSettingsClient.h
@@ -40,7 +40,7 @@
 class WebString;
 class WebWorkerContentSettingsClientProxy;
 
-class WorkerContentSettingsClient final : public GarbageCollectedFinalized<WorkerContentSettingsClient>, public HeapSupplement<WorkerClients> {
+class WorkerContentSettingsClient final : public GarbageCollectedFinalized<WorkerContentSettingsClient>, public Supplement<WorkerClients> {
     USING_GARBAGE_COLLECTED_MIXIN(WorkerContentSettingsClient);
 public:
     static RawPtr<WorkerContentSettingsClient> create(PassOwnPtr<WebWorkerContentSettingsClientProxy>);
@@ -52,7 +52,7 @@
     static const char* supplementName();
     static WorkerContentSettingsClient* from(ExecutionContext&);
 
-    DEFINE_INLINE_VIRTUAL_TRACE() { HeapSupplement<WorkerClients>::trace(visitor); }
+    DEFINE_INLINE_VIRTUAL_TRACE() { Supplement<WorkerClients>::trace(visitor); }
 
 private:
     explicit WorkerContentSettingsClient(PassOwnPtr<WebWorkerContentSettingsClientProxy>);
diff --git a/third_party/WebKit/Source/wtf/BitArray.h b/third_party/WebKit/Source/wtf/BitArray.h
deleted file mode 100644
index 2943273..0000000
--- a/third_party/WebKit/Source/wtf/BitArray.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef BitArray_h
-#define BitArray_h
-
-#include "wtf/Allocator.h"
-#include "wtf/Assertions.h"
-#include <string.h>
-
-namespace WTF {
-
-template<unsigned arraySize>
-class BitArray {
-    USING_FAST_MALLOC(BitArray);
-public:
-    BitArray(bool value = false)
-    {
-        memset(m_data, value ? 0xFF : 0, sizeof(m_data));
-    }
-
-    void set(unsigned index)
-    {
-        CHECK_LT(index, arraySize);
-        m_data[index / 8] |= 1 << (index & 7);
-    }
-
-    void clear(unsigned index)
-    {
-        CHECK_LT(index, arraySize);
-        m_data[index / 8] &= ~(1 << (index & 7));
-    }
-
-    bool get(unsigned index) const
-    {
-        CHECK_LT(index, arraySize);
-        return !!(m_data[index / 8] & (1 << (index & 7)));
-    }
-
-private:
-    unsigned char m_data[arraySize / 8 + 1];
-};
-
-} // namespace WTF
-
-using WTF::BitArray;
-
-#endif // BitArray_h
diff --git a/third_party/WebKit/Source/wtf/wtf.gypi b/third_party/WebKit/Source/wtf/wtf.gypi
index ae453df..5d22539 100644
--- a/third_party/WebKit/Source/wtf/wtf.gypi
+++ b/third_party/WebKit/Source/wtf/wtf.gypi
@@ -22,7 +22,6 @@
             'Assertions.cpp',
             'Assertions.h',
             'Atomics.h',
-            'BitArray.h',
             'BitVector.cpp',
             'BitVector.h',
             'BitwiseOperations.h',
diff --git a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/.bower.json b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/.bower.json
index 6a6c623..9604c48 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/.bower.json
+++ b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/.bower.json
@@ -1,6 +1,6 @@
 {
   "name": "iron-a11y-keys-behavior",
-  "version": "1.1.1",
+  "version": "1.1.2",
   "description": "A behavior that enables keybindings for greater a11y.",
   "keywords": [
     "web-components",
@@ -23,19 +23,19 @@
   },
   "devDependencies": {
     "paper-styles": "PolymerElements/paper-styles#^1.0.2",
-    "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
-    "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
-    "test-fixture": "polymerelements/test-fixture#^1.0.0",
-    "web-component-tester": "polymer/web-component-tester#^3.4.0",
+    "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
+    "iron-test-helpers": "PolymerElements/iron-test-helpers#^1.0.0",
+    "test-fixture": "PolymerElements/test-fixture#^1.0.0",
+    "web-component-tester": "^4.0.0",
     "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
   },
   "ignore": [],
   "homepage": "https://github.com/PolymerElements/iron-a11y-keys-behavior",
-  "_release": "1.1.1",
+  "_release": "1.1.2",
   "_resolution": {
     "type": "version",
-    "tag": "v1.1.1",
-    "commit": "12af7cb19b2c6b3887e37a5ea1501ffe676d1e8a"
+    "tag": "v1.1.2",
+    "commit": "0c2330c229a6fd3d200e2b84147ec6f94f17c22d"
   },
   "_source": "git://github.com/PolymerElements/iron-a11y-keys-behavior.git",
   "_target": "^1.0.0",
diff --git a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/CONTRIBUTING.md b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/CONTRIBUTING.md
index 7b101415..f147978a 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/CONTRIBUTING.md
+++ b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/CONTRIBUTING.md
@@ -5,6 +5,11 @@
 
 If you edit that file, it will get updated everywhere else.
 If you edit this file, your changes will get overridden :)
+
+You can however override the jsbin link with one that's customized to this
+specific element:
+
+jsbin=https://jsbin.com/cagaye/edit?html,output
 -->
 # Polymer Elements
 ## Guide for Contributors
@@ -41,7 +46,7 @@
  3. Click the `paper-foo` element.
  ```
 
- 2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [http://jsbin.com/cagaye](http://jsbin.com/cagaye/edit?html,output).
+ 2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [https://jsbin.com/cagaye/edit?html,output](https://jsbin.com/cagaye/edit?html,output).
 
  3. **A list of browsers where the problem occurs.** This can be skipped if the problem is the same across all browsers.
 
@@ -51,14 +56,14 @@
 
 When submitting pull requests, please provide:
 
- 1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues using the following syntax:
+ 1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues in the pull request description using the following syntax:
 
  ```markdown
  (For a single issue)
  Fixes #20
 
  (For multiple issues)
- Fixes #32, #40
+ Fixes #32, fixes #40
  ```
 
  2. **A succinct description of the design** used to fix any related issues. For example:
diff --git a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/README.md b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/README.md
index f527af9..30ab211 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/README.md
+++ b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/README.md
@@ -7,16 +7,18 @@
 Edit those files, and our readme bot will duplicate them over here!
 Edit this file, and the bot will squash your changes :)
 
+The bot does some handling of markdown. Please file a bug if it does the wrong
+thing! https://github.com/PolymerLabs/tedium/issues
+
 -->
 
-[![Build Status](https://travis-ci.org/PolymerElements/iron-a11y-keys-behavior.svg?branch=master)](https://travis-ci.org/PolymerElements/iron-a11y-keys-behavior)
+[![Build status](https://travis-ci.org/PolymerElements/iron-a11y-keys-behavior.svg?branch=master)](https://travis-ci.org/PolymerElements/iron-a11y-keys-behavior)
 
-_[Demo and API Docs](https://elements.polymer-project.org/elements/iron-a11y-keys-behavior)_
+_[Demo and API docs](https://elements.polymer-project.org/elements/iron-a11y-keys-behavior)_
 
 
 ##Polymer.IronA11yKeysBehavior
 
-
 `Polymer.IronA11yKeysBehavior` provides a normalized interface for processing
 keyboard commands that pertain to [WAI-ARIA best practices](http://www.w3.org/TR/wai-aria-practices/#kbd_general_binding).
 The element takes care of browser differences with respect to Keyboard events
diff --git a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/bower.json b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/bower.json
index 11b6c5c6..866d5ee9 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/bower.json
+++ b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/bower.json
@@ -1,6 +1,6 @@
 {
   "name": "iron-a11y-keys-behavior",
-  "version": "1.1.1",
+  "version": "1.1.2",
   "description": "A behavior that enables keybindings for greater a11y.",
   "keywords": [
     "web-components",
@@ -23,10 +23,10 @@
   },
   "devDependencies": {
     "paper-styles": "PolymerElements/paper-styles#^1.0.2",
-    "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
-    "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
-    "test-fixture": "polymerelements/test-fixture#^1.0.0",
-    "web-component-tester": "polymer/web-component-tester#^3.4.0",
+    "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
+    "iron-test-helpers": "PolymerElements/iron-test-helpers#^1.0.0",
+    "test-fixture": "PolymerElements/test-fixture#^1.0.0",
+    "web-component-tester": "^4.0.0",
     "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
   },
   "ignore": []
diff --git a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/index.html b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/index.html
index e533e79..c53ba6c 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/index.html
+++ b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/index.html
@@ -2,11 +2,11 @@
 <!--
 @license
 Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
-This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE
-The complete set of authors may be found at http://polymer.github.io/AUTHORS
-The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
 Code distributed by Google as part of the polymer project is also
-subject to an additional IP rights grant found at http://polymer.github.io/PATENTS
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
 -->
 <html>
 <head>
diff --git a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/iron-a11y-keys-behavior-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/iron-a11y-keys-behavior-extracted.js
index 017333b..b66971e 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/iron-a11y-keys-behavior-extracted.js
+++ b/third_party/polymer/v1_0/components-chromium/iron-a11y-keys-behavior/iron-a11y-keys-behavior-extracted.js
@@ -78,6 +78,13 @@
     var SPACE_KEY = /^space(bar)?/;
 
     /**
+     * Matches ESC key.
+     *
+     * Value from: http://w3c.github.io/uievents-key/#key-Escape
+     */
+    var ESC_KEY = /^escape$/;
+
+    /**
      * Transforms the key.
      * @param {string} key The KeyBoardEvent.key
      * @param {Boolean} [noSpecialChars] Limits the transformation to
@@ -89,6 +96,8 @@
         var lKey = key.toLowerCase();
         if (lKey === ' ' || SPACE_KEY.test(lKey)) {
           validKey = 'space';
+        } else if (ESC_KEY.test(lKey)) {
+          validKey = 'esc';
         } else if (lKey.length == 1) {
           if (!noSpecialChars || KEY_CHAR.test(lKey)) {
             validKey = lKey;
@@ -132,10 +141,10 @@
           validKey = 'f' + (keyCode - 112);
         } else if (keyCode >= 48 && keyCode <= 57) {
           // top 0-9 keys
-          validKey = String(48 - keyCode);
+          validKey = String(keyCode - 48);
         } else if (keyCode >= 96 && keyCode <= 105) {
           // num pad 0-9
-          validKey = String(96 - keyCode);
+          validKey = String(keyCode - 96);
         } else {
           validKey = KEY_CODE[keyCode];
         }
@@ -300,6 +309,13 @@
         this._resetKeyEventListeners();
       },
 
+      /**
+       * Returns true if a keyboard event matches `eventString`.
+       *
+       * @param {KeyboardEvent} event
+       * @param {string} eventString
+       * @return {boolean}
+       */
       keyboardEventMatchesKeys: function(event, eventString) {
         var keyCombos = parseEventString(eventString);
         for (var i = 0; i < keyCombos.length; ++i) {
diff --git a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/.bower.json b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/.bower.json
index c06eb0e..5a77596 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/.bower.json
+++ b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/.bower.json
@@ -1,6 +1,6 @@
 {
   "name": "iron-test-helpers",
-  "version": "1.1.5",
+  "version": "1.2.3",
   "authors": [
     "The Polymer Authors"
   ],
@@ -24,14 +24,15 @@
   },
   "devDependencies": {
     "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0",
-    "web-component-tester": "^4.0.0"
+    "web-component-tester": "^4.0.0",
+    "paper-button": "^1.0.0"
   },
   "main": "iron-test-helpers.html",
-  "_release": "1.1.5",
+  "_release": "1.2.3",
   "_resolution": {
     "type": "version",
-    "tag": "v1.1.5",
-    "commit": "76d7e5b4d52587c853e8b2cbdf8d970bcf209ff3"
+    "tag": "v1.2.3",
+    "commit": "5a35c20860d7e476bf6dfd85fd1ef20ef05b21a9"
   },
   "_source": "git://github.com/PolymerElements/iron-test-helpers.git",
   "_target": "^1.0.0",
diff --git a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/bower.json b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/bower.json
index 677ca3a..20436150f 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/bower.json
+++ b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/bower.json
@@ -1,6 +1,6 @@
 {
   "name": "iron-test-helpers",
-  "version": "1.1.5",
+  "version": "1.2.3",
   "authors": [
     "The Polymer Authors"
   ],
@@ -24,7 +24,8 @@
   },
   "devDependencies": {
     "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0",
-    "web-component-tester": "^4.0.0"
+    "web-component-tester": "^4.0.0",
+    "paper-button": "^1.0.0"
   },
   "main": "iron-test-helpers.html"
 }
diff --git a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/iron-test-helpers-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/iron-test-helpers-extracted.js
deleted file mode 100644
index eae534b..0000000
--- a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/iron-test-helpers-extracted.js
+++ /dev/null
@@ -1,10 +0,0 @@
-(function(global) {
-    'use strict';
-
-    var TestHelpers = global.TestHelpers = global.TestHelpers || {};
-
-    TestHelpers.flushAsynchronousOperations = flushAsynchronousOperations;
-    TestHelpers.forceXIfStamp = forceXIfStamp;
-    TestHelpers.fireEvent = fireEvent;
-    TestHelpers.skipUnless = skipUnless;
-  })(this);
\ No newline at end of file
diff --git a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/iron-test-helpers.html b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/iron-test-helpers.html
index 3ead22d1..b5678b9 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/iron-test-helpers.html
+++ b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/iron-test-helpers.html
@@ -6,6 +6,6 @@
 The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
 Code distributed by Google as part of the polymer project is also
 subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
---><html><head><link rel="import" href="mock-interactions.html">
+-->
+<link rel="import" href="mock-interactions.html">
 <link rel="import" href="test-helpers.html">
-</head><body><script src="iron-test-helpers-extracted.js"></script></body></html>
\ No newline at end of file
diff --git a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/mock-interactions.js b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/mock-interactions.js
index d74f518..bcd77e97 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/mock-interactions.js
+++ b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/mock-interactions.js
@@ -19,10 +19,10 @@
     return has;
   })();
 
-  /*
+  /**
    * Returns the (x,y) coordinates representing the middle of a node.
    *
-   * @param {HTMLElement} node An element.
+   * @param {!HTMLElement} node An element.
    */
   function middleOfNode(node) {
     var bcr = node.getBoundingClientRect();
@@ -32,10 +32,10 @@
     };
   }
 
-  /*
+  /**
    * Returns the (x,y) coordinates representing the top left corner of a node.
    *
-   * @param {HTMLElement} node An element.
+   * @param {!HTMLElement} node An element.
    */
   function topLeftOfNode(node) {
     var bcr = node.getBoundingClientRect();
@@ -45,15 +45,70 @@
     };
   }
 
-  /*
+  /**
+   * Returns a list of Touch objects that correspond to an array of positions
+   * and a target node. The Touch instances will each have a unique Touch
+   * identifier.
+   *
+   * @param {!Array<{ x: number, y: number }>} xyList A list of (x,y) coordinate objects.
+   * @param {!HTMLElement} node A target element node.
+   */
+  function makeTouches(xyList, node) {
+    var id = 0;
+
+    return xyList.map(function(xy) {
+      var touchInit = {
+        identifier: id++,
+        target: node,
+        clientX: xy.x,
+        clientY: xy.y
+      };
+
+      return window.Touch ? new window.Touch(touchInit) : touchInit;
+    });
+  }
+
+  /**
+   * Generates and dispatches a TouchEvent of a given type, at a specified
+   * position of a target node.
+   *
+   * @param {string} type The type of TouchEvent to generate.
+   * @param {{ x: number, y: number }} xy An (x,y) coordinate for the generated
+   * TouchEvent.
+   * @param {!HTMLElement} node The target element node for the generated
+   * TouchEvent to be dispatched on.
+   */
+  function makeSoloTouchEvent(type, xy, node) {
+    xy = xy || middleOfNode(node);
+    var touches = makeTouches([xy], node);
+    var touchEventInit = {
+      touches: touches,
+      targetTouches: touches,
+      changedTouches: touches
+    };
+    var event;
+
+    if (window.TouchEvent) {
+      event = new TouchEvent(type, touchEventInit);
+    } else {
+      event = new CustomEvent(type, { bubbles: true, cancelable: true });
+      for (var property in touchEventInit) {
+        event[property] = touchEventInit[property];
+      }
+    }
+
+    node.dispatchEvent(event);
+  }
+
+  /**
    * Fires a mouse event on a specific node, at a given set of coordinates.
    * This event bubbles and is cancellable.
    *
-   * @param {String} type The type of mouse event (such as 'tap' or 'down').
-   * @param {Object} xy The (x,y) coordinates the mouse event should be fired from.
-   * @param {HTMLElement} node The node to fire the event on.
+   * @param {string} type The type of mouse event (such as 'tap' or 'down').
+   * @param {{ x: number, y: number }} xy The (x,y) coordinates the mouse event should be fired from.
+   * @param {!HTMLElement} node The node to fire the event on.
    */
-  function makeEvent(type, xy, node) {
+  function makeMouseEvent(type, xy, node) {
     var props = {
       bubbles: true,
       cancelable: true,
@@ -63,13 +118,12 @@
       buttons: 1 // http://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons
     };
     var e;
-    var mousetype = type === 'tap' ? 'click' : 'mouse' + type;
     if (HAS_NEW_MOUSE) {
-      e = new MouseEvent(mousetype, props);
+      e = new MouseEvent(type, props);
     } else {
       e = document.createEvent('MouseEvent');
       e.initMouseEvent(
-        mousetype, props.bubbles, props.cancelable,
+        type, props.bubbles, props.cancelable,
         null, /* view */
         null, /* detail */
         0,    /* screenX */
@@ -85,14 +139,14 @@
     node.dispatchEvent(e);
   }
 
-  /*
+  /**
    * Simulates a mouse move action by firing a `move` mouse event on a
    * specific node, between a set of coordinates.
    *
-   * @param {HTMLElement} node The node to fire the event on.
+   * @param {!HTMLElement} node The node to fire the event on.
    * @param {Object} fromXY The (x,y) coordinates the dragging should start from.
    * @param {Object} toXY The (x,y) coordinates the dragging should end at.
-   * @param {Object} steps Optional. The numbers of steps in the move motion.
+   * @param {?number} steps Optional. The numbers of steps in the move motion.
    *    If not specified, the default is 5.
    */
   function move(node, fromXY, toXY, steps) {
@@ -104,23 +158,23 @@
       y: fromXY.y
     };
     for (var i = steps; i > 0; i--) {
-      makeEvent('move', xy, node);
+      makeMouseEvent('mousemove', xy, node);
       xy.x += dx;
       xy.y += dy;
     }
-    makeEvent('move', {
+    makeMouseEvent('mousemove', {
       x: toXY.x,
       y: toXY.y
     }, node);
   }
 
-  /*
+  /**
    * Simulates a mouse dragging action originating in the middle of a specific node.
    *
-   * @param {HTMLElement} target The node to fire the event on.
-   * @param {Number} dx The horizontal displacement.
-   * @param {Object} dy The vertical displacement
-   * @param {Object} steps Optional. The numbers of steps in the dragging motion.
+   * @param {!HTMLElement} target The node to fire the event on.
+   * @param {?number} dx The horizontal displacement.
+   * @param {?number} dy The vertical displacement
+   * @param {?number} steps Optional. The numbers of steps in the dragging motion.
    *    If not specified, the default is 5.
    */
   function track(target, dx, dy, steps) {
@@ -137,71 +191,121 @@
     up(target, xy2);
   }
 
-  /*
+  /**
    * Fires a `down` mouse event on a specific node, at a given set of coordinates.
    * This event bubbles and is cancellable. If the (x,y) coordinates are
    * not specified, the middle of the node will be used instead.
    *
-   * @param {HTMLElement} node The node to fire the event on.
-   * @param {Object} xy Optional. The (x,y) coordinates the mouse event should be fired from.
+   * @param {!HTMLElement} node The node to fire the event on.
+   * @param {{ x: number, y: number }=} xy Optional. The (x,y) coordinates the mouse event should be fired from.
    */
   function down(node, xy) {
     xy = xy || middleOfNode(node);
-    makeEvent('down', xy, node);
+    makeMouseEvent('mousedown', xy, node);
   }
 
-  /*
+  /**
    * Fires an `up` mouse event on a specific node, at a given set of coordinates.
    * This event bubbles and is cancellable. If the (x,y) coordinates are
    * not specified, the middle of the node will be used instead.
    *
-   * @param {HTMLElement} node The node to fire the event on.
-   * @param {Object} xy Optional. The (x,y) coordinates the mouse event should be fired from.
+   * @param {!HTMLElement} node The node to fire the event on.
+   * @param {{ x: number, y: number }=} xy Optional. The (x,y) coordinates the mouse event should be fired from.
    */
   function up(node, xy) {
     xy = xy || middleOfNode(node);
-    makeEvent('up', xy, node);
+    makeMouseEvent('mouseup', xy, node);
   }
 
-  /*
+  /**
+   * Generate a click event on a given node, optionally at a given coordinate.
+   * @param {!HTMLElement} node The node to fire the click event on.
+   * @param {{ x: number, y: number }=} xy Optional. The (x,y) coordinates the mouse event should
+   * be fired from.
+   */
+  function click(node, xy) {
+    xy = xy || middleOfNode(node);
+    makeMouseEvent('click', xy, node);
+  }
+
+  /**
+   * Generate a touchstart event on a given node, optionally at a given coordinate.
+   * @param {!HTMLElement} node The node to fire the click event on.
+   * @param {{ x: number, y: number }=} xy Optional. The (x,y) coordinates the touch event should
+   * be fired from.
+   */
+  function touchstart(node, xy) {
+    xy = xy || middleOfNode(node);
+    makeSoloTouchEvent('touchstart', xy, node);
+  }
+
+
+  /**
+   * Generate a touchend event on a given node, optionally at a given coordinate.
+   * @param {!HTMLElement} node The node to fire the click event on.
+   * @param {{ x: number, y: number }=} xy Optional. The (x,y) coordinates the touch event should
+   * be fired from.
+   */
+  function touchend(node, xy) {
+    xy = xy || middleOfNode(node);
+    makeSoloTouchEvent('touchend', xy, node);
+  }
+
+  /**
    * Simulates a complete mouse click by firing a `down` mouse event, followed
    * by an asynchronous `up` and `tap` events on a specific node. Calls the
    *`callback` after the `tap` event is fired.
    *
-   * @param {HTMLElement} target The node to fire the event on.
-   * @param {Object} callback Optional. The function to be called after the action ends.
+   * @param {!HTMLElement} target The node to fire the event on.
+   * @param {?Function} callback Optional. The function to be called after the action ends.
+   * @param {?{
+   *   emulateTouch: boolean
+   * }} options Optional. Configure the emulation fidelity of the mouse events.
    */
-  function downAndUp(target, callback) {
+  function downAndUp(target, callback, options) {
+    if (options && options.emulateTouch) {
+      touchstart(target);
+      touchend(target);
+    }
+
     down(target);
     Polymer.Base.async(function() {
       up(target);
-      tap(target);
-
+      click(target);
       callback && callback();
     });
   }
 
-  /*
+  /**
    * Fires a 'tap' mouse event on a specific node. This respects the pointer-events
    * set on the node, and will not fire on disabled nodes.
    *
-   * @param {HTMLElement} node The node to fire the event on.
-   * @param {Object} xy Optional. The (x,y) coordinates the mouse event should be fired from.
+   * @param {!HTMLElement} node The node to fire the event on.
+   * @param {?{
+   *   emulateTouch: boolean
+   * }} options Optional. Configure the emulation fidelity of the mouse event.
    */
-  function tap(node) {
+  function tap(node, options) {
     // Respect nodes that are disabled in the UI.
     if (window.getComputedStyle(node)['pointer-events'] === 'none')
       return;
+
     var xy = middleOfNode(node);
+
+    if (options && options.emulateTouch) {
+      touchstart(node, xy);
+      touchend(node, xy);
+    }
+
     down(node, xy);
     up(node, xy);
-    makeEvent('tap', xy, node);
+    click(node, xy);
   }
 
-  /*
+  /**
    * Focuses a node by firing a `focus` event. This event does not bubble.
    *
-   * @param {HTMLElement} target The node to fire the event on.
+   * @param {!HTMLElement} target The node to fire the event on.
    */
   function focus(target) {
     Polymer.Base.fire('focus', {}, {
@@ -210,10 +314,10 @@
     });
   }
 
-  /*
+  /**
    * Blurs a node by firing a `blur` event. This event does not bubble.
    *
-   * @param {HTMLElement} target The node to fire the event on.
+   * @param {!HTMLElement} target The node to fire the event on.
    */
   function blur(target) {
     Polymer.Base.fire('blur', {}, {
@@ -222,15 +326,16 @@
     });
   }
 
-  /*
+  /**
    * Returns a keyboard event. This event bubbles and is cancellable.
    *
-   * @param {String} type The type of keyboard event (such as 'keyup' or 'keydown').
-   * @param {Number} keyCode The keyCode for the event.
-   * @param {?String|[String]} modifiers The key modifiers for the event.
-   * Accepted values are shift, ctrl, alt, meta.
+   * @param {string} type The type of keyboard event (such as 'keyup' or 'keydown').
+   * @param {number} keyCode The keyCode for the event.
+   * @param {(string|Array<string>)=} modifiers The key modifiers for the event.
+   *     Accepted values are shift, ctrl, alt, meta.
+   * @param {string=} key The KeyboardEvent.key value for the event.
    */
-  function keyboardEventFor(type, keyCode, modifiers) {
+  function keyboardEventFor(type, keyCode, modifiers, key) {
     var event = new CustomEvent(type, {
       bubbles: true,
       cancelable: true
@@ -248,77 +353,83 @@
     event.ctrlKey = modifiers.indexOf('ctrl') !== -1;
     event.metaKey = modifiers.indexOf('meta') !== -1;
 
+    event.key = key;
+
     return event;
   }
 
-  /*
+  /**
    * Fires a keyboard event on a specific node. This event bubbles and is cancellable.
    *
-   * @param {HTMLElement} target The node to fire the event on.
-   * @param {String} type The type of keyboard event (such as 'keyup' or 'keydown').
-   * @param {Number} keyCode The keyCode for the event.
-   * @param {?String|[String]} modifiers The key modifiers for the event.
-   * Accepted values are shift, ctrl, alt, meta.
+   * @param {!HTMLElement} target The node to fire the event on.
+   * @param {string} type The type of keyboard event (such as 'keyup' or 'keydown').
+   * @param {number} keyCode The keyCode for the event.
+   * @param {(string|Array<string>)=} modifiers The key modifiers for the event.
+   *     Accepted values are shift, ctrl, alt, meta.
+   * @param {string=} key The KeyboardEvent.key value for the event.
    */
-  function keyEventOn(target, type, keyCode, modifiers) {
-    target.dispatchEvent(keyboardEventFor(type, keyCode, modifiers));
+  function keyEventOn(target, type, keyCode, modifiers, key) {
+    target.dispatchEvent(keyboardEventFor(type, keyCode, modifiers, key));
   }
 
-  /*
+  /**
    * Fires a 'keydown' event on a specific node. This event bubbles and is cancellable.
    *
-   * @param {HTMLElement} target The node to fire the event on.
-   * @param {Number} keyCode The keyCode for the event.
-   * @param {?String|[String]} modifiers The key modifiers for the event.
-   * Accepted values are shift, ctrl, alt, meta.
+   * @param {!HTMLElement} target The node to fire the event on.
+   * @param {number} keyCode The keyCode for the event.
+   * @param {(string|Array<string>)=} modifiers The key modifiers for the event.
+   *     Accepted values are shift, ctrl, alt, meta.
+   * @param {string=} key The KeyboardEvent.key value for the event.
    */
-  function keyDownOn(target, keyCode, modifiers) {
-    keyEventOn(target, 'keydown', keyCode, modifiers);
+  function keyDownOn(target, keyCode, modifiers, key) {
+    keyEventOn(target, 'keydown', keyCode, modifiers, key);
   }
 
-  /*
+  /**
    * Fires a 'keyup' event on a specific node. This event bubbles and is cancellable.
    *
-   * @param {HTMLElement} target The node to fire the event on.
-   * @param {Number} keyCode The keyCode for the event.
-   * @param {?String|[String]} modifiers The key modifiers for the event.
-   * Accepted values are shift, ctrl, alt, meta.
+   * @param {!HTMLElement} target The node to fire the event on.
+   * @param {number} keyCode The keyCode for the event.
+   * @param {(string|Array<string>)=} modifiers The key modifiers for the event.
+   *     Accepted values are shift, ctrl, alt, meta.
+   * @param {string=} key The KeyboardEvent.key value for the event.
    */
-  function keyUpOn(target, keyCode, modifiers) {
-    keyEventOn(target, 'keyup', keyCode, modifiers);
+  function keyUpOn(target, keyCode, modifiers, key) {
+    keyEventOn(target, 'keyup', keyCode, modifiers, key);
   }
 
-  /*
+  /**
    * Simulates a complete key press by firing a `keydown` keyboard event, followed
    * by an asynchronous `keyup` event on a specific node.
    *
-   * @param {HTMLElement} target The node to fire the event on.
-   * @param {Number} keyCode The keyCode for the event.
-   * @param {?String|[String]} modifiers The key modifiers for the event.
-   * Accepted values are shift, ctrl, alt, meta.
+   * @param {!HTMLElement} target The node to fire the event on.
+   * @param {number} keyCode The keyCode for the event.
+   * @param {(string|Array<string>)=} modifiers The key modifiers for the event.
+   *     Accepted values are shift, ctrl, alt, meta.
+   * @param {string=} key The KeyboardEvent.key value for the event.
    */
-  function pressAndReleaseKeyOn(target, keyCode, modifiers) {
-    keyDownOn(target, keyCode, modifiers);
+  function pressAndReleaseKeyOn(target, keyCode, modifiers, key) {
+    keyDownOn(target, keyCode, modifiers, key);
     Polymer.Base.async(function() {
-      keyUpOn(target, keyCode, modifiers);
+      keyUpOn(target, keyCode, modifiers, key);
     }, 1);
   }
 
-  /*
+  /**
    * Simulates a complete 'enter' key press by firing a `keydown` keyboard event,
    * followed by an asynchronous `keyup` event on a specific node.
    *
-   * @param {HTMLElement} target The node to fire the event on.
+   * @param {!HTMLElement} target The node to fire the event on.
    */
   function pressEnter(target) {
     pressAndReleaseKeyOn(target, 13);
   }
 
-  /*
+  /**
    * Simulates a complete 'space' key press by firing a `keydown` keyboard event,
    * followed by an asynchronous `keyup` event on a specific node.
    *
-   * @param {HTMLElement} target The node to fire the event on.
+   * @param {!HTMLElement} target The node to fire the event on.
    */
   function pressSpace(target) {
     pressAndReleaseKeyOn(target, 32);
@@ -337,6 +448,7 @@
     pressSpace: pressSpace,
     keyDownOn: keyDownOn,
     keyUpOn: keyUpOn,
+    keyboardEventFor: keyboardEventFor,
     keyEventOn: keyEventOn,
     middleOfNode: middleOfNode,
     topLeftOfNode: topLeftOfNode
diff --git a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/test-helpers.js b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/test-helpers.js
index b48bbb9..7507b18 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-test-helpers/test-helpers.js
+++ b/third_party/polymer/v1_0/components-chromium/iron-test-helpers/test-helpers.js
@@ -10,7 +10,8 @@
 (function(global) {
   'use strict';
 
-  /*
+
+  /**
    * Forces distribution of light children, and lifecycle callbacks on the
    * Custom Elements polyfill. Used when testing elements that rely on their
    * distributed children.
@@ -22,7 +23,7 @@
     window.CustomElements && window.CustomElements.takeRecords();
   };
 
-  /*
+  /**
    * Stamps and renders a `dom-if` template.
    *
    * @param {HTMLElement} node The node containing the template,
@@ -36,10 +37,10 @@
     global.flushAsynchronousOperations();
   };
 
-  /*
+  /**
    * Fires a custom event on a specific node. This event bubbles and is cancellable.
    *
-   * @param {String} type The type of event.
+   * @param {string} type The type of event.
    * @param {Object} props Any custom properties the event contains.
    * @param {HTMLElement} node The node to fire the event on.
    */
@@ -54,7 +55,7 @@
     node.dispatchEvent(event);
   };
 
-  /*
+  /**
    * Skips a test unless a condition is met. Sample use:
    *    function isNotIE() {
    *      return !navigator.userAgent.match(/MSIE/i);
@@ -63,7 +64,7 @@
    *      ...
    *    });
    *
-   * @param {String} condition The name of a Boolean function determining if the test should be run.
+   * @param {Function} condition The name of a Boolean function determining if the test should be run.
    * @param {Function} test The test to be run.
    */
 
@@ -86,4 +87,11 @@
       return result;
     };
   };
+
+  global.TestHelpers = {
+    flushAsynchronousOperations: global.flushAsynchronousOperations,
+    forceXIfStamp: global.forceXIfStamp,
+    fireEvent: global.fireEvent,
+    skipUnless: global.skipUnless
+  };
 })(this);
diff --git a/ui/webui/resources/polymer_resources.grdp b/ui/webui/resources/polymer_resources.grdp
index 1b2bc60..562f6b0 100644
--- a/ui/webui/resources/polymer_resources.grdp
+++ b/ui/webui/resources/polymer_resources.grdp
@@ -245,9 +245,6 @@
   <structure name="IDR_POLYMER_1_0_IRON_SELECTOR_IRON_SELECTOR_HTML"
              file="../../../third_party/polymer/v1_0/components-chromium/iron-selector/iron-selector.html"
              type="chrome_html" />
-  <structure name="IDR_POLYMER_1_0_IRON_TEST_HELPERS_IRON_TEST_HELPERS_EXTRACTED_JS"
-             file="../../../third_party/polymer/v1_0/components-chromium/iron-test-helpers/iron-test-helpers-extracted.js"
-             type="chrome_html" />
   <structure name="IDR_POLYMER_1_0_IRON_TEST_HELPERS_IRON_TEST_HELPERS_HTML"
              file="../../../third_party/polymer/v1_0/components-chromium/iron-test-helpers/iron-test-helpers.html"
              type="chrome_html" />